深入理解序列化與反序列化

潘洪安

  • 出版商: 電子工業
  • 出版日期: 2020-11-01
  • 定價: $414
  • 售價: 8.5$352
  • 語言: 簡體中文
  • 頁數: 232
  • 裝訂: 平裝
  • ISBN: 7121396882
  • ISBN-13: 9787121396885
  • 已絕版

買這商品的人也買了...

商品描述

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

作者簡介

潘洪安

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

目錄大綱

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

第二部分序列化技術介紹
第2章Java序列化
2.1 Java序列化入門
2.1.1 Java序列化實現方式
2.1.2 Java序列化應用
2. 2 Java序列化核心類
2.2.1 Serializable
2.2.2 Externalizable
2.2.3 ObjectOutputStream
2.2.4 ObjectInputStream
2.3 Java序列化原理
2.3.1基本類型的序列化流程
2. 3.2基本類型數據的序列化大小
2.3.3對像類型的序列化流程
2.3.4對像類型的序列化數據成分
2.4 Java序列化高級特性
2.4.1 transient關鍵字
2 .4.2 static關鍵字
2.4.3 serialVersionUID
2.4.4序列化/反序列化hook
2.4.5數據校驗
2.5選擇Serializable還是Externalizable
2.6 Java序列化安全
2.6 .1 SealedObject
2.6.2 SignedObject
2.7小結

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

第4章Thrift
4.1 Thrift數據類型
4.1.1基本數據類型
4.1.2複雜數據類型
4.2 Thrift文件
4.2.1 Thrift規範
4.2.2名字空間
4.2.3 include關鍵字
4.2.4 const關鍵字
4.3 Thrift文件示例
4.4 Thrift生成的數據結構
4.4.1 enum生成Java代碼
4.4 .2 struct生成Java代碼
4.5 Thrift序列化原理
4.5.1序列化/反序列化核心類
4.5.2序列化流程
4.5.3反序列化流程
4.6 TProtocol的實現
4.6.1 TBinaryProtocol
4.6.2 TCompactProtocol
4.6.3 TJSONProtocol
4.6.4 TSimpleJSONProtocol
4.6 .5 TTupleProtocol
4.7 Java Serializable讀寫Thrift對象
4.8 TTransport
4.8.1內存型TTransport
4.8.2文件型TTransport
4.8.3特定功能型TTransport
4.8.4網絡型TTransport
4 .8.5總結
4.9小結

第5章Protocol Buffer
5.1數據類型
5.1.1基本數據類型
5.1.2複雜數據類型
5.2 proto文件
5.2.1 proto規範
5.2 .2 import關鍵字
5.3 proto文件示例
5.4 proto文件生成代碼
5.4.1手動執行protoc命令行
5.4.2 Maven集成方式
5.4.3 proto應用示例
5.4.4 proto生成的代碼文件
5.5 ProtoBuf生成Java對象
5.5.1 enum定義生成的Java對象
5.5.2 message定義生成的Java對象
5.6 Descriptor機制
5.6.1 FileDescriptor
5.6.2 PackageDescriptor
5.6.3 Descriptor
5.6.4 FieldDescriptor
5.6.5 OneOfDescriptor
5.6.6 EnumDescriptor和EnumValueDescriptor
5.6.7 ServiceDescriptor和MethodDescriptor
5.6.8 Descriptor和DescriptorProto
5. 6.9 Descriptor文件
5.7 ProtoBuf Builder機制
5.8 ProtoBuf數據序列化
5.8.1數據序列化大小
5.8.2數據序列化實現方式
5.8.3 ProtoBuf序列化流程
5.8. 4 ProtoBuf序列化應用示例
5.9 ProtoBuf數據反序列化
5.10ProtoBuf高級特性
5.10.1 extension
5.10.2 oneof
5.10.3 Any
5.11 ProtoBuf開源組件
5.11.1 protostuff
5.11.2 Cap'n Proto
5.12小結

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

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