Java源码中有哪些细节可以参考?(持续更新)

article/2025/7/12 23:34:32

欢迎来到啾啾的博客🐱。
记录学习点滴。分享工作思考和实用技巧,偶尔也分享一些杂谈💬。
有很多很多不足的地方,欢迎评论交流,感谢您的阅读和评论😄。

目录

  • String的比较
  • final的使用
  • transient避免序列化

String的比较

![[Java源码中有哪些细节可以参考?.png]]

以HashMap源码为例,涉及到String比较,先比较内存地址,再用equals方法比较值。
==对于引用类型比较的是对象的内存地址。这是一个非常底层、快速的整数比较操作。比equals()开销小很多。
这种写法是JDK中常见的性能优化手段,特别是在需要频繁比较对象的场景下。
对于String来说,如果都在字符串常量池那么理论上仅使用==就够了。

final的使用

源码中final的运用比在业务代码中多的多。
final明确了哪些东西是不可变的、防止意外修改,增强了代码的可读性、可维护性、健壮性与安全性。
还有final+局部变量的运用,比如final Object[] items = this.items。不直接操作this.items,而是重新在方法中声明一个final修饰一个局部变量。
局部变量的访问速度往往更快(微微微微快),其在栈中,访问局部变量少了堆内存寻址操作。且将类成员变量赋值给局部变量后,在方法内部使用局部变量可以减少锁的争用,提高程序的执行效率。

transient避免序列化

可以看到基于数组实现的结构基本上都使用了transient来避免多余的序列化。
很多时候基于功能考虑,我们往往在对象中抽象、设计一些无用的标识,此时使用transient避免序列化可以提升效率。

此外,使用transient 往往伴随着自定义序列化逻辑来控制逻辑内容展示。


http://www.hkcw.cn/article/sGwossQIbQ.shtml

相关文章

Linux | Shell脚本的常用命令

一. 常用字符处理命令 1.1 连续打印字符seq seq打印数字;且只能正向打印,不可反向连续打印 设置打印步长 指定打印格式 1.2 反向打印字符tac cat 正向,tac 反向 1.3 打印字符printf printf "打印的内容"指定格式打印内容 换行…

【FlashRAG】本地部署与demo运行(二)

前文【FlashRAG】本地部署与demo运行(一) 下载必要的模型文件 完成了项目拉取和依赖下载后,我们需要进一步下载模型文件 Faiss(Facebook AI Similarity Search)是由Facebook AI团队开发的高效相似性搜索和密集向量聚…

火狐安装自动录制表单教程——仙盟自动化运营大衍灵机——仙盟创梦IDE

打开火狐插件页面 安装完成 使用 功能 录制浏览器操作 录入地址 开始操作 录制完成 在当今快速发展的软件开发生态中,自动化测试已从一种新兴技术手段,转变为保障软件质量与开发效率不可或缺的关键环节。其重要性体现在多个维度,同时&#x…

【目标检测】【AAAI-2022】Anchor DETR

Anchor DETR: Query Design for Transformer-Based Object Detection 锚点DETR:基于Transformer的目标检测查询设计 论文链接 代码链接 摘要 在本文中,我们提出了一种基于Transformer的目标检测新型查询设计。此前的Transformer检测器中&am…

zTasker一款Windows自动化软件,提升效率:大小仅有10MB,免费无广告

一、zTasker是什么? zTasker是一款发布于2023年9月的免费无广告工具,专为Windows用户打造。它以仅8MB的轻量体积、极低资源占用(内存消耗不足10MB)和秒级启动速度脱颖而出,堪称“任务计划程序的终极强化版”。无论是定…

数学术语之源——绝对值(absolute value)(复数模?)

目录 1. 绝对值:(absolute value): 2. 复数尺度(复尺度):(modulus): 1. 绝对值:(absolute value): 一个实数的绝对值是其不考虑(irrespective)符号的大小(magnitude)。在拉丁语中具有相同意思的单词是“modulus”,这个单词还…

USB充电检测仪-2.USB充电检测仪硬件设计

本系列文章的最终目标是制作一个USB充电检测仪,支持的功能: 显示USB充电电压、电流、功率、充电量(单位WH);实现Typec口和USB-A口的相互转换(仅支持USB 2.0); 当然网上有很多卖这种…

华院计算受邀参展第九届丝绸之路国际博览会暨中国东西部合作与投资贸易洽谈会

