您好,欢迎来到聚文网。 登录 免费注册
深入理解序列化与反序列化

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

  • 字数: 324800
  • 装帧: 平装
  • 出版社: 电子工业出版社
  • 作者: 潘洪安
  • 出版日期: 2020-11-01
  • 商品条码: 9787121396885
  • 版次: 1
  • 开本: 16开
  • 页数: 232
  • 出版年份: 2020
定价:¥69 销售价:登录后查看价格  ¥{{selectedSku?.salePrice}} 
库存: {{selectedSku?.stock}} 库存充足
{{item.title}}:
{{its.name}}
精选
编辑推荐
"1.本书作者为资深互联网工程师,具有丰富的从业经验,先后在百度、猎豹、快手等互联网公司从事大数据及后台开发工作,擅长大数据、分布式系统及后台高并发技术,喜欢探索技术原理,了解众多开发人员工作中的难点和痛点。本书深入浅出地讲解了互联网后台很重要的序列化技术,并对5种主流序列化技术进行性能分析和综合对比,能帮助开发人员更好地应对不同场景下的序列化需求。 2.阿里、腾讯、百度、快手、“中产之路”公众号、乐言科技等互联网公司众多业界大咖联袂力荐。"
内容简介
恰当的序列化方案不仅可以提高系统的通用性、强健性、安全性,优化系统性能,而且会让系统更加易于调试、便于扩展。本书从最基本的计算机编码知识入手,接着从内部机制、工作原理、核心类剖析、应用示例等方面对目前业界主流的5种序列化技术――Java序列化、JSON、Thrift、Protocol Buffer和Avro进行深入讲解,最后从序列化后的数据大小(空间)、序列化耗时(时间)、反序列化耗时(时间)三个维度对5种序列化技术进行性能分析和综合对比,让读者对序列化技术有更全面和深入的理解,从而更好地应对不同场景下的序列化需求。 本书兼顾技术原理和技术应用,适合初级开发者、高级开发人员、架构师及技术专家使用。
作者简介
潘洪安,本硕均就读于西北大学,先后在百度、猎豹、快手等互联网公司从事大数据及后台开发工作。擅长大数据、分布式系统及后台高并发技术,喜欢探究技术原理,拥有技术发明专利6项。
目录
第一部分 技术基础
第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

蜀ICP备2024047804号

Copyright 版权所有 © jvwen.com 聚文网