當前位置:首頁 » 硬碟大全 » 怎麼把數據載入到jvm緩存
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

怎麼把數據載入到jvm緩存

發布時間: 2022-06-30 00:50:00

A. java怎麼將數據放入緩存

java放入session緩存中
方法如下:

session.setAttribute("Name",Value);
Name 隨便取,value就是要放的數據
獲取的時候session.getAttribute("Name);
就可以了

B. java web 項目啟動時載入資料庫的數據到緩存中,如何實現

servlet有個init方法,在Servlet實例化之後自動執行,你可以在這個裡面取數據。
init怎麼寫就問度娘吧,一搜索一大堆。

C. java web 項目啟動時載入資料庫的數據到緩存中,如何實現求思路和實例。謝謝高峰相送

可以使用servlet的init方法訪問資料庫載入數據到java集合中,java集合相當於一塊緩存,適用於一般的數據。

D. 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();
}
}
}

E. 怎麼把對象動態載入到jvm里里

對象的創建過程:
1. 所有的類都是在第一次被使用時,動態載入到JVM中。當首次創建類型為Dog的對象時,或者Dog類的靜態方法首次被調用時,或者靜態屬性域首次被訪問時,java解釋器查找classPath,定位到Dog.class文件。

2. 載入Dog.class文件,生成一個Class類型對象,所有有關的靜態初始化動作都會執行:如靜態代碼塊,靜態成員屬性。 並且這種初始化動作只在Class對象首次載入時候進行一次。

3. 當用new Dog()創建對象時,首先JVM在堆heap上為Dog對象分配足夠的存儲空間。

4. 存儲空間清空,自動將Dog對象中的所有基本類型數據都設置成了默認值,對象引用被設置為null。

5. 執行所有在欄位定義處的一些初始化操作。

6. 調用構造器方法。(沒有繼承)

如此一來,便創建了這個對象。

F. java如何將從資料庫取出的數據預先存入到內存

你要實現的這個可能跟SpringMvc的關系不是很大。
你要達到的目的其實就是在jvm啟動的時候把資料庫數據載入一份到內存,一個靜態變數和一個靜態初始化塊就可以搞定你的問題,這兩者都是在類載入的時候初始化一次,像前面回答的一樣,你可以用一個HashMap搞定。稍微具體來說,一個靜態變數
public static final Map<key,value> cache=new HashMap<key,value>()
static {
cache=請求資料庫操作
}

key你自己加,String還是int都行,value是你資料庫的結構,可以寫個實體。獲取的時候直接cache.get(key)就可以了。

G. java怎麼將資料庫的數據做緩存,方便查找。

你的數據非常大,那你寫入內存會不會比較占資源,為什麼不用非同步刷新,讓它顯示不部分再慢慢載入

H. 如何在伺服器宕機後重新把數據添加到緩存里

如果進程和緩存是分離的,那麼要區分宕機部分是緩存引起的,還是邏輯引起的。比如採用memcached,如果是邏輯伺服器宕機,重啟就好了。如果是memcached宕機,可有兩種方法選擇,一個是根據日誌恢復,一個是重新從資料庫載入必要的數據進入到緩存。
如果進程和緩存是管理的,當宕機事件發生,一般緩存也被破壞,這種情況下,建議從資料庫中載入最常用的或者按照時間排序修改最頻繁的數據。

I. 請教java中怎麼緩存大量的數據,比如100w條記錄

小子,解決問題的思路首先就不對,什麼叫JAVA中……JVM虛擬內存一般只有幾百M,為何別人那麼多大型系統都能跑起來?
第一,大量的數據是不會考慮放在JVM內存中;
第二,如果需要緩存大量的dto,動態數據(又稱過程數據)一般用的是redis;如果是靜態,系統啟動時就載入的大量配置,一般考慮放ehcache。
第三,由於redis用的是物理內存,不是JVM內存,一般情況下往redis里丟千萬級別的記錄數基本不影響性能,小小100w條算什麼呢。