分享一个java Map实现的cache manager,定时清除缓存起来的值

Spring Cache缓存失效时间(TTL)配置全解析:Redis与Caffeine实战指南 缓存是提升应用性能、降低数据库负载的核心技术,其核心原理是将高频访问的数据暂存于高速存储中,实现快速响应。缓存失效时间(TTL)是控制数据一致性与新鲜度的关键技术参数,直接影响系统的稳定性和用户体验。在Java生态中,Spring Cache作为主流的缓存抽象层,为开发者提供了统一的编程模型,但其默认的TTL行为往往隐藏着数据不一致或内存溢出的风险。本文聚焦于Spring Cache与主流缓存实现(Redis、Caffeine)的深度集成,详细阐述如何针对不同业务场景,精细化配置缓存失效时间,有效应对缓存雪 阅读详情

原文:分享一个java Map实现的cache manager,定时清除缓存起来的值

源代码下载地址:http://www.zuidaima.com/share/1550463676140544.htm

用来存储短暂对象的缓存类,实现Map接口,内部有一个定时器用来清除过期(30秒)的对象。 为避免创建过多线程,没有特殊要求请使用getDefault()方法来获取本类的实例。

package com.zuidaima.modules.common.util;

import java.util.AbstractMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

/**
 * 用来存储短暂对象的缓存类,实现Map接口,内部有一个定时器用来清除过期(30秒)的对象。
 * 为避免创建过多线程,没有特殊要求请使用getDefault()方法来获取本类的实例。
 * @author www.zuidaima.com
 * @param <K>
 * @param <V>
 */

public class CacheMap<K, V> extends AbstractMap<K, V> {

	private static final long DEFAULT_TIMEOUT = 30000;
	private static CacheMap<Object, Object> defaultInstance;

	public static synchronized final CacheMap<Object, Object> getDefault() {
		if (defaultInstance == null) {
			defaultInstance = new CacheMap<Object, Object>(DEFAULT_TIMEOUT);
		}
		return defaultInstance;
	}

	private class CacheEntry implements Entry<K, V> {
		long time;
		V value;
		K key;

		CacheEntry(K key, V value) {
			super();
			this.value = value;
			this.key = key;
			this.time = System.currentTimeMillis();
		}

		@Override
		public K getKey() {
			return key;
		}

		@Override
		public V getValue() {
			return value;
		}

		@Override
		public V setValue(V value) {
			return this.value = value;
		}
	}

	private class ClearThread extends Thread {
		ClearThread() {
			setName("clear cache thread");
		}

