gpt4 book ai didi

java - 在序列化中,将对象转换为字节流意味着什么?

转载 作者:行者123 更新时间:2023-12-02 04:39:22 24 4
gpt4 key购买 nike

对象不是已经存储为一堆字节了吗?序列化只是一种协议(protocol),在通过网络传输时强制规定这些字节的组织方式吗?

最佳答案

从技术上讲,是的,计算机中的所有内容都在某个地方表示为数据。所以任何内存中的对象都是“一堆字节”。

但是,当在实时应用程序中使用时,该对象的状态可能会发生变化。它处于不断变化之中。并且该状态可以被存储/更改/已知/等等。跨多种媒介。

序列化是将对象的状态捕获为某种静态形式的过程,该形式可以持久保存到更静态的介质中。具体来说,此信息需要包括稍后重新创建对象所需的所有内容。

形式或媒介是什么并不重要。数据可以是原始二进制、JSON、XML、文本、任何自定义格式等。存储介质可以是文件系统、数据库、网络连接、 Activity 内存等。它可以存储几毫秒或几个世纪.

<小时/>

作为一个类比,考虑一个人。有很多信息构成了“一个人”的一切。你会如何“序列化”一个人?

你可以将他们的 DNA 序列保存到计算机上(一个简单的字符数组就可以了)。但这会存储人的状态吗?您可以根据该数据重新创建一个人,但是您可以在相同的状态下重新创建同一个人吗?不,他们所有的内存都会丢失。

因此,在尝试序列化人时,我们发现代表人的状态的信息包含的信息不仅仅是用于创建人的原始信息。该状态信息在人的一生中存储在单独的介质中,并且不那么容易获得。但为了序列化此人,这是必要的。

继续类比...考虑《星际迷航》中的运输机。 “对象”是一个人,该人被成功转换为数据流,然后在传输的另一端重新构造该数据流。两个传输系统是独立的,只是交换信息。此信息足以重新创建原始对象及其序列化时的确切状态。

关于java - 在序列化中,将对象转换为字节流意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30358316/

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