Netty 實戰

Netty 實戰

作者: 王金柱
出版社: 清華大學
出版在: 2020-11-01
ISBN-13: 9787302563402
ISBN-10: 7302563403





內容描述


Netty是一個開源的、基於NIO的客戶端和服務器端Java編程框架。本書涵蓋Netty開發中絕大多數需要掌握的基本原理、方法與技巧,是一本比較實用的Netty參考書,可以作為Java Web應用開發人員的技術指導手冊。 全書分為10章,包括Netty基礎(從Java IO演進)、構建完整的Netty應用、Netty線程模型、Netty內存管理、Transport(傳輸)、Channel(通道)、Codec(編解碼器)和Bootstrap(引導)等核心內容的8章,還包括基於WebSocket構建Netty響應服務器和Netty消息推送系統這兩個項目實戰的2章。本書對應用Netty框架開發網絡應用有很好的指導作用。 本書內容簡潔明瞭、通俗易懂、原理清晰、重點突出、實例豐富、代碼精練,適合想要學習Netty的Java Web應用開發人員,同時也非常適合作為高等院校和培訓學校電腦及相關專業的輔助教材。


目錄大綱


目    錄
第1章  從Java IO到Netty 1
1.1  瞭解Java中的IO通信 1
1.1.1  IO通信基礎 1
1.1.2  “同步/異步”與“阻塞/非阻塞” 2
1.1.3  傳統BIO模式 3
1.1.4  偽異步IO模式 4
1.1.5  NIO模式 5
1.1.6  AIO模式 5
1.2  初識Netty 5
1.2.1  Netty特點 6
1.2.2  搭建Netty開發環境 6
1.2.3  Netty開發工具—IntelliJ IDEA 8
1.3  實戰:Netty版的“Hello World”程序 9
1.3.1  使用IntelliJ IDEA創建項目 9
1.3.2  引入Netty包 11
1.3.3  編寫Netty應用程序 14
1.3.4  測試HelloNetty服務器端應用 17
1.4  Netty框架模塊介紹 20
1.4.1  Netty框架功能模塊的組織結構 20
1.4.2  Netty Bootstrap入口模塊 21
1.4.3  Netty Channel傳輸通道模塊 22
1.4.4  Netty EventLoop事件循環模塊 23
1.4.5  Netty ChannelFuture異步通知接口 23
1.4.6  ChannelHandler與ChannelPipeline接口 24
1.5  小結 25
第2章  構建完整的Netty應用程序 26
2.1  搭建完整的Netty架構 26
2.1.1  通過Intellij IDEA創建Java應用程序 26
2.1.2  導入jar包文件 27
2.1.3  組織源碼目錄架構 28
2.2  開發Netty丟棄應用(DiscardNetty) 29
2.2.1  創建Java源碼文件 29
2.2.2  服務器端實現 29
2.2.3  客戶端實現 33
2.2.4  測試運行DiscardNetty應用 37
2.3  開發Netty響應應用(EchoNetty) 38
2.3.1  創建Java源碼文件 39
2.3.2  服務器端實現 39
2.3.3  客戶端實現 43
2.3.4  測試運行EchoNetty應用 47
2.4  小結 49
第3章  Netty線程模型 50
3.1  線程基礎 50
3.1.1  線程(Thread) 50
3.1.2  進程(Process) 51
3.1.3  進程與線程的關系 51
3.2  Java線程池 51
3.2.1  什麽是線程池(Thread Pool) 52
3.2.2  線程池模型 52
3.2.3  Java線程池 53
3.3  Reactor模型 54
3.3.1  I/O多路復用策略 54
3.3.2  Reactor模型和Proactor模型 54
3.3.3  Reactor線程模型 55
3.4  Netty線程模型 61
3.4.1  Netty線程模型與Reactor模型的關系 61
3.4.2  Netty單線程模型應用 62
3.4.3  Netty多線程模型應用 63
3.4.4  主從Netty多線程模型應用 64
3.4.5  Netty線程模型流程 66
3.5  小結 66
第4章  Netty內存管理 67
4.1  內存管理基礎 67
4.1.1  什麽是內存管理 68
4.1.2  Netty內存管理方式 68
4.1.3  Buffer模塊 68
4.2  Netty內存管理核心 69
4.2.1  什麽是ByteBuf 69
4.2.2  ByteBuf及其輔助類 69
4.2.3  ByteBuf工作原理 71
4.2.4  ByteBuf動態擴展 73
4.2.5  ByteBuf使用模式 75
4.2.6  ByteBuf字節操作 79
4.3  Netty內存管理輔助類 98
4.3.1  ByteBufAllocator內存分配 98
4.3.2  Unpooled負責非池化緩存 99
4.3.3  ByteBufHolder接口設計 99
4.3.4  ReferenceCounted引用計數器 101
4.3.5  ByteBufUtil接口設計 102
4.4  Netty實現“零拷貝” 102
4.5  Netty內存泄漏檢測機制 104
4.6  小結 107
第5章  Netty傳輸功能 108
5.1  Netty Transport基礎 108
5.2  Netty Transport傳輸方式 109
5.2.1  NIO方式 109
5.2.2  OIO方式 109
5.2.3  Local本地方式 110
5.2.4  Embedded嵌入方式 110
5.3  Netty Transport API 110
5.3.1  Channel接口原理 110
5.3.2  Channel接口功能 111
5.3.3  Channel接口應用實例 111
5.4  Netty Transport協議 113
5.4.1  NIO傳輸協議 113
5.4.2  OIO傳輸協議 115
5.4.3  本地傳輸協議 116
5.4.4  內嵌傳輸協議 116
5.5  小結 116
第6章  Netty Channel 117
6.1  Channel基礎 117
6.1.1  什麽是Channel 117
6.1.2  Stream與Channel對比 118
6.1.3  Java NIO Channel介紹 118
6.2  Netty Channel接口 119
6.2.1  Channel接口架構 119
6.2.2  Channel接口實現 120
6.2.3  Channel接口生命周期 123
6.3  Netty ChannelHandler接口 124
6.3.1  ChannelHandler接口架構 124
6.3.2  ChannelHandler接口生命周期 124
6.3.3  ChannelHandlerAdapter子接口 125
6.3.4  ChannelHandler子接口 127
6.3.5  ChannelHandler資源管理與泄漏等級 137
6.4  Netty ChannelPipeline接口 138
6.4.1  ChannelPipeline接口架構 138
6.4.2  ChannelPipeline與ChannelHandler關系 139
6.4.3  ChannelPipeline實現 139
6.4.4  ChannelPipeline修改 145
6.4.5  ChannelHandler執行ChannelPipeline與阻塞 146
6.4.6  ChannelPipeline事件傳遞 147
6.5  Netty ChannelHandlerContext接口 147
6.5.1  ChannelHandlerContext接口基礎 147
6.5.2  ChannelHandlerContext接口使用 148
6.6  小結 151
第7章  Netty編碼與解碼 152
7.1  Codec基礎 152
7.1.1  編碼與解碼 152
7.1.2  Codec的作用 153
7.1.3  Netty Codec基礎 153
7.2  Netty Encode編碼器 153
7.3  Netty Decode解碼器 156
7.4  Netty Codec抽象類 162
7.4.1  Netty Codec概述 162
7.4.2  ByteToMessageCodec類 162
7.4.3  MessageToMessageCodec類 163
7.4.4  CombinedChannelDuplexHandler類 164
7.5  小結 166
第8章  Netty引導 167
8.1  Bootstrap基礎 167
8.2  Bootstrap類型 168
8.3  Bootstrap客戶端 172
8.3.1  Bootstrap客戶端引導原理 173
8.3.2  Bootstrap客戶端類介紹 178
8.3.3  Bootstrap構建NIO客戶端 179
8.4  Bootstrap服務器端 180
8.4.1  ServerBootstrap服務器端引導原理 180
8.4.2  ServerBootstrap服務器端類介紹 182
8.4.3  ServerBootstrap構建NIO服務器端 183
8.5  從Channel引導客戶端 184
8.6  服務器端配置兩個EventLoopGroup 187
8.7  小結 189
第9章  項目實戰:基於WebSocket搭建Netty服務器 190
9.1  WebSocket協議 190
9.1.1  WebSocket介紹 191
9.1.2  WebSocket與Socket 191
9.1.3  WebSocket與HTTP和TCP 191
9.2  構建Netty響應服務器應用程序框架 192
9.2.1  Maven構建工具配置 192
9.2.2  IntelliJ IDEA通過Maven構建應用程序 193
9.2.3  Maven工程架構目錄 195
9.3  基於WebSocket的Netty響應服務器端開發 196
9.3.1  服務器端Server主入口類 196
9.3.2  服務器端Server子處理器類 198
9.3.3  服務器端Handler輔助類 200
9.4  基於WebSocket的Netty響應客戶端開發 202
9.5  測試運行Netty應用程序 204
9.6  小結 207
第10章  項目實戰:基於Netty構建消息推送系統 208
10.1  WebSocket特點 208
10.2  Netty消息推送系統應用程序架構 209
10.3  Netty消息推送系統服務器端開發 210
10.3.1  服務器端Server主入口類 210
10.3.2  服務器端Server子處理器類 213
10.3.3  服務器端Handler輔助類 214
10.3.4  服務器端Channel輔助類 219
10.4  Netty消息推送系統客戶端開發 220
10.4.1  基於Netty構建客戶端的實現 220
10.4.2  基於WebSocket的HTML5客戶端網頁 226
10.5  測試運行Netty應用程序 228
10.6  小結 231


作者介紹


王金柱,對JavaScript語言、jQuery框架、Node.js、React等Web前端開發有著獨到的經驗,並精通HTML/XHTML、CSS與PHP等開發語言的應用。有著10多年豐富的IT從業經歷,完成過多家大型央企與上市公司的企業級Web系統平台項目的前端模塊開發工作。




相關書籍

More Effective C#:改善C#代碼的50個有效方法(原書第2版)

作者 (美)比爾 瓦格納

2020-11-01

OCA Java SE 8 程序員認證考試指南 (Exam 1Z0-808) (OCA Java SE 8 Programmer I Exam Guide (Exams 1Z0-808))

作者 Kathy Sierra Bert Bates

2020-11-01

Java All-in-One For Dummies For Dummies, 5/e (Paperback)

作者 Doug Lowe

2020-11-01