讲真:序列化必读

简介:

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

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

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

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

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


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

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

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


protobuf

avro

thrift

bson

json

xml

......

计算效率

贼快

超快

特快

够快

挺快

还算快

别提了

载荷效率

贼高

贼高

也贼高

高拉特

一般般

真一般

别瞎比

数据类型

啥都有

全都有

真都有

够用

有缺失

不全面

都有啥

开发周期

花雕

状元红

女儿红

加饭

一口闷

对瓶吹

吐一身

研发成本

不差钱

咱有钱

哥趁钱

这小钱

哥没钱

真没钱

别提钱

技术门槛

高智商

智商高

智高商

有智商

无痴呆

向左看

向右看

综合点评

实时业务吐血推荐

大数据业务推荐

定制业务推荐

系统内推荐

Java体系小快灵推荐

前端或配置推荐

确定你比人家更出色

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

    Protobuf(java版本):http://git.oschina.net/gonglibin/codes/w0ulc5noe2yzi87sx3tbv65

    Protobuf(C++版本):http://git.oschina.net/gonglibin/codes/0m3f4vt6yheci57ro2dg196

    Avro(C++版本):http://git.oschina.net/gonglibin/codes/qknvpiuzxrdjs582mel4g31

    Bson(C++版本):http://git.oschina.net/gonglibin/GlbBson

    Json(java版本):http://git.oschina.net/gonglibin/codes/xq3m08arci1d5ksoenyv774

    Json(C++版本):http://git.oschina.net/gonglibin/codes/3bk2e5z9w0t8spugi6ayq69

    Xml(C++版本):http://git.oschina.net/gonglibin/codes/h5cowfr2tmue0yszv841l29

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

http://git.oschina.net/gonglibin/GlbLib-1.0.0/blob/master/src/GlbNet/GlbPro.cpp?dir=0&filepath=src%2FGlbNet%2FGlbPro.cpp&oid=8daa3e63431d5ca30267d44b59fb77561e77dbf1&sha=2a17296ac1a35a38dca9c1b996a3e39a47d1df23

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

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

相关文章
|
13天前
【软件设计师—基础精讲笔记11】第十一章 标准化和软件知识产权
【软件设计师—基础精讲笔记11】第十一章 标准化和软件知识产权
17 0
|
4月前
|
编解码 安全 程序员
创作活动(五十一)———编程中常见的技术难题有哪些?
创作活动(五十一)———编程中常见的技术难题有哪些?
37 0
|
11月前
|
Java 数据库连接 数据库
《Java工程师必读手册》——Java经验之谈系列——编码方法论(4)
《Java工程师必读手册》——Java经验之谈系列——编码方法论(4)
|
11月前
|
敏捷开发 算法 Java
《Java工程师必读手册》——Java经验之谈系列——编码方法论(1)
《Java工程师必读手册》——Java经验之谈系列——编码方法论(1)
135 0
|
11月前
|
SQL Java 数据库
《Java工程师必读手册》——Java经验之谈系列——编码方法论(2)
《Java工程师必读手册》——Java经验之谈系列——编码方法论(2)
|
11月前
|
XML Java 开发工具
《Java工程师必读手册》——Java经验之谈系列——编码方法论(3)
《Java工程师必读手册》——Java经验之谈系列——编码方法论(3)
|
11月前
|
Java
《Java工程师必读手册》——Java经验之谈系列——编码方法论(5)
《Java工程师必读手册》——Java经验之谈系列——编码方法论(5)
|
11月前
|
人工智能 文字识别 小程序
分享几个不为人知,但特别实用的工具类网站!
今天给大家推荐几个不为人知,但是无论是工作中还是生活中都特别实用的工具类网站
111 0
火眼金睛看Java基本类型(上) | 带你学《Java编程入门》之三
程序是一套数字处理的游戏框架,也就是说在整个程序开发的过程中,所达到的最终目的就是对一些数据的处理过程。那么既然要进行数据的处理,就一定需要提供有各种类型的数据定义。