gpt4 book ai didi

protocol-buffers - Protocol Buffer 对象的增量写入

转载 作者:行者123 更新时间:2023-12-04 15:36:44 29 4
gpt4 key购买 nike

我有用于记录数据的 Protocol Buffer 。

message Message {
required double val1 = 1;
optional int val2 = 2;
}

message BigObject {
repeated Message message = 1;
}

我每秒收到一条消息。它们与我的 BigObject 一起存储在内存中,并用于某些任务。但同时我想将该消息存储在文件中以备应用程序崩溃时的备份。每次简单的写BigObject都是浪费时间。而且我试图找到自上次写入文件以来只写入添加消息的方法。有办法吗?

最佳答案

Protobuf 是一种可附加格式,您的布局非常适合此格式。只需打开位于末尾的文件,然后从一个新的(空的)BigObject 开始.添加/序列化新的 Message实例,并写入文件(从末尾开始)。

现在,如果你从头开始解析你的文件,你会得到一个 BigObject与所有 Message实例(旧的和新的)。

您实际上可以通过记录每个人来做到这一点 Message当它到达时,只要您将其包裹在 BigObject 中每次,即在伪代码中

loop {
msg = await NextMessage();
wrapper = new BigObject();
wrapper.Messages.Add(msg);

file = OpenFileAtEnd();
wrapper.WriteTo(file);
file.Close();
}

关于protocol-buffers - Protocol Buffer 对象的增量写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6827629/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com