第十五章:输入和输出(I/O)

一:流分类   

   抽象基类: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多路复用   ..........

 

 

 

                                                                                                                                                                                                                                                                                                               

posted @ 2016-10-25 10:31  风茗  阅读(122)  评论(0编辑  收藏  举报