首 頁(yè)
手機(jī)版

netty權(quán)威指南 第二版 李林鋒 pdf掃描版

  • 軟件大小:97.22M
  • 軟件語(yǔ)言:簡(jiǎn)體中文
  • 軟件類型:國(guó)產(chǎn)軟件
  • 軟件授權(quán):免費(fèi)軟件
  • 更新時(shí)間:2023/09/10
  • 軟件類別:電子閱讀
  • 應(yīng)用平臺(tái):Windows10,Windows8,Windows7,WinVista,Win2003,WinXP,Win2000
網(wǎng)友評(píng)分:9.0分
網(wǎng)友評(píng)論(1) 下載地址 收藏該頁(yè)
本地下載

netty權(quán)威指南 第二版是一本Netty架構(gòu)學(xué)習(xí)指南,由李林鋒編著。本書深入剖析了Netty,更全面系統(tǒng)講解底層架構(gòu)、實(shí)踐與源碼,能夠讓讀者更清晰地理解Netty 架構(gòu)設(shè)計(jì)理念,第2版增加了MessagePack 編解碼、服務(wù)端創(chuàng)建、客戶端創(chuàng)建、高性能之道、可靠性、安全性等內(nèi)容,內(nèi)容更精彩,非常適合架構(gòu)師、設(shè)計(jì)師、軟件開發(fā)工程師、測(cè)試人員以及其他對(duì)Java NIO 框架、Netty 感興趣的相關(guān)人士閱讀。通過(guò)閱讀netty權(quán)威指南 第二版,讀者不僅能夠掌握Netty基礎(chǔ)功能的使用和開發(fā),更能夠掌握Netty核心類庫(kù)的原理和使用約束,從而在實(shí)際工作中更好地使用Netty。

內(nèi)容介紹

《netty權(quán)威指南 第二版》是異步非阻塞通信領(lǐng)域的經(jīng)典之作,基于全新版本的Netty 5.0 編寫,是國(guó)內(nèi)首本深入介紹Netty 原理和架構(gòu)的書籍,也是作者多年實(shí)戰(zhàn)經(jīng)驗(yàn)的總結(jié)和濃縮。內(nèi)容不僅包含Java NIO入門知識(shí)、Netty 的基礎(chǔ)功能開發(fā)指導(dǎo)、編解碼框架定制等,還包括私有協(xié)議棧定制和開發(fā)、Netty 核心類庫(kù)源碼分析,以及Netty 的架構(gòu)剖析。

第2 版的主要變更如下,刪除第1 版中的如下章節(jié):

第7 章:Java 序列化;

第12 章:UDP 協(xié)議開發(fā);

第13 章:文件傳輸;

第22 章:Netty 行業(yè)應(yīng)用。

新增本書中的如下章節(jié):

第7 章:MessagePack 編解碼;

第13 章:服務(wù)端創(chuàng)建;

第14 章:客戶端創(chuàng)建;

第22 章:高性能之道;

第23 章:可靠性;

第24 章:安全性。

章節(jié)目錄

基礎(chǔ)篇 走進(jìn)Java NIO
第1 章 Java 的I/O 演進(jìn)之路......2
1.1 I/O 基礎(chǔ)入門......3
1.1.1 Linux 網(wǎng)絡(luò)I/O 模型簡(jiǎn)介......3
1.1.2 I/O 多路復(fù)用技術(shù)......6
1.2 Java 的I/O 演進(jìn)......8
1.3 總結(jié)...... 10
第2 章 NIO 入門...... 11
2.1 傳統(tǒng)的BIO 編程...... 11
2.1.1 BIO 通信模型圖...... 12
2.1.2 同步阻塞式I/O 創(chuàng)建的TimeServer 源碼分析...... 13
2.1.3 同步阻塞式I/O 創(chuàng)建的TimeClient 源碼分析...... 16
2.2 偽異步I/O 編程...... 18
2.2.1 偽異步I/O 模型圖...... 19
2.2.2 偽異步I/O 創(chuàng)建的TimeServer 源碼分析...... 19
2.2.3 偽異步I/O 弊端分析...... 21
2.3 NIO 編程...... 24
2.3.1 NIO 類庫(kù)簡(jiǎn)介...... 24
2.3.2 NIO 服務(wù)端序列圖...... 28
2.3.3 NIO 創(chuàng)建的TimeServer 源碼分析...... 30
2.3.4 NIO 客戶端序列圖...... 36
2.3.5 NIO 創(chuàng)建的TimeClient 源碼分析...... 39
2.4 AIO 編程...... 45
2.4.1 AIO 創(chuàng)建的TimeServer 源碼分析...... 46
2.4.2 AIO 創(chuàng)建的TimeClient 源碼分析...... 51
2.4.3 AIO 版本時(shí)間服務(wù)器運(yùn)行結(jié)果...... 56
2.5 4 種I/O 的對(duì)比...... 58
2.5.1 概念澄清...... 58
2.5.2 不同I/O 模型對(duì)比...... 59
2.6 選擇Netty 的理由...... 60
2.6.1 不選擇Java 原生NIO 編程的原因...... 61
2.6.2 為什么選擇Netty ...... 62
2.7 總結(jié)...... 63

