看别人写的源程序,发现使用了缓存处理机制,好奇,学习了一下,很有意思的东西。
它使用的是whirlycache这一个开源项目,版本0.7.老了点。先用着。
//定义自己的缓存类
public class MemberCache {
//这里是默认的缓存时间
public static final long TIME_OUT = DateUtil.HOUR;
private static Log log = LogFactory.getLog(MemberCache.class);
//创建一个单例
static private MemberCache instance = new MemberCache();
//真正的缓存对象,你缓存的东西全存在里面了
private Cache cache;
//构造函数
public MemberCache() {
try {
//初始化缓存对象
cache = CacheManager.getInstance().getCache("member");
} catch (CacheException ex) {
log.error("Cannot get the WhirlyCache. Member caching is disabled.", ex);
} catch (LinkageError e) {
// @todo: Should be never throw
log.error("Cannot get the WhirlyCache caused by Package Conflict. Member caching is disabled.", e);
}
}
static public MemberCache getInstance() {
return instance;
}
public String getEfficiencyReport() {
String result = "No report";
if (cache == null) {
if (MVNForumConfig.getEnableCacheMember() == false) {
result = "Cache is disabled.";
} else {
result = "Cache cannot be inited";
}
} else if (cache instanceof CacheDecorator) {
result = ((CacheDecorator)cache).getEfficiencyReport();
}
return result;
}
public void clear() {
if (cache != null) {
cache.clear();
}
}
//这里存储并读取缓存一个用户总数信息
public long getMemberTotalCount() throws ObjectNotFoundException, AssertionException, DatabaseException{
longcount = 0;
if (cache != null) {
//这里是键值
String key = new String("getMemberTotalCount");
//根据键值获取对象,这里原来是一个Long,但是存不进去,换成String就可以了
String Scount = (String)cache.retrieve(key);
//如果缓存中不存在
if (Scount == null) {
//从非缓存中读取
Scount= = String.valueOf(DAOFactory.getMemberDAO().getNumberOfMembers());
//存入缓存
cache.store(key, Scount, DateUtil.MINUTE);
log.info("缓存中不存在,创建后存入");
}else{
count=new Long(Scount);
log.info("从缓存中读取会员总数成功");
}
} else {
//当前缓存未启用,从数据库中直接读取
count = new Long(DAOFactory.getMemberDAO().getNumberOfMembers());
}
}
}
很简单吧。
分享到:
相关推荐
在Spring框架中,缓存机制是一项重要的功能,它能够提高应用程序的性能,减少对数据库的访问,从而降低系统负载。本篇文章将详细讲解如何利用`condition`属性来控制哪些数据可以被缓存,以实现更加精细化的缓存策略...
1. **唯一名称**:这是由程序员指定的简单字符串,必须在全局程序集缓存(GAC)中是唯一的。 2. **版本信息**:包括主要和次要版本号、修订号和构建号,用于区分不同版本的程序集。 3. **公钥/私钥对**:用于签名...
"深入理解MyBatis中的一级缓存与二级缓存" MyBatis是一种流行的持久层框架,它提供了缓存机制来提高应用程序的性能...MyBatis中的缓存机制可以帮助提高应用程序的性能,但是需要合理使用缓存,以避免脏读和其他问题。
以下是如何在程序中加入网上图片的一些关键知识点,以及涉及的技术和步骤。 1. **URL与HTTP请求**:首先,我们需要理解URL(统一资源定位符)是网络上资源的地址。当程序需要获取图片时,它会向服务器发送一个HTTP...
在***中,缓存机制可以通过DataCache类来实现,它提供了一系列的方法用于读取和写入缓存数据。例如,可以使用Cache["key"]来读取缓存项,使用Cache["key"] = value来添加或更新缓存项,或者使用Cache.Insert方法来...
全局程序集缓存(GAC,Global Assembly Cache)是.NET Framework提供的一种机制,用于存储共享的、强命名的程序集,这些程序集可以被多个应用程序域(AppDomain)同时访问。GAC中的程序集具有唯一性,确保了不同版本...
- **1.5.1 FIFO (First In First Out)**:最先加入缓存的数据会在缓存空间不足时被首先清除。 - **1.5.2 LFU (Less Frequently Used)**:最少被使用的元素会被优先清除。这要求缓存中的每个元素都有一个“访问频率”...
标题中的“世界编程大赛第一名写的程序(加入简单批处理)”暗示了这个压缩包可能包含一个或多个由全球顶尖程序员编写的代码示例,这些代码可能是在编程竞赛中获得最高荣誉的解决方案。简单批处理通常指的是在计算机...
- 数据绑定:利用小程序的data属性或前端框架的数据绑定机制(如Vue的v-model),确保界面上的显示与后台数据实时同步。 - 计算属性:计算商品总数和总价,这些值应依赖于购物车中的商品数量和价格,当这些基础...
在IT行业中,缓存是一种非常重要的技术,它可以显著提高应用程序的性能和响应速度。Spring Boot是Java领域中广泛使用的微服务框架,而Redis则是一款高效、高性能的内存数据结构存储系统,常被用作数据库、缓存和消息...
在探讨ASP.NET 2.0的缓存改进之前,有必要回顾一下其前身ASP.NET 1.0中的缓存机制。缓存技术在提升Web应用程序性能方面扮演着关键角色,其核心理念是“尽早缓存,经常缓存”。通过存储常用或重复计算的数据,缓存...
总的来说,通过合理利用MVC5.0的缓存机制,我们可以显著提升网站的响应速度,为用户提供更快的服务。同时,结合基础的权限和用户管理,可以确保应用的安全性和可管理性。对于开发者来说,理解并掌握这些技术至关重要...
- **定义**:这是一种可选的缓存机制,用于在整个应用程序或集群范围内共享数据。 - **特点**:二级缓存不是默认启用的,需要通过配置文件来启用。由于多个事务可能同时访问相同的缓存数据,因此需要提供适当的...
第15章 第二代网页缓存机制II: 应用程序数据缓存 583 15.1 应用程序数据缓存 584 实例370 使用“索引值/数值”将作者信息加入 缓存中 584 实例371 使用“索引值/数值”缓存DataSet 585 实例372 使用Cache.Add()...
3. **数据存储**:使用微信小程序的本地缓存机制,存储用户的瓶子信息,或者在网络服务器上进行数据交换。 4. **网络通信**:如果漂流瓶涉及到不同用户之间的交流,那么就需要使用微信小程序的网络请求API,如wx....
Mybatis提供了两级缓存机制:一级缓存是SqlSession级别的,而二级缓存则是全局的,可以在多个SqlSession之间共享。一级缓存默认开启,但其作用范围有限,对于多线程或多用户环境可能不够理想,因此我们通常会启用二...
在Python程序执行时,会创建一个环状双向链表refchain,程序执行过程中创建的任何一个对象最终都会加入到这个双向链表中。 在PyObject结构体中,引用计数器是记录对象被引用的次数,当对象被引用时,引用计数器的值...
3. **实时数据同步**:排队系统需要实现实时更新和推送,当用户加入队伍或者队伍状态发生变化时,微信小程序需通过WebSocket或轮询等方式与服务器保持连接,及时更新界面展示,让用户了解当前的排队进度。...
在你的主程序启动方法中加入以下代码,确保在任何使用CefSharp的地方之前调用: ```csharp using CefSharp; using CefSharp.WinForms; // 初始化CefSharp Cef.Initialize(new CefSettings()); ``` **创建Browser...