什么是java中的"缓存"我的观点,
象FileReader这样的比较低层的只能操作字节,而BufferedReader有
readLine()方法,返回的是一个String 。而FileReader没有,我个人的理解:
开始创建BufferedReader时,FileReader被当作是一个参数,作为bufferedreader的一个实例变量保存着 。当你调用bufferedreader.readLine()方法时,它就会调用filereader的read方法,一个一个地读字符,并且保存在它一块内存中,直到读到回车符 , 才将内容返回出来 。这里两个类的区别在与FileReader的方法,你直接获取了数据,读出来的内容由你负责保存,而BufferedReader自己有内存保存一部分数据,你能调用他比较高级的readLine()方法来直接获取字符串
JAVA几种缓存技术介绍说明1、OSCache
OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何java应用程序的普通的缓存解决方案 。
OSCache有以下特点:
(1)缓存任何对象,java代码中的接口缓存你可以不受限制的缓存部分jsp页面或HTTP请求 , 任何java对象都可以缓存 。
永久缓存--缓存能随意的写入硬盘,因此答应昂贵的创建(eXPensive-to-create)数据来保持缓存,甚至能让应用重启 。
(2)支持集群--集群缓存数据能被单个的进行参数配置 , 不需要修改代码 。
缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(假如默认性能不需要时) 。
2、Java Caching System
JSC(Java Caching System)是一个用分布式的缓存系统,是基于服务器的java应用程序 。它是通过提供治理各种动态缓存数据来加速动态web应用 。
JCS和其java代码中的接口缓存他缓存系统一样,也是一个用于高速读?。?低速写入的应用程序 。
动态内容和报表系统能够获得更好的性能 。
假如一个网站,有重复的网站结构,使用间歇性更新方式的数据库(而不是连续不断的更新数据库),被重复搜索出相同结果的,就能够通过执行缓存方式改进其性能和伸缩性 。
3、EHCache
EHCache 是一个纯java的在进程中的缓存 , 它具有以下特性:快速,简单 , 为Hibernate2.1充当可插入的缓存 , 最小的依靠性 , 全面的文档和测试 。
4、JCache
JCache是个开源程序 , 正在努力成为JSR-107开源规范 , JSR-107规范已经很多年没改变了 。这个版本仍然是构建在最初的功能定义上 。
5、ShiftOne
ShiftOne Java Object Cache是一个执行一系列严格的对象缓存策略的Java lib , 就像一个轻量级的配置缓存工作状态的框架 。
6、SwarmCache
SwarmCache是一个简单且有效的分布式缓存 , 它使用ip multicast与同一个局域网的其java代码中的接口缓存他主机进
行通讯 , 是非凡为集群和数据驱动web应用程序而设计的 。
SwarmCache能够让典型的读操作大大超过写操作的这类应用提供更好的性能支持 。
SwarmCache使用JavaGroups来治理从属关系和分布式缓存的通讯 。
扩展资料
Java中缓存存在的原因:
一 般情况下,一个网站,或者一个应用,它的一般形式是,浏览器请求应用服务器,应用服务器做一堆计算后再请求数据库,数据库收到请求后再作一堆计算后把数据 返回给应用服务器 。
应用服务器再作一堆计算后把数据返回给浏览器,这个是一个标准流程 。但是随着互连网的普及,上网的人越来越多,网上的信息量也越来越多 。
数据库每秒中接受请求的次数也是有限的,如果利用有限的资源来提供尽可能大的吞吐量呢 。一个办法:减少计算量,缩短请求流程(减少网络io或者硬盘io),这时候缓存就可以大展手脚了 。
缓存的基本原理就是打破上图中所描绘的标准流程,在这个标准流程中,任何 一个环节都可以被切断.请求可以从缓存里取到数据直接返回 。
java如何将页面每次请求获得的数据缓存起来供使用??阏飧龊诵牡牡胤剑?褪莂ction这儿不去查数据库,而拿到缓存的数据再直接返回到前台嘛 。核心代码逻辑就是:longobsoleteTime=1天;
【java代码中的接口缓存 java常用缓存技术】List
list=cache.get(abc,
obsoleteTime);if(list==null){
list=manager.search(..);
这样的缓存策略很多的啊 。比如oscache就可以达到要求,而且用起来很简单,只要一个jar , 自己抽象一个cache的接口,套上去 , 就能用了 。
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
*/
publicboolean 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
*/
publicboolean 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代码中的接口缓存的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java常用缓存技术、java代码中的接口缓存的信息别忘了在本站进行查找喔 。
推荐阅读
- 显卡怎么安装到旧电脑里,显卡则么装
- ios云顶怎么登上去,苹果云顶怎么登陆
- php数据库怎么存汉字 php怎么把数据库的内容输出到html前端
- cpu硬拿下来会损坏什么,cpu拆下来还能用吗
- linux发送信息命令,linux 发送信息
- 普陀区直播卖货教程电话,普陀区小商品市场在哪
- php本地数据接口 php接口调用数据库
- html标签调用js方法吗,html标签调用js函数
- 体育游戏立德树人,体育游戏立德树人教学反思