入門篇 Netty NIO 開發(fā)指南

第3 章 Netty 入門應(yīng)用...... 66
3.1 Netty 開發(fā)環(huán)境的搭建...... 66
3.1.1 下載Netty 的軟件包...... 67
3.1.2 搭建Netty 應(yīng)用工程...... 67
3.2 Netty 服務(wù)端開發(fā)...... 68
3.3 Netty 客戶端開發(fā)...... 73
3.4 運(yùn)行和調(diào)試...... 76
3.4.1 服務(wù)端和客戶端的運(yùn)行...... 76
3.4.2 打包和部署...... 77
3.5 總結(jié)...... 77
第4 章 TCP 粘包/拆包問(wèn)題的解決之道...... 79
4.1 TCP 粘包/拆包...... 79
4.1.1 TCP 粘包/拆包問(wèn)題說(shuō)明...... 80
4.1.2 TCP 粘包/拆包發(fā)生的原因...... 80
4.1.3 粘包問(wèn)題的解決策略...... 81
4.2 未考慮TCP 粘包導(dǎo)致功能異常案例...... 82
4.2.1 TimeServer 的改造...... 82
4.2.2 TimeClient 的改造...... 83
4.2.3 運(yùn)行結(jié)果...... 84
4.3 利用LineBasedFrameDecoder 解決TCP 粘包問(wèn)題...... 85
4.3.1 支持TCP 粘包的TimeServer ...... 86
4.3.2 支持TCP 粘包的TimeClient...... 88
4.3.3 運(yùn)行支持TCP 粘包的時(shí)間服務(wù)器程序...... 90
4.3.4 LineBasedFrameDecoder 和StringDecoder 的原理分析...... 91
4.4 總結(jié)...... 92
第5 章 分隔符和定長(zhǎng)解碼器的應(yīng)用...... 93
5.1 DelimiterBasedFrameDecoder 應(yīng)用開發(fā)...... 94
5.1.1 DelimiterBasedFrameDecoder 服務(wù)端開發(fā)...... 94
5.1.2 DelimiterBasedFrameDecoder 客戶端開發(fā)...... 97
5.1.3 運(yùn)行DelimiterBasedFrameDecoder 服務(wù)端和客戶端...... 99
5.2 FixedLengthFrameDecoder 應(yīng)用開發(fā)...... 101
5.2.1 FixedLengthFrameDecoder 服務(wù)端開發(fā)...... 101
5.2.2 利用telnet 命令行測(cè)試EchoServer 服務(wù)端...... 103
5.3 總結(jié)...... 104

中級(jí)篇 Netty 編解碼開發(fā)指南

