自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 在多个SpringBoot程序中./相对路径下隐患、文件覆盖问题

两个 Spring Boot 应用生成的配置文件被覆盖,是因为 ​相对路径的解析依赖于当前工作目录(Working Directory)​,而你可能在运行应用时未正确设置各自的工作目录。根本问题在于 ​相对路径的解析依赖于当前工作目录,而两个应用运行时的工作目录被误设为同一位置。通过使用绝对路径、类路径资源或动态生成唯一路径,可以彻底避免文件覆盖问题。建议优先采用 ​方案 2(类路径资源)​或 ​方案 3(用户目录)​确保路径隔离。

2025-05-16 16:55:43 288

原创 报错:org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error 快速排查解决

通常是由于 JSON 反序列化失败导致的。

2025-05-16 16:55:01 1456

原创 Spring AI介绍、应用场景和示例代码

Spring AI 是 Spring 生态中整合 AI 能力的标准方式,适合企业应用、安全可控地使用 AI,构建智能应用。它抽象了底层 API 调用,让开发者专注业务逻辑。

2025-05-07 11:17:47 914

原创 OAuth2AuthorizationEndpointFilter类介绍、应用场景和示例代码

是 Spring Security OAuth2 授权服务器中的核心过滤器,负责处理 OAuth2 授权码授权流程中的端点请求。// 查询客户端信息// 解析scope// 用户同意授权" +} else {// 用户拒绝授权" +@Beanhttp// 自定义认证转换器@Override// 自定义转换逻辑= null) {// 处理自定义参数// 默认处理@Beanhttp// 自定义成功处理器。

2025-04-25 15:53:14 704

原创 OAuth2TokenEndpointFilter类介绍、应用场景和示例代码

是 Spring Security OAuth2 授权服务器中的一个关键过滤器,负责处理 OAuth2 令牌端点(Token Endpoint)的请求。它是 OAuth2 授权服务器实现的核心组件之一,用于处理各种授权类型的令牌请求。@Bean// 自定义认证转换器,添加密码模式支持new OAuth2PasswordAuthenticationConverter() // 自定义的密码模式转换器@Override// 添加自定义响应头// 调用默认实现添加新的授权类型。

2025-04-25 15:52:21 365

原创 OAuth2RefreshTokenAuthenticationConverter类介绍、应用场景和示例代码

是 Spring Security OAuth2 授权服务器中的一个认证转换器,专门用于处理 OAuth2 刷新令牌(Refresh Token)的请求。它实现了接口,负责将 HTTP 请求转换为认证对象。@Override// 先调用默认实现// 添加自定义逻辑,如验证额外的参数= null) {@Beannew CustomRefreshTokenAuthenticationConverter(), // 使用自定义转换器))

2025-04-23 11:07:58 296

原创 CSRF攻击原理与解决方法

跨站请求伪造(Cross-Site Request Forgery,简称CSRF)是一种常见的网络攻击方式,攻击者通过诱导用户在已认证的网站上执行非预期的操作,从而实现恶意目的。CSRF攻击利用了用户在目标网站上的有效会话,通常无需用户直接参与即可完成攻击。例如,用户登录了银行网站并保持会话有效,攻击者通过诱导用户点击恶意链接或访问伪造页面,触发对银行网站的请求(如转账操作),而浏览器会自动附带用户的有效Cookie,导致请求被网站误认为是合法操作。

2025-04-23 11:06:46 1212

原创 OAuth2AuthorizationEndpointConfigurer类介绍、应用场景和示例代码

是 Spring Security OAuth2 授权服务器模块中的一个重要配置类,用于配置 OAuth2 授权端点(/oauth2/authorize)。@Beanhttp// 可以修改默认的转换器列表})// 自定义认证转换器@Override// 自定义转换逻辑@Beanhttp// 可以修改默认的提供者列表})// 自定义认证提供者@Override// 自定义认证逻辑@Override@Beanhttp// 自定义验证逻辑。

2025-04-18 15:51:32 408

原创 Spring启动失败: MyBatis解析XXXMapper.xml时遇到SAXParseException (line:1403, column:65) - XML内容格式错误

MyBatis XML 文件解析错误分析与解决方案。

2025-04-18 15:50:39 701

原创 OAuth2AuthorizationServerConfiguration类介绍、应用场景和示例代码

这个类来自包,是 Spring Boot 自动配置 OAuth2 授权服务器的核心类。@Bean作用:提供客户端注册信息的存储仓库条件:当没有其他Bean存在时才创建:只有当配置了注册客户端时才创建实现:使用内存存储 (),适合开发和测试环境。

2025-04-16 17:23:15 418

原创 OAuth2AuthorizationServerWebSecurityConfiguration类介绍、应用场景和示例代码

