自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 揭秘MySQL锁机制:从入门到实战避坑指南

注:参考小林coding和网络资料整理的内容。

2025-03-22 21:06:45 571

原创 MVCC如何让数据库实现高并发?揭秘多版本并发控制的底层逻辑

MVVC的实现依赖于:行记录隐藏的列、ReadView、undolog。

2025-03-16 14:16:37 802

转载 月薪30K的架构师都在用的Redis锁最佳实践

其实我们设想一下,是否可以给获得锁的线程,开启一个定时守护线程,每隔一段时间检查锁是否还存在,存在则对锁的过期时间延长,防止锁过期提前释放。**3.客户端使用当前时间减去开始获取锁时间(即步骤1记录的时间),得到获取锁使用的时间。解决了方案一发生异常,锁得不到释放的问题。节点都获得锁,并且使用的时间小于锁失效时间时,锁才算获取成功。释放锁的时候,可能这把锁已经不属于当前客户端,会解除他人加的锁。锁,有或者获取锁时间已经超过了有效时间),客户端要在所有的。的锁啦,但线程一也已经拿到锁了,锁的安全性就没了。

2025-03-08 21:33:32 148

原创 Easyliev在线视频分享平台项目总结——SpringBoot、Mybatis、Redis、ElasticSearch、FFmpeg

captchat插件base编码(图片,用于前端展示)checkCodeKey验证码标识(用于匹配redis缓存,校验验证码)redis缓存。

2025-03-08 11:02:12 1137

原创 MySQL性能暴跌3倍?可能是你选错了主键!自增ID与UUID的深度性能评测

【代码】MySQL性能暴跌3倍?可能是你选错了主键!自增ID与UUID的深度性能评测。

2025-02-26 10:57:27 1097

原创 动态代理背后的魔法:Spring AOP执行链路解析与自定义扩展模板

是一种通过横向抽取横切关注点(如日志、事务、权限等)来提升代码模块化的技术。Spring AOP 基于动态代理实现,通过。通过合理选择实现方式,开发者可高效解决日志、事务、权限等横切问题,提升代码可维护性和扩展性。简化切面定义,支持方法级别的增强,其核心优势在于。:优先 JDK 动态代理,若无接口则用 CGLIB。Spring AOP 通过。Spring AOP 通过。

2025-02-25 22:53:29 1273

原创 解锁Spring AOP的真正威力:常用注解配置技巧与高效开发实践

Pointcut:灵活定义拦截规则,支持复合表达式@Around:完全控制方法执行流程,需显式调用proceed():配置代理策略,解决自调用问题。

2025-02-25 22:30:15 954

原创 切面编程核心利器:一文吃透Spring AOP的execution表达式

是 Spring AOP 中最常用的切点表达式,用于精确匹配目标方法的执行路径。表达式通过灵活组合返回类型、类路径、方法名和参数模式,实现精确的方法级切点匹配。

2025-02-25 21:57:54 1438

原创 从零掌握动态代理:JDK与CGLib的实现原理与实战应用

动态代理是一种在程序运行期间动态生成代理对象的技术,其核心目标是在不修改原始对象代码的前提下,对目标对象的方法进行功能增强或行为控制。核心原理:通过字节码生成技术(如反射或ASM框架)在内存中创建代理类,拦截目标方法调用并插入自定义逻辑(如日志、事务管理等)与静态代理的区别静态代理需在编译期手动编写代理类,每个代理类仅服务一个接口,代码冗余度高。动态代理通过运行时生成通用代理类,适配多种场景,显著提升代码复用性动态代理通过运行时生成代理类实现方法拦截与增强,是Java高阶编程的核心技术之一。

2025-02-24 22:28:08 1445

原创 [特殊字符] Elasticsearch 双剑合璧:HTTP API 与 Java API 实战整合指南

Elasticsearch 的 HTTP API 是基于 RESTful 接口设计的核心交互方式,支持通过 URL 和 JSON 数据直接操作索引、文档、集群等资源。适用于快速调试、脚本调用和跨语言集成。

2025-02-23 21:20:20 1412

原创 玩转Elasticsearch 查询利器!QueryBuilders 核心方法全解析

以下整合了 Elasticsearch Java API 中的常用方法,涵盖精确匹配、全文搜索、范围过滤、模糊查询等场景。每个方法均包含及,帮助开发者快速掌握查询构建技巧。

2025-02-23 21:16:38 2134

原创 Spring事务失效终极指南:手把手教你绕过12大“坑”,代码回滚不再玄学!

对于从事 java 开发工作的同学来说,spring 的事务肯定再熟悉不过了。在某些业务场景下,如果一个请求中,需要同时写入多张表的数据。为了保证操作的原子性(要么同时成功,要么同时失败),避免数据不一致的情况,我们一般都会用到 spring 事务。确实,spring 事务用起来贼爽,就用一个简单的注解:@Transactional,就能轻松搞定事务。我猜大部分小伙伴也是这样用的,而且一直用一直爽。但如果你使用不当,它也会坑你于无形。

2025-02-22 11:15:12 1161

原创 Spring 依赖注入实战指南:XML、注解、Java 配置全面对比

