TOP
0
0
魅麗。花火原創小說66折起
深入理解序列化與反序列化(簡體書)
滿額折

深入理解序列化與反序列化(簡體書)

人民幣定價:69 元
定  價:NT$ 414 元
優惠價:87360
領券後再享88折
無庫存,下單後進貨(採購期約45個工作天)
可得紅利積點:10 點
相關商品
商品簡介
作者簡介
名人/編輯推薦
目次

商品簡介

恰當的序列化方案不僅可以提高系統的通用性、強健性、安全性,優化系統性能,而且會讓系統更加易於調試、便於擴展。本書從最基本的計算機編碼知識入手,接著從內部機制、工作原理、核心類剖析、應用示例等方面對目前業界主流的5種序列化技術――Java序列化、JSON、Thrift、Protocol Buffer和Avro進行深入講解,最後從序列化後的數據大小(空間)、序列化耗時(時間)、反序列化耗時(時間)三個維度對5種序列化技術進行性能分析和綜合對比,讓讀者對序列化技術有更全面和深入的理解,從而更好地應對不同場景下的序列化需求。 本書兼顧技術原理和技術應用,適合初級開發者、高級開發人員、架構師及技術專家使用。

作者簡介

潘洪安,本碩均就讀於西北大學,先後在百度、獵豹、快手等互聯網公司從事大數據及後臺開發工作。擅長大數據、分布式系統及後臺高併發技術,喜歡探索技術原理,擁有技術發明專利6項。

名人/編輯推薦

1.本書作者為資深互聯網工程師,具有豐富的從業經驗,先後在百度、獵豹、快手等互聯網公司從事大數據及後臺開發工作,擅長大數據、分布式系統及後臺高併發技術,喜歡探索技術原理,瞭解眾多開發人員工作中的難點和痛點。本書深入淺出地講解了互聯網後臺很重要的序列化技術,並對5種主流序列化技術進行性能分析和綜合對比,能幫助開發人員更好地應對不同場景下的序列化需求。
2.阿裡、騰訊、百度、快手、“中產之路”公眾號、樂言科技等互聯網公司眾多業界大咖聯袂力薦。
阿裡、騰訊、百度、快手、“中產之路”公眾號等業界大咖力薦:帶你深入理解Java序列化、JSON、Thrift、Protocol Buffer和Avro等主流序列化技術1.本書作者為資深互聯網工程師,具有豐富的從業經驗,先後在百度、獵豹、快手等互聯網公司從事大數據及後臺開發工作,擅長大數據、分布式系統及後臺高併發技術,喜歡探索技術原理,瞭解眾多開發人員工作中的難點和痛點。本書深入淺出地講解了互聯網後臺很重要的序列化技術,並對5種主流序列化技術進行性能分析和綜合對比,能幫助開發人員更好地應對不同場景下的序列化需求。
2.阿裡、騰訊、百度、快手、“中產之路”公眾號、樂言科技等互聯網公司眾多業界大咖聯袂力薦。

董西成·快手數據平臺部數據工廠負責人數據序列化是分布式領域非常重要的基礎技術,本書比較全面地介紹了序列化技術的基本概念、技術實現及內部原理,很值得一讀。

曾劍鋒·深圳市瑞能實業股份有限公司軟件研發總監本書從最基本的計算機編碼講起,接著講解目前互聯網常用的序列化/反序列化技術的原理,再輔之以應用示例,幫助讀者更好地進行理解,最後總結這些技術的優缺點、性能優劣。整本書讀下來,可以看出作者的用心良苦和紮實的技術功底,能把一個細分的技術講得這麼細、這麼深,實屬難得。強烈推薦在序列化/反序列化方面有苦惱或者想深入瞭解的讀者閱讀這本書,它一定會給你帶來系統和完整的知識結構。

譚金軍·騰訊天美工作室群高級工程師本書先介紹了各種基礎編碼方式,再循序漸進地介紹了序列化/反序列化的底層原理及應用。我可以肯定的是:認真讀完本書,如果你是位“新手”,你將對序列化/反序列化有較全面的認識;如果你是位“老手”,你將會有更深刻的理解。本書作者是引領我進入計算機世界的良師益友,他學習計算機技術的思路對我的職業生涯產生了很大的影響。看完本書後,我發現其架構與作者的學習思路非常相似,相信這會對想瞭解序列化技術的讀者有非常大的幫助!