类是 Spring Boot 自动配置 OAuth2 授权服务器 Web 安全的核心类,负责配置授权服务器的安全过滤链。@Bean// 自定义授权端点访问规则@Bean@Order(Integer.MIN_VALUE + 1) // 在授权服务器过滤器之后。

2025-04-16 17:22:27 271

原创 LoadingCache类介绍、应用场景和示例代码

是 Google Guava 库中的一个重要缓存实现,它提供了自动加载和缓存管理的功能。

2025-04-14 10:00:00 590

原创 OAuth2AuthorizationServerAutoConfiguration类介绍、应用场景和示例代码

是 Spring Boot 提供的自动配置类,用于自动设置 OAuth2 授权服务器。它是 Spring Authorization Server 项目的一部分,提供了 OAuth 2.1 和 OpenID Connect 1.0 规范的实现。简化了 Spring Authorization Server 的配置过程,通过自动配置机制提供了开箱即用的 OAuth2 授权服务器功能。

2025-04-14 08:00:00 404

原创 Mysql数据库中锁的介绍、应用场景和示例代码

在 MySQL 数据库中,锁是用于管理并发访问的重要机制,确保数据的一致性和完整性。MySQL 提供了多种锁机制,包括表级锁和行级锁,每种锁都有其特定的应用场景。以下将详细探讨 MySQL 锁的应用场景、原理、实战示例,以及为什么选择 MySQL 锁而不是其他锁。

2025-04-11 11:11:13 688

原创 SpringBoot中使用Zookeeper实现分布式锁(简单示例)

Zookeeper是一个分布式协调服务,非常适合用来实现分布式锁。下面我将介绍如何在Spring Boot项目中集成Zookeeper来实现分布式锁。

2025-04-09 10:00:00 417

原创 @RabbitListener注解介绍、应用场景和示例代码

是 Spring AMQP 提供的核心注解,用于将方法标记为 RabbitMQ 消息监听器。它能够监听指定队列的消息,并在消息到达时触发方法执行。

2025-04-09 09:00:00 985

原创 Nacos部署模式介绍、应用场景和示例

Nacos 支持多种部署模式,主要包括单机模式集群模式和多集群模式。模式特点应用场景Docker 部署示例单机模式单节点,嵌入式数据库开发、测试环境集群模式多节点,外部数据库,高可用生产环境,大规模微服务架构配置 MySQL,启动多个容器,挂载,设置多集群模式多集群,跨地域数据同步跨地域部署,多数据中心部署多个集群,配置 Sync 组件,确保数据同步。

2025-03-19 17:32:31 1388

原创 CommandLineRunner接口介绍、应用场景和示例代码

是 Spring Boot 提供的一个接口,用于在 Spring Boot 应用启动后执行一些初始化逻辑。它与类似,但更简单,直接接收命令行参数作为字符串数组。的核心特点执行时机的run方法会在 Spring Boot 应用启动完成后、开始处理请求之前执行。适合用于执行一些初始化任务,例如加载数据、初始化缓存、检查配置等。参数传递通过参数可以直接访问应用启动时传递的命令行参数。参数以字符串数组的形式传递,需要手动解析。多个 Runner 的执行顺序如果有多个或的实现类,可以通过@Order注解或实现。

2025-03-18 16:36:14 361

原创 ApplicationRunner接口介绍、应用场景和示例代码

是 Spring Boot 提供的一个接口,用于在 Spring Boot 应用启动后执行一些初始化逻辑。它与类似,但提供了更灵活的参数处理方式(通过对象)。的核心特点执行时机的run方法会在 Spring Boot 应用启动完成后、开始处理请求之前执行。适合用于执行一些初始化任务,例如加载数据、初始化缓存、检查配置等。参数传递通过对象可以访问应用启动时传递的命令行参数。提供了对参数的高级封装,支持解析形式的参数。多个 Runner 的执行顺序如果有多个或的实现类,可以通过@Order注解或实现。

2025-03-18 16:33:25 623

原创 Java17中ConcurrentHashMap类介绍、应用场景和示例代码

是 Java 并发集合框架中基于分段锁(Java 7)或 CAS +分段优化(Java 8+)实现的高并发线程安全哈希表,适用于高并发场景下的键值存储。它通过细粒度锁和原子操作,在保证线程安全的同时提供高性能的并发读写能力。

2025-03-17 14:14:29 770

原创 Java17中Executors类介绍、应用场景和示例代码

Executors类是 Java 并发工具包中的工具类,用于简化线程池的创建和管理。通过线程池,可以避免频繁创建和销毁线程的开销,提升系统性能和资源利用率。Executors类通过封装线程池的创建逻辑,简化了并发编程。开发者需根据任务类型(CPU 密集型/I/O 密集型)和需求(定时、顺序执行)选择合适的线程池,并注意资源管理和异常处理,以构建高效稳定的并发应用。

