169. LRU - Chrome storage自动清除算法
分享给更多人
中等难度 -通过 / -执行
Chrome在需要的时候会利用LRU算法来清除数据
请观看Youtube 介绍,从6:25开始到7:38。
请实现类似的逻辑LRUStorage
。
- 目的并不是要重现Chrome的内部实现。
getData
和setData
被调用的时候,需要算作'used'。- 由于时间精度问题,class的constructor请支持第二个
getTimestamp
参数。
interface OriginData {
origin: string
lastUsed: number
size: number
persistent: boolean
}
interface LRUStorage {
capacity: number
// to use the data for origin
// return size of the data or undefined if not exist
getData(origin: string): OriginData | undefined
// updating data for origin
// return boolean to indicate success or failure
// If the total size exceeds capacity,
// Least Recently Used non-persistent origin data other than itself should be evicted.
setData(origin: string, size: number): boolean
// manually clear data for origin
clearData(origin: string): void
// change data for origin to be persistent
// it only handles existing data not the data added later
// persistent data cannot be evicted unless manually clear it
makePersistent(origin: string): void
}