Java记录 -76- Integer cache缓存

Java反射性能优化四大隐性瓶颈与实战方案 Java反射是动态调用的核心机制,其本质是在运行时通过类名、方法签名等符号信息解析并执行目标逻辑。但反射调用并非简单‘慢在invoke’,真正瓶颈常源于JVM底层机制:类加载阶段的Metaspace元数据膨胀、方法解析时SystemDictionary全局锁竞争、参数类型自动装箱/拆箱引发的GC雪崩,以及JIT编译器对Method.invoke的内联禁令。这些因素共同导致高并发下P99延迟突增、Full GC频发和线程阻塞。面向电商、风控、微服务及低代码平台等真实场景,需结合三级缓存、MethodHandl 阅读详情

Integer cache缓存

下面有一个简单的关于Integer的实例,但出乎预料的是其输出结果:

public class IntegerTest2 {    public static void main(String[] args){        Integer i1 = 100;        Integer i2 = 100;        System.out.println(i1 == i2);                Integer i3 = 200;        Integer i4 = 200;        System.out.println(i3 == i4);    }}

上面的实例输出结果为:true 和 false

这是为什么呢?有点不可思议 ...

下面我们通过查看Integer的源代码来分析一下(像这种问题也只能通过源代码来查看分析其原因);

看Integer的valueOf方法,该方法是将int的转变为Integer,但当int值大于-128并小于127时,其必须缓存 must cache,并返回的是IntegerCache的cache数组中的值;

我们在看IntegerCache,该类是Integer的一个内部类,它定义了一个静态的Integer类型的数组,并在静态块中将其循环初始化值;

