【Java八股文总结】之IO流

文章目录

    • 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基础知识

【Java八股文总结】之IO流_第1张图片
【Java八股文总结】之IO流_第2张图片

1、字节流

【Java八股文总结】之IO流_第3张图片
【Java八股文总结】之IO流_第4张图片

2、字符流

【Java八股文总结】之IO流_第5张图片
【Java八股文总结】之IO流_第6张图片
【Java八股文总结】之IO流_第7张图片
【Java八股文总结】之IO流_第8张图片

3、字节缓冲流

【Java八股文总结】之IO流_第9张图片
【Java八股文总结】之IO流_第10张图片
【Java八股文总结】之IO流_第11张图片

4、打印流

【Java八股文总结】之IO流_第12张图片

5、随机访问流

【Java八股文总结】之IO流_第13张图片

6、字节流和字符流的区别?

①读写的时候 字节流是按字节读写,字符流按字符读写
字节流适合所有类型文件的数据传输,因为计算机字节(Byte)是电脑中表示信息含义的最小单位。字符流只能够处理纯文本数据,其他类型数据不行,但是字符流处理文本要比字节流处理文本要方便。
③在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。
④只是读写文件,和文件内容无关时,一般选择字节流。

二、IO设计模式

1、装饰器模式

【Java八股文总结】之IO流_第14张图片

2、适配器模式

【Java八股文总结】之IO流_第15张图片

Q:适配器模式和装饰器模式的区别?

【Java八股文总结】之IO流_第16张图片

3、工厂模式

【Java八股文总结】之IO流_第17张图片

4、观察者模式

【Java八股文总结】之IO流_第18张图片
【Java八股文总结】之IO流_第19张图片

三、IO模型详解(★★★★★)

【Java八股文总结】之IO流_第20张图片
同步和异步描述的是针对当前执行线程、或进程而言,发起IO调用后,当前线程或进程是否挂起等待操作系统的IO执行完成。
我们说一个IO执行是 同步执行 的,意思是 程序发起IO调用,当前线程或进程需要等待操作系统完成IO工作并告知进程已经完成,线程或进程才能继续往下执行其他既定指令
如果说一个IO执行是 异步执行 的,意思是 该动作是由当前线程或进程请求发起,且当前线程或进程不必等待操作系统IO的执行完毕,可直接继续往下执行其他既定指令。操作系统完成IO后,当前线程或进程会得到操作系统的通知

1、什么是IO?

【Java八股文总结】之IO流_第21张图片
【Java八股文总结】之IO流_第22张图片
【Java八股文总结】之IO流_第23张图片

2、常见的IO模型?

UNIX系统下,IO模型一共有5种:同步阻塞I/O、同步非阻塞I/O、I/O多路复用、信号驱动I/O和异步I/O。

3、Java中常见的3种IO模型

在这里插入图片描述
【Java八股文总结】之IO流_第24张图片
【Java八股文总结】之IO流_第25张图片
【Java八股文总结】之IO流_第26张图片
【Java八股文总结】之IO流_第27张图片
【Java八股文总结】之IO流_第28张图片
【Java八股文总结】之IO流_第29张图片
【Java八股文总结】之IO流_第30张图片
在这里插入图片描述
【Java八股文总结】之IO流_第31张图片
在这里插入图片描述
【Java八股文总结】之IO流_第32张图片

三、序列化和反序列化

1、什么是序列化?反序列化?

【Java八股文总结】之IO流_第33张图片

2、如果不想进行序列化怎么办?

【Java八股文总结】之IO流_第34张图片

3、使用到序列化和反序列化的场景?

在这里插入图片描述

4、序列化协议对应TCP/IP 4层协议的哪一层?

应用层。

5、常见的序列化协议

如Kryo、Protobuf、ProtoStuff、hessian等
【Java八股文总结】之IO流_第35张图片
【Java八股文总结】之IO流_第36张图片
在这里插入图片描述
【Java八股文总结】之IO流_第37张图片
【Java八股文总结】之IO流_第38张图片

6、常见的序列化方式有?

Java序列化方式有很多,常见的有3种:
【Java八股文总结】之IO流_第39张图片

  • Java 对象序列化: Java原生序列化方法即通过Java原生流(InputStream和OutputStream之间的转化)的方式进行转化,一般是对象输出流 ObjectOutputStream和对象输入流ObjectInputStream。
  • JSON序列化: 这个可能是我们最常用的序列化方式,JSON序列化的选择很多,一般会使用jackson包,通过ObjectMapper类来进行一些操作,比如将对象转化为byte数组或者将json串转化为对象。
  • ProtoBuff序列化: ProtocolBuffer是一种轻便高效的结构化数据存储格式,ProtoBuff序列化对象可以很大程度上将其压缩,可以大大减少数据传输大小,提高系统性能。

你可能感兴趣的:(Java学习乐园,java,开发语言)