自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 资源 (4)
  • 收藏
  • 关注

原创 Spring Boot 监听器(Listeners)详细教程

Spring Boot 监听器(Listeners)基于 Spring Framework 的事件机制(ApplicationEvent 和 ApplicationListener),用于在应用生命周期或自定义事件触发时执行特定逻辑。它们提供了一种松耦合的方式响应应用状态变化,常用于初始化资源、监控应用状态、执行异步任务等。接口实现: 实现ApplicationListener注解驱动: 使用@EventListener注解方法SmartApplicationListener: 支持事件类型过滤和顺序控

2025-05-20 17:46:54 846 1

原创 SpringBoot+ELK 搭建日志监控平台

从多个文件中读取 debug.log 和 error.log,并根据文件路径设置不同的类型 (debug 和 error)。

2025-05-19 15:21:49 983

原创 SpringbBoot nginx代理获取用户真实IP

为了演示多级代理场景,我们分配了以下服务器资源:以下是各级代理的基本配置示例(仅展示关键部分):一级代理(10.0.3.137)配置二级代理(10.0.4.105)配置与一级代理类似,只是转发目标改为三级代理:三级代理(10.0.4.129)配置三级代理直接转发请求到服务器端:服务器端(10.0.4.120)配置服务器端记录客户端的真实IP地址:在以上配置下,当客户端10.1.9.98发起请求时,X-Forwarded-For头信息包含了客户端10.1.9.98、一级代理10.0.3.137和

2025-05-14 17:09:03 347

原创 springboot AOP 接口限流(基于IP的接口限流和黑白名单)

/限制次数//限制时间 秒。

2025-05-14 16:14:09 274

原创 Spring AOP的注解实现(自定义注解实现日志管理)

AOP: Aspect Oriented Programming(⾯向方⾯编程)。是一种对某一类事情集中处理的思想。Spring AOP: 就是对AOP思想的一种实现。引入依赖:写AOP实现:三、详解Spring AOP3.1 Spring AOP 核心概念Spring AOP 核心概念:切点,连接点,通知,切面。我们以上面的代码来介绍。切点:就是告诉程序哪些方法需要使用到接下来的功能。上面的@Around注解的参数就是切点表达式。连接点:满⾜切点表达式规则的⽅法,就是连接点。也就是可以AOP

2025-05-14 14:01:19 1104

原创 SpringBoot使用定时线程池ScheduledThreadPoolExecutor

定时线程池是一种专门用于执行定时任务的线程池,它结合了线程池的优势和定时任务的功能,能够高效地管理和调度任务。定时线程池是一种特殊的线程池,它不仅可以执行普通任务,还可以安排任务在未来某个时间点执行,或者以固定的速率重复执行。

2025-05-08 18:04:06 318

原创 springBoot使用ThreadPoolTaskExecutor线程池管理

ThreadPoolTaskExecutor是Spring框架提供的线程池管理器,它继承自ThreadPoolExecutor类,并对其进行了一些扩展和封装。1、 AbortPolicy:直接抛出RejectedExecutionException异常,默认策略。2、CallerRunsPolicy:在调用者的线程中执行该任务。3、 DiscardPolicy:丢弃任务,不抛出异常。4、DiscardOldestPolicy:丢弃队列中最旧的任务,然后重新尝试执行新的任务。

2025-05-08 15:46:30 941

原创 【事务与锁】当Transactional遇上synchronized

只有两个线程都能形成两个相同的code,仔细分析一下,假设synchronized锁是锁住的,那为什么会出现这样的问题呢?这里是因为事务的先后提交导致,可以使用Transactional注解的配置来解决,使用@Transactional(propagation = Propagation.REQUIRES_NEW),每次都会启动一个新的事务,是Spring事务传播机制的一种级别,表示当前方法必须在自己的事务中运行,如果当前已经存在一个事务,则会挂起该事务,创建一个新的事务用于执行当前方法。

2025-05-08 10:17:58 1017

原创 springboot3 配置多数据源