2025-03-17 10:00:00 570

原创 使用Java在系统中控制注册人数业务场景以及解决方案

为了有效保护注册人数的限制逻辑,建议结合多种方式(如远程验证、License 文件、硬件绑定等)来增加破解难度。同时,可以通过代码混淆和加固工具进一步提高安全性。如果条件允许,尽量将核心逻辑放到服务器端,减少客户端的风险。

2025-03-14 16:30:49 672

原创 Seata中AT模式、TCC模式、Saga模式、XA模式介绍、应用场景和示例代码

Seata的四种模式:AT、TCC、Saga和XA详细讲解

2025-03-14 16:29:59 1605

原创 Java17中TreeSet介绍、应用场景和示例代码

TreeSet是 Java 集合框架中基于TreeMap实现的有序集合(SortedSet),元素按自然顺序或自定义比较器排序,适用于需要排序或范围查询的场景。// 按字符串长度排序// [C, C++, Java, Python](按长度 1, 3, 4, 6)

2025-03-13 11:13:50 893

原创 Java17中Math类介绍、应用场景和示例代码

Math是 Java 提供的一个工具类,包含一系列静态方法,用于执行基本数学运算(如三角函数、指数、对数、取整、绝对值等)。所有方法均为线程安全,且无需实例化即可直接调用。在 Java 17 中,其核心功能与旧版本一致,但结合现代编程实践和新特性(如var、模式匹配等)可提升代码可读性。

2025-03-13 11:12:59 901

原创 Java17 中 HashSet 类介绍、应用场景和示例代码

HashSet 是 Java 集合框架中基于哈希表实现的 接口的类,用于存储唯一元素​(不允许重复),并支持高效的插入、删除和查找操作。在 Java 17 中,其底层实现仍依赖 ,但结合现代 Java 特性(如 、 和 )可以更简洁地使用2. 结合 类(Java 16+)实现去重3. 使用 Stream API 过滤数据4. 集合运算(并集、交集、差集)5. 线程安全操作(同步包装)​四、与 LinkedHashSet、TreeSet 的对比

2025-03-11 13:14:21 900

原创 Java17中LinkedList类介绍、应用场景和示例代码

LinkedList是 Java 集合框架中基于双向链表实现的类,实现了List和Deque接口。在 Java 17 中,其核心实现与旧版本保持一致,但在现代 Java 编程中可以结合新特性(如varStream API)更高效地使用。

2025-03-11 10:02:44 746

原创 使用docker部署RabbitMQ完整版教学(已避坑版)

通过以上步骤,你已经成功在Docker上部署了RabbitMQ,并且可以通过本地访问和管理RabbitMQ服务。Docker Compose文件定义了RabbitMQ的配置和持久化存储,确保数据不会丢失。

2025-03-06 11:34:10 1769

原创 RLock类详细介绍、应用场景和示例代码

是 Redisson 提供的分布式可重入锁(类似),基于Redis实现,常用于分布式环境下的并发控制。1. RLock 详解🔹 特点基于 Redis 实现,支持集群环境。可重入,同一个线程可以多次获取同一把锁,不会被阻塞。支持 WatchDog 机制,避免锁因宕机未手动释放而导致死锁。支持超时自动释放,避免死锁问题。支持公平锁、联锁、红锁等多种高级特性。🔹 依赖🔹 获取RLock// 需要传入 Redis 配置2. RLock 常用方法方法说明lock()阻塞式加锁。

2025-03-06 11:32:52 1247

原创 ReentrantLock类介绍、应用场景、示例代码

是 Java 并发工具包中的一个重要类,位于包下。它实现了接口,并提供了比传统的更加灵活的锁机制。主要用于控制多线程对共享资源的访问,确保在同一时刻只有一个线程可以访问临界区,避免竞态条件和数据不一致。与相比,提供了更多的控制选项,比如支持等。

2025-03-04 17:16:44 1050

原创 RabbitTemplate类介绍、应用场景和示例代码

是 Spring AMQP(Advanced Message Queuing Protocol)提供的核心类之一,它是接口的主要实现,用于与 RabbitMQ 交互。它封装了消息的生产和消费逻辑,使得开发者可以更方便地与 RabbitMQ 进行通信。方法作用发送消息接收并转换消息receive()仅接收消息(不转换)发送消息并等待响应监听消息是否到达交换机监听消息是否到达队列开启事务支持适用于大多数 RabbitMQ 操作,结合 Spring Boot 配置可以大大简化开发。

2025-03-04 17:15:48 666

原创 ReentrantLock类介绍、应用场景、示例代码

