[201504][Netty 权威指南][第2版][李林锋][著]

https://github.com/wuyinxian124/nettybook2

基础篇 走进 Java NIO

第 1 章 Java 的 I/O 演进之路

1.1 I/O 基础入门

1.1.1 Linux 网络 I/O 模型简介

1.1.2 I/O 多路复用技术

1.2 Java 的 I/O 演进

1.3 总结

第 2 章 NIO 入门

2.1 传统的 BIO 编程

2.1.1 BIO 通信模型图

2.1.2 同步阻塞式 I/O 创建的 TimeServer 源码分析

2.1.3 同步阻塞式 I/O 创建的 TimeClient 源码分析

2.2 伪异步 I/O 编程

2.2.1 伪异步 I/O 模型图

2.2.2 伪异步 I/O 创建的 TimeServer 源码分析

2.2.3 伪异步 I/O 弊端分析

2.3 NIO 编程

2.3.1 NIO 类库简介

2.3.2 NIO 服务端序列图

2.3.3 NIO 创建的 TimeServer 源码分析

2.3.4 NIO 客户端序列图

2.3.5 NIO 创建的 TimeClient 源码分析

2.4 AIO 编程

2.4.1 AIO 创建的 TimeServer 源码分析

2.4.2 AIO 创建的 TimeClient 源码分析

2.4.3 AIO 版本时间服务器运行结果

2.5 4 种 I/O 的对比

2.5.1 概念澄清

2.5.2 不同 I/O 模型对比

2.6 选择 Netty 的理由

2.6.1 不选择 Java 原生 NIO 编程的原因

2.6.2 为什么选择 Netty

2.7 总结

入门篇 Netty NIO 开发指南

第 3 章 Netty 入门应用

3.1 Netty 开发环境的搭建

3.1.1 下载 Netty 的软件包

3.1.2 搭建 Netty 应用工程

3.2 Netty 服务端开发

3.3 Netty 客户端开发

3.4 运行和调试

3.4.1 服务端和客户端的运行

3.4.2 打包和部署

3.5 总结

第 4 张 TCP 粘包/拆包问题的解决之道

4.1 TCP 粘包/拆包

4.1.1 TCP 粘包/拆包问题说明

4.1.2 TCP 粘包/拆包发生的原因

4.1.3 粘包问题的解决策略

4.2 未考虑 TCP 粘包导致功能异常案例

4.2.1 TimeServer 的改造

4.2.2 TimeClient 的改造

4.2.3 运行结果

4.3 利用 LineBasedFrameDecoder 解决 TCP 粘包问题

4.3.1 支持 TCP 粘包的 TimeServer

4.3.2 支持 TCP 粘包的 TimeClient

4.3.3 运行支持 TCP 粘包的时间服务器程序

4.3.4 LineBasedFrameDecoder 和 StringDecoder 的原理分析

4.4 总结

第 5 章 分隔符和定长解码器的应用

5.1 DelimiterBasedFrameDecoder 应用开发

5.1.1 DelimiterBasedFrameDecoder 服务端开发

5.1.2 DelimiterBasedFrameDecoder 客户端开发

5.1.3 运行 DelimiterBasedFrameDecoder 服务端和客户端

5.2 FixedLengthFrameDecoder 应用开发

5.2.1 FixedLengthFrameDecoder 服务端开发

5.2.2 利用 telnet 命令行测试 EchoServer 服务端

5.3 总结

中级篇 Netty 编解码开发指南

第 6 章 编解码技术

6.1 Java 序列化的缺点

6.1.1 无法跨语言

6.1.2 序列化后的码流太大

6.1.3 序列化性能太低

6.2 业界主流的编解码框架

6.2.1 Google 的 Protobuf 介绍

6.2.2 Facebook 的 Thrift 介绍

6.2.3 JBoss Marshalling 介绍

6.3 总结

第 7 章 MessagePack 编解码

7.1 MessagePack 介绍

7.1.1 MessagePack 多语言支持

7.1.2 MessagePack Java API 介绍

7.1.3 MessagePack 开发包下载

7.2 MessagePack 编码器和解码器开发

7.2.1 MessagePack 编码器开发

