我开始使用面向对象编程(OOP),并且想知道:在OOP中,序列化的含义是什么?
我开始使用面向对象编程(OOP),并且想知道:在OOP中,序列化的含义是什么?
Answers:
序列化是将内存中的对象转换为字节流的过程,因此您可以执行诸如将其存储在磁盘上或通过网络发送等操作。
反序列化是相反的过程:将字节流转换为内存中的对象。
Marshal
and Unmarshal
与Serialize
和相同Deserialize
。
abc
将序列化为0x61 0x62 0x63
(ASCII)或0x00 0x61 0x00 0x62 0x00 0x63
(UTF16)-带有或不带有NUL终止符或编码长度的东西。
简而言之,序列化是将对象转换为字节流的过程,以便可以通过网络传输或将其存储在持久性存储中。
反序列化与之完全相反-从网络或持久性存储中获取字节流,并将其转换回状态相同的对象。
要了解的是如何解释或操纵这些字节流,以便我们获得完全相同的对象/相同状态。有多种方法可以实现这一目标。他们之中有一些是 -
Serializable interface
并写入对象流。JSON
从头开始学习,因为我对此一无所知
假设我正在和我的好友通电话,并告诉他我的新小狗。
这是我的问题:小狗是一种能呼吸的活哺乳动物。我该如何通过电话线传送一只小狗?我无法物理上将小狗放入电话听筒中。
因此,相反,我必须通过电话传达小狗的表示。换句话说,然后我将我的狗Rex序列化,然后通过电话线向他发送Rex的序列化版本:
{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }
这是一个完美的表示-我的狗的序列化。
序列化基本上意味着将我的狗Rex转换成其他东西-JSON对象-然后可以在电话线上以一系列1和0进行传输。然后,我在纽约市的好友可以将这些1和0转换回一个JSON对象-这样他就可以完美地代表我的狗Rex。
检查一下,这将给您一个很好的解释:
http://en.wikipedia.org/wiki/序列化
我认为序列化一词的最常见用法与将二进制对象转换为XML(或其他字符串)表示形式有关,以便可以将其存储在数据库/文件中或通过Web服务调用通过网络发送。反序列化是相反的过程-将XML /字符串转换回对象。
编辑:您可能会遇到的另一个术语是编组/解组。编组与序列化基本相同,解组与反序列化相同。
序列化是将对象转换为字节流以存储对象或将其传输到内存,数据库或文件的过程。其主要目的是保存对象的状态,以便能够在需要时重新创建它。反向过程称为反序列化。
...
下图显示了序列化的总体过程
...
通过序列化,开发人员可以执行一些操作,例如通过Web服务将对象发送到远程应用程序,将对象从一个域传递到另一个域,将对象作为XML字符串通过防火墙传递,或维护安全性或特定于用户的行为。跨应用程序的信息
从https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/serialization/
(强调我的)
序列化是将无序数据(例如对象)转换为一系列令牌的过程,这些令牌可在以后用于重建原始数据。序列化的形式通常是一串文本,但不是必须的。
序列化是将Java,C#或任何其他(OOP语言)支持的对象转换为可传输形式的过程。这样,它可以通过网络传输或存储在磁盘上。为了使一个类可序列化,它必须实现可序列化的接口。
序列化是将对象转换为二进制数据流的过程,以便可以将其存储在文件中或通过网络发送,在该网络中可以将其恢复为同一对象。
本文档应帮助您详细了解Java序列化。