序列化
提供 Julia 对象的序列化。
Serialization.serialize — 函数serialize(stream::IO, value)将任意值以不透明格式写入流中,以便可以通过 deserialize 读取回。读取回的值将尽可能与原始值相同,但请注意,Ptr 值被序列化为全零位模式(NULL)。
首先将 8 字节的识别标头写入流。要避免写入标头,请构造一个 Serializer 并将其用作 serialize 的第一个参数。另请参见 Serialization.writeheader。
数据格式可能会在 Julia 的次要(1.x)版本中更改,但先前 1.x 版本编写的文件将保持可读性。对此的主要例外情况是外部包中类型的定义发生更改时。如果发生这种情况,可能需要在您的环境中指定受影响包的显式兼容版本。即使是私有函数,重命名包内的函数也会使现有文件不同步。匿名函数需要特别注意:由于它们的名称是自动生成的,因此代码的细微更改会导致它们被重命名。应避免将匿名函数序列化到用于长期存储的文件中。
在某些情况下,读取和写入机器的字大小(32 位或 64 位)必须匹配。在更罕见的情况下,操作系统或架构也必须匹配,例如在使用包含平台相关代码的包时。
serialize(filename::AbstractString, value)打开一个文件并将给定值序列化到其中。
此方法自 Julia 1.1 起可用。
Serialization.deserialize — 函数deserialize(filename::AbstractString)打开一个文件并反序列化其内容。
此方法自 Julia 1.1 起可用。
Serialization.writeheader — 函数Serialization.writeheader(s::AbstractSerializer)将识别标头写入指定的序列化器。标头由 8 个字节组成,如下所示
| 偏移量 | 描述 |
|---|---|
| 0 | 标签字节 (0x37) |
| 1-2 | 签名字节“JL” |
| 3 | 协议版本 |
| 4 | 位 0-1:字节序:0 = 小端,1 = 大端 |
| 4 | 位 2-3:平台:0 = 32 位,1 = 64 位 |
| 5-7 | 保留 |