【问题标题】:serialization versus file writing序列化与文件写入
【发布时间】:2016-05-18 15:15:49
【问题描述】:

我正在尝试了解序列化和反序列化,但仍有一些疑问。它与将文件写入磁盘有何不同。如果我想在磁盘上存储一些数据或通过网络发送它,我可以不使用写入数据吗

open(filename), write(filename) and close(filename)?

这将根据我选择的模式将数据以文本或二进制格式以文件名存储在磁盘上。然后我可以通过网络发送这个文件。

这与序列化有何不同? 这与协议缓冲区有何不同?

请帮助我和其他人一劳永逸地确定这个概念

【问题讨论】:

    标签: serialization save protocol-buffers


    【解决方案1】:

    来自wikipedia

    在计算机科学中,在数据存储的上下文中,序列化是将数据结构或对象状态转换为可以存储的格式(例如,在文件或内存缓冲区中,或通过网络连接链路传输)的过程) 并稍后在相同或其他计算机环境中重建。

    因此,无论您如何操作(如何存储文件、如何发送文件等),重要的是您能够重建(反序列化)原始对象过渡状态。

    假设您在互联网上购买了Lego Millenium Falcon。这是一个很棒的对象,但不可能将它发送给刚刚构建的您。所以在乐高,他们解构了它,然后把它放进一个特殊的盒子里(序列化)。盒子的形状取决于他们使用哪个频道将其发送给您。例如,如果他们用手拿给你,他们会用手提包;如果他们使用快递,他们将使用与所使用的特定快递(JSON、XML、YAML ...)兼容的盒子。一周后,您得到了盒子,因此您打开盒子并愉快地构建 Millennium Falcon(反序列化)。几周后,您需要将 Falcon 存放在您的壁橱中,但它对于架子来说太大了,因此您将其解构,然后将碎片放入适合架子的盒子(文件?)。一段时间后,您将其取回并再次重建它。 您可以在每次需要时解构/打包-解包/构造对象。 就像在计算机科学中一样,您可以使用多种媒体来存储/发送盒子,您可以运送它,您可以携带它,并且将来您可以传送它。

    关于协议缓冲区,您可以将其视为一个特殊的盒子,可以适应您必须发送的对象,并且可以由多个人打包/解包,即使他们不会说同一种语言。

    【讨论】:

    • 谢谢。我理解那部分。我想知道为这个协议缓冲区添加更多名称有什么意义。任何想法
    • 我试着举个例子,希望能说明一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    相关资源
    最近更新 更多