走进Netty之Java的I/O历程

本文主要简单介绍了java 中 I/O 的发展历程。

1. Java 版本在1.4之前, 对于I/O 的支持并不完善,因此在高性能服务器端的开发一直被C和C++ 占据。

2. JDK 1.4 推出NIO

3. JDK 1.7 推出 NIO 2.0

4. 五种Linux 网络 I/O 模型

(1). 阻塞I/O模型: 常见类型
(2). 非阻塞I/O模型: 直接返回,然后进行轮询
(3). I/O 复用模型:Linux 提供了select/poll, 还提供了epoll, 基于时间驱动的方式
(4). 信号驱动I/O模型: 通过信号进行通知程序进行数据处理
(5). 异步 I/O: 告知内核启动了某一种操作,然后操作完成后通知我们。

4. 常见知识点。

(1) select/pool 系统调用缺陷 : FD有限,采取的是轮询方式,扫描所有的集合socket.线性效率下降
(2) epoll : 采用事件驱动,只有活跃的socket 才会调用callback 函数。而且采用的是mmap,不要内核将数据复制到用户线程空间,直接和用户空间mmap 同一块内存。

你可能感兴趣的:(走进Netty之Java的I/O历程)