flushthink

just for essential skill
随笔 - 14, 文章 - 0, 评论 - 30, 引用 - 0
数据加载中……

serialize

序列化文件可能要注意的几点:(不足给予补充)
1.不同cpu体系结构的硬件所支持的字节序不同,所以序列化的目标数据要以一种字节序为主,一般分为小端,大端,本地端(根据程序运行的机器来的)。
2.在序列化的时候就要考虑反序列化的一些便利,可以对原始数据类型做分类,所有组合原始数据的高级数据一般通过索引原始数据来获取(这样也降低了数据冗余),这样你就可以保证数据的chunk化。
3.尽可能地让文件格式不同于其他,为了此文件格式的扩展可以做一些版本指定。
4.如果你考虑到serialize的灵活性,就一定要抽象device以及stream这2个概念,device控制着使用什么stream去读写,而stream直接操纵buffer,所以在stream你可以控制读写数据的安全性(多线程)与效率。

5.现在不只考虑serialize单个文件,而考虑序列化一个文件层次结构到硬盘,一般会抽象出个archive来,这个archive存储在硬盘上,所以首先这些数据的序列化必须满足os的文件系统格式(这个不用担心了,直接操作FILE,fstream就ok了),而后为了数据包装(一是为了安全,二是为了大小,三是为了不凌乱),我们一般要对archive进行拓展,拓展archive的行为,比如在内存写到硬件这个基本函数的进行压缩并加密,而在硬盘恢复到内存这个基本函数上进行解压缩并解密,这里存在个问题,archive不是一次性读取到内存,所以最好给每个archive做个头数据,至少保证这个头数据一定要读到内存,头数据的意义就是选择性地读取archive的数据段,罗列archive的层次结构等(至于大小写敏感的问题,尽量做一些协调)。

posted on 2009-11-26 07:33 tiny 阅读(1293) 评论(1)  编辑 收藏 引用

评论

# re: serialize  回复  更多评论   

看的出来作者是有这方面经验的,希望能基于此写一篇详细点的,带例子的文章。
2009-11-26 12:28 | DebuggingNow

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理