Netty权威指南 第2版PDF电子书下载
- 电子书积分:17 积分如何计算积分?
- 作 者:李林锋著作
- 出 版 社:北京:电子工业出版社
- 出版年份:2015
- ISBN:9787121258015
- 页数:554 页
基础篇 走进Java NIO 2
第1章 Java的I/O演进之路 2
1.1 I/O基础入门 3
1.1.1 Linux网络I/O模型简介 3
1.1.2 I/O多路复用技术 6
1.2 Java的I/O演进 8
1.3 总结 10
第2章 NIO入门 11
2.1 传统的BIO编程 11
2.1.1 BIO通信模型图 12
2.1.2 同步阻塞式I/O创建的TimeServer源码分析 13
2.1.3 同步阻塞式I/O创建的TimeClient源码分析 16
2.2 伪异步I/O编程 18
2.2.1 伪异步I/O模型图 19
2.2.2 伪异步I/O创建的TimeServer源码分析 19
2.2.3 伪异步I/O弊端分析 21
2.3 NIO编程 24
2.3.1 NIO类库简介 24
2.3.2 NIO服务端序列图 28
2.3.3 NIO创建的TimeServer源码分析 30
2.3.4 NIO客户端序列图 36
2.3.5 NIO创建的TimeClient源码分析 39
2.4 AIO编程 45
2.4.1 AIO创建的TimeServer源码分析 46
2.4.2 AIO创建的TimeClient源码分析 51
2.4.3 AIO版本时间服务器运行结果 56
2.5 4种I/O的对比 58
2.5.1 概念澄清 58
2.5.2 不同I/O模型对比 59
2.6 选择Netty的理由 60
2.6.1 不选择Java原生NIO编程的原因 61
2.6.2 为什么选择Netty 62
2.7 总结 63
入门篇 Netty NIO开发指南 66
第3章 Netty入门应用 66
3.1 Netty开发环境的搭建 66
3.1.1 下载Netty的软件包 67
3.1.2 搭建Netty应用工程 67
3.2 Netty服务端开发 68
3.3 Netty客户端开发 73
3.4 运行和调试 76
3.4.1 服务端和客户端的运行 76
3.4.2 打包和部署 77
3.5 总结 77
第4章 TCP粘包/拆包问题的解决之道 79
4.1 TCP粘包/拆包 79
4.1.1 TCP粘包/拆包问题说明 80
4.1.2 TCP粘包/拆包发生的原因 80
4.1.3 粘包问题的解决策略 81
4.2 未考虑TCP粘包导致功能异常案例 82
4.2.1 TimeServer的改造 82
4.2.2 TimeClient的改造 83
4.2.3 运行结果 84
4.3 利用LineBasedFrameDecoder解决TCP粘包问题 85
4.3.1 支持TCP粘包的TimeServer 86
4.3.2 支持TCP粘包的TimeClient 88
4.3.3 运行支持TCP粘包的时间服务器程序 90
4.3.4 LineBasedFrameDecoder和StringDecoder的原理分析 91
4.4 总结 92
第5章 分隔符和定长解码器的应用 93
5.1 DelimiterBasedFrameDecoder应用开发 94
5.1.1 DelimiterBasedFrameDecoder服务端开发 94
5.1.2 DelimiterBasedFrameDecoder客户端开发 97
5.1.3 运行DelimiterBasedFrameDecoder服务端和客户端 99
5.2 FixedLengthFrameDecoder应用开发 101
5.2.1 FixedLengthFrameDecoder服务端开发 101
5.2.2 利用telnet命令行测试EchoServer服务端 103
5.3 总结 104
中级篇 Netty编解码开发指南 106
第6章 编解码技术 106
6.1 Java序列化的缺点 107
6.1.1 无法跨语言 107
6.1.2 序列化后的码流太大 107
6.1.3 序列化性能太低 110
6.2 业界主流的编解码框架 113
6.2.1 Google的Protobuf介绍 113
6.2.2 Facebook的Thrift介绍 115
6.2.3 JBoss Marshalling介绍 116
6.3 总结 117
第7章 MessagePack编解码 118
7.1 MessagePack介绍 118
7.1.1 MessagePack多语言支持 119
7.1.2 MessagePack Java API介绍 119
7.1.3 MessagePack开发包下载 120
7.2 MessagePack编码器和解码器开发 120
7.2.1 MessagePack编码器开发 120
7.2.2 MessagePack解码器开发 121
7.2.3 功能测试 121
7.3 粘包/半包支持 124
7.4 总结 127
第8章 Google Protobuf编解码 128
8.1 Protobuf的入门 129
8.1.1 Protobuf开发环境搭建 129
8.1.2 Protobuf编解码开发 131
8.1.3 运行Protobuf例程 133
8.2 Netty的Protobuf服务端开发 133
8.2.1 Protobuf版本的图书订购服务端开发 134
8.2.2 Protobuf版本的图书订购客户端开发 136
8.2.3 Protobuf版本的图书订购程序功能测试 139
8.3 Protobuf的使用注意事项 140
8.4 总结 142
第9章 JBoss Marshalling编解码 143
9.1 Marshalling开发环境准备 143
9.2 Netty的Marshalling服务端开发 144
9.3 Netty的Marshalling客户端开发 147
9.4 运行Marshalling客户端和服务端例程 149
9.5 总结 150
高级篇 Netty多协议开发和应用 154
第10章 HTTP协议开发应用 154
10.1 HTTP协议介绍 155
10.1.1 HTTP协议的URL 155
10.1.2 HTTP请求消息(HttpRequest) 155
10.1.3 HTTP响应消息(HttpResponse) 158
10.2 Netty HTTP服务端入门开发 159
10.2.1 HTTP服务端例程场景描述 160
10.2.2 HTTP服务端开发 160
10.2.3 Netty HTTP文件服务器例程运行结果 166
10.3 Netty HTTP+XML协议栈开发 170
10.3.1 开发场景介绍 171
10.3.2 HTTP+XML协议栈设计 174
10.3.3 高效的XML绑定框架JiBx 175
10.3.4 HTTP+XML编解码框架开发 183
10.3.5 HTTP+XML协议栈测试 199
10.3.6 小结 201
10.4 总结 202
第11章 WebSocket协议开发 203
11.1 HTTP协议的弊端 204
11.2 WebSocket入门 204
11.2.1 WebSocket背景 205
11.2.2 WebSocket连接建立 206
11.2.3 WebSocket生命周期 207
11.2.4 WebSocket连接关闭 208
11.3 Netty WebSocket协议开发 209
11.3.1 WebSocket服务端功能介绍 209
11.3.2 WebSocket服务端开发 210
11.3.3 运行WebSocket服务端 218
11.4 总结 219
第12章 私有协议栈开发 221
12.1 私有协议介绍 221
12.2 Netty协议栈功能设计 223
12.2.1 网络拓扑图 223
12.2.2 协议栈功能描述 224
12.2.3 通信模型 224
12.2.4 消息定义 225
12.2.5 Netty协议支持的字段类型 226
12.2.6 Netty协议的编解码规范 227
12.2.7 链路的建立 229
12.2.8 链路的关闭 230
12.2.9 可靠性设计 230
12.2.10 安全性设计 232
12.2.11 可扩展性设计 232
12.3 Netty协议栈开发 233
12.3.1 数据结构定义 233
12.3.2 消息编解码 237
12.3.3 握手和安全认证 241
12.3.4 心跳检测机制 245
12.3.5 断连重连 248
12.3.6 客户端代码 249
12.3.7 服务端代码 251
12.4 运行协议栈 252
12.4.1 正常场景 252
12.4.2 异常场景:服务端宕机重启 253
12.4.3 异常场景:客户端宕机重启 256
12.5 总结 256
第13章 服务端创建 258
13.1 原生NIO类库的复杂性 259
13.2 Netty服务端创建源码分析 259
13.2.1 Netty服务端创建时序图 260
13.2.2 Netty服务端创建源码分析 263
13.3 客户端接入源码分析 272
13.4 总结 275
第14章 客户端创建 276
14.1 Netty客户端创建流程分析 276
14.2.1 Netty客户端创建时序图 276
14.2.2 Netty客户端创建流程分析 277
14.2 Netty客户端创建源码分析 278
14.2.1 客户端连接辅助类Bootstrap 278
14.2.2 客户端连接操作 281
14.2.3 异步连接结果通知 283
14.2.4 客户端连接超时机制 284
14.3 总结 286
源码分析篇 Netty功能介绍和源码分析 288
第15章 ByteBuf和相关辅助类 288
15.1 ByteBuf功能说明 288
15.1.1 ByteBuf的工作原理 289
15.1.2 ByteBuf的功能介绍 294
15.2 ByteBuf源码分析 308
15.2.1 ByteBuf的主要类继承关系 309
15.2.2 AbstractByteBuf源码分析 310
15.2.3 AbstractReferenceCountedByteBuf源码分析 319
15.2.4 UnpooledHeapByteBuf源码分析 321
15.2.5 PooledByteBuf内存池原理分析 326
15.2.6 PooledDirectByteBuf源码分析 329
15.3 ByteBuf相关的辅助类功能介绍 332
15.3.1 ByteBufHolder 332
15.3.2 ByteBufAllocator 333
15.3.3 CompositeByteBuf 334
15.3.4 ByteBufUtil 336
15.4 总结 337
第16章 Channel和Unsafe 338
16.1 Channel功能说明 338
16.1.1 Channel的工作原理 339
16.1.2 Channel的功能介绍 340
16.2 Channel源码分析 343
16.2.1 Channel的主要继承关系类图 343
16.2.2 AbstractChannel源码分析 344
16.2.3 AbstractNioChannel源码分析 347
16.2.4 AbstractNioByteChannel源码分析 350
16.2.5 AbstractNioMessageChannel源码分析 353
16.2.6 AbstractNioMessageServerChannel源码分析 354
16.2.7 NioServerSocketChannel源码分析 355
16.2.8 NioSocketChannel源码分析 358
16.3 Unsafe功能说明 364
16.4 Unsafe源码分析 365
16.4.1 Unsafe继承关系类图 365
16.4.2 AbstractUnsafe源码分析 366
16.4.3 AbstractNioUnsafe源码分析 375
16.4.4 NioByteUnsafe源码分析 379
16.5 总结 387
第17章 ChannelPipeline和ChannelHandler 388
17.1 ChannelPipeline功能说明 389
17.1.1 ChannelPipeline的事件处理 389
17.1.2 自定义拦截器 391
17.1.3 构建pipeline 392
17.1.4 ChannelPipeline的主要特性 393
17.2 ChannelPipeline源码分析 393
17.2.1 ChannelPipeline的类继承关系图 393
17.2.2 ChannelPipeline对ChannelHandler的管理 393
17.2.3 ChannelPipeline的inbound事件 396
17.2.4 ChannelPipeline的outbound事件 397
17.3 ChannelHandler功能说明 398
17.3.1 ChannelHandlerAdapter功能说明 399
17.3.2 ByteToMessageDecoder功能说明 399
17.3.3 MessageToMessageDecoder功能说明 400
17.3.4 LengthFieldBasedFrameDecoder功能说明 400
17.3.5 MessageToByteEncoder功能说明 404
17.3.6 MessageToMessageEncoder功能说明 404
17.3.7 LengthFieldPrepender功能说明 405
17.4 ChannelHandler源码分析 406
17.4.1 ChannelHandler的类继承关系图 406
17.4.2 ByteToMessageDecoder源码分析 407
17.4.3 MessageToMessageDecoder源码分析 410
17.4.4 LengthFieldBasedFrameDecoder源码分析 411
17.4.5 MessageToByteEncoder源码分析 415
17.4.6 MessageToMessageEncoder源码分析 416
17.4.7 LengthFieldPrepender源码分析 417
17.5 总结 418
第18章 EventLoop和EventLoopGroup 419
18.1 Netty的线程模型 419
18.1.1 Reactor单线程模型 420
18.1.2 Reactor多线程模型 421
18.1.3 主从Reactor多线程模型 422
18.1.4 Netty的线程模型 423
18.1.5 最佳实践 424
18.2 NioEventLoop源码分析 425
18.2.1 NioEventLoop设计原理 425
18.2.2 NioEventLoop继承关系类图 426
18.2.3 NioEventLoop 427
18.3 总结 436
第19章 Future和Promise 438
19.1 Future功能 438
19.2 ChannelFuture源码分析 443
19.3 Promise功能介绍 445
19.4 Promise源码分析 447
19.4.1 Promise继承关系图 447
19.4.2 DefaultPromise 447
19.5 总结 449
架构和行业应用篇 Netty高级特性 452
第20章 Netty架构剖析 452
20.1 Netty逻辑架构 452
20.1.1 Reactor通信调度层 453
20.1.2 职责链ChannelPipeline 453
20.1.3 业务逻辑编排层(Service ChannelHandler) 454
20.2 关键架构质量属性 454
20.2.1 高性能 454
20.2.2 可靠性 457
20.2.3 可定制性 460
20.2.4 可扩展性 460
20.3 总结 460
第21章 Java多线程编程在Netty中的应用 461
21.1 Java内存模型与多线程编程 461
21.1.1 硬件的发展和多任务处理 461
21.1.2 Java内存模型 462
21.2 Netty的并发编程实践 464
21.2.1 对共享的可变数据进行正确的同步 464
21.2.2 正确使用锁 465
21.2.3 volatile的正确使用 467
21.2.4 CAS指令和原子类 470
21.2.5 线程安全类的应用 472
21.2.6 读写锁的应用 476
21.2.7 线程安全性文档说明 477
21.2.8 不要依赖线程优先级 478
21.3 总结 479
第22章 高性能之道 480
22.1 RPC调用性能模型分析 480
22.1.1 传统RPC调用性能差的三宗罪 480
22.1.2 I/O通信性能三原则 481
22.2 Netty高性能之道 482
22.2.1 异步非阻塞通信 482
22.2.2 高效的Reactor线程模型 482
22.2.3 无锁化的串行设计 485
22.2.4 高效的并发编程 486
22.2.5 高性能的序列化框架 486
22.2.6 零拷贝 487
22.2.7 内存池 491
22.2.8 灵活的TCP参数配置能力 494
22.3 主流NIO框架性能对比 495
22.4 总结 497
第23章 可靠性 498
23.1 可靠性需求 498
23.1.1 宕机的代价 498
23.1.2 Netty可靠性需求 499
23.2 Netty高可靠性设计 500
23.2.1 网络通信类故障 500
23.2.2 链路的有效性检测 507
23.2.3 Reactor线程的保护 510
23.2.4 内存保护 513
23.2.5 流量整形 516
23.2.6 优雅停机接口 519
23.3 优化建议 520
23.3.1 发送队列容量上限控制 520
23.3.2 回推发送失败的消息 521
23.4 总结 521
第24章 安全性 522
24.1 严峻的安全形势 522
24.1.1 OpenSSL Heart bleed漏洞 522
24.1.2 安全漏洞的代价 523
24.1.3 Netty面临的安全风险 523
24.2 Netty SSL安全特性 525
24.2.1 SSL单向认证 525
24.2.2 SSL双向认证 532
24.2.3 第三方CA认证 536
24.3 Netty SSL源码分析 538
24.3.1 客户端 538
24.3.2 服务端 541
24.3.3 消息读取 544
24.3.4 消息发送 545
24.4 Netty扩展的安全特性 546
24.4.1 IP地址黑名单机制 547
24.4.2 接入认证 548
24.4 总结 550
第25章 Netty未来展望 551
25.1 应用范围 551
25.2 技术演进 552
25.3 社区活跃度 552
25.4 Road Map 552
25.5 总结 553
附录A Netty参数配置表 554
- 《近代旅游指南汇刊二编 16》王强主编 2017
- 《甘肃省档案馆指南》甘肃省档案馆编 2018
- 《近代旅游指南汇刊 31》王强主编 2014
- 《近代旅游指南汇刊二编 10》王强主编 2017
- 《手工咖啡 咖啡爱好者的完美冲煮指南》(美国)杰茜卡·伊斯托,安德烈亚斯·威尔霍夫 2019
- 《近代旅游指南汇刊 13》王强主编 2014
- 《近代旅游指南汇刊 28》王强主编 2014
- 《近代旅游指南汇刊 23》王强主编 2014
- 《重庆市绿色建筑评价技术指南》重庆大学,重庆市建筑节能协会绿色建筑专业委员会主编 2018
- 《ESG指标管理与信息披露指南》管竹笋,林波,代奕波主编 2019
- 《渗透与传承》孙锋责编;周立明 2019
- 《乐史披沙 音乐学术论文选 2005-2014》李宏锋著 2017
- 《万物探索 交通工具》焦庆锋主编 2018
- 《化学攻防战》李陵书责编;杨敏锋 2020
- 《高等学校计算机教育规划教材 Python程序设计实验教程》翟萍,王军锋,翟震,郎博,赵丹,张魏华 2020
- 《中国经济治略丛书 公共政策、农业发展与减贫》李林责任编辑;蒋辉,刘兆阳 2019
- 《学校卫生学 修订本》李林静编著 1991
- 《Python快乐编程 TensorFlow深度学习项目实战》千锋教育高教产品研发部编著 2020
- 《材料固体力学·概要及应用实例》王秀锋编著 2019
- 《托洛茨基言论 (下册) 机会主义、修正主义资料选编》中共中央马克思恩格斯列宁斯大林著作编译局国际共运史研究室编 1979
- 《电子测量与仪器》人力资源和社会保障部教材办公室组织编写 2009
- 《少儿电子琴入门教程 双色图解版》灌木文化 2019
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《通信电子电路原理及仿真设计》叶建芳 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《电子应用技术项目教程 第3版》王彰云 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017