我在写Xposed模块的时候,接触到了序列化和反序列化的概念。于是我便整理了下来:

首先它们两个是计算机中用来存储和传输数据的重要技术
序列化:目的是将复杂的对象转换为方便传输的格式,以便在不同的系统当中交换数据。
反序列化:将接收到的易传数据转换回原始的对象以供处理。

下面是一个Protobuf和json对象的例子
json对象是一种可读文本
对于发送方来说,json是一个大的对象,因此需要序列化为更紧凑的二进制格式数据(Protobuf)
在整个二进制范围内,字符数据所占的范围是有限的,而纯二进制的PB可以表达字符范围外的二进制数据。因此PB的数据密度比由文本来表示的json更高
1.紧凑的PB不像json那样需要额外字符分割数据,例如引号逗号等对于无需这些标记来表示数据的PB来说都是多余的。因此PB比json更紧凑和高效
2.紧凑的数据易于传输,传输数据量比原始json对象少,传输速度快
3.PB有数据类型的优化、压缩和编码优化、模式驱动的方法来优化数据的表达
对于接收方来说,拿到传输过来的PB数据,对于处理这些数据来说并不容易。因此需要将PB数据反序列化为原始的json对象以便解析处理这些数据

在整个过程中,有点像文件的压缩和解压。但是它们之间的主要目的和侧重点不同
1.“序列化和反序列化”主要侧重于数据的传输性,“压缩和解压”主要侧重于数据的存储效率
2.它们的实现方式不同
3.“序列化和反序列化”应用于数据通信,“压缩和解压”应用于文件传输