【问题标题】:Kryo Serialization Type DetectionKryo 序列化类型检测
【发布时间】:2014-02-27 19:57:59
【问题描述】:

我直接使用 Kryo IO 对字符串、Longs 和 Doubles 进行我自己的低级原始序列化。

我想知道的是,Kryo IO 是否有办法在读回序列化字节时自动检测原始数据类型?

如果我有一个包含 10 个序列化值的字节数组,但我不知道它们是字符串、长整数还是双精度值; Kryo 有什么方法可以确定数据类型(比如 MsgPack 可以)?

【问题讨论】:

    标签: java serialization kryo


    【解决方案1】:

    Kryo 在这方面与普通的 Java 序列化没有什么不同。反序列化器有两种方法可以知道它每次反序列化的类型:

    1. 它是已知类中的一个字段,因此反序列化器实现按正确顺序读取每个字段。

    2. 流中以某种方式嵌入了类型信息以使其知道。 Kryo 中的 writeClassAndObject() 方法就是这样做的 - 它在实际对象内容之前添加了一个紧凑的类标识符,让反序列化器知道该做什么。

      或者,您可以手动执行类似的操作,例如通过发送将在有限数量的支持类型中进行选择的单个字节。

    此外,这也是MessagePack 格式所要求的...

    【讨论】:

    • 我刚刚花了一天时间将我的序列化从 MsgPack 移植到 Kryo。 Kryo 就像呼吸新鲜空气!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2016-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多