t基础篇走进Java NIO
t第1 章Java 的I/O 演进之路.2
t1.1 I/O 基础入门...............3
t1.1.1 Linux 网络I/O 模型简介.......3
t1.1.2 I/O 多路复用技术.................6
t1.2 Java 的I/O 演进..........8
t1.3 总结............................
10
t第2 章NIO 入门.................... 11
t2.1 传统的BIO 编程....... 11
t2.1.1 BIO 通信模型图..................
12
t2.1.2 同步阻塞式I/O 创建的TimeServer 源码分析.............
13
t2.1.3 同步阻塞式I/O 创建的TimeClient 源码分析..........
16
t2.2 伪异步I/O 编程........ 18
t2.2.1 伪异步I/O 模型图.............. 19
t2.2.2 伪异步I/O 创建的TimeServer 源码分析..... 19
t2.2.3 伪异步I/O 弊端分析........... 21
t2.3 NIO 编程....................
24
t2.3.1 NIO 类库简介.. 24
t2.3.2 NIO 服务端序列图..............
28
t2.3.3 NIO 创建的TimeServer 源码分析................ 30
t2.3.4 NIO 客户端序列图..............
36
t2.3.5 NIO 创建的TimeClient 源码分析................ 39
t2.4 AIO 编程....................
45
t2.4.1 AIO 创建的TimeServer 源码分析................ 46
t2.4.2 AIO 创建的TimeClient 源码分析................ 51
t2.4.3 AIO 版本时间服务器运行结果....................
56
t2.5 4 种I/O 的对比......... 58
t2.5.1 概念澄清.......... 58
t2.5.2 不同I/O 模型对比.............. 59
t2.6 选择Netty 的理由..... 60
t2.6.1 不选择Java 原生NIO 编程的原因............... 61
t2.6.2 为什么选择Netty
................ 62
t2.7 总结............................
63
t入门篇 Netty NIO 开发指南
t第3 章Netty 入门应用.......... 66
t3.1 Netty 开发环境的搭建................
66
t3.1.1 Netty 的软件包........... 67
t3.1.2 搭建Netty 应用工程........... 67
t3.2 Netty 服务端开发...... 68
t3.3 Netty 客户端开发...... 73
t3.4 运行和调试................ 76
t3.4.1 服务端和客户端的运行...... 76
t3.4.2 打包和部署...... 77
t3.5 总结............................
77
t第4 章TCP 粘包/拆包问题的解决之道...... 79
t4.1 TCP 粘包/拆包.......... 79
t4.1.1 TCP 粘包/拆包问题说明..... 80
t4.1.2 TCP 粘包/拆包发生的原因....... 80
t4.1.3 粘包问题的解决策略.......... 81
t4.2 未考虑TCP 粘包导致功能异常案例................. 82
t4.2.1 TimeServer 的改造..............
82
t4.2.2 TimeClient 的改造...............
83
t4.2.3 运行结果.......... 84
t4.3 利用LineBasedFrameDecoder 解决TCP 粘包问题................ 85
t4.3.1 支持TCP 粘包的TimeServer ....................... 86
t4.3.2 支持TCP 粘包的TimeClient........................ 88
t4.3.3 运行支持TCP 粘包的时间服务器程序........ 90
t4.3.4 LineBasedFrameDecoder 和StringDecoder 的原理分析...........
91
t4.4 总结............................
92
t第5 章分隔符和定长解码器的应用...... 93
t5.1 DelimiterBasedFrameDecoder 应用开发............. 94
t5.1.1 DelimiterBasedFrameDecoder 服务端开发.... 94
t5.1.2 DelimiterBasedFrameDecoder 客户端开发.... 97
t5.1.3 运行DelimiterBasedFrameDecoder 服务端和客户端............... 99
t5.2 FixedLengthFrameDecoder 应用开发............... 101
t5.2.1 FixedLengthFrameDecoder 服务端开发...... 101
t5.2.2 利用telnet 命令行测试EchoServer 服务端......103
t5.3 总结..........................
104
t中级篇 Netty 编解码开发指南
t第6 章编解码技术.............. 106
t6.1 Java 序列化的缺点 ......
107
t6.1.1 无法跨语言.... 107
t6.1.2 序列化后的码流太大........ 107
t6.1.3 序列化性能太低................
110
t6.2 业界主流的编解码框架............
113
t6.2.1 Google 的Protobuf 介绍.... 113
t6.2.2 Facebook 的Thrift 介绍.... 115
t6.2.3 JBoss Marshalling 介绍..... 116
t6.3 总结..........................
117
t第7 章MessagePack 编解码............... 118
t7.1 MessagePack 介绍... 118
t7.1.1 MessagePack 多语言支持.. 119
t7.1.2 MessagePack Java API 介绍........................ 119
t7.1.3 MessagePack 开发包. 120
t7.2 MessagePack 编码器和解码器开发.................
120
t7.2.1 MessagePack 编码器开发....... 120
t7.2.2 MessagePack 解码器开发 ...... 121
t7.2.3 功能测试........ 121
t7.3 粘包/半包支持......... 124
t7.4 总结..........................
127
t第8 章Google Protobuf 编解码.......... 128
t8.1 Protobuf 的入门....... 129
t8.1.1 Protobuf 开发环境搭建..... 129
t8.1.2 Protobuf 编解码开发.........
131
t8.1.3 运行Protobuf 例程............ 133
t8.2 Netty 的Protobuf 服务端开发.. 133
t8.2.1 Protobuf 版本的图书订购服务端开发........
134
t8.2.2 Protobuf 版本的图书订购客户端开发........
136
t8.2.3 Protobuf 版本的图书订购程序功能测试....
139
t8.3 Protobuf 的使用注意事项.........
140
t8.4 总结..........................
142
t第9 章JBoss Marshalling 编解码....... 143
t9.1 Marshalling 开发环境准备........
143
t9.2 Netty 的Marshalling 服务端开发..................... 144
t9.3 Netty 的Marshalling 客户端开发..................... 147
t9.4 运行Marshalling 客户端和服务端例程........... 149
t9.5 总结..........................
150
t篇 Netty 多协议开发和应用
t第10 章HTTP 协议开发应用............... 154
t10.1 HTTP 协议介绍..... 155
t10.1.1 HTTP 协议的URL
.......... 155
t10.1.2 HTTP 请求消息(HttpRequest).............. 155
t10.1.3 HTTP 响应消息(HttpResponse)........... 158
t10.2 Netty HTTP 服务端入门开发.......
159
t10.2.1 HTTP 服务端例程场景描述.....................
160
t10.2.2 HTTP 服务端开发...........
160
t10.2.3 Netty HTTP 文件服务器例程运行结果....
166
t10.3 Netty HTTP XML 协议栈开发.......................
170
t10.3.1 开发场景介绍.................
171
t10.3.2 HTTP XML 协议栈设计.......174
t10.3.3 的XML 绑定框架JiBx ..................... 175
t10.3.4 HTTP XML 编解码框架开发..................
183
t10.3.5 HTTP XML 协议栈测试....... 199
t10.3.6 小结.............
201
t10.4 总结........................
202
t第11 章WebSocket 协议开发............. 203
t11.1 HTTP 协议的弊端....... 204
t11.2 WebSocket 入门..... 204
t11.2.1 WebSocket 背景...............
205
t11.2.2 WebSocket 连接建立....... 206
t11.2.3 WebSocket 生命周期....... 207
t11.2.4 WebSocket 连接关闭....... 208
t11.3 Netty WebSocket 协议开发..... 209
t11.3.1 WebSocket 服务端功能介绍.....................
209
t11.3.2 WebSocket 服务端开发.... 210
t11.3.3 运行WebSocket 服务端... 218
t11.4 总结........................
219
t第12 章私有协议栈开发.... 221
t12.1 私有协议介绍........ 221
t12.2 Netty 协议栈功能设计............
223
t12.2.1 网络拓扑图.. 223
t12.2.2 协议栈功能描述..............
224
t12.2.3 通信模型...... 224
t12.2.4 消息定义...... 225
t12.2.5 Netty 协议支持的字段类型......................
226
t12.2.6 Netty 协议的编解码规范. 227
t12.2.7 链路的建立.. 229
t12.2.8 链路的关闭.. 230
t12.2.9 可靠性设计.. 230
t12.2.10 安全性设计 232
t12.2.11 可扩展性设计................
232
t12.3 Netty 协议栈开发.. 233
t12.3.1 数据结构定义.................
233
t12.3.2 消息编解码.. 237
t12.3.3 握手和安全认证..............
241
t12.3.4 心跳检测机制.................
245
t12.3.5 断连重连...... 248
t12.3.6 客户端代码.. 249
t12.3.7 服务端代码.. 251
t12.4 运行协议栈............ 252
t12.4.1 正常场景...... 252
t12.4.2 异常场景:服务端宕机重启....................
253
t12.4.3 异常场景:客户端宕机重启....................
256
t12.5 总结........................
256
t第13 章服务端创建............ 258
t13.1 原生NIO 类库的复杂性......... 259
t13.2 Netty 服务端创建源码分析....
259
t13.2.1 Netty 服务端创建时序图. 260
t13.2.2 Netty 服务端创建源码分析......................
263
t13.3 客户端接入源码分析..............
272
t13.4 总结........................
275
t第14 章客户端创建............ 276
t14.1 Netty 客户端创建流程分析....
276
t14.2.1 Netty 客户端创建时序图. 276
t14.2.2 Netty 客户端创建流程分析......................
277
t14.2 Netty 客户端创建源码分析....
278
t14.2.1 客户端连接辅助类Bootstrap....................
278
t14.2.2 客户端连接操作..............
281
t14.2.3 异步连接结果通知..........
283
t14.2.4 客户端连接超时机制......
284
t14.3 总结........................
286
t源码分析篇 Netty 功能介绍和源码分析
t第15 章ByteBuf 和相关辅助类........... 288
t15.1 ByteBuf 功能说明. 288
t15.1.1 ByteBuf 的工作原理........
289
t15.1.2 ByteBuf 的功能介绍........
294
t15.2 ByteBuf 源码分析. 308
t15.2.1 ByteBuf 的主要类继承关系.....................
309
t15.2.2 AbstractByteBuf 源码分析........................ 310
t15.2.3 AbstractReferenceCountedByteBuf 源码分析.................. 319
t15.2.4 UnpooledHeapByteBuf 源码分析.............. 321
t15.2.5 PooledByteBuf 内存池原理分析...............
326
t15.2.6 PooledDirectByteBuf 源码分析................. 329
t15.3 ByteBuf 相关的辅助类功能介绍....................
332
t15.3.1 ByteBufHolder................. 332
t15.3.2 ByteBufAllocator ............. 333
t15.3.3 CompositeByteBuf ........... 334
t15.3.4 ByteBufUtil .. 336
t15.4 总结........................
337
t第16 章Channel 和Unsafe ................. 338
t16.1 Channel 功能说明. 338
t16.1.1 Channel 的工作原理........
339
t16.1.2 Channel 的功能介绍........
340
t16.2 Channel 源码分析. 343
t16.2.1 Channel 的主要继承关系类图..................
343
t16.2.2 AbstractChannel 源码分析........................ 344
t16.2.3 AbstractNioChannel 源码分析.................. 347
t16.2.4 AbstractNioByteChannel 源码分析........... 350
t16.2.5 AbstractNioMessageChannel 源码分析..... 353
t16.2.6 AbstractNioMessageServerChannel 源码分析.............. 354
t16.2.7 NioServerSocketChannel 源码分析........... 355
t16.2.8 NioSocketChannel 源码分析..................... 358
t16.3 Unsafe 功能说明... 364
t16.4 Unsafe 源码分析... 365
t16.4.1 Unsafe 继承关系类图...... 365
t16.4.2 AbstractUnsafe 源码分析. 366
t16.4.3 AbstractNioUnsafe 源码分析.................... 375
t16.4.4 NioByteUnsafe 源码分析. 379
t16.5 总结........................
387
t第17 章ChannelPipeline 和ChannelHandler........... 388
t17.1 ChannelPipeline 功能说明....... 389
t17.1.1 ChannelPipeline 的事件处理.................... 389
t17.1.2 自定义拦截器.................
391
t17.1.3 构建pipeline 392
t17.1.4 ChannelPipeline 的主要特性.................... 393
t17.2 ChannelPipeline 源码分析....... 393
t17.2.1 ChannelPipeline 的类继承关系图............. 393
t17.2.2 ChannelPipeline 对ChannelHandler 的管理...........
393
t17.2.3 ChannelPipeline 的inbound 事件..............
396
t17.2.4 ChannelPipeline 的outbound 事件............
397
t17.3 ChannelHandler 功能说明....... 398
t17.3.1 ChannelHandlerAdapter 功能说明............ 399
t17.3.2 ByteToMessageDecoder 功能说明............ 399
t17.3.3 MessageToMessageDecoder 功能说明...... 400
t17.3.4 LengthFieldBasedFrameDecoder 功能说明............... 400
t17.3.5 MessageToByteEncoder 功能说明............. 404
t17.3.6 MessageToMess
林锋让我给这本新书写个,不胜荣幸。我和林锋接触时间不长,已经感受到了他对技术的热爱和不尽探索。这种热爱来自于内心的驱动,不掺杂任何杂质,我认为他是我见到的为数不多的技术热爱者。也正是因为这种热爱,促使林锋花费了很多业余时间,完成了这样一本对Netty的编程指南。相信读者在阅读此书时,在感叹内容之丰富详实的同时,也会深深感受到林锋对所著技术的热爱。我想这就是我们通过书中文字相遇的初衷吧。当我们的技术能够日益精进,达到专业的水准,生产力会成倍甚至指数级地增长。希望读者能够通过阅读此书获取这种精进的力量。
——IBM中国开发实验室开发总监 黄省江
Netty的之处在于它是一个高性能、异步事件驱动的NIO框架,目前很多的开源框架开始将底层的通信框架切换到Netty,如Hadoop、Storm等,Facebook的后台也即将启用这一框架。希望这本书的面市能够对Netty在国内的发展起到推动作用。
——Facebook工程师 覃超
中国*的阅读类应用——中国移动手机阅读基地,每天承受着5~7.5亿PV的访问量,为了实现业务的弹性,华为Digital SDP产品承接了对其后台进行微服务重构的工作,一个PV背后的后台原子接口访问达到几十乃至上百次,还要保证90%的页面访问在500ms内响应,在这样的压力下,的通信机制尤其重要,林锋基于Netty构建的对等通信虚拟总线很好地承载了这一需求。平均通信时延0.71ms,80%以上的通信时延都保持在1ms以下,其余通信时延都低于3ms,在响应速度这一重要指标上不仅满足了客户的要求,而且还带来了系统可伸缩性和弹性上的巨大提升,林锋在本书中阐释的Netty应用上的经验和技巧*值得期待。
——华为Digital SDP席架构师 王慷
几年,Netty社区的发展如火如荼,无论是大数据领域的演进,还是微服务架构的流行,都需要的分布式通信机制作为基本支撑,Netty凭借优异的性能、灵活的扩展性得到了广泛的应用。林锋兄曾将自己在NIO领域的积累以博文的形式共享,得到了Java社区的热烈响应,他对NIO领域的积累和见解令人敬佩。本次升级更新后的第2版,相信会有更多新鲜和实用的知识增加进来,毫无疑问,它会成为学习高性能NIO的必备图书。
——IT图书译者、InfoQ编辑 张卫滨
设计开发基于异步编程模型的高性能服务器,除了理解和熟练应用NIO等这些Java层面的基础知识之外,能够驾驭的异步通信框架也是重要的,Netty无疑是Java领域得学习和研究的异步事件驱动的NIO框架。作者有着多年的NIO开发和运维经验,本书浓缩了作者多年实战经验,给对Netty技术感兴趣、想研究的攻城狮阅读!
——蚂蚁金服基础技术部JVM Architect 李三红
Netty是一个令人惊讶的项目,在短短几年内成为众多Java高并发异步通信的*框架。但目前国内资料极少并缺乏系统性,而李兄的这本系统介绍Netty开发和原理的书籍,很地填补了这个空白。国内的技术人员对Java NIO和Netty的理解多一些,也就意味着国内整体网络编程技术的进步。本书条理清晰,对技术的阐述循序渐进,是一本难得的Netty学习教材,有志青年仔细学习研究本书,共同把NIO异步通信编程推向一个新高度。
——JBoss应用服务器核心开发组成员 张建锋
《Netty指南》是本难得的循序渐进地介绍Java NIO到Netty演变历程的好书,能让读者身临其境地明晓通信开发中的各种问题场景和解决办法,更更合理地开发IPC通信程序。
——苏宁易购架构师 吴杰
1、Hadoop、Storm、Spark、Facebook、Twitter、Ali baba都在使用Java高性能NIO通信框架Netty,本书告诉你Why,通过本书你可以全面、系统地理解Netty 架构设计理念,以及异步NIO 编程。1、Hadoop、Storm、Spark、Facebook、Twitter、Ali baba都在使用Java高性能NIO通信框架Netty,本书告诉你Why,通过本书你可以全面、系统地理解Netty 架构设计理念,以及异步NIO 编程。
2、本书作者为一线专家,在产品中广泛应用了Netty等NIO框架,具有丰富的多年实践经验,这就使得本书内容带有很强的实践性,让你更全面快速掌握Java高并发异步通信的优先选择 框架——Netty的用法。
3、本书第1版出版后受到业界的一致,应读者的要求,第2版增加了MessagePack 编解码、服务端创建、客户端创建、高性能之道、可靠性、安全性等内容,内容更精彩。
Netty是什么?使用Netty能够做什么?为什么要从传统的Socket开发切换到NIO进行编程?为什么不直接基于JDK的NIO类库编程而选择Netty?如何全面系统地掌握Netty进行NettyNIO开发、Netty编解码开发、Netty多协议开发?如何通过对Netty源码的学习获得更深入地知识?掌握了Netty后,如何将其应用到实际架构中?Netty工程师的就业前景和可涉足的行业是怎样的?本书都会一一解答。
购买:
《》
《》
《》
《》
评论晒单