当前位置:主页 > 书籍配套资源 > Netty配套资源
《Netty实战》配套彩图

《Netty实战》配套彩图

  • 更新:2022-06-21
  • 大小:1.4 MB
  • 类别:Netty
  • 作者:[美]、诺曼·毛瑞尔(Norman、Ma
  • 出版:人民邮电出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

内容介绍

本书是为想要或者正在使用Java 从事高性能网络编程的人而写的,循序渐进地介绍了Netty各个方面的内容。

本书共分为4 个部分

第一部分详细地介绍Netty 的相关概念以及核心组件

第二部分介绍自定义协议经常用到的编解码器

第三部分介绍Netty 对于应用层高级协议的支持,会覆盖常见的协议及其在实践中的应用

第四部分是几个案例研究。

此外,附录部分会还简单地介绍Maven,以及如何通过使用Maven 编译和运行本书中的示例。 阅读本书不需要读者精通Java 网络和并发编程。如果想要更加深入地理解本书背后的理念以及Netty 源码本身,可以系统地学习一下Java 网络编程、NIO、并发和异步编程以及相关的设计模式。

作者简介

Norman Maurer

苹果公司的软件工程师,同时也是Netty的核心开发人员。 Marvin Allen Wolfthal是Dell Services的顾问,他使用Netty实现了多个任务关键型的企业系统。

译者简介

何品

目前是*的一名软件工程师,热爱网络、并发、异步相关的主题以及函数式编程,同时也是Netty、Akka等项目的贡献者,活跃于Scala社区,目前也在从事GraphQL相关的开发工作。

目录

  • 第一部分 Netty的概念及体系结构
  • 第1 章 Netty——异步和事件驱动 3
  • 1.1 Java 网络编程 4
  • 1.1.1 Java NIO 5
  • 1.1.2 选择器 6
  • 1.2 Netty 简介 6
  • 1.2.1 谁在使用Netty 7
  • 1.2.2 异步和事件驱动 8
  • 1.3 Netty 的核心组件 9
  • 1.3.1 Channel 9
  • 1.3.2 回调 9
  • 1.3.3 Future 10
  • 1.3.4 事件和ChannelHandler 11
  • 1.3.5 把它们放在一起 12
  • 1.4 小结 13
  • 第2 章 你的**款Netty应用程序 14
  • 2.1 设置开发环境 14
  • 2.1.1 获取并安装Java 开发工具包 14
  • 2.1.2 下载并安装IDE 15
  • 2.1.3 下载和安装Apache Maven 15
  • 2.1.4 配置工具集 16
  • 2.2 Netty 客户端/服务器概览 16
  • 2.3 编写Echo 服务器 17
  • 2.3.1 ChannelHandler 和业务逻辑 17
  • 2.3.2 引导服务器 18
  • 2.4 编写Echo 客户端 21
  • 2.4.1 通过ChannelHandler 实现客户端逻辑 21
  • 2.4.2 引导客户端 22
  • 2.5 构建和运行Echo 服务器和客户端 24
  • 2.5.1 运行构建 24
  • 2.5.2 运行Echo 服务器和客户端 27
  • 2.6 小结 29
  • 第3 章 Netty 的组件和设计 30
  • 3.1 Channel、EventLoop 和ChannelFuture 30
  • 3.1.1 Channel 接口 31
  • 3.1.2 EventLoop 接口 31
  • 3.1.3 ChannelFuture 接口 32
  • 3.2 ChannelHandler 和ChannelPipeline 32
  • 3.2.1 ChannelHandler 接口 32
  • 3.2.2 ChannelPipeline 接口 33
  • 3.2.3 更加深入地了解ChannelHandler 34
  • 3.2.4 编码器和解码器 35
  • 3.2.5 抽象类SimpleChannelInboundHandler 35
  • 3.3 引导 36
  • 3.4 小结 37
  • 第4 章 传输 38
  • 4.1 案例研究:传输迁移 38
  • 4.1.1 不通过Netty 使用OIO和NIO 39
  • 4.1.2 通过Netty 使用OIO和NIO 41
  • 4.1.3 非阻塞的Netty 版本 42
  • 4.2 传输API 43
  • 4.3 内置的传输 45
  • 4.3.1 NIO——非阻塞I/O 46
  • 4.3.2 Epoll——用于Linux的本地非阻塞传输 47
  • 4.3.3 OIO——旧的阻塞I/O 48
  • 4.3.4 用于JVM 内部通信的Local 传输 48
  • 4.3.5 Embedded 传输 49
  • 4.4 传输的用例 49
  • 4.5 小结 51
  • 第5 章 ByteBuf 52
  • 5.1 ByteBuf 的API 52
  • 5.2 ByteBuf 类——Netty的数据容器 53
  • 5.2.1 它是如何工作的 53
  • 5.2.2 ByteBuf 的使用模式 53
  • 5.3 字节级操作 57
  • 5.3.1 随机访问索引 57
  • 5.3.2 顺序访问索引 57
  • 5.3.3 可丢弃字节 58
  • 5.3.4 可读字节 58
  • 5.3.5 可写字节 59
  • 5.3.6 索引管理 59
  • 5.3.7 查找操作 60
  • 5.3.8 派生缓冲区 60
  • 5.3.9 读/写操作 62
  • 5.3.10 更多的操作 64
  • 5.4 ByteBufHolder 接口 65
  • 5.5 ByteBuf 分配 65
  • 5.5.1 按需分配:ByteBufAllocator 接口 65
  • 5.5.2 Unpooled 缓冲区 67
  • 5.5.3 ByteBufUtil 类 67
  • 5.6 引用计数 67
  • 5.7 小结 68
  • 第6 章 ChannelHandler 和ChannelPipeline 70
  • 6.1 ChannelHandler 家族 70
  • 6.1.1 Channel 的生命周期 70
  • 6.1.2 ChannelHandler的生命周期 71
  • 6.1.3 ChannelInboundHandler接口 71
  • 6.1.4 ChannelOutboundHandler接口 73
  • 6.1.5 ChannelHandler 适配器 74
  • 6.1.6 资源管理 74
  • 6.2 ChannelPipeline 接口 76
  • 6.2.1 修改ChannelPipeline 78
  • 6.2.2 触发事件 79
  • 6.3 ChannelHandlerContext接口 80
  • 6.3.1 使用ChannelHandlerContext 82
  • 6.3.2 ChannelHandler 和ChannelHandlerContext 的*级用法 84
  • 6.4 异常处理 86
  • 6.4.1 处理入站异常 86
  • 6.4.2 处理出站异常 87
  • 6.5 小结 88
  • 第7 章 EventLoop 和线程模型 89
  • 7.1 线程模型概述 89
  • 7.2 EventLoop 接口 90
  • 7.2.1 Netty 4 中的I/O 和事件处理 92
  • 7.2.2 Netty 3 中的I/O 操作 92
  • 7.3 任务调度 93
  • 7.3.1 JDK 的任务调度API 93
  • 7.3.2 使用EventLoop调度任务 94
  • 7.4 实现细节 95
  • 7.4.1 线程管理 95
  • 7.4.2 EventLoop/线程的分配 96
  • 7.5 小结 98
  • 第8 章 引导 99
  • 8.1 Bootstrap 类 99
  • 8.2 引导客户端和无连接协议 101
  • 8.2.1 引导客户端 102
  • 8.2.2 Channel 和EventLoopGroup 的兼容性 103
  • 8.3 引导服务器 104
  • 8.3.1 ServerBootstrap 类 104
  • 8.3.2 引导服务器 105
  • 8.4 从Channel引导客户端 107
  • 8.5 在引导过程中添加多个ChannelHandler 108
  • 8.6 使用Netty 的ChannelOption 和属性 110
  • 8.7 引导DatagramChannel 111
  • 8.8 关闭 112
  • 8.9 小结 112
  • 第9 章 单元测试 113
  • 9.1 EmbeddedChannel概述 113
  • 9.2 使用EmbeddedChannel测试ChannelHandler 115
  • 9.2.1 测试入站消息 115
  • 9.2.2 测试出站消息 118
  • 9.3 测试异常处理 119
  • 9.4 小结 121
  • 第二部分 编解码器
  • 第10 章 编解码器框架 125
  • 10.1 什么是编解码器 125
  • 10.2 解码器 125
  • 10.2.1 抽象类ByteToMessageDecoder 126
  • 10.2.2 抽象类ReplayingDecoder 127
  • 10.2.3 抽象类MessageToMessageDecoder 128
  • 10.2.4 TooLongFrameException 类 130
  • 10.3 编码器 131
  • 10.3.1 抽象类MessageToByteEncoder 131
  • 10.3.2 抽象类MessageToMessageEncoder 132
  • 10.4 抽象的编解码器类 133
  • 10.4.1 抽象类ByteToMessageCodec 133
  • 10.4.2 抽象类MessageToMessageCodec 134
  • 10.4.3 CombinedChannelDuplexHandler 类 137
  • 10.5 小结 138
  • 第11 章 预置的ChannelHandler和编解码器 139
  • 11.1 通过SSL/TLS 保护Netty 应用程序 139
  • 11.2 构建基于Netty 的HTTP/HTTPS 应用程序 141
  • 11.2.1 HTTP 解码器、编码器和编解码器 141
  • 11.2.2 聚合HTTP 消息 143
  • 11.2.3 HTTP 压缩 144
  • 11.2.4 使用HTTPS 145
  • 11.2.5 WebSocket 146
  • 11.3 空闲的连接和超时 148
  • 11.4 解码基于分隔符的协议和基于长度的协议 150
  • 11.4.1 基于分隔符的协议 150
  • 11.4.2 基于长度的协议 153
  • 11.5 写大型数据 155
  • 11.6 序列化数据 1 57
  • 11.6.1 JDK 序列化 157
  • 11.6.2 使用JBoss Marshalling进行序列化 157
  • 11.6.3 通过Protocol Buffers序列化 159
  • 11.7 小结 160
  • 第三部分 网络协议
  • 第12 章 WebSocket 163
  • 12.1 WebSocket 简介 163
  • 12.2 我们的WebSocket 示例应用程序 164
  • 12.3 添加WebSocket支持 165
  • 12.3.1 处理HTTP 请求 165
  • 12.3.2 处理WebSocket 帧 168
  • 12.3.3 初始化ChannelPipeline 169
  • 12.3.4 引导 171
  • 12.4 测试该应用程序 173
  • 12.5 小结 176
  • 第13章 使用UDP 广播事件 177
  • 13.1 UDP 的基础知识 177
  • 13.2 UDP 广播 178
  • 13.3 UDP 示例应用程序 178
  • 13.4 消息 POJO:LogEvent 179
  • 13.5 编写广播者 180
  • 13.6 编写监视器 185
  • 13.7 运行LogEventBroadcaster 和LogEventMonitor 187
  • 13.8 小结 189
  • 第四部分 案例研究
  • 第14 章 案例研究,第一部分 193
  • 14.1 Droplr—构建移动服务 193
  • 14.1.1 这一切的起因 193
  • 14.1.2 Droplr 是怎样工作的 194
  • 14.1.3 创造一个更加快速的上传体验 194
  • 14.1.4 技术栈 196
  • 14.1.5 性能 199
  • 14.1.6 小结——站在巨人的肩膀上 200
  • 14.2 Firebase—实时的数据同步服务 200
  • 14.2.1 Firebase 的架构 201
  • 14.2.2 长轮询 201
  • 14.2.3 HTTP 1.1 keep-alive和流水线化 204
  • 14.2.4 控制SslHandler 205
  • 14.2.5 Firebase 小结 207
  • 14.3 Urban Airship—构建移动服务 207
  • 14.3.1 移动消息的基础知识 207
  • 14.3.2 第三方递交 208
  • 14.3.3 使用二进制协议的例子 209
  • 14.3.4 直接面向设备的递交 211
  • 14.3.5 Netty 擅长管理大量的并发连接 212
  • 14.3.6 Urban Airship 小结——跨越防火墙边界 213
  • 14.4 小结 214
  • 第15 章 案例研究,第二部分 215
  • 15.1 Netty 在Facebook 的使用:Nifty 和Swift 215
  • 15.1.1 什么是Thrift 215
  • 15.1.2 使用Netty 改善Java Thrift 的现状 216
  • 15.1.3 Nifty 服务器的设计 217
  • 15.1.4 Nifty 异步客户端的设计 220
  • 15.1.5 Swift:一种更快的构建Java Thrift 服务的方式 221
  • 15.1.6 结果 221
  • 15.1.7 Facebook 小结 224
  • 15.2 Netty 在Twitter的使用:Finagle 224
  • 15.2.1 Twitter 成长的烦恼 224
  • 15.2.2 Finagle 的诞生 224
  • 15.2.3 Finagle 是如何工作的 225
  • 15.2.4 Finagle 的抽象 230
  • 15.2.5 故障管理 231
  • 15.2.6 组合服务 232
  • 15.2.7 未来:Netty 232
  • 15.2.8 Twitter 小结 233
  • 15.3 小结 233
  • 附录 Maven 介绍 234

资源下载

资源下载地址1:https://box.lenovo.com/l/j56oyz

相关资源

网友留言