當前位置:首頁 » 文件管理 » java本地緩存

java本地緩存

發布時間: 2022-01-29 14:34:12

java幾種緩存技術介紹說明

1、TreeCache / JBossCache

JBossCache是一個復制的事務處理緩存,它允許你緩存企業級應用數據來更好的改善性能。緩存數據被自動復制,讓你輕松進行JBoss伺服器之間 的集群工作。JBossCache能夠通過JBoss應用服務或其他J2EE容器來運行一個MBean服務,當然,它也能獨立運行。

2、WhirlyCache

Whirlycache是一個快速的、可配置的、存在於內存中的對象的緩存。它能夠通過緩存對象來加快網站或應用程序的速度,否則就必須通過查詢資料庫或其他代價較高的處理程序來建立。

3、SwarmCache

SwarmCache是一個簡單且有效的分布式緩存,它使用IP multicast與同一個區域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持。

4、JCache

JCache是個開源程序,正在努力成為JSR-107開源規范,JSR-107規范已經很多年沒改變了。這個版本仍然是構建在最初的功能定義上。

5、ShiftOne

ShiftOne Java Object Cache是一個執行一系列嚴格的對象緩存策略的Java lib,就像一個輕量級的配置緩存工作狀態的框架。

㈡ java怎樣將數據保存到緩存中,之後再保存

Java中可以使用隊列來保存數據,當使用的時候,加上鎖,防止其他進程訪問,當不用的時候保存到資料庫裡面,示例如下:

packagecom.henry;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Random;
importjava.util.concurrent.locks.ReadWriteLock;
importjava.util.concurrent.locks.ReentrantReadWriteLock;

publicclassCacheDataTest{
staticMap<Integer,Object>dataMap=newHashMap<Integer,Object>();
staticReadWriteLocklock=newReentrantReadWriteLock();//創建讀寫鎖的實例
staticObjectgetData(Integerkey){
lock.readLock().lock();//讀取前先上鎖
Objectval=null;
try{
val=dataMap.get(key);
if(val==null){
//
lock.readLock().unlock();
lock.writeLock().lock();
try{
//可能已經由其他線程寫入數據
if(val==null){
//dataMap.put(key,"");//queryfromdb
val=queryDataFromDB(key);
}
}finally{
//
lock.readLock().lock();
//Unlockwrite,stillholdread
lock.writeLock().unlock();
}
}
}finally{
lock.readLock().unlock();//最後一定不要忘記釋放鎖
}
System.out.println("getdatakey="+key+">val="+val);
returnval;
}

staticObjectqueryDataFromDB(Integerkey){
Objectval=newRandom().nextInt(1000);
dataMap.put(key,val);
System.out.println("writeintodatakey="+key+">val="+val);
returnval;
}

publicstaticvoidmain(String[]args){
for(inti=0;i<10;i++){
newThread(newRunnable(){publicvoidrun(){
getData(newRandom().nextInt(5));
}}).start();
}
}
}

㈢ java中如何將file緩存化,然後寫入本地

