容器遍历和IO流

学习主题:容器遍历以及IO流
学习目标:
1 掌握容器的遍历
2 掌握IO流的基本概念,结构,以及文件字节流

1.迭代器_遍历List_Set
(1)迭代器的由来是什么?
Iterator是一个接口,因为list和set的数据结构不同,使用迭代器的话就不用考虑数据结构,拿到这个对象就可以遍历这个对象的内部。Iterator接口有三个方法:next();hasNext();remove();

(2)使用迭代器遍历集合的原理是什么?
在容器中获取迭代器。使用循环判断下一个元素是否存在。如果下一个元素存在就获取,没有就结束循环。

2.迭代器_遍历Map
(1)ListIterator接口比Iterator扩展的哪些方法?
ListIterator接口是Iterator接口的扩展,可以用于解决并发修改异常
hasPrevious();判断是否有前一个
previous();获取前一个元素
nextIndex();获取下一个索引
previousIndex();获取前一个索引
set(E e);
add(E e);添加一个元素。
(2)并发修改异常是如何产生的?
在使用迭代器遍历集合时,又使用集合对象进行添加元素。

3.容器体系框架总结
(1)画出集合体系框架图?
在这里插入图片描述
(2)集合和数组的异同点?
1、数组声明了它容纳的元素的类型,而集合不声明。
2、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。
3、数组是一组具有相同类型的数据的集合

4.IO流的基本概念
(1)简述IO流的原理?
1、在java程序中,对于数据的输入/输出操作以“流”方式进行
2、J2SDK提供了各种各样的“流”类,用以获取不同种类的数据,程序中通过标准的方法输入或输出数据
3、Java的流类型一般位于java.io包中
(2)Java中关于IO流的定义 ?
java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在java中把不同的输入/输出源(键盘,文件,网络连接等)抽象表述为“流”(stream)。通过流的形式允许java程序使用相同的方式来访问不同的输入/输出源。stram是从起源(source)到接收的(sink)的有序数据。

5.流的细分和体系_四大抽象类
(1)IO流可以分为哪几类?
根据流的方向:输入流,输出流
根据处理数据单元:字节流,字符流
根据功能:字节流,处理流
(2)流的四大抽象类分别是什么?
InputStream , OutputStream , Reader , Writer

6.文件字节流
(1)FileInputStream的常用方法有哪些?
1、abstract int read()
2、int read(byte b[])
3、int read(byte b[],int off,int len)
4、int available()
5、Close()
(2)FileOutputStream的常用方法有哪些?
1、abstract void write(int b)
2、void write(byte b[])
3、void write(byte b[] , int off , int len )
4、void flush()
5、void close()

