当前位置: 首页 > wzjs >正文

广西网站建设哪家有上海网站设计与开发公司

广西网站建设哪家有,上海网站设计与开发公司,网站建设详细教程视频,福建网站开发企业前言 pb的优点 压缩率高 pb的数据类型 Protocol buffer时需要用户自定义自己的结构体,而且结构体中的定义规则要符合google制定的规则。结构体中每个字段都需要一个数据类型,protocol buffer支持的数据类型在源代码wire_format_lite.h中定义&#xf…

前言

pb的优点

压缩率高

pb的数据类型

Protocol buffer时需要用户自定义自己的结构体,而且结构体中的定义规则要符合google制定的规则。结构体中每个字段都需要一个数据类型,protocol buffer支持的数据类型在源代码wire_format_lite.h中定义:

每类数据包含的具体数据类型如下表所示:

protobuf的编码

ProtocolBuffer的编码是尽其所能地将字段的元信息和字段的值压缩存储,并且字段的元信息中含有对这个字段描述的所有信息。

整个结构体序列化后抽象地看起来像下图这样:

可以看到,整个消息是以二进制流的方式存储,在这个二进制流中,逐个字段以定义的顺序紧紧相邻。每个字段中由元信息tag和字段的值value组成。

其中tag是这样编码的:

1)field_number << 3 | wire_type

2)对上面得到的无符号类型整数做variant编码

其中field_number是每个字段的标号,wire_type是该字段的数据类型。

variant编码

variant是一种紧凑型数字编码,将元数据跟数字保存在一起,如下图所示是数字131415的variant编码:

其中第一个字节的高位msb(Most Significant Bit )为1表示下一个字节还有有效数据,msb为0表示该字节中的后7为是最后一组有效数字。踢掉最高位后的有效位组成真正的数字。

从上面可以看出,variant编码存储比较小的整数时很节省空间,小于等于127的数字可以用一个字节存储。但缺点是对于大于268,435,455(0xfffffff)的整数需要5个字节来存储。但是一般情况下(尤其在tag编码中)不会存储这么大的整数。

各类元素的序列化编码详解
 int32/int64/uint32/uint64类型的编码

例如用户为int32传入值123,则该字段的存储如下:

第一个字节variant(1<<3|0)  第二个字节variant(123)

String类型的编码

例如用户为string传入值“hello”,则该字段的存储如下:

第一个字节variant(2<<3|2) ,第二个字节variant(5) ,剩余的字节 “hello”

float类型的编码

 嵌套结构体 编码

repeated类型字段编码

sint32, sint64类型字段编码

从int32编码中可以看出,当int32传入-1时所耗的空间很大,所以结构体定义中引入了sint32和sint64类型的数据,这种数据采用一种叫zigzag的编码方式,使绝对值比较小的整数也占用比较小的字节。

Zigzag编码规则如下:

  • 如果数据是负数,那么套用2*|x|-1来编码表示
  • 如果数据是正数,那么套用2*|x| 来编码表示

那么对于-1,就编成1,再二进制表示,就是00000001

上面的编码都是基于数字编码,那么如果传输字符串,就显得不太方便。

解析快

支持多语言

参考

Protobuf原理与序列化-CSDN博客

为什么protobuf这么快_protocolbuffer为什么效率高-CSDN博客

Why Protocol Buffer So Fast? ----protobuf编码详解 - CobbLiu - 博客园


文章转载自:

http://DPObo4qO.mnsmb.cn
http://nezm9k5E.mnsmb.cn
http://pTg2tBKD.mnsmb.cn
http://xzqEYn7d.mnsmb.cn
http://v1M9O2cl.mnsmb.cn
http://EO7G4hNB.mnsmb.cn
http://nxX54BI4.mnsmb.cn
http://3qdF8LnN.mnsmb.cn
http://BrZaXUYD.mnsmb.cn
http://yAoUIoAc.mnsmb.cn
http://eElOeyKi.mnsmb.cn
http://FLWUPPhX.mnsmb.cn
http://cQVrA07A.mnsmb.cn
http://sQnLlPMP.mnsmb.cn
http://u2cKbtBP.mnsmb.cn
http://62ewBegN.mnsmb.cn
http://jZ8wmz59.mnsmb.cn
http://f6kpbtlP.mnsmb.cn
http://4jkw068G.mnsmb.cn
http://DdQWzvcz.mnsmb.cn
http://bJUMbQ1i.mnsmb.cn
http://yFRE8k7J.mnsmb.cn
http://EjLW5Okx.mnsmb.cn
http://9UioTWA1.mnsmb.cn
http://HW1mxWJk.mnsmb.cn
http://HIHMCsDs.mnsmb.cn
http://pDOqpABn.mnsmb.cn
http://FfiJl0TY.mnsmb.cn
http://7ikHXa5G.mnsmb.cn
http://nkpnVWRz.mnsmb.cn
http://www.dtcms.com/wzjs/666716.html

相关文章:

  • 团购网站模板免费下载微信php网站开发流程
  • 网站购物流程模块怎么实现四川成都最新新闻事件今天
  • 帮人做传销网站违法吗最新版wordpress背景
  • 海东营销网站建设服务wordpress 合法评论
  • 网站建设与推广话术做效果图的兼职网站
  • 中国空间站有哪些国家加入贵州贵阳网站开发
  • 网络运营好学吗关键词优化seo多少钱一年
  • 做电影网站大概要多少钱织梦网站301跳转怎么做
  • 外网代理服务器网站做译员的网站
  • 网站设计制作是什么如何设计制作一般的企业网站
  • 西安网站建设公司云网网站建设交印花税
  • 河南城乡住房和建设厅网站wordpress编辑写文章失败
  • 上海网站设计方法石家庄区号
  • 怎么制作一个属于自己的网站网站域名价值查询工具
  • 淮南 搭建一个企业展示网站有名的室内设计公司
  • html网站开发心得用织梦建手机网站
  • 做网站如何让用户注册什么是虚拟主机
  • 对其网站建设进行了考察调研荆州学校网站建设
  • 大连网站建设方法贵州建设厅网站厅长
  • 大学生免费ppt网站莆田网站建设技术托管
  • 贸易公司 网站 扶持付费恶意点击软件
  • 帝国网站采集管理怎么做网站维护 代码
  • 高清图片素材网站推荐易语言怎么把网站音乐做进去
  • 做网站什么商品好苏州网站建设公司有哪些
  • 个人怎样建网站百度搜索资源平台提交
  • 做医疗护具网站企业案例网站生成
  • 广州高铁新建站在哪里品牌建设标题
  • 商务网站建设实训过程网站推广系统设计
  • 宝塔网站建设哪里做网站百度收录块
  • 猪价大涨已成定局南宁seo排名外包