一元复始,万象更新。愿2026,平安喜乐,万事顺意。
祝愿大家在2026年,眼底有绮丽,周遭是晴朗,耳畔是阜盛烟火,心上凛冬散尽,星河长明 🎊。元旦快乐!
如何在MyBatis Plus中实现多表联合查询并分页?
在MyBatis Plus中实现多表联合查询并分页,主要有两种核心思路:一种是使用自定义SQL(XML或注解)配合MyBatis Plus的分页对象,另一种是借助第三方扩展库如 mybatis-plus-join。下面的表格详细对比了这两种主流方案及其实现要点,可以帮助你快速选择。 实现方案核心思路优点适用场景自定义SQL在Mapper的XML文…
2025-12-30 16:03
|
937 字
|
7 分钟
SpringBoot参数校验 | 错误信息message格式化参数详解
在SpringBoot参数校验中,message属性支持丰富的格式化参数功能,可以动态插入校验注解的属性值,使错误提示更加友好和精确。以下是message格式化参数的完整介绍: 一、内置注解的格式化参数 1. 常用注解的占位符 SpringBoot的校验注解内置了多种占位符,可以直接在message中使用: public class UserDTO…
2025-12-30 11:04
|
666 字
|
15 分钟
SpringBoot参数校验全攻略:从入门到企业级实践
一、为什么需要参数校验? 在日常开发中,参数校验是所有后端接口的起点,也是最容易被忽视的一环。很多系统问题不是因为业务复杂,而是因为"没校验"。例如:用户注册时手机号格式不对、分页接口pageSize传了100000、后台管理新增视频时title为空、金额字段传了负数等。这些问题不仅会让系统变得脆弱,还会增加开发和排查成本。 在企业级项目中,参数校…
2025-12-30 11:02
|
1431 字
|
19 分钟
在java中HashMap是怎么解决哈希冲突的?
HashMap 主要通过以下几种方式解决哈希冲突: 1. 链表法(拉链法) 这是HashMap最基本的冲突解决方式: 每个数组元素(桶)存储一个链表 当多个key的哈希值相同(哈希碰撞)时,这些键值对会以链表形式存储在同一个桶中 新元素插入到链表头部(Java 8改为尾部插入) // 简化示意图 [0] -> null [1]…
2025-12-28 10:27
|
511 字
|
3 分钟
spring中BeanFactory和FactoryBean区别?
BeanFactory 和 FactoryBean 是 Spring 中两个完全不同的概念,虽然名称相似但功能不同: 1. BeanFactory 核心概念 Spring IoC 容器的根接口,是 Spring 容器的基础 实现了工厂模式,用于创建和管理 Bean 是所有 Spring 容器的顶层接口 主要功能 // BeanFactory 接口定…
2025-12-28 10:23
|
576 字
|
6 分钟
Redisson分布式锁为什么要用lua脚本实现,而不用事务?
Redisson使用Lua脚本实现分布式锁主要是为了解决原子性、网络开销和事务局限性三个核心问题。下面详细解释: 1. 原子性保证 这是最主要的原因。Lua脚本在Redis中执行时是原子性的,整个脚本在执行过程中不会被其他命令打断。 -- Redisson的加锁Lua脚本示例 if (redis.call('exists', KEYS[1]…
2025-12-28 10:21
|
704 字
|
5 分钟
mysql 数据去重用DISTINCT还是GROUP BY?
在数据去重时,DISTINCT 和 GROUP BY 都可以实现去重功能,但它们在语义、性能和功能上有重要区别: 1. 基本用法对比 DISTINCT -- 简单去重 SELECT DISTINCT department, job_title FROM employees; -- 与聚合函数结合 SELECT COUNT(DISTINCT depa…
2025-12-28 10:18
|
571 字
|
5 分钟
为什么重写 equals()就必须要同时重写 hashCode()?
这是一个非常经典的Java面试题。重写 equals() 时必须重写 hashCode() 主要是为了维护 hashCode方法的通用约定,确保基于哈希的集合(如 HashMap、HashSet、Hashtable)能够正常工作。 根本原因:hashCode 方法的约定 在 Object类的规范中,hashCode()方法有以下重要约定: 一致性:…
2025-12-28 10:16
|
720 字
|
6 分钟
Redis是如何实现IO多路复用的?
Redis 通过使用操作系统提供的 IO 多路复用 机制来实现高性能的网络通信,使得单个线程能够同时处理多个客户端连接。以下是其核心实现方式: 1. 支持的 IO 多路复用模型 Redis 在运行时自动选择系统最高效的多路复用模型(按优先级): epoll(Linux) kqueue(FreeBSD/macOS) select(跨平台,但效率较低…
2025-12-28 10:13
|
752 字
|
4 分钟