gpt4 book ai didi

java - Java中的序列化需要什么?

转载 作者:IT老高 更新时间:2023-10-28 20:25:37 25 4
gpt4 key购买 nike

谁能告诉我 Java 中的序列化需要什么,并给我一个示例场景来解释需要吗? (我已经明白什么是序列化了,我只是想了解你什么时候使用它)。

最佳答案

关于序列化的小故事

经过多年的努力,地球上的科学家们开发了一种可以帮助他们完成日常工作的机器人。但这个机器人的功能比火星上的科学家开发的机器人少。

在两颗行星的科学家会面后,决定火星将他们的机器人送到地球。但是出现了问题。将 100 个机器人送到地球的成本是 1 亿美元。大约需要 60 天的旅行时间。

最后,火星的科学家决定与地球的科学家分享他们的 secret 。这个 secret 是关于类(class)/机器人的结构的。地球的科学家在地球本身上开发了相同的结构。火星的科学家序列化每个机器人的数据并将其发送到地球。地球上的科学家将数据反序列化并相应地输入每个机器人。

这个过程为他们节省了沟通大量数据的时间。

一些机器人被用于火星上的一些防御工作。因此,他们的科学家在将数据发送到地球之前将这些机器人的一些关键特性标记为 transient 。请注意,当对象反序列化时,transient 属性设置为 null(在引用的情况下)或默认值(在原始类型的情况下)。

地球科学家注意到的另一点是,火星的科学家要求他们创建一些静态变量以保留有关环境的详细信息。这些细节被一些机器人使用。但火星的科学家并没有分享这些细节。因为地球的环境与火星的环境不同。

即使知道机器人类结构并拥有序列化数据,地球科学家也无法反序列化可以使机器人工作的数据。

Exception in thread "main" java.io.InvalidClassException:
SerializeMe; local class incompatible: stream classdesc
:

火星的科学家们正在等待全额付款。付款完成后,火星的科学家与地球的科学家分享了 serialversionUID。地球科学家将其设置为机器人类,一切都开始工作了。

更新

虽然在序列化的帮助下,他们能够使用信号而不是实际的飞船来发送数据,但他们意识到发送大量数据仍然是一个挑战。序列化使这个过程更便宜、更快,但它仍然很慢。因此,不同的科学家提出了不同的想法来减少数据量。一些科学家建议压缩数据,一些科学家建议使用不同的机制来表示它,以便可以反序列化回来。一些想法是XML , JSON , msgpack , निम्न (Nimn)

关于java - Java中的序列化需要什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2475448/

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