当前位置: 首页 > 知识库问答 >
问题:

Protobuf映射的排序

殳飞扬
2023-03-14

我正在proto3中创建消息对象,并使用自动生成的java类。我想为每个消息对象分配唯一的密钥。

message Obj {
    ...
    string unique_key = 1;
    ...
}

在构建Obj期间,它从微服务接收一个名为metaData的原型对象,定义如下:

message metData {
     map<string, string> keyFields = 1;
}

基于metaData对象中的条目,通过遍历映射并散列每个条目来创建unique_key。(

protobuf文档说,密钥的顺序无法定义。我应该如何保证在键域中具有相同条目的不同元数据对象生成相同的唯一键?

共有1个答案

宗冷勋
2023-03-14

通常有两种选择:

  1. 实现一个可交换的哈希函数。E、 g.获取键的哈希值,并简单地求和,忽略溢出
 类似资料:
  • 我用的是Protobuf 3。从文档来看,似乎无法定义嵌套贴图: 我正在尝试创建一种消息类型来表示期权链的定价信息(出价和要价)。对于那些不熟悉这些金融工具的人,基本上我有一套“到期日期(YYYYMMDD)”。在每个过期日期中,我都有一组“strikes(float number;如果需要,可以用字符串表示,我同意)”。在每次行使中,我有两个期权,一个“看跌”和一个“看涨”(这被称为期权的“右”)

  • 我正试着从Protobuf映射到POJO。以下是POJO: 其中如下: 这是协议: 你明白了。 现在的问题是MapStruct没有映射Protobuf中重复的字段,因为生成的Java文件中这些字段的getter是name xxx list。例如,从UpsertNodeAllDataInput获取表的方法是输入。getTablesList()而不是输入。getTables(),显然MapStruct

  • 我使用Java、Spring boot、Hibernate堆栈和协议缓冲区作为微服务之间通信的DTO。在反向代理中,我使用protobuf的java支持将protobuf对象转换为json。 我有以下结构 将MultipleItems DTO转换为json会得到以下结果: 在生成的json中,我得到了映射到json数组的键。 我想删除密钥并只返回json数组作为结果。有没有一个干净的方法来实现这一

  • 我正在使用Java8lambda,并希望使用返回。我所能想到的最好方法是使用等于的虚拟和调用以下

  • 我有以下消息: 在typescript中,我试图根据一个类似于下面的typescript映射来设置protobuf消息的映射条目。 我尝试遍历地图对象中的条目并以这种方式设置地图条目。 我得到一个错误:“TypeError:b.toArray不是一个函数。”你知道我如何对每个typescript映射条目进行强制转换/序列化/打包,以便在protobuf中进行设置吗?我在几个地方找过运气不佳的例子。