第6 章 編解碼技術(shù)...... 106
6.1 Java 序列化的缺點(diǎn)...... 107
6.1.1 法跨語(yǔ)言...... 107
6.1.2 序列化后的碼流太大...... 107
6.1.3 序列化性能太低...... 110
6.2 業(yè)界主流的編解碼框架...... 113
6.2.1 Google 的Protobuf 介紹...... 113
6.2.2 Thrift 介紹...... 115
6.2.3 JBoss Marshalling 介紹...... 116
6.3 總結(jié)...... 117
第7 章 MessagePack 編解碼...... 118
7.1 MessagePack 介紹...... 118
7.1.1 MessagePack 多語(yǔ)言支持...... 119
7.1.2 MessagePack Java API 介紹...... 119
7.1.3 MessagePack 開發(fā)包下載...... 120
7.2 MessagePack 編碼器和解碼器開發(fā)...... 120
7.2.1 MessagePack 編碼器開發(fā)...... 120
7.2.2 MessagePack 解碼器開發(fā)...... 121
7.2.3 功能測(cè)試...... 121
7.3 粘包/半包支持...... 124
7.4 總結(jié)...... 127
第8 章 Google Protobuf 編解碼...... 128
8.1 Protobuf 的入門...... 129
8.1.1 Protobuf 開發(fā)環(huán)境搭建...... 129
8.1.2 Protobuf 編解碼開發(fā)...... 131
8.1.3 運(yùn)行Protobuf 例程...... 133
8.2 Netty 的Protobuf 服務(wù)端開發(fā)...... 133
8.2.1 Protobuf 版本的圖書訂購(gòu)服務(wù)端開發(fā)...... 134
8.2.2 Protobuf 版本的圖書訂購(gòu)客戶端開發(fā)...... 136
8.2.3 Protobuf 版本的圖書訂購(gòu)程序功能測(cè)試...... 139
8.3 Protobuf 的使用注意事項(xiàng)...... 140
8.4 總結(jié)...... 142
第9 章 JBoss Marshalling 編解碼...... 143
9.1 Marshalling 開發(fā)環(huán)境準(zhǔn)備...... 143
9.2 Netty 的Marshalling 服務(wù)端開發(fā)...... 144
9.3 Netty 的Marshalling 客戶端開發(fā)...... 147
9.4 運(yùn)行Marshalling 客戶端和服務(wù)端例程...... 149
9.5 總結(jié)...... 150

高級(jí)篇 Netty 多協(xié)議開發(fā)和應(yīng)用