7.2.2 MessagePack 解码器开发

7.2.3 功能测试

7.3 粘包/半包支持

7.4 总结

第 8 章 Google Protobuf 编解码

8.1 Protobuf 的入门

8.1.1 Protobuf 开发环境搭建

8.1.2 Protobuf 编解码开发

8.1.3 运行 Protobuf 例程

8.2 Netty 的 Protobuf 服务端开发

8.2.1 Protobuf 版本的图书订购服务端开发

8.2.2 Protobuf 版本的图书订购客户端开发

8.2.3 Protobuf 版本的图书订购程序功能测试

8.3 Protobuf 的使用注意事项

8.4 总结

第 9 章 JBoss Marshalling 编解码

9.1 Marshalling 开发环境准备

9.2 Netty 的 Marshalling 服务端开发

9.3 Netty 的 Marshalling 客户端开发

9.4 运行 Marshalling 客户端和服务端例程

9.5 总结

高级篇 Netty 多协议开发和应用

第 10 章 HTTP 协议开发应用

10.1 HTTP 协议介绍

10.1.1 HTTP 协议的 URL

10.1.2 HTTP 请求消息(HttpRequest)

10.1.3 HTTP 响应消息(HttpResponse)

10.2 Netty HTTP 服务端入门开发

10.2.1 HTTP 服务端例程场景描述

10.2.2 HTTP 服务端开发

10.2.3 Netty HTTP 文件服务器例程运行结果

10.3 Netty HTTP + XML 协议栈开发

10.3.1 开发场景介绍

10.3.2 HTTP + XML 协议栈设计

10.3.3 高效的 XML 绑定框架 JiBx

10.3.4 HTTP + XML 编解码框架开发

10.3.5 HTTP + XML 协议栈测试

10.3.6 小结

10.4 总结

第 11 章 WebSocket 协议开发

11.1 HTTP 协议的弊端

11.2 WebSocket 入门

11.2.1 WebSocket 背景

11.2.2 WebSocket 连接建立

11.2.3 WebSocket 生命周期

11.2.4 WebSocket 连接关闭

11.3 Netty WebSocket 协议开发

11.3.1 WebSocket 服务端功能介绍

11.3.2 WebSocket 服务端开发

11.3.3 运行 WebSocket 服务端

11.4 总结

第 12 章 私有协议栈开发

12.1 私有协议介绍

12.2 Netty 协议栈功能设计

12.2.1 网络拓扑图

12.2.2 协议栈功能描述

12.2.3 通信模型

12.2.4 消息定义

12.2.5 Netty 协议支持的字段类型

12.2.6 Netty 协议的编解码规范

12.2.7 链路的建立

12.2.8 链路的关闭

12.2.9 可靠性设计

12.2.10 安全性设计

12.2.11 可扩展性设计

12.3 Netty 协议栈开发

12.3.1 数据结构定义

12.3.2 消息编解码

12.3.3 握手和安全认证

12.3.4 心跳检测机制

12.3.5 断连重连

12.3.6 客户端代码

12.3.7 服务端代码

12.4 运行协议栈

12.4.1 正常场景

12.4.2 异常场景:服务端宕机重启

12.4.3 异常场景:客户端宕机重启

12.5 总结

第 13 章 服务端创建

13.1 原生 NIO 类库的复杂性

13.2 Netty 服务端创建源码分析

13.2.1 Netty 服务端创建时序图

13.2.2 Netty 服务端创建源码分析

13.3 客户端接入源码分析

13.4 总结

第 14 章 客户端创建

14.1 Netty 客户端创建流程分析

14.1.1 Netty 客户端创建时序图

14.1.2 Netty 客户端创建流程分析

14.2 Netty 客户端创建源码分析

14.2.1 客户端连接辅助类 Bootstrap

14.2.2 客户端连接操作

14.2.3 异步连接结果通知

14.2.4 客户端连接超时机制

14.3 总结

源码分析篇 Netty 功能介绍和源码分析

第 15 章 ByteBuf 和相关辅助类

15.1 ByteBuf 功能说明

15.1.1 ByteBuf 的工作原理

15.1.2 ByteBuf 的功能介绍

