5

我知道序列化什么,但对我来说,这是一个无法描述其含义的术语。

为什么我们叫序列化序列化?将对象转换为原始数据(以及膨胀/反序列化,就此而言)适用于与“串行”一词相关的任何事情是什么?谁创造了这个词,为什么?

4

6 回答 6

10

它可能来自网络和通信,需要将数据转换为 1 和 0 的串行流。

维基百科说:

在计算机科学中,在数据存储和传输的上下文中,序列化是将对象转换为位序列的过程,以便它可以持久保存在存储介质(例如文件或内存缓冲区)上或跨网络连接链路。当根据序列化格式重新读取生成的一系列位时,它可用于创建原始对象的语义相同克隆。对于许多复杂的对象,例如那些大量使用引用的对象,这个过程并不简单。


我还记得昨晚我从事的第一个网络项目(1983 年)使用术语“序列化程序”来表示将消息从 C 中的结构转换为一系列字节以写入网络传输的代码部分。它必须获取逻辑上表示消息的结构,并将其输出到网络上的下一个字节之后的每个字节

此代码的作者来自 BB&N,因此为您提供了查找历史的方向。

于 2009-07-13T03:58:10.960 回答
4

序列化通过数据结构和指针将内存中的数据转换为一系列字节,这些字节旨在保存在顺序媒体(如硬盘)上或通过类似串行连接的方式传输。

于 2009-07-13T03:59:34.483 回答
4

我认为 John Saunders 走在正确的轨道上,数据作为“流”发送到磁盘或通过网络这一事实几乎可以肯定是这个术语的起源。

然而,另一种思考方式是这样的:程序的状态分布在整个内存中,指针/链接指向各处。你有数组、列表、树、调用堆栈、分配的内存堆等,没有特定的顺序。

当你想保存一些状态时,你不能在你的程序中使用很多信息。例如,任何指针值或堆栈偏移量(无论是直接使用还是由语言运行时内部使用等)都可能在下次程序运行时无效,因为堆将用于分配稍微不同的内存块系列. 保存这些指针值是没有用的。

要保存某些状态,您必须“整理事务”,以便保存的信息只是稍后将相关的部分。

于 2009-07-13T04:44:44.220 回答
3

串行意味着一个接一个。因此,它变成了一个长字节流。

于 2009-07-13T03:59:01.923 回答
1

它基本上只是表示按顺序排列的一系列项目。序列化这个词有时也用于文学。

于 2009-07-13T04:02:52.573 回答
0

早在早期,我们将数据保存到磁带等介质,然后是软盘,它一次只能读/写一位,而存储的本质是磁介质相对于读/写磁头以一定的速度移动. 所以数据的物理布局是 1 和 0,从媒体上的某个点开始,到另一个点结束。因此,数据实际上是以串行方式传输到存储的。

于 2017-06-11T18:29:52.430 回答