第10 章 HTTP 協(xié)議開發(fā)應(yīng)用...... 154
10.1 HTTP 協(xié)議介紹...... 155
10.1.1 HTTP 協(xié)議的URL ...... 155
10.1.2 HTTP 請(qǐng)求消息(HttpRequest)...... 155
10.1.3 HTTP 響應(yīng)消息(HttpResponse) ...... 158
10.2 Netty HTTP 服務(wù)端入門開發(fā)...... 159
10.2.1 HTTP 服務(wù)端例程場(chǎng)景描述...... 160
10.2.2 HTTP 服務(wù)端開發(fā)...... 160
10.2.3 Netty HTTP 文件服務(wù)器例程運(yùn)行結(jié)果...... 166
10.3 Netty HTTP+XML 協(xié)議棧開發(fā)...... 170
10.3.1 開發(fā)場(chǎng)景介紹...... 171
10.3.2 HTTP+XML 協(xié)議棧設(shè)計(jì)...... 174
10.3.3 高效的XML 綁定框架JiBx ...... 175
10.3.4 HTTP+XML 編解碼框架開發(fā)...... 183
10.3.5 HTTP+XML 協(xié)議棧測(cè)試...... 199
10.3.6 小結(jié)...... 201
10.4 總結(jié)...... 202
第11 章 WebSocket 協(xié)議開發(fā)...... 203
11.1 HTTP 協(xié)議的弊端...... 204
11.2 WebSocket 入門...... 204
11.2.1 WebSocket 背景...... 205
11.2.2 WebSocket 連接建立...... 206
11.2.3 WebSocket 生命周期...... 207
11.2.4 WebSocket 連接關(guān)閉...... 208
11.3 Netty WebSocket 協(xié)議開發(fā)...... 209
11.3.1 WebSocket 服務(wù)端功能介紹...... 209
11.3.2 WebSocket 服務(wù)端開發(fā)...... 210
11.3.3 運(yùn)行WebSocket 服務(wù)端...... 218
11.4 總結(jié)...... 219
第12 章 私有協(xié)議棧開發(fā)...... 221
12.1 私有協(xié)議介紹...... 221
12.2 Netty 協(xié)議棧功能設(shè)計(jì)...... 223
12.2.1 網(wǎng)絡(luò)拓?fù)鋱D...... 223
12.2.2 協(xié)議棧功能描述...... 224
12.2.3 通信模型...... 224
12.2.4 消息定義...... 225
12.2.5 Netty 協(xié)議支持的字段類型...... 226
12.2.6 Netty 協(xié)議的編解碼規(guī)范...... 227
12.2.7 鏈路的建立...... 229
12.2.8 鏈路的關(guān)閉...... 230
12.2.9 可靠性設(shè)計(jì)...... 230
12.2.10 安全性設(shè)計(jì)...... 232
12.2.11 可擴(kuò)展性設(shè)計(jì)...... 232
12.3 Netty 協(xié)議棧開發(fā)...... 233
12.3.1 數(shù)據(jù)結(jié)構(gòu)定義...... 233
12.3.2 消息編解碼...... 237
12.3.3 握手和安全認(rèn)證...... 241
12.3.4 心跳檢測(cè)機(jī)制...... 245
12.3.5 斷連重連...... 248
12.3.6 客戶端代碼...... 249
12.3.7 服務(wù)端代碼...... 251
12.4 運(yùn)行協(xié)議棧...... 252
12.4.1 正常場(chǎng)景...... 252
12.4.2 異常場(chǎng)景:服務(wù)端宕機(jī)重啟...... 253
12.4.3 異常場(chǎng)景:客戶端宕機(jī)重啟...... 256
12.5 總結(jié)...... 256
第13 章 服務(wù)端創(chuàng)建...... 258
13.1 原生NIO 類庫(kù)的復(fù)雜性...... 259
13.2 Netty 服務(wù)端創(chuàng)建源碼分析...... 259
13.2.1 Netty 服務(wù)端創(chuàng)建時(shí)序圖...... 260
13.2.2 Netty 服務(wù)端創(chuàng)建源碼分析...... 263
13.3 客戶端接入源碼分析...... 272
13.4 總結(jié)...... 275
第14 章 客戶端創(chuàng)建...... 276
14.1 Netty 客戶端創(chuàng)建流程分析...... 276
14.2.1 Netty 客戶端創(chuàng)建時(shí)序圖...... 276
14.2.2 Netty 客戶端創(chuàng)建流程分析...... 277
14.2 Netty 客戶端創(chuàng)建源碼分析...... 278
14.2.1 客戶端連接輔助類Bootstrap...... 278
14.2.2 客戶端連接操作...... 281
14.2.3 異步連接結(jié)果通知...... 283
14.2.4 客戶端連接超時(shí)機(jī)制...... 284
14.3 總結(jié)...... 286

源碼分析篇 Netty 功能介紹和源碼分析

