摘要:NIO 源码分析(05) Channel 源码分析 [toc] __Netty 系列目录()__ 一、Channel 类图 __功能说明:__ 提供了 Channel 响应 thread.interrupt(),支持中断操作,最重要的两个方法是 begin 和 end。 提供了 Channel 注册
阅读全文
摘要:NIO 源码分析(04) 从 SelectorProvider 看 JDK SPI 机制 [toc] __Netty 系列目录()__ SelectorProvider 定义了创建 Selector、ServerSocketChannel、SocketChannel 等方法,采用 JDK 的 Ser
阅读全文
摘要:NIO 源码分析(03) 从 BIO 到 NIO [toc] __Netty 系列目录()__ 一、NIO 三大组件 Channels、Buffers、Selectors 1.1 Channel 和 Buffer 基本上,所有的 IO 在 NIO 中都从一个 Channel 开始。Channel 有
阅读全文
摘要:NIO 源码分析(02 2) BIO 源码分析 Socket [toc] __Netty 系列目录()__ 在上一篇文章中详细分析了 ServerSocket 的源码,Socket 和 ServerSocket 一样也只是一个门面模式,真正的实现也是 SocksSocketImpl,所以关于 set
阅读全文
摘要:NIO 源码分析(02 1) BIO 源码分析 [toc] __Netty 系列目录()__ 一、BIO 最简使用姿势 __(1) JDK BIO 启动服务典型场景__ ok,代码已经完成!!!下面我们和 Linux 下的网络编程进行对比。 __(2) Linux BIO 启动服务典型场景__ 对比
阅读全文
摘要:NIO 源码分析(01) NIO 最简用法 [toc] __Netty 系列目录()__ Java NIO 主要由三个部分组成:Channel、Buffer 和 Selector。在分析源码前最好对 NIO 的基本用法和 Linux NIO 在一个基本的了解。 1. "NIO 入门" 2. "Lin
阅读全文
摘要:Linux NIO 系列(04 4) select、poll、epoll 对比 [toc] __Netty 系列目录()__ 既然 select/poll/epoll 都是 I/O 多路复用的具体的实现,之所以现在同时存在,其实他们也是不同历史时期的产物 select 出现是 1984 年在 BSD
阅读全文
摘要:Linux NIO 系列(04 3) epoll [toc] __Netty 系列目录()__ 一、why epoll 1.1 select 模型的缺点 1. 句柄限制:单个进程能够监视的文件描述符的数量存在最大限制,通常是 1024,当然可以更改数量,但由于select采用轮询的方式扫描文件描述符
阅读全文
摘要:Linux NIO 系列(04 2) poll [toc] __Netty 系列目录()__ 一、select 和 poll 比较 select() 和 poll() 系统调用的本质一样,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是 poll() 没有最大文件描述符数量的限制(但是数量
阅读全文
摘要:Linux NIO 系列(04 1) select [toc] __Netty 系列目录()__ select 系统调用的的用途是:在一段指定的时间内,监听用户感兴趣的文件描述符上可读、可写和异常等事件。 一、select 机制的优势 为什么会出现 select 模型? 先看一下下面的这句代码: i
阅读全文
摘要:Linux NIO 系列(03) 非阻塞式 IO [toc] __Netty 系列目录()__ 一、非阻塞式 IO 阻塞和非阻塞 I/O 是设备访问的两种不同模式,驱动程序可以灵活地支持这两种用户空间对设备的访问方式。 一般我们在 open() 文件或打开文件后通过 iocntl() 或 fcntl
阅读全文
摘要:Linux NIO 系列(02) 阻塞式 IO [toc] __Netty 系列目录()__ 一、环境准备 yum install y gcc nc man socket 帮助手册 "关于 Linux 下 man 手册的安装和使用点击这里" 1.1 代码演示 __(1) 编译__ [root@loc
阅读全文