是 Java 并发工具包中的一个重要类,位于包下。它实现了接口,并提供了比传统的更加灵活的锁机制。主要用于控制多线程对共享资源的访问,确保在同一时刻只有一个线程可以访问临界区,避免竞态条件和数据不一致。与相比,提供了更多的控制选项,比如支持等。

2025-02-28 13:24:02 917

原创 SpringDataJPA使用deleteAllInBatch方法逻辑删除失效

该方法是一个批量删除操作,通常是直接生成SQL语句一次性删除数据,不会逐个加载实体,因此也不会触发实体的生命周期回调方法。),可以自定义一个批量更新的方法,通过直接执行SQL更新操作来实现逻辑删除。在使用Spring Boot JPA时,执行批量删除操作时,遇到逻辑删除失效的问题。这会逐个处理实体,并触发相应的生命周期回调方法,从而确保逻辑删除(即更新。这种方式在批量删除前,先手动更新实体,确保逻辑删除字段被正确设置。时,数据会被直接从数据库中删除,而不是进行逻辑删除的原因。

2025-02-26 10:00:00 732

原创 Spring Data JAP审计功能(创建人、创建时间、修改人、修改时间)实现方案、应用场景和示例代码

提供了审计功能,可以自动记录实体的创建人、创建时间、修改人、修改时间。通常,应用于需要跟踪数据变动历史和操作人员的场景。通过以上步骤,你可以实现审计功能来自动记录实体的创建人、创建时间、修改人和修改时间。日志追踪:帮助追踪数据操作历史。合规性审计:满足行业合规要求(如金融、医疗等)。数据变更回溯:便于问题追溯,特别是当数据被意外修改或删除时。通过启用和实现,你可以轻松地自动化管理这些数据变动的元数据,确保操作的透明性和可追溯性。

2025-02-25 16:04:44 738

原创 作为一名开发人员如何去合理的评估服务器配置

最最最下面有一个中小型企业的详细示例(具体可以根据项目自行多扩展),可以帮助你提升评估能力,示例仅作为参考方向!!!CPU:4核~8核内存:8GB存储:50GB SSD带宽数据库:MySQL 5.7+,连接池20~30缓存:Redis 4GB此配置可满足日常业务需求,并预留一定的扩展空间。如果需要更高性能,可以根据实际压测结果调整配置。

2025-02-25 16:03:59 1240

原创 SpringBoot中报错:JSON parse error: Unrecognized filed 异常原因和解决方案

这表示JSON字符串中包含了一个Java对象中不存在的字段,导致解析失败。JSON字符串中包含了一些字段,但这些字段在Java对象中没有对应的属性。如果JSON中包含嵌套对象或数组,确保Java对象中有对应的嵌套结构。如果可能,直接修改Java对象的属性名,使其与JSON字段名一致。JSON中包含嵌套对象或数组,但Java对象中没有对应的嵌套结构。JSON字符串中的字段名与Java对象的属性名不一致。JSON字段名的大小写与Java对象的属性名不一致。确保JSON字段名与Java对象的属性名一致。

2025-02-24 13:00:00 1115

原创 SpringBoot使用Redis进行限流功能实现、应用场景和示例代码

Spring Boot中使用Redis实现限流功能是一种常见的做法,特别是在高并发场景下,限流可以有效防止系统过载,保证服务的稳定性。// Redis的key// 限流次数// 过期时间(秒)通过Spring Boot和Redis的结合,我们可以轻松实现限流功能。计数器算法是最简单的限流方式,适用于大多数场景。如果需要更复杂的限流策略(如滑动窗口、令牌桶等),可以基于Redis的有序集合或列表实现。在实际应用中,限流策略的选择应根据具体业务需求进行调整,以确保系统的稳定性和高可用性。

2025-02-24 10:00:00 819

原创 在工作中PostgreSQL常用的SQL命令

在工作中PostgreSQL常用的SQL命令。

2025-02-21 10:32:08 915

原创 在Java使用中多线程介绍、应用场景和示例代码

在Java中,多线程是指在一个程序中每个并发执行多个线程的技术。线程是一个独立的执行路径,程序通过多线程来出现并发任务,从而提高效率,尤其是在处理I/O密集型或者计算密集型任务时。5, // 核心线程数10, // 最大线程数60L, TimeUnit.SECONDS, // 空闲线程存活时间new ArrayBlockingQueue<>(100), // 任务队列。

2025-02-19 11:16:32 490

原创 SpringBoot3使用RestTemplate请求接口忽略SSL证书

推荐方案:将服务器证书添加到 Java 的信任库中,确保证书链完整且受信任。临时方案:在开发环境中,可以临时忽略 SSL 证书验证,但不建议在生产环境中使用。最佳实践:使用受信任的 CA 签发的证书,确保 SSL/TLS 通信的安全性。

2025-02-19 11:16:10 979

空空如也

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

TA关注的人

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