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

  • vivox70怎么设置桌面挂件(vivox70怎么设置定时开关机)

    vivox70怎么设置桌面挂件(vivox70怎么设置定时开关机)

  • 麦当劳怎么预约第二天早餐(麦当劳怎么预约生日派对)

    麦当劳怎么预约第二天早餐(麦当劳怎么预约生日派对)

  • oppo find x2是曲面屏手机吗(oppo find x2 是不是曲面屏)

    oppo find x2是曲面屏手机吗(oppo find x2 是不是曲面屏)

  • 华为nova4e面部解锁怎么设置(华为nova脸部识别解锁)

    华为nova4e面部解锁怎么设置(华为nova脸部识别解锁)

  • 抖音怎么开美颜和滤镜(抖音怎么开美颜视频聊天)

    抖音怎么开美颜和滤镜(抖音怎么开美颜视频聊天)

  • 苹果x触屏校准在哪里(苹果x触屏校准方法)

    苹果x触屏校准在哪里(苹果x触屏校准方法)

  • 腾讯视频微信登录没有二维码(腾讯视频微信登录别人的会员账号)

    腾讯视频微信登录没有二维码(腾讯视频微信登录别人的会员账号)

  • 手机的ot g是什么意思(手机的OTG是什么意思)

    手机的ot g是什么意思(手机的OTG是什么意思)

  • 淘宝自动确认收货时间是什么时候(淘宝自动确认收货时间是几天)

    淘宝自动确认收货时间是什么时候(淘宝自动确认收货时间是几天)

  • 手机号能复制两张卡吗(手机号能复制两个一样的吗)

    手机号能复制两张卡吗(手机号能复制两个一样的吗)

  • 为什么钉钉有的人头像上有小鸡(为什么钉钉有的时候消息不提示)

    为什么钉钉有的人头像上有小鸡(为什么钉钉有的时候消息不提示)

  • 苹果x充电口接触不好怎么办(苹果x充电口接触不灵敏修多少钱)

    苹果x充电口接触不好怎么办(苹果x充电口接触不灵敏修多少钱)

  • 华为同步助手叫什么(华为同步功能)

    华为同步助手叫什么(华为同步功能)

  • 抖音赞评论和赞作品区别(抖音赞和评论哪个重要)

    抖音赞评论和赞作品区别(抖音赞和评论哪个重要)

  • 华为怎么看电池寿命(华为怎么看电池容量)

    华为怎么看电池寿命(华为怎么看电池容量)

  • 微信怎么打开黑暗模式(微信怎么打开黑色背景)

    微信怎么打开黑暗模式(微信怎么打开黑色背景)

  • 快手黄钻能干啥(快手黄钻能干啥用)

    快手黄钻能干啥(快手黄钻能干啥用)

  • 手机qq背景透明度怎么调(手机qq背景透明怎么设置)

    手机qq背景透明度怎么调(手机qq背景透明怎么设置)

  • 大王卡归属地重要吗(大王卡归属地是随机的么)

    大王卡归属地重要吗(大王卡归属地是随机的么)

  • 电脑1080p是什么意思(电脑1080i)

    电脑1080p是什么意思(电脑1080i)

  • 微信头像为什么会抖(微信头像为什么是空白的)

    微信头像为什么会抖(微信头像为什么是空白的)

  • 花呗黄金会员有什么用(支付宝花呗黄金会员什么意思)

    花呗黄金会员有什么用(支付宝花呗黄金会员什么意思)

  • 苹果视频怎么旋转(iphone视频如何旋转)

    苹果视频怎么旋转(iphone视频如何旋转)

  • 流光快门是什么(流光快门是什么意思)

    流光快门是什么(流光快门是什么意思)

  • wps表格怎么删除多余的表格(wps表格怎么删除表格里的文字)

    wps表格怎么删除多余的表格(wps表格怎么删除表格里的文字)

  • 微信小程序开发 app.json全局配置(微信小程序开发零基础入门)

    微信小程序开发 app.json全局配置(微信小程序开发零基础入门)

  • 公司代扣个人所得税有完税凭证明
  • 航空公司能开电动车吗
  • 资产负债表的累计折旧期末数怎么填
  • 用友软件在哪里
  • 财政拨款税收政策
  • 自建厂房出售如何计算所得税
  • 委外研发费用如何开票
  • 应交税费进项税额属于什么科目借贷方向
  • 承包费收入如何做账
  • 冲以前年度暂估
  • 收到投资者购买股票的资金
  • 劳务公司购买材料怎么做账
  • 公司开发票就会报税吗?
  • 促销服务费能抵增值税吗
  • 滞留发票是什么意思
  • 收到福利费专票需要认证吗
  • 政府部门纳税人识别号查询
  • 税务局的网站以后有这些变化是你不知道的!
  • 有产权车位转让需要什么手续和费用
  • 不良品的会计处理方法
  • 在建工程的折旧费计入什么科目
  • 污水处理服务费用交印花税吗
  • 培训费表格
  • 处理固定资产怎么计算
  • 电脑系统还原步骤
  • 民间非盈利组织会计要素组成
  • 发生额对照表
  • 会务费如何入账
  • 上月库存占比怎么算
  • 银行哪些进项税不用抵扣
  • 企业购买银行理财
  • php有啥用
  • 在申报季度企业所得税时,残疾人工资可以加计扣除吗
  • 哥德堡的港口
  • 金融机构借款利率最新规定
  • web服务器的搭建与应用
  • 库存现金月末怎么结转
  • 华为od机试无法测用例
  • 处置固定资产的增值税怎么处理
  • 解压包的命令
  • 长期股权投资初始计量会计科目
  • 小规模增值税减征额怎么算
  • 开基本户一定要法人身份证吗
  • 盈利性学校收到财政补贴要缴企业所得税吗
  • 企业接受捐赠如何开具发票
  • 分公司可以独立开票吗
  • 淘宝电子发票怎么申请
  • 小规模结转成本怎么计算
  • 购买原材料的支出
  • 认缴 实收资本
  • 固定资产核算的内容主要包括
  • 股权转让的实质
  • 补充养老保险和年金
  • 塔吊租赁费用是否包括司机指挥
  • 业务招待费管理草案探讨
  • 企业初建
  • 建账的基本步骤
  • win2000系统
  • ubuntu gz
  • coms恢复出厂设定还原bios设置方法步骤讲解
  • w10桌面
  • 获取mac命令
  • mac电脑怎么安装ie浏览器
  • fedora i3wm
  • 笔记本开机白屏进不了桌面
  • chia 如何双挖
  • xp系统无法停用wifi连接
  • win10预览版好吗
  • win8找不到桌面
  • cocos2dx-3.x(二)、坐标系
  • linux系统搜索文件内容
  • Tcp/ip协议族
  • 2024新车购置税政策
  • 十九届三中全会主题
  • 海关快递怎么上门寄件
  • 达州房管局备案查询系统
  • 重点税源企业税收分析报告
  • 如何发挥人才作为第一资源 护理
  • 上海市信访局官网首页
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设