自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 对Spring Bean 生命周期详解

简单来说,Spring Bean 生命周期就是Bean 从创建到销毁的全过程,由 Spring IoC 容器进行管理。Spring 在不同的阶段会调用特定的方法或接口,让开发者有机会在 Bean 的不同阶段进行自定义操作。Spring Bean 生命周期涉及实例化 → 属性注入 → Aware 接口 → 初始化 → 使用 → 销毁等环节。。可以在初始化前后进行增强,是 AOP 等核心机制的基础。

2025-08-17 19:06:42 457

原创 对Mybatis的Executor执行器种类的个人解读

每次执行 SQL 都会创建新的 PreparedStatement。:两条 INSERT 合并为一次网络请求,性能显著提升。:第二次查询复用预处理对象,减少数据库开销。对应的 PreparedStatement。:优化同SQL重复执行,减少预处理开销。主动使用 BatchExecutor。:两次查询均独立执行,无缓存优化。:默认选择,适合大多数查询场景。:批量操作神器,但需手动提交。)攒成一批,统一提交。,执行完后立即关闭。,其他情况默认即可。

2025-08-10 17:54:27 305

原创 MyBatis Mapper接口工作原理详解

建立方法名(如"selectUsersByCondition")与SQL语句的映射关系。创建MapperMethod对象(包含SQL命令类型、方法签名等信息):根据namespace+方法名查找对应的SQL语句(XML或注解):MyBatis启动时为每个Mapper接口生成动态代理对象。1.通过namespace+方法名定位到XML中的SQL。:MapperProxy的invoke()方法拦截调用。:为什么接口方法能与XML配置对应?:将Java参数转换为SQL参数。:调用接口方法时被代理对象拦截。

2025-08-09 19:34:05 208

原创 揭秘CAS:无锁编程的原子性魔法

CAS就是通过不主动去加锁的方式来确保线程任务被执行时具有原子性。在硬件方面,通过指令来进行操作内存。在java中通过调用类的一系列方法。

2025-07-21 19:25:58 297

原创 线程池的核心配置参数和流程

线程池核心参数及其线程池的执行流程

2025-07-20 12:01:55 784

原创 对于线程池的状态的理解

线程池状态转换及存储机制解析:线程池通过5种状态(Running、Shutdown、Stop、Tidying、Terminated)管理线程生命周期。状态转换通过shutdown()/shutdownNow()触发,前者等待任务完成,后者立即中断。状态存储采用32位AtomicInteger,高3位记录状态(5种状态通过位移运算定义),低29位记录工作线程数。这种设计实现了线程状态和工作数量的高效统一管理,确保线程资源的合理分配和回收。

2025-07-19 11:54:52 219

原创 个人对于Java中线程池的看法

16, 核心线程的数量(保持存活的线程数量)5, 最大线程的数量60, 非核心线程存活时间TimeUnit.SECONDS, 存活时间的单位用于保存等待执行的任务的阻塞队列。

2025-07-14 19:03:31 253

原创 LeetCode 整数拆分

第二种为 j,dp[i-j],dp[i-j]表示,还可以继续进行拆分,继续计算对应的当前值的最大乘积。dp[0]和dp[1]是没有意义的 因为它们拆分出来的乘积 为 0。dp[i]表示,数字 i对应 的拆分的最大乘积。所以 i应该从 2开始进行计算 可拆分的最大值。),并使这些整数的乘积最大化。第一种 为 j 和 i-j。你可以获得的最大乘积。

2025-05-10 18:19:25 134

原创 深入理解 Java 中的 ArrayList

ArrayList 是 Java 集合框架中的一个类,实现了 `List` 接口。它基于动态数组实现,允许存储重复元素,并且元素是有序的(按插入顺序)。ArrayList是 Java 中最常用的集合类之一,它的实现基于动态数组,具有以下特点:随机访问速度快。尾部插入效率高。中间插入/删除效率低。需要额外的空间用于扩容。适合读取多、修改少的场景。不适合频繁插入/删除的场景希望这篇博客对你有所帮助!如果有任何问题或建议,欢迎在评论区留言讨论。

2025-03-01 17:55:06 478

原创 Integer的缓存池

在Integer类中存在着缓存池,而缓存池是什么呢?我们先来看一段代码和他对应的结果为啥会出现这样呢,这就是因为缓存池的存在,接下来我给大家解析一下这个缓存池的存在。

2025-02-08 23:32:40 924

原创 StringBuilder类的数据结构和扩容方式解读

StringBulider的底层同String一样都是一个字符数组,但是不同的是,StringBulider直接继承的,在这个父类中并没有使用final关键字进行定义这个字符数组,即它是一个可变的字符串,可以直接进行修改而不需要重新new一片空间并且指向该空间。那如何进行定义这个可变字符串呢//无参构造//有参构造,直接指定了空间大小。

2025-02-06 22:49:00 833

原创 String类的equals()的作用和源代码解读

equals()方法的由来继承自Object类,默认比较内存地址。重写equals()是为了根据对象的属性值判断相等性。equals()方法的源码解读默认实现包括:检查内存地址、检查null、检查类类型、强制类型转换、比较属性值。

2025-01-20 19:06:05 310 1

原创 String为什么是不可变的?

1.String不可变:任何对String的修改操作都会生成一个新的String对象,而不是修改原有的对象。2.内部数据结构:内部使用final类型的char数组数据结构的特点是不可变、线程安全、缓存哈希值。3.String方法:方法如`contains、`substring`、`charAt`等都会生成新的字符串对象,而不是修改原有的字符串。通过以上代码和解释,可以清楚地理解String的不可变性及其内部实现机制。

2025-01-19 19:31:22 1603 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除