博客
关于我
Protobuf 三个关键字required、optional、repeated的理解
阅读量:796 次
发布时间:2023-03-04

本文共 499 字,大约阅读时间需要 1 分钟。

required关键字

顾名思义,就是必须的意思,数据发送方和接收方都必须处理这个字段,不然还怎么通讯呢?

optional关键字

字面意思是可选的意思,但Protobuf处理时并非如此。实际上,Protobuf在optional字段前加了一个布尔变量,用来标记该字段是否有值。发送方在发送时,如果字段有值,就将布尔变量设为true,否则设为false。接收方在接收数据时,也会收到这个布尔变量,从而知道该字段是否有值。这就是optional的真正含义。

这种设计也被称为平滑升级,主要是为了保证与旧版本的兼容性。它类似于在传输数据时,发送对方的数组地址和数据长度信息一样,确保接收方能够正确解析数据。

repeated关键字

字面意思是重复的意思,但Protobuf中的repeated字段并非简单的重复。实际上,Protobuf在repeated字段前同样加了一个计数变量,用于标明字段的数量。发送方在发送时,会同时发送计数变量和字段的起始地址。接收方根据计数变量的值,能够正确解析对应的数据数量。

这种设计方式与传输数据时提供数组地址和数据长度的逻辑类似,确保接收方能够准确解析重复的数据项。

转载地址:http://erxfk.baihongyu.com/

你可能感兴趣的文章
POW的重力之美
查看>>
PO、VO、DAO、BO、DTO、POJO能分清吗?
查看>>
pytorch介绍-ChatGPT4o作答
查看>>
PP-PLL:基于概率传播的部分标签学习
查看>>
pytorch介绍
查看>>
pprint 排序字典但不是集合?
查看>>
pptp拨号上网
查看>>
ppt上的倒计时小工具_PPT中有哪些「看似很 LOW,实则惊艳」的小工具
查看>>
PPT添加视频的路径问题
查看>>
PPT美化插件 islide 安装过程问题“加载com加载项时运行出现错误”
查看>>
Prefix Tuning:详细解读Optimizing Continuous Prompts for Generation
查看>>
PreparedStatement 与Statement 的区别,以及为什么推荐使用 PreparedStatement ?
查看>>
PreparedStatement 查询 In 语句 setArray 等介绍。
查看>>
presentModalViewController显示半透明的一个view
查看>>
PresentViewController切换界面
查看>>
PyTorch之torch.utils.data.DataLoader解读
查看>>
PyTorch之DataLoader杂谈
查看>>
presto、druid、sparkSQL、kylin的对比分析
查看>>
Presto分布式大数据查询引擎
查看>>
Presto架构及原理
查看>>