一、核心设计思想 1. 可重入性(Reentrancy) 定义:同一线程可多次获取同一把锁,通过计数器记录持有次数,释放时需完全解锁(计数器归零)。 示例代码: ReentrantLock lock = new ReentrantLock(); lock.lock(); try { lock.lock(); // 可重 […]
一、核心设计思想 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 […]
状态模式(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不仅比较数值本身,还会比较 […]
花褪残红青杏小,燕子飞时,绿水人家绕。枝上柳绵吹又少,天涯何处无芳草。
墙里秋千墙外道,墙外行人,墙里佳人笑。笑渐不闻声渐悄,多情却被无情恼。