《Netty權(quán)威指南》是全球第二本、中國(guó)第一本Netty教材,它由華為平臺(tái)中間件資深架構(gòu)設(shè)計(jì)師李林鋒撰寫,作者有6年多的NIO設(shè)計(jì)和開發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn),多次受邀進(jìn)行Netty和NIO編程培訓(xùn)。《Netty權(quán)威指南》適合架構(gòu)師、設(shè)計(jì)師、軟件開發(fā)工程師、測(cè)試人員和其他對(duì)JavaNIO框架、Java通信感興趣的相關(guān)人士閱讀,相信通過學(xué)習(xí)《Netty權(quán)威指南》,能夠熟悉和掌握Netty這一優(yōu)秀的異步通信框架,實(shí)現(xiàn)高可用分布式系統(tǒng)的構(gòu)建。書的結(jié)構(gòu)與netty in action極為類似,內(nèi)容也極為類似。先把網(wǎng)絡(luò)編程模型講一遍,舉個(gè)例子,然后開始講netty中各個(gè)功能怎么用。
netty權(quán)威指南目錄
基礎(chǔ)篇 走進(jìn)Java NIO
第1章 Java的I/O演進(jìn)之路
1.1 I/O基礎(chǔ)入門
1.1.1 Linux網(wǎng)絡(luò)I/O模型簡(jiǎn)介
1.1.2 I/O多路復(fù)用技術(shù)
1.2 Java的I/O演進(jìn)
1.3 總結(jié)
第2章 NIO入門
2.1 傳統(tǒng)的BIO編程
2.1.1 BIO通信模型圖
2.1.2 同步阻塞式I/O創(chuàng)建的TimeServer源碼分析
2.1.3 同步阻塞式I/O創(chuàng)建的TimeClient源碼分析
2.2 偽異步I/O編程
2.2.1 偽異步I/O模型圖
2.2.2 偽異步式I/O創(chuàng)建的TimeServer源碼分析
2.2.3 偽異步I/O弊端分析
2.3 NIO編程
2.3.1 NIO類庫簡(jiǎn)介
2.3.2 NIO服務(wù)端序列圖
2.3.3 NIO創(chuàng)建的TimeServer源碼分析
2.3.4 NIO客戶端序列圖
2.3.5 NIO創(chuàng)建的TimeClient源碼分析
2.4 AIO編程
2.4.1 AIO創(chuàng)建的TimeServer源碼分析
2.4.2 AIO創(chuàng)建的TimeClient源碼分析
2.4.3 AIO版本時(shí)間服務(wù)器運(yùn)行結(jié)果
2.5 4種I/O的對(duì)比
2.5.1 概念澄清
2.5.2 不同I/O模型對(duì)比
2.6 選擇Netty的理由
2.6.1 不選擇Java原生NIO編程的原因
2.6.2 為什么選擇Netty
2.7 總結(jié)
入門篇 Netty NIO開發(fā)指南
第3章 Netty入門應(yīng)用
3.1 Netty開發(fā)環(huán)境的搭建
3.1.1 下載Netty的軟件包
3.1.2 搭建Netty應(yīng)用工程
3.2 Netty服務(wù)端開發(fā)
3.3 Netty客戶端開發(fā)
3.4 運(yùn)行和調(diào)試
3.4.1 服務(wù)端和客戶端的運(yùn)行
3.4.2 打包和部署
3.5 總結(jié)
第4章 TCP粘包/拆包問題的解決之道
4.1 TCP粘包/拆包
4.1.1 TCP粘包/拆包問題說明
4.1.2 TCP粘包/拆包發(fā)生的原因
4.1.3 粘包問題的解決策略
4.2 未考慮TCP粘包導(dǎo)致功能異常案例
4.2.1 TimeServer的改造
4.2.2 TimeClient的改造
4.2.3 運(yùn)行結(jié)果
4.3 利用LineBasedFrameDecoder解決TCP粘包問題
4.3.1 支持TCP粘包的TimeServer
4.3.2 支持TCP粘包的TimeClient
4.3.3 運(yùn)行支持TCP粘包的時(shí)間服務(wù)器程序
4.3.4 LineBasedFrameDecoder和StringDecoder的原理分析
4.4 總結(jié)
第5章 分隔符和定長(zhǎng)解碼器的應(yīng)用
5.1 DelimiterBasedFrameDecoder應(yīng)用開發(fā)
5.1.1 DelimiterBasedFrameDecoder服務(wù)端開發(fā)
5.1.2 DelimiterBasedFrameDecoder客戶端開發(fā)
5.1.3 運(yùn)行DelimiterBasedFrameDecoder服務(wù)端和客戶端
5.2 FixedLengthFrameDecoder應(yīng)用開發(fā)
5.2.1 FixedLengthFrameDecoder服務(wù)端開發(fā)
5.2.2 利用telnet命令行測(cè)試EchoServer服務(wù)端
5.3 總結(jié)
中級(jí)篇 Netty編解碼開發(fā)指南
第6章 編解碼技術(shù)
6.1 Java序列化的缺點(diǎn)
6.1.1 無法跨語言
6.1.2 序列化后的碼流太大
6.1.3 序列化性能太低
6.2 業(yè)界主流的編解碼框架
6.2.1 Google的Protobuf介紹
6.2.2 Facebook的Thrift介紹
6.2.3 JBoss Marshalling介紹
6.3 總結(jié)
第7章 Java序列化
7.1 Netty Java序列化服務(wù)端開發(fā)
7.2 Java序列化Netty客戶端開發(fā)
7.3 運(yùn)行結(jié)果
7.4 總結(jié)
第8章 Google Protobuf編解碼
8.1 Protobuf的入門
8.1.1 Protobuf開發(fā)環(huán)境搭建
8.1.2 Protobuf編解碼開發(fā)
8.1.3 運(yùn)行Protobuf例程
8.2 Netty的Protobuf服務(wù)端開發(fā)
8.2.1 Protobuf版本的圖書訂購(gòu)服務(wù)端開發(fā)
8.2.2 Protobuf版本的圖書訂購(gòu)客戶端開發(fā)
8.2.3 Protobuf版本的圖書訂購(gòu)程序功能測(cè)試
8.3 Protobuf的使用注意事項(xiàng)
8.4 總結(jié)
第9章 JBoss Marshalling編解碼
9.1 Marshalling開發(fā)環(huán)境準(zhǔn)備
9.2 Netty的Marshalling服務(wù)端開發(fā)
9.3 Netty的Marshalling客戶端開發(fā)
9.4 運(yùn)行Marshalling客戶端和服務(wù)端例程
9.5 總結(jié)
高級(jí)篇 Netty多協(xié)議開發(fā)和應(yīng)用
第10章 HTTP協(xié)議開發(fā)應(yīng)用
10.1 HTTP協(xié)議介紹
10.1.1 HTTP協(xié)議的URL
10.1.2 HTTP請(qǐng)求消息(HttpRequest)
10.1.3 HTTP響應(yīng)消息(HttpResponse)
10.2 Netty HTTP服務(wù)端入門開發(fā)
10.2.1 HTTP服務(wù)端例程場(chǎng)景描述
10.2.2 HTTP服務(wù)端開發(fā)
10.2.3 Netty HTTP文件服務(wù)器例程運(yùn)行結(jié)果
10.3 Netty HTTP+XML協(xié)議棧開發(fā)
10.3.1 開發(fā)場(chǎng)景介紹
10.3.2 HTTP+XML協(xié)議棧設(shè)計(jì)
10.3.3 高效的XML綁定框架JiBx
10.3.4 HTTP+XML編解碼框架開發(fā)
10.3.5 HTTP+XML協(xié)議棧測(cè)試
10.3.6 小結(jié)
10.4 總結(jié)
第11章 WebSocket協(xié)議開發(fā)
11.1 HTTP協(xié)議的弊端
11.2 WebSocket入門
11.2.1 WebSocket背景
11.2.2 WebSocket連接建立
11.2.3 WebSocket生命周期
11.2.4 WebSocket連接關(guān)閉
11.3 Netty WebSocket協(xié)議開發(fā)
11.3.1 WebSocket服務(wù)端功能介紹
11.3.2 WebSocket服務(wù)端開發(fā)
11.3.3 運(yùn)行WebSocket服務(wù)端
11.4 總結(jié)
第12章 UDP協(xié)議開發(fā)
12.1 UDP協(xié)議簡(jiǎn)介
12.2 UDP服務(wù)端開發(fā)
12.3 UDP客戶端開發(fā)
12.4 運(yùn)行UDP例程
12.5 總結(jié)
第13章 文件傳輸
13.1 文件的基礎(chǔ)知識(shí)
13.1.1 文件的概念
13.1.2 文件路徑
13.1.3 文件名稱
13.1.4 FileChannel簡(jiǎn)介
13.2 Netty文件傳輸開發(fā)
13.3 運(yùn)行Netty文件傳輸服務(wù)例程
13.4 總結(jié)
第14章 私有協(xié)議棧開發(fā)
14.1 私有協(xié)議介紹
14.2 Netty協(xié)議棧功能設(shè)計(jì)
14.2.1 網(wǎng)絡(luò)拓?fù)鋱D
14.2.2 協(xié)議棧功能描述
14.2.3 通信模型
14.2.4 消息定義
14.2.5 Netty協(xié)議支持的字段類型
14.2.6 Netty協(xié)議的編解碼規(guī)范
14.2.7 鏈路的建立
14.2.8 鏈路的關(guān)閉
14.2.9 可靠性設(shè)計(jì)
14.2.10 安全性設(shè)計(jì)
14.2.11 可擴(kuò)展性設(shè)計(jì)
14.3 Netty協(xié)議棧開發(fā)
14.3.1 數(shù)據(jù)結(jié)構(gòu)定義
14.3.2 消息編解碼
14.3.3 握手和安全認(rèn)證
14.3.4 心跳檢測(cè)機(jī)制
14.3.5 斷連重連
14.3.6 客戶端代碼
14.3.7 服務(wù)端代碼
14.4 運(yùn)行協(xié)議棧
14.4.1 正常場(chǎng)景
14.4.2 異常場(chǎng)景:服務(wù)端宕機(jī)重啟
14.4.3 異常場(chǎng)景:客戶端宕機(jī)重啟
14.5 總結(jié)
源碼分析篇 Netty功能介紹和源碼分析
第15章 ByteBuf和相關(guān)輔助類
15.1 ByteBuf功能說明
15.1.1 ByteBuf的工作原理
15.1.2 ByteBuf的功能介紹
15.2 ByteBuf源碼分析
15.2.1 ByteBuf的主要類繼承關(guān)系
15.2.2 AbstractByteBuf源碼分析
15.2.3 AbstractReferenceCountedByteBuf源碼分析
15.2.4 UnpooledHeapByteBuf源碼分析
15.2.5 PooledByteBuf內(nèi)存池原理分析
15.2.6 PooledDirectByteBuf源碼分析
15.3 ByteBuf相關(guān)的輔助類功能介紹
15.3.1 ByteBufHolder
15.3.2 ByteBufAllocator
15.3.3 CompositeByteBuf
15.3.4 ByteBufUtil
15.4 總結(jié)
第16章 Channel和Unsafe
16.1 Channel 功能說明
16.1.1 Channel的工作原理
16.1.2 Channel的功能介紹
16.2 Channel源碼分析
16.2.1 Channel的主要繼承關(guān)系類圖
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繼承關(guān)系類圖
16.4.2 AbstractUnsafe源碼分析
16.4.3 AbstractNioUnsafe源碼分析
16.4.4 NioByteUnsafe源碼分析
16.5 總結(jié)
第17章 ChannelPipeline和ChannelHandler
17.1 ChannelPipeline功能說明
17.1.1 ChannelPipeline的事件處理
17.1.2 自定義攔截器
17.1.3 構(gòu)建pipeline
17.1.4 ChannelPipeline的主要特性
17.2 ChannelPipeline源碼分析
17.2.1 ChannelPipeline的類繼承關(guān)系圖
17.2.2 ChannelPipeline對(duì)ChannelHandler的管理
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的類繼承關(guān)系圖
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 總結(jié)
第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 最佳實(shí)踐
18.2 NioEventLoop源碼分析
18.2.1 NioEventLoop設(shè)計(jì)原理
18.2.2 NioEventLoop繼承關(guān)系類圖
18.2.3 NioEventLoop
18.3 總結(jié)
第19章 Future和Promise
19.1 Future功能
19.2 ChannelFuture源碼分析
19.3 Promise功能介紹
19.4 Promise源碼分析
19.4.1 Promise繼承關(guān)系圖
19.4.2 DefaultPromise
19.5 總結(jié)
架構(gòu)和行業(yè)應(yīng)用篇 Netty高級(jí)特性
第20章 Java多線程編程在Netty中的應(yīng)用
20.1 Java內(nèi)存模型與多線程編程
20.1.1 硬件的發(fā)展和多任務(wù)處理
20.1.2 Java內(nèi)存模型
20.2 Netty的并發(fā)編程實(shí)踐
20.2.1 對(duì)共享的可變數(shù)據(jù)進(jìn)行正確的同步
20.2.2 正確的使用鎖
20.2.3 volatile的正確使用
20.2.4 CAS指令和原子類
20.2.5 線程安全類的應(yīng)用
20.2.6 讀寫鎖的應(yīng)用
20.2.7 線程安全性文檔說明
20.2.8 不要依賴線程優(yōu)先級(jí)
20.3 總結(jié)
第21章 Netty架構(gòu)剖析
21.1 Netty邏輯架構(gòu)
21.1.1 Reactor通信調(diào)度層
21.1.2 職責(zé)鏈ChannelPipeline
21.1.3 業(yè)務(wù)邏輯編排層(Service ChannelHandler)
21.2 關(guān)鍵架構(gòu)質(zhì)量屬性
21.2.1 高性能
21.2.2 可靠性
21.2.3 可定制性
21.2.4 可擴(kuò)展性
21.3 總結(jié)
第22章 Netty行業(yè)應(yīng)用
22.1 Netty在互聯(lián)網(wǎng)行業(yè)的應(yīng)用
22.1.1 傳統(tǒng)垂直架構(gòu)面臨的問題
22.1.2 阿里分布式服務(wù)框架Dubbo
22.1.3 Dubbo的架構(gòu)介紹
22.1.4 Netty在Dubbo中的應(yīng)用
22.1.5 Dubbo框架集成Netty源碼分析
22.2 Netty在大數(shù)據(jù)領(lǐng)域的應(yīng)用
22.3 Netty在游戲行業(yè)的應(yīng)用
22.3.1 游戲服務(wù)端架構(gòu)介紹
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版