我的编程空间,编程开发者的网络收藏夹
学习永远不晚

关于OSCache的应用(三)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

关于OSCache的应用(三)

在实际应用中除了JSP标签库,还可以使用OSCache提供的Java API .下面我来介绍一个实用的Java类

[@more@]

在实际应用中除了JSP标签库,还可以使用OSCache提供的Java API .下面我来介绍一个实用的Java类 ,使用GeneralCacheAdministrator来建立,刷新和管理缓存.
应用OSCache Java API的一般步骤:
1 建立一个**Bean的缓存类**Cache.
2 import com.opensymphony.oscache.general.*;import com.opensymphony.oscache.base.*;
3 建立一个**DAO类以便操作数据库(也可将上两项的内容直接合并到这里).
4 在**Cache类里生成一个GeneralCacheAdministrator的实例admin用来管理缓存.
GeneralCacheAdministrator admin = new GeneralCacheAdministrator();
5 **Cache中的方法 如.clear(),flush().基本调用的为OSCache的 Java API.
6 在**Cache添加getBeans()和getBean()方法 以便获取缓存中的实例对象.具体实现可参照上面的例子.
7 主要用到的GeneralCacheAdministrator的方法有
public Object getFromCache(String key) throws NeedsRefreshException; -- 从缓存中获取一个key标识的对象.
public Object getFromCache(String key, int refreshPeriod) throws NeedsRefreshException ; -- 从缓存中获取一个key标识的对象. refreshPeriod刷新周期,标识此对象在缓存中保存的时间(单位:秒)

public void putInCache(String key, Object content) -- 存储一个由Key标识的缓存对象.
public void putInCache(String key, Object content, String[] groups) -- 存储一个由Key标识的属于groups中所有成员的缓存对象.

public void flushEntry(String key) -- 更新一个Key标识的缓存对象.
public void flushGroup(String group) --更新一组属于groupr标识的所有缓存对象.
public void flushAll() -- 更新所有缓存.

public void cancelUpdate(String key) --- 取消更新 只用于在处理捕获的NeedsRefreshException异常并尝试生成新缓存内容失效的时候.
public void removeEntry(String key) ---从缓中移除一个key标识的对象
public void clear() --- 清除所有缓存

eg.
------------
///采取补救措施的典型方案

String myKey = "myKey";
String myValue;
int myRefreshPeriod = 1000; //刷新周期1000秒
try {
//从Cache中获得 要做类型转换
myValue = (String) admin.getFromCache(myKey, myRefreshPeriod);
} catch (NeedsRefreshException nre) {
try {
// Cache中没有则从库获得数据.
myValue = "This is the content retrieved.";
// 存放在Cache中 键值myKey
admin.putInCache(myKey, myValue);
} catch (Exception ex) {
// 尝试恢复Cache中的内容
myValue = (String) nre.getCacheContent();
// 如果Cache中的内容没有复原 则用这个终级方法
admin.cancelUpdate(myKey); //取消对myKey的更新 即类似数据回滚
}
}

///不采取补救措施的典型方案

String myKey = "myKey";
String myValue;
int myRefreshPeriod = 1000;
try {
//从Cache中获得 要做类型转换
myValue = (String) admin.getFromCache(myKey, myRefreshPeriod);
} catch (NeedsRefreshException nre) {
try {
// Cache中没有则从库获得数据.
myValue = "This is the content retrieved.";
// 存放在Cache中 键值myKey
admin.putInCache(myKey, myValue);
updated = true;
} finally {
if (!updated) {
// 如果Cache中的内容更新出现异常 则用这个终级方法
admin.cancelUpdate(myKey); //取消对myKey的更新 即类似数据回滚
}
}
}

注意:
如果一个NeedsRefreshException出现 必须调用admin.putInCache或甚至admin.cancelUpdate来避免死锁情况发生.
---------------

以上就是OSCache提供的最常用的一个实用Java类.OSCache还提供有很多API 这里只是给大家介绍了一点点的,算是抛砖引玉,在今后的开发和应用过程中还需要大家一起去研究.

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

关于OSCache的应用(三)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

关于OSCache的应用(三)

在实际应用中除了JSP标签库,还可以使用OSCache提供的Java API .下面我来介绍一个实用的Java类 [@more@]在实际应用中除了JSP标签库,还可以使用OSCache提供的Java API .下面我来介绍一个实用的Java
2023-06-03

AJPFX关于多态的应用

要求设计一个方法,要求此方法可以接受A类的任意子类对象,并调用方法,此时,如果不使用对象多态性,那代码肯定会类似如下class A{ // 定义类A public void Run1(){
2023-06-02

python关于it审计中的应用

公司面临上市,为了满足上市it审计要求,对系统密码进行定制。#!/bin/env pythonimport random,stringimport os,sys,re,paramikofrom optparse import OptionP
2023-01-31

【Android】关于 startActivityForResult 的一个小应用

Content界面图第一个Activity (SearchContact)第二个Activity (PickContact)第三个Activity (AnotherPick) 和第二个一样其他 从一个 Activity 中打开另一个 Act
2022-06-06

Android中关于JSON相关应用分析

本文分析了Android中关于JSON相关应用。分享给大家供大家参考,具体如下: JSON的定义: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语
2022-06-06

关于无线网络技术速查的相关应用

  无线网络既包括允许用户建立远距离无线连接的全球语音和数据网络,也包括为近距离无线连接进行优化的红外线技术及射频技术,与有线网络的用途十分类似,最大的不同在于传输媒介的不同,利用无线电技术取代网线,可以和有线网络互为备份。现在就跟着小编共同来学习一下:关于无线网络技术速查的相关应用。  小编相信大家都应该知道,无线网
关于无线网络技术速查的相关应用
2024-04-18

关于Java三大特性之多态的总结

面向对象的三大特性:封装、继承、多态。从一定角度来看,封装和继承几乎都是为多态而准备的。这是我们最后一个概念,也是最重要的知识点。1.定义:多态:指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式
2023-05-30

关于kafka发送消息的三种方式总结

这篇文章主要介绍了关于kafka发送消息的三种方式总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-05-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录