【Netty权威指南】第2章 读书笔记

第2章 NIO入门

2.1 传统的 BIO 编程

2.2 伪异步 IO 编程

线程池 + 消息队列 + BIO = 伪异步 IO

缺点:队列会阻塞

2.3 NIO 编程

2.3.1 NIO 类库简介

  1. 缓冲区 Buffer

    ByteBuffer

    IntBuffer

    CharBuffer

  2. 通道 Channels

    读写双向。

    两个大类:网络读写的 SelectableChannel 和用于文件读写的 FileChannel

  3. 多路复用器 Selector

    Java NIO 编程的基础。

    SelectionKey

    一个多路复用器 Selector 可以同时轮询多个 Channel,由于 JDK 使用了 epoll() 代替了 select(),所以它并没有最大连接句柄 1024/2048 的限制。

2.3.2 NIO 服务端序列图

2.3.3 NIO 创建的 Time Server 源码分析

2.3.4 NIO 客户端序列图

2.3.5 NIO 创建的 Time Client源码分析

2.4 AIO 编程

2.5 四种 IO 的对比

2.6 选择 netty 的理由

2.6.1 不选择 Java 原生NIO 编程的理由

  1. NIO 类库 和API 繁杂。
  2. 需要额外的技能做铺垫,例如多线程和 Reactor模式。
  3. 可靠性能力补齐,工作量和难度都非常大。
  4. JDK NIO 的 BUG,例如 epoll bug,它会导致 Selector 空轮询,最终导致 CPU 100%。·

2.6.2 为什么选择 Netty

  1. API 使用简单。
  2. 功能强大。
  3. 定制能力强。
  4. 性能高。
  5. 成熟稳定。
  6. 社区活跃,版本迭代周期短。
  7. 经历了大规模商业应用的考验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值