一个Map对象在迭代时会根据对象中元素的插入顺序来进行一个 for循环在每次迭代后会返回一个形式为[key,value]的数组。 三、JS中map语法-LRU Cache 1.题目分析 由于map语法在迭代时会根据对象中元素的插入顺序来进行。所以在get中时,如果有相同的key,则先删除后放入;在put中如果有相同的key,则也先删除后放入。...
for (let [key, value] of this.cache) { console.log(key + " -> " + value); } } } // 使用示例 const historyCache = new LRUCache(5); // 设置缓存容量为5 historyCache.put("Page 1", "www.page1.com"); historyCache.put("Page 2", "www.page2.com"); historyCache.put("Page ...
十分钟用JS写出LRU Cache 算法 作者:安歌 来源:SegmentFault 思否社区 简介 关于缓存,有个常见的例子是,当用户访问不同站点时,浏览器需要缓存在对应站点的一些信息,这样当下次访问同一个站点的时候,就可以使访问速度变快(因为一部分数据可以直接从缓存读取)。但是想想房价都那么高了,内存空间同样也是珍贵的(呜呜呜...
LRUCache cache = new LRUCache( 2 /* capacity */ ); cache.put(1, 1); cache.put(2, 2); cache.get(1); // returns 1 cache.put(3, 3); // evicts key 2 cache.get(2); // returns -1 (not found) cache.put(4, 4); // evicts key 1 cache.get(1); // returns -1 (not ...
如果你是一个 Node.js 开发者,你可能会遇到需要缓存数据的情况。缓存可以显著提高应用的性能,减少对数据库或其他外部资源的频繁访问。在众多缓存解决方案中,lru-cache 是一个非常受欢迎且易于使用的包。今天,我将带你了解一下 lru-cache 及其基本用法。 01 什么是LRU算法 LRU 是 Least Recently Used 的缩写,意思...
LRUCache.prototype.put = function (domain, info){ // 首先判断节点是否存在,存在则更新对应信息,不存在则插入 if(this.hashmap[domain]){ const node = this.hashmap[domian]; node.info = info;// 更新 this.moveToTop(node); // todo1 将节点移动到最前面 ...
十分钟看懂JS的LRU Cache 算法(上) 前文 在leetcode上刷题时,遇到一个难得能够直接在前端用得上的算法思路(说实话,前端能用到算法的场景真的少的可怜),所以抓住和大家做一个分享。恰逢金三银四求职季,多掌握一个知识点,多一份进大厂打工的希望!加油,打工人!
首先我们定义一个LRUCache类,封装所有的方法和变量。 代码如下: class LRUCache { constructor(lenght) { this.length = lenght; // 存储长度 this.data = new Map(); // 存储数据 } // 存储数据,通过键值对的方式 set(key, value) { } // 获取...
首先我们定义一个LRUCache类,封装所有的方法和变量。 代码如下: <> class LRUCache { constructor(lenght) { this.length = lenght; // 存储长度 this.data = new Map; // 存储数据 } // 存储数据,通过键值对的方式 set(key, value) { }
最后再列举一个应用于node服务端的LRU缓存例子——基于Koa框架模板的Lru缓存插件lru-cache 如果有这方面的需求可以试试用这个插件实现服务端对LRU缓存,当然也需要根据实际业务情况权衡利弊。 原理和应用举例就到这了,下面进入实战环节,我们将通过两种方式来实现一个基本的LRU缓存算法。