由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
正版 Netty原理剖析与实战 傅健著 人民邮电出版社 9787115567635
¥ ×1
目 录
第一部分 源码解析与实战入门
第1章 Netty初印象 2
1.1 Netty的定义 2
1.2 Netty并非万能 3
1.3 Netty程序是什么样的 4
1.3.1 HTTP服务器构建案例 4
1.3.2 自定义TCP服务器案例 6
1.4 为什么不直接基于JDK NIO编程 8
1.4.1 Netty做得更多 8
1.4.2 Netty做得更好 9
1.4.3 基于JDK NIO实现难度太大 11
1.5 Netty相比同类框架的优势 13
1.5.1 Apache的Mina 13
1.5.2 Sun的Grizzly 13
1.5.3 Apple的Swift NIO和ACE等 14
1.5.4 Cindy和其他框架 14
1.6 Netty的过去、现状与发展趋势 14
1.6.1 Netty的过去 15
1.6.2 Netty的现状 16
1.6.3 Netty的发展趋势 18
第2章 准备工作 19
2.1 环境准备 19
2.1.1 准备源码阅读环境 19
2.1.2 准备实战案例环境 20
2.2 Netty代码编译及常见问题 20
2.2.1 常见编译问题一 20
2.2.2 常见编译问题二 22
2.3 Netty代码结构速览 24
2.4 本书借鉴的常用开源软件 26
2.4.1 Cassandra 26
2.4.2 Dubbo 26
2.4.3 Hadoop 27
2.4.4 Lettuce 27
2.4.5 GRPC 28
2.4.6 WebFlux 28
2.5 编写网络应用程序的基本步骤 29
2.5.1 完成代码编写 29
2.5.2 复查代码 30
2.5.3 “临门一脚” 31
2.5.4 上线及反馈 31
2.6 实战案例介绍 32
第3章 数据编码 34
3.1 网络编程中为什么要进行数据
编码 34
3.2 常见的数据编码方式及选择要点 35
3.2.1 常见的数据编码方式 36
3.2.2 数据编码选择要点 39
3.3 基于源码解析Netty对常见数据
编解码的支持 42
3.3.1 解析编解码支持的原理 42
3.3.2 解析典型Netty数据编解码的
实现 44
3.4 常见开源软件对编解码的使用 47
3.4.1 Cassandra 47
3.4.2 Dubbo 48
3.5 为实战案例选择数据编解码方案 51
3.5.1 定义JSON编解码方法 51
3.5.2 提供消息的完整编解码实现 52
3.5.3 实现Netty的编解码处理程序 53
3.6 常见疑问和实战易错点解析 54
3.6.1 常见疑问解析 54
3.6.2 常见实战易错点解析 56
第4章 封帧 58
4.1 网络编程为什么需要进行消息的
定界 58
4.1.1 TCP 58
4.1.2 UDP 60
4.2 常见的消息定界方式 61
4.2.1 TCP短连接方式 61
4.2.2 固定长度方式 61
4.2.3 封帧 62
4.2.4 其他方式 63
4.3 通过源码解析Netty如何支持
封帧 63
4.3.1 追加数据 65
4.3.2 尝试解析出消息对象 65
4.3.3 传递解析出的消息对象 66
4.4 常见开源软件如何封帧 67
4.4.1 Dubbo的帧结构 67
4.4.2 Cassandra的帧结构 67
4.4.3 Hadoop的帧结构 67
4.5 为实战案例定义封帧方式 69
4.6 常见疑问和实战易错点解析 70
4.6.1 常见疑问解析 70
4.6.2 常见实战易错点解析 72
第5章 网络编程模式 74
5.1 网络编程的3种模式 74
5.2 网络编程模式的选择要点 75
5.3 基于源码解析Netty对网络编程
模式的支持 76
5.3.1 Netty对网络编程模式的支持
情况 76
5.3.2 Netty对网络编程模式的实现
要点 78
5.4 常见开源软件是如何支持网络
编程模式的 81
5.4.1 Lettuce 81
5.4.2 Cassandra 83
5.5 为实战案例选择网络编程模式 84
5.6 常见疑问和实战易错点解析 84
5.6.1 常见疑问解析 84
5.6.2 常见实战易错点解析 86
第6章 线程模型 89
6.1 NIO的3种Reactor模式 89
6.1.1 Reactor单线程模式 91
6.1.2 Reactor多线程模式 92
6.1.3 Reactor主从多线程模式 92
6.2 源码解析Netty对3种Reactor
模式的支持 93
6.2.1 如何在Netty中使用这3种
Reactor模式 93
6.2.2 Netty在内部是如何支持Reactor
模式的 94
6.3 Netty线程模型的可优化点 98
6.4 常见开源软件是如何使用Reactor
模式的 101
6.4.1 Cassandra 101
6.4.2 Dubbo 102
6.4.3 Hadoop 105
6.5 为实战案例选择和实现线程模型 106
6.5.1 使用Reactor主从多线程模式 106
6.5.2 使用独立线程池 106
6.6 常见疑问和实战易错点解析 110
6.6.1 常见疑问解析 110
6.6.2 常见实战易错点解析 114
第二部分 源码解析与实战进阶
第7章 基于实战案例剖析Netty的
核心流程 118
7.1 剖析启动服务源码及技巧 119
7.1.1 主线 119
7.1.2 知识点 122
7.2 剖析构建连接源码及技巧 124
7.2.1 主线 124
7.2.2 知识点 127
7.3 剖析读取数据源码及技巧 127
7.3.1 主线 128
7.3.2 知识点 130
7.4 剖析处理业务源码及技巧 131
7.4.1 主线 131
7.4.2 知识点 134
7.5 剖析发送数据源码及技巧 135
7.5.1 主线 135
7.5.2 知识点 141
7.6 剖析关闭连接源码及技巧 141
7.6.1 主线 141
7.6.2 知识点 143
7.7 剖析关闭服务源码及技巧 143
7.7.1 主线 144
7.7.2 知识点 148
第8章 参数调整 149
8.1 参数调整概览 149
8.1.1 操作系统参数调整 149
8.1.2 Netty系统参数调整 150
8.1.3 Netty非系统参数调整 153
8.2 常见开源软件对Netty参数进行的
设置 155
8.3 调整案例程序的各个参数 156
8.4 常见疑问分析 156
8.4.1 使用option()和childOption()
方法设置参数的区别 157
8.4.2 参数ALLOW_HALF_CLOSURE
的用途与使用场景 159
第9章 诊断性优化 161
9.1 Netty日志优化 161
9.1.1 源码解析 161
9.1.2 开源案例 164
9.1.3 实战案例 166
9.2 Netty的关键诊断信息及可视化
方案 169
9.2.1 Netty的关键诊断信息 170
9.2.2 诊断信息的可视化方案 171
9.2.3 实战案例 173
9.3 Netty内存泄漏检测 176
9.3.1 检测原理 176
9.3.2 检测的几个关键点 180
9.3.3 实战案例 182
9.4 常见疑问和实战易错点解析 183
9.4.1 常见疑问解析 184
9.4.2 常见实战易错点解析 188
第10章 性能优化 189
10.1 优化写数据的性能 189
10.1.1 源码解析 190
10.1.2 开源案例 193
10.1.3 实战案例 197
10.2 使用Native NIO 198
10.2.1 源码解析 198
10.2.2 实战案例 202
10.3 常见疑问分析 203
10.3.1 Native库的加载顺序 203
10.3.2 check volume for noexec flag的
含义 205
第11章 系统增强 207
11.1 Netty高低水位线保护 207
11.1.1 源码解析 207
11.1.2 开源案例 209
11.1.3 实战案例 210
11.2 Netty流量控制保护 211
11.2.1 源码解析 212
11.2.2 实战案例 216
11.3 Netty空闲监测防护 218
11.3.1 源码解析 220
11.3.2 开源案例 224
11.3.3 实战案例 225
11.4 常见疑问解析 228
11.4.1 HTTP Keep-Alive和keepalive
之间的区别 228
11.4.2 IdleStateHandler中observeOutput
的功能 228
11.4.3 FileRegion的发送受高低水位线
控制吗 230
第12章 安全性提升 233
12.1 黑白名单 233
12.1.1 源码分析 234
12.1.2 实战案例 239
12.1.3 业界案例 241
12.2 自定义授权 243
12.2.1 实战案例 244
12.2.2 业界案例 247
12.3 SSL加密 249
12.3.1 理解SSL的本质 249
12.3.2 源码解析 251
12.3.3 实战案例 254
12.3.4 业界案例 256
12.4 常见疑问解析 258
12.4.1 如何设置IpSubnetFilterRule的
ipAddress 258
12.4.2 如何精确拦截连接地址 259
12.4.3 我们可以在创建连接时进行
连接控制吗 259
12.4.4 OptionalSslHandler的用途和
实现方法 260
第13章 可用性提升 262
13.1 使用响应分发进行优化 262
13.1.1 改进需求分析 262
13.1.2 改进策略的分析并应用 263
13.2 使用代理技术进行优化 266
13.2.1 改进需求分析 267
13.2.2 改进策略的分析及应用 269
13.3 使用响应式编程进行优化 271
13.3.1 改进需求分析 271
13.3.2 改进策略的分析及应用 272
第三部分 拓展
第14章 基于Netty构建UDP应用 276
14.1 解析Netty对UDP编程提供的
支持 276
14.2 服务器实现 279
14.2.1 实现请求解码器 279
14.2.2 实现业务处理程序 280
14.2.3 实现响应编码器 281
14.2.4 构建UDP服务器 281
14.3 客户端实现 282
14.3.1 基于Netty的NIO客户端 282
14.3.2 基于Netty的OIO客户端 285
14.3.3 基于JDK的客户端 285
14.4 扩展知识 286
14.4.1 目标地址的两种常见设置
方式 286
14.4.2 UDP包的发送方式 288
14.4.3 UDP广播及支持 290
14.5 常见易错点 290
14.5.1 误用JDK的DatagramPacket 290
14.5.2 误用ctx.channel().remoteAddress()
作为目标地址 292
14.5.3 发送的数据内容过多 294
14.5.4 误解客户端执行绑定操作的
意义 296
第15章 基于Netty构建HTTP应用 298
15.1 解析Netty是如何支持HTTP
服务的 298
15.1.1 编解码器HttpServerCodec 299
15.1.2 ExpectContinue处理程序HttpServer-
ExpectContinueHandler 302
15.1.3 请求合并器
HttpObjectAggregator 305
15.1.4 其他常用的HTTP处理程序 313
15.2 开源软件如何使用Netty构建
HTTP服务 314
15.2.1 Hadoop如何使用Netty构建
Web Hdfs 314
15.2.2 WebFlux如何基于Netty构建
Web服务 319
15.3 将案例程序改造为HTTP
应用 324
15.3.1 完成业务处理程序 325
15.3.2 组合处理程序以搭建HTTP
服务器 326
15.4 常见疑问解析 327
15.4.1 HttpServerExpectContinueHandler
和HttpObjectAggregator能否
共存 327
15.4.2 何时需要写LastHttpContent 328
15.4.3 HttpChunkedInput必须与
transfer-encoding:chunked
绑定在一起吗 331
15.4.4 其他流行框架如何根据请求
定位到处理位置 332
第16章 Netty对文件应用的支持 334
16.1 FileRegion 334
16.1.1 Netty如何支持FileRegion 335
16.1.2 解析FileRegion的劣势 337
16.2 ChunkedFile/ChunkedNioFile 338
16.2.1 比较ChunkedFile与
ChunkedNioFile 338
16.2.2 解析ChunkedWriteHandler的
实现 339
16.3 Netty文件应用案例解析 342
第17章 Netty的另类特性 344
17.1 Netty对虚拟机内管道提供的
支持 344
17.1.1 解析JDK自带的管道技术 344
17.1.2 如何使用Netty的虚拟机内
管道 347
17.1.3 基于源码解析Netty的虚拟机内
管道 349
17.2 Netty对UNIX域套接字提供的
支持 353
17.2.1 如何使用Netty的域套接字 353
17.2.2 基于源码解析Netty的域
套接字 355
17.3 Netty对JDK的ThreadLocal所做的
优化 359
17.3.1 在Netty中如何使用
FastThreadLocal 359
17.3.2 基于源码解析ThreadLocal的
性能缺陷 360
17.3.3 基于源码解析FastThreadLocal
所做的优化 362
17.4 Netty对JDK的Timer所做的
优化 365
17.4.1 在Netty中如何使用
HashedWheelTimer 365
17.4.2 基于源码解析Timer的性能
缺陷 366
17.4.3 基于源码解析HashedWheelTimer
所做的优化 368
第18章 Netty编程思想 372
18.1 注解的使用 372
18.1.1 @UnstableApi 373
18.1.2 @Skip 373
18.1.3 @Sharable 374
18.1.4 @SuppressJava6Requirement 375
18.1.5 @SuppressForbidden 377
18.2 内存的使用 380
18.2.1 减小对象本身 380
18.2.2 对分配的内存进行预估 381
18.2.3 采用零复制 382
18.2.4 使用堆外内存 384
18.2.5 使用内存池 385
18.3 多线程并发 386
18.3.1 注意锁的对象和范围 386
18.3.2 注意锁的对象本身的大小 386
18.3.3 注意锁的速度 387
18.3.4 为不同场景选择不同的
并发类 387
18.3.5 衡量好锁的价值 388
18.4 开发流程 389
18.4.1 建立需求 389
18.4.2 编写代码 390
18.4.3 平台校验 391
18.4.4 人工审阅 393
18.4.5 出包管理 393
18.5 代码规范 394
18.5.1 遵循代码风格 394
18.5.2 易于使用 395
18.5.3 小步前进、逐步修改 395
18.5.4 符合提交规范 396
附录A Netty TCP通信支持的实现 399
附录B 一些重要术语的翻译 400
傅健,认证网络工程师、信息系统项目管理师,思科(中国)研发中心软件工程师。拥有十年以上Java研发经验,专注于高性能平台服务器的开发,是Netty、Spring Data、Influxdb-java、Jenkins等开源项目的贡献者,著有《微服务之道:度量驱动开发》。
1.基于新的Netty版本,分析Netty 300多处关键代码,帮助读者深入理解Netty的实现; 2.Netty项目贡献者倾力写作,Netty创办人Trustin Lee等多位业内人士写序推荐; 3.详细介绍7个扩展功能和一个综合案例,使读者掌握安全、流量控制、性能优化等知识; 4.重点讲解Netty开发过程中40多个常见疑难点,拓展读者的知识面,增强实战技能。
As a developer who contributed some important patches to Netty, Jian in this book not only explains how to write a very basic network application with Netty but also dives into a great detail to help you write a decent network application, such as how to avoid the common pitfalls you'll encounter when you work with Netty and even how a certain Netty feature is implemented internally. I recommend this book for anyone who is interested in network application programming in general as well as Netty itself. —Trustin Lee,Netty、Armeria创办人 Netty 是广为人知的 Java 网络编程工具。本书兼顾了初学者以及进阶者的需要,从NIO的机制到如何使用Netty编写基本的网络通信程序,再到如何解析Netty核心代码,探讨了Netty编程中的很多技术细节。另外,本书结合实际案例让读者进一步了解如何使用Netty实现多种网络应用。通读本书,读者可以快速领悟到使用Netty编写网络应用的精髓。 —姜宁,华为开源能力中心技术专业人士、红帽软件公司前软件工程师 本书从TCP/UDP到HTTP,从线程模型到Reactor反应堆模式,从架构原理到源代码分析,从参数调优到常见问题诊断,从高性能服务到Web安全,详细地介绍了Netty的方方面面。 —陶辉,Nginx专业人士,智链达CTO,腾讯云MVP,阿里巴巴前不错技术专 家 本书作者多年来给开源项目Netty贡献了不少代码。本书基于作者多年的编程经验,结合案例,从工程化要求的角度一步一步讲解如何基于Netty构建自己的平台,并深入分析主流的开源平台Cassandra、Hadoop、Dubbo等是如何应用Netty的,这样让我们学以致用,在工作中直接应用从本书中所学到的东西。 —朱少民,同济大学特聘教授、《全程软件测试》《敏捷测试:以持续测试促进持续交付》作者 Netty于2004年推出,是一个设计相当优雅的高性能网络编程框架,这么多年深受工程师的喜爱。洞悉Netty的设计原理和实践精华将有助于开发人员提升网络编程水平和中间件设计水平。本书结合Netty源码解构及实际案例运用,将与通信相关的知识逐一呈现,很好值得阅读。 —冶秀刚,阿里巴巴架构师 作者在工作中一步一步把Netty应用在公司的许多关键服务的通信层上,这些服务的稳定、效率高都得益于Netty本身的强大与作者对Netty的娴熟。本书不仅汇聚了作者多年的实践经验,还展示了业界的开源案例中应用Netty的经验。本书可以帮助初学者深入理解和应用好Netty。 —张颐武,思科(中国)研发中心技术主管、软件工程师 几年前,我在设计一个端到端的DevOps自动化软件开发框架时,关于使用的关键组件,在国内几乎找不到参考资料,本书作者帮助我知其然,知其所以然。本书融合了作者十余年一线开发经验。作者善于将复杂问题简单化,本书有助于读者轻松掌握Netty。 —Cara Chen,阿联酋G42集团产品及优选合作伙伴关系部副总监
本书旨在介绍Netty框架的原理和应用。本书首先介绍了什么是Netty,Netty的发展史,创建Netty应用程序所必备的基础知识,然后从参数调整、诊断性优化、性能优化等方面对Netty进行源码解析并讨论如何完善案例程序,最后讲述UDP应用、HTTP应用、文件应用和Netty编程思想。
本书适合有一定Java基础的架构师、设计师、开发工程师、测试工程师,以及对Netty感兴趣的相关人士阅读。
1.基于新的Netty版本,分析Netty 300多处关键代码,帮助读者深入理解Netty的实现; 2.Netty项目贡献者倾力写作,Netty创办人Trustin Lee等多位业内人士写序推荐; 3.详细介绍7个扩展功能和一个综合案例,使读者掌握安全、流量控制、性能优化等知识; 4.重点讲解Netty开发过程中40多个常见疑难点,拓展读者的知识面,增强实战技能。
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格