我男同同性做視頻網(wǎng)站百度信息流廣告怎么投放
前言:什么是 LRU 呢,單詞全拼 Least Recently Used,意思是最久未使用。這個(gè)算法是做緩存用的,比如,你要緩存一組數(shù)據(jù),你要?jiǎng)澐志彺鎵K出來,因?yàn)椴豢赡苊總€(gè)數(shù)據(jù)都做緩存,那么劃出來的這個(gè)緩存塊,就要遵守 LRU 緩存算法。比如你畫出來了 4 個(gè)緩存塊,你已經(jīng)存了 4 個(gè)緩存數(shù)據(jù),那么新的數(shù)據(jù)還要緩存進(jìn)去,就需要?jiǎng)h除之前的一個(gè)緩存,那么刪除哪個(gè)呢,就是最久未使用的那個(gè)數(shù)據(jù),算法實(shí)現(xiàn)如下:定義一個(gè)緩存內(nèi),用 map 來裝鍵值對(duì)。# 代表的私有屬性。has 判斷是否有緩存數(shù)據(jù),get 獲取數(shù)據(jù)后,數(shù)據(jù)要變成最新使用的數(shù)據(jù),要?jiǎng)h的時(shí)候,不會(huì)刪它,set 存入新數(shù)據(jù),然后刪除最久未使用的數(shù)據(jù)。
class LRUCache {#map;#length;constructor(len) {this.#map = new Map();this.#length = len;}has(key) {return this.#map.has(key);}get(key) {if (this.has(key)) return null;const value = this.#map.get(key);this.#map.delete(key);this.#map.set(key, value);return value;}set(key, value) {if (this.has(key)) {this.#map.delete(key);}this.#map.set(key, value);if (this.#map.size > this.#length) {this.#map.delete(this.#map.keys().next().value);}}
}