胡偉·快手主App客戶端架構師對於程序員來說,與序列化相關的工作可以說是非常熟悉和神秘的,因為序列化本質上是一種數據編碼工作,所以本書從計算機編碼知識開始進行詳細介紹,讓讀者對序列化的理解更加容易,然後對業界主流的5種序列化技術進行深入講解,從內部機制、工作原理、核心類剖析到應用示例,讓讀者對序列化知識有更全面和深入的理解,從而更好地應對不同場景下的序列化需求。對程序員而言,這是一本很實用的書。

章碧雲·快手平臺研發部技術專家互聯網數據存儲和網絡通信都依賴於數據序列化和反序列化。本書是我見過的第一本系統、全面地介紹序列化和反序列化技術的著作,從底層字節編碼原理到互聯網廣泛應用的序列化技術,都進行了詳細的分析和講解。相信閱讀本書,可以讓你更加深入地理解序列化和反序列技術,並將其應用到日常的開發中。

葉邦宇·快手用戶增長部架構師序列化和反序列化是後端開發中非常基礎和底層的技術,也是微服務架構裡必不可少的組成部分,業內有多種方案,紛繁雜亂,本書對其做了非常全面的梳理和介紹,頗值得一讀。

王永·資深互聯網技術從業者本書全面系統地梳理了序列化和反序列化技術的知識結構,使讀者能夠全面地學習並深刻理解相關知識。整本書通俗易懂,由淺入深,既有廣度又有深度,是一本難得的學習序列化和反序列化知識的教材。

岳京杭·知名公眾號“中產之路”作者通過個人公眾號“中產之路”的牽線,我把洪安推薦給了編輯牛老師,也算為促成本書的出版做出了一點貢獻。本書的切入點是一個橫向主題,以“點-線-面”的方式全面闡述了序列化技術,從淺入深,從why 到 how,值得深讀,也可以作為工具書翻閱。

目次

第一部分 技術基礎
第1章 基礎知識 2
1.1 計算機編碼 2
1.1.1 比特、字節與字符 2
1.1.2 字節對齊 3
1.1.3 數字的表示 3
1.1.4 Big-Endian與Little-Endian 4
1.2 字符編碼 6
1.2.1 字符集與字符編碼 6
1.2.2 英文字符集與編碼 6
1.2.3 中文字符集與編碼 6
1.2.4 Unicode字符集與編碼 7
1.3 Base64編碼 10
1.3.1 編碼規則 10
1.3.2 解碼規則 10
1.3.3 索引表 11
1.3.4 編碼與解碼示例 11
1.3.5 Java應用示例 12
1.4 Varint編碼 14
1.4.1 編碼規則 14
1.4.2 Varint編碼示例 15
1.4.3 Varint編碼的不足 16
1.5 ZigZag編碼 17
1.5.1 ZigZag編碼流程 17
1.5.2 ZigZag編碼算法實現 18
1.5.3 ZigZag反編碼流程 18
1.5.4 ZigZag反編碼算法實現 19
1.5.5 總結 20
1.6 初識序列化/反序列化 20
1.6.1 技術背景 20
1.6.2 技術特徵 21
1.6.3 IDL序列化引擎 21

第二部分 序列化技術介紹
第2章 Java序列化 24
2.1 Java序列化入門 24
2.1.1 Java序列化實現方式 24
2.1.2 Java序列化應用 26
2.2 Java序列化核心類 27
2.2.1 Serializable 27
2.2.2 Externalizable 28
2.2.3 ObjectOutputStream 28
2.2.4 ObjectInputStream 30
2.3 Java序列化原理 30
2.3.1 基本類型的序列化流程 30
2.3.2 基本類型數據的序列化大小 32
2.3.3 對象類型的序列化流程 33
2.3.4 對象類型的序列化數據成分 38
2.4 Java序列化高級特性 41
2.4.1 transient關鍵字 41
2.4.2 static關鍵字 41
2.4.3 serialVersionUID 42
2.4.4 序列化/反序列化hook 43
2.4.5 數據校驗 46
2.5 選擇Serializable還是Externalizable 46
2.6 Java序列化安全 47
2.6.1 SealedObject 47
2.6.2 SignedObject 48
2.7 小結 49

