LRU快取策略

2021-07-14 22:53:14 字數 1026 閱讀 5928

為最近最少使用(lru)快取策略設計乙個資料結構,它應該支援以下操作:獲取資料(get)和寫入資料(set)。

獲取資料get(key):如果快取中存在key,則獲取其資料值(通常是正數),否則返回-1。

寫入資料set(key, value):如果key還沒有在快取中,則寫入其資料值。當快取達到上限,它應該在寫入新資料之前刪除最近最少使用的資料用來騰出空閒位置。

public

class solution

}private

int capacity;

private hashmaphs = new hashmap();

private node head = new node(-1, -1);

private node tail = new node(-1, -1);

public

solution(int capacity)

public

intget(int key)

// remove current

node current = hs.get(key);

current.prev.next = current.next;

current.next.prev = current.prev;

// move current to tail

move_to_tail(current);

return hs.get(key).value;

}public

void

set(int key, int

value)

if (hs.size() == capacity)

node insert = new node(key, value);

hs.put(key, insert);

move_to_tail(insert);

}private

void

move_to_tail(node current)

}

lru快取策略

class listnode class hlistnode public int get int key,listnode no else return 1 public void delnode listnode node else else if node.next null else len...

134 LRU快取策略

為最近最少使用 lru 快取 策略設計乙個資料結構,它應該支援以下操作 獲取資料 get 和寫入資料 set 獲取資料get key 如果快取中存在key,則獲取其資料值 通常是正數 否則返回 1。寫入資料set key,value 如果key還沒有在快取中,則寫入其資料值。當快取達到上限,它應該在...

快取策略之LRU和LFU

快取,就是把資料儲存在本地,簡單實用key value做乙個對映就好了。但為什麼還要快取策略,因為快取的大小需要限制,否則儲存的東西只增不減,時間一長就有很多記憶體浪費。因為資源總是有限,所以優化,因為優化所以複雜 這個是least recently used的縮寫,即最近最少使用。它的邏輯很簡單 ...