序列化和反序列化概念
序列化和反序列化是相对的,你可以就将其理解为数据的的编码和解码过程。一种语言系统下的数据结构只有在当前这个系统下才能够识别运行;当数据需要跨语言跨系统传输时,必须将其转成一种中间结构【文本,JSON
,
XML
,自定义结构】,这个中间结构能被双方识别、还原,这个过程就是序列化和反序列化。
通常的使用场景:
通常有两个用途,
存储和传输
,其实都是转储(转储,由一存储介质转移到另一存储介质)
1.
最常见的是将数据由
内存存储到硬盘
。数据或者对象在俩者之间的表示是有区别的,为了能在两者 之间还原对象,需要以特定的方式读取和写入数据或者对象。
2.
又比如,在
PHP
中表示的一个数据对象结构和
Javascript
表示的对象结构是不同的。那么通过将
java 中的一个数据对象序列化成一个Javascript
能够识别结构(
JSON
格式
),
javascript
就能将其还原 成语义相同的数据,在Javascript
执行环境下运行
3.
还有图像数据的传输你也可以认为是一个序列化和反序列化的过程,在传输前将图像信息序列化成 一个二进制数据流带上图像格式信息,接收方在接收到二进制流后识别出图像格式,将其还原为相 应的图像对象显示出来
4.
打游戏,很多游戏都需要通关,
100
关,通道了
90
关, 存档
=
》 序列化的过程, 读取存档的过程 =》反序列化
总结:
序列化,将数据结构或
对象
转换成二进制串的过程。
反序列化,将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。
无论是进程间、线程间的通讯,或者
client
和
server
通过
socket
通讯,还是把对象写到
db
(实际上也是socket)。 这些交互都是通过收发