通过对象轮换实现 LRU 缓存结构

文章目录

  • 通过两个对象轮换,按照是否访问实现内容长久保存
  • rollup 的缓存实现
export default function (max) { //max 缓存容量var num, curr, prev;var limit = max || 1;function keep(key, value) {if (++num > limit) {prev = curr; // 超过容量时当前对象变成缓存reset(1);++num;}curr[key] = value;}// 1 是否清空缓存function reset(isPartial) {num = 0;curr = Object.create(null);isPartial || (prev=Object.create(null));}reset();return {clear: reset,has: function (key) {return curr[key] !== void 0 || prev[key] !== void 0;},get: function (key) {var val = curr[key];if (val !== void 0) return val;if ((val=prev[key]) !== void 0) { // 访问到缓存内容,让内容不过期keep(key, val); // 访问提取缓存,减少容量return val;}},set: function (key, value) {if (curr[key] !== void 0) {curr[key] = value;} else {keep(key, value); // 设置新内容,减少容量}}};
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/225162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

什么是供应链安全及其工作原理?

6000公里长的丝绸之路将丝绸、谷物和其他货物从中国运送到帕尔米拉。尽管蒙古治下的和平保护丝绸之路免受海盗、强盗和内部盗窃的侵害,但商人仍然装备精良,并依赖于大型商队旅行和战略性放置的小型堡垒所提供的安全。 为什么供应链安全很重要&#xff1…

AE-制作科技感穿梭隧道

目录 1.新建合成命名为隧道 2.在合成中新建纯色层命名为五边形隧道

代码随想录刷题题Day14

刷题的第十四天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C Day14 任务 ● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404.左叶子之和 1 平衡二叉树 二叉树节点的深度:指从根节…

Unity项目优化案例二

本文地址:https://blog.csdn.net/t163361/article/details/135024136 针对工作中遇到的优化问题,记录一下,给大家优化自己的项目提供一些思路。 公司产品最近正给国内某大型赛事做支撑服务暴露出不少问题。 使用环境 Unity 2021.3.0f1 cpu…

新手HTML和CSS的常见知识点

​​​​ 目录 1.HTML标题标签(到)用于定义网页中的标题,并按照重要性递减排列。例如: 2.HTML段落标签()用于定义网页中的段落。例如: 3.HTML链接标签()用于创建链接…

报错Cannot read property delayMs of null;【Bug已解决-鸿蒙应用开发】

文章目录 项目场景:问题描述原因分析:解决方案:此Bug解决方案总结附录-相关知识鸿蒙应用开发优势鸿蒙操作系统应用场景项目场景: 应用开发时报错: Cannot read property delayMs of null; 分析一下是什么错误原因导致的?下文详细描述 问题描述 相关问题: 应用开发时…

【字节笔试题】大小为n的数组中有多少个连续子数组满足该子数组所有元素的乘积是k的倍数?

题目描述 小红拿到了一个大小为n的数组,他想知道,有多少连续子数组满足,该子数组所有元素的乘积是k的倍数? 输入输出 第一行输入2个整数,分别是数组长度n和参数k 第二行输入n个元素的数组 n有10^5级别 数组元素有1…

2021年数维杯国际大学生数学建模A题新冠肺炎背景下港口资源优化配置策略求解全过程文档及程序

2021年数维杯国际大学生数学建模 A题 新冠肺炎背景下港口资源优化配置策略 原题再现: 2020年初,新型冠状病毒(COVID-19)在全球迅速蔓延。根据世界卫生组织2021年7月31日的报告,新冠病毒疫情对人类的影响可能比原先预…

Tomcat-安装部署(源码包安装)

一、简介 Tomcat 是由 Apache 开发的一个 Servlet 容器,实现了对 Servlet 和 JSP 的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说,Tomcat是一个WEB应用程序的托管平台…

安装升级备份卸载 Grafana

要在 RHEL 或 Fedora 上卸载 Grafana,请按照以下步骤操作: 如果您配置了 Grafana 使用 systemd,请停止 Grafana 服务器的 systemd 服务: sudo systemctl stop grafana-server如果您配置了 Grafana 使用 init.d,请停止 …

【MySQL学习之基础篇】约束

文章目录 1. 概述2. 基础约束3. 外键约束3.1. 介绍3.2. 外键的添加3.3. 外键删除和更新行为 1. 概述 概念: 约束是作用于表中字段上的规则,用于限制存储在表中的数据。     目的: 保证数据库中数据的正确、有效性和完整性。 分类&#x…

Django使用UUID作为主键

Django这个框架,如果你在定义模型时没有显式的指定主键,那么它会贴心的送你一个自增的id主键: class SomeModel(model.Model):# 下面这个 id 字段是不需要写的,django 自动附送# id models.AutoField(primary_keyTrue)... 这个…

BearPi Std 板从入门到放弃 - 先天神魂篇(7)(RT-Thread 定时器-软件定时器)

简介 RT-Thread 软件定时器的简单使用步骤 创建项目 参考 BearPi RT-Thread项目创建 定时器管理接口 定时器时钟节拍 定时器管理相关函数 定时器类型 #define RT_TIMER_FLAG_ONE_SHOT 0x0 //一次性计时器 #define RT_TIMER_FLAG_PERIODIC 0x2 // 周期性定时器 #…

【Docker】ES、Kibana及IK安装配置

目录 一.单节点安装部署 1.版本选择 2.推荐及总结 ​3.官网下载地址 4.创建网络 5.拉取镜像 6.创建文件夹 7.运行docker命令 二、安装kibana 1.安装kibana 2.浏览器访问 3.国际化 三、Elasticsearch查询 1.数据插入:POST或PUT 2.数据查询GET 3.分词…

如何用Adobe Audition 检测波形的pop和卡顿

在Adobe Audition中,检测卡顿和pop的方法各有不同: 1. **检测卡顿**: - 使用“诊断”面板中的“删除静音”或“标记音频”选项可以帮助识别音频中的静音段落,这可能表明存在卡顿。 - 配置诊断设置,指定静音的振…

docker consul容器的自动发现与注册

一、微服务(容器)的注册与发现——微服务架构中极其重要的组件 1、定义:是一种分布式管理系统以及定位服务的方法。传统架构中,应用程序之间直连到已知的服务,设备提供的网络(IP地址)&#xff…

高级前端开发工程师

岗位需求 熟练掌握前端主流框架Vue、React、Angular,至少熟练掌控Vue全家桶 文章目录 岗位需求前言一、Vue框架二、React框架三、Angular框架四、什么是Vue全家桶前言 -那就看你表哥的电脑里有没有硬盘 -我不敲键盘 一、Vue框架 Vue(读音为/vjuː/,类似于"view"…

Linux 内存池源码剖析

1 传统的分配与释放内存的函数缺点: void *malloc(size_t size); void *calloc(size_t nmemb,size_t size);void *realloc(void *ptr, size_t size);void free(void *ptr);缺点1: 高并发时较小内存块使用导致系统调用频繁,降低了系统的执行效率 缺点2: 频繁使用时增加了系统…

【.Net 6.0--通用帮助类--EmailHelper】

前言 邮件帮助类(smtp协议),需要NuGet引用MailKit包,包含了同步发送邮件(SendEmail)、异步发送邮件( SendEmailAsync)方法,由于非企业邮箱每日有发送限额,故代码中支持轮…

(C语言)精确计算程序运行时间的方法

一、先计算每秒多少个计数 typedef __int64 s64;s64 tps; /* timestamp counter per second */s64 get_tps(void) {s64 t0 rdtsc();Sleep(100);return (rdtsc() - t0) * 10; } 这段代码定义了一个函数 get_tps,该函数用于测量处理器的时间戳计数器(RD…