我开始使用OOP编程,想知道OOP用语中序列化的含义是什么?
答案 0 :(得分:115)
序列化是将内存中的对象转换为字节流的过程,这样您就可以将其存储在磁盘上或通过网络发送。
反序列化是一个相反的过程:将字节流转换为内存中的对象。
答案 1 :(得分:69)
简单地说序列化是将Object转换为字节流的过程,以便可以通过网络传输或存储在持久存储中。
反序列化恰恰相反 - 从网络或持久性存储中获取字节流,并将其转换回具有相同状态的对象。
要理解的是如何解释或操纵这些字节流,以便我们获得完全相同的Object /相同状态。有各种方法可以实现这一目标。其中一些是 -
Serializable interface
并写入Object Stream。答案 2 :(得分:42)
假设我正在通过电话与我的好友交谈,并告诉他我的新小狗。
这是我的问题:小狗是一种活的,呼吸的哺乳动物。我是怎么想通过电话线传送一只小狗的?我无法将我的小狗放入我的手机接收器中。
相反,我必须通过电话传达小狗的表示。换句话说,然后我将我的狗Rex序列化,然后通过电话线向他发送Rex的序列化版本:
{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }
它是一个完美的代表 - 我的狗的序列化。
序列化基本上意味着将我的狗Rex转换成其他东西 - 一个JSON对象 - 然后可以通过电话线传输为一系列的1和0。我在NYC的伙伴然后可以将那些1和0转换回JSON对象 - 这样他就可以完美地代表我的狗Rex。简单!
有任何问题吗?只需发表评论。
答案 3 :(得分:14)
看看这个,这会给你一个很好的解释:
http://en.wikipedia.org/wiki/Serialization
我认为序列化一词的最常见用法是将二进制对象转换为XML(或其他字符串)表示,以便将其存储在数据库/文件中或通过Web服务中的网络发送呼叫。反序列化是一个相反的过程 - 将XML /字符串转换回对象。
编辑: 您可能遇到的另一个术语是编组/解组。编组与序列化的概念基本相同,解组与反序列化相同。
答案 4 :(得分:5)
序列化是将无序数据(例如对象)转换为令牌的系列的过程,稍后可以使用它来重建原始数据。序列化表单通常是一串文本,但不一定是。
答案 5 :(得分:5)
序列化是将对象转换为字节流以存储对象或将其传输到内存,数据库或文件的过程。其主要目的是保存对象的状态,以便能够在需要时重新创建它。反向过程称为反序列化。
...
此图显示了序列化的整个过程
...
通过序列化,开发人员可以执行诸如通过Web服务将对象发送到远程应用程序,将对象从一个域传递到另一个域,将对象作为XML字符串传递通过防火墙,或维护安全性等操作跨应用程序的用户特定信息
来自https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/
(强调我的)
答案 6 :(得分:2)
序列化是将对象转换为可存储的位序列。
因此您可以将此序列保存到文件,数据库或通过网络发送。
稍后您可以将其反序列化为实际对象,并在需要时重复使用它。
Web服务和 AJAX 是最常见的序列化示例。在将响应发送到客户端之前序列化对象。
答案 7 :(得分:1)
序列化是指当对象的状态可以保存在文件中时,对象(一块内存)以表格形式翻译(作为示例)。
将它视为制作饼干 - 对象是面团,饼干 - 是一个连续的面团。
因此,通过“序列化”,您可以将cookie发送给您的朋友。
类似的东西: - )
答案 8 :(得分:1)
序列化只不过是将java支持的对象转移到文件支持的表单
(OR)
将java支持的表单转换为网络支持的表单..序列化的主要范围只是将数据从一个层传输到另一个层...只能通过网络发送的序列化对象..
答案 9 :(得分:1)
序列化是将Java,C#或任何其他(OOP语言)支持的对象转换为可传输表单的过程。这样,它可以通过网络传输或存储在磁盘上。对于可序列化的类,它必须实现可序列化的接口。
答案 10 :(得分:0)
序列化正在将数据转换为字节的线性“字符串”。
其他人已经或多或少地说了同样的事情,但我强调计算机模型要求数据适合一维寻址的RAM或持久存储。
大多数“数据”本质上是可序列化的(即使你必须将抽象模型简化为线性模型);不可序列化的是网络连接或复杂的基于状态的机器,如解析器。
答案 11 :(得分:0)
序列化与将二进制对象转换为XML(或其他字符串)表示形式有关,这样它可以存储在数据库/文件中,或者通过Web服务调用中的网络发送。反序列化是一个相反的过程 - 将XML /字符串转换回对象。
答案 12 :(得分:0)
当从类(蓝图)实例化(构造)实际对象(事物)时,需要通过将对象(事物)序列化(将其分解为基本原子结构)保存到内存中的空间来保存对象(事物) 。 (有点像Star Treks Transporter)。你可以把它分解成可以在某处传输和存储的信息流。然后,当您想要重建事物时,您只需将原子存储的实例拉回到对象中。与实例不同。
答案 13 :(得分:0)
序列化是将对象转换为二进制数据流的过程,以便将其存储在文件中或通过网络发送,然后可以将其复活回同一对象。
This文档应该可以帮助您详细了解Java序列化。
答案 14 :(得分:0)
序列化的名称可能来自对内存中的数据进行碎片整理。 What is memory fragmentation?
中描述了什么是内存碎片答案 15 :(得分:0)
只需考虑以下想法即可理解它。
序列化:
"hello world".split() returns ['hello', 'world']
反序列化:
" ".join(['hello', 'world']) returns "hello world"