从java序列化来聊聊目前流行的几个编解码框架

来源:互联网 发布:it外包公司怎么样 编辑:程序博客网 时间:2024/06/06 02:02

本章我们不讲代码纯粹的来聊聊序列化相关的知识和介绍各种序列化工具。

我们为什么要序列化

举个例子:下雨天我们要打伞,但是之后我们要把伞折叠起来,方便我们存放。那么运用到我们java中道理是一样的,我们要将数据分解成字节流,以便存储在文件中或在网络上传输,这叫序列化。我们要用的时候,就需要将字节流重构成对象,这叫反序列化。不知道我这么说大家能不能理解。

java序列化的缺点

java自己提供序列化而且用起来也非常简单,但是在远程服务调用中很少用它,主要存在以下缺点:

1.无法跨语言。这应该是java序列化最致命的问题了。由于java序列化是java内部私有的协议,其他语言不支持,导致别的语言无法反序列化,这严重阻碍了它的应用。2.序列后的码流太大。java序列化的大小是二进制编码的5倍多!3.序列化性能太低。java序列化的性能只有二进制编码的6.17倍,可见java序列化性能实在太差了。

总结 我们判断一个编码框架的优劣主要从以下几个方面:

1.是否支持跨语言,支持语种是否丰富2.编码后的码流3.编解码的性能4.类库是否小巧,API使用是否方便5.使用者开发的工作量和难度。

对比一下,java的前3条变现太差,导致在远程服务调用中很少用它。下面我们介绍几个流行的编解码框架。

几个流行的编解码框架

1.google的Protobuf

Protobuf是google开源的项目,全称 Google Protocol Buffers.特点:

1.结构化数据存储格式(xml,json等)2.高性能编解码技术3.语言和平台无关,扩展性好4.支持java,C++,Python三种语言。

2.faceBook的Thrift

Thrift源于faceBook,2007年facebook将Thrift做为一个开源项目交给了apache基金会。特点:

1.Thrift支持多种语言(C++,C#,Cocoa,Erlag,Haskell,java,Ocami,Perl,PHP,Python,Ruby,和SmallTalk)2.Thrift适用了组建大型数据交换及存储工具,对于大型系统中的内部数据传输,相对于Json和xml在性能上和传输大小上都有明显的优势。3.Thrift支持三种比较典型的编码方式。(通用二进制编码,压缩二进制编码,优化的可选字段压缩编解码)

3.JBoss Marshlling介绍

JBoss Marshalling是一个java对象的序列化API包,修正了java自带的序列化包的很多问题,但又保持跟java.io.Serializable接口的兼容,同时又增加了一些可调的参数和附加特性,并且这些参数和特性可通过工厂类的配置,,很强大啊有木有。特点:

1.可拔插的类解析器,提供更加便捷的类加载定制策略,通过一个接口即可实现定制。2.可拔插的对象替换技术,不需要通过继承的方式。3.可拔插的预定义类缓存表,可以减少序列化的字节数组长度,提升常用类型的对象序列化性能。4.无须实现java.io.Serializable接口5.通过缓存技术提升对象的序列化性能。6.使用非常简单

结尾

好了就到这里吧,后面会慢慢讲到,坚持就会有奇迹,加油!

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苹果6镜头模糊了怎么办 6s前摄像头进灰怎么办 手机镜头进灰了怎么办 6s摄像头进灰了怎么办 7plus摄像头进灰怎么办 苹果喇叭进灰了怎么办 苹果7摄像头进灰怎么办 锁眼里胶水堵了 怎么办 锁眼被牙签堵了怎么办 锁孔被胶水堵了怎么办 快手上不了同城怎么办 昌珉入伍宋茜怎么办 嗓子里卡了鱼刺怎么办 在餐厅吃到虫子怎么办 在餐厅吃出虫子怎么办 孕妇被虫子咬了怎么办 吃外卖吃到虫子怎么办 杯子盖拧错位了怎么办 身边有吸毒的人怎么办 如果牛难产了怎么办要 牛难产拉不出来怎么办 老公发现老婆有外遇怎么办 睡眠不好半夜老是醒怎么办 拔完智齿肿了怎么办 拔牙后咽口水疼怎么办 吃了脏东西拉肚子怎么办 微信遇到仙人跳怎么办 牙有裂痕疼应该怎么办 胸罩在学校掉了怎么办 锁屏密码忘记了怎么办 中汇支付不到账怎么办 痘痘毁容烂脸怎么办 我的手机掉了怎么办 公司不给开工资怎么办 我有卵巢老化怎么办呢 老师骂了我,我该怎么办 我的牙齿很难看怎么办 门牙摔了个缺怎么办 鱼身上鱼鳞烂了怎么办 鱼身上发白烂了怎么办 养的鱼身上烂了怎么办