自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JiaHao汤

JiaHao汤

  • 博客(65)
  • 收藏
  • 关注

原创 微服务注册中心深度解析:Eureka、Consul、Nacos 从原理到实战

本文介绍了分布式系统中的CAP理论及主流服务注册发现组件对比。CAP定理指出分布式系统无法同时满足一致性(C)、可用性(A)和分区容错性(P)三个特性,只能选择其中两项。Eureka采用AP模型,优先保证可用性;Consul采用CP模型,确保强一致性;Nacos支持AP/CP模式切换。文章详细对比了Eureka、Consul和Nacos在架构设计、工作原理、健康检查等方面的差异,并给出了组件选型建议。Eureka适合高可用场景,Consul适用于强一致性要求高的系统,而Nacos凭借灵活的CAP模式切换成为

2026-03-22 11:15:00 455

原创 深入理解 Java 线程控制:从 sleep 到 notify 的完整指南

Java线程控制方法摘要 本文详细介绍了Java中三种核心线程控制方法: sleep():使线程暂停指定时间,不释放锁,可被中断。适用于定时任务和限流控制。与wait()的区别在于不释放锁资源。 yield():提示线程调度器当前线程愿意让出CPU,但效果不可预测。适用于计算密集型任务中适当让出CPU,但实际开发中较少使用。 join():使当前线程等待目标线程完成,可被中断。底层通过wait()实现,适用于线程间协作。特别说明中断机制仅影响等待线程,不影响被等待线程。 每种方法都包含特性说明、使用示例和注

2026-03-18 08:00:00 377

原创 深入理解 Java 多线程:并发原理、线程管理与性能监控全解析

摘要:Java多线程技术通过并发执行提升程序性能,核心概念包括并发(任务交替执行)与并行(任务真正同时执行),以及进程(独立内存)与线程(共享内存)的区别。开发中可通过ps/jps查看进程,top监控资源使用,jstack分析线程堆栈,用于定位死锁、高CPU占用等问题。JVM内部线程如编译线程、GC线程等对性能有重要影响,需重点关注其运行状态。

2026-03-17 08:00:00 389

原创 深入理解 Java 线程池:从 ThreadPoolExecutor 原理到生产实战全解析

线程池是一种基于池化思想的线程管理机制,通过预先创建并维护一组可复用的工作线程,避免频繁创建和销毁线程带来的系统开销。其核心价值在于降低资源消耗、提高响应速度并增强可管理性。Java并发包提供了完整的线程池实现体系,包括ThreadPoolExecutor、Executors工厂类等核心组件。ThreadPoolExecutor作为标准实现,支持灵活配置核心线程数、任务队列类型和拒绝策略等参数,适用于CPU密集型、IO密集型等不同场景。任务执行流程遵循核心线程优先、队列缓冲、非核心线程补充的调度策略,确保高

2026-03-16 08:00:00 388

原创 Elasticsearch 索引(Index)完全指南:核心概念与操作实践

Elasticsearch索引具有多重含义:既是数据容器(类似数据库表),也是检索加速结构(如倒排索引),还指数据写入操作。索引创建后名称、分片数和字段类型不可修改,具有幂等性特征。命名需遵循小写字母和下划线分隔规范,由别名、设置和映射三部分组成。主要操作包括:创建索引(PUT请求)、查询索引(GET请求)、删除索引(DELETE请求)和检查索引存在(HEAD请求)。其中删除操作不可逆,需谨慎使用。索引管理需严格遵循规范,确保数据一致性和系统稳定性。

2026-03-15 08:00:00 385

原创 Elasticsearch 完全指南:概念、原理、安装与配置一文搞懂

Elasticsearch是一个基于Apache Lucene的开源分布式搜索与分析引擎,具有高扩展性和高性能特点,支持PB级数据的秒级检索。它采用倒排索引机制实现高效全文搜索,并具备水平扩展能力。作为Elastic Stack的核心组件,Elasticsearch常与Kibana、Logstash等工具配合使用。相比MySQL,Elasticsearch更擅长处理海量数据的搜索和分析,但不支持ACID事务,写入延迟较高。其优势包括开源免费、原生分布式架构、多语言支持等,广泛应用于日志分析、实时监控等领域。

