注册 登录 进入教材巡展 进入在线书城
#

出版时间:2020年11月

出版社:电子工业出版社

以下为《深入理解序列化与反序列化》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 电子工业出版社
  • 9787121396885
  • 1-1
  • 362546
  • 61234024-0
  • 平塑
  • 16开
  • 2020年11月
  • 325
  • 232
  • 工学
  • 计算机科学与技术
  • 计算机科学与技术
  • 研究生、本科
内容简介
本书从最基本的计算机编码知识入手,接着从内部机制、工作原理、核心类剖析、应用示例等方面对目前业界主流的5种序列化技术——Java序列化、JSON、Thrift、Protocol Buffer和Avro进行深入讲解,最后从序列化后的数据大小(空间)、序列化耗时(时间)、反序列化耗时(时间)三个维度对5种序列化技术进行性能分析和综合对比,让读者对序列化技术有更全面和深入的理解,从而更好地应对不同场景下的序列化需求。本书兼顾技术原理和技术应用,适合初级开发者、高级开发人员、架构师及技术专家使用。
目录
第一部分 技术基础__eol__第1章 基础知识 2__eol__1.1 计算机编码 2__eol__1.1.1 比特、字节与字符 2__eol__1.1.2 字节对齐 3__eol__1.1.3 数字的表示 3__eol__1.1.4 Big-Endian与Little-Endian 4__eol__1.2 字符编码 6__eol__1.2.1 字符集与字符编码 6__eol__1.2.2 英文字符集与编码 6__eol__1.2.3 中文字符集与编码 6__eol__1.2.4 Unicode字符集与编码 7__eol__1.3 Base64编码 10__eol__1.3.1 编码规则 10__eol__1.3.2 解码规则 10__eol__1.3.3 索引表 11__eol__1.3.4 编码与解码示例 11__eol__1.3.5 Java应用示例 12__eol__1.4 Varint编码 14__eol__1.4.1 编码规则 14__eol__1.4.2 Varint编码示例 15__eol__1.4.3 Varint编码的不足 16__eol__1.5 ZigZag编码 17__eol__1.5.1 ZigZag编码流程 17__eol__1.5.2 ZigZag编码算法实现 18__eol__1.5.3 ZigZag反编码流程 18__eol__1.5.4 ZigZag反编码算法实现 19__eol__1.5.5 总结 20__eol__1.6 初识序列化/反序列化 20__eol__1.6.1 技术背景 20__eol__1.6.2 技术特征 21__eol__1.6.3 IDL序列化引擎 21__eol____eol__第二部分 序列化技术介绍__eol__第2章 Java序列化 24__eol__2.1 Java序列化入门 24__eol__2.1.1 Java序列化实现方式 24__eol__2.1.2 Java序列化应用 26__eol__2.2 Java序列化核心类 27__eol__2.2.1 Serializable 27__eol__2.2.2 Externalizable 28__eol__2.2.3 ObjectOutputStream 28__eol__2.2.4 ObjectInputStream 30__eol__2.3 Java序列化原理 30__eol__2.3.1 基本类型的序列化流程 30__eol__2.3.2 基本类型数据的序列化大小 32__eol__2.3.3 对象类型的序列化流程 33__eol__2.3.4 对象类型的序列化数据成分 38__eol__2.4 Java序列化高级特性 41__eol__2.4.1 transient关键字 41__eol__2.4.2 static关键字 41__eol__2.4.3 serialVersionUID 42__eol__2.4.4 序列化/反序列化hook 43__eol__2.4.5 数据校验 46__eol__2.5 选择Serializable还是Externalizable 46__eol__2.6 Java序列化安全 47__eol__2.6.1 SealedObject 47__eol__2.6.2 SignedObject 48__eol__2.7 小结 49__eol____eol__第3章 JSON 50__eol__3.1 JSON结构 50__eol__3.1.1 JSON值类型 50__eol__3.1.2 JSON语法 51__eol__3.2 Gson的实现 53__eol__3.2.1 Gson值类型 53__eol__3.2.2 Gson核心类 54__eol__3.2.3 Gson生成JSON原理 54__eol__3.2.4 TypeAdapter 59__eol__3.2.5 Gson解析JSON原理 62__eol__3.2.6 Gson应用示例 62__eol__3.2.7 Gson特性 64__eol__3.3 开源工具库介绍 66__eol__3.3.1 Fastjson 66__eol__3.3.2 Jackson 67__eol__3.3.3 开源工具库对比 67__eol__3.4 小结 68__eol____eol__第4章 Thrift 69__eol__4.1 Thrift数据类型 69__eol__4.1.1 基本数据类型 69__eol__4.1.2 复杂数据类型 70__eol__4.2 Thrift文件 70__eol__4.2.1 Thrift规范 70__eol__4.2.2 名字空间 71__eol__4.2.3 include关键字 71__eol__4.2.4 const关键字 72__eol__4.3 Thrift文件示例 72__eol__4.4 Thrift生成的数据结构 74__eol__4.4.1 enum生成Java代码 74__eol__4.4.2 struct生成Java代码 75__eol__4.5 Thrift序列化原理 77__eol__4.5.1 序列化/反序列化核心类 77__eol__4.5.2 序列化流程 80__eol__4.5.3 反序列化流程 82__eol__4.6 TProtocol的实现 84__eol__4.6.1 TBinaryProtocol 85__eol__4.6.2 TCompactProtocol 88__eol__4.6.3 TJSONProtocol 91__eol__4.6.4 TSimpleJSONProtocol 96__eol__4.6.5 TTupleProtocol 98__eol__4.7 Java Serializable读写Thrift对象 100__eol__4.8 TTransport 101__eol__4.8.1 内存型TTransport 103__eol__4.8.2 文件型TTransport 106__eol__4.8.3 特定功能型TTransport 108__eol__4.8.4 网络型TTransport 114__eol__4.8.5 总结 117__eol__4.9 小结 118__eol____eol__第5章 Protocol Buffer 119__eol__5.1 数据类型 119__eol__5.1.1 基本数据类型 119__eol__5.1.2 复杂数据类型 120__eol__5.2 proto文件 121__eol__5.2.1 proto规范 121__eol__5.2.2 import关键字 122__eol__5.3 proto文件示例 122__eol__5.4 proto文件生成代码 123__eol__5.4.1 手动执行protoc命令行 123__eol__5.4.2 Maven集成方式 124__eol__5.4.3 proto应用示例 126__eol__5.4.4 proto生成的代码文件 127__eol__5.5 ProtoBuf生成Java对象 127__eol__5.5.1 enum定义生成的Java对象 127__eol__5.5.2 message定义生成的Java对象 129__eol__5.6 Descriptor机制 132__eol__5.6.1 FileDescriptor 133__eol__5.6.2 PackageDescriptor 136__eol__5.6.3 Descriptor 137__eol__5.6.4 FieldDescriptor 137__eol__5.6.5 OneOfDescriptor 137__eol__5.6.6 EnumDescriptor和EnumValueDescriptor 138__eol__5.6.7 ServiceDescriptor和MethodDescriptor 138__eol__5.6.8 Descriptor和DescriptorProto 138__eol__5.6.9 Descriptor文件 139__eol__5.7 ProtoBuf Builder机制 146__eol__5.8 ProtoBuf数据序列化 147__eol__5.8.1 数据序列化大小 147__eol__5.8.2 数据序列化实现方式 150__eol__5.8.3 ProtoBuf序列化流程 153__eol__5.8.4 ProtoBuf序列化应用示例 156__eol__5.9 ProtoBuf数据反序列化 158__eol__5.10ProtoBuf高级特性 161__eol__5.10.1 extension 161__eol__5.10.2 oneof 162__eol__5.10.3 Any 164__eol__5.11 ProtoBuf开源组件 165__eol__5.11.1 protostuff 165__eol__5.11.2 Cap‘n Proto 167__eol__5.12小结 167__eol____eol__第6章 Avro 168__eol__6.1 Avro数据Schema 168__eol__6.1.1 Avro数据类型 168__eol__6.1.2 Avro Schema文件定义 169__eol__6.1.3 Avro Schema文件的生效模式 171__eol__6.2 Avro生成Java代码 174