前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分布式基础__为什么会要序列化

分布式基础__为什么会要序列化

原创
作者头像
矿泉水
发布2018-05-11 11:37:36
1.2K1
发布2018-05-11 11:37:36
举报
文章被收录于专栏:风中追风风中追风

对 java对象的传输 是通过网络的 。然后网络都是通过字节传输的 所以需要用序列化的方式 将java对象转化为 字节,然后网络那头的接受端,拿到收到的字节 再反序列化出来一个对象,用来保证 java的对象能够跨进程传输。

总结了一下 序列化的几个要点: 1.在java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化 2.通过ObjectOutputStream和ObjectInputStream对对象进行序列化合反序列化操作 3. 对象是否允许被反序列化,不仅仅是取决于对象的代码是否一致,同时还有一个重要的因素(UID) 4. 序列化不保存静态变量 5. 要想父类对象也参与序列化操作,那么必须要让父类也实现Serializable接口 6. Transient关键字,主要是控制变量是否能够被序列化。如果没有被序列化的成员变量反序列化后,会被设置成初始值,比如String -> null 7. 通过序列化操作实现深度克隆

主流的序列化技术有: JSON/Hessian(2) /xml/protobuf/kryo/MsgPack/FST/thrift/protostuff/Avro

其中常用的是 JSON 但性能最好的是 百度的jprotobuf 百度对Google的 protobuf 进行了封装。 dubbo 使用的是Hessian2 序列化的速度很快 但是字节很大 jprotobuf 序列化的速度稍微慢点,但字节很小。

这两点就是选择不同序列化技术的原因所在。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档