2026-03-14 08:00:00 630

原创 一文搞懂 SpringBoot 启动流程:从 main 方法到容器初始化全过程

SpringBoot启动流程摘要(150字) SpringBoot启动本质是Spring容器的初始化过程,通过自动配置机制简化了传统Spring的手动配置。启动流程分为参数初始化、容器创建和上下文刷新三个阶段。初始化参数包括环境变量、系统配置和应用参数三类。核心启动过程通过SpringApplication.run()方法执行,依次完成:环境准备、监听器触发、容器创建(根据WebApplicationType判定类型)、上下文准备与刷新(包含Bean实例化和自动配置生效)。整个过程通过事件监听机制实现扩展,

2026-03-13 08:00:00 961

原创 深入理解 MySQL 日志系统:六大日志类型配置与实战指南

MySQL日志系统是数据库运维的核心组件,提供多种日志类型以满足不同需求。主要包括错误日志(记录运行错误)、二进制日志(用于数据恢复和主从复制)、查询日志(记录所有SQL语句)、慢查询日志(记录超时查询)、中继日志(主从复制专用)以及事务日志(InnoDB的重做/回滚日志)。各日志可通过配置文件或SQL命令动态配置,其中二进制日志支持ROW、STATEMENT和MIXED三种格式。慢查询日志通过long_query_time阈值识别性能瓶颈,而事务日志通过redo/undo机制保障事务的ACID特性。合理配

2026-03-12 08:00:00 352

原创 SpringBoot 启动流程深度解析:源码追踪与事件监听机制

本文介绍了SpringBoot中Bean依赖属性配置管理和自动配置原理。通过将业务功能Bean的属性抽取为独立属性类(如SmsProperties),使用@ConfigurationProperties注解绑定配置文件,实现配置与代码解耦。自动配置的核心流程包括:初始化环境、加载技术集、条件匹配、应用默认配置和允许配置覆盖。文章以短信服务为例,展示了如何定义核心功能类、配置属性类、创建自动配置类(使用@Conditional条件注解)并注册自动配置。这种方式既支持默认配置快速启动,又允许通过配置文件自定义参

2026-03-11 08:00:00 870

原创 深入理解 Spring AOP:从原理到实战的完整指南

AOP(面向切面编程)是一种补充OOP的设计思想,通过预编译或动态代理在不修改源码的情况下为程序添加功能。核心作用包括简化代码(抽取重复逻辑)和代码增强(封装切面类)。AOP核心术语包括横切关注点、通知、切面、目标对象等。Spring AOP基于动态代理实现,分为JDK动态代理(需接口)和CGLIB代理(继承方式)。Spring会根据目标类特征自动选择代理策略:有接口用JDK,无接口用CGLIB。切入点表达式通过execution语法定位要增强的方法,支持通配符灵活匹配类和方法。AOP能有效解耦业务逻辑,提

2026-03-10 08:00:00 404

原创 Linux 入门完全指南:发行版选择、安装与配置

Linux是由Linus Torvalds于1991年开发的开源操作系统内核,具有多用户多任务、跨平台兼容和稳定安全等特点。作为Unix-like系统,Linux遵循POSIX标准但独立于Unix,其开源特性使其广泛应用于服务器、云计算、嵌入式设备等领域。主流发行版分为Debian(如Ubuntu)、Red Hat(如CentOS)、SUSE等系列,用户可根据需求选择适合版本。安装方式包括虚拟机、双系统等,建议新手从Ubuntu开始学习。Linux凭借优异的性能、丰富的生态和强大的社区支持,已成为现代计算领

2026-03-09 08:00:00 337

原创 深入理解 Java 类加载器:从 JDK 8 到 JDK 9+ 模块化系统全解析

本文概述了Java类加载器的核心概念及JDK 9+的重要变化。类加载器负责将字节码加载到JVM内存并完成初始化,分为Java实现和虚拟机底层实现两类。JDK 9引入模块化系统后,目录结构发生重大调整,取消了jre目录和扩展类加载器,改用平台类加载器。模块化系统通过module-info.java实现显式依赖和强封装,解决了JRE臃肿、类路径冲突等问题。开发者需注意ext目录失效、内部API访问受限等变化,迁移时应将JAR包移至类路径或使用模块路径。这些变革提升了Java的安全性、封装性和性能优化能力。

2026-03-08 08:00:00 559

原创 深入理解 Java 双亲委派机制:原理、流程图解与实战应用

双亲委派机制是Java类加载的核心机制,通过父类加载器优先加载的原则确保核心类库的安全性和唯一性。该机制工作流程分为向上委派和向下加载两个阶段:加载请求从子类加载器逐级向上委派至启动类加载器,再由启动类加载器开始向下尝试加载。该机制通过ClassLoader的loadClass()方法实现,能避免类重复加载、保证核心类库安全。JDK9+版本中扩展类加载器被平台类加载器取代,但机制原理不变。特殊场景下可通过重写loadClass()方法打破该机制。

2026-03-07 08:00:00 803

原创 Redis 缓存与数据库双写一致性问题全解析:5 种解决方案对比与最佳实践

本文探讨了现代应用系统中数据库与缓存双写一致性问题及其解决方案。核心要点包括:1)删除缓存优于更新缓存;2)先更新数据库再删除缓存的策略更优;3)必须设置缓存过期时间作为保障机制。推荐方案包括通用场景的"先更新数据库→删除缓存+重试机制"、高一致性场景的"Canal监听Binlog+MQ异步更新"以及强一致性场景的分布式锁方案。文章对比了三种缓存更新策略(逐出算法、超时过期、主动更新)和三种主动更新模式(缓存分离、读/写直通、写后缓存),分析了并发场景下数据不一致的时

2026-03-06 08:00:00 655

原创 深入浅出 MyBatis 组件生命周期管理

MyBatis组件生命周期管理指南:SqlSessionFactoryBuilder用于构建SqlSessionFactory,构建完成后即可丢弃;SqlSessionFactory应作为应用级单例长期存在;SqlSession是请求/方法级别,需及时关闭避免泄漏;Mapper实例与SqlSession同生命周期,不应作为成员变量。关键点包括:SqlSessionFactory线程安全可共享,SqlSession和Mapper非线程安全需隔离使用,在Spring中可通过依赖注入自动管理。正确管理生命周期可避

2026-03-05 08:00:00 357

原创 深入理解 MySQL 事务:ACID 特性、隔离级别与最佳实践全解析

事务是数据库操作的基本单元,具有ACID四大特性:原子性确保事务要么全部执行要么全部回滚;一致性保证数据从一个合法状态转换到另一个合法状态;隔离性防止并发事务相互干扰;持久性确保已提交事务永久生效。通过转账案例演示了事务如何维护数据完整性,当操作失败时自动回滚,避免数据不一致。事务机制是数据库区别于文件系统的关键特性,保障数据操作的安全性和可靠性。

2026-03-04 08:00:00 349

原创 深入理解 JVM 垃圾回收机制:从原理到实战全面解析

本文介绍了Java垃圾回收机制的核心概念和工作原理。主要内容包括:1)垃圾回收的作用范围,重点作用于堆内存,线程私有区域和方法区各有特定回收策略;2)判断对象可回收性的方法,包括可达性分析算法和四种引用类型(强、软、弱、虚引用);3)主流垃圾回收算法(标记-清除、标记-复制、标记-整理)及其优缺点;4)分代收集算法如何根据不同代(新生代/老年代)的对象特性采用不同回收策略。理解这些机制对性能调优、故障诊断和代码优化具有重要意义。

2026-03-03 08:00:00 829

原创 Spring Bean 生命周期完全指南:从实例化到销毁的全流程详解

Spring Bean 的生命周期包含7个关键步骤:1)实例化Bean并填充属性;2)注入Aware接口依赖;3)BeanPostProcessor前置处理;4)初始化方法执行;5)BeanPostProcessor后置处理;6)Bean使用阶段;7)销毁阶段。通过实现Aware接口可获取容器资源,利用BeanPostProcessor可在初始化前后执行自定义逻辑。掌握生命周期有助于在适当阶段进行扩展和优化。

2026-03-02 08:00:00 833

原创 MyBatis 初始化流程详解:从配置加载到 SqlSessionFactory 创建

MyBatis是一个简化Java与数据库交互的持久层框架。其初始化过程包括:加载配置文件mybatis-config.xml,创建XMLConfigBuilder解析器解析全局配置,构建核心Configuration对象存储配置信息,解析Mapper映射文件生成MappedStatement对象,注册Mapper接口,最终创建SqlSessionFactory。关键对象包括XMLConfigBuilder、Configuration、MappedStatement等,它们共同完成框架运行环境的构建。整个初始

2026-03-01 08:00:00 956

原创 Redisson 完全指南:从入门到实战的 Redis 分布式解决方案

Redisson是一个基于Redis的Java分布式框架,提供分布式锁、对象和服务等特性。相比Jedis和Lettuce,Redisson支持异步非阻塞通信、线程安全和开箱即用的分布式功能。主要特性包括可重入锁、公平锁、读写锁等分布式锁机制,以及Map、Set、List等分布式数据结构。此外,还提供信号量、倒计时闩等同步工具,支持单机、集群等多种部署模式。通过看门狗机制实现锁自动续期,确保分布式场景下的数据一致性。

2026-02-28 08:00:00 1418

原创 Linux 基本命令完全指南:从文件操作到文本处理的全面解析

Linux常用命令速查表 本文整理了Linux系统中最常用的文件操作命令,包括文件和目录管理、内容查看、搜索定位以及文本处理四大类。详细列出ls、cd、cp等基础命令的常用选项和示例,涵盖文件创建、删除、移动、查看等日常操作;介绍grep、sed、awk等文本处理工具的使用方法。适用于Linux初学者快速掌握核心命令,提高系统操作效率。

2026-02-27 08:00:00 696

原创 深入理解 MySQL 索引:B+Tree 原理、聚簇索引与性能优化全解析

索引(index)是帮助 MySQL 高效获取数据的有序数据结构。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。

2026-02-26 08:00:00 1737

原创 MySQL 存储引擎详解:InnoDB 架构与原理深度剖析

MySQL存储引擎是数据库的核心组件,采用插件式架构支持多种引擎类型。InnoDB是默认引擎,支持事务、行锁和外键;MyISAM适合读密集型场景;MEMORY引擎将数据完全存储在内存中。各引擎在事务支持、索引类型、存储限制等方面差异显著。InnoDB因其ACID特性、崩溃恢复和高并发处理能力成为首选,尤其适合数据一致性要求高的场景。可通过SHOW ENGINES查看支持引擎,使用ALTER TABLE修改表引擎。存储引擎选择需根据业务需求权衡性能、功能特性和数据安全性。

2026-02-25 08:00:00 1561

原创 深入理解 Spring IOC:从底层原理到实战应用全解析

IOC(Inversion of Control,控制反转)思想强调将创建 Bean 的控制权委托给第三方,以实现组件间解耦。IOC 通过 DI(Dependency Injection,依赖注入)方式实现,由 Spring 容器负责管理 Bean 之间的依赖关系。在 Spring 中,通过注解(如 @Autowired)或 XML 配置方式将依赖注入到目标位置。

2026-02-24 08:00:00 937

原创 深入理解 MySQL JOIN 底层原理:三种算法详解与性能优化实战

深入理解 MySQL JOIN 底层原理:三种算法详解与性能优化实战

2026-02-23 08:00:00 898

原创 MySQL 连接池完全指南:原理、配置与最佳实践

连接池(Connection Pool)是一种创建和管理数据库连接的缓冲池技术。连接池负责分配、管理和释放数据库连接,允许应用程序重复使用现有的数据库连接,而不是每次需要时都重新建立连接。

2026-02-22 08:00:00 878

原创 MySQL 约束详解:从基础操作到最佳实践

约束是作用于表中字段上的规则,用于限制存储在表中的数据。目的是保证数据库中数据的完整性、有效性、一致性。

2026-02-21 08:00:00 711

原创 MySQL SQL 性能优化实战指南

SQL 性能优化是数据库应用开发中至关重要的一环。随着业务数据量的增长和并发访问量的提升,未经优化的 SQL 语句可能会导致严重的性能问题,包括查询响应缓慢、数据库连接池耗尽、服务器资源占用过高等,最终影响用户体验甚至导致系统崩溃。

2026-02-20 08:00:00 1432

原创 深入理解 MySQL 锁:全局锁、表锁、行锁与死锁全解析

锁是数据库协调多个进程或线程并发访问资源的机制。MySQL 中的锁机制基于事务,事务执行时自动获取锁,结束后自动释放。

2026-02-19 08:00:00 1805

原创 MySQL 数据类型完全指南:从入门到精通

本文全面介绍 MySQL 中的所有常用数据类型,包括数值类型、字符串类型、日期时间类型等,详细讲解每种类型的特点、存储空间、适用场景,以及 CHAR vs VARCHAR、DATETIME vs TIMESTAMP 等实际开发中的选型问题。

2026-02-18 08:00:00 2047

原创 一文掌握 SQL:数据定义、操作与查询完整教程

SQL(Structured Query Language,结构化查询语言)是一种用于管理关系数据库系统的特定语言。通过 SQL 可以定义、操作和管理数据库中的数据,执行各种数据库操作。SQL 主要由数据定义语言(DDL)、数据操纵语言(DML)、数据控制语言(DCL)和事务控制语言(TCL)组成,用于定义数据库结构、操纵数据、控制访问权限以及管理事务。

2026-02-17 15:36:13 1035

原创 Spring MVC 在各种情况下的请求参数绑定

Spring MVC 可以通过分析控制器方法的形参将 HTTP 请求参数绑定到控制器方法的入参中。

2025-09-10 08:00:00 830

原创 Redis 主从模式原理及优化方案

主从复制是为了避免 Redis 服务器单点故障,准备多台服务器,其中一台 master 可以拥有多台 slave,一台 slave 只对应一台 master。它们之间互相连通,将数据复制多个副本保存在不同的服务器上,并保证数据同步,实现数据冗余备份。这样即使其中有一台 Redis 服务器宕机,其他服务器也能够正常提供服务。

2025-09-06 11:20:58 596

原创 RabbitMQ 生产者、消息、消费者可靠性保证

RabbitMQ 可靠性可以从三个方面分析,分别是生产者可靠性、消息可靠性、消费者可靠性。

2025-09-05 08:00:00 2029

原创 Java 并发编程之 FutureTask

在 Java 并发编程中,`java.util.concurrent.FutureTask` 实现了 `RunnableFuture` 接口,而 `RunnableFuture` 又继承自 `Runnable` 和 `Future` 接口。这使得 `FutureTask` 既可以作为一个 `Runnable` 被线程执行,又可以作为一个 `Future` 来获取异步计算的结果。

2025-08-16 08:00:00 974

原创 Java 并发编程之 ReentrantLock

`java.util.concurrent.locks` 包下的 `ReentrantLock` 是 Java 并发编程中一个非常重要的工具,它是一个可重入的互斥锁,功能上类似于 `synchronized` 关键字,但更加灵活和强大。

2025-08-15 08:00:00 845

原创 Java 并发编程之 synchronized 关键字

在 Java 并发编程中,`synchronized` 关键字是一个非常重要的工具,用于实现线程同步,确保在同一时刻只有一个线程可以访问被保护的代码块或方法,从而避免多个线程同时操作共享资源时可能出现的数据不一致等并发问题。

2025-08-14 08:00:00 717

原创 SpringBoot 集成 Junit 单元测试

`@SpringBootTest` 注解作用是指示测试类是一个 SpringBoot 应用程序的集成测试类,用于加载完整的应用程序上下文,包括所有的配置、组件和依赖项。它会模拟启动整个应用程序,并提供一个可用于执行集成测试的应用程序上下文。

2025-08-13 08:00:00 1061

原创 AI 编程工具:Cursor 概述、安装以及环境配置

Cursor 是一款功能强大的 AI 优先代码编辑器,可增强开发者的开发工作流程。

2025-08-12 08:00:00 1656

原创 Java 虚拟机运行时数据区组成详解

JAVA 虚拟机的运行时数据区指的是 JAVA 虚拟机在运行 Java 程序过程中管理的内存区域。在《Java 虚拟机规范》中,明确规定了运行时数据区每一部分的作用,运行时数据区的组成部分有程序计数器、堆、栈(可再细分为 Java 虚拟机栈与本地方法栈)、方法区。

2025-08-10 08:00:00 924

空空如也

空空如也

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

TA关注的人

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