2006-06-23

在JSP中使用缓存

Views: 14384 | Add Comments

“掌握了缓存机制,标志程序员进入中高级阶段。”---banq

首先创建一个缓存类,具体依赖你的程序。然后在JSP中把这个缓存类声明为scope="application"的Bean,它只创建一次,存在于application对象中,事实在它是ServletContext对象,对应用中的所有JSP文件都可见。

缓存类的实现可以参考Jive论坛(也就是Yazd)中的util包,下面是一个假想的博客文章缓存实现的大概思路,并不是可运行代码。

public class Cache{

	// Article 是文章类,String是它的id,通过id来查找文章
	// java.util.HashMap, 你可以用其它合适的素数来替代103
	protected HashMap<String, Article> cachedObjectsHash =
		new HashMap<String, Article>(103);

	// 根据访问计数来维护的链表,保存了Article的id。最先移除的Article是表尾的对象
	protected LinkedList<String> accessedList = new LinkedList<String>();

	// HashMap的最大体积(文章数)
	protected int maxSize =  1024;

	// 把Article的id加入到倒数第2位,也可以加入到表头
	public void add(Object key, Article article){
		if(!cachedObjectsHash.contains(article)){
			cachedObjectsHash.add(article.getId()+"", article);
			if(cachedObjectsHash.size() > maxSize){
				cachedObjectsHash.remove(accessedList.getLast());
				accessedList.removeLast();
			}
			accessedList.addFirst(article.getId()+"");
		}
	}

	public Article get(Object key){
		// 如果在链表中找到,位置前移
		// 返回
		// 否则查找数据库,并cacheObjectsHash.add()
	}
}

相关资源:

Related posts:

  1. 写一个对搜索引擎友好的文章SEO分页类
  2. C#封装log4net
  3. C#环形缓冲
  4. P2P穿透NAT的思路
  5. C# 中实现 FIFO 缓冲区–ArrayBuffer
Posted by ideawu at 2006-06-23 14:11:49

Leave a Comment