Ⅰ spring自帶緩存機制怎麼弄
此緩存方法既適用於層,也適用於service層。
spring配置文件配置:<!--緩存配置-->
<!--啟用緩存註解功能-->
<cache:annotation-drivencache-manager="cacheManager"/>
<!--spring自己的基於java.util.concurrent.ConcurrentHashMap實現的緩存管理器(該功能是從Spring3.1開始提供)-->
<beanid="cacheManager"class="org.springframework.cache.support.SimpleCacheManager">
<propertyname="caches">
<set>
<!--此處類concurrentMapCacheFactoryBean的作用是
-->
<beanname="myCache"class="org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean"/>
</set>
</property>
</bean>service層示例如下:@Transactional(readOnly=true)
@Cacheable(value="myCache")
publicJsonObjectgetWFK(JsonObjectparams){
OneObob=newOneOb();
try{
List<Map<String,Object>>map=LawAssistantMapper.getWFK();
ob.setOb(map);
}catch(Exceptione){
e.printStackTrace();
ob.setCode(500);
ob.setMsg("伺服器錯誤!!!");
returnnewJsonObject(Json.encode(ob));
}
ob.setCode(200);
ob.setMsg("ok");
logger.debug(Json.encode(ob));
returnnewJsonObject(Json.encode(ob));
}
由於使用的是spring自帶的緩存類,所以,僅僅需要兩步:1.在spring配置文件中聲明,2.在service層,方法代碼前增加註解,即可。
缺點:
spring自帶的緩存功能,實質上是通過java類來保存緩存的數據,這樣會佔用一定的內存消耗,並發率越高,對內存的壓力越大。
碼民直接使用的緩存類:org.springframework.cache.support.SimpleCacheManager,org.springframework.cache.concurrent.ConcurrentMapCacheFactoryBean
Ⅱ 什麼是Java緩存技術Cache
java緩存技術
一、什麼是緩存
1、Cache是高速緩沖存儲器 一種特殊的存儲器子系統,其中復制了頻繁使用的數據以利於快速訪問
2、凡是位於速度相差較大的兩種硬體/軟體之間的,用於協調兩者數據傳輸速度差異的結構,均可稱之為 Cache
二、緩存的分類
1、基於web應用的系統架構圖
2、在系統架構的不同層級之間,為了加快訪問速度,都可以存在緩存
操作系統磁碟緩存->減少磁碟機械操作
資料庫緩存->減少文件系統I/O
應用程序緩存->減少對資料庫的查詢
Web伺服器緩存->減少應用伺服器請求
客戶端瀏覽器緩存->減少對網站的訪問。
Ⅲ java緩存是什麼意思 文件放在哪
Java的緩存機制是通過JVM(Java虛擬機)提供的運行時緩存來實現的,由於JVM是不跨平台的(Java的跨平台正是通過JVM的不跨平台來實現的),所以JVM的緩存機制沒有實現本地臨時存儲,因此你找不到所謂Java的緩存文件夾。這些問題你不用這么糾結,實在不清楚的話打電話問一下官方人員就清楚了。
Ⅳ tomcat的jsp緩存和java內存機制求教
TOMCAT剛重啟,內存很好,用JCONSOLE看也很好,但是經過一天2個訪問峰後,第一台機器(負載較為厲害的)內存達到2.5G,LINUX TOP後查看,JAVA佔用3.5G(當然這個數字不是最准確的),堆內存為2.2,OLD代已經滿了,OLD代GC不動,NEW代內存在浮動,然後過不長時間內存就爆HEAP內存溢出了。
後來,我用JMAP把內存打成DUMP,下到我本地,用JAVA內存分析器看,內存泄露報告顯示,泄漏的內存全為:JSPSERVLET。因為我伺服器JSP文件很多,所以報這個問題,我也理解。但是我很郁悶的是,我找不到如果配置TOMCAT清理JSP緩存的方法,我的SESSION為15分鍾。
或者還可能有其他的關於內存的問題,我不知道,也正在查,不知道各位高手能不能從我的只言片語中看出我的伺服器大概存在什麼問題。
我現在主要疑問是,如何才能控制TOMCAT清理JSP緩存。
Ⅳ java 緩存機制 實現的原理
簡單來說,就是將數據在內存裡面保存著,下次需要,從內存某個位置獲取,而不是從源位置獲取
Ⅵ 使用java實現以個簡單的緩存機制
你這個分數太少了吧,程序到是有,不過給你有點可惜
CacheMgr.java
import java.util.*;
import cn.javass.framework.cache.vo.CacheConfModel;
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 = set.iterator();
while(it.hasNext()){
Object key = it.next();
CacheConfModel ccm = (CacheConfModel)cacheConfMap.get(key);
//比較是否需要清除
if(!ccm.isForever()){
if((new Date().getTime()-ccm.getBeginTime())>= ccm.getDurableTime()*60*1000){
//可以清除,先記錄下來
tempSet.add(key);
}
}
}
//真正清除
Iterator tempIt = tempSet.iterator();
while(tempIt.hasNext()){
Object key = tempIt.next();
cacheMap.remove(key);
cacheConfMap.remove(key);
}
System.out.println("now thread================>"+cacheMap.size());
//休息
try {
Thread.sleep(60*1000L);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}
CacheConfModel.java
public class CacheConfModel implements java.io.Serializable{
private long beginTime;
private boolean isForever = false;
private int rableTime;
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 rableTime;
}
public void setDurableTime(int rableTime) {
this.rableTime = rableTime;
}
}
順便說一句,緩存的管理不是靠時間久來計算的,是靠最大不活動間隔計算的,你的設計思想有問題
Ⅶ 為什麼java要採用中間緩存變數機制
publicstaticvoidmain(String[]args){
intj=0;
for(inti=0;i<100;i++){
j=j++;
}
System.out.println(j);
}
大概可以理解為
publicstaticvoidmain(String[]args){
intj=0;
for(inti=0;i<100;i++){
inttemp=j;//temp存放的是與j相關計算的結果
j++;
j=temp;
}
System.out.println(j);
}
Ⅷ java實現緩存技術
session最好少用,一般系統都用session來存儲用戶信息,session用多了對系統開銷不好,緩存也盡量少用,要用的話都用在基本不會改變的數據上,不然會影響系統,如果經常改變的量,用了緩存,如:一個程序在用緩存中的數據,而另一個程序卻在修改緩存的數據,那邊程序就會出現不符合的數據了,如果回答對你有幫助,請把分給我吧,謝謝
Ⅸ java、IE 緩存機制
是的Ie有緩存,如果不清理的話,會存在一段時間。有時關閉瀏覽器,再重新打開就可以清除緩存,具體緩存多長時間還沒研究過。
Ⅹ java中還有哪些緩存機制技術
所謂緩存,就是將程序或系統經常要調用的對象存在內存中,一遍其使用時可以快速調用,不必再去創建新的重復的實例。這樣做可以減少系統開銷,提高系統效率。
緩存主要可分為二大類:
一、通過文件緩存,顧名思義文件緩存是指把數據存儲在磁碟上,不管你是以XML格式,序列化文件DAT格式還是其它文件格式;
二、內存緩存,也就是實現一個類中靜態Map,對這個Map進行常規的增刪查