什么是序列化?

我正在开始使用OOP编程,并想知道在OOP说法中序列化的含义是什么?

序列化是将内存中的对象转换为字节stream的过程,因此您可以将其存储在磁盘上或通过networking发送。

反序列化是相反的过程:将一串字节转换成内存中的一个对象。

简单地说, 序列化是一个将Object转换为字节stream的过程,以便它可以通过transferred over a network or stored in a persistent storage

反序列化完全相反 – 从networking或持久性存储中获取字节stream,并将其转换回具有相同状态的对象。

现在唯一需要了解的是如何解释或操纵这些字节stream,以便获得完全相同的对象/相同状态。 有多种方法可以实现这一点。 他们之中有一些是 –

  1. XML :将对象转换为XML,通过networking传输或将其存储在文件/数据库中。 检索它并将其转换回具有相同状态的对象。 在Java中,我们使用JAXB (用于XML绑定的Java架构)库(从Java 6开始,它与JDK捆绑在一起)。
  2. JSON :可以通过将对象转换为JSON (Javascript对象表示法)来完成。 再次有GSON库可以用于此。
  3. 或者我们可以使用OOP语言本身提供的序列化。 例如。 在Java中,您可以序列化一个Object,使其实现Serializable interface并写入Object Stream。

看看这个,这会给你一个很好的解释:

http://en.wikipedia.org/wiki/Serialization

我认为术语序列化最常见的用法是将二进制对象转换为XML(或其他string)表示forms,以便它可以存储在数据库/文件中或通过networking服务调用通过networking发送。 反序列化是相反的过程 – 将XML /string转换回对象。

编辑:你可能遇到的另一个术语是编组/解组。 编组基本上和序列化的概念是一样的,反序列化和反序列化是一样的。

序列化是将无序数据(例如对象)转换成一系列令牌,以后可以用来重build原始数据。 序列化的forms通常是一串文本,但不一定是。

序列化将对象转换为可存储的位序列。

所以你可以保存这个序列到一个文件,数据库或通过networking发送。

稍后,您可以将其反序列化为实际的对象,并随时重用。

Web服务AJAX是序列化最常见的例子。 在将响应发送给客户端之前,将对象序列化。

序列化不过是将java支持的对象转换为文件支持的forms

  (OR) 

将java支持的格式转换为networking支持的格式。序列化的主要范围不过是将数据从一个层传输到另一个层…只有序列化的对象,我们可以通过networking发送。

序列化是当对象(一块内存)在对象的状态可以被保存在文件中的时候被翻译成一个表格(例如)。

把它当做cookies – 对象是面团,cookies – 是一个系列化的面团。

所以通过“序列化”你可以发送cookie给你的朋友。

这样的事情:-)

串行化将数据转换为字节的线性“string”。

其他人也说或多或less都是一样的,但我强调,计算机模型要求数据适合一维编址的RAM或持久存储器。

大部分“数据”是固有的序列化(即使你必须将抽象模型简化为线性模型)。 不可序列化是说一个networking连接或复杂的基于状态的机器,如parsing器。

序列化与将二进制对象转换为XML(或其他string)表示forms有关,以便它可以存储在数据库/文件中或通过networking服务调用通过networking发送。 反序列化是相反的过程 – 将XML /string转换回对象。

当从一个类(蓝图)实例化(构造)实际的对象(事物)时,需要通过将对象(事物)序列化(将其分解为基本primefaces结构)保存到内存空间中。 (有点像星际旅行运输)。 你把事情分解成可以在某处传输和存储的信息stream。 然后,当你想重build的东西,你只需将primefaces存储的实例拉回到对象。 与立足不同。

序列化是将对象转换为二进制数据stream的过程,以便将其存储在文件中或通过networking发送,以便将其复制回同一个对象。

这个文档应该有助于你详细了解Java序列化。

序列化是将java或C#支持的对象转换为可移动的表单的过程。 这样它可以通过networking传输或存储在磁盘上。 对于一个可序列化的类,它必须实现可序列化的接口。