- 博客(13)
- 收藏
- 关注
原创 揭秘SpringBoot自动配置核心流程
SpringBoot的自动配置通过@SpringBootApplication注解实现,该注解组合了@EnableAutoConfiguration等核心功能。自动配置流程包括:扫描META-INF/spring.factories中的配置类,通过条件注解(如@ConditionalOnClass)筛选有效配置,最终注册符合条件的Bean到容器。AutoConfigurationImportSelector类负责处理核心逻辑,结合Starter依赖提供的自动配置
2025-08-23 15:29:17
868
原创 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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1