术语“序列化”来自哪里?

时间:2009-07-13 03:56:13

标签: serialization history

我知道序列化,但对我而言,这个术语并没有描述它的含义。

为什么我们调用序列化序列化?将对象转换为原始数据(以及为此扩充/反序列化)有什么用于与“串行”一词相关的任何内容?谁创造了这个术语,为什么?

6 个答案:

答案 0 :(得分:10)

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

Wikipedia说:

  

在计算机科学中,在语境中   数据存储和传输,   序列化是一个过程   将对象转换为序列   的位数,以便它可以持久化   存储介质(例如文件或文件)   内存缓冲区)或通过   网络连接链接。当。。。的时候   产生的一系列比特被重读   根据序列化格式,   它可以用来创建一个   语义相同的克隆   原始物体。对于许多复杂的   对象,例如那些对象   广泛使用参考文献,这个   过程并不简单。


昨晚我还记得,我工作过的第一个网络项目(1983年)使用术语“序列化程序”代码部分将C语言中的结构消息转换为要写入网络的一系列字节运输。它必须采用逻辑上表示消息的结构,然后将下一个之后的每个字节输出到线路上。

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

答案 1 :(得分:4)

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

答案 2 :(得分:4)

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

另一种思考它的方式是这样的:程序的状态遍布整个内存,指针/链接指向所有地方。您有阵列,列表,树,调用堆栈,已分配内存的堆等,没有特定的顺序。

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

要保存某些州,您必须“妥善处理您的事务”,以便保存的信息只是稍后相关的部分。

答案 3 :(得分:3)

Serial表示一个接一个。因此,它成为一个长字节流。

答案 4 :(得分:1)

它基本上只是指订单中的一系列物品。序列化这个词在文献中也有用过。

答案 5 :(得分:0)

回到早期,我们将数据保存到媒体,如磁带,然后是软盘,一次只能读/写一次,存储的性质是磁性介质相对于读取的某种速率移动/写头。因此,数据的物理布局是1和0,从媒体上的某个点开始到另一个点结束。因此,数据以串行方式传输到存储器。