通过将 Bean 的创建和依赖关系管理交给 Spring 容器,实现对象间的松耦合,提高系统的测试性和扩展性。DI 的实现方式:构造器注入:在对象创建时即传入所有必需依赖,清晰且不可变,但当依赖较多时参数列表臃肿。Setter 注入:灵活性高,适用于可选依赖,但对象在初始化前可能不完全且无法使用final。字段注入:实现简单、代码简洁,但隐藏依赖关系、测试不便且依赖容器环境。DI 的配置方式:XML 配置:外部化配置,便于文档化和审查,但配置冗长且缺乏编译期检查。基于注解配置。

2025-02-21 10:44:28 2661

原创 JVM垃圾回收全攻略:标记清除、复制、整理及新一代收集器

现代 JVM 垃圾回收的核心是从 GC Roots 开始的可达性分析,借助多种算法(标记-清除、复制、标记-整理等)来识别并回收垃圾对象。根据对象生命周期的特点,将堆分为新生代和老年代,新生代常采用复制算法,而老年代则使用标记-整理或标记-清除,以优化性能和降低停顿。现代垃圾收集器:CMS 和 G1通过并发和区域划分等技术降低 GC 停顿,适应大规模和高吞吐量场景;ZGC 和 Shenandoah则专注于极低停顿,适合对延迟敏感的应用场景。

2025-02-20 23:02:31 1491

原创 从入门到精通:MyBatis之resultMap 核心剖析与电商场景应用实战

MyBatis 的 resultMap 提供了强大而灵活的机制,使得开发者能够精准地控制 SQL 查询结果与 Java 对象之间的映射关系。无论是简单的单表查询还是复杂的多表联合查询,通过合理设计 resultMap,都能大幅提高数据访问层代码的可读性、可维护性和性能。这种灵活性正是 MyBatis 被广泛使用的重要原因之一,也为开发者在实际项目中处理复杂数据模型提供了极大便利。在电商系统中,从用户登录、查看订单到订单详情展示,都涉及到对数据库中多张表的数据进行映射。简单映射。

2025-02-18 23:51:06 904

原创 Spring 事务不生效?可能是内部调用惹的祸!

Spring 通过 AOP(面向切面编程)实现事务管理。当容器扫描到方法上有注解时,会为目标对象生成一个代理类。在代理类中,在目标方法调用前后分别执行事务的开启、提交或回滚等操作。事务传播行为Spring 定义了多种事务传播属性(如REQUIREDNESTED等),用于在多个事务方法相互调用时决定事务如何传播。Spring事务传播属性:1.propagation-required: 支持当前事务,如果有就加入当前事务中;如果当前方法没有事务,就新建一个事务;

2025-02-17 23:44:54 3288

原创 简单易懂——Java 中创建线程的几种方式

在 Java 中,线程是一种轻量级的执行单元,可以同时执行多个任务。本文详细介绍了创建线程的几种常见方式,并提供了完整的解释和示例代码,方便大家根据实际需求选择合适的方法。

2025-02-16 23:41:47 321

原创 让面试官眼前一亮的回答:Hash冲突解决方案一览

拉链法适用于数据量大且动态变化的情况删除操作简单,但需要额外的指针存储空间开放定址法(包括线性探查、二次探查和双重散列)所有元素存放在同一数组中,查找和遍历时具有较好的缓存局部性容易出现聚集问题,并且删除操作通常需要使用“懒删除”标记来处理选择哪种方法取决于具体应用场景、数据规模和性能要求。对于需要频繁插入和删除且数据规模不确定的情况,拉链法往往更合适;而对于要求内存连续、缓存友好以及查找速度要求较高的情况,开放定址法可能更优。希望这个详细的解释和数据例子能帮助你全面理解哈希冲突的解决方法!

2025-02-16 23:29:42 2289

原创 史上最全面的HashMap详解,HashMap实现原理与基础知识点介绍

在之前,HashMap底层数据结构采用的是数组+链表的形式当向HashMap中添加数据时,会采用哈希算法,将元素的key映射到底层数组对应的位置,我们称之为众所周知,,所以当不同的key映射到数组上的同一个槽位时,它们就会以链表的形式存储到同一个槽位上由于链表的查询速度时,所以冲突很严重,当一个索引上的链表非常长时,查询效率就会很低。

2025-02-14 23:15:21 755

原创 Ffmpeg下载安装与环境配置

点击下载,按以下步骤操作接下来就等下载好之后,从你的下载目录中找到压缩包并。

2025-02-14 19:32:36 545

原创 SpringBoot项目基于Redis和Cooike实现验证码校验和用户登录功能

温馨提示:博主也不能完全正确,还希望读者积极评论,遇到问题评论区提问,看到就会回答。

2025-02-13 23:40:32 954

原创 比较ArrayList与LinkedList

ArrayList基于**动态数组**LinkedList基于**双向链表**

2025-02-12 17:55:52 602

原创 ArrayList的扩容机制

ArrayList基于动态数组,当数组达到容量上限的时候,就会采取一定的方式实现动态扩容,扩大到原来的1.5倍。

2025-02-12 17:27:08 260

原创 Hexo+Github+Zeabur搭建个人博客

Hexo+Github+Zeabur搭建个人博客

2025-02-05 19:20:27 797 2

空空如也

空空如也

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

TA关注的人

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