Netty实战 高清 pdf
目录第一部分 Netty的概念及体系结构第 1 章 Netty——异步和事件驱动 31.1 Java 网络编程 41.1.1 Java NIO 51.1.2 选择器 61.2 Netty 简介 61.2.1 谁在使用 Netty 71.2.2 异步和事件驱动 81.3 Netty 的核心组件 91.3.1 Channel 91.3.2 回调 91.3.3 Future 101.3.4 事件和 ChannelHandler 111.3.5 把它们放在一起 121.4 小结 13第 2 章 你的第一款 Netty应用程序 142.1 设置开发环境 142.1.1 获取并安装 Java 开发工具包 142.1.2 下载并安装 IDE 152.1.3 下载和安装Apache Maven 152.1.4 配置工具集 162.2 Netty 客户端/服务器概览 162.3 编写 Echo 服务器 172.3.1 ChannelHandler 和业务逻辑 172.3.2 引导服务器 182.4 编写 Echo 客户端 212.4.1 通过 ChannelHandler 实现客户端逻辑 212.4.2 引导客户端 222.5 构建和运行 Echo 服务器和客户端 242.5.1 运行构建 242.5.2 运行 Echo 服务器和客户端 272.6 小结 29第3章 Netty的组件和设计 303.1 Channel、EventLoop 和ChannelFuture 303.1.1 Channel 接口 313.1.2 EventLoop 接口 313.1.3 ChannelFuture 接口 323.2 ChannelHandler 和ChannelPipeline 323.2.1 ChannelHandler 接口 323.2.2 ChannelPipeline 接口 333.2.3 更加深入地了解ChannelHandler 343.2.4 编码器和解码器 353.2.5 抽象类 SimpleChannelInboundHandler 35小木人印象 http://www.xwood.net/ii 目录45673.3 引导 363.4 小结 37第 4 章 传输 384.1 案例研究:传输迁移 384.1.1 不通过 Netty 使用 OIO和 NIO 394.1.2 通过 Netty 使用 OIO和 NIO 414.1.3 非阻塞的 Netty 版本 424.2 传输 API 434.3 内置的传输 454.3.1 NIO——非阻塞 I/O 464.3.2 Epoll——用于 Linux的本地非阻塞传输 474.3.3 OIO——旧的阻塞 I/O 484.3.4 用于 JVM 内部通信的Local 传输 484.3.5 Embedded 传输 494.4 传输的用例 494.5 小结 51第 5 章 ByteBuf 525.1 ByteBuf 的 API 525.2 ByteBuf 类——Netty 的数据容器 535.2.1 它是如何工作的 535.2.2 ByteBuf 的使用模式 535.3 字节级操作 575.3.1 随机访问索引 575.3.2 顺序访问索引 575.3.3 可丢弃字节 585.3.4 可读字节 585.3.5 可写字节 595.3.6 索引管理 595.3.7 查找操作 605.3.8 派生缓冲区 605.3.9 读/写操作 625.3.10 更多的操作 645.4 ByteBufHolder 接口 655.5 ByteBuf 分配 655.5.1 按需分配:ByteBufAllocator 接口 655.5.2 Unpooled 缓冲区 675.5.3 ByteBufUtil 类 675.6 引用计数 675.7 小结 68第 6 章 ChannelHandler 和ChannelPipeline 706.1 ChannelHandler 家族 706.1.1 Channel 的生命周期 706.1.2 ChannelHandler的生命周期 716.1.3 ChannelInboundHandler接口 716.1.4 ChannelOutboundHandler接口 736.1.5 ChannelHandler 适配器 746.1.6 资源管理 746.2 ChannelPipeline 接口 766.2.1 修改 ChannelPipeline 786.2.2 触发事件 796.3 ChannelHandlerContext接口 806.3.1 使用 ChannelHandlerContext 826.3.2 ChannelHandler 和ChannelHandlerContext 的高级用法 846.4 异常处理 866.4.1 处理入站异常 866.4.2 处理出站异常 876.5 小结 88第 7 章 EventLoop 和线程模型 897.1 线程模型概述 897.2 EventLoop 接口 907.2.1 Netty 4 中的 I/O 和事件处理 927.2.2 Netty 3 中的 I/O 操作 927.3 任务调度 937.3.1 JDK 的任务调度 API 937.3.2 使用 EventLoop调度任务 947.4 实现细节 957.4.1 线程管理 957.4.2 EventLoop/线程的分配 967.5 小结 98小木人印象 http://www.xwood.net/目录 iii89101112第 8 章 引导 998.1 Bootstrap 类 998.2 引导客户端和无连接协议 1018.2.1 引导客户端 1028.2.2 Channel 和 EventLoopGroup 的兼容性 1038.3 引导服务器 1048.3.1 ServerBootstrap 类 1048.3.2 引导服务器 1058.4 从 Channel引导客户端 1078.5 在引导过程中添加多个ChannelHandler 1088.6 使用 Netty 的 ChannelOption 和属性 1108.7 引导DatagramChannel 1118.8 关闭 1128.9 小结 112第 9 章 单元测试 1139.1 EmbeddedChannel概述 1139.2 使用 EmbeddedChannel测试ChannelHandler 1159.2.1 测试入站消息 1159.2.2 测试出站消息 1189.3 测试异常处理 1199.4 小结 121第二部分 编解码器第 10 章 编解码器框架 12510.1 什么是编解码器 12510.2 解码器 12510.2.1 抽象类 ByteToMessageDecoder 12610.2.2 抽象类ReplayingDecoder 12710.2.3 抽象类 MessageToMessageDecoder 12810.2.4 TooLongFrameException 类 13010.3 编码器 13110.3.1 抽象类 MessageToByteEncoder 13110.3.2 抽象类 MessageToMessageEncoder 13210.4 抽象的编解码器类 13310.4.1 抽象类 ByteToMessageCodec 13310.4.2 抽象类 MessageToMessageCodec 13410.4.3 CombinedChannelDuplexHandler 类 13710.5 小结 138第 11 章 预置的ChannelHandler和编解码器 13911.1 通过 SSL/TLS 保护Netty 应用程序 13911.2 构建基于Netty的HTTP/HTTPS 应用程序 14111.2.1 HTTP 解码器、编码器和编解码器 14111.2.2 聚合 HTTP 消息 14311.2.3 HTTP 压缩 14411.2.4 使用 HTTPS 14511.2.5 WebSocket 14611.3 空闲的连接和超时 14811.4 解码基于分隔符的协议和基于长度的协议 15011.4.1 基于分隔符的协议 15011.4.2 基于长度的协议 15311.5 写大型数据 15511.6 序列化数据 1 5711.6.1 JDK 序列化 15711.6.2 使用 JBoss Marshalling进行序列化 15711.6.3 通过 Protocol Buffers序列化 15911.7 小结 160第三部分 网络协议第 12 章 WebSocket 16312.1 WebSocket 简介 163小木人印象 http://www.xwood.net/iv 目录14151312.2 我们的 WebSocket 示例应用程序 16412.3 添加 WebSocket支持 16512.3.1 处理 HTTP 请求 16512.3.2 处理 WebSocket 帧 16812.3.3 初始化 ChannelPipeline 16912.3.4 引导 17112.4 测试该应用程序 17312.5 小结 176第13章 使用UDP广播事件 17713.1 UDP 的基础知识 17713.2 UDP 广播 17813.3 UDP 示例应用程序 17813.4 消息 POJO:LogEvent 17913.5 编写广播者 18013.6 编写监视器 18513.7 运行 LogEventBroadcaster 和LogEventMonitor 18713.8 小结 189第四部分 案例研究第14 章 案例研究,第一部分 19314.1 Droplr—构建移动服务 19314.1.1 这一切的起因 19314.1.2 Droplr 是怎样工作的 19414.1.3 创造一个更加快速的上传体验 19414.1.4 技术栈 19614.1.5 性能 19914.1.6 小结——站在巨人的肩膀上 20014.2 Firebase—实时的数据同步服务 20014.2.1 Firebase 的架构 20114.2.2 长轮询 20114.2.3 HTTP 1.1 keep-alive和流水线化 20414.2.4 控制 SslHandler 20514.2.5 Firebase 小结 20714.3 Urban Airship—构建移动服务 20714.3.1 移动消息的基础知识 20714.3.2 第三方递交 20814.3.3 使用二进制协议的例子 20914.3.4 直接面向设备的递交 21114.3.5 Netty 擅长管理大量的并发连接 21214.3.6 Urban Airship 小结——跨越防火墙边界 21314.4 小结 214第15 章 案例研究,第二部分 21515.1 Netty 在 Facebook 的使用:Nifty 和 Swift 21515.1.1 什么是 Thrift 21515.1.2 使用 Netty 改善Java Thrift 的现状 21615.1.3 Nifty 服务器的设计 21715.1.4 Nifty 异步客户端的设计 22015.1.5 Swift:一种更快的构建Java Thrift服务的方式 22115.1.6 结果 22115.1.7 Facebook 小结 22415.2 Netty 在 Twitter的使用:Finagle 22415.2.1 Twitter 成长的烦恼 22415.2.2 Finagle 的诞生 22415.2.3 Finagle 是如何工作的 22515.2.4 Finagle 的抽象 23015.2.5 故障管理 23115.2.6 组合服务 23215.2.7 未来:Netty 23215.2.8 Twitter 小结 23315.3 小结 233附录 Maven 介绍 234
评论