- 博客(17)
- 收藏
- 关注
原创 TCP协议的三次握手与四次挥手深度解析
维度三次握手(建立连接)四次挥手(关闭连接)核心目标双向确认收发能力,协商 ISN、MSS、Window双向关闭连接,确保双方数据均传输完成状态流转客户端:CLOSED→SYN_SENT→ESTABLISHED服务器:CLOSED→LISTEN→SYN_RCVD→ESTABLISHED客户端:ESTABLISHED→FIN_WAIT_1→FIN_WAIT_2→TIME_WAIT→CLOSED服务器:ESTABLISHED→CLOSE_WAIT→LAST_ACK→CLOSED关键报文。
2025-09-04 18:59:05
794
原创 GC垃圾收集器的“垃圾收集算法”
在 Java 开发中,JVM 的垃圾收集(GC)总像个 “隐形助手”—— 不用手动释放内存,却在 OOM、Full GC 频繁、接口超时等问题爆发时,让不少开发者陷入困境。其实,GC 的核心能力,全藏在 “垃圾收集算法” 的设计里。毕竟 GC 不是 “无脑回收”,而是要在回收效率、内存碎片、业务停顿时间三者间找平衡:年轻代为何选复制算法?老年代为何用标记 - 整理?G1 的 Region 划分又如何优化延迟?这些答案,都得从算法逻辑里找。
2025-09-04 15:41:41
581
原创 Http协议的请求方式
HTTP(Hypertext Transfer Protocol,超文本传输协议)的请求方式(也称 “请求方法”)是客户端向服务器发送请求时,明确 “操作意图” 的标识。不同方法对应不同的语义,决定了服务器需要执行的操作(如获取数据、提交数据、修改资源等),并遵循 “安全性”“幂等性” 等核心特性。
2025-09-03 20:56:48
839
原创 Redis的删除策略
要全面、深入理解 Redis 的删除策略,需从设计背景核心分类(过期键删除策略 + 内存淘汰策略)内部实现细节与持久化的关联及实践选择五个维度展开。Redis 的删除策略本质是为了解决 “内存有限” 与 “性能优先” 的核心矛盾 —— 既要避免内存溢出,又要减少删除操作对单线程主线程的阻塞,同时保证数据一致性。Redis 的删除策略是 “主动清理(定期删除)+ 被动兜底(惰性删除)+ 内存溢出保护(内存淘汰)” 的三层架构,核心目标是平衡 CPU 资源、内存资源与数据一致性。
2025-09-03 18:32:12
989
原创 同步工具的底层依赖:AQS
在 JDK 1.5 之前,Java 的同步机制主要依赖关键字和Object类的方法。这些机制虽然简单易用,但存在明显局限性;随着 Java 并发场景的复杂化(如多线程协作、高并发控制),需要更灵活、高效的同步工具。JDK 团队(以并发领域专家Doug Lea不同同步工具(锁、信号量、倒计时器等)的底层逻辑存在共性,可以抽象为一套通用框架。JDK 1.5 正式引入(JUC)包,标志着 Java 并发编程进入新阶段。
2025-09-03 17:04:50
1071
原创 String类的equals()的作用和源代码解读
在 Java 中,String类的equals()方法是用于比较两个字符串的内容是否相等的重要方法,该方法接收一个Object类型的参数anObject,返回一个布尔值,表示当前String对象与传入对象的内容是否相等。在 Java 中,String类的equals()方法是重写自Object类的核心方法,其设计目标是精确判断两个字符串的字符序列是否完全一致。相较于Object类默认的 “引用地址比较”,实现了 “内容比较”,这一特性使其成为日常开发中最常用的方法之一。
2025-09-02 19:06:57
713
原创 深挖三色标记算法的底层原理
在JVM的垃圾回收机制中,准确识别哪些对象是垃圾(即不再被引用的对象)是核心任务之一,通常采用根可达性分析算法。传统的垃圾回收算法如标记-清除(Mark-Sweep)、标记-整理(Mark-Compact)等在标记阶段通常会产生STW(Stop The World)方式,这会导致应用程序出现明显的停顿。为了减少这种停顿时间,JVM引入了三色标记算法,它是现代垃圾回收器(如CMS、G1、ZGC等)的核心算法之一。三色标记算法是一种追踪式垃圾回收(GC)
2025-09-02 15:11:51
785
原创 SpringMVC的工作原理及其执行流程
首先,MVC模式 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将请求处理控制、业务逻辑、数据封装、数据显示等流程节点分离的思想来组织代码。如图所示:所以,MVC 是一种设计模式,而Spring MVC 是一款基于MVC设计模式思想实现的的 MVC 框架,属于Spring技术栈的一部分。Spring MVC 可以帮助我们进行更简洁的 Web 层的开发,并且它天生与 Spring框架集成,更利于架构的设计与搭建。
2025-09-01 19:24:26
1201
原创 Redis的五种常用数据类型。
作为一名Java开发人员,我们一定了解数据库MySQL,MySQL 是基于磁盘的关系型数据库,适合存储结构化数据,支持复杂查询和事务,侧重数据持久化与一致性,但速度较慢;所以我们引进了一款非关系型数据库——Redis, Redis 是基于内存的非关系型键值数据库,支持多种数据结构,读写极快,适合缓存、高频操作场景,内存存储为主,持久化是辅助。两者之间经常结合使用(如 Redis 缓存减轻 MySQL 压力)。
2025-09-01 18:37:30
1046
1
原创 SpringBoot的自动配置原理!
什么是Spring Boot呢?Spring Boot 是 Pivotal 团队研究开发的一款基于 Spring 框架的开源 Java 开发框架,它的核心目标是简化 Spring 应用的初始搭建和开发过程。Spring Boot 多用于开发微服务、RESTful API、Web 应用等,是目前 Java 后端开发中非常流行的框架之一。
2025-08-24 15:45:57
1042
原创 深入了解《Spring框架中Bean的生命周期》
在 Spring 框架中,Bean 是由 Spring IoC 容器管理的对象。创建出来的这些对象由容器实例化、组装和管理。毫不夸张的说,Bean 是构成应用程序主干并由 Spring IoC 容器管理的对象。所以说,在Spring框架中,Bean是非常重要的,那么今天我们就来深入了解一下bean的生命周期。
2025-08-17 15:46:38
848
原创 Mybatis持久层框架中的Executor执行器
MyBatis 中的Executor(执行器),你可以把它理解成"MyBatis 的大管家",专门负责所有和数据库打交道的脏活活儿都是它来干的。执行器就是 MyBatis 里实际操作数据库的 "打工人",负责 SQL 执行、结果转换、事务和缓存管理。根据业务场景选对执行器类型(比如批量操作选 BATCH),能让数据库操作更高效。所以我们只需要记住一句话就行:你调用 Mapper 方法时,背后帮你跑数据库的那个 "隐形人",就是执行器。
2025-08-09 18:30:50
651
原创 《线程池的状态》:状态的保存、切换
在现在的多线程编程中,线程池作为一种高效管理线程生命周期的机制,它能够减少频繁创建和销毁线程的开销。所以线程池的状态管理就会直接影响到线程池的运行效率、资源分配以及任务执行策略。对我们来说,深入理解线程池的不同状态及转换机制,可以帮助我们能够优化任务调度、避免资源浪费,并且提升程序的整体性能。线程池的状态是理解线程池工作原理的关键之一,它决定了线程池当前可以执行哪些操作,以及如何处理新提交的任务。本文将详细介绍线程池的五种状态,以及它们之间的转换关系。
2025-07-24 16:20:22
771
原创 线程池的核心配置参数和流程!
线程池是一种多线程处理形式,它管理着一组线程,负责线程的创建、复用和销毁等操作。合理使用线程池可以提高系统的性能和资源利用率,下面主要从它要使用到的核心配置参数和使用流程两个方面来进行讲解。任务提交:外部向线程池提交新任务。核心线程处理:若核心线程数小于,创建新的核心线程执行任务。任务入队:核心线程数达到后,新任务进入工作队列等待。非核心线程处理:工作队列满时,若线程总数未达,创建非核心线程执行任务。拒绝任务:线程总数达到且工作队列已满,执行拒绝策略处理新任务。
2025-07-23 18:21:53
744
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人