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

网站设计公司名称dz网站恢复数据库

网站设计公司名称,dz网站恢复数据库,主题库 wordpress,广州海珠区是市中心吗简介 Protocol Buffers#xff08;protobuf#xff09;#xff0c;它是 Google 开发的一种数据序列化协议#xff08;与 XML、JSON 类似#xff09;。 优点#xff1a; 效率高#xff1a;Protobuf 以二进制格式存储数据#xff0c;比如 XML 和 JSON 等文本格式更紧凑…简介 Protocol Buffersprotobuf它是 Google 开发的一种数据序列化协议与 XML、JSON 类似。 优点 效率高Protobuf 以二进制格式存储数据比如 XML 和 JSON 等文本格式更紧凑也更快。序列化和反序列化的速度也很快。跨语言支持Protobuf 支持多种编程语言包括 C、Java、Python 等。清晰的结构定义使用 protobuf可以清晰地定义数据的结构这有助于维护和理解。向后兼容性你可以添加或者删除字段而不会破坏老的应用程序。这对于长期的项目来说是非常有价值的。 缺点 不直观由于 protobuf 是二进制格式人不能直接阅读和修改它。这对于调试和测试来说可能会有些困难。缺乏一些数据类型例如没有内建的日期、时间类型对于这些类型的数据需要手动转换成可以支持的类型如 string 或 int。需要额外的编译步骤你需要先定义数据结构然后使用 protobuf 的编译器将其编译成目标语言的代码这是一个额外的步骤可能会影响开发流程。 编码原理 举例 对于 protobuf 它的编码是很紧凑的我们先看一下 message 的结构举一个简单的例子 message Student {string name 1;int32 age 2; } message 是一系列键值对编码过之后实际上只有 tag 序列号和对应的值这一点相比我们熟悉的 json 很不一样所以对于 protobuf 来说没有 .proto 文件是无法解出来的 对于 tag 来说它保存了 message 字段的编号以及类型信息我们可以做个实验把 name 这个 tag 编码后的二进制打印出来 func main() {student : student.Student{}student.Name tmarshal, _ : proto.Marshal(student)fmt.Println(fmt.Sprintf(%08b, marshal)) // 00001010 00000001 01110100 } 打印出来的结果是这样 上图中由于 name 是 string 类型所以第一个 byte 是 tag第二 byte 是 string 的长度第三个 byte 是值也就是我们上面设置的 “t”。 tag 我们下面先看看 tag tag 里面会包含两部分信息字段序号字段类型计算方式就是上图的公式。 ① 第一个 bit 是标记位表示是否字段结尾这里是 0 表示 tag 已结尾tag 占用 1byte ② 接下来 4 个 bit 表示的是字段序号这里0001 表示序号1。 所以范围 1 到 15 中的字段编号只需要 1 bit 进行编码 做个实验看看将 tag 改成 16 protobuf 是小端编码的需要转成大端方便阅读 由上图所示 ① 和 ③Tag的每个 byte 第一个 bit 表示是否结束0 表示结束所以上面 tag 用两个 byte 表示。 ⑤ 去掉每个 byte 第一个 bit 之后后三位 0 1 0表示类型是 1 ② ④ 其余位是字段序号 0 0 0 0 0 0 1 0 0 0 0 表示 16。 所以从上面编码规则我们也可以知道字段尽可能精简一些字段尽量不要超过 16 个这样Tag 就可以用一个 byte 表示了。 同时我们也可以知道protobuf 序列化是不带字段名的所以如果客户端的 proto 文件只修改了字段名请求服务端是安全的服务端继续用根据序列编号还是解出来原来的字段。但是需要注意的是不要修改字段类型。 类型 类型protobuf 共定义了 6 种类型其中两种是废弃的 ID Name Used For 0 VARINT int32, int64, uint32, uint64, sint32, sint64, bool, enum 1 I64 fixed64, sfixed64, double 2 LEN string, bytes, embedded messages, packed repeated fields 3 SGROUP group start (deprecated) 4 EGROUP group end (deprecated) 5 I32 fixed32, sfixed32, float 上面的例子中Name 是 string 类型所以上面 tag 类型解出来是 010 也就是 2。 参考数据序列化工具Protobuf编码避坑指南-腾讯云开发者社区-腾讯云
http://www.zqtcl.cn/news/774150/

相关文章:

  • 苏州哪里有做淘宝网站的WordPress模板博客主题
  • 网站做中转做任务 网站
  • 深圳住房建设局网站网站的建设教程
  • 6免费建站的网站在线建筑设计
  • 哪些网站做任务可以赚钱的建设厅网站如何查询企业信息
  • 深圳网站设计+建设首选深圳市服装网站建设需求分析报告
  • 肥城网站制作浙江省建设厅信息港官网
  • 手机网站建设进度南宁企业网站设计
  • 建设学校网站方案大淘客网站上的推广怎么做
  • 哪个网站可以免费学设计南阳网站建设页面
  • 外贸公司建网站一般多少钱南京网站建设小程
  • 洛阳霞光做网站公司手机编程教学
  • 深圳正规网站建设公司顺德网页制作公司
  • 消防中队网站建设筑云电商网站建设公司
  • 天津网站建设天津中国东盟建设集团有限公司网站
  • 正版传奇手游官方网站宁波建设银行网站首页
  • 中铁建设集团招标网站wordpress区块编辑无法使用
  • 做电影网站需要的服务器配置网站关键词排名优化应该怎么做
  • 企业网站管理关键词你们懂的
  • 成都成华网站建设跟网站开发公司签合同主要要点
  • 手机搭建平台网站化工厂建设网站
  • 怎样建设自己网站的后台龙港哪里有做百度网站的
  • 西安做网站建设哪家好2345网址导航电脑版下载
  • 做暧暧小视频网站十大职业资格培训机构
  • 泰安网站建设优化营销策划是做什么
  • 做网站百度排前位网页设计实训报告2000字
  • 网站建设的活动方案房地产销售渠道拓客方案
  • 哈尔滨网站提升排名版式设计图片
  • 我的专业网站建设策划书网站logo教程
  • 百度 网站 移动端win10系统之家官网