包郵 Netty實(shí)戰(zhàn)
-
>
全國計(jì)算機(jī)等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應(yīng)用
-
>
決戰(zhàn)行測5000題(言語理解與表達(dá))
-
>
軟件性能測試.分析與調(diào)優(yōu)實(shí)踐之路
-
>
第一行代碼Android
-
>
JAVA持續(xù)交付
-
>
EXCEL最強(qiáng)教科書(完全版)(全彩印刷)
-
>
深度學(xué)習(xí)
Netty實(shí)戰(zhàn) 版權(quán)信息
- ISBN:9787115453686
- 條形碼:9787115453686 ; 978-7-115-45368-6
- 裝幀:暫無
- 冊數(shù):暫無
- 重量:暫無
- 所屬分類:>>
Netty實(shí)戰(zhàn) 本書特色
Netty實(shí)戰(zhàn) 是為想要或者正在使用Java 從事高性能網(wǎng)絡(luò)編程的人而寫的,循序漸進(jìn)地介紹了Netty各個(gè)方面的內(nèi)容。 Netty實(shí)戰(zhàn) 共分為4 個(gè)部分:diyi部分詳細(xì)地介紹Netty 的相關(guān)概念以及核心組件,第二部分介紹自定義協(xié)議經(jīng)常用到的編解碼器,第三部分介紹Netty 對于應(yīng)用層高級協(xié)議的支持,會(huì)覆蓋常見的協(xié)議及其在實(shí)踐中的應(yīng)用,第四部分是幾個(gè)案例研究。此外,附錄部分會(huì)還簡單地介紹Maven,以及如何通過使用Maven 編譯和運(yùn)行Netty實(shí)戰(zhàn) 中的示例。 閱讀本書不需要讀者精通Java 網(wǎng)絡(luò)和并發(fā)編程。如果想要更加深入地理解本書背后的理念以及Netty 源碼本身,可以系統(tǒng)地學(xué)習(xí)一下Java 網(wǎng)絡(luò)編程、NIO、并發(fā)和異步編程以及相關(guān)的設(shè)計(jì)模式。
Netty實(shí)戰(zhàn) 內(nèi)容簡介
- Netty之父”Trustin Lee作序推薦 - *中間件高級技術(shù)專家為本書中文版作序推薦 - 系統(tǒng)而詳細(xì)地介紹了Netty的各個(gè)方面并附帶了即用型的優(yōu)質(zhì)示例 - 附帶行業(yè)一線公司的案例研究 - 極實(shí)用的Netty技術(shù)書 無論是構(gòu)建高性能的Web、游戲服務(wù)器、推送系統(tǒng)、RPC框架、消息中間件還是分布式大數(shù)據(jù)處理引擎,都離不開Netty,在整個(gè)行業(yè)中,Netty廣泛而成功的應(yīng)用,使其成為了Java高性能網(wǎng)絡(luò)編程的卓絕框架。 Netty的現(xiàn)Tech Lead Norman在Netty實(shí)戰(zhàn) 中循序漸進(jìn)地講解了Netty的各個(gè)關(guān)鍵部分,在看完Netty實(shí)戰(zhàn) 后,你不但可以熟練地使用Netty來構(gòu)建以上系統(tǒng),并且還可以避免很多常見的陷阱。 無論是想要學(xué)習(xí)Spring 5 、Spark、Cassandra等這樣的系統(tǒng),還是通過學(xué)習(xí)Netty來構(gòu)建自己的基于Java的高性能網(wǎng)絡(luò)框架,或者是更加具體的高性能Web或者游戲服務(wù)器等,本書都將是你的絕佳拍檔。 本書中文版基于zuixin的Netty4.1.9做了修訂,希望本書能夠給你帶來一個(gè)接近完美的閱讀體驗(yàn),并能幫到你。
Netty實(shí)戰(zhàn) 目錄
第1 章 Netty——異步和事件驅(qū)動(dòng) 3
1.1 Java 網(wǎng)絡(luò)編程 4
1.1.1 Java NIO 5
1.1.2 選擇器 6
1.2 Netty 簡介 6
1.2.1 誰在使用Netty 7
1.2.2 異步和事件驅(qū)動(dòng) 8
1.3 Netty 的核心組件 9
1.3.1 Channel 9
1.3.2 回調(diào) 9
1.3.3 Future 10
1.3.4 事件和ChannelHandler 11
1.3.5 把它們放在一起 12
1.4 小結(jié) 13
第2 章 你的**款Netty應(yīng)用程序 14
2.1 設(shè)置開發(fā)環(huán)境 14
2.1.1 獲取并安裝Java 開發(fā)工具包 14
2.1.2 下載并安裝IDE 15
2.1.3 下載和安裝Apache Maven 15
2.1.4 配置工具集 16
2.2 Netty 客戶端/服務(wù)器概覽 16
2.3 編寫Echo 服務(wù)器 17
2.3.1 ChannelHandler 和業(yè)務(wù)邏輯 17
2.3.2 引導(dǎo)服務(wù)器 18
2.4 編寫Echo 客戶端 21
2.4.1 通過ChannelHandler 實(shí)現(xiàn)客戶端邏輯 21
2.4.2 引導(dǎo)客戶端 22
2.5 構(gòu)建和運(yùn)行Echo 服務(wù)器和客戶端 24
2.5.1 運(yùn)行構(gòu)建 24
2.5.2 運(yùn)行Echo 服務(wù)器和客戶端 27
2.6 小結(jié) 29
第3 章 Netty 的組件和設(shè)計(jì) 30
3.1 Channel、EventLoop 和ChannelFuture 30
3.1.1 Channel 接口 31
3.1.2 EventLoop 接口 31
3.1.3 ChannelFuture 接口 32
3.2 ChannelHandler 和ChannelPipeline 32
3.2.1 ChannelHandler 接口 32
3.2.2 ChannelPipeline 接口 33
3.2.3 更加深入地了解ChannelHandler 34
3.2.4 編碼器和解碼器 35
3.2.5 抽象類SimpleChannelInboundHandler 35
3.3 引導(dǎo) 36
3.4 小結(jié) 37
第4 章 傳輸 38
4.1 案例研究:傳輸遷移 38
4.1.1 不通過Netty 使用OIO和NIO 39
4.1.2 通過Netty 使用OIO和NIO 41
4.1.3 非阻塞的Netty 版本 42
4.2 傳輸API 43
4.3 內(nèi)置的傳輸 45
4.3.1 NIO——非阻塞I/O 46
4.3.2 Epoll——用于Linux的本地非阻塞傳輸 47
4.3.3 OIO——舊的阻塞I/O 48
4.3.4 用于JVM 內(nèi)部通信的Local 傳輸 48
4.3.5 Embedded 傳輸 49
4.4 傳輸?shù)挠美?9
4.5 小結(jié) 51
第5 章 ByteBuf 52
5.1 ByteBuf 的API 52
5.2 ByteBuf 類——Netty的數(shù)據(jù)容器 53
5.2.1 它是如何工作的 53
5.2.2 ByteBuf 的使用模式 53
5.3 字節(jié)級操作 57
5.3.1 隨機(jī)訪問索引 57
5.3.2 順序訪問索引 57
5.3.3 可丟棄字節(jié) 58
5.3.4 可讀字節(jié) 58
5.3.5 可寫字節(jié) 59
5.3.6 索引管理 59
5.3.7 查找操作 60
5.3.8 派生緩沖區(qū) 60
5.3.9 讀/寫操作 62
5.3.10 更多的操作 64
5.4 ByteBufHolder 接口 65
5.5 ByteBuf 分配 65
5.5.1 按需分配:ByteBufAllocator 接口 65
5.5.2 Unpooled 緩沖區(qū) 67
5.5.3 ByteBufUtil 類 67
5.6 引用計(jì)數(shù) 67
5.7 小結(jié) 68
第6 章 ChannelHandler 和ChannelPipeline 70
6.1 ChannelHandler 家族 70
6.1.1 Channel 的生命周期 70
6.1.2 ChannelHandler的生命周期 71
6.1.3 ChannelInboundHandler接口 71
6.1.4 ChannelOutboundHandler接口 73
6.1.5 ChannelHandler 適配器 74
6.1.6 資源管理 74
6.2 ChannelPipeline 接口 76
6.2.1 修改ChannelPipeline 78
6.2.2 觸發(fā)事件 79
6.3 ChannelHandlerContext接口 80
6.3.1 使用ChannelHandlerContext 82
6.3.2 ChannelHandler 和ChannelHandlerContext 的高級用法 84
6.4 異常處理 86
6.4.1 處理入站異常 86
6.4.2 處理出站異常 87
6.5 小結(jié) 88
第7 章 EventLoop 和線程模型 89
7.1 線程模型概述 89
7.2 EventLoop 接口 90
7.2.1 Netty 4 中的I/O 和事件處理 92
7.2.2 Netty 3 中的I/O 操作 92
7.3 任務(wù)調(diào)度 93
7.3.1 JDK 的任務(wù)調(diào)度API 93
7.3.2 使用EventLoop調(diào)度任務(wù) 94
7.4 實(shí)現(xiàn)細(xì)節(jié) 95
7.4.1 線程管理 95
7.4.2 EventLoop/線程的分配 96
7.5 小結(jié) 98
第8 章 引導(dǎo) 99
8.1 Bootstrap 類 99
8.2 引導(dǎo)客戶端和無連接協(xié)議 101
8.2.1 引導(dǎo)客戶端 102
8.2.2 Channel 和EventLoopGroup 的兼容性 103
8.3 引導(dǎo)服務(wù)器 104
8.3.1 ServerBootstrap 類 104
8.3.2 引導(dǎo)服務(wù)器 105
8.4 從Channel引導(dǎo)客戶端 107
8.5 在引導(dǎo)過程中添加多個(gè)ChannelHandler 108
8.6 使用Netty 的ChannelOption 和屬性 110
8.7 引導(dǎo)DatagramChannel 111
8.8 關(guān)閉 112
8.9 小結(jié) 112
第9 章 單元測試 113
9.1 EmbeddedChannel概述 113
9.2 使用EmbeddedChannel測試ChannelHandler 115
9.2.1 測試入站消息 115
9.2.2 測試出站消息 118
9.3 測試異常處理 119
9.4 小結(jié) 121
第二部分 編解碼器
第10 章 編解碼器框架 125
10.1 什么是編解碼器 125
10.2 解碼器 125
10.2.1 抽象類ByteToMessageDecoder 126
10.2.2 抽象類ReplayingDecoder 127
10.2.3 抽象類MessageToMessageDecoder 128
10.2.4 TooLongFrameException 類 130
10.3 編碼器 131
10.3.1 抽象類MessageToByteEncoder 131
10.3.2 抽象類MessageToMessageEncoder 132
10.4 抽象的編解碼器類 133
10.4.1 抽象類ByteToMessageCodec 133
10.4.2 抽象類MessageToMessageCodec 134
10.4.3 CombinedChannelDuplexHandler 類 137
10.5 小結(jié) 138
第11 章 預(yù)置的ChannelHandler和編解碼器 139
11.1 通過SSL/TLS 保護(hù)Netty 應(yīng)用程序 139
11.2 構(gòu)建基于Netty 的HTTP/HTTPS 應(yīng)用程序 141
11.2.1 HTTP 解碼器、編碼器和編解碼器 141
11.2.2 聚合HTTP 消息 143
11.2.3 HTTP 壓縮 144
11.2.4 使用HTTPS 145
11.2.5 WebSocket 146
11.3 空閑的連接和超時(shí) 148
11.4 解碼基于分隔符的協(xié)議和基于長度的協(xié)議 150
11.4.1 基于分隔符的協(xié)議 150
11.4.2 基于長度的協(xié)議 153
11.5 寫大型數(shù)據(jù) 155
11.6 序列化數(shù)據(jù) 1 57
11.6.1 JDK 序列化 157
11.6.2 使用JBoss Marshalling進(jìn)行序列化 157
11.6.3 通過Protocol Buffers序列化 159
11.7 小結(jié) 160
第三部分 網(wǎng)絡(luò)協(xié)議
第12 章 WebSocket 163
12.1 WebSocket 簡介 163
12.2 我們的WebSocket 示例應(yīng)用程序 164
12.3 添加WebSocket支持 165
12.3.1 處理HTTP 請求 165
12.3.2 處理WebSocket 幀 168
12.3.3 初始化ChannelPipeline 169
12.3.4 引導(dǎo) 171
12.4 測試該應(yīng)用程序 173
12.5 小結(jié) 176
第13章 使用UDP 廣播事件 177
13.1 UDP 的基礎(chǔ)知識(shí) 177
13.2 UDP 廣播 178
13.3 UDP 示例應(yīng)用程序 178
13.4 消息 POJO:LogEvent 179
13.5 編寫廣播者 180
13.6 編寫監(jiān)視器 185
13.7 運(yùn)行LogEventBroadcaster 和LogEventMonitor 187
13.8 小結(jié) 189
第四部分 案例研究
第14 章 案例研究,**部分 193
14.1 Droplr—構(gòu)建移動(dòng)服務(wù) 193
14.1.1 這一切的起因 193
14.1.2 Droplr 是怎樣工作的 194
14.1.3 創(chuàng)造一個(gè)更加快速的上傳體驗(yàn) 194
14.1.4 技術(shù)!196
14.1.5 性能 199
14.1.6 小結(jié)——站在巨人的肩膀上 200
14.2 Firebase—實(shí)時(shí)的數(shù)據(jù)同步服務(wù) 200
14.2.1 Firebase 的架構(gòu) 201
14.2.2 長輪詢 201
14.2.3 HTTP 1.1 keep-alive和流水線化 204
14.2.4 控制SslHandler 205
14.2.5 Firebase 小結(jié) 207
14.3 Urban Airship—構(gòu)建移動(dòng)服務(wù) 207
14.3.1 移動(dòng)消息的基礎(chǔ)知識(shí) 207
14.3.2 第三方遞交 208
14.3.3 使用二進(jìn)制協(xié)議的例子 209
14.3.4 直接面向設(shè)備的遞交 211
14.3.5 Netty 擅長管理大量的并發(fā)連接 212
14.3.6 Urban Airship 小結(jié)——跨越防火墻邊界 213
14.4 小結(jié) 214
第15 章 案例研究,第二部分 215
15.1 Netty 在Facebook 的使用:Nifty 和Swift 215
15.1.1 什么是Thrift 215
15.1.2 使用Netty 改善Java Thrift 的現(xiàn)狀 216
15.1.3 Nifty 服務(wù)器的設(shè)計(jì) 217
15.1.4 Nifty 異步客戶端的設(shè)計(jì) 220
15.1.5 Swift:一種更快的構(gòu)建Java Thrift 服務(wù)的方式 221
15.1.6 結(jié)果 221
15.1.7 Facebook 小結(jié) 224
15.2 Netty 在Twitter的使用:Finagle 224
15.2.1 Twitter 成長的煩惱 224
15.2.2 Finagle 的誕生 224
15.2.3 Finagle 是如何工作的 225
15.2.4 Finagle 的抽象 230
15.2.5 故障管理 231
15.2.6 組合服務(wù) 232
15.2.7 未來:Netty 232
15.2.8 Twitter 小結(jié) 233
15.3 小結(jié) 233
附錄 Maven 介紹 234
Netty實(shí)戰(zhàn) 作者簡介
作者簡介 Norman Maurer是蘋果公司的zishen軟件工程師,同時(shí)也是Netty的核心開發(fā)人員。 Marvin Allen Wolfthal是Dell Services的顧問,他使用Netty實(shí)現(xiàn)了多個(gè)任務(wù)關(guān)鍵型的企業(yè)系統(tǒng)。 譯者簡介 何品,目前是*的一名zishen軟件工程師,熱愛網(wǎng)絡(luò)、并發(fā)、異步相關(guān)的主題以及函數(shù)式編程,同時(shí)也是Netty、Akka等項(xiàng)目的貢獻(xiàn)者,活躍于Scala社區(qū),目前也在從事GraphQL相關(guān)的開發(fā)工作。
- >
唐代進(jìn)士錄
- >
龍榆生:詞曲概論/大家小書
- >
中國人在烏蘇里邊疆區(qū):歷史與人類學(xué)概述
- >
自卑與超越
- >
二體千字文
- >
巴金-再思錄
- >
月亮虎
- >
有舍有得是人生