15.2 ByteBuf 源码分析

15.2.1 ByteBuf 的主要类继承关系

15.2.2 AbstractByteBuf 源码分析

15.2.3 AbstractReferenceCountedByteBuf 源码分析

15.2.4 UnpooledHeapByteBuf 源码分析

15.2.5 PooledByteBuf 内存池原理分析

15.2.6 PooledDirectByteBuf 源码分析

15.3 ByteBuf 相关的辅助类功能介绍

15.3.1 ByteBufHolder

15.3.2 ByteBufAllocator

15.3.3 CompositeByteBuf

15.3.4 ByteBufUtil

15.4 总结

第 16 章 Channel 和 Unsafe

16.1 Channel 功能说明

16.1.1 Channel 的工作原理

16.1.2 Channel 的功能介绍

16.2 Channel 源码分析

16.2.1 Channel 的主要继承关系类图

16.2.2 AbstractChannel 源码分析

16.2.3 AbstractNioChannel 源码分析

16.2.4 AbstractNioByteChannel 源码分析

16.2.5 AbstractNioMessageChannel 源码分析

16.2.6 AbstractNioMessageServerChannel 源码分析

16.2.7 NioServerSocketChannel 源码分析

16.2.8 NioSocketChannel 源码分析

16.3 Unsafe 功能说明

16.4 Unsafe 源码分析

16.4.1 Unsafe 继承关系类图

16.4.2 AbstractUnsafe 源码分析

16.4.3 AbstractNioUnsafe 源码分析

16.4.4 NioByteUnsafe 源码分析

16.5 总结

第 17 章 ChannelPipeline 和 ChannelHandler

17.1 ChannelPipeline 功能说明

17.1.1 ChannelPipeline 的事件处理

17.1.2 自定义拦截器

17.1.3 构建 pipeline

17.1.4 ChannelPipeline 的主要特性

17.2 ChannelPipeline 源码分析

17.2.1 ChannelPipeline 的类继承关系图

17.2.3 ChannelPipeline 的 inbound 事件

17.2.4 ChannelPipeline 的 outbound 事件

17.3 ChannelHandler 功能说明

17.3.1 ChannelHandlerAdapter 功能说明

17.3.2 ByteToMessageDecoder 功能说明

17.3.3 MessageToMessageDecoder 功能说明

17.3.4 LengthFieldBasedFrameDecoder 功能说明

17.3.5 MessageToByteEncoder 功能说明

17.3.6 MessageToMessageEncoder 功能说明

17.3.7 LengthFieldPrepender 功能说明

17.4 ChannelHandler 源码分析

17.4.1 ChannelHandler 的类继承关系图

17.4.2 ByteToMessageDecoder 源码分析

17.4.3 MessageToMessageDecoder 源码分析

17.4.4 LengthFieldBasedFrameDecoder 源码分析

17.4.5 MessageToByteEncoder 源码分析

17.4.6 MessageToMessageEncoder 源码分析

17.4.7 LengthFieldPrepender 源码分析

17.5 总结

第 18 章 EventLoop 和 EventLoopGroup

18.1 Netty 的线程模型

18.1.1 Reactor 单线程模型

18.1.2 Reactor 多线程模型

18.1.3 主从 Reactor 多线程模型

18.1.4 Netty 的线程模型

18.1.5 最佳实践

18.2 NioEventLoop 源码分析

18.2.1 NioEventLoop 设计原理

18.2.2 NioEventLoop 继承关系类图

18.2.3 NioEventLoop

18.3 总结

第 19 章 Future 和 Promise

19.1 Future 功能

19.2 ChannelFuture 源码分析

19.3 Promise 功能介绍

19.4 Promise 源码分析

19.4.1 Promise 继承关系图

19.4.2 DefaultPromise

19.5 总结

架构和行业应用篇 Netty 高级特性

第 20 章 Netty 架构剖析

20.1 Netty 逻辑架构

20.1.1 Reactor 通信调度层

20.1.2 职责链 ChannelPipeline

20.1.3 业务逻辑编排层(Service ChannelHandler)

20.2 关键架构质量属性

20.2.1 高性能

20.2.2 可靠性

20.2.3 可定制性

