一:流分类
抽象基类:InputStream和Reader 抽象类不能用于创建模板哦!
OutputStream和Writer
方向: 以内存为中心!
输入流(读)
输出流(写)
数据单元:(字节流:以InputStream和OutputStream作为基类; 字符流:以Reader和Writer作为基类)
字节流:8byte (字节)
字符流:16位字符
角色:
节点流:与数据源直接相连
处理流:封装节点流 (装饰器设计模式)
对象的序列化:把内存中的java对象转换为与平台无关的二进制流!(保存、传输)
系统序列化、自定义序列化
编码和解码
文件锁:排它锁、共享锁
二:操作
1.File类:操作文件和目录的!
三:解惑
(1)之前看《深入浅出nodeJS》一直傻傻分不清楚:同步IO 异步IO 阻塞IO 非阻塞IO ;近期总结一下:
IO请求的两个阶段:
a:发出IO请求( 等待资源阶段 & 排队阶段)
b:完成实际的IO操作 ( 使用资源阶段 & 服务阶段)
阻塞IO和非阻塞IO:如果发出IO请求会阻塞线程(请求资源被上一个使用者使用还没有被释放时),就是阻塞IO。反之,非阻塞IO。
阻塞IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。
非阻塞IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用。
同步和异步: 如果IO是由OS处理,再将结果返回给应用程序,就是异步IO。 使用回调函数的函数(更准确:异步函数): 我只负责调用,发起请求,调用完交给OS帮我处理
IO,IO成功了,通知我!(轮询机制在里面)
如果IO需要应用程序本身去执行,会阻塞线程,就是同步IO。
阻塞和非阻塞: 发出IO请求是否会阻塞线程!
(2) CPU密集型 IO密集型
(3) 长轮询 短轮询
(4) IO多路复用 ..........