也就是说,我们利用Integer获得的大于-128并小于127的对象是,返回的都是缓存起来的对象,并没有新生成对象。

    public static Integer valueOf(int i) {        final int offset = 128;        if (i >= -128 && i <= 127) { // must cache             return IntegerCache.cache[i + offset];        }            return new Integer(i);    }    private static class IntegerCache {        private IntegerCache(){}            static final Integer cache[] = new Integer[-(-128) + 127 + 1];            static {            for(int i = 0; i < cache.length; i++)            cache[i] = new Integer(i - 128);        }    }

JDK的API文档提示:

public static Integer valueOf(int i)

如果不需要新的 Integer 实例,则通常应优先使用该方法,而不是构造方法 Integer(int),因为该方法有可能通过缓存经常请求的值而显著提高空间和时间性能。

Lombok原理与工程实践:Java注解处理器深度解析 Java注解处理器(Annotation Processor)是JVM生态中实现编译期代码增强的核心机制,其基于JSR-269标准,在javac编译流程的AST构建后、字节码生成前介入,通过修改抽象语法树完成getter/setter生成、Builder类注入等能力。这种编译期代码注入不改变运行时行为,保障调试可见性与字节码兼容性,技术价值在于显著降低样板代码(boiler plate code)冗余、释放开发者认知带宽。典型应用场景包括DTO/VO类简化、Spring构造器注入适配、Records扩展增强 阅读详情

相关推荐

Java开发者IDE代际迁移:AI原生IDE、插件与工程实践的边界

Java开发正从传统IDE的编译-调试闭环,转向AI驱动的意图理解-上下文感知-自动验证新范式。其核心原理在于AI能否深度接入Java特有的编译态信息(如PSI树)、框架语义(如Spring注解契约)及工程复杂度(如Maven传递依赖)。技术价值体现在编码效率跃升与调试闭环重构,但风险集中于上下文截断、类型安全缺失和框架行为偏差。典型应用场景包括Spring Boot配置生成、MyBatis ResultMap构建、Feign Fallback实现及微服务多模块协同——这些场景直击Java生态中注解驱动、强

weixin_36250541的博客 478

IntegerCache的妙用和陷阱!

考虑下面的小程序,你认为会输出为什么结果? public class Test { public static void main(String[] args) { Integer n1 = 123; Integer n2 = 123; Integer n3 = 128; Integer n4 = 128; ...

weixin_33725272的博客 502

本地AI智能体实战:内存、工具与模型的笔记本级部署

AI智能体是具备感知、决策与执行能力的自主程序,其核心在于上下文记忆管理、可扩展工具调用和高效模型推理。随着7B级大语言模型在消费级GPU上的成熟运行,‘全本地AI智能体’已从概念走向工程现实——它不依赖云端API,而是依托向量数据库实现长期记忆、通过轻量调度器编排本地工具(如浏览器、Shell、SQLite),并借助GGUF量化、混合卸载与KV缓存优化达成亚秒级响应。该技术显著提升数据隐私性、离线可用性与响应确定性,适用于知识管理、会议纪要、代码辅助等生产力场景。本文聚焦笔记本环境下的落地实践,覆盖Chr

alexhill2009的博客 662

原来你是这样的 IntegerCache

原来你是这样的 IntegerCache 本段内容与题目无关,是我自己对这段时间的反思。实习以来的确学到了不少技术,Spring Boot、Gradle 等,然而我却越是迷茫,一会儿这个框架没听过要不要去搞搞,一会儿这个是什么协议,机器学习和大数据挺火的整整吧,学会儿前端吧毕设用得上,什么是SSL……本想着这会儿学习 A ,却在学习 A 的过程中看到了上面那些不会的 B、C、D 等。

zest 1816

10个被低估的工业级AI工程化工具实战指南

在人工智能落地实践中,模型开发仅是起点,真正决定项目成败的是数据治理、实验可重现、模型服务化与业务协同等工程能力。本文聚焦AI工程化(MLOps)核心环节,围绕数据版本控制、模型全生命周期追踪、轻量级服务封装等关键技术原理展开,强调从研究到生产的系统性支撑价值。内容覆盖真实场景中的流式数据处理、边缘部署优化、跨团队协作提效及模型可解释性增强等关键需求,特别融入DVC、MLflow、BentoML等高实用性工具链的深度实操经验,为构建稳定、可维护、可扩展的生产级AI系统提供扎实路径。

wgyyh 348

GLM-5:从氛围编码到智能体工程的AI编程范式跃迁

智能编程助手正从‘行级补全’迈向‘系统级工程编排’,其核心是理解软件工程语义——包括架构约束、工具协议与验证闭环。vibe coding 代表以自然语言、截图、语音等模糊输入驱动开发的交互范式;agentic engineering 则强调模型具备自主规划、多步工具调用、状态反馈与异常处理能力。这类能力依赖对 Spring Boot、Kubernetes、OpenAPI 等真实工程上下文的深度建模,而非通用文本统计。它适用于微服务设计、CI/CD 自动诊断、多模态前端生成等高价值场景,标志着大模型从辅助工具

weixin_30235225的博客 646

java integer 缓存_Java记录 -76- Integer cache缓存

Integer cache缓存下面有一个简单的关于Integer的实例,但出乎预料的是其输出结果:publicclassIntegerTest2{publicstaticvoidmain(String[]args){Integeri1=100;Integeri2=100;System.out.println(i1==i2);Integeri3=200;Integ...

weixin_35812582的博客 200

MuleSoft企业级AI编排:安全合规的LLM集成实践

大语言模型(LLM)在企业落地面临数据孤岛、流程断裂与合规风险三大瓶颈。其核心原理并非单纯调用API,而是通过集成平台实现语义级编排、实时数据治理与可审计执行。技术价值在于将LLM从‘智能玩具’升级为可嵌入ERP、SAP、Jira等核心系统的可信能力单元。典型应用场景包括合同智能审查、工单实时辅助、库存策略生成等高价值闭环业务。本文聚焦MuleSoft作为AI编排中枢的工程实践,深度融合DataWeave提示工程、PII脱敏、JSON Schema语义校验与全链路审计日志,解决LLM在真实企业环境中‘不敢用

weixin_34279246的博客 436

CPU 缓存 | 原理、映射、一致性

……

u013669912的博客 406

Spark UDF重复执行问题与查询计划级优化方案

UDF(用户自定义函数)是Spark SQL中扩展计算能力的核心机制,其本质是在Catalyst优化器中作为Expression参与逻辑计划构建与代码生成。但由于Spark默认不进行UDF表达式等价性判定和公共子表达式消除(CSE),同一确定性UDF在多列引用、JOIN条件或嵌套投影中会被多次内联,导致物理执行阶段重复反序列化与调用。这种冗余虽不报错,却显著抬升CPU开销与端到端延迟,尤其在JSON解析、正则匹配等重逻辑场景下影响突出。本文聚焦Spark查询计划层面的UDF归一化实践,通过LogicalPl

weixin_30947043的博客 349

Dify部署后访问报502?手把手教你排查和修复Nginx反向代理问题

本文针对Dify部署后常见的502 Bad Gateway错误,提供了从基础容器状态检查到Nginx配置与Docker网络诊断的完整排查流程。详细解析了错误本质,并给出动态服务发现修复与静态IP配置两种解决方案,帮助开发者彻底解决Nginx反向代理问题,确保Dify平台稳定访问。

rnn9storyteller的博客 1096

java学习笔记(【黑马程序员2026版AI+Java零基础全套视频课程,Java入门到大神AI智能应用开发,涵盖Java核心语法、大量力扣、牛客网算法训练及Java项目开发】https://www)

安装验证此前path(默认的java路径)增加检查有javajdk版本还是17,0,没成功。

m0_74384754的博客 637

PX4固件下VTOL固定翼的3种起飞方式对比:手抛vs弹射vs跑道

本文深度解析PX4固件下VTOL固定翼的三种起飞方式:手抛、弹射与跑道起飞,对比其技术差异与适用场景。通过详细的参数配置和工程实践指南,帮助开发者优化起飞性能,提升无人机在不同环境下的适应性和可靠性。文章特别针对PX4飞控系统的最新特性进行了技术探讨。

weixin_30296405的博客 87

JAVA面试题(1~95)《上》

1、面向对象的特征有哪些方面?  答:面向对象的特征主要有以下几个方面:  - 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。  - 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。继承让变化中的软件系统有了一定的延续性...

ywl470812087的博客 4963

【技术解析】华为智算中心:昇腾AI算力与无损网络如何驱动大模型训练

本文深入解析了华为智算中心如何通过昇腾AI算力与超融合以太无损网络的协同,驱动千亿参数大模型的高效训练。昇腾NPU提供专用计算引擎,而基于RoCE的无损网络则通过PFC、ECN等技术确保万卡集群间的高带宽、零丢包通信,实现算力利用率最大化,解决大规模AI训练的核心瓶颈。

weixin_29311017的博客 191

机械臂 关节电机选型计算

电机 机械臂

hisen92的专栏 8981

外卖项目

这是一篇文章

2302_80248454的博客 954

知识图谱本体建模之RDF、RDFS、OWL详解

(一)知识图谱本体建模之RDF、RDFS、OWL详解 1.语义网体系 知识图谱于2012年由Google提出,并不是新概念,而是由语义网络(Semantic Network)衍生而来。语义网络由相互连接的节点和边组成,节点表示概念或者对象,边表示他们之间的关系。RDF,RDFS与OWL都是基于语义网的知识表示框架,在节点和边的取值上做了约束,制定了统一标准,为多源数据的融合提供了便利。RDF,RDFS/OWL 属于语义网技术栈,它们的提出,使得语义网克服了语义网络的缺点。其语义网技术栈如下所示。 2.RD

周周的专栏 1万+

基于Spring Boot的智能天气出行推荐系统:从规则引擎到个性化算法实战

推荐系统是现代软件工程中实现个性化服务的关键技术,其核心原理在于通过算法模型对用户行为、上下文环境与多源数据进行智能匹配与决策。在技术价值层面,优秀的推荐系统能够显著提升用户体验与业务转化率,广泛应用于电商、内容平台、生活服务等场景。本文聚焦于天气出行这一垂直领域,深入探讨如何整合天气API、用户画像与地理位置等多源数据,并构建基于规则引擎的推荐算法。通过Spring Boot微服务架构的完整实战,详细展示了数据采集层、决策层与API层的模块化设计,其中涉及Redis缓存优化、RESTful接口设计等工程实

weixin_33727510的博客 335

Vue - 解决报错 Error: Cannot find module ‘XXX\@vue\cli-service\bin\vue-cli-service.js‘(vue项目编译运行出错,启动失败)

vue报错,Error: Cannot find module ‘@vue\cli-service\bin\vue-cli-service.js‘,vue2项目启动报错,vue3项目运行出错,vue执行npm run serve报错,找不到@vue/cli-service模块,vue项目关于:Error: Cannot find module ‘D:\@vue\cli-service\bin\vue-cli-service.js‘的解决方案,vue项目跑不起来了,Vue项目报错,跑项目报错Cannot fi

🏆 前端领域优质创作者 3113

innovus:streamOut gds中pg text带有冒号(:)解决办法

streamOut后查看layout,发现部分PG text后面加了冒号,比如VDD: / VSS:。当然,这个问题还有另一种解决办法,就是通过脚本给terminal打text再streamOut。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1190

代码对话层:构建可追问、带记忆的本地化代码理解系统

在软件工程中,'代码理解'是影响开发效率与系统可维护性的核心基础能力。其本质并非单纯阅读文本,而是基于语法结构、依赖关系、变更历史和语义模式的多维认知建模。传统大模型全文索引方案因信息密度不均、结构化线索缺失及历史意图隐匿而失效;真正可行的技术路径是分层索引——将AST解析、调用图谱、Git变更知识与规则化语义沉淀解耦为四层本地化索引体系,并通过光标锚定、证据溯源与自然语言查询解析实现高可信度对话交互。该范式显著降低遗留系统认知摩擦,支撑微服务多语言协同场景下的安全重构与精准排障,正成为现代IDE不可或缺的

weixin_34008805的博客 388

GEE训练教程:如何批量从Google assets中将时序影像批量导出到Google drive

本文介绍了一种使用Google Earth Engine(GEE)批量导出2000-2023年叶绿素a(Chl-a)浓度数据的方法。通过JavaScript代码自动生成多个年份的导出任务,将数据保存至Google Drive指定文件夹。文章详细说明了代码参数配置、使用步骤和注意事项,包括资产命名规则验证、导出任务启动方式,以及分辨率、区域范围等关键参数的调整建议。同时提供了常见问题的解决方案,如处理缺失年份数据、解决导出像素超限等问题。该方法可显著提高多年份Chl-a数据批量导出的效率,适用于水体环境研究的

此星光明博客 89

一文详解响应式编程springwebflux

详解springwebflux使用

工匠精神coding,终生学习 1244

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

GPT-4参数量与稀疏激活真相:1.8万亿不是显存需求,2%不是固定比例

大模型参数量是衡量其规模的基础概念,但实际推理性能取决于动态激活的参数子集——即稀疏性原理。混合专家(MoE)架构通过路由机制实现计算资源的按需分配,使模型在保持海量知识容量的同时显著降低单次前向传播的计算与显存开销。这种技术价值体现在推理延迟优化、硬件利用率提升和长上下文扩展能力增强上,广泛应用于GPT-4、Llama-3-405B等千亿级模型的生产部署。然而,‘1.8万亿参数’实为逻辑寻址空间上限,而‘2% per token’是MoE层内专家选择的统计均值,并非全模型活跃率,二者常被误读为可直接代入成

weixin_34221773的博客 352

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

上一篇: Java记录 -75- 泛型高级晋级
下一篇: Java记录 -77- 增强的for循环与自动拆装箱
架构师的清醒
博客等级 码龄14年 291粉丝 397原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值