Netty权威指南(第2版) 6.9分
读书笔记 第一章 Java的I/O演进之路
Gimo

Java Sun 1995 一次编写,到处运行。 丰富而强大的类库。 2002年随着JDK1.4发布开始提供支持非阻塞I/O Linux内核将所有外部设备看成文件,对文件读写,返回file descriptor(fd),对socket读写,返回socketfd,描述符就是一个数字,指向内核的一个结构体。 UNIX提供了5种I/O模型: 1. 阻塞I/O 2. 非阻塞 3. I/O复用:select/poll 4. 信号驱动I/O 5. 异步I/O 只需要知道一个概念:操作系统底层是支持异步I/O通信的。只不过很长一段时间Java没有相关类库。 Java NIO的核心类库多路复用器Selector就是基于epoll的多路复用技术实现。 I/O多路复用技术 -- 不是多线程 把多个I/O的阻塞复用到同一个select的阻塞上 epoll会针对活跃的socket操作,由fd上面的callback函数实现。 Linux使用的epoll Java的I/O演进 -- 同步阻塞:BIO Pipe、Channel、Buffer和Selector等都没有 JDK1.4增加了: - ByteBuffer 异步I/O操作的缓冲区 - Pipe 异步I/O操作的管道 - Channel 各种I/O操作 - 多种字符集的编码解码 - Selector 非阻塞I/O操作的多路复用器 - 正则表达式类库(基于Perl) - FileChannel 文件通道 不足: - 没有统一的文件属性,例如读写权限 - API弱,例如目录的递归遍历,往往要自己实现 - 底层的一些高级API无法使用 - 不支持异步文件读写操作 JDK1.7将原来的NIO进行了升级: - 能够批量获取文件属性 - 提供AIO功能,支持基于文件的异步I/O操作和针对网络套接字的异步操作 - 通道

0
《Netty权威指南(第2版)》的全部笔记 23篇
豆瓣
我们的精神角落
免费下载 iOS / Android 版客户端