位置: 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用法)

  • 苹果13背景音怎么关(苹果13背景音怎么设置)

    苹果13背景音怎么关(苹果13背景音怎么设置)

  • 自己充的抖音币怎么提现(自己充的抖音币怎么退款)

    自己充的抖音币怎么提现(自己充的抖音币怎么退款)

  • 电脑视频的时候打开摄像头却没有画面(电脑视频的时候有回声怎么处理)

    电脑视频的时候打开摄像头却没有画面(电脑视频的时候有回声怎么处理)

  • word2007页码怎么设置(word2007页码怎么设置奇偶页不同)

    word2007页码怎么设置(word2007页码怎么设置奇偶页不同)

  • 华为测量工具在哪(华为手机测量工具软件)

    华为测量工具在哪(华为手机测量工具软件)

  • 小米按键音怎么设置(小米按键音怎么换)

    小米按键音怎么设置(小米按键音怎么换)

  • 华为隐私空间占内存吗(华为隐私空间占用主空间的内存吗)

    华为隐私空间占内存吗(华为隐私空间占用主空间的内存吗)

  • web格式是什么意思(web格式是什么意思呀)

    web格式是什么意思(web格式是什么意思呀)

  • a1567是第几代(a1567是苹果几代)

    a1567是第几代(a1567是苹果几代)

  • 微信登录方式有哪些(微信登录的几种方式有什么区别)

    微信登录方式有哪些(微信登录的几种方式有什么区别)

  • 谷歌商店下载不了(谷歌商店下载不了推特)

    谷歌商店下载不了(谷歌商店下载不了推特)

  • 曲面屏贴膜翘边怎么办(曲面屏可以贴钢化膜吗)

    曲面屏贴膜翘边怎么办(曲面屏可以贴钢化膜吗)

  • pdf打印和word一样吗(pdf打印与word打印)

    pdf打印和word一样吗(pdf打印与word打印)

  • 220v是交流电还是直流电(220v是交流电吗?)

    220v是交流电还是直流电(220v是交流电吗?)

  • 电脑转换器是什么东西(电脑转换器什么牌子质量好)

    电脑转换器是什么东西(电脑转换器什么牌子质量好)

  • 手机账号密码在哪里找(手机账号密码在哪里找vivo)

    手机账号密码在哪里找(手机账号密码在哪里找vivo)

  • 多媒体数据的压缩方式(多媒体数据的压缩技术主要分为)

    多媒体数据的压缩方式(多媒体数据的压缩技术主要分为)

  • 荣耀20怎么设置时间24小时(荣耀20怎么设置指纹解锁)

    荣耀20怎么设置时间24小时(荣耀20怎么设置指纹解锁)

  • 手机照片怎么重命名(手机照片怎么重新命名发到qq)

    手机照片怎么重命名(手机照片怎么重新命名发到qq)

  • 如何设置任务栏平铺xp(如何设置任务栏外观)

    如何设置任务栏平铺xp(如何设置任务栏外观)

  • 如何查看自己的第一条朋友圈(如何查看自己的网易邮箱账号)

    如何查看自己的第一条朋友圈(如何查看自己的网易邮箱账号)

  • 日本的iphone11中国能用吗(日本买的苹果11pro手机中国能用吗)

    日本的iphone11中国能用吗(日本买的苹果11pro手机中国能用吗)

  • 快手个人主页收藏在哪(快手个人主页收藏在哪里找)

    快手个人主页收藏在哪(快手个人主页收藏在哪里找)

  • 有哪些凭证
  • 转出未交增值税年末怎么转平
  • 资产负债表不平衡如何查找
  • 餐具报损表格样板
  • 水利基金的计税税率6
  • 法人可以领发票吗现在
  • 出口未报关收到外汇怎样处理
  • 车船税的收据什么样
  • 货代企业都需要交什么税
  • 暂估发票一直未收回
  • 公司过账什么意思
  • 外币折算会计处理例题
  • 个人工资怎么缴纳个人所得税
  • 汇算清缴预提费用调整政策
  • 管理费用现金流量表中属于
  • 营改增后建筑公司账务处理
  • 上年的费用支出包括哪些
  • 银行汇票多余款收账通知怎么做记账凭证
  • 企业名称变更后原名称还能使用吗
  • 房屋租赁交税能补交吗
  • 增值税发票查询
  • 个人证券交易结算资金
  • 展厅设计费用计什么科目
  • 教育预收费
  • 发工资一定要交税吗
  • windows11怎么回到桌面
  • 小规模开普票后怎么报增值税
  • 主营业务收入发票
  • 电梯安装包工头赚多少
  • 预算会计的核算范围
  • wordpress邮箱怎么配置
  • php如何提高程序运行效率
  • 待机最长的手机智能排行榜 2020
  • win7系统把桌面更改为d盘
  • 无形资产出租怎么开具发票
  • 那慕尔省
  • php pdo连接sqlserver
  • react组件库有哪些
  • 单目测距精度
  • js中move
  • 民办非企业开办资金入什么科目
  • 征收率有几种
  • 增值税不超过10万免征
  • 未认证的进项税额会计分录
  • 什么是承兑汇票套现
  • sql server基本
  • db2 select as
  • 营改增企业可以转小规模吗
  • 固定资产拆除怎么处理
  • 进项税额中运输费怎么算
  • 给客户买的礼品要交税吗
  • 日常生活中常见的气质类型包括
  • 实缴出资未注明投资款
  • 收购一家公司需要多少股份
  • 股东投资设备入帐与购买设备入帐的区别
  • 申报表应纳税额和财务账金额不一致可以不改申报表吗
  • 固定资产折旧怎么算
  • 建立mysql
  • 自定义winre
  • ubuntu从u盘安装软件
  • win7系统电脑怎么连接热点
  • WinXP巧用Netsh工具快速填写IP参数
  • windows为什么会成功
  • mac终端好玩的命令
  • 如何理解python语言
  • opengl learning中文
  • 经纬科技it6000
  • javascript如何学
  • js实现物体移动
  • linux系统启动进程命令
  • python编写一个模块
  • android app安全
  • 城乡医保怎么看有没有钱
  • 内蒙古物业费收取标准2020
  • 安徽省国家税务局网上办税平台
  • 地税局上班时间是几点
  • 水库占地怎么缴耕地占用税
  • 发票被暂停了严重吗
  • 地税怎么查个人所得税
  • 目前长沙二手房出售信息
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设