C 簡單實現LRU快取

2022-01-17 09:11:07 字數 1054 閱讀 4533

最近跟同學吃飯扯淡的時候,由技術扯到薪資,又由薪資扯到他找工作時跟面試官是怎麼扯淡拿高工資的,各種技術一頓侃,總之只要啥都了解就沒問題了。談到快取的時候,我試探性的問了問- -你還記得lru怎麼寫嗎,他說啥完?我說沒事。。

寫完這篇文章發給他- -鄙視完他讓他請我再吃飯,標準的快取lru實現為雜湊表+鍊錶,這是熱乎的雙向鍊錶,也是c#版本的。。c#實現雙向鍊錶

**:

public

class lrucache

public t get(int

key)

else

}public

void set(int

key, t value)

else

if (_size >_capacity)

_dic.add(key, n);

}//移出鍊錶最後乙個節點

private

void

removelast()

//將乙個孤立節點放到頭部

private

void attachtohead(listnoden)

//將乙個鍊錶中的節點放到頭部

private

void movetohead(listnoden)

private

void removefromlist(listnoden)

}public

class listnode

}

測試:

lrucache cache = new lrucache(3

); cache.get(1);

cache.set(

1, 1

); cache.set(

2, 2

); cache.get(3);

cache.set(

3, 3

); cache.set(

4, 4

); cache.get(

2);

C 簡單實現LRU快取結構

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

Lru快取的簡單實現

最近最少使用演算法設計的map快取 使用linkedhashmap特性,完成當快取超過指定容量時,擠掉最久未使用的資源。具體編寫的工具類如下 一 cache類 繼承linkedhashmap 用於儲存資料 class cache extends linkedhashmap 取得元素耗費儲存空間大小 ...

LRU簡單實現C

頁面置換演算法 在位址對映過程中,若在頁面中發現所要訪問的頁面不再記憶體中,則產生缺頁中斷。當發生缺頁中斷時作業系統必須在記憶體選擇乙個頁面將其移出記憶體,以便為即將調入的頁面讓出空間。而用來選擇淘汰哪一頁的規則叫做頁面置換演算法。下面是lru簡單實現 雙向鍊錶,時間複雜度o n include i...