Java 流式protoBuf消息的设计模式

Java 流式protoBuf消息的设计模式,java,design-patterns,protocol-buffers,Java,Design Patterns,Protocol Buffers,我想将protobuf消息流式传输到文件中 我有一条短信 message car { ... // some fields } 我的java代码将创建此car消息的多个对象 如何将这些消息流式传输到文件中 据我所知,有两种方法 有另一个信息像汽车 message cars { repeated car c = 1; } 并让java代码创建一个cars类型的对象,然后将其流式传输到一个文件中 只需使用writeDelimitedTo功能将汽车信息适当地流式传输到单个文件中即可

我想将protobuf消息流式传输到文件中

我有一条短信

message car {
     ... // some fields
}
我的java代码将创建此car消息的多个对象

如何将这些消息流式传输到文件中

据我所知,有两种方法

  • 有另一个信息像汽车

    message cars {
      repeated car c = 1;
    }
    
    并让java代码创建一个cars类型的对象,然后将其流式传输到一个文件中

  • 只需使用writeDelimitedTo功能将汽车信息适当地流式传输到单个文件中即可

  • 我想知道使用protobuf进行流媒体传输的哪种方式更有效

    什么时候应该使用模式1,什么时候应该使用模式2

    这是我从中得到的

    我不清楚他们想说什么

    大型数据集

    协议缓冲区不是为处理大型消息而设计的。作为一个 一般经验法则,如果您处理的邮件大于 每兆字节,可能是考虑替代策略的时候了。 也就是说,协议缓冲区非常适合处理单个消息 在大型数据集中。通常,大型数据集实际上只是一个 小部件的集合,其中每个小部件可以是结构化的 一段数据。即使协议缓冲区无法处理整个 立即设置,使用协议缓冲区对每个片段进行编码 简化您的问题:现在您只需要处理一组字节 字符串而不是一组结构

    协议缓冲区不包括对大数据的任何内置支持 设置,因为不同的情况需要不同的解决方案。 有时一个简单的记录列表就可以了,而其他时候你可以 想要更像数据库的东西。应制定每种解决方案 作为一个独立的图书馆,所以只有那些需要它的人才需要付费 成本

    看一看。大小和时间上的任何差异都将是最小的 (选项1更快,选项2更小)

    我的建议是:

  • 大文件的选项2。您可以一条一条地处理消息
  • 选项1,如果需要多种语言。过去,并非所有语言都支持分隔符,但这种情况似乎正在发生变化
  • 其他智者优先

  • 你不应该寻找设计模式。它们来自于理想的代码。你应该问的是“我能用什么最简单的方法来编码?”。如果这恰好是一个设计模式(或关闭),那么就使用它。否则,请不要。@chris Thanx对于您的回答,我可以用两种方式编写代码(如问题中所述)。我想知道哪种方法更有效。序列化或反序列化时间的效率,流对象的大小。我没有回答,我只是对你的问题做了一些小的格式更改。thx。你的回答很有启发性。我不知道我怎么错过了另一页:()