导图社区 序列化方案
序列化方案思维导图,对FlatBuffer、cap np、Json、ProtoBuffer进行了学习,也许这份脑图会对你有所帮助。
这份思维导图主要按照《python从入门到实践》的大纲来做出来的,并在相关内容的解释处加入了相关代码,欢迎大家一起学习!
职能地图-Java,干货分享~Java语言技术,java技术扩展,数据结构,维优,个人职能,技术面试知识点总结。
当今大型软件系统的开发多采用企业级的开发模式,而Java语言也是目前较为流行的企业级开发语言之一。针对Java企业级开发,涉及的知识点和技术栈较为丰富,包括但不限于Java EE、Spring框架、Hibernate框架、Maven、Git、Jenkins等等。这份思维导图以Java企业级开发为主题,通过图解的形式将涉及的知识点进行了梳理和整理,从Java EE体系结构、Servlet、JSP、Spring框架、Hibernate框架、Maven等基础知识开始讲解,逐步深入到SpringMVC、
社区模板帮助中心,点此进入>>
互联网9大思维
组织架构-单商户商城webAPP 思维导图。
域控上线
python思维导图
css
CSS
计算机操作系统思维导图
计算机组成原理
IMX6UL(A7)
考试学情分析系统
序列化方案
Json
使用 K-V 存储结构,会有大量 k 冗余的问题
在序列化和反序列的时候会使用反射、遍历等方法
开启 gzip 后体积还是挺小的,但还是没有 ProtoBuf 小
内容可读,不像 PB 和 FB 一样是二进制文件
ProtoBuffer
Google 的产品。诞生之初也并不是为了传输数据存在的,只是为了解决服务器多版本协议兼容的问题。
高效的数据压缩,将数据压缩为二进制数据
Protobuf 采用了 Varint、Zigzag 大幅的压缩了整数类型,
没有 JSON 里面的 {、}、;、这些数据分隔符
使用 Tag - Length - Value的编码方式的实现,减少了分隔符的使用,数据存储更加紧凑。
protocol buffers 不是自我描述的,在缺少 .proto 文件以后,有一定的加密性,数据传输过程中都是二进制流,并不是明文
Protocol Buffer 具有向后兼容的特性,更新数据结构以后,老版本依旧可以兼容:老版本对不认识的字段会跳过不处理
对比
cap`np
完全的 zero copy
内部不带压缩,有数据对齐
需要数据对齐
FlatBuffer
Google 员工开发的不是 Google 的产品
是 zero cpopy + Random-access read 版本的 protobuffer
序列化性能只有 PB 的一半,数据越大越明显。这是为了反序列化性能支持随机读写而做出的牺牲
压缩率没有 PB 和 开启 gzip 的 json 高
但是反序列性能很高:支持随机读不像 PB 一样需要将对象全部反序列化才能读取。因而解码性能要高许多,大概要比 protobuf 快几百倍的样子,因而比 JSON 快的就更多了
适合移动端这种对数据解析耗时敏感的场景