Lru快取的簡單實現

2021-06-03 01:05:39 字數 1436 閱讀 1576

最近最少使用演算法設計的map快取

使用linkedhashmap特性,完成當快取超過指定容量時,擠掉最久未使用的資源。

具體編寫的工具類如下:

一、cache類 繼承linkedhashmap 用於儲存資料

class cache extends linkedhashmap

/*** 取得元素耗費儲存空間大小(包括鍵和值)

* @param key 鍵

* @param value 值

* @return

*/public long getcachebuffer(string key, object value)

else if(category==1)

return 0;

} /**

* 重寫put方法 放入元素時 對當前快取大小進行調整

*/@override

public object put(string key, object value)

/*** 移除判定:當前快取大於最大快取

* 需要調整當前快取大小

*/@override

protected boolean removeeldestentry(map.entryeldest)

} return result;

}}

二、lrucachemap快取操作類 定義一定量的快取 對外開放使用介面

class lrucachemap

/*** 無參單例例項化方法

* @return lrucahemap例項

*/public static lrucachemap newinstance()

} return lrucahemap; }

/** 元素個數*/

public int imgsize()

/** 配置資訊元素個數*/

/*** 根據鍵值取得元素

* @param key 鍵

* @return

*/public object getimg(string key)

/*** 根據鍵值取得配置資訊元素

* @param key 鍵

* @return

*/ }

/*** 存入元素

* @param key 鍵

* @param value 值

*/public void putimg(string key,object value)

/*** 存入配置資訊元素

* @param key 鍵

* @param value 值

*/ }

/** 清空快取*/

public void clearimg()

/** 清空配置快取*/

}}

C 簡單實現LRU快取

最近跟同學吃飯扯淡的時候,由技術扯到薪資,又由薪資扯到他找工作時跟面試官是怎麼扯淡拿高工資的,各種技術一頓侃,總之只要啥都了解就沒問題了。談到快取的時候,我試探性的問了問 你還記得lru怎麼寫嗎,他說啥完?我說沒事。寫完這篇文章發給他 鄙視完他讓他請我再吃飯,標準的快取lru實現為雜湊表 鍊錶,這是...

C 簡單實現LRU快取結構

簡單了解一下 個人解釋 lru快取結構 有乙個池子,有一堆資料,池子的容納上限是k,有兩種操作 set 放資料 如果超出上限了,刪除最晚訪問的那條資料 get 訪問資料 牛客網 提交的鏈結 這裡有個要求 get set的時間複雜度都需要是o 1 推理過程 先考慮一下我們需要什麼樣的功能 訪問時候為1...

LRU快取的js實現

lru least recently used,最近最少使用 演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是 如果資料最近被訪問過,那麼將來被訪問的機率也更高 最常見的實現是使用乙個鍊錶儲存快取資料,詳細演算法實現如下 新資料插入到鍊錶頭部 每當快取命中 即快取資料被訪問 則將資料移到鍊錶...