不是已经存储为一堆字节的对象吗?序列化只是一个协议,强制通过网络传输这些字节的方式。在序列化中,将对象转换为字节流的含义是什么?
回答
从技术上讲,是的,一台计算机中的所有东西都表示为的某处。所以任何内存中的对象都是“一堆字节”。
但是,在实时应用程序中使用时,该对象的状态可能会更改。它在不断变化。并且该状态可以被存储/更改/已知/等。跨越多种媒介。
序列化是将对象的状态捕获到某种静态形式的过程,它可以被持久化为更静态的介质。具体来说,这些信息需要包含以后重新创建对象所需的一切。
它是什么形式或媒体并不重要。数据可以是原始二进制,JSON,XML,文本,任何自定义格式等。存储介质可以是文件系统,数据库,网络连接,活动内存等等。它可以存储几毫秒或几百年。
作为一个比喻,考虑一个人。有很多信息构成了“一个人”的一切。你会如何“序列化”一个人?
你可以将他们的DNA序列保存到计算机(一个简单的字符阵列就可以实现)。但是,这是否存储该人的状态?您可以从该数据重新创建a人,但您是否可以在相同状态下重新创建同一个人?不,他们所有的回忆都会丢失。
因此,在尝试序列化此人时,我们发现代表一个人的状态的信息不仅包含用于创建此人的原始信息。该状态信息在人的寿命期间被存储在单独的介质中,并且不容易获得。但是为了序列化这个人,这是必要的。
继续比喻......考虑来自Star Trek的运输者。 “对象”是一个人,并且该人被成功转换为数据流,然后在传输的另一端重新构建该数据流。两个运输系统是分开的,只是交换信息。这些信息足以将原始对象重新创建为序列化的确切状态。
“序列化”意味着将对象转换为另一个状态以达到传输或持久的目的。
不是已经存储为一堆字节的对象吗?是的,但那不是重点。重点是坚持和转移。以图像为例:这是内存中的一件事,另一种保存为JPEG,另一种保存为GIF或TIFF或BMP。
序列化只是一个协议,强制某些命令如何通过网络传输时组织这些字节?请参阅关于序列化含义的第一个问题的答案
- 1. 将字节流转换为对象
- 2. 将不可序列化的对象转换为字节数组
- 3. 将字节流反序列化为对象
- 4. 将java字节转换为c#字节(序列化问题)
- 5. 序列化:将字节转换为字节?
- 6. Python 3.4将字节字节字节转换为字节对象
- 7. 将JSON对象转换为序列化的JSON字符串
- 8. 将对象转换为可序列化对象的术语
- 9. 将流转换为对象?
- 10. 转换为可序列化的对象
- 11. 当将json对象转换为字符串或字节时,Json对象包含转换为“\ n”的换行符
- 12. 将对象转换为字节数组
- 13. 将.NET对象转换为(字节*)
- 14. 将字节[]转换为对象
- 15. 将对象转换为字节[]
- 16. 将字节数组转换为对象
- 17. 使用节俭json序列化将对象转换为JSON字符串
- 18. 使用序列化将对象[]数组转换为字符串[]
- 19. 如何将Interop.Word.Document对象转换为流或字节数组?
- 20. 在C#中序列化一个对象并获取字节流
- 21. 包含JodaTime序列化的自定义对象对象转换成JSON
- 22. 是有什么办法字节数组转换为Blob对象在node.js中
- 23. 如何将Dic Post转换为Django中的序列化对象?
- 24. 将对象列表转换为c#中的数组 - “x => x.Name”语法的含义是什么?
- 25. 将hexdump转换为字节序列
- 26. 反序列化json对象并将内部对象转换为字符串值?
- 27. 为什么Viewstate只能包含可序列化的对象?
- 28. 在Python中将对象转换为列表的最佳方式是什么?
- 29. 在$ .getJSON中“url”+“序列化表单”的含义是什么
- 30. 将NSData字节转换为自定义对象
那么,序列化不只是传输一个内存映像,它确实使用已知的传输顺序和协议。 [链接](http://docs.oracle.com/javase/6/docs/platform/serialization/spec/serialTOC.html)。我想你可以说“只是力量”,尽管这似乎使系列化所需的工作变得微不足道。 – markspace