文章目录
- Java IO流
- 一、IO基础知识
- 1、字节流
- 2、字符流
- 3、字节缓冲流
- 4、打印流
- 5、随机访问流
- 6、字节流和字符流的区别?
- 二、IO设计模式
- 1、装饰器模式
- 2、适配器模式
- Q:适配器模式和装饰器模式的区别?
- 3、工厂模式
- 4、观察者模式
- 三、IO模型详解(★★★★★)
- 1、什么是IO?
- 2、常见的IO模型?
- 3、Java中常见的3种IO模型
- 三、序列化和反序列化
- 1、什么是序列化?反序列化?
- 2、如果不想进行序列化怎么办?
- 3、使用到序列化和反序列化的场景?
- 4、序列化协议对应TCP/IP 4层协议的哪一层?
- 5、常见的序列化协议
- 6、常见的序列化方式有?
Java IO流
一、IO基础知识
1、字节流
2、字符流
3、字节缓冲流
4、打印流
5、随机访问流
6、字节流和字符流的区别?
①读写的时候 字节流是按字节读写,字符流按字符读写 。
②字节流适合所有类型文件的数据传输,因为计算机字节(Byte)是电脑中表示信息含义的最小单位。字符流只能够处理纯文本数据,其他类型数据不行,但是字符流处理文本要比字节流处理文本要方便。
③在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。
④只是读写文件,和文件内容无关时,一般选择字节流。
二、IO设计模式
1、装饰器模式
2、适配器模式
Q:适配器模式和装饰器模式的区别?
3、工厂模式
4、观察者模式
三、IO模型详解(★★★★★)
同步和异步描述的是针对当前执行线程、或进程而言,发起IO调用后,当前线程或进程是否挂起等待操作系统的IO执行完成。
我们说一个IO执行是 同步执行 的,意思是 程序发起IO调用,当前线程或进程需要等待操作系统完成IO工作并告知进程已经完成,线程或进程才能继续往下执行其他既定指令 。
如果说一个IO执行是 异步执行 的,意思是 该动作是由当前线程或进程请求发起,且当前线程或进程不必等待操作系统IO的执行完毕,可直接继续往下执行其他既定指令。操作系统完成IO后,当前线程或进程会得到操作系统的通知 。
1、什么是IO?
2、常见的IO模型?
UNIX系统下,IO模型一共有5种:同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。
3、Java中常见的3种IO模型
三、序列化和反序列化
1、什么是序列化?反序列化?
2、如果不想进行序列化怎么办?
3、使用到序列化和反序列化的场景?
4、序列化协议对应TCP/IP 4层协议的哪一层?
应用层。
5、常见的序列化协议
如Kryo、Protobuf、ProtoStuff、hessian等
6、常见的序列化方式有?
Java序列化方式有很多,常见的有3种:
- Java 对象序列化: Java原生序列化方法即通过Java原生流(InputStream和OutputStream之间的转化)的方式进行转化,一般是对象输出流 ObjectOutputStream和对象输入流ObjectInputStream。
- JSON序列化: 这个可能是我们最常用的序列化方式,JSON序列化的选择很多,一般会使用jackson包,通过ObjectMapper类来进行一些操作,比如将对象转化为byte数组或者将json串转化为对象。
- ProtoBuff序列化: ProtocolBuffer是一种轻便高效的结构化数据存储格式,ProtoBuff序列化对象可以很大程度上将其压缩,可以大大减少数据传输大小,提高系统性能。