自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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

原创 责任链模式+Spring依赖注入(实际业务开发)

null) {

2025-07-24 12:58:11 560

原创 MVC模式

MVC:Model-View-Controller(模型-视图-控制器) 模式。这种模式用于应用程序的分层开发。

2025-07-15 14:35:30 361

原创 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关注的人

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