第3章 JSON 50
3.1 JSON結構 50
3.1.1 JSON值類型 50
3.1.2 JSON語法 51
3.2 Gson的實現 53
3.2.1 Gson值類型 53
3.2.2 Gson核心類 54
3.2.3 Gson生成JSON原理 54
3.2.4 TypeAdapter 59
3.2.5 Gson解析JSON原理 62
3.2.6 Gson應用示例 62
3.2.7 Gson特性 64
3.3 開源工具庫介紹 66
3.3.1 Fastjson 66
3.3.2 Jackson 67
3.3.3 開源工具庫對比 67
3.4 小結 68

第4章 Thrift 69
4.1 Thrift數據類型 69
4.1.1 基本數據類型 69
4.1.2 複雜數據類型 70
4.2 Thrift文件 70
4.2.1 Thrift規範 70
4.2.2 名字空間 71
4.2.3 include關鍵字 71
4.2.4 const關鍵字 72
4.3 Thrift文件示例 72
4.4 Thrift生成的數據結構 74
4.4.1 enum生成Java代碼 74
4.4.2 struct生成Java代碼 75
4.5 Thrift序列化原理 77
4.5.1 序列化/反序列化核心類 77
4.5.2 序列化流程 80
4.5.3 反序列化流程 82
4.6 TProtocol的實現 84
4.6.1 TBinaryProtocol 85
4.6.2 TCompactProtocol 88
4.6.3 TJSONProtocol 91
4.6.4 TSimpleJSONProtocol 96
4.6.5 TTupleProtocol 98
4.7 Java Serializable讀寫Thrift對象 100
4.8 TTransport 101
4.8.1 內存型TTransport 103
4.8.2 文件型TTransport 106
4.8.3 特定功能型TTransport 108
4.8.4 網絡型TTransport 114
4.8.5 總結 117
4.9 小結 118

第5章 Protocol Buffer 119
5.1 數據類型 119
5.1.1 基本數據類型 119
5.1.2 複雜數據類型 120
5.2 proto文件 121
5.2.1 proto規範 121
5.2.2 import關鍵字 122
5.3 proto文件示例 122
5.4 proto文件生成代碼 123
5.4.1 手動執行protoc命令行 123
5.4.2 Maven集成方式 124
5.4.3 proto應用示例 126
5.4.4 proto生成的代碼文件 127
5.5 ProtoBuf生成Java對象 127
5.5.1 enum定義生成的Java對象 127
5.5.2 message定義生成的Java對象 129
5.6 Descriptor機制 132
5.6.1 FileDescriptor 133
5.6.2 PackageDescriptor 136
5.6.3 Descriptor 137
5.6.4 FieldDescriptor 137
5.6.5 OneOfDescriptor 137
5.6.6 EnumDescriptor和EnumValueDescriptor 138
5.6.7 ServiceDescriptor和MethodDescriptor 138
5.6.8 Descriptor和DescriptorProto 138
5.6.9 Descriptor文件 139
5.7 ProtoBuf Builder機制 146
5.8 ProtoBuf數據序列化 147
5.8.1 數據序列化大小 147
5.8.2 數據序列化實現方式 150
5.8.3 ProtoBuf序列化流程 153
5.8.4 ProtoBuf序列化應用示例 156
5.9 ProtoBuf數據反序列化 158
5.10ProtoBuf高級特性 161
5.10.1 extension 161
5.10.2 oneof 162
5.10.3 Any 164
5.11 ProtoBuf開源組件 165
5.11.1 protostuff 165
5.11.2 Cap'n Proto 167
5.12小結 167

第6章 Avro 168
6.1 Avro數據Schema 168
6.1.1 Avro數據類型 168
6.1.2 Avro Schema文件定義 169
6.1.3 Avro Schema文件的生效模式 171
6.2 Avro生成Java代碼 174
6.3 Avro序列化核心類 175
6.3.1 Schema 175
6.3.2 GenericData 176
6.3.3 Encoder 176
6.3.4 Decoder 187
6.3.5 DatumWriter 188
6.4 Avro序列化過程 194
6.5 小結 195

第三部分 深入理解序列化技術
第7章 序列化技術性能 198
7.1 序列化技術特徵對比 198
7.2 序列化技術性能對比 199
7.2.1 對各類型數據的處理 199
7.2.2 序列化數據大小對比 200
7.2.3 序列化耗時對比 211
7.2.4 反序列化耗時對比 211
7.2.5 性能對比結論 212
7.3 自定義IDL序列化工具 213
7.4 小結 214

您曾經瀏覽過的商品

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 360
無庫存,下單後進貨
(採購期約45個工作天)

暢銷榜

客服中心

收藏

會員專區