本篇文章重点关注以下问题:
- 规定数据存放协议,加快索引
- java利用序列化与反序列化实现对象的读写
- 对象、字节数组、文件之间的转换
- 整合Demo
1. 数据在文件中的存放协议
在面向对象的语言中,将数据以对象的形式保存极为常见,而通过序列化把对象直接保存在文件或数据库中,再反序列化得到对象,中间过程无需自己解析也极为方便,但是因为对象序列化后需要保存类信息,存储空间开销较大,如何建立快速索引,避免不必要的开销则至关重要。
首先规定每条记录的存储格式:索引(4byte) + 记录长度(4byte) + 数据(变长);
- 索引为记录的唯一标识,如若命中索引,则返回数据部分;如若为命中,继续查找下一记录。(索引大小可自定义)
- 记录长度为数据部分所占的存储空间,程序可根据此字段跳过此条记录数据部分的读取。(记录长度的大小可自定义)
- 数据部分存储数据,不同对象可能会占用不同的空间。