20.2.4 可扩展性

20.3 总结

第 21 章 Java 多线程编程在 Netty 中的应用

21.1 Java 内存模型与多线程编程

21.1.1 硬件的发展和多任务处理

21.1.2 Java 内存模型

21.2 Netty 的并发编程实践

21.2.1 对共享的可变数据进行正确的同步

21.2.2 正确使用锁

21.2.3 volatile 的正确使用

21.2.4 CAS 指令和原子类

21.2.5 线程安全类的应用

21.2.6 读写锁的应用

21.2.7 线程安全性文档说明

21.2.8 不要依赖线程优先级

21.3 总结

第 22 章 高性能之道

22.1 RPC 调用性能模型分析

22.1.1 传统 RPC 调用性能差的三宗罪

22.1.2 I/O 通信性能三原则

22.2 Netty 高性能之道

22.2.1 异步非阻塞通信

22.2.2 高效的 Reactor 线程模型

22.2.3 无锁化的串行设计

22.2.4 高效的并发编程

22.2.5 高性能的序列化框架

22.2.6 零拷贝

22.2.7 内存池

22.2.8 灵活的 TCP 参数配置能力

22.3 主流 NIO 框架性能对比

22.4 总结

第 23 章 可靠性

23.1 可靠性需求

23.1.1 宕机的代价

23.1.2 Netty 可靠性需求

23.2 Netty 高可靠性设计

23.2.1 网络通信类故障

23.2.1.1 客户端连接超时
23.2.1.2 通信对端强制关闭连接
23.2.1.3 链路关闭
23.2.1.4 定制 I/O 故障

23.2.2 链路的有效性检测

23.2.3 Reactor 线程的保护

23.2.3.1 异常处理要谨慎
23.2.3.2 规避 NIO BUG

23.2.4 内存保护

23.2.4.1 缓冲区的内存泄露保护
23.2.4.2 缓冲区溢出保护

23.2.5 流量整形

23.2.5.1 全局流量整形
23.2.5.2 链路级流量整形

23.2.6 优雅停机接口

23.3 优化建议

23.3.1 发送队列容量上限控制

23.3.2 回推发送失败的消息

23.4 总结

第 24 章 安全性

24.1 严峻的安全形势

24.1.1 OpenSSL Heart bleed 漏洞

24.1.2 安全漏洞的代价

24.1.3 Netty 面临的安全风险

24.2 Netty SSL 安全特性

24.2.1 SSL 单向认证

24.2.1.1 单向认证开发
24.2.1.2 单向认证原理

24.2.2 SSL 双向认证

24.2.2.1 双向认证开发
24.2.2.2 双向认证原理

24.2.3 第三方 CA 认证

24.2.3.1 服务端证书制作
24.2.3.2 客户端证书制作

24.3 Netty SSL 源码分析

24.3.1 客户端

24.3.2 服务端

24.3.3 消息读取

24.3.4 消息发送

24.4 Netty 扩展的安全特性

24.4.1 IP 地址黑名单机制

24.4.2 接入认证

24.5 总结

第 25 章 Netty 未来展望

25.1 应用范围

25.2 技术演进

25.3 社区活跃度

25.4 Road Map

25.5 总结

附录 A Netty 参数配置表

