博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
讲真:序列化必读
阅读量:5795 次
发布时间:2019-06-18

本文共 2244 字,大约阅读时间需要 7 分钟。

hot3.png

     序列化是啥啥是序列化为啥要序列化把啥序列化不序列化行不行?问题真多,馒头要一口一口吃问题要一个一个回答。所谓序列化就是格式化,感觉哪不对劲,是约定的格式化,及格了,能够满足正向操作和逆向操作的约定格式化,良好了,能高效稳定满足正向操作和逆向操作的约定格式化,满分了,能提供轻松扩展并高效稳定满足正向操作和逆向操作的约定格式化,耶~恭喜你都会抢答啦。能够支持PHP语言的......,歇菜没你事别瞎掺和。

    格式化好理解,标题正中段落开头空两个字段落结束换行这就是格式化,修饰词约定的意思是说你看见这个格式就知道哪个是标题哪个是正文,满足正向操作和逆向操作意思是说能转换过来也必须能丝毫不差原样还原回去,高效好理解一次操作就占一半以上系统开销,数据中一大半是冗余信息估计没人爱用,稳定可靠不能动不动就掉链子,一会儿异常了一会儿解析失败了一会儿又丢数据了。序列化是啥啥是序列化我解释完了,觉得不对的下面就不用看了。

    为啥要序列化,一提这茬儿内心满满的委屈一把辛酸泪呀。早年电脑不联网的时候数据都在本地格式化着用,后来联网以后因为硬件和网络等差异,高低字节序主机字节序网络字节序各种问题扑面而来,接着就是各种协议呀标准呀,国际组织特地制定一大套RFC规范,虽然有些规范允许用户通过夹带数据的形式提供扩展,但用起来还是有种种不便。这些年随着云技术发展,对海量数据传输、存储和安全就变的越来越重要,RFC解决的是公有问题,序列化解决的就是私有问题。多年前项目实施中需要跨设备数据传输,Y哥打算把结构体强制类型转换以后扔过来,为这事跟他PK,后来呢没有后来了。其实吧,当时用的是刀片组服务器,无盘的从刀去mount主刀,其实这个方案在当时的确没问题,但以后呢,谁能保证采购的设备都用刀片,谁能保证服务器都是一个品牌一个型号的呢,矮油说出来真是舒服多了。

    把啥序列化,废话当然是数据了,还能是鸡蛋灌饼吗。其实数据跟数据还是有差别的,数据类型有n多种编码n多种长短不定必选的单选的多选的,把这些特性要一一恰当地表达出来。

    不序列化行不行,行呀,你开心就好!法律规定纳税是公民应尽的义务,又没规定数据必须序列化。

 

    谈谈评判一个序列化工具优劣的标准吧。

    首先是效率,包括计算效率和载荷效率两个方面。假设完成一次处理需要耗时一秒钟,序列化和反序列化时间越短则效率越高,不能把时间都耽误在这方面,这些操作对用户来说是不可见的,用户是上帝浪费他们的宝贵时间就是图财害命。网络是按流量计费的,多用多花少用少花不用不花,报文中没用的东西占一半,有效载荷仅仅50%,再压缩也瞎掰,传输花钱存储花钱,过日子要精打细算,吃不穷穿不穷算计不到就受穷,有用的留下没用的统统丢掉。

    其次是扩展,约定好的不能老变,今天添点这个明天删点那个简单类型改对象了元素改数组了天天追着屁股后面收拾能不累嘛,开始前把这些潜在的问题都想好,省掉多少麻烦呀,扩展性好不好全仰仗工具本身了,一个优秀的序列化解决方案可以让大家开开心心合作很久,否则就等着被喷吧,内部合作就算了大家碍于情面,外部合作除非你是甲方。某年某月某运营商的某负责人指着当今全球最大的通信设备制造商某产品负责人的鼻子大骂你们还想不想干了,这个场景在十年后的今天依旧记忆犹新,听说最近要“混改”,固网用户大量流失移动用户增长乏力,一手好牌打的这么烂也只能呵呵哒了,不好意思跑题了~

 

protobuf

avro

thrift

bson

json

xml

......

计算效率

贼快

超快

特快

够快

挺快

还算快

别提了

载荷效率

贼高

贼高

也贼高

高拉特

一般般

真一般

别瞎比

数据类型

啥都有

全都有

真都有

够用

有缺失

不全面

都有啥

开发周期

花雕

状元红

女儿红

加饭

一口闷

对瓶吹

吐一身

研发成本

不差钱

咱有钱

哥趁钱

这小钱

哥没钱

真没钱

别提钱

技术门槛

高智商

智商高

智高商

有智商

无痴呆

向左看

向右看

综合点评

实时业务吐血推荐

大数据业务推荐

定制业务推荐

系统内推荐

Java体系小快灵推荐

前端或配置推荐

确定你比人家更出色

    光说不练假把式光练不说傻把势,上干货。

    Protobuf(java版本):

    Protobuf(C++版本):

    Avro(C++版本):

    Bson(C++版本):

    Json(java版本):

    Json(C++版本):

    Xml(C++版本):

    最后给出一个个人的序列化反序列化实例,该实例是基于KLV可扩展跨平台可加密可压缩支持宽窄字符,受GTP协议启发供企业内部平台应用的解决方案,站在巨人的肩膀上前各位前辈致以崇高的敬意。

     最近共享经济火呀,共享与分享一字之差,站在第一人称的角度,共享的可以是属于自己的也可以是属于别人的,分享却只能是属于自己的才会拿出来分给其他人,分享与分赃也是一字之差,分享是高尚的行为,分赃却是肮脏丑陋的罪恶。博客属于自媒体,技术博客不同于八卦博客,是自媒体中的阳春白雪,它可以陶冶人的情操,舒缓人的情绪,助消化助睡眠,缓解女性妊娠期孕吐反应。

    要想成为一名优秀的程序猿,靠的是三分技术与七分勤奋,笔耕不辍手脚勤快是这种品质的重要保证,不经历风雨怎能见彩虹没有人能随随便便成功该出手时就出手风风火火闯九州他说风雨中这点痛算什么擦干泪不要问为什么,艾玛差点忘说了,另外还有那九十分靠的是人品。

转载于:https://my.oschina.net/gonglibin/blog/886608

你可能感兴趣的文章
Windwos Server 2008 R2 DHCP服务
查看>>
SAS和SATA硬盘的区别
查看>>
现代程序设计 学生情况调查
查看>>
U盘安装linux后无法引导
查看>>
C# 矩阵作业
查看>>
俺的新书《Sencha Touch实战》终于出版了
查看>>
关于数据库查询时报“query block has incorrect number of result columns”
查看>>
li下的ul----多级列表
查看>>
UVa 11292 勇者斗恶龙(The Dragon of Loowater)
查看>>
区域生长算法
查看>>
switch语句小练习
查看>>
组合逻辑电路
查看>>
POP-一个点击带有放大还原的动画效果
查看>>
UE4材质是什么样的机制
查看>>
使用QTP录制自带Flight小实例
查看>>
Loadrunner脚本编程(4)-数据类型操作和字符串操作
查看>>
STL 算法
查看>>
分享:Backbone.js 样例站点与入门指南
查看>>
图的基本算法
查看>>
HTML基础(一)
查看>>