序列化与反序列化杂谈
为什么需要序列化
如图我们可以看到,在内存中Group的对象引用是十分杂乱的,它包含大量的指针指向内存地址
这时候如果我们想将Group对象通过网络传输到远端设备时,这时候这些指针是没有用的,因为在A设备上的内存地址,在B设备上肯定是错误的。
这时候我们就需要使用序列化提取对象的数据,转换成类似String的结构,然后在远端设备上使用反序列化还原对象。
常见序列化工具
编码
由于UTF-16对于英文一个字母需要占用两个字节,而UTF-8只需要占用一个字节,所以导致国外大部分流行UTF-8。
但实际上UTF-16对于中文来说更加友好,一个中文字符在UTF-16上只需要占用2个字节,而在UTF-8上需要占用3个字节。
Protocol Buffer
任何对象都可以转换成Proto文件,再通过Protoc编译器工具编译成对应语言的类库文件,然后可以通过序列化反序列化进行语言之间的对象切换
网友评论