File file = new File("F:\\私人地帶\\寬頻賬號.txt");
try {
FileInputStream fs = new FileInputStream(file);
BufferedReader br = new BufferedReader(new InputStreamReader(fs,"GBK"));
String subStr = "";

File toFile = new File("F:\\dd.txt");
if(toFile.exists()) toFile.delete();
toFile.createNewFile();

BufferedWriter bw = new BufferedWriter(new FileWriter(toFile));
while(null != (subStr = br.readLine())){
System.out.println(subStr);
bw.write(subStr);
}
bw.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

㈣ java緩存是什麼意思 文件放在哪

Java的緩存機制是通過JVM(Java虛擬機)提供的運行時緩存來實現的,由於JVM是不跨平台的(Java的跨平台正是通過JVM的不跨平台來實現的),所以JVM的緩存機制沒有實現本地臨時存儲,因此你找不到所謂Java的緩存文件夾。這些問題你不用這么糾結,實在不清楚的話打電話問一下官方人員就清楚了。

㈤ 轉載 如何安全的更新java本地緩存

但使用緩存,不可避免的就需要對緩存進行更新。最近在做一個項目的時候,發現多個老系統里採用了一種不安全的更新方案,該方案的主要思路如下:Java代碼 /** 本地緩存 */ private List configs = null; /** 本地緩存的上次更新時間 */ private long lastUpdateTime = 0; public List queryInterfaceList() { long currentTime = System.currentTimeMillis(); //判斷本次緩存是否過期,過期則重新調用webservice查詢數據,並更新緩存 if (currentTime - lastUpdateTime > 60000) { InterfaceManageResult result = interfaceManageFacade.queryAllInterfaceList(); if (null != result && result.isSuccess()) { configs = result.getInterfaceConfigList(); } lastUpdateTime = currentTime; } if (!CollectionUtils.isEmpty(configs)) { return configs; } //本地緩存為空,則重新調用webservice查詢數據,並更新緩存 InterfaceManageResult result = interfaceManageFacade.queryAllInterfaceList(); if (null == result || !result.isSuccess()) { return null; } configs = result.getInterfaceConfigList(); return configs; } 當外部請求訪問緩存數據時:如果緩存已經過期(當前時間-緩存的上次更新時間超過緩存的有效期),則重新調用webservice訪問服務端查詢數據,然後更新緩存。如果緩存未過期,但緩存為空,則重新調用webservice訪問服務端查詢數據,然後更新緩存。仔細分析一下,該方案存在以下幾處安全隱患:如果某一時刻緩存過期,此時剛好有大量的請求並發訪問緩存數據,則會給服務端造成很大的壓力,有多少個並發請求,就會並發向服務端發起多少次webservice請求緩存第一次初始化前,如果有大量的請求並發訪問緩存數據,同樣會給服務端早晨很大的壓力。 即在某些時間點,會給服務端帶來峰值抖動,其實,造成該隱患的根本原因在於:緩存的更新時機是由外部請求直接觸發的。

㈥ Java本地緩存有哪些

下面給你介紹幾個常見的java緩存框架:
1、OSCache
OSCache是個一個廣泛採用的高性能的J2EE緩存框架,OSCache能用於任何Java應用程序的普通的緩存解決方案。
OSCache有以下特點:
緩存任何對象,你可以不受限制的緩存部分jsp頁面或HTTP請求,任何java對象都可以緩存。
擁有全面的API--OSCache API給你全面的程序來控制所有的OSCache特性。
永久緩存--緩存能隨意的寫入硬碟,因此允許昂貴的創建(expensive-to-create)數據來保持緩存,甚至能讓應用重啟。
支持集群--集群緩存數據能被單個的進行參數配置,不需要修改代碼。
緩存記錄的過期--你可以有最大限度的控制緩存對象的過期,包括可插入式的刷新策略(如果默認性能不需要時)。
2、Java Caching System
JSC(Java Caching System)是一個用分布式的緩存系統,是基於伺服器的java應用程序。它是通過提供管理各種動態緩存數據來加速動態web應用。
JCS和其他緩存系統一樣,也是一個用於高速讀取,低速寫入的應用程序。
動態內容和報表系統能夠獲得更好的性能。
如果一個網站,有重復的網站結構,使用間歇性更新方式的資料庫(而不是連續不斷的更新資料庫),被重復搜索出相同結果的,就能夠通過執行緩存方式改進其性能和伸縮性。
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與同一個區域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持。
SwarmCache使用JavaGroups來管理從屬關系和分布式緩存的通訊。

㈦ 如何安全的更新java本地緩存

java安全的更新本地緩存的方式如下:當外部請求訪問緩存數據時:如果緩存已經過期(當前時間-緩存的上次更新時間超過緩存的有效期),則重新調用webservice訪問服務端查詢數據,然後更新緩存。如果緩存未過期,但緩存為空,則重新調用webservice訪問服務端查詢數據,然後更新緩存。<pre t="code" l="java">/** 本地緩存 */
private List<InterfaceConfig> configs = null;
/** 本地緩存的上次更新時間 */
private long lastUpdateTime = 0;
public List<InterfaceConfig> queryInterfaceList() {
long currentTime = System.currentTimeMillis();
//判斷本次緩存是否過期,過期則重新調用webservice查詢數據,並更新緩存
if (currentTime - lastUpdateTime > 60000) {

InterfaceManageResult result = interfaceManageFacade.queryAllInterfaceList();
if (null != result result.isSuccess()) {
configs = result.getInterfaceConfigList();
}
lastUpdateTime = currentTime;
}
if (!CollectionUtils.isEmpty(configs)) {
return configs;
}

//本地緩存為空,則重新調用webservice查詢數據,並更新緩存
InterfaceManageResult result = interfaceManageFacade.queryAllInterfaceList();
if (null == result || !result.isSuccess()) {
return null;
}
configs = result.getInterfaceConfigList();
return configs;
}

㈧ 如何清除JAVA緩存

java清除緩存辦法:
1.禁止客戶端緩存要在<head>中加入類似如下內容:

<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">

或 <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">

2.在伺服器的動態網頁中禁止緩存,要加入類似如下腳本

response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);

㈨ java 線程什麼時候會從主內存刷新本地緩存

你的4個變數一旦聲明會自動在內存中創建。
jvm也沒有你說的緩存,高速緩存這些東西,全部放在堆內存中。

堆內存中的東西在GC的時候會移動

熱點內容
伺服器如何取消tp指令信息 發布:2024-10-20 00:38:48 瀏覽:120
usb的配置哪個更好 發布:2024-10-20 00:27:15 瀏覽:850
我的世界伺服器怎麼收 發布:2024-10-20 00:27:13 瀏覽:566
java和oracle 發布:2024-10-20 00:25:08 瀏覽:36
在線搜索源碼 發布:2024-10-20 00:25:05 瀏覽:125
我的世界國際版伺服器ip地址原版 發布:2024-10-20 00:25:00 瀏覽:343
sql字元串為空 發布:2024-10-20 00:16:58 瀏覽:928
視頻三個機位設備怎麼配置 發布:2024-10-20 00:16:48 瀏覽:878
眾泰t700手動擋豪華什麼配置 發布:2024-10-20 00:16:47 瀏覽:681
linux查看機器名 發布:2024-10-20 00:15:13 瀏覽:783