IO
1.往内存中读数据是输入流,从内存中往外写是输出流。
2.根据处理的数据类型分为字节流和字符流
3.字节流可以处理所有数据类型的数据。字符流处理文本数据
文件操作:
file.exists()是否存在
file.getabsolutepath()绝对路径
file.length()文件大小
file.createnewfile()创建新文件
file.idirectoryhi文件夹会否存在
file.mkdir创建文件夹
dir.listfiles获取文件夹下的所有文件
字符流操作
FileInputStream fis = null;
try {
fis = new FileInputStream("D:\\testData.txt");
byte bytes[]=new byte[1024];
int n=0;
while((n=fis.read(bytes))!= -1){
String str = new String(bytes,0,n);
System.out.print(str);
}
} catch (Exception e) {
e.printStackTrace();
} finally{
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
springboot中读取文件:首先在Spring Bean中获取applicationcontext的引用,然后通过getresouces的方法取得本地绝对路径上的文件、网络资源文件、classpath下的文件
写文件可以使用原生的fileoutputstream:首先穿件fileoutputstram对象,然后创建写入字符串,转成字节流,然后将字节流写入fileoutputstram中
NIO:
主要是对channel和buffer的一些操作,具体的话没有涉及过,主要还是使用原生的io操作。
多线程:
大多数时候我们都是使用Spring Boot开发web项目,默认的controller、service、dao的作用域都是单实例、无状态的。
springboot中首先获取spring的上下文applicationcontext然后,定义自己的线程类,然后通过springcontext来获取该线程类。具体应用上还可以定义一个组件启动类来专门启动该线程类。
集合:
集合区别于数组主要是方便插入与增加操作。
SSH:struts、hibernate、spring:分别:MVC逻辑控制、数据库操作、容器、bean的管理
Springboot:简化了相关配置:约定优于配置。依赖注入:用spring容器将依赖关系注入到主键当中。
控制反转:控制:由spring容器来控制依赖对象,反转:由spring容器向程序中注入依赖对象。
springcloud:主要是使用API网关来实现微服务,主要是使用调用服务(feign),被调用服务(eruka)、API网关(zuul)、服务注册中心(server),来实现不同服务器上相互调用接口。
负载均衡:使用Nginx服务器、或者使用springcloud的zuul,使用serviceIdl进行绑定后,如果有相同的serviceid则会通过轮训的方式进行访问。
部署:
tomcat的部署可以直接将springboot项目打成jar包然后直接后台运行,或者打成war包,甩到tomcat webapp下运行。
kafka:如果有大量的请求同时到来,可能会触发too many connection错误,通过使用消息队列,我们可以异步处理请求,减缓系统压力。