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

网站规划的一般步骤seo营销培训咨询

网站规划的一般步骤,seo营销培训咨询,java可以做网站后台吗,做网站和网页区别https://zhuanlan.zhihu.com/p/557457644https://zhuanlan.zhihu.com/p/557457644 [新文导读] 从Base64到Protobuf,详解Protobuf的数据编码原理本篇将从Base64再到Base128编码,带你一起从底层来理解Protobuf的数据编码原理。本文结构总体与 Protobuf 官…

https://zhuanlan.zhihu.com/p/557457644icon-default.png?t=N7T8https://zhuanlan.zhihu.com/p/557457644

[新文导读] 从Base64到Protobuf,详解Protobuf的数据编码原理本篇将从Base64再到Base128编码,带你一起从底层来理解Protobuf的数据编码原理。本文结构总体与 Protobuf 官方文档相似,不少内容也来自官方文档,并在官方文档的基础上添加作者理解的内容,如有出入请以官方文档为准。icon-default.png?t=N7T8https://mp.weixin.qq.com/s/OgPnO2TEGSc2Eb8wxQTs6g?spm_id_from=444.41.rich-text.link.click

目录

安装

Base128 Varints 编码

uint

sint

字符串


安装

1. 下载:

wget https://github.com/protocolbuffers/protobuf/releases/download/v21.5/protobuf-cpp-3.21.5.tar.gz
tar zxvf protobuf-cpp-3.21.5.tar.gz protobuf-3.21.5/

2. 编译

cd protobuf-3.21.5/
./configure
make
sudo make install
sudo ldconfig

3. 生成 xxx.pb.h 和 xxx.pb.cc

protoc -I=input_dir --cpp_out=output_dir  [*.proto |/input_dir/specific.proto]
// -I 原文件.proto的所在的文件夹
// --cpp_out 生存pb.c pb.h 存放的文件夹
// 后面跟着所需的.proto文件

Base128 Varints 编码

Varint 是一种紧凑的表示数字的方法。它使用小端标识(意味着计算时需要调换顺序),用一个或多个字节来表示一个数字,值越小的数字使用越少的字节数。这能减少用来表示数字的字节数。其中每个字节的最高位用来表示后面一个字节是否属于当前这个数的组成部分,1 代表是,0表示不是。

uint

对于无符号整数,其编码比较简单,以 1 和 300 为例。

step1: 1 的二进制为 0000 0001
step2: 取 7 位,即 000 0001
step3: 多个byte的话,需要进行翻转(因为varints是用小端表示,低位字节放在前面)
step3: 最高位添加一个表示下一个byte是否属于当前数字的标志位,因为 1 只有1个字节表示,所以表示位为0,即最终varints编码表示位为 0000 0001
step1: 300 的二进制表示为 100101100
step2: 每7位隔开,不足的补0 ->      0000010      0101100
step3: 翻转一下byte顺序    0101100      0000010
step4: 填写标志位  1010 1100   0000 0010       (ac 02)

sint

对于有符号数,因为计算机定义负数的符号位为数字的最高位。如果采用 Varint 表示一个负数,那么一定需要 10 个 byte 长度。

因此定义了 sint32 这种类型,采用 zigzag 编码,先进行zigzag编码,将所有整数映射成无符号整数,然后再采用 varint 编码方式编码,这样,绝对值小的整数,编码后也会有一个较小的 varint 编码值。

Zigzag(n) = (n << 1) ^ (n >> 31), n 为 sint32 时
Zigzag(n) = (n << 1) ^ (n >> 63), n 为 sint64 时

字符串

wire_type 类型为 2 的数据,是一种指定长度的编码方式:key + length + content,key 的编码方式是统一的((field_number << 3) | wire_type),length 采用 varints 编码方式,content 就是由 length 指定长度的 Bytes。

message Test2 {optional string b = 2;
}
# 设置该值为"testing"
# testing 的utf8编码为:74 65 73 74 69 6e 67
# 则 field_num = 2       wire_type = 2    key = 0001 0010 (12)
# length = 07则 设置为testing后的编码为:12 07 74 65 73 74 69 6e 67

message 的二进制版本只是使用字段号(field's number 和 wire_type)作为 key。所以protocol buffer 比 JSON,XML 安全一点的原因,如果没有数据结构描述 .proto 文件,拿到数据以后是无法解释成正常的数据的

http://www.ds6.com.cn/news/52406.html

相关文章:

  • 电子商务网站建设评估的指标郑州seo顾问阿亮
  • 西安网站建设西安杭州企业seo
  • 网站设计主色学校24小时人工在线客服
  • 宁波网站制作 收费女教师遭网课入侵视频大全集
  • 网站开发软件费用营销型网站特点
  • 人力社保网站建设的意义b2b网站
  • 全球建站seo优化前景
  • 做网站插入文档特殊字符百度推广业务员电话
  • 广东建设监理协会网站常州网络推广seo
  • 南阳网站排名优化费用搜索seo引擎
  • 吉林省政府网站建设内容免费个人网站建站申请
  • 满山红厦门网站建设站长之家域名
  • 免费开源cms网站源码关键词挖掘机爱站网
  • 鲁山网站建设武汉网站搜索引擎优化
  • 网站建设按钮seo搜索引擎是什么
  • 成都中小企业申请网站今日头条搜索优化
  • 怎么给自己的公司做网站顾问式营销
  • wordpress 新窗口打开上海有什么seo公司
  • 网站登录注册页面模板下载企业管理培训公司排行榜
  • 深圳做响应式网站设计推广软文代写
  • 商品网站建设实验报告全国疫情最新数据
  • 哪里有做网站开发必应搜索引擎怎么样
  • 延津县建设局网站seo点击排名源码
  • 绵阳网站改版怎样精准搜索关键词
  • 烟台商城网站建设电商网站项目
  • 免费电子商务网站建设南宁seo内部优化
  • 一个公司做100个网站百度精准搜索
  • wordpress还能玩吗网络优化初学者难吗
  • 做外贸找客户最好用的网站seo排名优化方式
  • 丽水微信网站建设哪家好网络整合营销的特点有