跟闪电侠学Netty:Netty即时聊天实战与底层原理

跟闪电侠学Netty:Netty即时聊天实战与底层原理

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

一本专门为Netty初学者打造的入门及进阶学习图书。

内容简介

这是一本专门为 Netty 初学者打造的入门及进阶学习图书,无论你之前有没有使用过 Netty,都可以从本书中有所收获。本书分上下两篇。上篇通过一个即时聊天系统的实战案例,让读者能够系统地使用一遍 Netty,全面掌握 Netty 的知识点;下篇通过对源码的层层剖析,让读者能够掌握 Netty 底层原理,知其然并知其所以然,从而编写出高性能网络应用程序。如果你想全面系统地学习 Netty,并掌握一些性能调优方法,本书上篇可以帮助你完成这个目标。如果你想深入了解 Netty 的底层设计,编写出更灵活高效的网络通信程序,本书下篇可以帮助你完成这个目标。如果你从未读过开源框架源码,本书将是你的第一本源码指导书,读源码并不难,难的是迈出这一小步,之后就能通往更广阔的世界。


作者简介

闪电侠(俞超),某互联网公司技术专家。精通Netty、Spring、MyBatis 等开源框架。负责公司各类长连项目的开发与维护,有千万级别实时在线连接、百亿吞吐长连通信经验。Vim和IDEA党,对效率和编写优美代码有极致追求。

章节目录

版权信息

内容简介

推荐语

推荐序

前言

上篇 入门实战

第1章 即时聊天系统简介

1.1 单聊流程

1.2 单聊的指令

1.3 群聊流程

1.4 群聊要实现的指令集

1.5 Netty

1.6 本书实现的即时聊天形式

第2章 Netty是什么

2.1 IO编程

2.2 NIO编程

2.3 Netty编程

第3章 Netty开发环境配置

3.1 Maven

3.2 Git

3.3 IntelliJ IDEA

第4章 服务端启动流程

4.1 服务端启动最小化代码

4.2 自动绑定递增端口

4.3 服务端启动的其他方法

4.4 总结

第5章 客户端启动流程

5.1 客户端启动Demo

5.2 失败重连

5.3 客户端启动的其他方法

5.4 总结

5.5 思考

第6章 客户端与服务端双向通信

6.1 客户端发送数据到服务端

6.2 服务端读取客户端数据

6.3 服务端返回数据到客户端

6.4 总结

6.5 思考

第7章 数据载体ByteBuf的介绍

7.1 ByteBuf的结构

7.2 容量API

7.3 读写指针相关的API

7.4 读写API

7.5 实战

7.6 总结

7.7 思考

第8章 客户端与服务端通信协议编解码

8.1 什么是客户端与服务端的通信协议

8.2 通信协议的设计

8.3 通信协议的实现

8.4 总结

8.5 思考

第9章 实现客户端登录

9.1 登录流程

9.2 逻辑处理器

9.3 客户端发送登录请求

9.4 服务端发送登录响应

9.5 总结

9.6 思考

第10章 实现客户端与服务端收发消息

10.1 收发消息对象

10.2 判断客户端是否登录成功

10.3 在控制台输入消息并发送

10.4 服务端收发消息处理

10.5 客户端收消息处理

10.6 总结

10.7 思考

第11章 Pipeline与ChannelHandler

11.1 Pipeline与ChannelHandler的构成

11.2 ChannelHandler的分类

11.3 ChannelInboundHandler的事件传播

11.4 ChannelOutboundHandler的事件传播

11.5 总结

11.6 思考

第12章 构建客户端与服务端的Pipeline

12.1 ChannelInboundHandlerAdapter与ChannelOutboundHandlerAdapter

12.2 ByteToMessageDecoder

12.3 SimpleChannelInboundHandler

12.4 MessageToByteEncoder

12.5 构建客户端与服务端的Pipeline

12.6 总结

12.7 思考

第13章 拆包/粘包理论与解决方案

13.1 拆包/粘包例子

13.2 为什么会有粘包、半包现象

13.3 拆包的原理

13.4 Netty自带的拆包器

13.5 如何使用LengthFieldBasedFrameDecoder

13.6 拒绝非本协议连接

13.7 客户端和服务端的Pipeline结构

13.8 总结

13.9 思考

第14章 ChannelHandler的生命周期

14.1 ChannelHandler的生命周期详解

14.2 ChannelHandler生命周期各回调方法的用法举例

14.3 总结

14.4 思考

第15章 使用ChannelHandler的热插拔实现客户端身份校验

15.1 身份检验

15.2 移除校验逻辑

15.3 身份校验演示

15.4 总结

15.5 思考

第16章 客户端互聊的原理与实现

16.1 最终效果

16.2 一对一单聊的原理

16.3 一对一单聊的实现

16.4 总结

16.5 思考

第17章 群聊的发起与通知

17.1 最终效果

17.2 群聊的原理

17.3 控制台程序重构

17.4 创建群聊的实现

17.5 总结

17.6 思考

第18章 群聊的成员管理

18.1 最终效果

18.2 群的加入

18.3 群的退出

18.4 获取群成员列表

18.5 总结

18.6 思考

第19章 群聊消息的收发及Netty性能优化

19.1 群聊消息的最终效果

19.2 群聊消息的收发实现

19.3 共享Handler

19.4 压缩Handler——合并编解码器

19.5 缩短事件传播路径

19.6 减少阻塞主线程的操作

19.7 如何准确统计处理时长

19.8 总结

第20章 心跳与空闲检测

20.1 网络问题

20.2 服务端空闲检测

20.3 客户端定时发心跳数据包

20.4 服务端回复心跳与客户端空闲检测

20.5 总结

20.6 思考

下篇 源码分析

