自定义博客皮肤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)
  • 收藏
  • 关注

原创 揭秘SpringBoot自动配置核心流程

SpringBoot的自动配置通过@SpringBootApplication注解实现,该注解组合了@EnableAutoConfiguration等核心功能。自动配置流程包括:扫描META-INF/spring.factories中的配置类,通过条件注解(如@ConditionalOnClass)筛选有效配置,最终注册符合条件的Bean到容器。AutoConfigurationImportSelector类负责处理核心逻辑,结合Starter依赖提供的自动配置

2025-08-23 15:29:17 868

原创 深入剖析Spring Bean的生命周期:从创建到销毁的全过程

Spring容器启动时,首先需要加载和解析Bean的配置信息:

2025-08-17 21:07:58 845

原创 MyBatis的核心组成部分(一)——MyBatis Mapper

1) #{ }是预编译处理,MyBatis在处理#{ }时,它会将sql中的#{ }替换为?2) ${ }是字符串替换,在处理{ }是字符串替换, MyBatis在处理{ }时, 它会将sql中的${ }替换为变量的值,传入的数据。,当查询结果的字段名和 Java 对象的属性名完全一致时,可以直接使用 resultType 进行自动映射。insert标签用于定义插入语句,执行插入操作,当执行完一次插入操作后,就会返回其影响数据库的行数。查询包含但不限于全查,条件查询,分页查询,聚合查询,模糊查询等。

2025-08-09 19:53:36 972

原创 MyBatis简介及解析MyBatis核心原理与应用

MyBatis是一个开源的轻量级半自动化ORM框架,封装JDBC,简化数据库操作,使得开发者可以只关注sql语句本身。//Student实体类//...构造方法...//Mapper接口//全查。

2025-08-09 19:52:25 597

原创 IDEA快速搭建Web项目,部署Tomcat环境(超详细版)

在"Server"选项卡中,点击"Configure"按钮指定Tomcat的安装目录,确保"Application server"指向正确的Tomcat路径,点击OK。选择Maven Archetype,重新命名,将JDK版本调整至1.8(默认是1.8,若是1.8以上的版本可能会产生兼容性影响,目前市面上1.8的版本用的最广泛,所以这里建议使用1.8,当然,高于1.8的版本也是可以的);在"Modules"选项卡中,确认"Web"模块存在,并检查"Web Resource Directory"是否指向。

2025-08-09 12:06:18 1343

原创 深入解析Java类加载机制

类加载的五个阶段是动态的,可能交叉进行(如解析可能在初始化后触发)。双亲委派模型通过递归委派保证类加载的安全性和唯一性。对象创建过程依赖类加载机制,且内存分配与初始化是分离的步骤。

2025-07-31 09:22:10 431

原创 深入解析HTTP协议:从请求到加密

HTTP协议是用于客户端与服务器传输超文本的应用层协议,通过请求/响应报文交互。请求报文包含方法(GET/POST等)、URL和首部字段;响应报文包含状态码(如200成功、404未找到)和数据内容。HTTP/1.1默认使用长连接复用TCP通道,而HTTPS在HTTP基础上通过SSL/TLS协议实现加密传输,采用非对称加密交换密钥+对称加密传输数据,端口443,具有防窃听、防篡改等安全特性。主要区别在于HTTP明文传输(80端口),HTTPS加密传输需要CA证书验证。

2025-07-30 14:57:30 1010

原创 《揭秘JVM垃圾回收机制与算法》

它会使用一条垃圾收集线程去工作,并且当它在进行垃圾收集时,需要将其他工作线程暂停(“Stop The World”),此时所有工作线程进入safepoint,直到垃圾收集完成。将存活对象标记,然后将其像内存空间一端直接移动,然后将边界外的垃圾对象直接进行回收。当一个白色对象(未被扫描的对象)被黑色对象(已被扫描的对象)引用。灰色对象对白色对象(未被扫描的对象)的直接或间接引用被破坏。将对象分为三种不同的颜色,每种颜色代表不同的状态。当计数器为0时,该对象将会被回收。跟踪对象被垃圾回收时的活动。

2025-07-28 19:08:38 901

原创 《JVM内存结构解析》

一个对象不可能永远处在新生代区域,当新生代中对象被GC垃圾回收,移交至Survivor区14次之后(默认阈值为15),晋升至老年代。元空间(Metaspace)与字符串常量池。记录当前线程执行的字节码指令地址。(JDK 1.6与1.8一致)堆(Heap)结构详解。

2025-07-24 16:51:12 784

原创 《线程池状态详解:从运行到终止》

来创建一个固定大小的线程池时,线程池会立即进入RUNNING状态,但此时线程池中还没有实际的工作线程。只有在提交第一个任务时,线程池才会开始创建线程。例如,在Android应用中,当Activity被销毁时,可能会使用这种方式快速关闭相关的线程池。当线程池被创建后,初始状态即为RUNNING状态。例如,在单元测试结束时,可能需要验证线程池是否已完全终止。方法,我们可以重写该方法来实现自定义的清理逻辑,比如释放资源、记录日志等。常见于需要快速终止线程池的场景,比如应用程序异常退出时。,表示线程池已完全终止。

2025-07-23 18:16:15 321

原创 《线程池:高效管理线程的利器》

线程池内部维护了若干个线程,没有任务的时候,这些线程都处于等待空闲状态。如果所有线程都处于忙碌状态,线程池会创建一个新线程进行处理或者放入队列(工作队列)中等待。执行顺序为:提交线程任务->核心线程->工作队列->最大线程数->拒绝策略。定时任务线程池(ScheduledThreadPool())单线程线程池(SingleThreadExecutor())线程的机制,避免了频繁创建线程和销毁线程所带来的资源损耗。非核心线程线程存活时间(keepAliveTime)核心线程数(corePoolSize)

2025-07-23 17:54:31 481

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

这种实现方法通常局限性比较大,不能满足实际开发中对于对象相等性的判断需求,因此在实际业务场景中,开发者更应该关心的时对象的内容或状态是否相等,而不是它们是否指向同一个内存地址。Object 类是所有类的父类,也就是说,Java中的每一个类都直接或间接的继承自Object类,所以,equals()方法作为Object类中的一个方法,被自动继承到所有类中。方法在Object类中的默认实现方法不能满足开发者多样化的需求,所以Java允许开发者在自定义的类中重写。方法是Java编程语言中的核心方法,最初定义在。

2025-03-06 15:45:47 398

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

关于String不可变的特性

2025-01-21 19:39:07 308 1

空空如也

空空如也

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

TA关注的人

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