编辑
2023-10-17
后端
00
请注意,本文编写于 571 天前,最后修改于 571 天前,其中某些信息可能已经过时。

目录

序列化
有哪些常用的序列化?
JDK原生序列化
JSON序列化
Hessian序列化
Protobuf
如何选择
常见问题
对象尽量不那么复杂
对象尽量小
对象不要有复杂的继承关系
尽量使用简单的原生的对象

序列化

序列化的目的就是为了把对象数据参数转化成二进制数据,且被接收方反序列化成为对应的对象和参数,让程序中的对象能在网络传递。RPC必须要序列化,应为必须要用到网络通信。

image.png

image.png

有哪些常用的序列化?

JDK原生序列化

难用有漏洞

JSON序列化

老生常谈了 1.JSON序列化空间开销大(使用unicode),可能会占大内存和磁盘开销(在文件存储时),JSON是一种文本序列化协议。 2.JSON无类型,有的语言需要反射解决类型问题,性能差。

Hessian序列化

动态,二进制,紧凑,性能要好很多,体积也更小。

Protobuf

体积小,速度快,兼容性好,语义描述清晰

如何选择

image.png

常见问题

对象尽量不那么复杂

性能损失达,序列化反序列化都是大损失

对象尽量小

增加请求耗时,降低性能

对象不要有复杂的继承关系

序列化反序列化复杂

尽量使用简单的原生的对象

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!