可以将自定义数据源注解添加到方法上(添加到方法只对方法有效)或者类上(添加到类上对当前类里的所有方法有效),然后通过枚举类指定数据源。aop切面会去判断是否有该注解,有的话进行数据源的切换处理(见后面AOP的逻辑)。枚举类 这里指定你所拥有的数据源/*** 数据源/*** 主库* 从库*/ SLAVE }自定义注解,标记哪些方法需要数据源动态切换。/*** 自定义多数据源切换注解* 优先级:先方法,后类,如果方法覆盖了类上的数据源类型,以方法的为准,否则以类上的为准*/

2025-05-07 15:42:22 590

原创 Spring Boot 中的 Redis 分布式锁

在分布式系统中,多个进程同时访问共享资源时,很容易出现并发问题。为了避免这些问题,我们可以使用分布式锁来保证共享资源的独占性。Redis 是一款非常流行的分布式缓存,它也提供了分布式锁的功能。在 Spring Boot 中,我们可以很容易地使用 Redis 分布式锁来管理并发访问。Redis 分布式锁的概念和原理Redis 分布式锁是一种基于 Redis 的分布式锁解决方案。它的原理是利用 Redis 的原子性操作实现锁的获取和释放,从而保证共享资源的独占性。

2025-05-06 14:04:00 765

原创 git 操作

【代码】git 操作。

2025-04-24 15:04:16 310

原创 SpringBoot集成RabbitMQ使用过期时间+死信队列实现延迟队列

有的时候呢,我们需要使用到延迟队列,RabbitMQ不像RocketMQ一样默认就支持延迟队列,RabbitMQ是不支持延迟队列的,但是呢?我们可以通过正常的队列加上消息的过期时间,配置死信队列,来模拟实现延迟队列。

2025-04-24 14:12:48 239

原创 rabbitmq死信队列处理

创建私信队列并绑定。

2025-04-24 13:34:10 349

原创 rabbitmq数据持久化

/创建一个名为TestDirectExchange的Direct类型的交换机@Bean// name: 交换机名称// durable:是否持久化,默认是false,持久化交换机。// autoDelete:是否自动删除,交换机先有队列或者其他交换机绑定的时候,然后当该交换机没有队列或其他交换机绑定的时候,会自动删除。// arguments:交换机设置的参数,比如设置交换机的备用交换机(Alternate Exchange),当消息不能被路由到该交换机绑定的队列上时,会自动路由到备用交换机。

2025-04-24 10:42:57 765

原创 Springboot整合RabbitMQ

首先,我们先了解一下RabbitMQ的含义。RabbitMQ是一个开源的消息中间件,它实现了高级消息队列协议(AMQP)用于进行异步通信。这里简单的介绍一下异步通信:异步通信是一种通信模式,其中发送方和接收方的操作不是同步进行的。在异步通信中,发送方向接收方发送消息,然后继续执行其他操作,而不必等待接收方的响应。接收方在接收到消息后,可以处理消息,并在处理完成后向发送方发送响应。

2025-04-22 17:17:56 595

原创 Windows安装rabbitmq

拉到后面。

2025-04-17 16:26:07 346

原创 windows安装RocketMQ

RocketMQ默认的虚拟机内存较大,启动Broker如果因为内存不足失败,需要编辑如下两个配置文件,修改JVM内存大小。

2025-04-17 15:42:46 354

原创 Elasticsearch的Java客户端库QueryBuilders查询方法大全

使用方法:创建一个查询,匹配所有文档。示例:QueryBuilders.matchAllQuery()注意事项:这种查询不加任何条件,会返回索引中的所有文档,可能会影响性能,特别是文档数量很多时。使用方法:对指定字段执行全文搜索查询。示例:QueryBuilders.matchQuery(“fieldName”, “text to search”)注意事项:默认会对文本进行分词处理,然后进行搜索。使用方法:允许你在多个字段上执行匹配查询。

2025-04-17 11:34:12 900

原创 [ElasticSearch]Suggest查询建议(自动补全&纠错)

搜索一般都会要求具有“搜索推荐”或者叫“搜索补全”的功能,即在用户输入搜索的过程中,进行自动补全或者纠错。以此来提高搜索文档的匹配精准度,进而提升用户的搜索体验,这就是Suggest。

2025-04-16 11:42:59 531

原创 git 命令回退版本

【代码】git 命令回退版本。

2025-03-20 16:40:00 269

原创 windows 安装 Elasticsearch

