AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / coding / 问题

问题[protocol-buffers](coding)

Martin Hope
Tristan Thompson
Asked: 2025-02-25 22:08:46 +0800 CST

相同参数类型 Proto3 的实例数量可变

  • 6

我在 Proto3 中有一个消息结构,我希望能够发送具有相同类型定义的多个项目。请看以下示例

syntax = "proto3";

message Player {
  uint32 id = 1;
  uint32 x_pos = 2;
  uint32 y_pos = 3;
  PlayerColour colour = 4;
}
enum PlayerColour {
  colour_unspecified = 0;
  colour_green = 1;
  colour_white = 2;
  colour_gold = 3;
}

message AllPlayers {
  Player player_1 = 1;
  Player player_2 = 2;
  Player player_3 = 3;
  Player player_4 = 4;
}

如您所见,此结构预定义了单个消息中可以通信的玩家数量。我很好奇,有没有办法让实例数量可变?

即,如果只有一名玩家的数据发生变化,则发送的消息仅包含玩家参数的一个实例。或者,如果在给定时刻只有 2 名玩家在玩游戏,则不会浪费带宽发送未使用的数据包(空白的 player_3 和 player_4 实例)这将大大减少传输此数据所需的总带宽。

有什么建议吗?

protocol-buffers
  • 1 个回答
  • 19 Views
Martin Hope
Gabriel Furstenheim
Asked: 2024-12-18 16:27:30 +0800 CST

protobuf 可以防止部分读取吗?

  • 7

json 的一个巧妙的特性是可以防止部分读取。

如果客户端发送如下的 json:

[ {"someProperty": 1, "otherProperty": 2}, {"someProperty": 2, "otherProperty": 3}]

不知什么原因,连接中途关闭,我只收到

