写点什么

学习总结 2021.12.30

作者:mj4ever
  • 2021 年 12 月 30 日
  • 本文字数:817 字

    阅读完需:约 3 分钟

本周在学习上的投入时间有点少,主要是到了年底有个项目要支持,确实有些分身乏术,所以,对这一章知识的学习并不深入

在讲第六结课时,老师提到了 JSON 和 Protocol Buffer,刚好对这个概念不是很了解,先初步学习下

1. XML、JSON、Protobuf 比较

在分布式系统中,数据序列化传递的情景,主流的三种,XML、JSON、Protobuf。

序列化:将 数据结构或对象 转换成 二进制串 的过程

jsonj 反序列化:将在序列化过程中所生成的二级制串 转换成 数据结构或对象 的过程

下面的对比参考自:https://stackoverflow.com/questions/14028293/google-protocol-buffers-vs-json-vs-xml

1.1. XML

  • human readable/editable 可读/可编辑

  • can be parsed without knowing schema in advance 可以在不事先知道模式的情况下进行分析

  • standard for SOAP etc SOAP 的标准

  • good tooling support (xsd, xslt, sax, dom, etc) 良好的工具支持(xsd、xslt、sax、dom 等)

  • pretty verbose 非常冗长

1.2. JSON

  • human readable/editable 可读/可编辑

  • can be parsed without knowing schema in advance 可以在不事先知道模式的情况下进行分析

  • excellent browser support 出色的浏览器支持

  • less verbose than XML 比 XML 更详细

1.3. Protobuf

  • very dense data (small output) 非常密集的数据(小输出)

  • hard to robustly decode without knowing the schema (data format is internally ambiguous, and needs schema to clarify) 在不知道模式的情况下很难可靠地解码(数据格式在内部是不明确的,需要模式来澄清)

  • very fast processing 非常快速的处理

  • not intended for human eyes (dense binary) 不适用于人眼(密集二进制)

[{"CName": "Tom", "Gender": 0}, {"CName": "Tomsam", "Gender": 1}]
复制代码

JSON 格式,每个记录都要包括 CName、Gender

message Person {  required string CName = 1;  optional int32 Gender = 2;}
复制代码

与 JSON 不同,Protobuf 用二进制编码数据,数据的格式事先通过一个后缀名为.proto 的文件文件指定

用户头像

mj4ever

关注

还未添加个人签名 2017.10.18 加入

还未添加个人简介

评论

发布
暂无评论
学习总结 2021.12.30