当前位置:网站首页>Use js to complete an LRU cache
Use js to complete an LRU cache
2022-07-06 03:53:00 【French speaking pig】
1. What is? LRU cache
LRU
The full English name is Least Recently Used
, English translation ” Recently at least use “ It means . It is one of the page replacement algorithms .
Baidu Encyclopedia
LRU
Is a common page replacement algorithm , Select the most recent unused page to weed out . The algorithm gives each page an access field , Used to record the time of a page since it was last visitedt
, When a page has to be eliminated , Select one of the existing pagest
The most valuable , That is, the most recently used pages are eliminated .
Popular explanation means
Suppose we have a piece of memory , It is specially used to cache the web pages we recently visited , Visit a new web page , We will add a web page address to the memory , With the increasing number of web pages , The memory is full , At this time, we need to consider deleting some web pages . At this time, we find the address of the web page we first visited in memory , Then delete it .
This whole process can be calledLRU
Algorithm .
Two points need attention :
① When we visit a web address that already exists in memory , Then the URL needs to update the storage order in memory .
② When we have no data in memory , There is no need to delete .
2. Realization LRU Train of thought
- We need a limited storage space , Because infinity doesn't have to be used
LRU
The data has been deleted . - The data stored in our storage space needs to be orderly , Because we have to delete data in order , So think about it
Array
、Map
Data structures to store , Out of commissionObject
, Because it's disordered . - We can delete or add and obtain the specified data in this storage space .
- When the storage space is full , When adding data , The oldest piece of data will be automatically deleted .
Implementation is that we implement a LRUCache Class , Used as storage space , use es6 Medium Map Data structures store data , Because its time complexity is
O(1)
And orderly , Realization get,set Method is used to get and add data , The storage space is limited in length , There is no need to provide a deletion method , When our memory length is full , Automatically delete the most recently unused data , When using get When getting data , Update the order to the top
3. Code
js
class LRUCache {
constructor(length) {
this.length = length // Storage length
this.map = new Map() // Store the data
}
// Store the data , By means of key value pairs
set(key, value) {
if(this.map.has(key)) {
this.map.delete(key)
}
this.map.set(key, value)
// If the capacity is exceeded , Delete the longest data (map Middle is the first )
if(this.map.size > this.length) {
this.map.delete(this.map.keys().next().value)
}
}
// get data
get(key) {
if(!this.map.has(key)) {
return null
}
const val = this.map.get(key) // Get elements
this.map.delete(key) // Remove elements
this.map.set(key, val) // Reinsert elements , Update storage order
}
}
const lruCache = new LRUCache(3)
lruCache.set('name', 'wft')
lruCache.set('age', 18)
lruCache.set('sex', ' male ')
lruCache.set('len', ' Out of length ')
console.log(lruCache, '----->>>')
ts
interface ILRUCache {
length: number
map: Map<unknown, unknown>
set(key: unknown, value: unknown): void
get(key: unknown): void
}
class LRUCache implements ILRUCache {
length: number
map: Map<unknown, unknown>
constructor(length: number) {
this.length = length
this.map = new Map()
}
set(key: unknown, value: unknown) {
if(this.map.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)
}
}
get(key: unknown) {
if(!this.map.has(key)) {
return null
}
const val = this.map.get(key)
this.map.delete(key)
this.map.set(key, val)
}
}
const lruCache = new LRUCache(3)
lruCache.set('name', 'wft')
lruCache.set('age', 18)
lruCache.set('sex', ' male ')
lruCache.set('len', ' Out of length ')
console.log(lruCache, '----->>>')
Learn from :https://juejin.cn/post/7105654083347808263
边栏推荐
- Crawler of explanation and application of agency theory
- Simple blog system
- cookie,session,Token 这些你都知道吗?
- 3.1 detailed explanation of rtthread serial port device (V1)
- Plus d'un milliard d'utilisateurs de grandes entreprises comme Facebook ont été compromis, il est temps de se concentrer sur le did
- Factors affecting user perception
- An article will give you a comprehensive understanding of the internal and external components of "computer"
- C#(三十一)之自定义事件
- 2.1 rtthread pin设备详解
- BUAA calculator (expression calculation - expression tree implementation)
猜你喜欢
How to modify field constraints (type, default, null, etc.) in a table
No qualifying bean of type ‘......‘ available
2. GPIO related operations
3.1 rtthread 串口设备(V1)详解
Do you know cookies, sessions, tokens?
Blue Bridge Cup - Castle formula
Pytoch foundation - (1) initialization of tensors
Exchange bottles (graph theory + thinking)
cookie,session,Token 这些你都知道吗?
【按鍵消抖】基於FPGA的按鍵消抖模塊開發
随机推荐
多项目编程极简用例
Svg drag point crop image JS effect
[Key shake elimination] development of key shake elimination module based on FPGA
Codeforces Global Round 19
Prime Protocol宣布在Moonbeam上的跨链互连应用程序
KS003基于JSP和Servlet实现的商城系统
[introduction to Django] 11 web page associated MySQL single field table (add, modify, delete)
Basic concepts of LTE user experience
Microkernel structure understanding
在 .NET 6 中使用 Startup.cs 更简洁的方法
Overview of super-resolution reconstruction of remote sensing images
The ECU of 21 Audi q5l 45tfsi brushes is upgraded to master special adjustment, and the horsepower is safely and stably increased to 305 horsepower
C language circular statement
Cubemx 移植正点原子LCD显示例程
《2022年中国银行业RPA供应商实力矩阵分析》研究报告正式启动
1.16 - check code
【Qt5】Qt QWidget立刻出现并消失
判断当天是当月的第几周
Pandora IOT development board learning (HAL Library) - Experiment 9 PWM output experiment (learning notes)
Blue Bridge Cup - Castle formula