讲真:序列化必读

简介:

     序列化是啥啥是序列化为啥要序列化把啥序列化不序列化行不行?问题真多,馒头要一口一口吃问题要一个一个回答。所谓序列化就是格式化,感觉哪不对劲,是约定的格式化,及格了,能够满足正向操作和逆向操作的约定格式化,良好了,能高效稳定满足正向操作和逆向操作的约定格式化,满分了,能提供轻松扩展并高效稳定满足正向操作和逆向操作的约定格式化,耶~恭喜你都会抢答啦。能够支持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

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

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

相关文章
|
3月前
|
前端开发 JavaScript 开发工具
前端知识笔记(三十)———前端需要掌握的技术有哪些方面
前端知识笔记(三十)———前端需要掌握的技术有哪些方面
20 1
|
3月前
|
消息中间件 设计模式 Java
如何高效地阅读源码,我总结了18条心法,助你修炼神功
大家好,我是三友~~ 这篇文章我准备来聊一聊如何去阅读开源项目的源码。 在聊如何去阅读源码之前,先来简单说一下为什么要去阅读源码,大致可分为以下几点原因: - 最直接的原因,就是面试需要,面试喜欢问源码,读完源码才可以跟面试官battle - 提升自己的编程水平,学习编程思想和和代码技巧 - 熟悉技术实现细节,提高设计能力 - ...
如何高效地阅读源码,我总结了18条心法,助你修炼神功
|
5月前
|
NoSQL 前端开发 数据库
架构内容 节选自《闻缺陷则喜》(此书可免费下载)
架构内容 节选自《闻缺陷则喜》(此书可免费下载)
|
小程序 数据安全/隐私保护 C语言
爱上c++的第九天-聊一聊类和对象的特性
总结如下:1.基于过程的程序设计:由一个个函数组成,每个函数都是独立的,一个函数对应一个操作,适合小程序开发。讲究每一步都要详细的写出,写出来,问题也就解决了。
46 0
爱上c++的第九天-聊一聊类和对象的特性
|
前端开发 安全 JavaScript
衣带渐宽终不悔,为伊消得人憔悴。愿,这份爱在你我之间没有 “跨域”
相信无论是前端还是后端在开发的时候,都会遇到这样的一个问题就是:跨域跨域可以说是成长路上必经的一个“坑”。但是我们不应该对它嗤之以鼻,因为它在时时保护着我们服务器的安全。
|
JavaScript 前端开发 Java
编程界的修仙秘籍属实离谱《JavaScript百炼成仙》让你枯燥的编程学习增加乐趣
编程界的修仙秘籍属实离谱《JavaScript百炼成仙》让你枯燥的编程学习增加乐趣
2682 0
编程界的修仙秘籍属实离谱《JavaScript百炼成仙》让你枯燥的编程学习增加乐趣
|
SQL JavaScript 前端开发
#你会担心掌握的技术语言过时吗?#一入编程深似海,从此妹子是路人
我掌握的技术语言有C、C++、ActionScript、JavaScript、TypeScript、Flex、Java、SQL、Scala、CAD,当然,这还不算一些具有特殊语言的技术框架,如Vue.js、Angular、Spark、Android、HarmonyOS、Node.js等,如果算上就更多了。
203 0
|
存储 设计模式 Java
十一长假我肝了这本超硬核PDF,现决定开源!!
在 【冰河技术】 微信公众号中的【互联网工程】专题,更新了不少文章,有些读者反馈说,在公众号中刷 历史文章不太方便,有时会忘记自己看到哪一篇了,当打开一篇文章时,似乎之前已经看过了,但就是不知道具体该看哪一篇了。相信很多小伙伴都会有这样的问题。那怎么办呢?最好的解决方案就是我把这些文章整理成PDF电子书,免费分享给大家,这样,小伙伴们看起来就方便多了。希望这本电子书能够给大家带来实质性的帮助。
100 0
十一长假我肝了这本超硬核PDF,现决定开源!!
|
存储 机器学习/深度学习 传感器
区块链必读论文集【三十一】
区块链作为一种崭新的、颠覆性的技术,是国内外活跃的研究领域和毕业设计选题方向。本文列出最新的一组区块链方面的论文,希望可以对选择区块链毕业设计的同学们有所帮助,这是[汇智网](http://www.hubwiz.com)编辑整理的区块链毕业设计论文系列中的第31篇。1、基于深度学习网络和区块链的物联网设备电池寿命存储与预测框架 2、ACeD:可伸缩的数据有效性预言机 3、基于Hyperledger Fabric区块链的实时监控网络中的信息寿命分析 4、以太坊合约智能语料库 5、区块链与去中心化互联网:展望、趋势与挑战
1862 0
区块链必读论文集【三十一】
|
开发者 机器学习/深度学习 安全
技术人看《长安十二时辰》的正确姿势是? | 开发者必读(068期)
最炫的技术新知、最热门的大咖公开课、最有趣的开发者活动、最实用的工具干货,就在《开发者必读》!
1243 0