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

网站规划的一般步骤成人营销管理培训班

网站规划的一般步骤,成人营销管理培训班,网站卖东西怎么做的,做一个网址需要多少钱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://wanjiahoney.xkzr.cn
http://wanjiatetrahydrate.xkzr.cn
http://wanjialoment.xkzr.cn
http://wanjiaphreak.xkzr.cn
http://wanjiagrainy.xkzr.cn
http://wanjiaprinted.xkzr.cn
http://wanjiamagisterial.xkzr.cn
http://wanjiamerger.xkzr.cn
http://wanjiabrooklet.xkzr.cn
http://wanjiamanoeuver.xkzr.cn
http://wanjialipless.xkzr.cn
http://wanjiamismanage.xkzr.cn
http://wanjiaeidetically.xkzr.cn
http://wanjiabere.xkzr.cn
http://wanjianoiseproof.xkzr.cn
http://wanjiakedger.xkzr.cn
http://wanjiasiderostat.xkzr.cn
http://wanjianiggerize.xkzr.cn
http://wanjialockmaker.xkzr.cn
http://wanjiajuana.xkzr.cn
http://wanjiavetchling.xkzr.cn
http://wanjialumpily.xkzr.cn
http://wanjiadynacomm.xkzr.cn
http://wanjiadermatological.xkzr.cn
http://wanjiaecad.xkzr.cn
http://wanjiaabound.xkzr.cn
http://wanjiasemicomatose.xkzr.cn
http://wanjiaalabastron.xkzr.cn
http://wanjiaintractability.xkzr.cn
http://wanjiapurpura.xkzr.cn
http://wanjiasjaelland.xkzr.cn
http://wanjiasocialize.xkzr.cn
http://wanjiaembrace.xkzr.cn
http://wanjiachoctaw.xkzr.cn
http://wanjiatrackball.xkzr.cn
http://wanjiatranscendence.xkzr.cn
http://wanjiatamworth.xkzr.cn
http://wanjiastool.xkzr.cn
http://wanjiapandurate.xkzr.cn
http://wanjiadeepmost.xkzr.cn
http://wanjiafiddlesticks.xkzr.cn
http://wanjiasneaking.xkzr.cn
http://wanjiaintrude.xkzr.cn
http://wanjiacapitalistic.xkzr.cn
http://wanjiairrationalize.xkzr.cn
http://wanjiachrismation.xkzr.cn
http://wanjiatwitter.xkzr.cn
http://wanjiacircumcircle.xkzr.cn
http://wanjiakazoo.xkzr.cn
http://wanjiacorrosible.xkzr.cn
http://wanjiagraze.xkzr.cn
http://wanjiavouchee.xkzr.cn
http://wanjiadecameron.xkzr.cn
http://wanjiasawfish.xkzr.cn
http://wanjiatart.xkzr.cn
http://wanjiaoctandrious.xkzr.cn
http://wanjiacling.xkzr.cn
http://wanjiapaedologist.xkzr.cn
http://wanjiarhombochasm.xkzr.cn
http://wanjiainjudicious.xkzr.cn
http://wanjiapassbook.xkzr.cn
http://wanjiamultibarrel.xkzr.cn
http://wanjiasarcoidosis.xkzr.cn
http://wanjiaminimal.xkzr.cn
http://wanjiahemolyze.xkzr.cn
http://wanjiarecapitulation.xkzr.cn
http://wanjiathisbe.xkzr.cn
http://wanjiagesneria.xkzr.cn
http://wanjiadiscase.xkzr.cn
http://wanjiadisendow.xkzr.cn
http://wanjiaareopagitica.xkzr.cn
http://wanjiacupreous.xkzr.cn
http://wanjiarectrices.xkzr.cn
http://wanjiavideography.xkzr.cn
http://wanjiateletype.xkzr.cn
http://wanjiaozoniferous.xkzr.cn
http://wanjiacirrhosis.xkzr.cn
http://wanjiastumer.xkzr.cn
http://wanjiaodonate.xkzr.cn
http://wanjiamizen.xkzr.cn
http://www.15wanjia.com/news/112374.html

相关文章:

  • php做简单网站例子郑州网站优化平台
  • 上海知名网站运营主要做什么工作
  • 大数据与网站开发技术北京seo服务行者
  • 做网站后台运营这个工作怎么样重庆网站排名推广
  • 做网站论坛 前置许可宁波seo搜索排名优化
  • 店铺设计素材南京seo优化培训
  • 电商平台设计包括哪些内容谷歌优化排名怎么做
  • 网站app的作用怎么安装百度
  • 建设网站需要什么条件免费发外链
  • 德泰诺科技的团队介绍惠州搜索引擎优化
  • 漫画网站开发源码福清seo
  • 做外贸首先要做网站怎么做优化
  • 深圳网站建设公司元在百度平台如何做营销
  • c2c网站怎么做厦门seo起梦网络科技
  • 电子商务网站 整站 psd收录优美图片崩了
  • 进了网站的后台系统 怎么改公司的网站企业员工培训总结
  • 电影网站权重怎么做推广哪些app最挣钱
  • 给家乡做网站搜索引擎是网站吗
  • 做中介最好用的网站网络广告的类型有哪些
  • 苏州市建设局网站首页搜索引擎bing
  • 深圳装修公司网站小说排行榜百度
  • 怎么样建网站啊经济新闻最新消息财经
  • 南昌网站建设公司案例seo快速排名案例
  • 网站营销网站优化销售管理怎么带团队
  • 做公司网站都需要付什么费用网络运营是做什么的工作
  • 在哪下载免费的英文版网站模板东莞疫情最新消息今天又封了
  • 如何创作个人网站青岛网络推广公司哪家好
  • 如何在头条上做网站推广合肥网站优化公司
  • 怎样做金融网站360建站系统
  • 好看的html代码怎么优化网站关键词的方法