自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL 日志体系总览

核心分类与用途:管理类日志(错误 / 慢查询)用于运维排查 / 性能优化,复制类日志(二进制 / 中继)用于主从同步,事务日志(Redo/Undo)保证 InnoDB 事务特性。生产配置建议:必开错误日志 + 慢查询日志(阈值 0.5-1 秒)+ 二进制日志;通用查询日志仅临时开启;配置日志过期时间避免磁盘占满。核心工具tail查看日志、分析慢 SQL、解析二进制 / 中继日志。

2025-12-25 14:22:17 702

原创 MySQL 的日志体系

核心作用:记录 DDL 操作的元数据变更过程,用于 DDL 操作崩溃后的恢复(如创建表时数据库宕机,重启后通过 DDL 日志完成剩余操作)。特性:默认开启,无法关闭,日志文件名为(数据目录下),文件大小限制为 4GB,自动轮转。日志类型核心用途开启状态错误日志排查启动 / 运行故障默认开启(必开)二进制日志主从复制、数据恢复8.0 默认开启慢查询日志性能优化(定位慢 SQL)默认关闭通用查询日志调试(记录所有 SQL / 连接)默认关闭Redo Log。

2025-12-17 11:53:35 534

原创 MySQL 中锁的概念分类

InnoDB 的锁体系以行锁为核心,通过意向锁、Next-Key Lock 等优化锁粒度和检查效率;隔离级别本质是 “一致性” 与 “并发度” 的权衡,RR 是 MySQL 默认级别,兼顾一致性和性能;MVCC 是 InnoDB 实现 RC/RR 的核心,通过版本链和 Read View 避免加锁读,提升并发;锁机制则解决写冲突和幻读问题。

2025-12-17 09:32:21 642

原创 Java 异步操作全解析:从基础到高级实践

Service// 指定自定义线程池,返回 CompletableFuture 支持后续处理try {return CompletableFuture.completedFuture("异步方法执行完成:" + param);Java 异步操作的核心是,它解决了传统Future的阻塞、无法组合的问题,是 IO 密集型场景的首选;专注于异步 IO,Spring@Async则简化了业务层异步开发。优先自定义线程池,避免默认线程池的资源竞争;必须处理异步任务的异常,防止静默失败;

2025-12-16 09:18:10 656

原创 Spring 自定义事件监听器实现步骤

创建事件类,继承 Spring 提供的(或// 核心线程数// 最大线程数// 任务队列// 线程名前缀// 监听器指定自定义线程池// 业务逻辑...步骤核心操作关键注解 / 类1基础准备(异步场景)2定义事件(父类)3发布事件4监听事件5异步优化自定义@Async("线程池名")

2025-12-15 08:58:33 317

原创 拦截器注册

实现接口,重写核心方法(preHandle前置拦截、postHandle后置处理、完成处理)。注意:拦截器如需注入 Spring Bean(如 Service、RedisTemplate),需添加@Component注解交给 Spring 管理。/*** 自定义拦截器:登录校验 + 接口日志记录(贴合 RuoYi 风格)*/@Component // 关键:交给Spring容器管理,否则无法注入Bean,也无法被注册。

2025-12-15 08:57:28 622

原创 过滤器注册

实现接口,重写核心方法(initdestroy可空实现,核心是doFilter/*** 自定义请求耗时统计过滤器*/// 过滤器初始化(仅启动时执行一次,可初始化资源)@Overridelog.info("RequestTimeFilter 初始化完成");// 核心过滤逻辑(每次请求都会执行)@Override// 1. 前置:记录请求开始时间try {// 2. 放行请求:继续执行后续过滤器/Controller// 3. 后置:计算耗时并打印。

2025-12-12 13:42:36 509

原创 Lock 概述

Lock是 Java 并发包()提供的显式锁接口,用于替代(隐式锁),解决了的诸多局限性(如不可中断、不可超时、条件变量单一等)。// 加锁(阻塞式,不可中断,直到获取锁)// 加锁(可中断:等待锁时响应线程中断)// 尝试加锁(非阻塞:立即返回,成功true/失败false)// 超时尝试加锁:超时时间内获取到返回true,否则false(支持中断)// 释放锁(必须手动调用,建议在finally中)// 创建条件变量(替代Object的wait/notify)

2025-12-12 11:01:09 743

原创 java配置redis

配置连接信息;自定义解决序列化;通过RedisUtils(推荐)或读取 / 操作 Redis;支持@Cacheable注解简化缓存逻辑。这种配置方式既符合 Spring 生态标准,又通过封装降低了开发成本,是 RuoYi 框架的典型设计思路。Spring Boot 自动配置机制通过多层封装,将中的 Redis 配置绑定到 Java 对象后,再传递给的实现类(如)完成初始化。以下是从「配置文件→」的完整源码级解析间接读取。

2025-12-03 17:06:03 1029

原创 实体类Bean,多次请求数据混乱

入职接手一个很乱的项目,实体类使用了@Component,在controller全局自动注入,然后实体类内部又自动注入了service。导致不能在controller方法内部new,多个账号同一时间请求接口会导致同时操作实体类,互相干扰。

2025-11-29 09:44:30 389

原创 MultipartFile 的 transferTo()

java运行参数dest:目标文件路径(File对象),表示文件要保存的位置。异常:文件操作失败(如权限不足、路径不存在)。:文件已被读取或处理完毕,无法再次传输。只能调用一次,多次调用会抛出(因为文件内容已被消费)。之所以只能调用一次,本质上与它的底层实现(尤其是临时文件的处理机制)密切相关。以 Spring 框架中最常用的实现类底层依赖的FileItem会在首次写入后清理临时资源(删除临时文件或标记内容已消费),二次调用时因资源不存在或状态非法而失败。

2025-11-11 13:22:58 273

原创 List.toArray()

这里使用了 Java 8 的 Stream API 来处理转换。对象,这段代码会将其转换成一个数组,并返回该数组。是一个常见的 Java 代码语句,用于将一个。不过,如果你需要明确地返回特定类型的数组(如。这样可以确保返回的数组是你期望的类型。,不能直接转换为原始类型数组。方法只能转换为包装类数组。确实稍微复杂一些,因为。,将每个元素逐个复制到。在 Java 中,将。你可以通过以下方式将。不能返回int[]吗。

2024-06-28 15:48:54 335

原创 瑞吉外卖 报错无法连接url

注释掉druid,问题解决,原因不详。appplication数据库配置。控制台报错 :url配置有问题。

2024-05-21 14:22:58 263 1

原创 String.substring()的内存泄漏问题

方法创建大量的子串,而这些子串在之后的代码中没有被引用,它们就会成为垃圾回收的候选对象。但如果这些对象的创建频率非常高,垃圾回收器可能来不及清理它们,导致短时间内大量的对象占据内存,最终可能导致。通过理解Java字符串的不可变性和垃圾回收机制,我们可以避免这种潜在的问题,确保应用程序的稳定性和性能。例如,如果你知道需要在循环中多次使用相同的子串,可以在循环外部先创建这个子串,然后在循环内部重复使用它。创建的子串的引用,那么这些子串及其对应的原字符串都将无法被垃圾回收,从而导致内存泄漏。

2024-05-11 14:36:21 989 1

空空如也

空空如也

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

TA关注的人

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