Elasticsearch高版本内置jdk,无需使用系统安装的java,无需修改配置文件。

2025-03-19 14:24:58 4247 2

原创 mysql 索引的使用

数据库正在反向扫描索引(从索引末尾向开头扫描),通常用于优化 ORDER BY DESC 或逆序范围查询。在反向扫描索引后,仍需在服务器层对数据进行过滤(索引未完全覆盖查询条件)。含义:使用索引条件下推(Index Condition Pushdown, ICP),在存储引擎层过滤数据。优化建议:为排序字段添加索引,或减少排序数据量(如加 LIMIT)。含义:查询已被优化,无需访问表(如使用聚合函数访问索引的最小值)。匹配的分区(若表已分区)。优化建议:简化查询,或为 GROUP BY 字段添加索引。

2025-03-19 09:57:05 675

原创 Java泛型的全面使用场景详解

通过泛型参数定义类,使其支持多种数据类型。示例:通用容器类// 使用示例// 直接返回String// 自动拆箱为int。

2025-03-17 14:20:50 929

原创 临时数据容器——匿名内部类(new Object)、HashMap、Record(不可变数据载体)

record 是 Java 16+ 引入的特性,用于快速定义不可变数据载体类。其核心特点:自动生成:字段、构造方法、equals()、hashCode()、toString()不可变性:所有字段默认 final类型安全:字段类型明确,无反射或类型转换风险// 定义一个名为 CarData 的 record// 自定义构造方法,添加验证逻辑if (speed < 0) throw new IllegalArgumentException("车速不能为负");

2025-03-17 10:43:00 726

原创 JDK1.8新特性

作为参数传递 Lambda 表达式:为了将 Lambda 表达式作为参数传递,接 收Lambda 表达式的参数类型必须是与该 Lambda 表达式兼容的函数式接口 的类型。流(Stream) 到底是什么呢?是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。“集合讲的是数据,流讲的是计算!注意:①Stream 自己不会存储元素。②Stream 不会改变源对象。相反,他们会返回一个持有结果的新Stream。③Stream 操作是延迟执行的。

2025-03-13 09:31:30 591

原创 Sharding-JDBC分库分表

随着业务的快速发展,数据库中的数据量猛增,访问性能也变慢,优化必不可少。究其原因是关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据容量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引性能仍下降严重。

2024-11-13 11:12:46 1473

原创 Java Stream流

1. 概述Java Stream API 是 Java 8 及以上版本中提供的一种新特性,它支持对集合(Collections)进行声明式的操作。Stream API 可以用于执行复杂的数据转换操作,并支持并行处理。2. Steam操作中间操作(Intermediate operations)中间操作返回的是一个新的 Stream,可以继续进行链式调用。以下是一些常见的中间操作:(1)filterfilter(Predicate<? super T> predicate): 过滤元素

2024-11-07 13:04:05 888

原创 MQ消息队列使用场景与问题解决

这种同步接口调用的方式总耗时比较长,非常影响用户的体验,特别是在网络不稳定的情况下,极容易出现接口超时问题。

2024-11-06 17:11:10 1187

原创 spring boot集成redis

【代码】spring boot集成redis。

2024-09-26 15:31:23 643

原创 spring Boot集成七牛云

【代码】spring Boot集成七牛云。

2024-09-26 14:47:12 399

原创 maven打jar包到本地仓库

先去maven仓库找到这个包,并下载。

2024-09-26 14:36:28 1524

原创 OAuth2微信扫码登录

微信扫码登录基于OAuth2协议的授权码模式,接口文档:https://developers.weixin.qq.com/doc/oplatform/Website_App/WeChat_Login/Wechat_Login.html流程如下:第三方应用获取access_token令牌后即可请求微信获取用户的信息,成功获取到用户的信息表示用户在第三方应用认证成功。请求获取授权码第三方使用网站应用授权登录前请注意已获取相应网页授权作用域(scope=snsapi_login),则可以通过在 PC

2024-03-10 20:39:20 3211

原创 springboot 读取配置文件按中的配置

【代码】springboot 读取配置文件按中的配置。

2024-03-10 19:15:29 219

原创 spring boot 生成图片验证码