[201504][Netty 权威指南][第2版][李林锋][著]相关推荐

  1. 《Netty权威指南 第2版》学习笔记(1)---服务端与客户端开发入门

    前言 Netty权威指南中以时间服务器为入门案例,演示了如何通过Netty完成了服务端与客户端之间的交互过程. 在开始使用Netty开发之前,先回顾一下使用NIO进行服务端开发的步骤. 创建Serve ...

  2. netty权威指南第三版_Hadoop权威指南(第二版及第三版)

    书籍简介 全书5部分24章,第Ⅰ部分介绍Hadoop基础知识,主题涉及Hadoop.MapReduce.Hadoop分布式文件系统.YARN.Hadoop的I/O操作. 第Ⅱ部分介绍MapReduce ...

  3. IT人物之《Netty权威指南》中文作者 专访华为李林锋:我与Netty那些不得不说的事

    摘要:Netty是业界最流行的NIO框架之一,它的健壮性.功能.性能.可定制性和可扩展性在同类框架中都是首屈一指的.近日,CSDN采访了Netty领域的权威人士李林锋,请他分享Netty开发的经验之道 ...

  4. 《Netty权威指南》

    <Netty权威指南> 基本信息 作者: 李林锋 出版社:电子工业出版社 ISBN:9787121233432 上架时间:2014-5-29 出版日期:2014 年6月 开本:16开 页码 ...

  5. netty权威指南笔记-以回车换行结尾的消息如何处理半包问题

    概述 TCP底层会发生粘包和拆包,这个是TCP的一个特性.为了减少网络数据传输的次数,TCP总是希望让网络数据到达一定量级的时候才将数据发送出去,而不是缓存区一有数据就马上发送数据. TCP底层会根据 ...

  6. netty权威指南 学习笔记http

    序 李林峰的<netty权威指南>,从Java的NIO开始介绍,后面介绍TCP粘包拆包.中级篇介绍编解码技术. 第10章介绍了HTTP及netty HTTP+XML的技术. 因为xml实际 ...

  7. python网络爬虫权威指南 百度云-分析《Python网络爬虫权威指南第2版》PDF及代码...

    对那些没有学过编程的人来说,计算机编程看着就像变魔术.如果编程是魔术(magic),那么网页抓取(Web scraping)就是巫术(wizardry),也就是运用"魔术"来实现精 ...

  8. mysql5权威指南_MySQL5权威指南(第3版)

    MySQL5权威指南(第3版)是一本非常权威的MySQL5数据库使用指南,由程序员科夫勒和杨晓云两人共同编著.本书内容丰富翔实,详细的介绍了MySQL 5.0,讨论了新的程序设计接口(如PHP 5里的 ...

  9. 《Cassandra权威指南》第二版书评及访谈

    \ 关键点 \ 了解关于Cassandra NoSQL数据库3.0版的功能: \ 如何安装和配置Cassandra数据库,包括集群管理: \ Cassandra数据库的数据模型(概念.逻辑和物理方面) ...

最新文章

  1. Python读取xlsx文件报错:raise XLRDError(FILE_FORMAT_DESCRIPTIONS[file_format]+‘; not supported‘)
  2. Android之linux基础教学之二 总体架构
  3. ROS系统 用Python或C++实现发布者Publisher
  4. 我的世界一进去就java_我的世界国际java版1.12.2加了光影修复进游戏就直接崩溃...
  5. SQL SERVER 子查询的用法
  6. 【动态规划】魔法石矿
  7. php+数组存放文件名_php将数组存储为文本文件的三种方法
  8. 立志10天学会C++基础应用—day01
  9. 结构性约束事件聚合下的在线多目标跟踪方法
  10. 对当今社会的某些现象的感想
  11. STM32工作笔记045---SystemInit时钟系统初始化函数剖析
  12. 查找工资前三高的员工
  13. mysql取整,小数点处理函数floor(), round()
  14. VS里面关于.cpp文件与.cu文件混合编译问题---不要在.cpp文件声明核函数(__device__()和global__())
  15. 分频器+计数器+数码管显示VHDL
  16. Matlab 的fspecial函数用法
  17. EasyExcel自动设置列宽
  18. screenX与clientX区别
  19. python中的美元符号_Python学习笔模式匹配与正则表达式之插入字符和美元字符
  20. 1100 校庆(JAVA)

热门文章

  1. python os库的常用函数记录
  2. 【VUE】微商城(七)----实现分类页面功能
  3. Premiere Pro 2022离线语音转文本教程
  4. 马上6等待服务器响应,解决网页响应慢,等待时间过长,waiting(TTFB)时间过长...
  5. Hyperledger Fabric 网络环境的一点理解
  6. pod install 时遇到 Automatically assigning platform `iOS` with version `11.0` on target XXX......
  7. bde访问64位oracle,Delphi5企业版使用BDE访问Oracle方法
  8. LaTeX:pgf usepackage(宏包)的中译
  9. SDKMAN 安装过程
  10. 你的抖音直播间没有人?爆播家抖音卡直播广场详细教程(2021最新)