		public void run() {
			while (true) {
				try {
					long now = System.currentTimeMillis();
					Object[] keys = map.keySet().toArray();
					for (Object key : keys) {
						CacheEntry entry = map.get(key);
						if (now - entry.time >= cacheTimeout) {
							synchronized (map) {
								map.remove(key);
							}
						}
					}
					Thread.sleep(cacheTimeout);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
	}

	private long cacheTimeout;
	private Map<K, CacheEntry> map = new HashMap<K, CacheEntry>();

	public CacheMap(long timeout) {
		this.cacheTimeout = timeout;
		new ClearThread().start();
	}

	@Override
	public Set<Entry<K, V>> entrySet() {
		Set<Entry<K, V>> entrySet = new HashSet<Map.Entry<K, V>>();
		Set<Entry<K, CacheEntry>> wrapEntrySet = map.entrySet();
		for (Entry<K, CacheEntry> entry : wrapEntrySet) {
			entrySet.add(entry.getValue());
		}
		return entrySet;
	}

	@Override
	public V get(Object key) {
		CacheEntry entry = map.get(key);
		return entry == null ? null : entry.value;
	}

	@Override
	public V put(K key, V value) {
		CacheEntry entry = new CacheEntry(key, value);
		synchronized (map) {
			map.put(key, entry);
		}
		return value;
	}

}
Spring Boot Redis客户端选型指南:Jedis、Lettuce、RedisTemplate与Redisson实战解析 在分布式系统和高并发应用中,缓存是提升性能、降低数据库负载的核心技术。其原理是将热点数据存储在内存中,通过键值对提供高速访问,从而减少对后端持久化存储的I/O压力。Redis作为高性能的内存数据存储,凭借其丰富的数据结构和原子操作,成为实现分布式缓存、会话共享和分布式协调的关键组件。在Java生态中,Spring Boot通过集成多种Redis客户端,为开发者提供了灵活的选择。Jedis作为老牌同步阻塞客户端,适合简单场景;Lettuce基于Netty实现了非阻塞I/O和响应式编程,是高并发场景的默认选择; 阅读详情

相关推荐

L1TF漏洞深度解析:CPU推测执行与多租户隔离失效原理

L1TF(一级终端故障)是源于现代CPU推测执行机制与内存隔离设计冲突的硬件级安全缺陷,本质属于微架构侧信道漏洞。其核心原理在于:处理器在分支预测过程中会越权加载本不可访问的物理内存至L1数据缓存,且回滚时不清理该缓存行,从而为缓存计时侧信道攻击提供数据残留基础。该漏洞直接瓦解进程隔离、虚拟机隔离及SGX可信执行环境三大安全基石,对云平台、容器、WSL2等multi-tenant(多租户)场景构成系统性威胁。技术价值体现在揭示了性能优化与安全隔离的根本张力;典型应用场景涵盖公有云租户间密钥窃取、虚拟机逃逸、

weixin_30268071的博客 346

Java 定时删除map中的元素

在项目开发过程中,遇到需要在高并发情况下往map中插入数据,等数据被利用完成后,留在map中没有什么用处了,就需要定时将map中的元素删除

记录工作开发中遇到的技术难点,方便自己查看,也希望可以帮助到他人... 1262

熵码匠艺:用可测量指标对抗软件系统熵增

软件熵是描述系统结构无序度的技术概念,它不同于显性Bug,而是隐性累积的维护成本根源;其本质源于模糊命名、隐藏依赖、契约漂移等结构性失序。理解熵增原理有助于识别代码腐化早期信号,提升系统长期可演进性与团队认知效率。技术价值在于将抽象的‘代码健康度’转化为变更影响半径(CIR)、认知负荷密度(CLD)等可采集、可干预的量化指标,支撑架构决策与工程纪律落地。典型应用场景包括遗留系统渐进式重构、高并发业务模块稳定性治理、以及研发效能平台的质量门禁设计——本文即围绕这四大核心熵指标展开实践体系构建。

weixin_40192258的博客 545

定时删除Map中的元素 -- Map中的元素自动过期

不会写博客,就简介绍一下吧。主要功能是定时删除Map中的元素,类似于redis中的get和set,是增强型HashMap,在put时可为每个KEY增加一个过期时间,如果没有设置过期时间那这个key是永久的,忙写的没经过测试,如果有问题请自行解决,谢谢! import java.util.HashMap; import java.util.Map; import java.util.Timer;...

尽量致力于发表微服务、中间件和算法等原创作品。 9207

企业级AI编排:MuleSoft与LangChain协同架构实践

AI编排是企业将大语言模型安全、可靠、可控地融入核心业务的关键技术范式,其本质是在不确定性的AI推理与确定性的企业IT治理之间构建可审计、可伸缩、可治理的数据-智能协同链路。它既不是单纯调用LLM API,也不是传统ESB的简单升级,而是融合数据接入、AI执行与服务交付的分层工程体系。关键技术价值在于解决数据孤岛导致的‘幻觉’风险、API结构漂移引发的集成断裂,以及GDPR等合规要求下的动态脱敏与血缘追溯。典型应用场景覆盖销售智能助手、供应链风险预警、合规审计、知识图谱构建与动态定价等生产级系统。本文以Mu

weixin_30251829的博客 425

拼多多Android面试题及参考答案

Android 系统采用分层架构设计,从底层到上层依次为Linux 内核层硬件抽象层(HAL)系统运行时库层应用框架层应用层,共五层。位置:Linux 内核层与系统运行时库层之间,是“硬件与系统的隔离层”。核心作用:屏蔽硬件差异,为上层提供统一的硬件访问接口,解决 Android 开源与硬件厂商闭源的矛盾,具体功能如下:硬件能力抽象:将硬件的具体实现(如不同厂商的摄像头芯片、音频芯片)封装为标准化接口(如Camera HALAudio HAL。

大模型大数据攻城狮的专栏 1285

JAVA实现HASHMAP缓存 并定时清理

背景:需要记录小程序用户登陆的sessionid并与其openid关联,定时清除 核心代码实现 总体思路:使用ConcurrentHashMap去存缓存的对象,PriorityBlockingQueue去优化弹出(定时移除,按失效时间排序),ScheduledExecutorService去定期执行移除,初始化时调用单例对象的initial()方法 import java.text.Decima...

weixin_38689747的博客 9319

【信息科学与工程学】计算机科学与自动化-——第十五篇云计算 12 公有云里的“多Region + 多AZ“ 02 运营算法01

算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)算法逐步思考推理思考(含数学方程式、对象、资源、任务、进程/协程/线程及对应的代数、约束、目标函数/传递函数/依赖函数、参数及参数的数值范围及边界条件、逐步推理的数学方程式列表、上下文切换、并发/串行/随机/乱序/顺序)云厂商提高闲置资源利用率。算法复杂度为O(N),N为实例数量。

weixin_49199313的博客 283

java 监听map的数据_使用监听器:定时清除map缓存的key value .

使用监听器:定时清除map缓存的key value .配置web.xml:注意位置com.my.common.listener.TimerListener监听类:public class TimerListener implements ServletContextListener{public void contextDestroyed(ServletContextEvent event){//...

weixin_35160622的博客 830

java Map实现的cache manager,定时清除缓存里面的值

java Map实现的cache manager,定时清除缓存里面的值,使数据一致保持最新

NCBI Datasets CLI优化:解决基因组数据下载报错与速度问题

基因组数据下载是生物信息学分析的关键环节,其稳定性和效率直接影响研究进度。NCBI Datasets CLI作为官方命令行工具,常面临连接中断和下载速度慢两大痛点,这主要源于服务器连接限制和网络传输问题。通过自动重试机制和校验修复流程可提升稳定性,而连接复用与CDN加速等技术能显著提高下载效率。在植物基因组等大规模数据场景中,结合脱水模式和增量更新策略可减少70%传输量。本文以艾草基因组项目为例,展示如何通过并行下载和API优化将100个基因组的下载时间从18小时缩短至2小时,为生物信息学研究提供可靠的数据

weixin_29051245的博客 243

java map 定时_分享一个java Map实现的cache manager,定时清除缓存起来的值

用来存储短暂对象的缓存类,实现Map接口,内部有一个定时器用来清除过期(30秒)的对象。 为避免创建过多线程,没有特殊要求请使用getDefault()方法来获取本类的实例。package com.zuidaima.modules.common.util;import java.util.AbstractMap;import java.util.HashMap;import java.util.H...

weixin_35934037的博客 463

《最游记》游戏开发全栈指南:从源码解析到实战部署

本文提供了一份详尽的《最游记》游戏源码全栈开发指南。文章深入解析了这款3D玄幻网游的完整源码结构,涵盖客户端、服务端、引擎和工具链,并提供了从环境搭建、核心模块解析到实战修改与部署的完整流程。对于希望深入理解MMORPG架构的开发者而言,这份指南是宝贵的实战资源。

weixin_28363123的博客 74

java map 定时清理_分享一个java Map实现的cache manager,定时清除缓存起来的值 | 学步园...

用来存储短暂对象的缓存类,实现Map接口,内部有一个定时器用来清除过期(30秒)的对象。 为避免创建过多线程,没有特殊要求请使用getDefault()方法来获取本类的实例。package com.zuidaima.modules.common.util;import java.util.AbstractMap;import java.util.HashMap;import java.util.H...

weixin_33462167的博客 1696

spoon工具的常用基础操作

先创建一个作业,这个作业流程,包括进行设置变量转换,查询结果输出转换,方便后续循环。整个流程写完后,执行作业5_执行整个流程,成功后,可以在数据库查看结果。,新建一个转换,excel表输入然后复制记录到结果,保存转换文件。这三个用户下 都有一张emp表 分别是 三个部门的用户信息。,新建一个数据库连接,变量命名用户名和密码。成功执行后,可以到保存的excel位置进行查看。emp表输入,可以进行预览查看数据有没有过来。输出到一直excel表,运行结果输出。,新建一个转换,拖拽。

qq_43583887的博客 5831

CANoe LIN一致性测试之干扰测试Test moudle_LIN Disturbance Block

注意:相邻两个显隐性不同的bit不允许干扰,例如我同时选择bit6和bit7,相邻两个同显隐性的bit允许干扰,例如当我选择bit3和bit4,项,这里我选择ID:为0x2F(PID:0x6F)的frame。需按照具体测试规范实施干扰项,帧头和数据段都可以实现干扰。最近发现一个干扰测试模块,下面是一些具体使用方法。选择干扰项:PID的奇偶校验位(一致性测试干扰测试之手动测试。一个待测试frameD。

yuanyikangkang的博客 3412

java Map实现的cache manager,定时清除缓存起来的值

文章来源:http://www.aichengxu.com/view/43965 分享一个java Map实现的cache manager,定时清除缓存起来的值,有需要的朋友可以参考下。 原文:分享一个java  Map实现的cache manager,定时清除缓存起来的值 源代码下载地址:http://www.zuidaima.com/sh

Thinking 3478

车载导航GPS欺骗

因此,如果我们能够模拟卫星信号,将模拟的信号通过信号发射装置发送给GPS传感器,那么就有可能实现欺骗GPS传感器获取虚假的位置信息,这种技术即SDR(软件无线电,Software Defined Radio)[2]。究其原因,在不使用时钟模块的条件下,HackRF发送信号的频率可能不十分精准,因此GPS传感器接收到信号之后可能无法正常解析GPS信号,因此时钟信号可能是HackRF进行GPS欺骗的关键。2)HackRF是否使用了时钟模块,时钟模块决定了信号发送频率的精准程度,对实验的成败也是至关重要的。

2503_90751789的博客 1325

Spring Boot健康管理系统:开发者饮食提醒与效率优化方案

健康管理系统是现代软件开发中的重要辅助工具,其核心原理是通过定时任务和数据分析来监控用户行为习惯。在技术实现上,Spring Boot框架提供了完整的解决方案,结合Scheduled定时任务和JPA数据持久化,能够有效构建健康提醒功能。这类系统的技术价值在于提升开发者的工作效率和代码质量,通过规律饮食减少低血糖导致的编码错误。在实际应用场景中,系统可以设置用餐提醒、休息间隔监控等个性化功能。本文基于Spring Boot的健康管理系统设计方案,详细展示了实体类设计、定时任务配置和REST API实现,特别针

weixin_34290631的博客 455

薛定谔虚拟筛选实战:如何用PDB文件快速构建受体格点(避坑指南)

本文提供了薛定谔虚拟筛选实战指南,聚焦于如何从PDB文件快速、精准地构建受体格点。文章详细解析了可变残基的理性处理策略、基于配体尺寸的盒子量化设置方法,并分享了高级约束与排除体积的实战技巧,旨在帮助用户避开常见陷阱,提升虚拟筛选的成功率与效率。

weixin_28419039的博客 254

避坑指南:中国地面气候日值数据集(V3.0)处理中的常见错误与解决方案

本文详细解析了中国地面气候日值数据集(V3.0)处理中的常见错误与解决方案,包括数据清洗、特征值解码、时间序列处理和质量控制等关键步骤。通过Python实战代码示例,帮助研究者高效处理这一包含全国699个气象站多要素日值数据的数据集,避免常见陷阱,提升气候变化研究和农业气象分析的准确性。

xray4的博客 1030

并行分布式框架:Celery、rq、funboost

Celery是一个异步任务的调度工具,也可以叫做 "分布式任务队列(Distributed Task Queue)"。

freeking101的博客 5万+

【网络安全的神秘世界】解决dvwa靶场报错:Illegal mix of collations for operation ‘UNION‘

我的 information_schema 使用的是 utf8_general_ci。请根据您的实际情况调整字符集。这通常意味着在执行 UNION 操作时,不同字符集的数据发生了混合,导致冲突。修改字符集设置后,重启 MySQL 服务以应用更改,再次测试一下发现成功。查看 information_schema 的字符集。修改 DVWA 数据库字符集。

菜鸟小羊的博客 2044

工作中使用到的单词(软件开发)

1.エイリアス   alias 别名 powershell使用 get-help 命令时,会得到与此命令 相关(别名)的命令 2.プロキシ proxy 代 理 3.プロモート   promote 促进,提升   开发的系统新功能上线发布,有时会使用到这个词,比如 STプロモート 还有使用リリース这个词的。比如STリリース。个人认为两者含义相同。 4.見逃し み................................................................

sun0322 6万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

企业级AI编排实战:MuleSoft+LangChain混合架构落地指南

AI编排(AI Orchestration)是连接大语言模型与企业核心系统的关键技术,其本质是解决LLM无法直连ERP、CRM等遗留系统所导致的数据孤岛与合规风险问题。它并非替代传统集成平台,而是通过清晰职责划分——由MuleSoft承担数据主权接管、OAuth2.0鉴权、PII脱敏、事务回滚等企业级确定性任务,由LangChain专注自然语言意图解析、多跳推理链构建与动态提示工程等AI实验性工作——实现安全、可审计、低延迟的AI流水线。该架构已在制造业CRM升级、金融风控中台及医疗SaaS场景中验证,支撑

weixin_30265103的博客 391

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MuleSoft企业级AI编排:LLM集成的协议治理与韧性设计

大语言模型(LLM)作为新一代智能引擎,其真正价值在于融入企业核心业务系统,而非孤立运行。然而,从技术原理看,LLM原生接口与企业异构系统存在协议不兼容、治理不可控、容错能力弱三大断层;其技术价值体现在统一调度、审计合规与故障隔离能力上;典型应用场景包括合同智能审查、销售线索语义路由、ERP异常指令生成等高敏业务。本文聚焦MuleSoft平台如何通过协议适配器、动态模型路由、可信度校验与多级降级机制,构建可生产、可审计、可回滚的AI编排体系,解决‘模型好但上线即崩’这一企业级落地核心痛点。

weixin_33681778的博客 545

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

上一篇: 运用html5画布画随机三角形(有图有真相)
下一篇: Socket编程,简单的类似qq聊天,可以两台电脑互通
springmvc_springdata
博客等级 码龄12年 197粉丝 389原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值