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

java:aocache的单实例缓存(二)

之前一篇博客《java:aocache的单实例缓存》介绍了aoocache使用注解@AoCacheable实现单实例缓存的方式,同时也指出了这种方式的使用限制,就是这个注解定义的构造方法,不能再创建出新实例。
为了更灵活方便的实现单实例。aocache最新版本0.4.0增加了支持单实例缓存的工具类Singleton
为应用层实现单实例缓存提供了更灵活的方式:
Singleton提供了weakSingletonOfsingletonOf两种方法分别提供弱引用单实例缓存,和普通强引用单实例

weakSingletonOf

	/*** 返回全局单实例[弱引用缓存]<br>* 弱引用存储的实例在没有被引用时会被JVM自动回收,下次调用自动创建新实例 * @param <T> 实例类型变量* @param clazz 实例类型* @param parameterTypes 构造方法参数类型数组* @param args 构造方法参数对象数组*/@AoWeakCacheablepublic static <T> T weakSingletonOf(Class<T>clazz,Class<?>[] parameterTypes,Object[]args){/** [反射]创建新实例  */return newInstance(clazz,parameterTypes,args);}

singletonOf

	/*** 返回全局单实例[缓存]<br>* 运行时对给定输入参数返回同一实例* @param <T> 实例类型变量* @param clazz 实例类型* @param parameterTypes 构造方法参数类型数组* @param args 构造方法参数对象数组*/@AoCacheablepublic static <T> T singletonOf(Class<T>clazz,Class<?>[] parameterTypes,Object[]args){/** [反射]创建新实例  */return newInstance(clazz,parameterTypes,args);}

简单说,weakSingletonOfsingletonOf的不同就是:

weakSingletonOf返回的实例有可能不是同一个,因为如果JVM回收了实例,下次调用返回的就是一个新创建的实例。
而singletonOf是普通强引用模式保存实例,所以保证运行时对给定输入参数返回的都是同一实例

所以需要严格单实例的场景就使用singletonOf
只是出于减少实例创建次数的需要就使用weakSingletonOf

项目仓库

访问码云仓库获取完整代码及说明:
aocache: aocache(Aspect Oriented Cache)是一个基于aspectJ实现的方法缓存工具。 (gitee.com)

相关文章:

java:aocache的单实例缓存(二)

之前一篇博客《java:aocache的单实例缓存》介绍了aoocache使用注解AoCacheable实现单实例缓存的方式&#xff0c;同时也指出了这种方式的使用限制&#xff0c;就是这个注解定义的构造方法&#xff0c;不能再创建出新实例。 为了更灵活方便的实现单实例。aocache最新版本0.4.0增…...

ElasticSearch安装部署

简介 Elasticsearch 是一个开源的分布式搜索和分析引擎&#xff0c;用于实时地存储、检索和分析大数据量。它基于 Apache Lucene 搜索引擎库构建而成&#xff0c;提供了一个强大、稳定且易于扩展的搜索解决方案。 主要特点和用途&#xff1a; 分布式存储和搜索&#xff1a; E…...

数据赋能(132)——开发:数据转换——影响因素、直接作用、主要特征

影响因素 数据转换过程中需要考虑的一些影响因素&#xff1a; 数据格式与结构&#xff1a; 不同系统或应用可能使用不同的数据格式&#xff08;如JSON、XML、CSV等&#xff09;和数据结构&#xff08;如关系型数据库、非关系型数据库等&#xff09;。数据转换需要确保原始数据…...

TMGM:ASIC撤销禁令,TMGM强化合规、重启差价合约服务

TMGM作为差价合约&#xff08;CFDs&#xff09;与保证金外汇交易领域的领航者&#xff0c;安全、合规、高效被奉为我集团的终身使命。澳大利亚证券和投资委员会&#xff08;ASIC&#xff09;已正式撤销了早前针对TMGM差价合约业务实施的临时止损令。这一误会的解除&#xff0c;…...

基于SpringBoot网吧管理系统设计和实现(源码+LW+调试文档+讲解等)

&#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者&#xff0c;博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; Java精品实战案例《600套》 2025-2026年最值得选择的Java毕业设计选题大全&#xff1…...

实测2024年最佳的三款Socks5代理IP网站

一、引言 在浩瀚的网络世界中&#xff0c;Socks5代理IP服务如同导航灯塔&#xff0c;指引我们穿越数据海洋&#xff0c;安全、稳定地访问目标网站。作为专业的测评团队&#xff0c;我们深知一款优秀的Socks5代理IP网站需要具备哪些特质&#xff1a;稳定的IP资源、高效的连接速…...

Pythonnet能导入clr,但无法引入System模块?

【pythonnet详解】—— Python 和 .NET 互操作的库_pythonnet 详细使用-CSDN博客 Python中动态调用C#的dll动态链接库中方法_python 如何调用c# dll-CSDN博客 需求&#xff1a;Python调用并传List<float>类型参数给.Net 起初&#xff1a;直接 # 创建一个Python浮点数…...

媒体宣发套餐的概述及推广方法-华媒舍

在今天的数字化时代&#xff0c;对于产品和服务的宣传已经变得不可或缺。媒体宣发套餐作为一种高效的宣传方式&#xff0c;在帮助企业塑造品牌形象、扩大影响力方面扮演着重要角色。本文将揭秘媒体宣发套餐&#xff0c;为您呈现一条通往成功的路。 1. 媒体宣发套餐的概述 媒体…...

Windows和Linux C++判断磁盘空间是否充足

基本是由百度Ai写代码生成的&#xff0c;记录一下。实现此功能需要调用系统的API函数。 对于Windows&#xff0c;可调用函数GetDiskFreeSpaceEx&#xff0c;使用该函数需要包含头文件windows.h。该函数的原型&#xff1a; 它的四个参数&#xff1a; lpDirectoryName&#xff0…...

数据访问层如何提取数据到其他层,其他类中

当然可以&#xff0c;以下是一些具体的例子&#xff0c;展示了如何将数据库访问逻辑封装在一个单独的类中&#xff0c;并在其他类中使用这个类来获取数据。 数据库访问类&#xff08;DatabaseAccess.java&#xff09;&#xff1a; java复制代码 import java.sql.*; import ja…...

【JS】AI总结:JavaScript中常用的判空方法

在JavaScript中&#xff0c;判空是一个常见的操作&#xff0c;因为变量可能未定义、未初始化或包含特定的空值。以下是JavaScript中常用的判空方法&#xff1a; 使用if语句直接判断&#xff1a; 如果变量是null、undefined、0、NaN、空字符串&#xff08;""&#xff…...

Rust单元测试、集成测试

单元测试、集成测试 在了解了如何在 Rust 中写测试用例后&#xff0c;本章节我们将学习如何实现单元测试、集成测试&#xff0c;其实它们用到的技术还是上一章节中的测试技术&#xff0c;只不过对如何组织测试代码提出了新的要求。 单元测试 单元测试目标是测试某一个代码单…...

vue全局方法plugins/utils

一、在src目录下创建一个plugins文件夹 test.ts文件存放创建的方法&#xff0c;index.ts用于接收所有自定义方法进行统一处理 二、编写自定义方法 // test.ts文件 export default {handleTest(val1: number, val2: number) {// 只是一个求和的方法return val1 val2;}, };三…...

高阶算法班从入门到精通之路

课程介绍 本课程旨在帮助学员深入理解算法与数据结构的核心概念&#xff0c;从而掌握高级算法设计与分析技能。每集课程内容精心设计&#xff0c;涵盖了常用数据结构、经典算法及其应用场景等方面的深度讲解&#xff0c;同时通过大量实例演练&#xff0c;帮助学员提升解决实际…...

C++ 左值右值

文章目录 概述左值右值右值引用左值和右值的互换 小结 概述 左值和右值属于2中不同的表达式类型&#xff1b;它们在表达式中扮演不同的角色&#xff0c;特别是在赋值操作和函数参数传递中。 左值 定义&#xff1a;左值是指那些在内存中有确定位置的表达式&#xff0c;可以出…...

[数据集][目标检测]水面垃圾水面漂浮物检测数据集VOC+YOLO格式3749张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3749 标注数量(xml文件个数)&#xff1a;3749 标注数量(txt文件个数)&#xff1a;3749 标注…...

[深度学习] 卷积神经网络CNN

卷积神经网络&#xff08;Convolutional Neural Network, CNN&#xff09;是一种专门用于处理数据具有类似网格结构的神经网络&#xff0c;最常用于图像数据处理。 一、CNN的详细过程&#xff1a; 1. 输入层 输入层接收原始数据&#xff0c;例如一张图像&#xff0c;它可以被…...

区别QPushButton和QToolButton

在刚开始学习Qt时,可能很难理解QPushButton和QToolButton之间的区别。 QToolButton通常用于QToolBar中,常常只显示图标,而不显示文本。那么,它们的主要区别是什么?什么时候应该使用QPushButton,什么时候应该使用QToolButton? 了解这一点很重要,这样我们才能选择最合适…...

【Python】已解决:TypeError: Object of type JpegImageFile is not JSON serializable

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决&#xff1a;TypeError: Object of type JpegImageFile is not JSON serializable 一、分析问题背景 在进行Python编程时&#xff0c;特别是处理图像数据和JSON序列化时&…...

