gpt4 book ai didi

java - proto buffer 的局限性——加载部分数据和共享字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:48 25 4
gpt4 key购买 nike

我想检查 proto buffer 是否是最适合我使用的序列化程序,我的研究发现没有其他任何东西可以接近。我正在开发 java 后端和 android (java) 移动应用程序,但是在不久的将来可能会创建其他客户端,所以我想要一些跨平台的东西。数据结构初稿:

message All {
repeated Line lines = 1;
Common common = 2;
}

有数百个 Line 对象,每个 Line 都非常复杂,占用约 100 kB。

我在 proto buffer 中看到的两个问题- 在应用程序启动时,我只需要一小部分可用数据 - 只需“Common”和“Line”中的基本信息。是否可以加载部分数据?- 每个 Line 对象包含数百个字符串,但相同的字符串出现在多个 Line 对象中,因此我想努力在这些对象之间共享它们。是否可以在 proto buf 级别,或者它是否需要成为应用程序级别的一部分?

谢谢!

最佳答案

从您提供的有限规范来看,很难给出适当的反馈。您表示对于您的问题,最好的解决方案似乎是 protobuf,但我们无法根据提供的信息重新评估。

根据你写的内容,我什至会说一个简单的 GZIP 字节数组(或 JSON,因为它的大部分是可打印的(你说它们是 Strings))可能更适合你(“重用”跨 Line 对象的很多东西 => GZIP 会摇滚)。

正如其他人所说:使用 protobuf 不可能加载“部分数据结构”(实际上你的不会是部分数据结构,只要“重复”部分是例如 Collection ,因为 protobuf 会负责在结构本身中对数据进行分段)。

我会把我的两分钱花在 GZIP 压缩的 JSON 流上(例如,使用 Jackson),当然在这种情况下,您会以 CPU 周期为代价减少带宽。

关于java - proto buffer 的局限性——加载部分数据和共享字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42314231/

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