第15 章 ByteBuf 和相關(guān)輔助類...... 288
15.1 ByteBuf 功能說(shuō)明...... 288
15.1.1 ByteBuf 的工作原理...... 289
15.1.2 ByteBuf 的功能介紹...... 294
15.2 ByteBuf 源碼分析...... 308
15.2.1 ByteBuf 的主要類繼承關(guān)系...... 309
15.2.2 AbstractByteBuf 源碼分析...... 310
15.2.3 AbstractReferenceCountedByteBuf 源碼分析...... 319
15.2.4 UnpooledHeapByteBuf 源碼分析...... 321
15.2.5 PooledByteBuf 內(nèi)存池原理分析...... 326
15.2.6 PooledDirectByteBuf 源碼分析...... 329
15.3 ByteBuf 相關(guān)的輔助類功能介紹...... 332
15.3.1 ByteBufHolder...... 332
15.3.2 ByteBufAllocator ...... 333
15.3.3 CompositeByteBuf ...... 334
15.3.4 ByteBufUtil ...... 336
15.4 總結(jié)...... 337
第16 章 Channel 和Unsafe ...... 338
16.1 Channel 功能說(shuō)明...... 338
16.1.1 Channel 的工作原理...... 339
16.1.2 Channel 的功能介紹...... 340
16.2 Channel 源碼分析...... 343
16.2.1 Channel 的主要繼承關(guān)系類圖...... 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 功能說(shuō)明...... 364
16.4 Unsafe 源碼分析...... 365
16.4.1 Unsafe 繼承關(guān)系類圖...... 365
16.4.2 AbstractUnsafe 源碼分析...... 366
16.4.3 AbstractNioUnsafe 源碼分析...... 375
16.4.4 NioByteUnsafe 源碼分析...... 379
16.5 總結(jié)...... 387
第17 章 ChannelPipeline 和ChannelHandler...... 388
17.1 ChannelPipeline 功能說(shuō)明...... 389
17.1.1 ChannelPipeline 的事件處理...... 389
17.1.2 自定義攔截器...... 391
17.1.3 構(gòu)建pipeline ...... 392
17.1.4 ChannelPipeline 的主要特性...... 393
17.2 ChannelPipeline 源碼分析...... 393
17.2.1 ChannelPipeline 的類繼承關(guān)系圖...... 393
17.2.2 ChannelPipeline 對(duì)ChannelHandler 的管理...... 393
17.2.3 ChannelPipeline 的inbound 事件...... 396
17.2.4 ChannelPipeline 的outbound 事件...... 397
17.3 ChannelHandler 功能說(shuō)明...... 398
17.3.1 ChannelHandlerAdapter 功能說(shuō)明...... 399
17.3.2 ByteToMessageDecoder 功能說(shuō)明...... 399
17.3.3 MessageToMessageDecoder 功能說(shuō)明...... 400
17.3.4 LengthFieldBasedFrameDecoder 功能說(shuō)明...... 400
17.3.5 MessageToByteEncoder 功能說(shuō)明...... 404
17.3.6 MessageToMessageEncoder 功能說(shuō)明...... 404
17.3.7 LengthFieldPrepender 功能說(shuō)明...... 405
17.4 ChannelHandler 源碼分析...... 406
17.4.1 ChannelHandler 的類繼承關(guān)系圖...... 406
17.4.2 ByteToMessageDecoder 源碼分析...... 407
17.4.3 MessageToMessageDecoder 源碼分析...... 410
17.4.4 LengthFieldBasedFrameDecoder 源碼分析...... 411
17.4.5 MessageToByteEncoder 源碼分析...... 415
17.4.6 MessageToMessageEncoder 源碼分析...... 416
17.4.7 LengthFieldPrepender 源碼分析...... 417
17.5 總結(jié)...... 418
第18 章 EventLoop 和EventLoopGroup...... 419
18.1 Netty 的線程模型...... 419
18.1.1 Reactor 單線程模型...... 420
18.1.2 Reactor 多線程模型...... 421
18.1.3 主從Reactor 多線程模型...... 422
18.1.4 Netty 的線程模型...... 423
18.1.5 最佳實(shí)踐...... 424
18.2 NioEventLoop 源碼分析...... 425
18.2.1 NioEventLoop 設(shè)計(jì)原理...... 425
18.2.2 NioEventLoop 繼承關(guān)系類圖...... 426
18.2.3 NioEventLoop...... 427
18.3 總結(jié)...... 436
第19 章 Future 和Promise ...... 438
19.1 Future 功能...... 438
19.2 ChannelFuture 源碼分析...... 443
19.3 Promise 功能介紹...... 445
19.4 Promise 源碼分析...... 447
19.4.1 Promise 繼承關(guān)系圖...... 447
19.4.2 DefaultPromise ...... 447
19.5 總結(jié)...... 449

架構(gòu)和行業(yè)應(yīng)用篇 Netty 高級(jí)特性

