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

彻底掌握Protobuf编码原理与实战

目录


  • 1.类型

  • 2.VARINT

    • 2.1 无符号数

    • 2.2 有符号数

  • 3.定长

    • 3.1 I64类型

    • 3.2 I32类型

  • 4.LEN

  • 5.代码

学习这些有什么用?

- 如果你是后端开发者,掌握这个对工作非常有用

- 如果你是求职者,面试时可以临危不惧

1.类型

最近看到有直接操作wire type相关的api调用,例如:

  • WriteTag

  • WriteVarint32

等等,那么什么是wire type以及protobuf最核心的编码原理是什么?

IDNameUsed For
0VARINTint32, int64, uint32, uint64, sint32, sint64, bool, enum
1I64fixed64, sfixed64, double
2LENstring, bytes, embedded messages, packed repeated fields
3SGROUPgroup start (deprecated)
4EGROUPgroup end (deprecated)
5I32fixed32, sfixed32, float

如上表,官方提供了六个wire类型,其中SGROUP与EGROUP废除掉了,我们忽略它,来看看其他4个编码。

74cc7ba33d9609bb0585405a6a52e6bb.png

本篇文章内容与代码已更新与知识星球,感兴趣的加入即可,欢迎一起讨论。

21d3221ce4f8627f8e2fe1ec454ce60a.jpeg

2.VARINT

http://www.lryc.cn/news/165899.html

相关文章:

  • 移动测试之语音识别功能如何测试?
  • Python 图形化界面基础篇:使用网格布局( Grid Layout )排列元素
  • MongoDB副本集搭建
  • 【面试】Redis的热key问题如何发现和解决?
  • LeetCode-热题100-笔记-day21
  • Spring框架中的@Conditional系列注解
  • spring boot + minio 8.5.4 遇到 okhttp3包冲突
  • springboot整合actuator、admin对应用程序进行监控
  • 文举论金:黄金原油全面走势分析策略指导。
  • Fedora CoreOS 安装部署详解
  • Web应用开发 - 实训三 B Servlet基础
  • Debian12安装 Docker
  • Elasticsearch:为具有许多 and/or 高频术语的 top-k 查询带来加速
  • 【pythonflask-1】简单实现加减乘除输入界面
  • 基于协同过滤算法的旅游推荐系统
  • 遇见问题:使用mybaties向数据库中插入数据,idea显示插入成功,但是数据库中并没有数据变化?
  • markdown学习笔记
  • C++项目实战——基于多设计模式下的同步异步日志系统-⑧-日志落地类设计
  • 从零开始探索C语言(八)----指针
  • SpringMVC 的三种异常处理方式详解
  • 莫比乌斯召回系统介绍
  • 使用ASM修改组件化 ARouter
  • 第21章_瑞萨MCU零基础入门系列教程之事件链接控制器ELC
  • (二十八)大数据实战——Flume数据采集之kafka数据生产与消费集成案例
  • vue3:22、vue-router的使用
  • 深入理解JVM虚拟机第五篇:一些常用的JVM虚拟机(二)
  • 导数公式及求导法则
  • SpringMVC系列(六)之JSON数据返回以及异常处理机制
  • 民安智库(北京第三方窗口测评)开展汽车消费者焦点小组座谈会调查
  • 【CVPR2021】MVDNet论文阅读分析与总结