`
ater
  • 浏览: 49757 次
  • 性别: Icon_minigender_1
  • 来自: 福州
文章分类
社区版块
存档分类
最新评论

java动态缓存技术——WEB缓存应用

阅读更多

可以实现不等待,线程自动更新缓存

 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();
    }

分享到:
评论
2 楼 hunnuxiaobo 2010-04-27  
楼主,貌似文章不够全哦!
http://www.weaseek.com/2007/11/12/311163620871_1.htm
1 楼 cn-done 2009-07-13  
呵呵 常见的代码了
报告一下楼主  jar包链接失效,请更新

相关推荐

    Java Web应用教程——网上购物系统的实现

    从给定的文件信息来看,标题与描述都指向了“Java Web应用教程——网上购物系统的实现”,这表明文档主要关注于使用Java技术构建Web应用程序,特别是聚焦于网上购物系统这一具体场景。以下是对该主题涉及的关键知识...

    java web项目案例——知识管理软件

    本篇文章将详细介绍 Java Web 项目案例——知识管理软件的相关知识点,涵盖 Java EE 概述、Servlet 基础、JSP、JSTL、JavaBean、Hibernate 等技术。 一、Java EE 概述 Java EE(Enterprise Edition)是一个基于 ...

    JAVA实训——Web编程实例-BBS系统

    总的来说,这个JAVA实训的Web编程实例——BBS系统,将全面覆盖JAVA Web开发的基本概念和技术,包括Servlet、JSP、数据库操作、会话管理、安全性以及性能优化。通过实际操作和理解每个步骤,你将能够独立构建一个功能...

    《Java Web开发教程——入门与提高篇(JSP+Servlet)》附赠电子资料——框架基础及实例

    JSP 是一种基于Java的技术,用于创建动态网页。JSP 页面本质上是包含HTML代码和嵌入式Java代码的文件。这些文件被部署在服务器端,由服务器解释执行,并将结果以HTML格式返回给客户端浏览器。文档中的示例`login.jsp...

    高并发Web架构实现思路——java版

    ### 高并发Web架构实现思路——Java版 #### 一、引言 随着互联网的快速发展,Web应用系统面临着巨大的挑战,尤其是如何处理高并发、海量数据的情况。传统的Web架构已经无法满足当前的需求,这就需要我们探索新的...

    Java课程设计——购物车

    同时,为了提高性能,可能需要对数据库查询进行优化,减少不必要的数据库交互,或者采用缓存技术来加速数据获取。 这个项目通过实际操作,让学生在实践中掌握Java Web开发的基本流程和技术,提升其解决问题和团队...

    Java开发与技术挑战——关于技术的技术思考.docx

    - 学习SQL语言和关系型数据库MySQL、SQLserver、Oracle,以及NoSQL数据库如MongoDB和缓存技术如memcached。 - 对于前端,HTML、JavaScript、jQuery等知识也需掌握。 2. **开发工程师阶段**: - 开始时,可能会...

    JSP源码——MeyboMail Web(Java)开源简化_meybomailweb.zip

    MeyboMail Web可能利用了线程池、缓存技术等手段来提升性能。开发者可以从源码中学习如何设计和优化这类高并发的Web应用。 **用户界面与前端技术** 尽管MeyboMail Web主要关注后端,但前端UI同样重要。源码可能...

    百度云下载--《深入分析Java Web技术内幕》修订版 许令波著 PDF扫描版[92M]

    根据提供的文件信息,我们可以推断出这是一本关于Java Web技术的书籍——《深入分析Java Web技术内幕》修订版,作者是许令波。本书主要针对Java Web开发人员和技术爱好者,旨在深入剖析Java Web技术的核心原理及应用...

    深入体验JavaWeb开发内幕:高级特性

    由于提供的文件内容中并没有实际的文本内容,而是重复的网址链接和提醒...需要注意的是,Java Web开发是一个广泛且持续发展的领域,新的技术和框架不断涌现,因此开发者需要保持持续学习的态度,以跟上技术发展的步伐。

    轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发电子书2

    本书《轻量级Java EE企业应用实战——Struts 2+Spring+Hibernate整合开发》正是为此目的而编写,旨在帮助读者掌握这些技术,并在实践中灵活运用。 总之,SSH框架的整合使用是Java EE开发的重要趋势,它们各自的...

    web爬虫一个WEB爬虫的实例——JAVA.

    标题:"Web爬虫一个WEB爬虫的实例——JAVA." 描述:"web技术爬虫可用很犀利" 标签:"爬虫技术" 部分代码内容分析与详细解释: 该Java代码展示了一个简单的Web爬虫(SearchCrawler)类,用于在指定的网站上搜索...

    Java vs C# —— JSP与ASP.NET简单之比较! .doc

    Java vs C# —— JSP与ASP.NET简单之比较! 在这篇文章中,我们将比较Java和C#这两种编程语言,并对比JSP和ASP.NET这两种技术栈的优缺点。 Java vs C# Java和C#都是面向对象的编程语言,它们都继承了面向对象编程...

    java毕业设计——基于JAVA的安全电子商务.zip

    这个Java毕业设计项目全面展示了如何将Java技术应用于电子商务领域,涵盖了从系统架构设计到安全策略实施的诸多方面,对于学习者来说,是一个宝贵的实践机会,有助于深化对Java编程和电子商务系统开发的理解。

    双缓存技术

    双缓存技术是一种在Web应用中提升性能和响应速度的重要策略。它主要通过利用两种不同级别的内存——通常是CPU缓存和硬盘上的磁盘缓存——来减少数据读取的延迟,提高用户体验。本文将深入探讨双缓存的概念、工作原理...

    java_shopping.rar_Java web 商城_java Myshopping_java web_shopping_

    9. **性能优化**:通过缓存技术(如Redis)、分页加载、异步处理等方式,提高系统的响应速度和用户体验。 总的来说,MyShopping项目提供了一个实践Java Web商城开发的平台,涉及到了从后端数据库操作到前端界面展示...

    利用 Java Web Start发布你用java程序

    Java Web Start(简称 JWS)是 Sun Microsystems(现 Oracle)为解决 Java 应用程序部署和更新问题而开发的一项技术。它是 JSR-56 规范的一部分,旨在提供一种简便的方法来发布和维护在客户端 JVM 上运行的 Java ...

    深入java虚拟机——applet 演示

    Java WebStart曾作为替代Applet的方案,提供了一种安全的、可离线缓存的Java应用启动方式。然而,由于安全问题和浏览器厂商对NPAPI插件的支持减弱,两者都逐渐被淘汰。 9. JavaFX JavaFX是现代的Java图形用户界面...

    Java Web高级编程(源码)

    通过实现这些方法,开发者可以创建动态Web应用,接收和处理来自客户端的数据。 JSP(JavaServer Pages)是另一种常用的Java Web技术,它允许开发者在HTML页面中嵌入Java代码,实现了视图与逻辑的分离。JSP页面经过...

    2021Java字节跳动面试题——面向字节_Memcached.pdf

    Memcached是一款高性能的分布式内存对象缓存系统,用于减轻数据库负担,加速动态Web应用,提高访问速度。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站的速度和响应时间。 #### 二、...

Global site tag (gtag.js) - Google Analytics