热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

OSCache简单例子

OSCache简单例子1.BaseCache.java基类packagecom.yanek.demo.cache.oscache;importjava.util.Date;im

OSCache简单例子

 

 

 

 

1.  BaseCache.java  基类

 

 

package com.yanek.demo.cache.oscache;

import java.util.Date;

import com.opensymphony.oscache.base.NeedsRefreshException;
import com.opensymphony.oscache.general.GeneralCacheAdministrator;

public class BaseCache extends GeneralCacheAdministrator {
 // 过期时间(单位为秒);
 private int refreshPeriod;

 // 关键字前缀字符;
 private String keyPrefix;

 private static final long serialVersionUID = -4397192926052141162L;

 public BaseCache(String keyPrefix, int refreshPeriod) {
  super();
  this.keyPrefix = keyPrefix;
  this.refreshPeriod = refreshPeriod;
 }

 // 添加被缓存的对象;
 public void put(String key, Object value) {
  this.putInCache(this.keyPrefix + "_" + key, value);
 }

 // 删除被缓存的对象;
 public void remove(String key) {
  this.flushEntry(this.keyPrefix + "_" + key);
 }

 // 删除所有被缓存的对象;
 public void removeAll(Date date) {
  this.flushAll(date);
 }

 public void removeAll() {
  this.flushAll();
 }

 // 获取被缓存的对象;
 public Object get(String key) throws Exception {
  try {
   return this.getFromCache(this.keyPrefix + "_" + key,
     this.refreshPeriod);
  } catch (NeedsRefreshException e) {
   this.cancelUpdate(this.keyPrefix + "_" + key);
   throw e;
  }

 }

}

 

 

2.  CacheManager.java  管理器

 

package com.yanek.demo.cache.oscache;

public class CacheManager { 
   
    private BaseCache newsCache; 
 
     
    private static CacheManager instance; 
    private static Object lock = new Object(); 
     
    public CacheManager() { 
        //这个根据配置文件来,初始BaseCache而已; 
        newsCache = new BaseCache("news",1800);      
    } 
     
    public static CacheManager getInstance(){ 
        if (instance == null){ 
            synchronized( lock ){ 
                if (instance == null){ 
                    instance = new CacheManager(); 
                } 
            } 
        } 
        return instance; 
    } 
 
    public void putNews(News news) { 
        // TODO 自动生成方法存根 
        newsCache.put(news.getId(),news); 
    } 
 
    public void removeNews(String newsID) { 
        // TODO 自动生成方法存根 
        newsCache.remove(newsID); 
    } 
 
    public News getNews(String newsID) { 
        // TODO 自动生成方法存根 
        try { 
            return (News) newsCache.get(newsID); 
        } catch (Exception e) { 
            // TODO 自动生成 catch 块 
            System.out.println("getNews>>newsID["+newsID+"]>>"+e.getMessage()); 
           // News news = new News(newsID); 
           
            News news = new News(newsID,"aaa","bbb");
            this.putNews(news); 
            return news; 
        } 
    } 
 
    public void removeAllNews() { 
        // TODO 自动生成方法存根 
        newsCache.removeAll(); 
    } 
 

 

3. News.java  缓存的对象

 

package com.yanek.demo.cache.oscache;

public class News {

 private String id;

 private String title;

 private String content;

 
 public News(String id, String title, String content) {
  super();
  this.id = id;
  this.title = title;
  this.content = content;
 }

 public String getContent() {
  return content;
 }

 public void setContent(String content) {
  this.content = content;
 }

 public String getId() {
  return id;
 }

 public void setId(String id) {
  this.id = id;
 }

 public String getTitle() {
  return title;
 }

 public void setTitle(String title) {
  this.title = title;
 }

}

 

 

 

4. TestCache.java 测试

 

 

package com.yanek.demo.cache.oscache;

public class TestCache {

 /**
  * @param args
  */
 public static void main(String[] args) {

  
  CacheManager cm=CacheManager.getInstance();
  News n1=new News("1","111","111");
  cm.putNews(n1);
  News n1_c=cm.getNews("1");
  System.out.println("c1:"+n1_c.getContent());
  
  News n2=new News("1","111","222");
  cm.putNews(n2);
  System.out.println("c1:"+cm.getNews("1").getContent());
  
  cm.removeNews("1");
  
  System.out.println("c1:"+cm.getNews("1").getContent());
  
  BaseCache countCache = new BaseCache("count",1800);
  
  countCache.put("1100454", 10);
  countCache.put("1100455", 11);
  countCache.put("1100456", 3);
  
  try {
   Integer cachedCount = (Integer)countCache.get("1100454");

   System.out.println("cachedCount:"+cachedCount);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
  
  
 }

}

 

 

 


推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • Spring学习(4):Spring管理对象之间的关联关系
    本文是关于Spring学习的第四篇文章,讲述了Spring框架中管理对象之间的关联关系。文章介绍了MessageService类和MessagePrinter类的实现,并解释了它们之间的关联关系。通过学习本文,读者可以了解Spring框架中对象之间的关联关系的概念和实现方式。 ... [详细]
  • 面向对象之3:封装的总结及实现方法
    本文总结了面向对象中封装的概念和好处,以及在Java中如何实现封装。封装是将过程和数据用一个外壳隐藏起来,只能通过提供的接口进行访问。适当的封装可以提高程序的理解性和维护性,增强程序的安全性。在Java中,封装可以通过将属性私有化并使用权限修饰符来实现,同时可以通过方法来访问属性并加入限制条件。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
author-avatar
王慧1019
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有