第21章 服务端启动流程解析

21.1 服务端启动示例

21.2 服务端启动的核心步骤

21.3 创建服务端Channel

21.4 初始化服务端Channel

21.5 注册服务端Channel

21.6 绑定服务端端口

21.7 总结

第22章 Reactor线程模型解析

22.1 NioEventLoopGroup的创建

22.2 NioEventLoop对应线程的创建和启动

22.3 NioEventLoop的执行流程

22.4 总结

第23章 客户端连接接入流程解析

23.1 新连接接入的总体流程

23.2 检测到有新连接

23.3 注册Reactor线程

23.4 总结

第24章 解码原理解析

24.1 粘包与拆包

24.2 拆包的原理

24.3 Netty中拆包的基类

24.4 拆包抽象

24.5 行拆包器

24.6 特定分隔符拆包

24.7 LengthFieldBasedFrameDecoder进阶用法

24.8 LengthFieldBasedFrameDecoder源码剖析

24.9 总结

第25章 ChannelPipeline解析

25.1 ChannelPipeline的初始化

25.2 ChannelPipeline添加ChannelHandler

25.3 ChannelPipeline删除ChannelHandler

25.4 Inbound事件的传播

25.5 Outbound事件的传播

25.6 ChannelPipeline中异常的传播

25.7 总结

第26章 writeAndFlush解析

26.1 Pipeline中的标准链表结构

26.2 Java对象编码过程

26.3 write:写队列

26.4 flush:刷新写队列

26.5 writeAndFlush:写队列并刷新

26.6 总结

第27章 本书总结

27.1 Netty是什么

27.2 服务端和客户端的启动

27.3 ByteBuf

27.4 自定义协议拆包与编解码

27.5 Handler与Pipeline

27.6 耗时操作的处理与统计

27.7 最后的话

跟闪电侠学Netty:Netty即时聊天实战与底层原理是2022年由电子工业出版社出版,作者俞超。

得书感谢您对《跟闪电侠学Netty:Netty即时聊天实战与底层原理》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Web安全漏洞原理及实战 电子书
本书主要介绍Web安全理论及实战应用,从Web安全基础入手,剖析Web安全漏洞的原理,并通过实战分析对Web安全漏洞的原理进行刻画,加深读者对Web安全漏洞原理的认识,进而帮读者全方位了解Web安全漏洞原理的本质。
OpenWrt智能路由系统开发:跟hoowa学智能路由 电子书
极企科技联合创始人力作,详解OpenWrt在各类不同设备的玩法。
Flink原理与实践 电子书
本书围绕大数据流处理领域,介绍FlinkDataStreamAPI、时间和窗口、状态和检查点、TableAPI&SQL等知识。书中以实践为导向,使用大量真实业务场景案例来演示如何基于Flink进行流处理。
跟老韩学Linux自动化运维(基础篇) 电子书
本书全面、系统地介绍Shell的各个知识点及其在企业环境中的具体应用。
深度学习原理与实践 电子书
(1)大量图例,简单易懂。作者亲自绘制了大量插图,力求还原深度学习的算法思想,分解和剖析晦涩的算法,用图例来表示复杂的问题。生动的图例也能给读者带来阅读乐趣,快乐地学习算法知识,体会深度学习的算法本质。 (2)简化公式,生动比喻。深度学习和机器学习类的书中通常会有大量复杂冗长的算法公式,为了避免出现读者读不懂的情况,本书尽可能地统一了公式和符号,简化相关公式,并加以生动的比喻进行解析。在启发读者的同时,锻炼读者分析问题和解决问题的能力。 (3)算法原理,代码实现。在介绍深度学习及相关算法的原理时,不仅给出了对应的公式,还给出了实现和求解公式的代码,让读者明确该算法的作用、输入和输出。原理与代码相结合,使得读者对深度学习的算法实现更加具有亲切感。 (4)深入浅出,精心剖析。理解深度学习需要一定的机器学习知识,本书在D1章介绍了深度学习与机器学习的关系,并简要介绍了机器学习的内容。在内容安排上,每章依次介绍模型框架的应用场景、结构和使用方式,最后通过真实的案例去全面分析该模型结构。目的是让读者可以抓住深度学习的本质。 (5)入门实践,案例重现。每一章最后的真实案例不是直接堆砌代码,而是讲解使用该算法模型的原因和好处。从简单的背景知识出发,使用前文讲解过的深度学习知识实现一个实际的工程项目。实践可以用于及时检验读者对所学知识的掌握程度,为读者奠定深度学习的实践基础。 将一本技术书籍写得通俗易懂谈何容易,但《深度学习原理与实践》这本书确实做到了。书中对近年来火热的深度学习理论知识进行简单剖析,化繁为简,没有局限于坐而论道,而是将实例和数学理论相结合,让读者能够快速理解各种模型并上手实践,值得细读。 --唐春明 广州大学数学与信息学科学院副院长 本书从原理、方法、实践这 3 个维度系统地介绍了深度学习的方方面面,内容详实,解读清晰,细节与全貌兼顾,既适合初学者阅读,也可以作为深入研究的参考用书。 --杨刚 西安电子科技大学教授 近年来出版的深度学习相关图书中,本书是我见过非常有指导意义的中文书籍之一。本书对 ANN、CNN、RNN 等模型进行深入浅出的介绍,引入大量图例和简化后的公式,让算法浅显易懂。每一章的实践内容都给人惊喜,强烈推荐! --吴健之 腾讯音乐高级工程师 作为产品经理,我能看懂的深度学习书籍实在太少了。本书恰到好处,插图丰富直观,数学公式简练,很喜欢此类风格的图书,易懂好学。即使你不是程序员或算法专家,该书也值得一看! --张瑞 中软国际高级产品经理