首页 > 其他分享 >protobuf原理(转)

protobuf原理(转)

时间:2023-12-19 12:01:04浏览次数:40  
标签:编码 数据结构 protobuf 解码 使用 原理 解析

原文:https://zhuanlan.zhihu.com/p/633656133

protobuf的优点有:

  1. 高效的编码和解码性能:protobuf使用二进制编码,相比于传统的文本格式如XML和JSON,可以更高效地进行数据的编码和解码,减少网络传输和存储的开销。
  2. 跨平台和语言支持:protobuf可以在多种编程语言和平台上使用,例如C++, Java, Python等,可以在不同的系统中进行数据交换和通信。
  3. 可读性强:protobuf使用了类似于结构体的语法来定义数据结构,可以方便地理解和阅读,也可以通过工具生成对应的代码。
  4. 可扩展性好:protobuf支持向已有的数据结构中添加新的字段,而不会破坏已有的代码和数据,可以方便地进行版本升级和兼容。
  5. 体积小:由于protobuf使用二进制编码,相对于文本格式来说,可以将数据结构压缩得更小,减少网络传输和存储的空间。

protobuf的缺点有:

  1. 学习成本较高:相比于其他的数据格式如XML和JSON,protobuf的语法和使用方式需要一定的学习成本。
  2. 不支持动态解析:protobuf在编码和解码时需要预先定义数据结构,不支持动态解析,这可能会限制一些动态生成和解析的需求。
  3. 不支持自描述:protobuf在编码时不包含字段名等信息,因此接收方需要预先知道数据的结构才能正确解析,不支持自描述的特性。
  4. 难以调试和查看:由于protobuf使用二进制编码,数据无法直接查看和调试,可能需要使用特定的工具来解析和查看数据内容。

标签:编码,数据结构,protobuf,解码,使用,原理,解析
From: https://www.cnblogs.com/mcyushao/p/17913395.html

相关文章

  • 电路原理图_PCB_学习03_桌面电子时钟
    学习视频:https://www.bilibili.com/video/BV12z4y1J7nQ/?spm_id_from=333.999.0.0&vd_source=516eee863e252e452d8dfe7cb01af532这个工程跟着视频算是完成的走完了,从原理图到PCB,然后打板、贴片到最后代码调试。但貌似温湿度计有点问题,老是工作一会就无法读取出内容了,暂时懒得折腾......
  • 【我们尽量少说废话的讲完】C++红黑树原理
    红黑树的出现红黑树增删改查的时间复杂度都是O(logn)。如果插入的数据随机,那么使用二叉搜索树即可保证树接近平衡。此时增删改查的效率都为O(logN)。但如果插入的数据为有序的,此时二叉搜索树极其不平衡,退化为链表,时间复杂度降为O(N)。而红黑树就是为了应对这种极端情况。红黑......
  • .Net 8与硬件设备能碰撞出怎么样的火花(使用ImageSharp和Protobuf协议通过HidApi与设备
    前言本人最近在社区里说想做稚晖君的那个瀚文键盘来着,结果遇到两个老哥一个老哥送了我电路板,一个送了我焊接好元件的电路板,既然大家这么舍得,那我也就真的投入制作了这把客制化键盘,当然我为了省钱也是特意把外壳模型重新切割,用3D打印机打印了整个外壳,不得不说省了八九百的CNC费用......
  • Istio从入门到精通—— 流量治理的原理 —— VirutalService —— HTTPRedirect
    流量治理的原理——VirutalService——HTTPRedirecthttps://istio.io/latest/docs/reference/config/networking/virtual-service/#HTTPRedirect HTTPRedirectcanbeusedtosenda301redirectresponsetothecaller,wheretheAuthority/HostandtheURIinthe......
  • Istio从入门到精通—— 流量治理的原理 —— VirutalService —— TLSMatchAttributes
    流量治理的原理——VirutalService—— TLSMatchAttributeshttps://istio.io/latest/docs/reference/config/networking/virtual-service/#TLSMatchAttributesTLSconnectionmatchattributes.FieldTypeDescriptionRequiredsniHostsstring[]SNI(s......
  • Istio从入门到精通—— 流量治理的原理 —— VirutalService —— L4MatchAttributes
    流量治理的原理——VirutalService—— L4MatchAttributeshttps://istio.io/latest/docs/reference/config/networking/virtual-service/#L4MatchAttributesL4connectionmatchattributes.NotethatL4connectionmatchingsupportisincomplete.......
  • Istio从入门到精通—— 流量治理的原理 —— VirutalService —— RouteDestination
     流量治理的原理——VirutalService——RouteDestinationhttps://istio.io/latest/docs/reference/config/networking/virtual-service/#RouteDestinationL4routingruleweighteddestination.L4路由规则的加权目的地。FieldType......
  • 万字长文全面详解现代C++智能指针:原理、应用和陷阱
    现代C++智能指针详解:原理、应用和陷阱智能指针是C++11引入的新特性。本篇文章详细介绍了C++智能指针的原理、应用与陷阱,通过丰富的代码实例介绍了三种智能指针:std::unique_ptr、std::shared_ptr和std::weak_ptr的原理、使用方法和适用场景,还介绍了智能指针的线程安全性、使用陷阱......
  • TiCDC核心原理解析
    作者:Jellybean架构简介基本架构TiCDC集群由多个对等节点组成,是一种分布式无状态的架构设计。当TiDB集群内部有数据变更的时候,就会产生KVchangelog。KVchangelog是TiKV提供的隐藏大部分内部实现细节的的rowchangedevent,TiCDC会实时从TiKV拉取这些Event完成......
  • 前端歌谣-第贰拾玖课-构造函数和实例化原理
    前言我是歌谣最好的种树是十年前其次是现在今天继续给大家带来的是构造函数和实例化原理的讲解环境配置npminit-yyarnaddvite-D修改page.json配置端口{"name":"demo1","version":"1.0.0","description":"","main":"index.js&qu......