图书简介:
《Netty 权威指南(第2 版)》是异步非阻塞通信领域的经典之作,基于最新版本的Netty 5.0 编写,是国内很难得一见的深入介绍Netty 原理和架构的书籍,也是作者多年实战经验的总结和浓缩。内容不仅包含Java NIO入门知识、Netty 的基础功能开发指导、编解码框架定制等,还包括私有协议栈定制和开发、Netty 核心类库源码分析,以及Netty 的架构剖析。
 
相关截图:
 
图书目录:

基础篇走进Java NIO

第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 开发指南

第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 编解码开发指南

第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 多协议开发和应用

第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 功能介绍和源码分析

第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 MessageToMess

《Netty 权威指南(第2 版)》目录的更多相关文章

  1. 《Spring Boot 入门及前后端分离项目实践》系列介绍

    课程计划 课程地址点这里 本课程是一个 Spring Boot 技术栈的实战类课程,课程共分为 3 个部分,前面两个部分为基础环境准备和相关概念介绍,第三个部分是 Spring Boot 项目实践开发 ...

  2. 《Spring Boot 入门及前后端分离项目实践》目录

    开篇词:SpringBoot入门及前后端分离项目实践导读 第02课:快速认识 Spring Boot 技术栈 第03课:开发环境搭建 第04课:快速构建 Spring Boot 应用 第05课:Spr ...

  3. 基于Vue的前后端分离项目实践

    一.为什么需要前后端分离 1.1什么是前后端分离  前后端分离这个词刚在毕业(15年)那会就听说过,但是直到17年前都没有接触过前后端分离的项目.怎么理解前后端分离?直观的感觉就是前后端分开去做,即功 ...

  4. 实战!spring Boot security+JWT 前后端分离架构认证登录!

    大家好,我是不才陈某~ 认证.授权是实战项目中必不可少的部分,而Spring Security则将作为首选安全组件,因此陈某新开了 <Spring Security 进阶> 这个专栏,写一 ...

  5. 基于Spring Boot架构的前后端完全分离项目API路径问题

    最近的一个项目采用前后端完全分离的架构,前端组件:vue + vue-router + vuex + element-ui + axios,后端组件:Spring Boot + MyBatis.之所以 ...

  6. 喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  7. 两个开源的 Spring Boot + Vue 前后端分离项目

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  8. 七个开源的 Spring Boot 前后端分离项目,一定要收藏!

    前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年 ...

  9. 八个开源的 Spring Boot 前后端分离项目,一定要收藏!

    八个开源的 Spring Boot 前后端分离项目 最近前后端分离已经在慢慢走进各公司的技术栈,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,我们也非常建议大家学习一下前 ...

  10. 如何使用Spring Securiry实现前后端分离项目的登录功能

    如果不是前后端分离项目,使用SpringSecurity做登录功能会很省心,只要简单的几项配置,便可以轻松完成登录成功失败的处理,当访问需要认证的页面时,可以自动重定向到登录页面.但是前后端分离的项目 ...

随机推荐

  1. 变量、数据类型、python内存管理

    pycharm快捷键 ctrl + c 复制, 默认复制整行 ctrl + v 粘贴 ctrl + x 剪切 ctrl + a 全选 ctrl + z 撤销 ctrl + f 查找 ctrl + sh ...

  2. 【Git版本控制】Idea中设置Git忽略对某些文件的版本追踪

    在Idea中有些本地文件无需与远程库同步,仅是本地使用.此时就需要将这些文件加入到Git的版本忽略中来. 设置步骤 1.搜索插件 .ignore,并安装 2.增加.gitignore文件 3.配置相应 ...

  3. Windows出现“引用账户被锁定,且暂时无法登录”解决方法

    1. 问题描述如下: i. 远程桌面登录时,出现提示必须修改密码才能登录,是因为密码过期所导致的,如下图: ii. 当我们登录Windows控制台(基于OpenStack平台的虚拟机)进行修改密码时, ...

  4. HTTPS中的加密验证部分理论

    为了加深自己对于https加密这一块的映象,决定写出来试试 就是在http层下面加了一个ssl层, 服务器将自己的公钥发送给证书机构,申请证书,证书机构首先会验证个服务器是否合法,线上或者线下,然后用 ...

  5. 三层架构介绍和MVC设计模型介绍

    springmvc是什么? Spring Web MVC是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层 进行职责解耦,基于请 ...

  6. 1. jenkins 安装部署

    参考文档: https://jenkins.io/zh 准备环境 - jdk          路径: https://www.oracle.com/technetwork/java/javase/a ...

  7. 为什么要使用token,token与session区别是什么

    目录 一.session的状态保持及弊端 二.token认证机制 一.session的状态保持及弊端 当用户第一次通过浏览器使用用户名和密码访问服务器时,服务器会验证用户数据,验证成功后在服务器端写入 ...

  8. pointnet++之scannet/train.py

    1.作者可能把scannet数据集分成了训练集和测试集并处理成了.pickle文件. 2.在代码运行过程中,作者从.pickle文件中读出训练集1201个场景的x.y.z坐标和测试集312个场景的x. ...

  9. LG2893/POJ3666 「USACO2008FEB」Making the Grade 线性DP+决策集优化

    问题描述 LG2893 POJ3666 题解 对于\(A\)中的每一个元素,都将存在于\(B\)中. 对\(A\)离散化. 设\(opt_{i,j}\)代表\([1,i]\),结尾为\(j\)的最小代 ...

  10. Redis笔记1-Redis介绍及数据类型使用场景

    Redis介绍:C语言开发.单线程操作.高性能.键值对.可持久化的数据库.Redis采用redisObject结构来统一五种数据类型,redisObject是五种类型的父类,可以在函数间传递时隐藏具体 ...