注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 网工人才缺口大 传统网管..
 帮助

JISP用法


2007-10-23 18:16:07
 标签:jisp   [推送到技术圈]

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://convoy.blog.51cto.com/134374/47386
网上找不到任何有价值的东西,只能自己研究源代码了
 
JISP是用B-树进行存储任意类型数据的小型数据库
com.coyotegulch.jisp包里面实现的是核心算法,生成的jar包可以引入工程直接调用
外面的文件是用来测试的例子

*****************存储数据******************
用IndexedObjectDatabase创建一个对象database,用来调用存储数据库
构造函数:IndexedObjectDatabase(String filename, boolean is_new)
          filename 是文件名
          is_new   是boolean型的参数,输入文件是不是新的。当为true时新建这个文件,如果重名则覆盖原有文件。如果是false则载入原有文件。
用BTreeIndex创建一个对象index来建立索引
构造函数:BTreeIndex(String name, int order, KeyObject nullKey, boolean hasDupes)
          name      文件名
          order     树节点的个数
          nullkey   传递进来的数据类型
          hasDupes  是否允许值重复
构造函数:BTreeIndex(String name)
          name      已有文件的名字
调用attachIndex(ObjectIndex index)方法 database.attachIndex(index);
把索引加入数据库
调用write(KeyObject key[], Serializable obj)方法 database.write(keyArray,record);
          key        与index类型匹配
          obj        要存储的数据
例如:IndexedObjectDatabase database = new IndexedObjectDatabase("db",true);
      BTreeIndex index1 = new BTreeIndex("index",8,new ZipKey(),false);
      database.attachIndex(index1);
      KeyObject [] keyArray = new KeyObject[1];
      keyArray[0] = new ZipKey(zip);
      database.write(keyArray,record);
备:  keyObject是要实现的一个数据类型说是与objectindex相关,现在还不是很明白。
      这里的Zipkey是对它的一种实现,可以所谓要进行搜索的检索键值
      record是要存储的数据
 
 
*****************读取数据******************
      IndexedObjectDatabase database = new IndexedObjectDatabase("db",false);  //false 表示已经存在文件了
      BTreeIndex index1 = new BTreeIndex("index");                             //载入已经创建的索引
      database.attachIndex(index1);
      KeyObject [] keyArray = new KeyObject[1];
      keyArray[0] = new ZipKey(zip);
      database.read(keyArray,record);

Object read(KeyObject key, ObjectIndex index)方法,读取键值为key的,索引为index的数据
Object read(IndexIterator iterator)方法,读取iterator里面的数据,用iterator.moveNext()转到下一个元素,调用之前要建立BTreeIterator iterator = new BTreeIterator(codeIndex);

删除数据调用database.remove(keyArray);
综述:用到的类IndexedObjectDatabase 建立数据库
              BTreeIndex 建立索引
              KeyObject 实现这个接口,作为索引数据
              BTreeIterator 建立树中的iterator
 

本文出自 “blog.convoy.com” 博客,请务必保留此出处http://convoy.blog.51cto.com/134374/47386



上一篇 句柄  下一篇 程序运行时间



    文章评论
 
2007-10-23 22:08:02
收藏
现在能找到了

 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: