Java Kryo,Protostuff,Hessian序列化方式是什么


本篇内容主要讲解“JavaKryo,Protostuff,Hessian序列化方式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaKryo,Protostuff,Hessian序列化方式是什么”吧!前段时间在写RPC框架的时候用到了Kryo、Hessian、Protostuff三种序列化方式。但是当时因为急于实现功能,就只是简单的的看了一下如何使用这三种序列化方式,并没有去深入研究各自的特性,以及优点和缺点。知道现在就将RPC框架写完了之后,才有时间静下心来对三种方式做一个对比,总结。Kryo、Hessain、Protostuff都是第三方开源的序列化/反序列化框架,要了解其各自的特性,我们首先需要知道序列化/反序列化是什么:序列化:就是将对象转化成字节序列的过程。反序列化:就是讲字节序列转化成对象的过程。seriallization 序列化 : 将对象转化为便于传输的格式, 常见的序列化格式:二进制格式,免费云主机域名字节数组,json字符串,xml字符串。deseriallization 反序列化:将序列化的数据恢复为对象的过程如果对序列化相关概念还不是很清楚的同学可以参照美团技术团队的序列化和反序列化我们先创建一个新的Maven项目然后导入依赖工具类:kryoHessianProtostuff创建一个实体类进行测试编写测试类:运行截图:由图可知,Hessian序列化后字节所占的空间都显著比其他两种方式要大得多Hessian使用固定长度存储int和long,而kryo使用变长的int和long保证这种基本数据类型序列化后尽量小,实际应用中,很大的数据不会经常出现。Kryo进行序列化的时候,需要传入完整类名或者利用 register() 提前将类注册到Kryo上,其类与一个int型的ID相关联,序列中只存放这个ID,因此序列体积就更小,而Hessian则是将所有类字段信息都放入序列化字节数组中,直接利用字节数组进行反序列化,不需要其他参与,因为存的东西多处理速度就会慢点Kryo使用不需要实现Serializable接口,Hessian则需实现Kryo数据类的字段增、减,序列化和反序列化时无法兼容,而Hessian则兼容,Protostuff是只能在末尾添加新字段才兼容Kryo和Hessian使用涉及到的数据类中必须拥有无参构造函数Hessian会把复杂对象的所有属性存储在一个Map中进行序列化。所以在父类、子类存在同名成员变量的情况下,Hessian序列化时,先序列化子类,然后序列化父类,因此反序列化结果会导致子类同名成员变量被父类的值覆盖Kryo不是线程安全的,要通过ThreadLocal或者创建Kryo线程池来保证线程安全,而Protostuff则是线程安全的Protostuff和Kryo序列化的格式有相似之处,都是利用一个标记来记录字段类型,因此序列化出来体积都比较小到此,相信大家对“JavaKryo,Protostuff,Hessian序列化方式是什么”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: JS中call()、apply()和bind()函数怎么使用

今天小编给大家分享一下JS中call()、apply()和bind()函数怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。通过提供一个新的…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/19 13:25
下一篇 03/19 13:25

相关推荐