1:为什么要序列化
数据传输的统计数据都一定是二进制数据信息,可是在Java里都是对象,是没有办法在互联网中开展传送的,因此就必须对Java对象开展序列化,并且这些规定这一变换优化算法是可逆性的,要不然如果不可逆那鬼知道你传出去的是个什么
2:Java原生态序列化
只需让类完成 Serializable 插口就可以了,序列化实际的完成是由ObjectOutputStream和ObjectInputStream来保持的
缺陷:
- 1:序列化码率很大
- 2:序列化高效率低
- 3:没法跨语言表达
优势:
- 1:简易
3:JSON序列化
JSON 可能是大家最了解的一种序列化格式了,JSON 是非常典型的 Key-Value 方法,并没有数据信息类型,是一种文字型序列化框架,JSON 的实际格式和特点,在网上有关的材料十分多,这儿就不会再详细介绍了。他在运用上也是很普遍的,不论是前台接待 Web 用 Ajax 启用、用硬盘储存文字类型的数据信息,或是根据 HTTP 协议书的 RPC 框架通讯,都是会挑选 JSON 格式。
缺陷:
- 1:JSON开展序列化的附加室内空间花销非常大,针对大信息量服务项目就代表必须极大的存储空间和硬盘花销
- 2:JSON并没有类型,但像Java这类强类型语言表达,必须根据反射面统一处理,因此性能不容易太好
优势:
- 1:简单明了
3:Hessian
Hessian 是动态性类型、二进制、紧密的,而且可跨语言表达移殖的一种序列化框架。Hessian 协议书要比 JDK、JSON 更为紧密,性能上应比 JDK、JSON 序列化高效率许多,并且形成的字节也更小
Student student = new Student();
student.setNo(101);
student.setName(\"HESSIAN\");
//把student对象转换为byte二维数组
ByteArrayOutputStream bos = new ByteArrayOutputStream();
Hessian2Output output = new Hessian2Output(bos);
output.writeObject(student);
output.flushBuffer();
byte[] data = bos.toByteArray();
bos.close();
//把刚刚序列化出去的byte二维数组转换为student对象
ByteArrayInputStream bis = new ByteArrayInputStream(data);
Hessian2Input input = new Hessian2Input(bis);
Student deStudent = (Student) input.readObject();
input.close();
System.out.println(deStudent);
缺陷:
- 1:官方网版本号对Java里边一些普遍对象的类型不兼容,
- 例如LinkedHashMap、LinkedHashSet 等,可是可以利用拓展CollectionDeserializer 类修补,
- Locale 类,可以利用拓展 ContextSerializerFactory 类修补;
- Byte/Short 反序列化的情况下变为 Integer
优势:
- 1:相对性于JDk,JSON,更为高效率,形成的字节更小
- 2:有非常不错的兼容性问题和可靠性
4:Protobuf
Protobuf 是 Google 企业里面的混和语言表达数据标准,是一种轻巧、高效率的非结构化数据储存格式,可以用以非结构化数据序列化,适用 Java、Python、C 、Go 等语言表达。Protobuf应用的过程中必须界定 IDL(Interface description language),随后采用不一样語言的 IDLc语言编译器,形成序列化java工具
缺陷:
- 1:为了更好地提升性能,protobuf选用了二进制格式开展编号。这立即致使了易读性差
- 2:针对具备折射和动态语言而言,用上去非常费力
优势:
- 1:高效率
- 2:适用多语种
- 3:适用往前,向后兼容
5:Thrift
Thrift是Facebook于2007年开发设计的跨语言表达的rpc服框架,给予多语言的编译程序作用,并保证各种网络服务器工作模式,客户根据Thrift的IDL(接口定义语言表达)来叙述接口函数及数据信息类型,随后根据Thrift的编译程序自然环境形成各种各样语言表达类型的端口文档,客户可以按照自身的必须选用不一样的语言表达开发设计手机客户端编码和服务端编码。
缺陷:
- 1:并没有官方网文本文档
- 2:Thrift序列化二进制不能读,调节艰难
- 3:buf fix 和升级不积极主动,维护保养成本费过高
- 4:RPC 在 0.6.1 更新到 0.7.0 是兼容问题的
优势:
- 1:特点丰富多彩
- 2:性能非常好
- 3:有很多开源软件的附近适用 全是 thrift
天下无难事、事竟成,背水一战,百二秦关终属楚; 有心人、天不辜负,勾践卧薪尝胆,三千越甲可吞吴. 奋斗吧,致每一个已经拼搏道路上的你!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。