2025年5月21日至25日,以“丝路融通开放合作”为主题的第九届丝绸之路国际博览会暨中国东西部合作与投资贸易洽谈会在陕西西安国际会展中心隆重召开。应上海市国内合作交流服务中心和上海科创投集团的邀请,华院计算技术(上海)股份有…

智能路由革命:AI 生态系统的智能高速交警

研究和行业基准测试揭露了一个惊人的事实:大多数企业的 AI 系统运行效率只有 15% 到 20%。罪魁祸首是谁呢?就是糟糕的查询路由。 想象一下这个现实情况: 你所在的组织每在 AI 上花 10 块钱,就有 8 块钱是浪费在把简单查询发送到…

[yolov11改进系列]基于yolov11引入倒置残差块块注意力机制iEMA的python源码+训练源码

【iEMA介绍】 iRMB(Inverted Residual Mobile Block)的框架原理,是一种结合轻量级CNN和注意力机制的方法,用于改进移动设备上的目标检测模型。IRMB通过倒置残差块和元移动块实现高效信息处理,同时保持模型轻量化。本文…

深度学习实战110-基于深度学习的工业系统故障诊断技术研究(卷积网络+注意力机制模型)

大家好,我是微学AI,今天给大家介绍一下深度学习实战110-基于深度学习的工业系统故障诊断技术研究(卷积网络+注意力机制模型)。工业系统故障诊断是确保现代工业设备安全稳定运行的关键技术环节。随着工业自动化和智能化水平的不断提高,传统故障诊断方法在应对日益复杂、多变…

Fluence (FLT) 2026愿景:RWA代币化加速布局AI算力市场

2025年5月29日,苏黎世 - Fluence,企业级去中心化计算平台,荣幸地揭开其2026愿景的面纱,并宣布将于6月1日起启动四大新举措。 Fluence 成功建立、推出并商业化了其去中心化物理基础设施计算网络(DePIN)&…

科学智能赋能空间科学研究(2):AI4S 范式下空间科学实验的核心挑战

中国科学院空间应用工程与技术中心在空间科学实验领域的研究覆盖了多模态空间科学实验数据模式挖掘、领域知识抽取、跨学科知识融合与认知智能等研究内容,有效促进了空间科学实验领域的数据应用生态的体系化建设,相关研究成果已正式发表于权威学术期刊《…

QML 无边框窗口翻转动画

目录 引言核心组件实现无边框翻转窗口(FlipableDemo.qml)登录页面和设置页面(省略)主界面集成(Main.qml) 下载链接 引言 接上篇 QML 滑动与翻转效果(Flickable与Flipable) 。本文通…

若依框架修改模板,添加通过excel导入数据功能

版本:我后端使用的是RuoYi-Vue-fast版本,前端是RuoYi-Vue3 需求: 我需要每个侧边栏功能都需要具有导入excel功能,但是若依只有用户才具备,我需要代码生成的每个功能都拥有导入功能。​ 每次生成一个一个改实在是太麻烦了。索性…

ECS-7000能耗监测系统能耗数据管理机

一、能耗系统介绍 能耗监测系统通过计算机和通讯网络,配电房的现场设备连接为一个有机的整体,实现电网设备运行的远程监控和集中管理。设计中充分体现系统的可用性、先进性、方便性、安全性、可靠性、可扩展性及系统性价比的合理性。 厂家:…

分层模态内相关学习用于无标签三维语义分割

摘要 Recent methods for label-free 3D semantic segmentation aim to assist 3D model training by leveraging the openworld recognition ability of pre-trained vision language models. However, these methods usually suffer from inconsistent and noisy pseudo-lab…

[C++]vc6.0在win10或者win11上下载安装和简单使用教程

VC6.0,即Microsoft Visual C 6.0,是微软公司于1998年推出的一款经典的集成开发环境(IDE),在Windows平台软件开发领域具有重要地位。 它支持C和C语言编程,功能强大且全面。其核心优势在于集成了高效的编译器…

TEC温度控制平台的核心技术解析

TEC-2580-500W-24V TEC温度控制平台是一种基于半导体制冷片(TEC)的高性能温度控制系统,该平台通常由TEC制冷片、温度传感器、控制器、散热系统等部分组成,具有高精度、快速响应、易于集成等优点。具有高精度、高稳定度、长寿命、体…

Spring MVC 框架

目录 1.MVC的定义 2.SpringMVC的实际应用 (1)建立连接 1.RequestMapping注解介绍 2.RequestMapping注解的请求方式 GET请求: POST请求: 指定GET/POST方法类型: (2)请求 传递参数 1.传…