在认证时一般都需要输入验证码,验证码有什么用?验证码可以防止恶性攻击,比如:XSS跨站脚本攻击、CSRF跨站请求伪造攻击,一些比较复杂的图形验证码可以有效的防止恶性攻击。为了保护系统的安全在一些比较重要的操作都需要验证码。在pom文件中加入依赖<dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifac

2024-03-10 19:09:43 870

原创 Spring Security 认证

目前我们测试通过OAuth2的密码模式,用户认证会提交账号和密码,由DaoAuthenticationProvider调用UserDetailsService的loadUserByUsername()方法获取UserDetails用户信息。我们可以在loadUserByUsername()方法上作文章,将用户原来提交的账号数据改为提交json数据,json数据可以扩展不同认证方式所提交的各种参数。有了这些认证参数我们可以定义一个认证Service接口去进行各种方式的认证。定义认证Service 接口。

2024-03-10 18:13:25 856

原创 vue使用瀑布流加载图片

新建一个Water.js文件,在页面种引入。/* 设置一个固定的高度 *//* 开启垂直滚动 *//* 开启垂直滚动 */

2024-03-10 16:52:40 534

原创 spring security 基于数据库用户认证

配合前面几篇文章一起看Spring Security 认证OAuth2SpringBoot +oAuth2+JWT+Spring Security认证配置我们了解了使用Spring Security进行认证授权的过程,目前各大网站的认证方式非常丰富:账号密码认证、手机验证码认证、扫码登录等。连接用户中心数据库进行认证基于的认证流程在研究Spring Security过程中已经测试通过,到目前为止用户认证流程如下:认证所需要的用户信息存储在用户中心数据库,现在需要将认证服务连接数据库查询用户信

2024-03-06 23:52:54 1107

原创 微服务中使用Gatway网关进行认证

注意:网关鉴权功能调试通过后,由于目前还没有开发认证功能,前端请求网关的URL不在白名单中间时会“没有认证”的错误,暂时在白名单中添加 全部放行配置,待认证功能开发完成再屏蔽全部放行配置,除了白名单剩下的就是需要认证的请求,网关需要验证jwt的合法性,jwt合法则说明用户身份合法,否则说明身份不合法则拒绝继续访问。除了白名单剩下的就是需要认证的请求,网关需要验证jwt的合法性,jwt合法则说明用户身份合法,否则说明身份不合法则拒绝继续访问。2、校验jwt的合法性。2、校验jwt的合法性。

2024-03-06 23:14:00 852

原创 SpringBoot +oAuth2+JWT+Spring Security认证配置

官网:https://jwt.io/这个过程就是无状态认证。令牌采用JWT格式即可解决上边的问题,用户认证通过后会得到一个JWT令牌,JWT令牌中已经包括了用户相关的信息,客户端只需要携带JWT访问资源服务,资源服务根据事先约定的算法自行完成令牌校验,无需每次都请求认证服务完成授权。拿到了jwt令牌下一步就要携带令牌去访问资源服务中的资源,项目各个微服务就是资源服务,比如:A服务,客户端申请到jwt令牌,携带jwt去B服务查询信息,此时B服务要对jwt进行校验,只有jwt合法才可以继续访问。

2024-03-05 23:31:08 1217 1

原创 OAuth2认证流程

Spring Security支持OAuth2认证,OAuth2提供授权码模式、密码模式、简化模式、客户端模式等四种授权模式,前边举的微信扫码登录的例子就是基于授权码模式,这四种模式中授权码模式和密码模式应用较多,本实例使用Spring Security演示授权码模式、密码模式,其余两种请自行查阅相关资料。答案是否定的,服务提供商会给批准接入的客户端一个身份,用于接入时的凭据,有客户端标识和客户端秘钥,在这里配置批准接入的客户端的详细信息。

2024-03-05 22:53:02 3378

Spring AOP自定义注解实现日志管理

Spring AOP自定义注解实现日志管理

2025-05-14

MinIO文件系统,软件下载

MinIO文件系统

2024-02-20

使用gogs创建Git远程仓库

安装包

2024-02-20

Excel导入导出,Java注解的方式实现

Excel导入导出,Excel导入导出,Excel导入导出

2022-04-08

空空如也

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

TA关注的人

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