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

ThreadLocal作一个缓存工具类

1、工具类

import java.util.HashMap;
import java.util.Map;public class ThreadLocalUtil {// 使用Map存储多类型数据private static final ThreadLocal<Map<String, Object>> CONTEXT_HOLDER = new ThreadLocal<>();// 存储数据public static void set(String key, Object value) {Map<String, Object> map = CONTEXT_HOLDER.get();if (map == null) {map = new HashMap<>();CONTEXT_HOLDER.set(map);}map.put(key, value);}// 获取数据public static <T> T get(String key, Class<T> clazz) {Map<String, Object> map = CONTEXT_HOLDER.get();if (map == null) return null;return clazz.cast(map.get(key));}// 清理数据public static void remove() {CONTEXT_HOLDER.remove();}}

2、请求结束后清除缓存,防止内存泄露


import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@Component
public class ThreadLocalInterceptor implements HandlerInterceptor {@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {ThreadLocalUtil.remove(); // 请求结束清理数据}}

3、将拦截器添加到Spring Boot当中

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;@Configuration
public class WebConfig implements WebMvcConfigurer {@Autowiredprivate ThreadLocalInterceptor threadLocalInterceptor;@Overridepublic void addInterceptors(InterceptorRegistry registry) {registry.addInterceptor(threadLocalInterceptor);}
}

相关文章:

ThreadLocal作一个缓存工具类

1、工具类 import java.util.HashMap; import java.util.Map;public class ThreadLocalUtil {// 使用Map存储多类型数据private static final ThreadLocal<Map<String, Object>> CONTEXT_HOLDER new ThreadLocal<>();// 存储数据public static void set(Str…...

RNope:结合 RoPE 和 NoPE 的长文本建模架构

TL;DR 2025 年 Cohere 提出的一种高效且强大的长上下文建模架构——RNope-SWA。通过系统分析注意力模式、位置编码机制与训练策略&#xff0c;该架构不仅在长上下文任务上取得了当前最优的表现&#xff0c;还在短上下文任务和训练/推理效率方面实现了良好平衡。 Paper name …...

virtualbox虚拟机中的ubuntu 20.04.6安装新的linux内核5.4.293 | 并增加一个系统调用 | 证书问题如何解决

参考文章&#xff1a;linux添加系统调用【简单易懂】【含32位系统】【含64位系统】_64位 32位 系统调用-CSDN博客 安装新内核 1. 在火狐下载你需要的版本的linux内核压缩包 这里我因为在windows上面下载过&#xff0c;配置过共享文件夹&#xff0c;所以直接复制粘贴通过共享文…...

unity UGUI虚线框shader

Shader "Custom/DottedLineShader" {Properties{_MainTex ("Texture", 2D) "white" {}_Color("Color",COLOR) (1,1,1,1)_LineLength("虚线长度",float) 0.08}SubShader{Tags //设置支持UGUI{ "Queue""Tran…...

vue2、vue3项目打包生成txt文件-自动记录打包日期:git版本、当前分支、提交人姓名、提交日期、提交描述等信息 和 前端项目的版本号json文件

vue2 打包生成text文件 和 前端项目的版本号json文件 项目打包生成txt文件-自动记录git版本、当前分支、提交人姓名、提交日期、提交描述等信息生成版本号json文件-自动记录当前版本号、打包时间等信息新建branch-version-webpack-plugin.js文件 // 同步子进程 const execSyn…...

chirpstack v4版本 全流程部署[ubuntu+docker]

背景介绍 由于chirpstackv3 版本使用的是锐米提供的版本,从网络上寻找的资源大多数都是一样的v3版本,是经过别人编译好发布出来的,原本的chirpsatck项目是运行的linxu环境下的,因此我的想法是在linux服务器上部署chirpsatckv4,暂时使用linux上的chirpstack v4版本,目前编译成e…...

DeepSeek 赋能数字孪生:重构虚实共生的智能未来图景

目录 一、数字孪生技术概述1.1 数字孪生的概念1.2 技术原理剖析1.3 应用领域与价值 二、DeepSeek 技术解读2.1 DeepSeek 的技术亮点2.2 与其他模型的对比优势 三、DeepSeek 赋能数字孪生3.1 高精度建模助力3.2 实时数据处理与分析3.3 智能分析与预测 四、实际案例解析4.1 垃圾焚…...

每日一道leetcode(增加版)

901. 股票价格跨度 - 力扣&#xff08;LeetCode&#xff09; 题目 设计一个算法收集某些股票的每日报价&#xff0c;并返回该股票当日价格的 跨度 。 当日股票价格的 跨度 被定义为股票价格小于或等于今天价格的最大连续日数&#xff08;从今天开始往回数&#xff0c;包括今…...

数字信号处理-大实验1.1

MATLAB仿真实验目录 验证实验&#xff1a;常见离散信号产生和实现验证实验&#xff1a;离散系统的时域分析应用实验&#xff1a;语音信号的基音周期&#xff08;频率&#xff09;测定 目录 一、常见离散信号产生和实现 1.1 实验目的 1.2 实验要求与内容 1.3 实验…...

Java大厂求职面试:探讨Spring Boot与微服务架构

场景&#xff1a;互联网大厂Java求职者面试 面试官&#xff1a;张老师 程序员&#xff1a;谢飞机 第一轮提问&#xff1a;音视频场景 张老师&#xff1a;我们公司正在开发一个实时音视频聊天应用。请你谈谈如何使用Spring Boot和WebSocket实现实时通信&#xff1f; 谢飞机&…...

SAP ABAP 中驼峰字段名转 JSON 的实现方案

有人问&#xff1a;SAP中驼峰字段名的集成接口&#xff0c;转Json时&#xff0c;abap要如何处理呢&#xff1f; 在 SAP 系统开发中&#xff0c;当通过接口与外部系统交互时&#xff0c;JSON 格式因其轻量、易解析的特性被广泛使用。而外部系统常采用驼峰式&#xff08;Camel C…...

对抗性机器学习:AI模型安全防护新挑战

随着采用对抗性机器学习&#xff08;Adversarial Machine Learning, AML&#xff09;的AI系统融入关键基础设施、医疗健康和自动驾驶技术领域&#xff0c;一场无声的攻防战正在上演——防御方不断强化模型&#xff0c;而攻击者则持续挖掘漏洞。2025年&#xff0c;对抗性机器学习…...

[[春秋云境] Privilege仿真场景

文章目录 靶标介绍&#xff1a;知识点卷影拷贝(VSS) 外网任意文件读取Jenkins管理员后台rdp远程登录Gitlab apiToken 内网搭建代理 Oracle RCESeRestorePrivilege提权mimikatzspn卷影拷贝提取SAM 参考文章 靶标介绍&#xff1a; 在这个靶场中&#xff0c;您将扮演一名资深黑客…...

Redis学习打卡-Day3-分布式ID生成策略、分布式锁

分布式 ID 当单机 MySQL 已经无法支撑系统的数据量时&#xff0c;就需要进行分库分表&#xff08;推荐 Sharding-JDBC&#xff09;。在分库之后&#xff0c; 数据遍布在不同服务器上的数据库&#xff0c;数据库的自增主键已经没办法满足生成的主键全局唯一了。这个时候就需要生…...

计算机网络:怎么理解调制解调器的数字调制技术?

数字调制技术详解 数字调制技术是将数字比特流转换为适合在物理信道(如电缆、光纤、无线信道)传输的模拟信号的核心技术。通过改变载波(通常是正弦波)的幅度、频率或相位(或组合),将二进制数据映射到模拟波形上。其目标是高效利用频谱资源、提升抗干扰能力,并适应不同…...

数据库第二次作业--SQL的单表查询与多表查询

单表查询 查询专业信息表中的专业名称和专业类型 SELECT Mname, Mtype FROM MajorP;查询一个学校有多少个专业 SELECT COUNT(Mno) AS 专业数量 FROM MajorP;查询学校的男女学生各有多少位 SELECT Ssex&#xff0c; COUNT(*) AS 人数 FROM StudentP GROUP BY Ssex查询每个专业…...

在Cursor中启用WebStorm/IntelliJ风格快捷键

在Cursor中启用WebStorm/IntelliJ风格快捷键 方法一&#xff1a;使用预置快捷键方案 打开快捷键设置 Windows/Linux: Ctrl K → Ctrl SmacOS: ⌘ K → ⌘ S 搜索预设方案 在搜索框中输入keyboard shortcuts&#xff0c;选择Preferences: Open Keyboard Shortcuts (JSON) …...

vue3:十三、分类管理-表格--编辑、新增、详情、刷新

一、效果 实现封装表格的新增、编辑、详情查看,表格刷新功能 实现表格组件中表单的封装 1、新增 如下图,新增页面显示空白的下拉,文本框,文本域,并实现提交功能 2、编辑 如下图,点击行数据,可将行数据展示到编辑弹窗,并实现提交功能 3、详情 如下图,点击行数据,…...

c#基础01(.Net介绍)

文章目录 .Net平台介绍.Net平台简介跨平台开源.Net Core.Net Framework开发工具安装选项 创建项目 .Net平台介绍 .Net平台简介 .NET是一种用于构建多种应用的免费开源开放平台&#xff0c;例如&#xff1a; Web 应用、Web API 和微服务 云中的无服务器函数 云原生应用 移动…...

Go语言之路————并发

Go语言之路————并发 前言协程管道SelectsyncWaitGroup锁 前言 我是一名多年Java开发人员&#xff0c;因为工作需要现在要学习go语言&#xff0c;Go语言之路是一个系列&#xff0c;记录着我从0开始接触Go&#xff0c;到后面能正常完成工作上的业务开发的过程&#xff0c;如…...

Logrotate:配置日志轮转、高效管理Linux日志文件

Logrotate 是 Linux 系统中用于自动化管理日志文件的工具&#xff0c;能够定期轮转、压缩、删除日志文件&#xff0c;确保系统日志不会无限制增长&#xff0c;占用过多磁盘空间。 它通常由 Cron 作业定期执行&#xff0c;也可以手动触发。 1. &#x1f527; 核心功能 日志轮转…...

贵州某建筑物挡墙自动化监测

1. 项目简介 某建筑物位于贵州省某县城区内&#xff0c;靠近县城主干道&#xff0c;周边配套学校、医院、商贸城。建筑物临近凤凰湖、芙蓉江等水系&#xff0c;主打“湖景生态宜居”。改建筑物总占地面积&#xff1a;约5.3万平方米&#xff1b;总建筑面积&#xff1a;约15万平…...

nginx服务器实验

1.实验要求 1&#xff09;在Nginx服务器上搭建LNMP服务&#xff0c;并且能够对外提供Discuz论坛服务。 在Web1、Web2服务器上搭建Tomcat 服务。 2&#xff09;为nginx服务配置虚拟主机&#xff0c;新增两个域名 www.kgc.com 和 www.benet.com&#xff0c;使用http://www.kgc.…...

【算法】滑动窗口动态查找不含重复字符的最长子串

// 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 // // 输入: s "abcabcbb" // 输出: 3String s "abcabcbb";String[] sArr s.split("");StringBuilder noDuplicateStr new StringB…...

高速光耦在通信行业的应用(五) | 5Mbps通信光耦的特性

针对5MBd速率光耦市场&#xff0c;晶台推出KL2200、KL2201和KL2202系列光耦 ,对标大部分国外品牌产品的应用&#xff1b;它分别由一个红外发射二极管和一个高速集成光电检测器逻辑门组成。 它采用 8 引脚 DIP 封装&#xff0c;并提供 SMD 选项。KL2200 的检测器具有一个三态输出…...

Apidog MCP服务器,连接API规范和AI编码助手的桥梁

#作者&#xff1a;曹付江 文章目录 1.了解 MCP2.什么是 Apidog MCP 服务器&#xff1f;3.Apidog MCP 服务器如何工作4.利用人工智能改变开发工作流程5.设置 Apidog MCP 服务器&#xff1a; 分步指南5.高级功能和提示5.1 使用 OpenAPI 规范5.2.多个项目配置5.3.安全最佳实践5.4…...

视觉模型部署实践:低算力平台RV1106上高效部署paddlepaddle 的PicoDet目标检测模型的技术实践

在资源受限的嵌入式设备上实现高精度、低延迟的目标检测&#xff0c;是当前智能摄像头、边缘计算等应用中的关键挑战。本文以 Rockchip 的 RV1106 嵌入式平台为例&#xff0c;结合百度开源的轻量级检测模型 PicoDet&#xff0c;探讨如何通过模型优化与硬件加速&#xff0c;在有…...

07、基础入门-SpringBoot-自动配置特性

# Spring Boot自动配置特性 07、基础入门-SpringBoot-自动配置特性 Spring Boot的自动配置是其核心特性之一&#xff0c;旨在通过智能化的默认配置简化Spring应用的开发流程&#xff0c;减少手动配置的工作量。 ## 一、自动配置的核心思想 ### 1. 条件化配置 根据应用的依赖和上…...

国内MCP服务平台推荐 AIbase推出MCP服务器客户端商店

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正以前所未有的速度发展&#xff0c;不断改变着我们的生活和工作方式。2025年&#xff0c;AI领域迎来了一项重要的技术进展——MCP(Model Context Protocol&#xff0c;模型上下文协议)的广泛应用。这一技术…...

Profinet转Ethernet IP主站网关:点燃氢醌生产线的智慧之光!

案例分享&#xff1a;转角指示器和Profinet转EthernetIP网关的应用 在现代工业自动化中&#xff0c;设备和系统之间的高效通信至关重要。最近&#xff0c;我们在某大型化工企业的生产线上实施了一个项目&#xff0c;旨在通过先进的设备和通信技术提高生产效率和安全性。该项目…...