7.使用字节流实现文件复制
(1)简述使用字节流实现文件复制的原理?
在这里插入图片描述
(2)简述使用字节流实现文件复制的步骤?
public static void main(String[] args) {
//数据源
FileInputStream fis=null;
//目的地
FileOutputStream fos=null;
try {
fis = new FileInputStream(“E:\test.txt”);
fos = new FileOutputStream(“D:\test2.txt”);

		//存储读取到的字节
		byte[] buf=new byte[1024];
		int len=0;
		while((len=fis.read(buf))!=-1){
			fos.write(buf,0,len);
		}
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}finally{
		//关闭
		if(fis!=null){
			try {
				fis.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		if(fos!=null){
			try {
				fos.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
	}
	}

学习主题: IO流
学习目标:

8.文件字符流
(1)Reader常用的方法有哪些?
1、int read()
2、Int read(char[]cbuf,int off,int len)
3、Int read(char[]cbuf)
4、Int available()
5、Close()
(2)Writer常用的方法有哪些?
1、void write(int c)
2、void write(char[]cbuf)
3、abstract void write(char[]cbuf,int off,int len)
4、void write(String str)
5、abstract void flush()

9.缓冲字节流_缓冲字符流
(1)缓冲字节流的特点是什么?
提高读写文件效率
(2)简述使用缓冲字节流进行文件复制时提高效率的原理是什么?
提高效率的原理:读文件和写文件都使用了缓冲区,减少了读写次数,从而提高了效率;当创建者两个缓冲流的对象时,会创建内部缓冲数组,缺省使用32字节大小的缓冲区;当读取数据时,数据按块读入缓冲区,其后的读操作则直接访问缓冲区;当写入数据时,首先写入缓冲区,当缓冲区满时,其中的数据写入所连接的输入流。使用方法flush()可以强制将缓冲区的内容全部写入输入流;关闭流的顺序和打开顺序相反,只要关闭高层流即可

10.转换流
(1)InputStreamReader的作用是什么?
把InputStream转换成Reader

(2)OutputStreamWriter的作用是什么?
把OutputStream转化成Writer

11.打印流
(1)简述PrintStream的特点?
提供了一系列的print()和println(),可以实现将基本数据类型转换成字符串格式化输出,对于对象类型的话就先调用toString()方法,然后输出该方法返回的字符串

(2)简述PrintWriter与PrintStream的区别?
PrintStream的输出功能非常强大,通常需要输出文本内容,都可以将输出流包装成PrintStream后进行输出; PrintWriter:使用字符流的时候需要手动刷新,关闭
System.out和System.err都是PrintStream的实例,代表显示器;PrintStream的方法都不抛出IOException

12.数据流
(1)数据流的作用是什么?
提供了可以存取所有java类型的数据的方法

(2)你学过的流中哪些是处理流?
字节流,二进制文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用kubernetes-client java获取pod容器内存与CPU使用率,可以按照以下步骤进行操作。 首先,你需要在Java项目中添加kubernetes-client的依赖,例如在pom.xml文件中添加以下代码: ```xml <dependencies> <dependency> <groupId>io.kubernetes</groupId> <artifactId>client-java</artifactId> <version>9.0.0</version> </dependency> </dependencies> ``` 接下来,你可以使用以下代码获取pod的相关信息: ```java import io.kubernetes.client.apis.CoreV1Api; import io.kubernetes.client.custom.Quantity; import io.kubernetes.client.models.V1Container; import io.kubernetes.client.models.V1ContainerStatus; import io.kubernetes.client.models.V1NamespaceList; import io.kubernetes.client.models.V1Pod; import io.kubernetes.client.models.V1PodList; import io.kubernetes.client.models.V1PodMetrics; import io.kubernetes.client.models.V1PodMetricsList; import io.kubernetes.client.util.Config; import java.util.Map; public class KubernetesClientExample { public static void main(String[] args) throws Exception { // 创建Kubernetes客户端 io.kubernetes.client.Configuration config = Config.defaultClientConfig(); io.kubernetes.client.apis.CoreV1Api api = new CoreV1Api(); // 获取pod列表 V1PodList podList = api.listPodForAllNamespaces(null, null, null, null, null, null, null, null, null); for (V1Pod pod : podList.getItems()) { // 获取pod所属的命名空间和名称 String namespace = pod.getMetadata().getNamespace(); String name = pod.getMetadata().getName(); // 获取pod的容器列表和相关状态信息 for (V1Container container : pod.getSpec().getContainers()) { String containerName = container.getName(); V1ContainerStatus containerStatus = pod.getStatus().getContainerStatuses().stream() .filter(status -> status.getName().equals(containerName)) .findFirst().orElse(null); if (containerStatus != null) { // 获取容器的CPU和内存使用率 Map<String, Quantity> usage = containerStatus.getUsage(); Quantity cpuUsage = usage.get("cpu"); Quantity memoryUsage = usage.get("memory"); System.out.println("Namespace: " + namespace + ", Pod: " + name + ", Container: " + containerName + ", CPU Usage: " + cpuUsage + ", Memory Usage: " + memoryUsage); } } } } } ``` 上述代码中,我们首先创建了Kubernetes的客户端,然后通过CoreV1Api实例来获取pod列表。对于每个pod,我们遍历容器列表,并获取容器的名称以及相关状态信息。在状态信息中,我们可以找到容器的CPU和内存使用率,以及其他相关指标。 需要注意的是,这里获取的是当前时刻的使用率数据,如果你想要定时获取容器的使用率信息,可以使用定时任务等方法来实现。 这是一个简单的示例,你可以根据实际需求和项目结构进行相应的扩展和修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值