序列化和反序列化

    技术2025-08-28  10

    概念

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

    为什么需要序列化?

    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. 不是向下兼容的

         

     

     

    Processed: 0.018, SQL: 10