LeedCode LRU快取機制

2021-10-02 08:03:56 字數 1388 閱讀 9023

運用你所掌握的資料結構,設計和實現乙個 lru (最近最少使用) 快取機制。它應該支援以下操作: 獲取資料 get 和 寫入資料 put 。獲取資料 get(key) - 如果金鑰 (key) 存在於快取中,則獲取金鑰的值(總是正數),否則返回 -1。

寫入資料 put(key, value) - 如果金鑰不存在,則寫入其資料值。當快取容量達到上限時,它應該在寫入新資料之前刪除最近最少使用的資料值,從而為新的資料值留出空間。

lrucache cache = new lrucache( 2 /* 快取容量 */ );

cache.put(1, 1);

cache.put(2, 2);

cache.get(1); // 返回 1

cache.put(3, 3); // 該操作會使得金鑰 2 作廢

cache.get(2); // 返回 -1 (未找到)

cache.put(4, 4); // 該操作會使得金鑰 1 作廢

cache.get(1); // 返回 -1 (未找到)

cache.get(3); // 返回 3

cache.get(4); // 返回 4

分析:採用雙鏈表的方式,每次查詢,自動擦除快取,重新插入資料,保證最後乙個一定是不經常訪問的

class

lrucache

intget

(int key)

pair<

int,

int> kv =

*map[key]

; cache.

erase

(map[key]);

cache.

push_front

(kv)

; map[key]

= cache.

begin()

;return kv.second;

}void

put(

int key,

int value)

cache.

push_front

(pair<

int,

int>

(key, value));

map[key]

= cache.

begin()

;}else

}private

:int cap;

listint,

int>> cache;

unordered_map<

int, listint,

int>>

::iterator> map;

//key對映到cache中

};

IOS 開發快取機制 記憶體快取機制

使用快取的目的是為了使用的應用程式能更快速的響應使用者輸入,是程式高效的執行。有時候我們需要將遠端 web伺服器獲取的資料快取起來,減少對同乙個 url多次請求。記憶體快取我們可以使用 sdk中的 nsurlcache類。nsurlrequest需要乙個快取引數來說明它請求的 url何如快取資料的,...

快取機制 全棧快取

1.配置檔案 cache middleware seconds 20 設定超時時間20秒 第一行和最後一行,位置不能放錯,只能放第一,和最後一行,又報錯是 modulenotfounderror no module named django.middleware.cache.updatecachem...

研究快取機制

asp.netforums中使用了兩級快取來處理乙個使用者在不同版面上的許可權,第一級使用httpruntime.cache,可是使用者在不同的請求中從執行時提供的快取機制中提高效率,第二級是httpcontext.current,它是建立在第一級快取之上,用於使用者在同乙個請求期間的快取,這個快取...