LRU演算法的O 1 實現 以及 應用

2021-10-06 11:20:34 字數 375 閱讀 7627

lru是least recently used的縮寫,即最近最少使用,是一種常用的頁面置換演算法,選擇最近最久未使用的頁面予以淘汰。

使用map+鍊錶:

1)鍊錶負責維護node的順序。

2)map負責以o(1)的複雜度快速定位node在鍊錶中的位置。具體的,map的key存node值,map的value存node的位址。

當'node新增'或'訪問node命中'時,放或移到煉表頭;當需要淘汰node時,淘汰鍊錶尾的node。

此時,新增、訪問、移動、刪除的時間複雜度均為o(1)。

適合:存在熱點資料,資料無更新,個體多。

因為量大,所以記憶體或redis裡的快取不可能全部存,需要淘汰部分不是熱點的資料,只留下指定容量的熱點資料快取。

演算法 實現LRU快取,讀取 寫入O 1 實現

這題應該見的不少了,寫寫記錄一下。實現該功能分析 1 o 1 時間完成查詢,那除了 hash 別無選擇。2 lru 最近最少使用演算法,為了方便資料的淘汰。需要對最近訪問的資料放未訪問資料之前。用雙向鍊錶實現即可。通常情況下,雙向鍊錶讀取 插入的時間複雜度都是o n 但是如果知道插入位置,則可以實現...

Google Hacking 的實現以及應用 轉

前言 google hacking其實並算不上什麼新東西,在早幾年我在一些國外站點上就看見過相關的介紹,但是由於當時並沒有重視這種技術,認為最多就只是用來找找未改名的mdb或者別人留下的webshell什麼的,並無太大實際用途.但是前段時間仔細啃了些資料才猛然發覺google hacking其實並非...

google hacking的實現以及應用

google hacking其實並算不上什麼新東西,在早幾年我在一些國外站點上就看見過相關的介紹,但是由於當時並沒有重視這種技術,認為最多就只是用來找找未改名 的mdb或者別人留下的webshell什麼的,並無太大實際用途.但是前段時間仔細啃了些資料才猛然發覺google hacking其實並非如此...