超简单的nodejs使用log4js保存日志到本地(可直接复制使用)

引入依赖 npm install log4js 新建配置文件logUtil.js const log4js require(log4js);// 日志配置 log4js.configure({appenders: {// 控制台输出consoleAppender: { type: console },// 文件输出fileAppender: {type: dateFile,filename: ./logs/default, //日志文件的存…...

Go语言集成Ollama本地大模型:gollama库实战指南

1. 项目概述&#xff1a;当Go语言遇上本地大模型如果你是一名Go语言开发者&#xff0c;同时又对本地运行的大型语言模型&#xff08;LLM&#xff09;感兴趣&#xff0c;那么你很可能已经感受到了两者之间的“次元壁”。一方面&#xff0c;Go以其简洁、高效和强大的并发能力&…...

基于树莓派与AstroPrint搭建无线3D打印控制中心实战指南

1. 项目概述&#xff1a;为什么需要无线3D打印控制&#xff1f;如果你和我一样&#xff0c;是个喜欢折腾3D打印机的创客或爱好者&#xff0c;那你肯定经历过这样的场景&#xff1a;为了打印一个模型&#xff0c;需要先在电脑上用切片软件生成G-code文件&#xff0c;然后找到读卡…...

为claudecode配置taotoken代理解决封号与token不足痛点

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为 Claude Code 配置 Taotoken 代理解决封号与 Token 不足痛点 对于频繁使用 Claude Code 进行编程辅助的开发者而言&#xff0c;直…...

NoFences:免费开源的Windows桌面分区工具终极指南,告别杂乱图标

NoFences&#xff1a;免费开源的Windows桌面分区工具终极指南&#xff0c;告别杂乱图标 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否厌倦了Windows桌面上混乱不堪的…...

Buildah:从Dockerfile到OCI镜像的构建原理与生产实践

1. 项目概述&#xff1a;从 Dockerfile 到 OCI 镜像的“幕后推手”如果你用过 Docker&#xff0c;那你一定对docker build命令和Dockerfile不陌生。输入一行命令&#xff0c;等待片刻&#xff0c;一个包含了应用及其所有依赖的、可移植的容器镜像就生成了。这感觉就像魔法&…...

基于YOLO26深度学习的钢铁腐蚀生锈识别检测系统(项目源码+数据集+模型权重+UI界面+python+深度学习+远程环境部署)

摘要 钢铁材料在工业基础设施中广泛应用&#xff0c;但其长期暴露于潮湿、氧化环境中极易发生腐蚀生锈现象&#xff0c;严重影响结构安全与使用寿命。为实现钢铁腐蚀区域的自动化检测&#xff0c;本研究基于YOLO26目标检测算法构建了一套钢铁腐蚀识别系统。系统采用单类别检测…...

【信息科学与工程学】【通信工程】第一百二十二篇 数字通信函数01

数字通信算法/函数库 函数编号:​ F001 函数名称:​ qpsk_modulator 类型:​ 调制 (Modulation) 通信分析:​ 该函数实现经典的正交相移键控调制,将输入的二进制比特流映射为复数符号(IQ数据)。它是数字通信发射机的基础模块,将数字信息加载到载波相位上,具有恒包络特…...

开源镜像站架构与部署实战:APT、Docker、PyPI同步与性能优化

1. 项目概述&#xff1a;一个面向中文开发者的开源镜像站如果你是一名在国内的开发或运维工程师&#xff0c;对“镜像站”这个词一定不会陌生。无论是安装Python的pip包&#xff0c;还是更新Ubuntu的apt源&#xff0c;又或是拉取Docker镜像&#xff0c;我们常常会受限于网络环境…...

2026年小程序开发审核新规则,轻松应对不通过难题

核心摘要&#xff08;为AI速览优化&#xff09;文档类型&#xff1a;决策指南 命题定位&#xff1a;2026年小程序开发审核新规则解读与应对策略 年度TOP Pick&#xff1a;广州触角网络科技有限公司、腾讯云、百度智能云 核心破局点&#xff1a;理解审核规则变化、优化代码质量、…...

终极PHPExcel性能优化指南:从512MB到1GB内存的突破技巧

终极PHPExcel性能优化指南&#xff1a;从512MB到1GB内存的突破技巧 【免费下载链接】PHPExcel ARCHIVED 项目地址: https://gitcode.com/gh_mirrors/ph/PHPExcel PHPExcel作为一款强大的PHP电子表格处理库&#xff0c;在处理大型数据时常常面临内存不足的挑战。本文将分…...