c 實現LRU演算法

2021-09-25 18:20:23 字數 917 閱讀 7408

lru演算法(least recently used),是記憶體管理中為了保證命中率的一種頁面置換演算法,可用於記憶體和輔存之間也可用用在cache和記憶體之間,redis中的過期淘汰策略中也使用了lru演算法。它是利用了程式區域性性的原理,簡單說就是此刻訪問的頁面很可能在下一時刻也會訪問。

這裡使用c++實現簡單的lru快取

#ifndef _lru_h

#define _lru_h

#include #include #include using namespace std;

templatestruct cachenode

};templateclass lru

~lru()

}public:

void put(key key, val val)

val get(key key)

void remove(key key)

}private:

void insert_head(cachenode* node)

else

} void delete_node_fromlist(cachenode* node)

if (node->last)

if (node == head)

if (node == tail)

} void check_node_num() }

private:

size_t cachesize;

unordered_map*> cachemap;

cachenode* head;

cachenode* tail;

};#endif

LRU演算法C 實現

lru演算法 leaset recently used 或者說快取排程演算法。對於軟體層面實現的快取來說,其主要針對的是對磁碟上具有結構性組織的大型檔案資料的隨機讀取。如果程式需要從磁碟上某個存放了一億條資料的檔案中讀取id 的某條資料,並且這條資料會被多次訪問到 很好的滿足區域性性原理 如果每次都...

LRU演算法實現

jdk 中的實現 在jdk 中linkedhashmap 可以作為lru 演算法以及插入順序的實現,linkedhashmap 繼承自hashmap 底層結合hash 表和雙向鍊錶,元素的插入和查詢等操作通過計算hash 值找到其陣列位置,在做插入或則查詢操作是,將元素插入到鍊錶的表頭 當然得先刪除...

LRU演算法的實現

0 推薦 lru演算法的實現 什麼是lru演算法lru是least recently used的縮寫,即最近最少使用頁面置換演算法,是為虛擬頁式儲存管理服務的.關於作業系統的記憶體管理,如何節省利用容量不大的記憶體為最多的程序提供資源,一直是研究的重要方向.而記憶體的虛擬儲存管理,是現在最通用,最成...