日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

缓存机制 java_缓存机制:java中缓存的原理

發布時間:2023/12/4 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 缓存机制 java_缓存机制:java中缓存的原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

外存:

也就是我們經常說的(CDEF盤的大小)外儲存器是指除計算機內存及CPU緩存以外的儲存器,此類儲存器一般斷電后仍然能保存數據。常見的外存儲器有硬盤、軟盤、光盤、U盤等,一般的軟件都是安裝在外存中

內存:

內存是計算機中重要的部件之一,它是與CPU進行溝通的橋梁。計算機中所有程序的運行都是在內存中進行的,因此內存的性能對計算機的影響非常大。內存(Memory)也被稱為內存儲器,其作用是用于暫時存放CPU中的運算數據,以及與硬盤等外部存儲器交換的數據。只要計算機在運行中,CPU就會把需要運算的數據調到內存中進行運算,當運算完成后CPU再將結果傳送出來,內存的運行也決定了計算機的穩定運行,此類儲存器一般斷電后數據就會被清空

高速緩存:

高速緩存是用來協調CPU與主存之間存取速度的差異而設置的。一般情況下,CPU的工作速度高,但內存的工作速度相對較低,為了解決這個問題,通常使用高速緩存,高速緩存的存取速度介于CPU和主存之間。系統將一些CPU在近幾個時間段經常訪問的內容存入高速緩沖,當CPU需要使用數據時,先在高速緩存中找,如果找到,就不必訪問內存了,找不到時,再找內存,這樣就在一定程度上緩解了由于主存速度低造成的CPU“停工待料”的情況

---------------------------------------------------------------------------------------------------------------------------

之前一直很不理解這個緩存那個緩存,其實緩存就是把一些外存上的數據保存到內存上而已,怎么保存到內存上呢,我們運行的所有程序,里面的變量值都是放在內存上的,所以說如果要想使一個值放到內存上,實質就是在獲得這個變量之后,用一個生存期較長的變量存放你想存放的值,在java中一些緩存一般都是通過map集合來做的。

在Java中經常用到緩存,在SSh框架中也會用到一級緩存和二級緩存,到底緩存是怎么實現的呢?

簡單講就是,如果某些資源或者數據會被頻繁的使用,而這些資源或數據存儲在系統外部,比如數據庫、硬盤文件等,那么每次操作這些數據的時候都從數據庫或者硬盤上去獲取,速度會很慢,會造成性能問題。

一個簡單的解決方法就是:把這些數據緩存到內存里面,每次操作的時候,先到內存里面找,看有沒有這些數據,如果有,那么就直接使用,如果沒有那么就獲取它,并設置到緩存中,下一次訪問的時候就可以直接從內存中獲取了。從而節省大量的時間,當然,緩存是一種典型的空間換時間的方案。

在Java中最常見的一種實現緩存的方式就是使用Map, 基本的步驟是:

1.先到緩存里面查找,看看是否存在需要使用的數據

2.如果沒有找到,那么就創建一個滿足要求的數據,然后把這個數據設置回到緩存中,以備下次使用

3.如果找到了相應的數據,或者是創建了相應的數據,那就直接使用這個數據。

/**

* Java中緩存的基本實現示例

*/

public class JavaCache {

/**

* 緩存數據的容器,定義成Map是方便訪問,直接根據Key就可以獲取Value了

* key選用String是為了簡單,方便演示

*/

private Map map = new HashMap();

/**

* 從緩存中獲取值

* @param key 設置時候的key值

* @return key對應的Value值

*/

public Object getValue(String key){

//先從緩存里面取值

Object obj = map.get(key);

//判斷緩存里面是否有值

if(obj == null){

//如果沒有,那么就去獲取相應的數據,比如讀取數據庫或者文件

//這里只是演示,所以直接寫個假的值

obj = key+",value";

//把獲取的值設置回到緩存里面

map.put(key, obj);

}

//如果有值了,就直接返回使用

return obj;

}

}

這里只是緩存的基本實現,還有很多功能都沒有考慮,比如緩存的清除,緩存的同步等等。當然,Java的緩存還有很多實現方式,也是非常復雜的,現在有很多專業的緩存框架,更多緩存的知識,這里就不再去討論了。

下面用單例模式實現緩存:

/**

* 使用緩存來模擬實現單例

*/

public class Singleton {

/**

* 定義一個缺省的key值,用來標識在緩存中的存放

*/

private final static String DEFAULT_KEY = "One";

/**

* 緩存實例的容器

*/

private static Map map =

new HashMap();

/**

* 私有化構造方法

*/

private Singleton(){

//

}

public static Singleton getInstance(){

//先從緩存中獲取

Singleton instance = (Singleton)map.get(DEFAULT_KEY);

//如果沒有,就新建一個,然后設置回緩存中

if(instance==null){

instance = new Singleton();

map.put(DEFAULT_KEY, instance);

}

//如果有就直接使用

return instance;

}

}

總結

以上是生活随笔為你收集整理的缓存机制 java_缓存机制:java中缓存的原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。