- 博客(17)
- 收藏
- 关注
原创 Maven本地仓库有jar还会向远程仓库下载依赖的问题
后来,查阅资料后才知道,maven本地仓库中,会有一个文件叫做_remote.repositories的文件,在本地仓库的每个依赖包都存在一个名为。中的id发生了变化,或者远程仓库的URL发生改变,Maven会认为依赖的来源已经改变,从而需要重新从远程仓库下载(确保远程上有)。昨晚上,把远程代码弄下来想调试一下,没想到,一模一样的本地仓库依赖项(pom依赖),一点maven刷新就会说什么远程仓库上没有。当时觉得很奇怪,我本地仓库不是有吗,为什么还要去远程仓库下呢?的文件,该文件记录了依赖的来源信息。
2025-12-23 11:07:26
241
原创 Java中泛型擦除详解
Java是伪泛型,Java在编译期间,所有泛型信息都会被擦除掉。具体来说,就是在编译期间,编译器会将泛型类型参数,例如<T>,替换为它们的边界类型(如果没有指定边界,则替换为Object),并在需要的地方插入类型转换,以保证类型安全。这样,在运行的字节码中,泛型类型信息就被擦除掉了。泛型擦除的主要目的是为了保持与旧版本Java的兼容性,因为泛型是在Java 5引入的,而Java的类库和应用程序在之前是没有泛型的。泛型代码可以与非泛型代码可以互操作。在编译后,由于泛型擦除,就会变成。
2025-11-25 10:59:25
507
1
原创 MyBatisPlus不能更新空值(MyBatisPlus踩坑,更新NULL值问题)
在-Plus中调用updateById方法进行数据更新默认情况下是不能更新空值字段的。而在实际开发过程中,往往会遇到需要将字段值更新为空值的情况。就比如说,我现在要更新一个信息单,流程一般是首先根据id查询详细信息返回给前端,然后我对其中的信息进行更新。比如说我更新个人信息,我现在有一个爱好标签,本来是有几个标签的,现在我把全部标签删除掉,不让他有标签了(也就是说这个字段返回给后端的值是空的)可以看到,可以看到由于标签字段的值为null,所以执行updateById方法时没有对email字段进行更新。
2025-10-17 10:57:42
519
1
原创 MySQL锁相关(最新理解)
当时了解到有一个最左前缀原则,然后又慢慢了解到MySQL的各种索引,然后就又了解到MySQL的各种底层机构,比如锁,MVCC这些。比如像什么行级锁,表级锁,间隙锁,意向锁,读锁,写锁,记录锁,临建锁等等,概念是会了,考我概念是什么我肯定能对答如流。每次读到相关文章,我就彷佛置身于一个新世界,对锁又有更深的理解,接下来我们来聊聊锁相关的知识。这个不用多说,我想着重讲一下记录锁。记录锁可能是读锁,也可能是写锁,具体要看执行的sql。看完上面的内容,你或许心中已经有了答案,要么表锁,要么记录锁,要么临键锁。
2025-10-08 15:08:25
355
原创 SQL的执行过程(MySQL)
为例,把每个阶段、每个组件、以及每个阶段产生的中间结果用“时序图”的方式串起来。其它 DML(INSERT/UPDATE/DELETE)在相同框架下只多了“写 undo/redo、锁、刷盘”等额外步骤,文中会穿插指出。• 连接器负责三次握手、认证(user/host/password/plugin)、线程分配(one-thread-per-connection)。这是 MySQL 最复杂、最容易出性能问题的部分,可以大概了解,生成最终的执行计划,使用Explain可以使执行计划可视化。
2025-08-30 16:14:12
239
原创 MySQL索引失效的十大经典场景及优化建议
索引是提高数据库查询性能的利器,但的索引甚至会成为负担。理解索引何时会失效是进行高性能SQL设计和数据库优化的关键一步。在开始之前,请永远记住一个。
2025-08-27 16:26:53
912
2
原创 Java线程池核心参数设置指南
任务类型特点核心线程数建议最大线程数建议CPU密集型大量计算,少阻塞CPU核心数或CPU核心数 + 1同核心数或稍大I/O密集型大量网络、磁盘等待CPU核心数 * (2 ~ 5)核心线程数 * 2或更大给博客读者的最终行动指南:理论分析:首先判断你的应用是CPU密集型还是I/O密集型,或者是混合型(以某一种为主)。设定初值:根据上表和经验公式,给出一个初始的配置。压力测试:这是最关键的一步。使用jmeterwrk等工具模拟真实场景进行压测。监控与观察CPU利用率。
2025-08-27 15:32:21
2479
原创 Java高频面试题(2025年最新整理)
非线程安全JDK8后采用数组+链表/红黑树结构扩容时可能导致死循环(JDK7)允许null键和null值线程安全JDK8改用CAS+synchronized实现锁粒度更细(只锁桶头节点)支持多线程协同扩容不允许null键和null值。
2025-08-05 19:04:54
528
4
原创 SpringAOP
代理就是控制对原对象的访问,为其他对象提供一种代理,添加额外逻辑,起到一种中介的作用。可以在不修改目标的前提下对目标对象的方法进行增强。代理分为两种,静态代理和动态代理。
2025-07-03 20:45:34
336
原创 Spring如何解决循环依赖问题?
循环依赖就是IOC容器加载过程中,Bean创建时的矛盾,比如A依赖于B,B依赖A。Spring采用三级缓存解决循环依赖问题(三个Map)。
2025-07-03 18:15:59
638
原创 SpringBoot自动配置的原理
遵循约定大于配置的原则,在boot程序启动后,起步依赖中的一些bean对象会自动注入IOC容器就比如,在咱们用MyBatis的时候,只需要引入MyBatis的起步依赖,像SqlSessionBean这样的对象会自动注入IOC容器。
2025-07-02 15:47:45
510
原创 最全ThreadLocal详解
首先说一下什么是弱引用,弱引用就是如果没有强引用指向它,那么下一次GC必然会被回收。在上面的ThreadLocalMap的源代码中我们看到ThreadLocal<>的前面有一个WeakReference<ThreadLocal<?>>,那这里的key为什么要弄成弱引用呢?上面我们聊到设计ThreadLocal的初衷就是提供一个全局访问点,给线程提供局部变量。ThreadLocal的作用就是将我们要设置的值value跟当前线程Thread联系起来,既然set完了,那还留着这个key有什么用呢?
2025-06-28 17:11:53
1532
原创 AQS(通俗易懂地讲解源码)
AQS(AbstractQueuedSynchronizer)概述AQS 的核心设计AQS 的 API 设计ReentrantLock 与 synchronized 的区别
2025-06-21 17:03:03
886
原创 设计模式之单例模式(含双重检查锁定详解)
请解释一下什么是单例模式,并给出一个使用场景。单例模式有哪几种实现?如何保证线程安全?单例模式有什么好处?写出单例模式代码。
2025-06-18 21:17:29
704
9
原创 Java中synchronized的神秘面纱
不知不觉已经到了锁升级了,了解锁升级的话首先要了解对象的内存布局。这里借用一下别的博主的图。我们看到锁标志位是用来描述锁的状态的。01代表无锁或者偏向锁(前面的偏向标志为1),00代表轻量级锁,10代表重量级锁,11是GC标记。
2025-06-17 16:47:54
2321
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