/*** @author: subd
* @date: 2019/8/28 8:22
* lru
* 末尾淘汰演算法 執行緒不安全
* 手寫linkedhashmap 進行書寫
*/public class lru
public string get(string key)
refreshnode(node);
return node.value;
}public void put(string key, string value)
node = new node(key, value);
addnode(node);
hashmap.put(key, node);
} else
}private void remove(string key)
/*** 重新整理被訪問節點的位置
** @param node
* @return
*/private void refreshnode(node node)
//移除節點
removenode(node);
//重新插入節點
addnode(node);
}/**
* 刪除節點
** @param node
* @return
*/private string removenode(node node) else if (node == end) else if (node == head) else
return node.key;
}/**
* 尾部插入節點
** @param node
*/private void addnode(node node)
end = node;
if (head == null)
}/**
* 節點類
*/public class node
}public static void main(string args)
}
快取淘汰演算法 LRU
1.lru 1.1.原理 lru least recently used,最近最少使用 演算法根據資料的歷史訪問記錄來進行淘汰資料,其核心思想是 如果資料最近被訪問過,那麼將來被訪問的機率也更高 1.2.實現 最常見的實現是使用乙個鍊錶儲存快取資料,詳細演算法實現如下 1.新資料插入到鍊錶頭部 2....
LRU 快取淘汰演算法
1.介紹 lru是leastrecentlyused近期最少使用演算法。記憶體管理的一種頁面置換演算法,對於在記憶體中但又不用的資料塊 記憶體塊 叫做lru,oracle會根據哪些資料屬於lru而將其移出記憶體而騰出空間來載入另外的資料。lru least recently used,最近最少使用 ...
LRU快取淘汰演算法
這是乙個什麼演算法?這是乙個可以處理程式過多的情況下該刪除哪乙個程式的演算法策略。它是根據最近使用時間來進行確定的,通常刪除的是最後乙個節點。那麼這個演算法會涉及什麼樣的資料結構?這個演算法涉及了hashmap和雙向鍊錶的資料結構,通過這兩個結構的配合可以通過map來快速定位訪問節點,通過雙向鍊錶來...