「java做缓存」java缓存使用

博主:adminadmin 2022-12-31 05:36:10 637

今天给各位分享java做缓存的知识,其中也会对java缓存使用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java怎么实现map 缓存技术

/**

 * 缓存池

 * @author xiaoquan

 * @create 2015年3月13日 上午10:32:13

 * @see

 */

public class CachePool {

    private static CachePool instance;//缓存池唯一实例

    private static MapString,Object cacheItems;//缓存Map

     

    private CachePool(){

        cacheItems = new HashMapString,Object();

    }

    /**

     * 得到唯一实例

     * @return

     */

    public synchronized static CachePool getInstance(){

        if(instance == null){

            instance = new CachePool();

        }

        return instance;

    }

    /**

     * 清除所有Item缓存

     */

    public synchronized void clearAllItems(){

        cacheItems.clear();

    }

    /**

     * 获取缓存实体

     * @param name

     * @return

     */

    public synchronized Object getCacheItem(String name){

        if(!cacheItems.containsKey(name)){

            return null;

        }

        CacheItem cacheItem = (CacheItem) cacheItems.get(name);

        if(cacheItem.isExpired()){

            return null;

        }

        return cacheItem.getEntity();

    }

    /**

     * 存放缓存信息

     * @param name

     * @param obj

     * @param expires

     */

    public synchronized void putCacheItem(String name,Object obj,long expires){

        if(!cacheItems.containsKey(name)){

            cacheItems.put(name, new CacheItem(obj, expires));

        }

        CacheItem cacheItem = (CacheItem) cacheItems.get(name);

        cacheItem.setCreateTime(new Date());

        cacheItem.setEntity(obj);

        cacheItem.setExpireTime(expires);

    }

    public synchronized void putCacheItem(String name,Object obj){

        putCacheItem(name,obj,-1);

    }

     

    /**

     * 移除缓存数据

     * @param name

     */

    public synchronized void removeCacheItem(String name){

        if(!cacheItems.containsKey(name)){

            return;

        }

        cacheItems.remove(name);

    }

     

    /**

     * 获取缓存数据的数量

     * @return

     */

    public int getSize(){

        return cacheItems.size();

    }

}

public class CacheItem {

    private Date createTime = new Date();//创建缓存的时间

    private long expireTime = 1;//缓存期满的时间

    private Object entity;//缓存的实体

     

    public CacheItem(Object obj,long expires){

        this.entity = obj;

        this.expireTime = expires;

    }

     

    public boolean isExpired(){

        return (expireTime != -1  new Date().getTime()-createTime.getTime()  expireTime);

    }

        /**

         * 省略getter、setter方法

         */

}

java 缓存机制 实现的原理?

所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。缓存机制的实现有很多中,这里讲一种。

public class CacheImmutale{

//声明要缓存的类名;

private final String className;

//声明10个缓存池

private static CacheImmutale[] cache= new CachImmutale[10];

//记录缓存的位置,最新位置为[pos-1]

private static int pos=0;

//构造器

public CacheImmutale(String className){

this.className=className;

}

//返回方法

public String getName(){

return className;

}

//返回对象实例名,传进要使用的实例名,由该方法去判断缓存池中是否存在

public static CacheImmutale valueOf(String className){

//遍历缓存池,若存在,返回

for(int i=0;i

if(cache[i]!=nullcache[i].getName().equals(className)){

return cache[i];

}

}

//如果缓存池满,则采取先进先出

if(pos==10){

cache[0]=new CacheImmutale(className);

pos=1;

return cache[0];

}

else{

cache[pos++]=new CacheImmutale(className);

return cache[pos-1];

}

}

public boolean equals(Object obj){

if(obj instanceof CacheImmutale){

CacheImmutale c1=(CacheImmutale)obj;

if(className.equals(c1.getName())){

return true;

}

}

return false;

}

public int hashCode(){

return className.hashCode();

}

}

什么是Java缓存技术Cache

java缓存技术

一、什么是缓存

1、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问

2、凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache

二、缓存的分类

1、基于web应用的系统架构图

2、在系统架构的不同层级之间,为了加快访问速度,都可以存在缓存

操作系统磁盘缓存-减少磁盘机械操作

数据库缓存-减少文件系统I/O

应用程序缓存-减少对数据库的查询

Web服务器缓存-减少应用服务器请求

客户端浏览器缓存-减少对网站的访问。

java实现缓存技术

session最好少用,一般系统都用session来存储用户信息,session用多了对系统开销不好,缓存也尽量少用,要用的话都用在基本不会改变的数据上,不然会影响系统,如果经常改变的量,用了缓存,如:一个程序在用缓存中的数据,而另一个程序却在修改缓存的数据,那边程序就会出现不符合的数据了,如果回答对你有帮助,请把分给我吧,谢谢

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

哪位了解java数据缓存技术有哪些

一、什么是缓存

1、Cache是高速缓冲存储器 一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问

2、凡是位于速度相差较大的两种硬件/软件之间的,用于协调两者数据传输速度差异的结构,均可称之为 Cache

常见的缓存技术有哪些?

一、操作系统缓存

1、文件系统提供的Disk Cache:操作系统会把经常访问到的文件内容放入到内存当中,由文件系统来管理

2、当应用程序通过文件系统访问磁盘文件的时候,操作系统从Disk Cache当中读取文件内容,加速了文件读取速度

3、Disk Cache由操作系统来自动管理,一般不用人工干预,但应当保证物理内存充足,以便于操作系统可以使用尽量多的内存充当Disk Cache,加速文件读取速度

4、特殊的应用程序对文件系统Disk Cache有很高的要求,会绕开文件系统Disk Cache,直接访问磁盘分区,自己实现Disk

5、Cache策略

Oracle的raw device(裸设备) – 直接抛弃文件系统

MySQL的InnoDB: innodb_flush_method = O_DIRECT

二、数据库缓存

缓存策略:a、Query Cache;  b、Data Buffer

三、应用程序缓存

包括对象缓存、查询缓存、页面缓存

四、web服务器端缓存

基于代理服务器模式的Web服务器端缓存,如squid/nginx

Web服务器缓存技术被用来实现CDN(内容分发网络 content delivery network)

被国内主流门户网站大量采用

不需要编程,但仅限于新闻发布类网站,页面实时性要求不高

五、基于ajax的浏览器缓存

使用AJAX调用的时候,将数据库在浏览器端缓存

只要不离开当前页面,不刷新当前页面,就可以直接读取缓存数据

只适用于使用AJAX技术的页面

java做缓存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java缓存使用、java做缓存的信息别忘了在本站进行查找喔。