[ {"someProperty": 1, "otherProperty": 2}

我知道我会遇到 json 解码异常并且永远不会处理该有效负载。

protobuf 可以进行部分读取吗?

意思是,我有一些字节数组,a[0: n]在n != len(a)同一个模型中有效但显然缺少数据?

protocol-buffers
  • 1 个回答
  • 25 Views
Martin Hope
Deepak Yadav
Asked: 2024-12-16 17:54:55 +0800 CST

如何在 Protobuf 文件中为 EnumValueOptions 指定多个枚举值

  • 6

我想在 proto 文件中传递如下所示的多个枚举值选项,但是在按照以下代码块
指定值时发现编译错误:(types) = [5,6]

    extend google.protobuf.EnumValueOptions {
      optional string name = 50001;
      repeated int32 types = 50002; 
    }

    enum FileDefinitionSubType {
        UNKNOWN = 0;
        MAIN = 1 [
          (name) = "main",
          (types) = [5,6]                   // Compilation error in this line 
        ];
      } here

有人能建议如何修复此问题吗?下面是我 Java 代码中的一个示例枚举,我想在 proto 文件中复制它。

enum CarType {
      UNKNOWN = 0;
      NEW = 1 ("new", [MARUTI_ALTO, FORD_ECOSPORT]);
      OLD = 2 ("old", [MARUTI_800, FORD_FIGO]);
      MIDAGE = 3 ("midAge", []);
}

enum CarModel {
      UNKNOWN = 0;
      MARUTI_800 = 1;
      MARUTI_ALTO = 2;
      FORD_ECOSPORT = 3;
      FORD_FIGO = 4;
}

我已经尝试传递不同的值,但没有任何效果。

protocol-buffers
  • 1 个回答
  • 17 Views
Martin Hope
Winston Moxley
Asked: 2024-12-16 00:07:11 +0800 CST

TCP 上的 protobuf 与 grpc

  • 7

我需要传输大量数据,性能是重中之重。gRPC 似乎能做的远不止序列化 protobuf,老实说,它对我来说有点臃肿。手动序列化/反序列化 protobuf 并通过 TCP 发送字节是否违反了反模式?这样做能带来多少性能提升?

protocol-buffers
  • 1 个回答
  • 20 Views
Martin Hope
Amir reza Riahi
Asked: 2024-12-04 16:31:55 +0800 CST

protobuf 中的 Oneof 字段向后兼容性

  • 6

我有两个版本的 protobuf 消息,想看看旧版本(对于未更新的客户端)是否与新版本兼容。

旧版:

message Foo {
    bool some_boolean_field = 1;
}

较新版本:


message Foo {
    enum SomeEnum {
        A = 0;
        B = 1;
        C = 2;
    }
    oneof oneof_field {
        bool some_boolean_field_in_oneof = 1;
        SomeEnum some_enumeration_field_in_oneof = 2;
    }
}

旧版本中有一个名为 的字段some_boolean_field,我想将其重命名,并将其oneof与另一个字段放在一个字段中。新版本与旧版本兼容吗?

protocol-buffers
  • 1 个回答
  • 32 Views
Martin Hope
tomzhi
Asked: 2024-08-31 02:46:57 +0800 CST

protobuf:何时应在选项中使用括号括住标识符

  • 5

可以在选项中将标识符放在括号内,如https://protobuf.dev/reference/protobuf/proto3-spec/#option中所述

例如你可以写

option foo.bar.baz = 1;

并且

option (foo.bar.baz) = 1;

或者

option (foo.bar).baz = 1;

它们有什么区别?为什么语法中需要括号?

protocol-buffers
  • 1 个回答
  • 16 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    重新格式化数字,在固定位置插入分隔符

    • 6 个回答
  • Marko Smith

    为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会?

    • 2 个回答
  • Marko Smith

    VScode 自动卸载扩展的问题(Material 主题)

    • 2 个回答
  • Marko Smith

    Vue 3:创建时出错“预期标识符但发现‘导入’”[重复]

    • 1 个回答
  • Marko Smith

    具有指定基础类型但没有枚举器的“枚举类”的用途是什么?

    • 1 个回答
  • Marko Smith

    如何修复未手动导入的模块的 MODULE_NOT_FOUND 错误?

    • 6 个回答
  • Marko Smith

    `(表达式,左值) = 右值` 在 C 或 C++ 中是有效的赋值吗?为什么有些编译器会接受/拒绝它?

    • 3 个回答
  • Marko Smith

    在 C++ 中,一个不执行任何操作的空程序需要 204KB 的堆,但在 C 中则不需要

    • 1 个回答
  • Marko Smith

    PowerBI 目前与 BigQuery 不兼容:Simba 驱动程序与 Windows 更新有关

    • 2 个回答
  • Marko Smith

    AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String”

    • 1 个回答
  • Martin Hope
    Fantastic Mr Fox msvc std::vector 实现中仅不接受可复制类型 2025-04-23 06:40:49 +0800 CST
  • Martin Hope
    Howard Hinnant 使用 chrono 查找下一个工作日 2025-04-21 08:30:25 +0800 CST
  • Martin Hope
    Fedor 构造函数的成员初始化程序可以包含另一个成员的初始化吗? 2025-04-15 01:01:44 +0800 CST
  • Martin Hope
    Petr Filipský 为什么 C++20 概念会导致循环约束错误,而老式的 SFINAE 不会? 2025-03-23 21:39:40 +0800 CST
  • Martin Hope
    Catskul C++20 是否进行了更改,允许从已知绑定数组“type(&)[N]”转换为未知绑定数组“type(&)[]”? 2025-03-04 06:57:53 +0800 CST
  • Martin Hope
    Stefan Pochmann 为什么 {2,3,10} 和 {x,3,10} (x=2) 的顺序不同? 2025-01-13 23:24:07 +0800 CST
  • Martin Hope
    Chad Feller 在 5.2 版中,bash 条件语句中的 [[ .. ]] 中的分号现在是可选的吗? 2024-10-21 05:50:33 +0800 CST
  • Martin Hope
    Wrench 为什么双破折号 (--) 会导致此 MariaDB 子句评估为 true? 2024-05-05 13:37:20 +0800 CST
  • Martin Hope
    Waket Zheng 为什么 `dict(id=1, **{'id': 2})` 有时会引发 `KeyError: 'id'` 而不是 TypeError? 2024-05-04 14:19:19 +0800 CST
  • Martin Hope
    user924 AdMob:MobileAds.initialize() - 对于某些设备,“java.lang.Integer 无法转换为 java.lang.String” 2024-03-20 03:12:31 +0800 CST

热门标签

python javascript c++ c# java typescript sql reactjs html

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve