• Netty原理剖析与实战 9787115567635
  • Netty原理剖析与实战 9787115567635
  • Netty原理剖析与实战 9787115567635
  • Netty原理剖析与实战 9787115567635
  • Netty原理剖析与实战 9787115567635
  • Netty原理剖析与实战 9787115567635
21年品牌 40万+商家 超1.5亿件商品

Netty原理剖析与实战 9787115567635

全新正版 可开票 支持7天无理由,不清楚的请咨询客服。

89.19 7.4折 119.8 全新

库存2件

浙江嘉兴
认证卖家担保交易快速发货售后保障

作者傅健

出版社人民邮电

ISBN9787115567635

出版时间2021-11

装帧平装

开本其他

定价119.8元

货号31285170

上书时间2024-01-24

倒爷图书专营店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
商品简介

本书旨在介绍Netty框架的原理和应用。本书首先介绍了什么是Netty,Netty的发展史,创建Netty应用程序所的基础知识,然后从参数调整、诊断性优化、性能优化等方面对Netty进行源码解析并讨论如何完善案例程序,后讲述UDP应用、HTTP应用、文件应用和Netty编程思想。

本书适合有一定Java基础的架构师、设计师、开发工程师、测试工程师,以及对Netty感兴趣的相关人士阅读。



作者简介
傅健,认证网络工程师、信息系统项目管理师,思科(中国)研发中心软件工程师。拥有十年以上Java研发经验,专注于高性能平台服务器的开发,是Netty、SpringData、Influxdb-java、Jenkins等开源项目的贡献者,著有《微服务之道:度量驱动开发》。

目录
目 录

第一部分 源码解析与实战入门
第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的Mina13
1.5.2 Sun的Grizzly13
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 Cassandra26
2.4.2 Dubbo26
2.4.3 Hadoop27
2.4.4 Lettuce27
2.4.5 GRPC28
2.4.6 WebFlux28
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 Cassandra47
3.4.2 Dubbo48
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 TCP58
4.1.2 UDP60
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 Lettuce81
5.4.2 Cassandra83
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 Cassandra101
6.4.2 Dubbo102
6.4.3 Hadoop105
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 NIO198
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的
ipAddress258
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的DatagramPacket290
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 编解码器HttpServerCodec299
15.1.2 ExpectContinue处理程序HttpServer-
ExpectContinueHandler302
15.1.3 请求合并器
HttpObjectAggregator305
15.1.4 其他常用的HTTP处理程序313
15.2 开源软件如何使用Netty构建
HTTP服务314

15.2.1 Hadoop如何使用Netty构建
Web Hdfs314
15.2.2 WebFlux如何基于Netty构建
Web服务319
15.3 将案例程序改造为HTTP
应用324
15.3.1 完成业务处理程序3
15.3.2 组合处理程序以搭建HTTP
服务器326
15.4 常见疑问解析327
15.4.1 HttpServerExpectContinueHandler
和HttpObjectAggregator能否
共存327
15.4.2 何时需要写LastHttpContent328
15.4.3 HttpChunkedInput必须与
transfer-encoding:chunked
绑定在一起吗331
15.4.4 其他流行框架如何根据请求
定位到处理位置332
第16章 Netty对文件应用的支持334
16.1 FileRegion334
16.1.1 Netty如何支持FileRegion335
16.1.2 解析FileRegion的劣势337
16.2 ChunkedFile/ChunkedNioFile338
16.2.1 比较ChunkedFile与
ChunkedNioFile338
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中如何使用
FastThreadLocal359
17.3.2 基于源码解析ThreadLocal的
性能缺陷360
17.3.3 基于源码解析FastThreadLocal
所做的优化362
17.4 Netty对JDK的Timer所做的
优化365
17.4.1 在Netty中如何使用
HashedWheelTimer365
17.4.2 基于源码解析Timer的性能
缺陷366
17.4.3 基于源码解析HashedWheelTimer
所做的优化368
第18章 Netty编程思想372
18.1 注解的使用372
18.1.1 @UnstableApi373
18.1.2 @Skip373
18.1.3 @Sharable374
18.1.4 @SuppressJava6Requirement375
18.1.5 @SuppressForbidden377
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

内容摘要
本书旨在介绍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多个常见疑难点,拓展读者的知识面,增强实战技能。


【内容简介】

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP