自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 收藏
  • 关注

原创 一文详解JVM中类的生命周期

本文详细介绍了Java类的生命周期,包括加载、连接、初始化、卸载四个阶段。在加载阶段,JVM会在方法区创建InstanceKlass对象,同时在堆上生成对应的Class对象。连接阶段包含验证、准备、解析三个子过程。初始化阶段会执行clinit方法,完成静态变量赋值和静态代码块执行。文章还分析了触发初始化的条件,以及继承情况下的初始化顺序,并解释了final变量和数组创建的特殊处理。最后说明了类卸载的三个必要条件:实例对象回收、类加载器回收、Class对象无引用。

2026-01-18 01:03:34 846

原创 一文讲清楚JVM字节码文件的组成

本文介绍了Java字节码文件的结构与解析方法。字节码文件以二进制存储,可通过jclasslib工具查看,包含基本信息、常量池、字段、方法和属性五部分。重点分析了方法字节码指令的执行机制,通过操作数栈和局部变量表解释i++与++i的区别:i++先取值后自增,结果为0;++i先自增后取值,结果为1。文中还对比了i++与j=j+1的指令差异,前者仅需1条指令,后者需要4条指令。这些底层细节对理解Java运行机制和面试准备具有重要意义。

2026-01-16 00:12:43 777

原创 一文讲清楚SQL优化所有使用场景

本文分别从七个不同的方面介绍了SQL优化的场景即优化思路;包括插入数据时的SQL优化,主键优化,order by 优化,group by 优化,limit 优化,count 优化,update 优化;从多个角度详细介绍了SQL优化的思路。

2026-01-15 00:44:30 1143

原创 Spring事务失效常见场景和处理思路总结

本文总结了Spring事务失效的常见场景。主要问题包括:1)方法权限非public导致AOP代理失效;2)类内部调用绕过代理;3)异常被捕获未抛出;4)异常类型不匹配;5)数据库引擎不支持;6)传播行为设置不当;7)多线程环境下的线程隔离;8)手动new对象调用;9)注解位置错误;10)事务嵌套问题。解决方案包括:确保public方法、通过代理调用、正确抛出异常、指定回滚异常、使用InnoDB引擎、合理设置传播行为等。建议在Service层使用@Transactional,明确指定属性,最小化事务范围等

2026-01-02 23:24:19 425

原创 一文详解MyBatis中实现分页的方式(附代码示例)

本文介绍了三种MyBatis分页实现方式:1)原生SQL分页(LIMIT/OFFSET),通用但需手写SQL;2)PageHelper插件分页,简单易用但依赖第三方;3)MyBatis-Plus内置分页,功能全面适合新项目。推荐新项目使用MyBatis-Plus,已有项目可用PageHelper,性能要求高时建议手写SQL分页。文中提供了各方式的代码示例和配置方法,并比较了优缺点和适用场景。

2025-12-22 23:57:12 1140

原创 一文详解Spring中的JDK动态代理和CGLIB动态代理(附详细代码流程演示)

动态代理是Spring AOP的底层实现机制,主要包括JDK动态代理和CGLIB动态代理。JDK动态代理基于接口,要求目标类必须实现接口,通过Proxy和InvocationHandler生成代理类;CGLIB基于继承,可代理普通类,通过Enhancer和MethodInterceptor实现。Spring默认对接口使用JDK代理,对无接口类使用CGLIB,也可强制配置使用CGLIB。两者主要区别在于JDK代理仅支持接口,而CGLIB支持类和接口,性能上CGLIB更优但首次生成较慢

2025-12-21 18:34:50 943

原创 一文讲清楚Spring中IoC和AOP的核心思想与实现方式(附详细代码示例)

Spring框架中的两个核心概念:控制反转(IoC)和面向切面编程(AOP)。IoC通过将对象创建和依赖关系的管理权交给容器来实现解耦,主要采用依赖注入(DI)方式实现,包括构造器注入、Setter注入和字段注入三种形式。AOP则通过动态代理技术将横切关注点(如日志、事务等)模块化,提供了前置、后置、环绕等多种通知类型,以及连接点、切入点等术语概念。IoC和AOP的主要区别:IoC关注对象创建和依赖管理,而AOP专注于横切逻辑的模块化。共同构成了Spring框架的基础设计理念,分别实现了"解耦"和"复用”

2025-12-20 22:27:31 1286

原创 一文讲清楚Spring的自动装配原理和实现方式

Spring自动装配的核心是通过IoC容器基于类型或名称匹配,利用反射机制动态注入依赖对象。主要实现方式包括XML配置(已较少使用)、注解驱动(@Autowired、@Resource、@Inject等)和JavaConfig配置。容器启动时解析Bean定义并注册,随后收集依赖并通过反射完成注入,同时处理循环依赖问题。建议优先使用构造器注入,避免字段注入以提升代码可测试性和封装性。

2025-12-19 20:16:56 1310

原创 一文讲清楚Spring中的三级缓存(附完整流程演示)

Spring通过三级缓存解决单例Bean循环依赖和AOP代理兼容问题。一级缓存存储完全初始化的Bean,二级缓存存放已实例化但未初始化的Bean,三级缓存保存ObjectFactory工厂对象。该机制按1→2→3顺序查找,通过延迟决策在发生循环依赖时才创建代理对象。构造器注入和原型Bean无法使用此方案,@Async方法也需特殊处理。三级缓存既保证了Bean生命周期完整性,又支持AOP增强功能,是Spring容器实现循环依赖的核心机制。

2025-12-18 18:46:01 1786

原创 一文详解Spring Bean的循环依赖问题及解决方案(三级缓存)

Spring框架中循环依赖指Bean间相互引用(如A依赖B,B又依赖A)。Spring能解决单例模式下setter注入的循环依赖,通过将实例化和属性赋值分离,利用三级缓存机制提前曝光Bean实例。但无法解决原型作用域下的循环依赖或构造器注入导致的循环依赖。解决方案包括:使用setter注入、@Lazy延迟加载、ApplicationContext手动获取或ObjectProvider。核心机制是通过一级缓存(单例对象)、二级缓存(早期对象)和三级缓存(对象工厂)协同工作来打破循环依赖。

2025-12-17 20:38:45 1270 1

原创 一文讲清楚Spring Bean的生命周期(附详细流程图)

Spring Bean的生命周期管理是Spring框架的核心机制,主要包括实例化、属性赋值、初始化、使用和销毁五个基本阶段。其中初始化阶段可通过实现InitializingBean接口、@PostConstruct注解或XML/JavaConfig配置实现;销毁阶段则可通过DisposableBean接口、@PreDestroy注解等方式处理资源释放。更详细的生命周期还包括Bean后处理器(BeanPostProcessor)的介入,形成7个关键步骤。建议优先使用标准注解方式实现生命周期回调

2025-12-16 19:35:29 975

原创 一文详解Java中死锁产生原因、常见场景及排查解决思路(附详细案例代码)

死锁是多线程程序中因争夺资源而导致的相互等待现象。常见场景包括:1)嵌套锁顺序不一致;2)动态锁顺序冲突;3)资源死锁。避免方法包括:固定锁获取顺序、使用超时机制和减少嵌套锁。排查死锁可通过jstack命令或jconsole工具检测线程堆栈信息。典型示例展示了两个线程互相持有对方所需锁导致的循环等待情况。

2025-12-15 19:08:33 588

原创 一文详解Java中Thread、ThreadGroup 和 ThreadLocal<T> 三者的区别和用途

本文介绍了Java中三种线程相关的重要概念:Thread、ThreadGroup和ThreadLocal。Thread类是Java中表示和管理线程的核心类,提供并发执行、任务封装和生命周期控制等功能。ThreadGroup用于将多个线程组织成树形结构进行统一管理。ThreadLocal<T>则为每个线程提供独立的变量副本,实现数据隔离和上下文传递,需注意内存泄漏风险。三者各司其职:Thread是任务执行者,ThreadGroup是线程管理员,ThreadLocal是线程的私有数据存储

2025-12-14 18:20:51 785

原创 一文详解JUC中乐观锁的实现原理(CAS)、实现方式、优缺点及应用场景总结

乐观锁是一种无锁并发控制机制,假设并发冲突较少,通过检查数据是否被修改来决定更新操作。Java中主要通过CAS(Compare And Swap)实现,使用Unsafe类直接操作内存保证原子性。乐观锁有三种实现方式:原子类(AtomicInteger等)、版本号机制(数据库version字段)和时间戳机制。虽然CAS高效但存在ABA问题和循环开销大的缺点,可通过AtomicStampedReference解决ABA问题。乐观锁适用于读多写少场景,如计数器、状态标志、无锁数据结构和单例模式优化等,但在高竞争环

2025-12-13 14:15:45 1273

原创 一文讲透布隆过滤器实现原理及应用场景总结

布隆过滤器是一种空间效率极高的概率型数据结构,通过位数组和多个哈希函数实现元素检测。其核心机制是:添加元素时,通过哈希函数将多个位位置置1;查询时,若所有对应位均为1则判定可能存在(可能误判),否则必定不存在。主要优势是节省空间、查询快速(O(k)时间),但存在误判可能且不支持删除操作。典型应用包括缓存穿透防护、URL去重、恶意网站检测等场景,通过牺牲一定准确性换取极高的空间效率。通过调整位数组大小和哈希函数数量可以控制误判率。

2025-12-12 21:52:13 940

原创 一文讲透索引数据结构——B-Tree / B+Tree / Hash 的特点及对比

B+Tree索引相比B-Tree和Hash索引的优势:B+Tree层级更少、查询效率高且稳定,所有数据存储在叶子节点并通过链表连接,支持高效的范围查询和排序。而B-Tree非叶子节点也存数据导致树增高,Hash索引虽查询快但不支持范围操作。MySQL的InnoDB采用优化的B+Tree(增加相邻节点指针)来提升性能,使其成为最合适的索引结构。

2025-12-12 19:03:55 668

原创 RocketMQ中消息消费的两种模式

RocketMQ提供两种消息消费模式:负载均衡(CLUSTERING)和广播(BROADCASTING)。负载均衡模式下,同一消费者组内的消费者会分摊消费队列中的消息,消费者数量不应超过队列数;广播模式下每个消费者都会消费所有消息,且不会记录消费位点。负载均衡模式通过@RocketMQMessageListener注解的MessageModel.CLUSTERING参数实现,是默认模式;广播模式则使用MessageModel.BROADCASTING参数。两种模式适用于不同场景,负载均衡适合高效消费,广播适

2025-12-11 22:55:51 215

原创 一文讲清楚Java中多态的概念、实现条件、实现形式及应用场景

多态是面向对象编程的核心特性,指同一操作在不同对象上有不同实现方式。实现多态需要继承/实现关系、方法重写和向上转型(父类引用指向子类对象)。多态分为编译时多态(方法重载)和运行时多态(方法重写)。其优点包括提高代码扩展性、可维护性和统一接口。注意事项:成员变量和静态方法不具备多态性,向下转型需显式转换且可能抛出异常。多态广泛应用于工厂模式、回调机制等场景,是设计模式的基础,通过"一个接口,多种实现"使代码更灵活可扩展。

2025-12-10 22:24:49 503

原创 一文讲清楚JWT的原理和使用(附详细案例代码)

JWT(JSON Web Token)是一种开放标准的安全令牌格式,由Header、Payload和Signature三部分组成,用于身份认证和信息传输。Header包含算法和类型元数据,Payload存储业务数据,Signature用于防篡改验证。在SpringBoot项目中可通过java-jwt或hutool工具包实现JWT功能,包括生成令牌、验证签名和解析数据。需注意Payload采用Base64URL编码而非加密,敏感信息需额外加密处理。两种工具包均提供完整API,其中hutool-jwt封装更完善

2025-12-09 18:07:42 2951 1

原创 MySQL索引失效常见场景总结

索引失效常见场景总结:1.违反复合索引最左前缀法则;2.对索引列进行运算或使用函数;3.LIKE模糊查询以%开头;4.隐式类型转换;5.OR连接非索引列条件;6.使用NOT IN、<>等负向查询;7.范围查询导致右侧索引失效;8.数据分布影响优化器选择;9.索引列区分度过低;10.IS NULL/IS NOT NULL使用不当。通过EXPLAIN命令可诊断索引使用情况,优化时应遵循最左前缀原则,避免对索引列运算,保持类型一致,合理设计查询条件。

2025-12-09 13:31:48 1239

原创 JSON格式转换中的小技巧

本文介绍了两种JSON数据处理方法:1)使用@JsonIgnore注解忽略敏感字段(如密码)不参与JSON转换;2)日期格式处理,可通过@JsonFormat注解为单个字段指定格式和时区,或在application.yml中全局配置Jackson转换规则,统一设置时区和日期格式,避免重复注解。两种方式都能有效控制JSON输出格式,保护敏感数据并简化日期处理流程

2025-12-08 16:50:41 197

空空如也

空空如也

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

TA关注的人

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