前言 参数校验是保证程序健壮性的重要环节,前端校验为用户体验,后端校验为系统安全。Spring Boot 中常用 @Valid 和 @Validated 实现参数校验,本文将详细解析两者的区别、用法及代码示例。 一、@Valid 注解 1. 功能与依赖 标准规范:属于 Java EE 标准注解(JSR 303 规范), […]
前言 参数校验是保证程序健壮性的重要环节,前端校验为用户体验,后端校验为系统安全。Spring Boot 中常用 @Valid 和 @Validated 实现参数校验,本文将详细解析两者的区别、用法及代码示例。 一、@Valid 注解 1. 功能与依赖 标准规范:属于 Java EE 标准注解(JSR 303 规范), […]
1. 基础概念 URL(统一资源定位符):用于唯一标识互联网资源(如网页、图片、API等)。 目录 vs. 资源: 以“/”结尾的 URL 通常表示目录,例如:https://example.com/folder/。 不以“/”结尾的 URL 通常指向具体资源(如文件),例如:https://example.com/f […]
状态模式(State Pattern)是一种行为设计模式,它允许对象在内部状态改变时改变其行为,看起来像是对象修改了它的类。其核心思想是将状态相关的行为封装到独立的状态类中,并让对象在不同状态间切换时委托行为给当前状态对象。 核心概念 状态接口(State Interface):定义特定状态下的行为方法。 具体状态(C […]
策略模式(Strategy Pattern)是一种行为设计模式,它允许在运行时选择算法的行为。其核心思想是将算法的定义、封装和替换分离,使得算法可以独立于客户端变化。 核心概念 策略接口(Strategy Interface):定义所有支持的算法的公共接口。 具体策略(Concrete Strategies):实现策略 […]
模板方法模式(Template Method Pattern) 是一种行为设计模式,它定义了一个算法的骨架,将一些步骤的具体实现延迟到子类中。这种模式让子类在不改变算法结构的情况下,重新定义算法中的某些步骤。 核心概念 抽象类(Abstract Class) 定义算法的骨架(模板方法),包含多个步骤的方法调用。 部分步 […]
一、Docker核心概念解析 1. 基础定义 容器(Container):从镜像创建的轻量级运行实例,提供独立隔离的运行环境,支持跨环境一致运行。 镜像(Image):容器的模板,包含应用程序、依赖库、配置文件等所有运行所需资源。 Dockerfile:定义镜像构建流程的脚本文件,通过指令描述镜像的生成逻辑。 Dock […]
1. 为什么禁止使用BigDecimal的equals方法做等值比较? BigDecimal的equals方法在等值比较时存在一些问题,通常不建议直接使用它来判断数值的相等性。主要原因以及推荐的替代方案如下: equals方法比较严格,包含了精度和符号的比较:BigDecimal.equals不仅比较数值本身,还会比较 […]
一、什么是双 Token 机制? 双Token机制是通过两种令牌管理用户认证与授权的方案,核心令牌包括: Access Token(访问令牌) 用于身份验证和授权,每次请求时携带。 有效期短(如15分钟),降低泄漏风险。 Refresh Token(刷新令牌) 用于在Access Token过期后获取新令牌。 有效期长 […]
一、引言:Bean的自我觉醒之路 在Spring容器中,Bean由容器管理生命周期,但通过Aware接口,Bean可以“觉醒”并感知容器的特定资源。本文将介绍常见Aware接口的用法与场景,帮助开发者灵活掌控Bean的能力。 二、Aware接口概述 定义:Spring提供的一组标记接口,用于让Bean获取容器中的特定对 […]
面试中被问到“Java为什么有这么多‘O’,比如PO、DTO、VO、BO”,我之前的回答不够系统,复盘时发现自己对这些“O”的理解和串联不够清晰。本文以一个基于Spring Boot + MyBatis的用户查询接口为例,解析各“O”的定位、必要性及对象转换优化方案。 一、场景:用户查询接口 需求:前端通过GET /u […]
人间有味是清欢。