序列化和反序列化

概念

序列化是指把对象转换为字节序列的过程,而反序列化是指把字节序列恢复为对象的过程(客户端从文件中或网络上获得序列化后的对象字节流后,根据字节流中所保存的对象状态及描述信息,重建对象)。

为什么需要序列化?

For a complex object,“data” are everywhere in memory. 

我们如何将这样一个对象存储到文件中? 如何将这个对象传递到另外一个进程(Inter-Process Communication), 或者传递到另外一台机器(Remote Procedure Call)?  --序列化

We srialize an object into text (a human readable string/bytes array) or bytes (binary format).

Text Format

1. xml: 在webservice中应用最为广泛,但是数据冗余

2. json: 浏览器对于json数据支持非常好,有很多内建的函数支持。使用键值对的方式,压缩了一定的数据空间 

3. ProtoBuf: 谷歌开源的一种数据格式,适合高性能,对响应速度有要求的数据传输场景。二进制数据格式,数据本身不具有可读性,反序列化之后得到真正可读的数据;序列化后体积相比Json和XML很小,适合网络传输,并且序列化反序列化速度很快。

4. QueryString: array<pair<string, string>>

[ "q" : "text",

   "source": "web",

   "timestamp": "20200704"

]

serialize: url?q=text&source=web&timestamp=20200704

Binary Format

优点:更快 (no serialization at all, just dump the memory block)

缺点:1. 长度必须是预定义的,不能有动态分配的内存

           2. 不是向下兼容的

     

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值