
正文
java代码数据缓存 java 实现缓存
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Java实现简单的缓存机制原理
package qinbo hui;
/*
设计思想来自-回钦波(qq: )
*/
public class CacheConfModel implements java io Serializable{
private long beginTime;
private boolean isForever = false;
private int durableTime;
public long getBeginTime() {
return beginTime;
}
public void setBeginTime(long beginTime) {
this beginTime = beginTime;
}
public boolean isForever() {
return isForever;
}
public void setForever(boolean isForever) {
this isForever = isForever;
}
public int getDurableTime() {
return durableTime;
}
public void setDurableTime(int durableTime) {
this durableTime = durableTime;
}
}
package qinbo hui;
import java util *;
import test CacheConfModel;
/*
设计思想来自-回钦波(qq: )
*/
public class CacheMgr {
private static Map cacheMap = new HashMap();
private static Map cacheConfMap = new HashMap();
private CacheMgr(){
}
private static CacheMgr cm = null;
public static CacheMgr getInstance(){
if(cm==null){
cm = new CacheMgr();
Thread t = new ClearCache();
t start();
}
return cm;
}
/**
* 增加缓存
* @param key
* @param value
* @param ccm 缓存对象
* @return
*/
public boolean addCache(Object key Object value CacheConfModel ccm){
boolean flag = false;
cacheMap put(key value);
cacheConfMap put(key ccm);
System out println( now addcache== +cacheMap size());
return true;
}
/**
* 删除缓存
* @param key
* @return
*/
public boolean removeCache(Object key){
cacheMap remove(key);
cacheConfMap remove(key);
System out println( now removeCache== +cacheMap size());
return true;
}
/**
* 清除缓存的类
* @author wanglj
* 继承Thread线程类
*/
private static class ClearCache extends Thread{
public void run(){
while(true){
Set tempSet = new HashSet();
Set set = cacheConfMap keySet();
Iterator it = erator();
while(it hasNext()){
Object key = it next();
CacheConfModel ccm = (CacheConfModel)cacheConfMap get(key);
//比较是否需要清除
if(!ccm isForever()){
if((new Date() getTime() ccm getBeginTime())= ccm getDurableTime()* * ){
//可以清除 先记录下来
tempSet add(key);
}
}
}
//真正清除
Iterator tempIt = erator();
while(tempIt hasNext()){
Object key = tempIt next();
cacheMap remove(key);
cacheConfMap remove(key);
}
System out println( now thread================ +cacheMap size());
//休息
try {
Thread sleep( * L);
} catch (InterruptedException e) {
// TODO Auto generated catch block
e printStackTrace();
}
}
}
}
lishixinzhi/Article/program/Java/hx/201311/25737
相关问答
Q1: java如何清除数据缓存
清除Java缓存的方法
步骤一:
找到Java的安装目录(默认为C:\Program Files\Java)选择当前使用的jre版本,如果用的版本为jre5则进入jre5文件夹,如果用的版本为jre6则进入jre6文件夹。在该文件夹下进入bin文件夹。双击打开文件javacpl.exe
2014下半年教师资格证统考大备战 中学教师资格考试 小学教师资格考试 幼儿教师资格考试 教师资格证面试
步骤二:
在常规选项中的临时Internet文件点击“设置”按钮再点击“删除文件”按钮,删除所有的临时文件。
步骤三:
删除完缓存之后,需要关闭所有浏览器。再次打开浏览器进入虚拟实验系统即可。
Q2: java怎样将数据保存到缓存中,之后再保存
Java中可以使用队列来保存数据,当使用的时候,加上锁,防止其他进程访问,当不用的时候保存到数据库里面,示例如下:
package com.henry;
import java.util.HashMap;
import java.util.Map;
import java.util.Random;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;
public class CacheDataTest {
static MapInteger,Object dataMap=new HashMapInteger,Object();
static ReadWriteLock lock=new ReentrantReadWriteLock();//创建读写锁的实例
static Object getData(Integer key){
lock.readLock().lock();//读取前先上锁
Object val=null;
try{
val=dataMap.get(key);
if(val == null){
// Must release read lock before acquiring write lock
lock.readLock().unlock();
lock.writeLock().lock();
try{
//可能已经由其他线程写入数据
if(val==null){
//dataMap.put(key, "");//query from db
val=queryDataFromDB(key);
}
}finally{
//Downgrade by acquiring read lock before releasing write lock
lock.readLock().lock();
// Unlock write, still hold read
lock.writeLock().unlock();
}
}
}finally{
lock.readLock().unlock();//最后一定不要忘记释放锁
}
System.out.println("get data key="+key+"val="+val);
return val;
}
static Object queryDataFromDB(Integer key){
Object val=new Random().nextInt(1000);
dataMap.put(key, val);
System.out.println("write into data key="+key+"val="+val);
return val;
}
public static void main(String[] args) {
for(int i=0;i10;i++){
new Thread(new Runnable(){public void run() {
getData(new Random().nextInt(5));
}}).start();
}
}
}
Q3: java怎么将数据放入缓存
java放入session缓存中
方法如下:
session.setAttribute("Name",Value);
Name 随便取,value就是要放的数据
获取的时候session.getAttribute("Name);
就可以了
Q4: java如何清除数据缓存?
通过 Java 控制面板删除临时文件
在 Java 控制面板java代码数据缓存的常规选项卡下java代码数据缓存,单击“临时 Internet 文件”部分下java代码数据缓存的设置。
此时将显示临时文件设置对话框。
在“临时文件设置”对话框上单击删除文件。
此时将显示删除文件和应用程序对话框。
在删除文件和应用程序对话框上单击确定。这将从高速缓存中删除所有下载的应用程序和小应用程序。
在临时文件设置对话框上单击确定。如果要从高速缓存中删除特定的应用程序和小应用程序java代码数据缓存,请分别单击“查看应用程序”和“查看小应用程序”选项。
Q5: java如何将页面每次请求获得的数据缓存起来供使用?
?阏飧龊诵牡牡胤剑?褪莂ction这儿不去查数据库,而拿到缓存的数据再直接返回到前台嘛。核心代码逻辑就是:longobsoleteTime=1天;
List
list=cache.get(abc,
obsoleteTime);if(list==null){
list=manager.search(..);
这样的缓存策略很多的啊。比如oscache就可以达到要求,而且用起来很简单,只要一个jar,自己抽象一个cache的接口,套上去,就能用了。
java代码数据缓存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java 实现缓存、java代码数据缓存的信息别忘了在本站进行查找喔。




