2008-04-21

CommonsCache

n        Cache接口

1、      store(Serializable key, Serializable val, Long expiry, Long cost)

存储特定的关键字下的值。

过期:过期以后值变为陈旧或空。

费用:产生值的费用。

2、      store(Serializable key, Serializable val, Long expiry, Long cost, Serializable group)

存储在特定的关键字和特定的组下的值。

组:是一个元关键字,可以用来以后清除对象。

3、      retrieve(Serializable key)根据关键字获取值。

4、      getKeysForGroup(Serializable group)对关键字进行了分组,该方法的含义是从组关键字取得关键字数组。

5、       

 

n        BaseCache

1、      registerStorageListener(StorageListener obs)

注册存储监听器,即是把存储监听器添加到ArrayList中。

反注册就是从ArrayListremove

对于检索监听器也一样。

2broadcastStoreRequested(Serializable key, Serializable val, Long expiresAt, Long cost, Serializable group)

广播存储请求:即是从ArrayList中取出存储监听器,然后调用每个存储监听器的storeRequested

2、      broadcastStored:广播已存储。也是一样,从ArrayList中取出存储监听器,然后调用stored

3、      broadcastNotStored广播未存储。

4、      broadcastCleared广播被清楚。

5、      broadcastRetrieveRequested广播检索请求,即是要开始检索的。。

6、      broadcastRetrieved广播已经检索到了的。

7、      broadcastNotRetrieved广播还没有被检索到的。

广播的含义是对子目录的操作。

n        SimpleCache

1、      SimpleCache readFromFile(File f)

从文件中读取对象,然后反序列化,并转为simpleCache

2、      writeToFile()

SimpleCache对象到文件中。

3Serializable[] getKeysForGroup(Serializable group)

组是一组关键字的集合。例如key1key2key3称为A组,则keyA作为HashMap的名称,而key1key2key3HashSet表示,并作为HashMapkey-value中的value.

3、      store(Serializable key, Serializable val, Long expiry, Long cost, Serializable group)

如果cache中已经有关键字key了,则清除。

存储请求个数加1

如果过期了,则返回false

广播存储请求。

如果想序列化,则首先将一个对象序列化到一个数组中。

如果隐藏策略为空或隐藏策略应该存储,则如果隐藏策略是:

如果是YES,则调用stashstore,并且广播已经存储了。已经存储格式加1,然后写到文件。

如果是NO_FULL:则尝试驱逐,然后进行存储,否则广播未存储。

如果是NO_NOT_STORABLENO,则广播未存储。

 

4、      retrieve(Serializable key)

广播检索请求。

stash中检索。

如果检索到obj为空,则广播未检索成功,否则广播检索成功。

5、      tryToEvict()是否尝试驱逐。

 

6main(String[] args)

首先根据文件名从文件中读取一个对象,然后转为SimpleCache

如果cache为空,表明还没有存储,则进行存储。

首先构造LRUEvictionPolicyStash,然后一起构成SimpleCache

 

评论
发表评论

您还没有登录,请登录后发表评论