流的分类
按流向分类:输入流,输出流
按操作单位分类:字符流,字节流
按角色分类:节点流,处理流(装饰器模式)
*Q:音频、图片等信息存储单位均为字节,为什么还要引入字符流?
A: 涉及到字符的传送,若只有字节流,需要通过JVM转换,这个过程耗时;不知道编码类型,容易乱码
(字节:8位;字符:16位)
什么是序列化,为什么要进行序列化?
对象想要序列化,类必须序列化,所以要求该类:
不想序列化怎么办?
常见的I/O模型共有三种:
客户端有连接请求时,服务器就要启动一个线程处理
BIO适用于连接数目标小且固定的架构,这种方式对服务器资源要求比较高,并发局限于应用中。
NIO的数据是面向缓冲区Buffer的,必须从Buffer中读取或者写入
服务器端用一个线程处理多个连接,客户端发送的连接请求会注册到多路复用器上,多路复用器轮询到连接有IO请求就进行处理。
https://zhuanlan.zhihu.com/p/98094713
https://www.cnblogs.com/9dragon/p/10901448.html
https://zhuanlan.zhihu.com/p/90153833
https://blog.csdn.net/qq_19782019/article/details/80422143
https://zhuanlan.zhihu.com/p/23488863
https://blog.csdn.net/luzhensmart/article/details/82230076