第20 章 Netty 架構(gòu)剖析...... 452
20.1 Netty 邏輯架構(gòu)...... 452
20.1.1 Reactor 通信調(diào)度層...... 453
20.1.2 職責(zé)鏈ChannelPipeline ...... 453
20.1.3 業(yè)務(wù)邏輯編排層(Service ChannelHandler)...... 454
20.2 關(guān)鍵架構(gòu)質(zhì)量屬性...... 454
20.2.1 高性能...... 454
20.2.2 可靠性...... 457
20.2.3 可定制性...... 460
20.2.4 可擴(kuò)展性...... 460
20.3 總結(jié)...... 460
第21 章 Java 多線程編程在Netty 中的應(yīng)用...... 461
21.1 Java 內(nèi)存模型與多線程編程...... 461
21.1.1 硬件的發(fā)展和多任務(wù)處理...... 461
21.1.2 Java 內(nèi)存模型...... 462
21.2 Netty 的并發(fā)編程實(shí)踐...... 464
21.2.1 對(duì)共享的可變數(shù)據(jù)進(jìn)行正確的同步...... 464
21.2.2 正確使用鎖...... 465
21.2.3 volatile 的正確使用...... 467
21.2.4 CAS 指令和原子類...... 470
21.2.5 線程安全類的應(yīng)用...... 472
21.2.6 讀寫鎖的應(yīng)用...... 476
21.2.7 線程安全性文檔說(shuō)明...... 477
21.2.8 不要依賴線程優(yōu)先級(jí)...... 478
21.3 總結(jié)...... 479
第22 章 高性能之道...... 480
22.1 RPC 調(diào)用性能模型分析...... 480
22.1.1 傳統(tǒng)RPC 調(diào)用性能差的三宗罪...... 480
22.1.2 I/O 通信性能三原則...... 481
22.2 Netty 高性能之道...... 482
22.2.1 異步非阻塞通信...... 482
22.2.2 高效的Reactor 線程模型...... 482
22.2.3 鎖化的串行設(shè)計(jì)...... 485
22.2.4 高效的并發(fā)編程...... 486
22.2.5 高性能的序列化框架...... 486
22.2.6 零拷貝...... 487
22.2.7 內(nèi)存池...... 491
22.2.8 靈活的TCP 參數(shù)配置能力...... 494
22.3 主流NIO 框架性能對(duì)比...... 495
22.4 總結(jié)...... 497
第23 章 可靠性...... 498
23.1 可靠性需求...... 498
23.1.1 宕機(jī)的代價(jià)...... 498
23.1.2 Netty 可靠性需求...... 499
23.2 Netty 高可靠性設(shè)計(jì)...... 500
23.2.1 網(wǎng)絡(luò)通信類故障...... 500
23.2.2 鏈路的有效性檢測(cè)...... 507
23.2.3 Reactor 線程的保護(hù)...... 510
23.2.4 內(nèi)存保護(hù)...... 513
23.2.5 流量整形...... 516
23.2.6 優(yōu)雅停機(jī)接口...... 519
23.3 優(yōu)化建議...... 520
23.3.1 發(fā)送隊(duì)列容量上限控制...... 520
23.3.2 回推發(fā)送失敗的消息...... 521
23.4 總結(jié)...... 521
第24 章 安全性...... 522
24.1 嚴(yán)峻的安全形勢(shì)...... 522
24.1.1 OpenSSL Heart bleed 漏洞...... 522
24.1.2 安全漏洞的代價(jià)...... 523
24.1.3 Netty 面臨的安全風(fēng)險(xiǎn)...... 523
24.2 Netty SSL 安全特性...... 525
24.2.1 SSL 單向認(rèn)證...... 525
24.2.2 SSL 雙向認(rèn)證...... 532
24.2.3 第三方CA 認(rèn)證...... 536
24.3 Netty SSL 源碼分析...... 538
24.3.1 客戶端...... 538
24.3.2 服務(wù)端...... 541
24.3.3 消息讀?。?544
24.3.4 消息發(fā)送...... 545
24.4 Netty 擴(kuò)展的安全特性...... 546
24.4.1 IP 地址黑名單機(jī)制...... 547
24.4.2 接入認(rèn)證...... 548
24.4 總結(jié)...... 550
第25 章 Netty 未來(lái)展望...... 551
25.1 應(yīng)用范圍...... 551
25.2 技術(shù)演進(jìn)...... 552
25.3 社區(qū)活躍度...... 552
25.4 Road Map ...... 552
25.5 總結(jié)...... 553
附錄A Netty 參數(shù)配置表...... 554

使用說(shuō)明

1、下載并解壓,得出pdf文件

2、如果打不開本文件,請(qǐng)務(wù)必下載pdf閱讀器

3、安裝后,在打開解壓得出的pdf文件

4、雙擊進(jìn)行閱讀試讀

收起介紹展開介紹
  • 下載地址
netty權(quán)威指南 第二版 李林鋒 pdf掃描版

有問(wèn)題? 點(diǎn)此報(bào)錯(cuò)

發(fā)表評(píng)論

1人參與,1條評(píng)論
第1樓北京市東城區(qū)聯(lián)通網(wǎng)友發(fā)表于: 2019-04-10 17:55:51
太帥了,感謝
0蓋樓(回復(fù))

熱門推薦