Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在序列化中,将对象转换为字节流意味着什么?_Java_Serialization - Fatal编程技术网

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

Java 在序列化中,将对象转换为字节流意味着什么?,java,serialization,Java,Serialization,对象不是已经存储为一堆字节了吗?序列化是否只是一种协议,它强制在通过网络传输时对这些字节的组织方式进行某种排序?从技术上讲,是的,计算机中的所有内容都表示为某个位置的数据。所以任何内存中的对象都是“一堆字节” 但是,当在实时应用程序中使用时,该对象的状态可能会发生更改。它在不断变化。该状态可以跨多种介质存储/更改/已知/等 序列化是将对象的状态捕获为某种静态形式的过程,这种静态形式可以持久化到更静态的介质中。具体来说,此信息需要包括以后重新创建对象所需的所有内容 形式或媒介是什么并不重要。数据可

对象不是已经存储为一堆字节了吗?序列化是否只是一种协议,它强制在通过网络传输时对这些字节的组织方式进行某种排序?

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

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

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

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


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

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

因此,在尝试序列化此人时,我们发现表示此人状态的信息所包含的信息多于用于创建此人的原始信息。在人的一生中,这些状态信息存储在单独的介质中,因此不容易获得。但这是必要的,以序列化的人

继续类推。。。考虑星际迷航中的运输者。“对象”是一个人,这个人成功地转换成数据流,然后在传输的另一端重新构造数据流。这两个运输系统是分开的,只是交换信息。此信息足以将原始对象重新创建为序列化时的确切状态。

“序列化”意味着为了传输或持久化的目的将对象转换为另一种状态

对象不是已经存储为一组字节吗?是的,但这不是重点。关键是坚持和转移。以图像为例:它在内存中是一件事,另一件事保存为JPEG,另一件事保存为GIF、TIFF或BMP


序列化是否只是一种协议,它强制在通过网络传输时对这些字节的组织方式进行某种排序?请参阅关于序列化含义的第一个问题的答案

好的,序列化不仅仅传输内存映像,它还使用已知的顺序和协议进行传输。我想你可以说“justforces”,尽管这似乎使序列化所需的工作变得微不足道。