位置: IT常识 - 正文

前端面试中经常提到的LRU缓存策略详解(前端面试经常被问的问题)

编辑:rootadmin
前端面试中经常提到的LRU缓存策略详解

推荐整理分享前端面试中经常提到的LRU缓存策略详解(前端面试经常被问的问题),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:前端面试中经常问的问题,前端面试项目中遇到过哪些难题,前端面试项目中遇到过哪些难题,前端面试工作中遇到问题怎么解决,前端面试工作中遇到问题怎么解决,前端面试中经常说的问题,前端面试中经常被问到的问题,前端面试中经常被问到的问题,内容如对您有帮助,希望把文章链接给更多的朋友!

🐱 个人主页:不叫猫先生 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫优质专栏:vue3从入门到精通、TypeScript从入门到实践 📢 资料领取:前端进阶资料以及文中源码可以找我免费领取 🔥 前端学习交流:博主建立了一个前端交流群,汇集了各路大神,一起交流学习,期待你的加入!(文末有我wx或者私信)

目录LRU一、为什么要使用Map是来定义容器二、应用场景三、代码实现LRU

LRU(Least Recently Used)最近最少使用缓存策略,根据历史数据记录,当数据超过了限定空间的时候对数据清理,清理的原则是对很久没有使用到过的数据进行清除。

一、为什么要使用Map是来定义容器

Map在保存数据时会按照记住存储数据时候的顺序,这样存储的数据是有序列的,并且会维护键值对的插入顺序,Map存储数据的键值可以是任意类型(对象或者基本类型都可),Map提供了get、set、delete方法十分方便;而Object的话是无序,当然也可以使用Array。另外Map的算法复杂度是O(1),处理数据更迅速。

二、应用场景redis浏览器浏览记录vue中内置组件keep-alive三、代码实现前端面试中经常提到的LRU缓存策略详解(前端面试经常被问的问题)

实现的大概思路如下:

