verSocketChannel的创建
7.2.2 服务端Channel的初始化
7.2.3 服务端ChannelPipeline的初始化
7.2.4 将服务端Channel注册到Selector
7.2.5 bossGroup与workerGroup
7.2.6 服务端Selector事件轮询
7.2.7 Netty解决JDK空轮询Bug
7.2.8 Netty对Selector中KeySet的优化
7.2.9 Handler的添加过程
第8章 大名鼎鼎的EventLoop
8.1 EventLoopGroup与Reactor
8.1.1 再谈Reactor线程模型
8.1.2 EventLoopGroup与Reactor关联
8.1.3 EventLoopGroup的实例化
8.2 任务执行者EventLoop
8.2.1 NioEventLoop的实例化过程
8.2.2 EventLoop与Channel的关联
8.2.3 EventLoop的启动
第9章 Netty大动脉Pipeline
9.1 Pipeline设计原理
9.1.1 Channel与ChannelPipeline
9.1.2 再谈ChannelPipeline的初始化
9.1.3 ChannelInitializer的添加
9.1.4 自定义ChannelHandler的添加过程
9.1.5 给ChannelHandler命名
9.1.6 ChannelHandler的默认命名规则
9.2 Pipeline的事件传播机制
9.2.1 Outbound事件传播方式
9.2.2 Inbound事件传播方式
9.2.3 小结
9.3 Handler的各种“姿势”
9.3.1 ChannelHandlerContext
9.3.2 Channel的生命周期
9.3.3 ChannelHandler常用的API
9.3.4 ChannelInboundHandler
第10章 异步处理双子星Future与Promise
10.1 异步结果Future
10.2 异步执行Promise
第11章 Netty内存分配ByteBuf
11.1 初识ByteBuf
11.1.1 ByteBuf的基本结构
11.1.2 ByteBuf的重要API
11.1.3 ByteBuf的基本分类
11.2 ByteBufAllocator内存管理器
11.3 非池化内存分配
11.3.1 堆内内存的分配
11.3.2 堆外内存的分配
11.4 池化内存分配
11.4.1 PooledByteBufAllocator简述
11.4.2 DirectArena内存分配流程
11.4.3 内存池的内存规格
11.4.4 命中缓存的分配
11.4.5 Page级别的内存分配
11.4.6 SubPage级别的内存分配
11.4.7 内存池ByteBuf的内存回收
11.4.8 SocketChannel读取ByteBuf的过程
第12章 Netty编解码的艺术
12.1 什么是拆包、粘包
12.1.1 TCP拆包、粘包
12.1.2 粘包问题的解决策略
12.2 什么是编解码
12.2.1 编解码技术
12.2.2 Netty为什么要提供编解码框架
12.3 Netty中常用的解码器
12.3.1 ByteToMessageDecoder抽象解码器
12.3.2 LineBasedFrameDecoder行解码器
12.3.3 DelimiterBasedFrameDecoder分隔符解码器
12.3.4 FixedLengthFrameDecoder固定长度解码器
12.3.5 LengthFieldBasedFrameDecoder通用解码器
12.4 Netty编码器原理和数据输出
12.4.1 WriteAndFlush事件传播
12.4.2 MessageToByteEncoder抽象编码器
12.4.3 写入Buffer队列
12.4.4 刷新Buffer队列
12.4.5 数据输出回调
12.5 自定义编解码
12.5.1 MessageToMessageDecoder抽象解码器
12.5.2 MessageToMessageEncoder抽象编码器
12.5.3 ObjectEncoder序列化编码器
12.5.4 LengthFieldPrepender通用编码器
第4篇 Netty实战篇
第13章 基于Netty手写消息推送系统
13.1 环境搭建
13.2 多协议通信设计
13.2.1 自定义协议规则
13.2.2 自定义编解码器
13.2.3 对HTTP的支持
13.2.4 对自定义协议的支持
13.2.5 对WebSocket协议的支持
13.3 服务端逻辑处理
13.3.1 多协议串行处理
13.3.2 服务端用户中心
13.4 客户端控制台处理
13.4.1 控制台接入代码
13.4.2 控制台消息处理
13.5 客户端Web页面交互实现
13.5.1 Web页面设计
13.5.2 WebSocket接入
13.5.3 登录和退出
13.5.4 发送文字信息
13.5.5 发送图片表情
13.5.6 发送鲜花雨特效
第14章 Netty高性能调优工具类解析
14.1 多线程共享FastThreadLocal
14.1.1 FastThreadLocal的使用和创建
14.1.2 FastThreadLocal的设值
14.2 Recycler对象回收站
14.2.1 Recycler的使用和创建
14.2.2 从Recycler中获取对象
14.2.3 相同线程内的对象回收
14.2.4 不同线程间的对象回收
14.2.5 获取不同线程间释放的对象
第15章 单机百万连接性能调优
15.1 模拟Netty单机连接瓶颈
15.2 单机百万连接调优解决思路
15.2.1 突破局部文件句柄限制
15.2.2 突破全局文件句柄限制
15.3 Netty应用级别的性能调优
15.3.1 Netty应用级别的性能瓶颈复现
15.3.2 Netty应用级别的性能调优方案
第16章 设计模式在Netty中的应用
16.1 单例模式源码举例
16.2 策略模式源码举例
16.3 装饰者模式源码举例
16.4 观察者模式源码举例
16.5 迭代器模式源码举例
16.6 责任链模式源码举例
16.7 工厂模式源码举例
第17章 Netty经典面试题集锦
17.1 基础知识部分
17.1.1 TCP和UDP的根本区别
17.1.2 TCP如何保证可靠传输
17.1.3 Netty能解决什么问题
17.1.4 选用Netty作为通信组件框架的举例
17.1.5 Netty有哪些主要组件,它们之间有什么关联
17.2 高级特性部分
17.2.1 相较同类框架,Netty有哪些优势
17.2.2 Netty的高性能体现在哪些方面
17.2.3 默认情况下Netty起多少线程,何时启动
17.2.4 Netty有几种发送消息的方式
17.2.5 Netty支持哪些心跳类型设置
17.2.6 Netty和Tomcat的区别
17.2.7 在实际应用中,如何确定要使用哪些编解码器
后折页