一、核心区别 维度 spring.factories AutoConfiguration.imports 文件路径 META-INF/spring.factories META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imp […]
一、核心区别 维度 spring.factories AutoConfiguration.imports 文件路径 META-INF/spring.factories META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imp […]
TransmittableThreadLocal(TTL)是阿里巴巴开源的一个 Java 库,用于解决 线程池环境下 ThreadLocal 上下文丢失 的问题。它是 InheritableThreadLocal 的增强版,特别适用于异步编程、分布式系统等场景。以下是详细解析: 一、核心问题:为什么需要 Transmi […]
一、核心设计思想 1. 可重入性(Reentrancy) 定义:同一线程可多次获取同一把锁,通过计数器记录持有次数,释放时需完全解锁(计数器归零)。 示例代码: ReentrantLock lock = new ReentrantLock(); lock.lock(); try { lock.lock(); // 可重 […]
1、Redisson和RedisTemplate的什么区别 一、功能方面: Redisson: 提供了丰富的分布式数据结构和服务,例如分布式锁、分布式集合(包括分布式列表、集合、映射、队列、阻塞队列、双端队列、优先队列等)、分布式对象(如分布式对象、原子数、位图等)以及分布式服务(如分布式远程服务、分布式调度服务、分布 […]
Spring Boot 提供了大量注解用于简化配置和开发,以下是核心常用注解分类及实战用法: 一、Bean 相关注解 1. @Component 作用:标识普通组件,被 Spring 容器自动扫描注册为 Bean。 场景:通用层(工具类、非 MVC 组件)。 @Component public class MyUtil […]
一、前言 在现代应用开发中,多线程与异步编程是提升系统性能的常用手段。例如,用户抽奖后异步发送push通知,或并行处理互不依赖的业务逻辑(将顺序执行的耗时 A+B+C 优化为并行的 Max(A,B,C))。此时,CompletableFuture 因简洁的API和强大的组合能力成为许多开发者的首选。然而,看似便捷的背后 […]
在金融级应用场景中,JVM 深度调优对于保障系统的高性能、低延迟和高稳定性至关重要。以下是一些实战经验和技巧: 1. 调优前的全面评估与监控 明确业务需求与性能指标 了解金融业务的高峰低谷时段、交易量预期、响应时间要求等。例如,证券交易系统在开盘和收盘时段交易量大,要求系统响应时间在毫秒级;而银行的批量账务处理可能更注 […]
接口防刷是保障系统安全与稳定性的重要措施。恶意的高频请求不仅会消耗服务器资源,还可能导致数据异常,甚至系统瘫痪。本文将介绍在SpringBoot框架下实现接口防刷的5种技术方案。 1. 基于注解的访问频率限制 最常见的防刷方案是通过自定义注解和AOP切面实现访问频率限制。这种方法简单易用,实现成本低。 实现步骤 1.1 […]
SpringBoot以其强大的自动配置和丰富的生态系统成为Java开发的首选框架。除了核心功能外,SpringBoot及其依赖的Spring框架还包含大量实用工具类,它们可以显著简化日常开发工作。本文将介绍49个常用工具类,并通过简洁的代码示例展示它们的基本用法。 字符串处理工具类 1. StringUtils imp […]
一、背景 在网络传输敏感数据时,接口加密是保障安全的核心手段。下面就说一说如何在 SpringBoot 中实现 RSA+AES 混合加密方案,同时结合两种算法的优势,确保数据传输的安全性与高效性。 二、加密方案优势 算法 特点 适用场景 RSA 非对称加密,安全性高,但加密速度慢,适合加密少量数据(如密钥)。 加密 A […]
前言 参数校验是保证程序健壮性的重要环节,前端校验为用户体验,后端校验为系统安全。Spring Boot 中常用 @Valid 和 @Validated 实现参数校验,本文将详细解析两者的区别、用法及代码示例。 一、@Valid 注解 1. 功能与依赖 标准规范:属于 Java EE 标准注解(JSR 303 规范), […]
1. 基础概念 URL(统一资源定位符):用于唯一标识互联网资源(如网页、图片、API等)。 目录 vs. 资源: 以“/”结尾的 URL 通常表示目录,例如:https://example.com/folder/。 不以“/”结尾的 URL 通常指向具体资源(如文件),例如:https://example.com/f […]
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获取容器中的特定对 […]
佳节又重阳,玉枕纱厨,半夜凉初透。