创建一个LRUCache类定义容器以及容器的容量定义set方面,设置容器中的数据定义get方法,获取容器中的数据class LRUCache { constructor(length) { // 定义容器容量 this.length = length; // 创建数据容器,生成一个空映射 this.map = new Map(); } // 设置key值 set(key, value) { } // 获取key值 get(key) {}}

接下来就是对set方法和get方法的处理:

set

当容器长度不超过设定的长度:设置key值,但是为了达到缓存策略的效果,需要我们先删除数据,后添加到容器的最后一条当容器长度超过设定的长度:先删除掉容器中的第一条数据

get

先获取数据值,然后删除该条数据,再设置数据到最后class LRUCache { constructor(length) { // 定义容器容量 this.length = length; // 定义数据容器 this.map = new Map(); } // 设置key值 set(key, value) { // 如果容器容量超过设定的容量 if (this.map.size >= this.length) { // 等价于:let firstKey = this.map.keys()[0] //map.keys().next()查询容器中第一条数据的key值 //keys()会返回一个迭代器对象,包含了实力对象中的每一个key值 let firstKey = this.map.keys().next().value; //删除容器中第一条数据 this.map.delete(firstKey); } // 容器中存在key就先删除掉 if (this.map.has(key)) { this.map.delete(key); } // 删除后重新加入该条数据 this.map.set(key, value); } // 获取key值 get(key) { // 获取key值不存在返回null if (!this.map.has(key)) { return null; } // 获取key值 let value = this.map.get(key); //删除容器中的该条数据 this.map.delete(key); //重新把该条数据添加到容器中 this.map.set(key, value); return value }}// 创建实例对象并设置容器大小const lruCache = new LRUCache(5)

添加6条数据

lruCache.set('name', 'zhangsan')lruCache.set('class', 'xinguan')lruCache.set('age', 19)lruCache.set('sex', '男')lruCache.set('occupation', '前端工程师')lruCache.set('year', '2023')console.log(lruCache, 'lruCache')

对lruCache添加了6条数据并按顺序排列,打印出来只剩5条数据,添加的第一条(‘name’, ‘zhangsan’)被删除了。

然后获取class的值,发现key为class的这条数据跑最后了。因为在get时候先delete后set了。

console.log(lruCache.get('class'), 'lruCache')//xinguan

本文链接地址:https://www.jiuchutong.com/zhishi/299351.html 转载请保留说明!

上一篇:vue - vue使用echarts实现中国地图和点击省份进行查看(vue中的echarts)

下一篇:vue3.2 基础及常用方法(vue3.0用法)

  • 利润表里面的所得税
  • 补缴以前年度增值税和罚款、滞纳金的所得税处理
  • 出口货物退税是指
  • 售后租回交易有哪几种不同的情况
  • 发票不走账对哪方有害
  • 关联方交易影响因素
  • 小微企业所得税优惠政策最新2022
  • 现金日记账怎么记账借方还是贷方
  • 股权转让企业所得税纳税地点
  • 公户可以在淘宝下单吗
  • 现金抵用券购买怎么用
  • 冲借款的凭证怎么做
  • 公司收款收据
  • 税率修改后对价格的影响
  • 从联营企业分回利润可以在税前扣除吗
  • 未到期责任准备计入什么科目
  • 过期的增值税发票能用吗
  • 扣押属于纳税担保吗
  • 建筑服务 1%
  • 公司出租房屋交印花税吗
  • 应交税费包括了增值税吗
  • 所得税按利润总额的25%计算缴纳
  • 土地增值税的纳税人是在我国境内
  • 增值税先征后退属于政府补助吗
  • 新办企业税务办理
  • 什么叫保理支付
  • 高新企业最新政策2020
  • 会计审核票据如何签字
  • 代理进口业务受托方账务处理流程
  • 下列项目中属于免征增值税的有
  • php图片处理尺寸
  • php parse_url
  • 工会会员会费缴费证明怎么开
  • ati2mdxx.exe是什么进程 ati2mdxx进程信息查询
  • 公司买了一辆二手汽车,怎么入账
  • 与资产相关的政府补助所得税处理
  • 设备拆修痕迹影响大吗
  • php单例模式demo
  • 什么是跨域以及跨境电商
  • csdn创作激励
  • java如何解析json字符串
  • 联营单位投入的资金属于资产吗
  • 支付宝是商品吗
  • js方案
  • js异步方式有哪些
  • 公司员工私车公用协议
  • 管理费用的核算内容主要包括哪些
  • 去年的滞纳金没有入账怎么处理
  • 上期金额是属于负债吗
  • 公司股东的权利和义务有哪些
  • 资产负债表的其他应收款怎么算出来的
  • 单位举办活动
  • 财政应返还额度账务处理
  • 增值税普通发票和专用发票有什么区别
  • 预收款开发票,不确认收入可以吗?
  • 固定资产3%减按2%征收增值税申报表如何填写
  • 预收账款和预付账款都属于负债类科目
  • 发工资摘要没写工资
  • 暂估成本以后也没有票回来了
  • 税收会计采用什么记账法
  • vista桌面为什么不能登陆
  • debian 安装
  • win7系统设置只让安装有证书的软件
  • linux 硬盘满了
  • 2015年win10共发布135个安全补丁 创历年之最
  • win8 系统恢复
  • win10系统最新更新
  • [置顶] 《精神怪谈》 后续起点
  • Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社
  • 安卓 图形api
  • css颜色值正确的表达形式
  • 模仿文明
  • javascript 基础篇2 数据类型,语句,函数
  • jquery类型转换
  • jQuery ajax请求返回list数据动态生成input标签,并把list数据赋值到input标签
  • JavaScript中定义数组
  • java多线程编程实战指南
  • 最多跑一次改革是谁提出来的
  • 中华人民共和国成立于1949年10月1日到今年是多少周年
  • 宁波税务局qzzn
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设