欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Java實現(xiàn)緩存Cache的深入分析

 更新時間:2013年06月04日 11:58:32   作者:  
本篇文章是對Java實現(xiàn)緩存Cache進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
原理是使用LinkedHashMap來實現(xiàn),當(dāng)緩存超過大小時,將會刪除最老的一個元組。
實現(xiàn)代碼如下所示
復(fù)制代碼 代碼如下:

import java.util.LinkedHashMap;
import java.util.Map;
public class LRUCache {
 public static class CachedData {
  private Object data = null;
  private long time = 0;
  private boolean refreshing = false;
  public CachedData(Object data) {
   this.data = data;
   this.time = System.currentTimeMillis();
  }
  public Object getData() {
   return data;
  }
  public long getTime() {
   return time;
  }

  public void setTime(long time) {
   this.time = time;
  }

  public boolean getRefreshing() {
      return refreshing;
  }

  public void setRefreshing(boolean b) {
      this.refreshing = b;
  }
 }
 protected static class CacheMap extends LinkedHashMap {
  protected int maxsize = 0;
  public CacheMap(int maxsize) {
   super(maxsize * 4 / 3 + 1, 0.75f, true);
   this.maxsize = maxsize;
  }
  protected boolean removeEldestEntry(Map.Entry eldest) {
   return size() > this.maxsize;
  }
 }
 protected CacheMap map = null;
 public LRUCache(int size) {
  this.map = new CacheMap(size);
 }
 public synchronized void set(Object key, Object value) {
  map.remove(key);
  map.put(key, new CachedData(value));
 }
 public synchronized void remove(Object key) {
  map.remove(key);
 }
 public synchronized CachedData get(Object key) {
  CachedData value = (CachedData) map.get(key);
  if (value == null) {
   return null;
  }
  map.remove(key);
  map.put(key, value);

  return value;
 }

 public int usage() {
  return map.size();
 }

 public int capacity() {
  return map.maxsize;
 }

 public void clear() {
  map.clear();
 }
}

相關(guān)文章

  • JAVA對字符串進(jìn)行32位MD5加密的實踐

    JAVA對字符串進(jìn)行32位MD5加密的實踐

    本文主要介紹了JAVA對字符串進(jìn)行32位MD5加密的實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Java 中限制方法的返回時間最新方法

    Java 中限制方法的返回時間最新方法

    最近在研究 ChatGPT 的 API 調(diào)用,因為 ChatGPT 的 API 調(diào)用時間通常超過 30 秒,所以我們希望在程序中限制這個方法的執(zhí)行時間,不要讓方法花太長時間去執(zhí)行了,今天通過本文給大家分享Java 中如何限制方法的返回時間,感興趣的朋友跟隨小編一起看看吧
    2023-05-05
  • SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測試示例

    SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測試示例

    這篇文章主要介紹了SpringCloud微服務(wù)的調(diào)用與遠(yuǎn)程調(diào)用測試示例,服務(wù)調(diào)用者-可以暫時認(rèn)為是與用戶交互的角色(因為存在微服務(wù)之間的調(diào)用),可以根據(jù)該用戶的類型將其賦予不同的服務(wù)調(diào)用權(quán)限,通過一次http請求訪問調(diào)用對應(yīng)的微服務(wù)獲取想要的數(shù)據(jù)
    2023-04-04
  • Java實現(xiàn)貪吃蛇游戲

    Java實現(xiàn)貪吃蛇游戲

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)貪吃蛇游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • MyBatis-Plus標(biāo)簽@TableField之fill自動填充方式

    MyBatis-Plus標(biāo)簽@TableField之fill自動填充方式

    這篇文章主要介紹了MyBatis-Plus標(biāo)簽@TableField之fill自動填充方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Spring循環(huán)依賴??的解決方式詳解

    Spring循環(huán)依賴??的解決方式詳解

    這篇文章主要介紹了Spring循環(huán)依賴??的解決方式,??循環(huán)依賴??是指兩個或多個Bean互相依賴,形成閉環(huán),導(dǎo)致Spring無法正常完成依賴注入,需要的朋友可以參考下
    2025-05-05
  • Java實現(xiàn)從數(shù)據(jù)庫導(dǎo)出大量數(shù)據(jù)記錄并保存到文件的方法

    Java實現(xiàn)從數(shù)據(jù)庫導(dǎo)出大量數(shù)據(jù)記錄并保存到文件的方法

    這篇文章主要介紹了Java實現(xiàn)從數(shù)據(jù)庫導(dǎo)出大量數(shù)據(jù)記錄并保存到文件的方法,涉及Java針對數(shù)據(jù)庫的讀取及文件寫入等操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • ArrayList?foreach循環(huán)增添刪除導(dǎo)致ConcurrentModificationException解決分析

    ArrayList?foreach循環(huán)增添刪除導(dǎo)致ConcurrentModificationException解決分

    這篇文章主要為大家介紹了ArrayList?foreach循環(huán)增添刪除導(dǎo)致ConcurrentModificationException解決分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-12-12
  • Spring集成MyBatis框架

    Spring集成MyBatis框架

    本文主要介紹了Spring集成MyBatis的配置和使用,項目基于Maven構(gòu)建,連接Mysql數(shù)據(jù)庫。下面跟著小編一起來看下吧
    2017-02-02
  • SpringBoot實戰(zhàn)之處理異常案例詳解

    SpringBoot實戰(zhàn)之處理異常案例詳解

    這篇文章主要介紹了SpringBoot實戰(zhàn)之處理異常案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09

最新評論