可以实现不等待,线程自动更新缓存
java动态缓jar包http://dl2.csdn.net/down4/20070918/18203740920.jar
源代码:
CacheData.java 存放缓存数据的Bean
/** *//**
*
*/
package com.cari.web.cache;
/** *//**
* @author zsy
*
*/
public class CacheData ...{
private Object data;
private long time;
private int count;
public CacheData() ...{
}
public CacheData(Object data, long time, int count) ...{
this.data = data;
this.time = time;
this.count = count;
}
public CacheData(Object data) ...{
this.data = data;
this.time = System.currentTimeMillis();
this.count = 1;
}
public void addCount() ...{
count++;
}
public int getCount() ...{
return count;
}
public void setCount(int count) ...{
this.count = count;
}
public Object getData() ...{
return data;
}
public void setData(Object data) ...{
this.data = data;
}
public long getTime() ...{
return time;
}
public void setTime(long time) ...{
this.time = time;
}
}
CacheOperation.java 缓存处理类
package com.cari.web.cache;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Hashtable;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/** *//**
* @author zsy
*/
public class CacheOperation ...{
private static final Log log = LogFactory.getLog(CacheOperation.class);
private static CacheOperation singleton = null;
private Hashtable cacheMap;//存放缓存数据
private ArrayList threadKeys;//处于线程更新中的key值列表
public static CacheOperation getInstance() ...{
if (singleton == null) ...{
singleton = new CacheOperation();
}
return singleton;
}
private CacheOperation() ...{
cacheMap = new Hashtable();
threadKeys = new ArrayList();
}
/** *//**
* 添加数据缓存
* 与方法getCacheData(String key, long intervalTime, int maxVisitCount)配合使用
* @param key
* @param data
*/
public void addCacheData(String key, Object data) ...{
addCacheData(key, data, true);
}
private void addCacheData(String key, Object data, boolean check) ...{
if (Runtime.getRuntime().freeMemory() < 5L*1024L*1024L) ...{//虚拟机内存小于10兆,则清除缓存
log.warn("WEB缓存:内存不足,开始清空缓存!");
removeAllCacheData();
return;
} else if(check && cacheMap.containsKey(key)) ...{
log.warn("WEB缓存:key值= " + key + " 在缓存中重复, 本次不缓存!");
return;
}
cacheMap.put(key, new CacheData(data));
}
/** *//**
* 取得缓存中的数据
* 与方法addCacheData(String key, Object data)配合使用
* @param key
* @param intervalTime 缓存的时间周期,小于等于0时不限制
* @param maxVisitCount 访问累积次数,小于等于0时不限制
* @return
*/
public Object getCacheData(String key, long intervalTime, int maxVisitCount) ...{
CacheData cacheData = (CacheData)cacheMap.get(key);
if (cacheData == null) ...{
return null;
}
if (intervalTime > 0 && (System.currentTimeMillis() - cacheData.getTime()) > intervalTime) ...{
removeCacheData(key);
return null;
}
if (maxVisitCount > 0 && (maxVisitCount - cacheData.getCount()) <= 0) ...{
removeCacheData(key);
return null;
} else ...{
cacheData.addCount();
}
return cacheData.getData();
}
分享到:
相关推荐
从给定的文件信息来看,标题与描述都指向了“Java Web应用教程——网上购物系统的实现”,这表明文档主要关注于使用Java技术构建Web应用程序,特别是聚焦于网上购物系统这一具体场景。以下是对该主题涉及的关键知识...
本篇文章将详细介绍 Java Web 项目案例——知识管理软件的相关知识点,涵盖 Java EE 概述、Servlet 基础、JSP、JSTL、JavaBean、Hibernate 等技术。 一、Java EE 概述 Java EE(Enterprise Edition)是一个基于 ...
总的来说,这个JAVA实训的Web编程实例——BBS系统,将全面覆盖JAVA Web开发的基本概念和技术,包括Servlet、JSP、数据库操作、会话管理、安全性以及性能优化。通过实际操作和理解每个步骤,你将能够独立构建一个功能...
JSP 是一种基于Java的技术,用于创建动态网页。JSP 页面本质上是包含HTML代码和嵌入式Java代码的文件。这些文件被部署在服务器端,由服务器解释执行,并将结果以HTML格式返回给客户端浏览器。文档中的示例`login.jsp...
### 高并发Web架构实现思路——Java版 #### 一、引言 随着互联网的快速发展,Web应用系统面临着巨大的挑战,尤其是如何处理高并发、海量数据的情况。传统的Web架构已经无法满足当前的需求,这就需要我们探索新的...
同时,为了提高性能,可能需要对数据库查询进行优化,减少不必要的数据库交互,或者采用缓存技术来加速数据获取。 这个项目通过实际操作,让学生在实践中掌握Java Web开发的基本流程和技术,提升其解决问题和团队...
- 学习SQL语言和关系型数据库MySQL、SQLserver、Oracle,以及NoSQL数据库如MongoDB和缓存技术如memcached。 - 对于前端,HTML、JavaScript、jQuery等知识也需掌握。 2. **开发工程师阶段**: - 开始时,可能会...
MeyboMail Web可能利用了线程池、缓存技术等手段来提升性能。开发者可以从源码中学习如何设计和优化这类高并发的Web应用。 **用户界面与前端技术** 尽管MeyboMail Web主要关注后端,但前端UI同样重要。源码可能...
根据提供的文件信息,我们可以推断出这是一本关于Java Web技术的书籍——《深入分析Java Web技术内幕》修订版,作者是许令波。本书主要针对Java Web开发人员和技术爱好者,旨在深入剖析Java Web技术的核心原理及应用...
由于提供的文件内容中并没有实际的文本内容,而是重复的网址链接和提醒...需要注意的是,Java Web开发是一个广泛且持续发展的领域,新的技术和框架不断涌现,因此开发者需要保持持续学习的态度,以跟上技术发展的步伐。
本书《轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发》正是为此目的而编写,旨在帮助读者掌握这些技术,并在实践中灵活运用。 总之,SSH框架的整合使用是Java EE开发的重要趋势,它们各自的...
标题:"Web爬虫一个WEB爬虫的实例——JAVA." 描述:"web技术爬虫可用很犀利" 标签:"爬虫技术" 部分代码内容分析与详细解释: 该Java代码展示了一个简单的Web爬虫(SearchCrawler)类,用于在指定的网站上搜索...
Java vs C# —— JSP与ASP.NET简单之比较! 在这篇文章中,我们将比较Java和C#这两种编程语言,并对比JSP和ASP.NET这两种技术栈的优缺点。 Java vs C# Java和C#都是面向对象的编程语言,它们都继承了面向对象编程...
这个Java毕业设计项目全面展示了如何将Java技术应用于电子商务领域,涵盖了从系统架构设计到安全策略实施的诸多方面,对于学习者来说,是一个宝贵的实践机会,有助于深化对Java编程和电子商务系统开发的理解。
双缓存技术是一种在Web应用中提升性能和响应速度的重要策略。它主要通过利用两种不同级别的内存——通常是CPU缓存和硬盘上的磁盘缓存——来减少数据读取的延迟,提高用户体验。本文将深入探讨双缓存的概念、工作原理...
9. **性能优化**:通过缓存技术(如Redis)、分页加载、异步处理等方式,提高系统的响应速度和用户体验。 总的来说,MyShopping项目提供了一个实践Java Web商城开发的平台,涉及到了从后端数据库操作到前端界面展示...
Java Web Start(简称 JWS)是 Sun Microsystems(现 Oracle)为解决 Java 应用程序部署和更新问题而开发的一项技术。它是 JSR-56 规范的一部分,旨在提供一种简便的方法来发布和维护在客户端 JVM 上运行的 Java ...
Java WebStart曾作为替代Applet的方案,提供了一种安全的、可离线缓存的Java应用启动方式。然而,由于安全问题和浏览器厂商对NPAPI插件的支持减弱,两者都逐渐被淘汰。 9. JavaFX JavaFX是现代的Java图形用户界面...
通过实现这些方法,开发者可以创建动态Web应用,接收和处理来自客户端的数据。 JSP(JavaServer Pages)是另一种常用的Java Web技术,它允许开发者在HTML页面中嵌入Java代码,实现了视图与逻辑的分离。JSP页面经过...
Memcached是一款高性能的分布式内存对象缓存系统,用于减轻数据库负担,加速动态Web应用,提高访问速度。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站的速度和响应时间。 #### 二、...