当前位置: 首页 > news >正文

一个简单封装的的nodejs缓存对象

我们在日常编码中,经常会用到缓存,而一个有效的缓存管理,也是大家必不可少的工具。而nodejs没有内置专用的缓存对象,并且由于js的作用域链的原因,很多变量使用起来容易出错,如果用一个通用的缓存管理起来,会方便很多,于是就手写了一个简单的nodejs缓存对象,并且可以指定变量保存时间。代码如下:

exports.cache = (function(){function MyCatch(isClear){var __cache = {};var __clearable = !!isClear;this.set = function(name, value, expireTime){            __cache['key_' + name] = {expire: expireTime || 36000000, // 默认有效时间10小时, 36000000expTime: (new Date()).getTime() + (expireTime || 36000000),data: value};}this.get = function(name) {var che = __cache['key_' + name];if(che && __clearable){var now = (new Date()).getTime();if(che.expTime < now ){delete __cache['key_' + name];che = null;}else{che.expTime = now + che.expire;}}return che}this.del = function(name) {delete __cache['key_' + name];}}return new MyCatch(true);
})();

这个版本的缓存对象,是在用户取对象时,判断是否过期并消除过期对象。还有一个版本,采用setInterval方法自动消除过期对象,代码如下:

exports.cache = (function(){function MyCatch(isClear){var __cache = {};this.set = function(name, value, expireTime){__cache[name] = {expire: expireTime || 900000, // 默认有效时间15分钟, 900000毫秒expTime: parseInt((new Date()).getTime() / 1000, 10) + (expireTime || 900000),data: value};}this.get = function(name) {var cache_value = __cache[name];__cache[name] && (cache_value.expTime = parseInt((new Date()).getTime() / 1000, 10) + cache_value.expire);return cache_value}this.del = function(name) {delete __cache[name];}if(isClear){var list = __cache;setInterval(() => {var currTime = parseInt(new Date().getTime / 1000, 10);for(var key in list){var che = list[key];// if(che.expTime == 0){continue;}if(che.expTime < currTime ){delete __cache[key];}}}, 10000);}}return new MyCatch(true);
})();

两种方法各有优缺点,大家可以根据个人喜好选择使用,或根据自己意愿修改。

相关文章:

一个简单封装的的nodejs缓存对象

我们在日常编码中&#xff0c;经常会用到缓存&#xff0c;而一个有效的缓存管理&#xff0c;也是大家必不可少的工具。而nodejs没有内置专用的缓存对象&#xff0c;并且由于js的作用域链的原因&#xff0c;很多变量使用起来容易出错&#xff0c;如果用一个通用的缓存管理起来&a…...

【ELK】filebeat采集数据输出到kafka指定topic

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 背景filebeat主体配置filebeat.inputs部分filebeat.output部分 filebeat完整配置 背景 今天收到需求&#xff0c;生产环境中通需要优化filebeat的输出&#xff0c;…...

Qt 6 QML Settings location 不创建指定路径文件

在 Qt QML 项目中可以使用Qt QSettings QML 版 Settings 方便数据持久化&#xff0c;具体使用可以参考Qt 文档&#xff0c;这里主要简单记录一下从Qt 5 升级到 Qt 6 后&#xff0c;没有创建指定的文件。在Qt 5中是使用 fileName 属性来指定文件路径&#xff0c;如下&#xff0…...

LabVIEW如何学习FPGA开发

FPGA&#xff08;现场可编程门阵列&#xff09;开发因其高性能、低延迟的特点&#xff0c;在实时控制和高速数据处理领域具有重要地位。LabVIEW FPGA模块为开发者提供了一个图形化编程平台&#xff0c;降低了FPGA开发的门槛。本篇文章将详细介绍LabVIEW FPGA开发的学习路径&…...

idea设置控制台日志输出自动换行

文章目录 1. 原因2. 方法一&#xff1a;3. 方法二&#xff1a; 1. 原因 你是否碰到ideal控制台输入日志是一行的效果&#xff0c;那是因为带了soft wrap。 2. 方法一&#xff1a; 最新版的IDEA设置控制台自动换行位置如下&#xff1a; Setting->Editor->General->C…...

帧缓存的分配

帧缓存实际上就是一块内存。在 Android 系统中分配与回收帧缓存&#xff0c;使用的是一个叫 ION 的内核模块&#xff0c;App 使用 ioctl 系统调用后&#xff0c;会在内核内存中分配一块符合要求的内存&#xff0c;用户态会拿到一个 fd&#xff08;有的地方也称之为 handle&…...

Spitfire浏览器:为CodiggerDesktop打造的轻量级浏览新选择

近期&#xff0c;一款名为Spitfire的专业级轻量级浏览器凭借其卓越的性能和便捷的使用体验&#xff0c;吸引了科技界的广泛关注。这款浏览器是专为CodiggerDesktop用户量身打造的&#xff0c;旨在提供高速、流畅的浏览服务&#xff0c;满足开发者和设计者的多元化需求。 Spitfi…...

etcd+京东hotkey探测使用

qhotKey链接 京东hotkey把热点数据默认缓存在了本地缓存caffeine中&#xff0c;也可以存到redis中&#xff0c;但是京东hotkey的SDK没有redis的实现方法&#xff0c;因此需要自己实现。 官方目录结构下&#xff1a;分别是client客户端&#xff08;要打包引入到自己的项目&…...

从源码分析swift GCD_DispatchGroup

前言&#xff1a; 最近在写需求的时候用到了DispatchGroup&#xff0c;一直没有深入去学习&#xff0c;既然遇到了那么就总结下吧。。。。 基本介绍&#xff1a; 任务组&#xff08;DispatchGroup&#xff09; DispatchGroup 可以将多个任务组合在一起并且监听它们的完成状态。…...

【最后203篇系列】002 - 两个小坑(容器时间错误和kafka模块报错

这里两个小坑填了&#xff0c;希望有用。 1 Multiple conflicting time zone configurations found:\n/etc/timezone: Asia/Shanghai\n/etc/localtime is a symlink to: Etc/UTC\nFix the configuration, or set the time zone in a TZ environment variable. 我碰到这个错误…...

StarRocks 生产部署一套集群,存储空间如何规划?

背景&#xff1a;StarRocks 3.2&#xff0c;存储一体 使用场景&#xff1a;多分析、小查询多单但不高、数据量几百T FE 存储 由于 FE 节点仅在其存储中维护 StarRocks 的元数据&#xff0c;因此在大多数场景下&#xff0c;每个 FE 节点只需要 100 GB 的 HDD 存储&#xff0c…...

WebGL 项目外包开发流程

WebGL 项目外包开发流程与一般的软件项目外包流程类似&#xff0c;但由于 WebGL 的特殊性&#xff0c;在某些环节需要特别注意。以下是一个详细的 WebGL 项目外包开发流程。 1. 需求分析与定义 (明确目标是关键)&#xff1a; 客户沟通与需求收集&#xff1a; 与客户进行深入沟…...

SQLMAP

Taeget 实践内容&#xff1a;练习使用 SQLMap 进行自动化 SQL 注入。 涉及知识点&#xff1a;理解 SQL 注入、SQLMap 工具使用、自动化攻击、Web 应用安全。 Trial 说明&#xff1a;Sqlmap是一个开源的渗透测试工具&#xff0c;可以自动检测和利用SQL注入漏洞&#xff0c;并…...

windwos defender实现白名单效果(除了指定应用或端口其它一律禁止)禁止服务器上网

一、应用场景说明 当我们的一台windows服务器中毒&#xff0c;变成别人肉鸡&#xff0c;不断向外请示非法网站或攻击其它服务器。 要彻底清除相关木马或病毒往往需要的时间比较长&#xff0c;比较有效的方法是禁止服务器主动向外发包除了网站端口和远程程序除外。 其实这就是一…...

模型库网站

目录 1 网站 1 网站 https://hf-mirror.com/ https://swanhub.co/models https://modelscope.cn/models https://www.suanjiayun.com/mirror?sourcebaidutg&bd_vid11787806978655223592...

5、栈应用-表达式求值

本章内容使用上述栈结构函数&#xff0c;来完成表达式求值操作。 表达式例如&#xff1a;3*(7-2) 或者 (0-12)*((5-3)*32)/(22) 。 1、实现思路 a、建立OPTR&#xff08;运算符&#xff09;和OPND&#xff08;数字&#xff09;两个栈&#xff0c;后输入字符串以结束 b、自左向…...

传统CV算法——基于opencv的答题卡识别判卷系统

基于OpenCV的答题卡识别系统&#xff0c;其主要功能是自动读取并评分答题卡上的选择题答案。系统通过图像处理和计算机视觉技术&#xff0c;自动化地完成了从读取图像到输出成绩的整个流程。下面是该系统的主要步骤和实现细节的概述&#xff1a; 1. 导入必要的库 系统首先导入…...

重温设计模式--原型模式

文章目录 原型模式定义原型模式UML图优点缺点使用场景C 代码示例深拷贝、浅拷贝 原型模式定义 用原型实例指定创建对象的种类&#xff0c;并且通过拷贝这些原型创建新的对象&#xff1b; 核心中的核心就是 克隆clone ,后面讲 原型模式是一种创建型设计模式&#xff0c;它的主要…...

STM32在bootloader跳转到application时设置MSP

1. 简介 在做bootloader 跳转到application时&#xff0c;经常会看到设置MSP的操作__set_MSP(*(__IO uint32_t*) APPLICATION_ENTRY);。 1.1 MSP的作用 在STM32微控制器中&#xff0c;MSP&#xff08;Main Stack Pointer&#xff0c;主堆栈指针&#xff09;是一个非常重要的…...

SDMTSP:黑翅鸢算法(Black-winged kite algorithm,BKA)求解单仓库多旅行商问题,可以更改数据集和起点(MATLAB代码)

一、黑翅鸢算法BKA 黑翅鸢算法&#xff08;Black-winged kite algorithm&#xff0c;BKA&#xff09;由Wang Jun等人于2024年提出&#xff0c;该算法受黑翅鸢的迁徙和掠食行为启发而得。BKA集成了柯西突变策略和领导者策略&#xff0c;增强了算法的全局搜索能力&#xff0c;提…...

我们来学mysql -- 区分大写

区分大写 题记大小写不敏感文件文件系统大小写敏感文件文件系统mysql认不认大小写lower_case_table_names 题记 混沌初开&#xff0c;万物共享盛世&#xff0c;自由自在好不快活然&#xff0c;人性难掩&#xff0c;初露獠牙&#xff0c;喊杀一片&#xff0c;好不热闹族群&…...

显示器“刷新率”的通俗理解

显示器刷新率的定义 显示器的刷新率&#xff08;Refresh Rate&#xff09;是指屏幕每秒刷新图像的次数&#xff0c;以赫兹&#xff08;Hz&#xff09;为单位。比如&#xff0c;刷新率为 60Hz 表示屏幕每秒能够刷新 60 次图像。 刷新率是显示器硬件特性的一部分&#xff0c;定…...

25计软新增考研院校!或可捡漏上岸!

C哥专业提供——计软考研院校选择分析专业课备考指南规划 新增的计算机与软件工程考研院校为考研同学带来了多方面的机遇&#xff0c;这些机遇不仅体现在过国家线后可能面临的更低竞争压力&#xff0c;还包括更多元化的教育选择和更广阔的就业前景&#xff1a; 一、降低竞争压…...

[入门JAVA数据结构 JAVADS] 哈希表的初步介绍和代码实现

目录 前言 哈希表的概念和诞生的原因 哈希冲突 简单实现哈希表 基本属性 插入 获取key的val 计算负载因子 扩容(难点) 完整代码(方便大家复制自己去调试) 数据是int的 使用泛型实现的 结尾 前言 笔者鸽了接近两个月后决定"勤政"了.尽力把学过的知识写下…...

谷歌外链好不好,关键看“搭配”!

做SEO的人都知道外链很重要&#xff0c;但有一个误区是只追求“高质量外链”&#xff0c;却忽略了外链结构的合理性。其实&#xff0c;外链就像饮食&#xff0c;光吃好东西不够&#xff0c;营养搭配得当才能健康发展。 谷歌对外链的要求&#xff0c;不仅是看它是不是dofollow、…...

【AI驱动的数据结构:包装类的艺术与科学】

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​&#x1f4ab;个人格言:“没有罗马,那就自己创造罗马~” 文章目录 包装类装箱和拆箱阿里巴巴面试题 包装类 在Java中基本数据类型不是继承来自Object&#xff0c;为了…...

ElasticSearch 的核心功能

要深入理解 ElasticSearch 的核心功能&#xff0c;需要全面掌握其 全文搜索、分析、聚合 和 索引生命周期管理&#xff08;ILM&#xff09; 的设计原理和实际应用。 1. 全文搜索 ElasticSearch 的全文搜索是其核心功能之一&#xff0c;依赖于倒排索引和强大的分词、相关性评分…...

任务2 配置防火墙firewalld

基本概念 概述 支持动态更新防火墙规则 不重启即可创建、修改和删除规则 使用区域和服务来简化防火墙配置 区域 一组预定义的规则&#xff0c;防火墙策略集合&#xff08;或策略模板&#xff09; 把网络分配到不同的区域中&#xff0c;并为网络及其关联的网络接口或流量源…...

PHP入门到高级 -- 学习基础语法和概念

学习PHP的基础语法和概念是成为一名高级PHP开发者的关键。以下是一个逐步学习PHP并逐渐深入了解其高级特性的指南。 学习基础语法&#xff1a; 变量和数据类型&#xff1a;了解如何声明和使用变量&#xff0c;以及PHP支持的不同数据类型。运算符&#xff1a;掌握算术&#xf…...

MKS SERVO42E57E 闭环步进电机_系列5 串口(RS485)通讯示例

第1部分 产品介绍 MKS SERVO42E/57E 闭环步进电机是创客基地为满足市场需求&#xff0c;按工业级标准自主研发的一款产品。具备脉冲接口、RS485接口以及CAN接口&#xff0c;内置高效FOC矢量算法&#xff0c;采用高精度编码器&#xff0c;通过位置反馈&#xff0c;有效防止电机…...

自然语言编写的prompt为啥比不上编程语言prompt高效?

为什么会这样&#xff1f;从底层逻辑开始分析 这个问题本质上是在比较两种完全不同的"语言系统"。 就像去一家餐厅点菜&#xff0c;你可以说"我想来一份不太咸、稍微辣一点的宫保鸡丁"&#xff08;自然语言&#xff09;&#xff0c;也可以直接在平板上点…...

C#—LINQ详解及汇总

LINQ详解及汇总 LINQ&#xff08;Language Integrated Query&#xff09;是微软的一项技术&#xff0c;允许开发者以一种简洁的方式查询和操作数据&#xff0c;支持多种数据源&#xff0c;包括对象、数据库、XML和数据集。LINQ定义了约40个查询操作符&#xff0c;如select、fr…...

WebGAL 项目下载及安装教程

WebGAL 项目下载及安装教程 WebGAL A brand new web Visual Novel engine | 全新的网页端视觉小说引擎 [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/web/WebGAL 1、项目介绍 WebGAL 是一个全新的网页端视觉小说引擎&#xff0c;旨在提供美观、功能强大且易于…...

虚幻引擎游戏开发系列专题-官方编码标准或规约

遵守既定标准和最佳实践来编写可维护的代码。在虚幻游戏引擎中,存在着一些既定的编码标准和约定 ,养成良好的编码规范是写好一份优雅代码的第一步,并且在虚幻官方也强调了,某些编码标准的遵循是强制性的。 编码规约对程序员来说意味着什么 在软件开发中,软件生命周期的80%的成…...

n阶Legendre多项式正交性的证明

前言 在《n次Legendre(勒让德)多项式在区间(-1, 1)上根的分布及证明》这篇文章中&#xff0c;我们阐述了Legendre多项式在 [ − 1 , 1 ] [-1,1] [−1,1]上的根分布情况并给出了证明。本文将证明Legendre多项式在 [ − 1 , 1 ] [-1,1] [−1,1]上的正交性质。 正交多项式的定义…...

初学stm32 --- PWM输出

目录 STM32 PWM工作过程​编辑 STM32 PWM工作过程&#xff08;通道1为例&#xff09; PWM模式1 & PWM模式2 向上计数配置说明​编辑 STM32 定时器3输出通道引脚 自动重载的预装载寄存器 ​编辑 PWM输出相关库函数 输出比较初始化函数&#xff1a; 设置比较值函数&a…...

Git:查看分支、创建分支、合并分支

一、查看分支 查看的git命令如下&#xff1a; git branch # 列出本地已经存在的分支&#xff0c;并且当前分支会用*标记 git branch -r # 查看远程版本库的分支列表 git branch -a # 查看所有分支列表&#xff08;包括本地和远程&#xff0c;remotes/开头的表示远程分支&…...

爬虫学习案例8

爬取京东评论信息 采用DrissionPage自动化工具采集&#xff0c;感觉比Selenium工具好&#xff0c;真香。 安装第三方库 pip install DrissionPage pip install pandas pip install pyecharts pip install jieba pip install wordcloud1.安装DrissionPage库 DrissionPage安装…...

git 提交代码无法连接:Failed to connect to github.com port 443 after 21060 ms

项目场景&#xff1a; 在能够访问github仓库的情况下&#xff0c;生成本地代码并提交到github上时会遇到提交不成功的问题&#xff0c;如下&#xff1a; fatal: unable to access ‘https://github.com/Pitt-ding/opc_comm.git/’: Failed to connect to github.com port 443 …...

麒麟系统修改配置镜像源地址并安装openGL

1.编辑文件/etc/apt/sources.list 进入目录 cd /etc/apt/ 编辑文件&#xff08;需要root权限&#xff09; sudo vi sources.list 将镜像地址改为你指定的镜像地址 #deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1 main restricted universe mul tiverse #deb http:…...

如何使用Navigator实现导航功能

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Widget的State,本章回中将介绍Route和Navigator,闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 到目前为止,我们介绍的内容都在一个页面中,本章回中将介绍中在Flutter中如何进行页面切换,这里说的页面切…...

MyBatis-Plus分页拦截器,源码的重构(重构total总数的计算逻辑)

1.1创建ThreadLocal工具类&#xff08;作为业务逻辑结果存放类&#xff09; package org.springblade.sample.utils;public class QueryContext {private static final ThreadLocal<Long> totalInThreadLocal new ThreadLocal<>();public static void setTotalIn…...

Jmeter对图片验证码的处理【超详细】

Jmeter对图片验证码的处理 在web端的登录接口经常会有图片验证码的输入&#xff0c;而且每次登录时图片验证码都是随机的&#xff1b;当通过jmeter做接口登录的时候要对图片验证码进行识别出图片中的字段&#xff0c;然后再登录接口中使用&#xff1b; 通过jmeter对图片验证码…...

匈牙利算法

匈牙利算法 1 概念2 依据3 目的4步骤5 案例6 测试 1 概念 匈牙利算法基于代价矩阵找到最小代价的分配方法&#xff0c;是解决分配问题中最优匹配(最小代价)的算法。 2 依据 代价矩阵的行或列同时加或减一个数&#xff0c;得到新的代价矩阵的最优匹配与原代价矩阵相同。 3 目…...

nginx学习总结(不包含安装过程)

1. nginx常见配置 http服务上支持【若干虚拟主机】。每个虚拟主机对应一个server配置项&#xff0c;配置项里面包含该虚拟主机相关的配置。 server{listen 80 default;server_name www.yonqin.com;index index.html index.htm index.php;root /data/www;location ~ .*\.(gif|…...

Android10 rk3399 以太网接入流程分析

Netd守护进程服务 Netd模块是Android中专门负责网络管理和控制的后台守护进程开发板路径./etc/init/netd.rc service netd /system/bin/netdclass mainsocket dnsproxyd stream 0660 root inetsocket mdns stream 0660 root systemsocket fwmarkd stream 0660 root inetonres…...

HTML与数据抓取:GET与POST方法详解

讲GET和POST就不能只讲GET和POST 你要讲HTTP请求的基本概念&#xff1a; HTTP&#xff08;HyperText Transfer Protocol&#xff0c;超文本传输协议&#xff09;是互联网上应用最为广泛的一种网络协议&#xff0c;主要用于Web浏览器与Web服务器之间的数据通信。HTTP是一个基于…...

DG常用启动方法与异常查找

--查看主库的状态&#xff1a; select a.inst_id,a.db_unique_name,a.database_role, a.protection_level,a.protection_mode,a.open_mode,a.log_mode,a.switchover_status, b.host_name,b.thread# from gv$database a left join gv$instance b on a.inst_idb.inst_id order by…...

C++ OpenGL学习笔记(4、绘制贴图纹理)

相关链接&#xff1a; C OpenGL学习笔记&#xff08;1、Hello World空窗口程序&#xff09; C OpenGL学习笔记&#xff08;2、绘制橙色三角形绘制、绿色随时间变化的三角形绘制&#xff09; C OpenGL学习笔记&#xff08;3、绘制彩色三角形、绘制彩色矩形&#xff09; 通过前面…...

以二进制形式创建gitea仓库

1、官方文档&#xff1a; 数据库准备 | Gitea Documentation 使用二进制文件安装 | Gitea Documentation 2、具体操作 1&#xff09;创建gitea数据库 2&#xff09;检查是否安装 Git。要求 Git 版本 > 2.0。 如需升级git请参考以下链接&#xff1a;linux升级git版本-C…...