首頁>Club>
7
回覆列表
  • 1 # Solchen

    LRU演算法的設計原則是:如果一個數據在最近一段時間沒有被訪問到,那麼在將來它被訪問的可能性也很小。也就是說,當限定的空間已存滿資料時,應當把最久沒有被訪問到的資料淘汰。

    實現LRU

    1. 用一個數組來儲存資料,給每一個數據項標記一個訪問時間戳,每次插入新資料項的時候,先把陣列中存在的資料項的時間戳自增,並將新資料項的時間戳置為0並插入到陣列中。每次訪問陣列中的資料項的時候,將被訪問的資料項的時間戳置為0。當陣列空間已滿時,將時間戳最大的資料項淘汰。

    2.利用一個連結串列來實現,每次新插入資料的時候將新資料插到連結串列的頭部;每次快取命中(即資料被訪問),則將資料移到連結串列頭部;那麼當連結串列滿的時候,就將連結串列尾部的資料丟棄。

    3. 利用連結串列和hashmap。當需要插入新的資料項的時候,如果新資料項在連結串列中存在(一般稱為命中),則把該節點移到連結串列頭部,如果不存在,則新建一個節點,放到連結串列頭部,若快取滿了,則把連結串列最後一個節點刪除即可。在訪問資料的時候,如果資料項在連結串列中存在,則把該節點移到連結串列頭部,否則返回-1。這樣一來在連結串列尾部的節點就是最近最久未訪問的資料項。

  • 中秋節和大豐收的關聯?
  • 除法是怎麼來的?