自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IDEA如何进行远程Debug

远程调试是开发过程中常用的技术,尤其在分布式系统或微服务架构中。通常情况下,开发者会在本地环境中运行程序进行调试,但当应用部署在远程服务器上时,直接在本地调试变得不可行。此时,远程调试成为解决方案之一。

2025-11-02 16:42:54 430

原创 MyBatis-Plus使用动态表名分表查询

注意:版本须使用3.5.3以上,否则无法使用DynamicTableNameInnerInterceptor类中的setTableNameHandler方法。

2025-09-25 00:08:58 485

原创 接口幂等性与限流(二)

自定义RateLimit注解@Target({/*** 限制时间段,单位为秒/*** 在限制时间段内允许的最大请求次数/*** 限流的key,支持SpEL表达式/*** 提示信息*/ String message() default "操作太频繁,请稍后再试";@Target({/*** 限制时间段,单位为秒/*** 在限制时间段内允许的最大请求次数/*** 限流的key,支持SpEL表达式/*** 提示信息。

2025-09-24 23:47:49 465

原创 接口幂等性与限流(一)

/ 设置默认过期时间为 60 秒String message() default "重复请求";// 设置默认重复请求提示信息。

2025-09-23 22:29:04 377

原创 Spring Boot 集成第三方 API 时,常见的超时与重试机制设计

在日常的Spring Boot开发中,经常需要和第三方系统进行交互,比如支付接口、短信接口、地图接口等等。然而,第三方 API 并不是一直都稳定可用的。网络波动、服务异常、接口限流、超时未响应等情况非常常见。

2025-09-14 10:52:57 390 1

原创 SpringBoot项目动态切换数据源

*** 主库* 从库*/ SLAVE }@Component/*** Spring应用上下文环境*/@Override@Override/*** 获取对象* @return Object 一个以所给名字注册的bean的实例*//*** 获取类型为requiredType的对象* @return*//*** 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true*//**

2025-09-11 00:13:51 287

原创 布隆过滤器

布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。

2025-09-08 23:03:39 938

原创 SpringBoot 公共字段自动填充

在某些业务场景中,重复字段如create_time、update_time等频繁出现在每个实体类中。这种重复不仅增加了代码的冗余度,还导致了维护成本的上升。每次编写服务方法时,都需要手动设置这些字段,既费时又容易出错。特别是当字段变更时,需要在多个地方进行同步修改,增加了出错的风险。而且在更新操作中,若遗漏这些字段,可能会导致数据的不一致,给系统带来潜在的风险。本文将分享一套经过生产验证的自动化方案,涵盖MyBatis-Plus、AOP等核心策略,助你彻底摆脱公共字段维护的烦恼。

2025-09-07 22:39:10 311

原创 Spring Boot中策略模式结合依赖注入的实现方式

在Spring Boot项目开发中,常常会遇到根据不同的业务场景执行不同逻辑的需求,策略模式就是一种很好的设计模式来应对这种情况。同时,Spring Boot强大的依赖注入机制可以方便地将不同的策略类进行管理和调用。定义一个策略接口,所有具体的策略类都将实现这个接口:2. 实现具体的策略实现几个具体的策略类,例如处理订单和支付:也可以通过配置类的方式注入策略模式实现类,先注释其中的3. 创建策略工厂为了方便获取不同的策略,我们可以创建一个工厂类 BaseFactory,它将通过依赖注入管理策略的实

2025-09-07 00:13:52 422

原创 SpringBoot优化树形结构数据查询

在实际业务中,分类树(Category Tree)往往是内容管理、权限体系等系统的核心数据结构。随着业务规模不断扩张,原本毫无压力的树形查询,突然变成了系统性能的瓶颈。

2025-09-06 22:43:26 255 1

原创 SpringBoot集成Caffeine本地缓存

引入本地缓存机制,可以减少查询数据库的次数。选择了Caffeine作为缓存框架,易于与Spring集成。

2025-08-11 21:20:11 281

原创 SpringBoot使用JUnit5实现单元测试—Mockito 模拟

Mockito是一款开源测试库,简称 Mock , 该框架允许在自动化或单元测试中模拟对象。简单来说对于某些不容易构造或者不容易获取的比较复杂的数据/场景,模拟一个虚假的Mock对象来替代真实的对象。

2025-08-10 16:11:25 568

原创 如何线程池使用

matchIfMissing作用:指定如果配置项没有提供,是否认为条件成立。默认值是 false,表示必须存在该属性且满足 havingValue 才会加载 Bean。如果设置为 true,即使属性没有设置,也认为条件成立。prefix作用:指定属性名前缀。这个属性主要用于读取嵌套配置的属性,默认值是空字符串,表示直接使用name属性来查找配置项。如果使用 prefix,则属性名会变成 prefix.name。havingValue作用:指定配置属性值的期望值。name作用:指定需要检查的配置属性的名称。

2025-08-10 15:52:20 284

原创 SpringBoot集成ZXing生成二维码

启动你的SpringBoot应用后,可以通过浏览器或工具(如Postman)访问/generateQRCode接口,并传递要生成二维码的数据。例如:http://localhost:8080/generateQRCode?使用ZXing库的MultiFormatWriter来生成QR码、条形码,并将QR码、条形码保存到指定路径的文件中。确保根据需求修改这些参数以生成你想要的QR码、条形码。同时,在实际代码中要添加注释来帮助其他开发者理解这个QR码、条形码生成服务。

2025-08-07 13:20:18 194

原创 Spring Boot实现敏感词过滤功能

要在Spring Boot中实现敏感词过滤功能,可以使用一些现有的Java库来处理敏感词过滤,例如,可以使用 Ansj 中文分词库或者使用一些其他开源的敏感词过滤库。以下是一个使用 Ansj 实现敏感词过滤的简单示例。

2025-08-06 23:41:46 373

原创 SpringBoot集成RestTemplate请求高德地图API

本文介绍了如何在SpringBoot项目中整合高德地图API,提供了相关代码示例,帮助开发者快速使用高德地图API。

2024-08-27 23:35:59 1391 1

原创 JDK8新特性(一):Optional类

JDK8新增了Optional 类,它是一个没有子类的工具类。我们可以把它看作是一个容器。这个容器有两种情况:①要么有值 ②要么为null。

2024-07-20 18:52:36 572

原创 Springboot集成EasyExcel

Java 解析、生成 Excel 比较有名的框架有 Apache POI、jxl。但它们都存在一个严重的问题就是非常的耗内存。POI 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但 POI 还是有一些缺陷,比如 07 版 Excel 解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。

2024-07-07 03:29:15 588

原创 Redis的两种序列化器

Jackson2JsonRedisSerializer 和 GenericJackson2JsonRedisSerializer。

2024-07-06 18:22:17 1455 2

原创 JDK8新特性(二):Stream流操作

Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排序、聚合等。Stream。

2024-06-05 00:59:25 1030

原创 @Autowired注入问题

PostConstruct:被@PostConstruct修饰的方法会在服务器加载Servle的时候运行,并且只会被服务器执行一次。原因:RedisTemplate被static所修饰,Spring依赖注入是依赖set方法,而set方法是普通的对象方法,static变量是类的属性,所以无法完成注入操作。一般来说就是没有被ioc容器进行管理,在容器中匹配不到类型,需要注解(@Service,@repository,@Component等)纳入spring IOC容器中。按byType自动注入。

2023-11-26 00:22:05 590 1

原创 @Accessors使用

开启链式编程 设置chain=true时,setter方法返回的是this(也就是对象自己),代替了默认的返回值void,直接链式操作对象。@Builder 会生成一个不完美的构建器,它不能区分哪些参数是必须的,哪些是可选的。这可能会导致构建对象时出现错误或不一致的情况。如果一个类有些参数必传,有些参数选传,可以将必传参数定义到构造方法上,非必传参数采用 @Accessor 方式链式设置。二、@Accessors(fluent = true)一、@Accessors(chain = true)

2023-09-08 10:41:24 431 1

原创 Swagger和Knife4j使用

Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务(它的主要作用是:使得前后端分离开发更加方便,有利于团队协作接口的文档在线自动生成,降低后端开发人员编写接口文档的负担功能测试Spring已经将Swagger纳入自身的标准,建立了Spring-swagger项目,现在叫Springfox。通过在项目中引入Springfox ,即可非常简单快捷的使用Swagger。

2023-08-31 01:02:01 336

原创 Kafka安装、配置和使用

注意:Kafka安装文件中包含zookeeper打开,选择适合的版本进行下载。后缀 .tgz 格式文件兼容Windows系统,可以正常运行。

2023-08-30 00:00:29 371 1

原创 CentOS7更换阿里yum源

阿里云Linux-CentOS镜像仓库地址:http://mirrors.aliyun.com/centos/官方镜像下载地址:https://www.centos.org/download/mirrors/注意:操作之前先安装wget,否则第二步无法执行wget。4.安装epel-release。3.清理yum缓存,重建缓存。1.备份原有yum源。2.下载阿里yum源。5.查看yum源信息。

2023-05-11 02:19:33 878

原创 Linux(CentOS Stream 9)连接mysql数据库报错

没有libncurses.so.5,可能有libncurses.so不同版本的文件,使用命令。没有libtinfo.so.5,可能有libtinfo.so不同版本的文件,使用命令。查找,找到的是/usr/lib64/libncurses.so.6.2。查找,找到的是/usr/lib64/libtinfo.so.6.2。

2023-05-10 17:44:48 477

原创 CentOS Stream 9配置阿里yum源

【代码】CentOS Stream 9配置阿里yum源。

2023-05-10 11:56:31 7546 3

原创 Linux安装MySq警告:mysql-community-client-5.7.25-1.el7.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5

此条警告信息是因为yum安装了旧版本的gpg keys造成的。解决方法:给后缀添加"–force --nodeps"即可。

2023-05-10 01:46:59 921

原创 linux -bash: ipconfig: command not found

Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

2023-05-09 15:18:00 5355

原创 Linux安装步骤

进入到Linux系统里面, 发现光标无法移动到windows操作系统中了, 这个时候, 可以通过快捷键 “Ctrl+Alt” 切换光标到windows系统中。注意 : 在Linux系统中,在命令行中输入密码信息,为了保证安全性,密码是不显示的(看似没有输入,实际已经输入了);如果没有获取到linux系统的IP地址,就需要通过以下操作来修改网络初始化配置,并重新启动虚拟机。安装完毕后,点击窗口中的蓝色的 “重启” 按钮,重启Linux系统。服务器重启完成之后,可以通过linux的指令。

2023-05-09 14:37:42 593

原创 Window中设置redis服务自启

新建系统变量,在path中输入redis解压路径。

2023-04-28 11:54:08 2585

原创 Maven仓库配置

结尾的是源码。将需要配置两个环境变量:PATH和M2_HOME。M2_HOME指向maven解压后的根目录。

2023-04-22 10:45:04 2717

原创 idea打开项目时右下角弹出“Lombok requires enabled annotation processing”的解决方法

Lombok requires enabled annotation processing:翻译过来就是Lombok 需要启用注释处理。文件 --> 设置 --> 构建、执行、部署 --> 编译器 --> 注解处理器。出现这个错误是因为使用了Lombok插件的原因,可能是安装时候没有配置好。然后勾选上启用注解处理即可。

2023-04-20 00:04:26 3745 1

原创 OGNL 表达式

(5)#{ } 底层使用的是PreparedStatement,${ } 底层使用的是 Statement。(4)#{ } 只能操作跟数据字表字段相关的列值,跟列值无关的只能用${ }使用时机:如果对表名、列表进行动态设置时使用。(1)相同:都可以获取对象的信息。

2023-04-17 00:13:56 1291 1

原创 常用的前端4种请求方式

1. GET拼接url,POST传递body,get限制字符串长度2. 请求缓存:GET 会被缓存,而post不会,原因是get是url的请求4. 保留浏览器历史记录:GET可以,而POST不能,原因是get的url请求5. 用处:get常用于取回数据,post用于提交数据6. 安全性:post比get安全,是因为post是请求体,不会在url上被劫持!7. 请求参数:querystring是url的一部分get、post都可以带上。

2023-04-16 21:05:22 3809 2

原创 Spring事务管理

是一组操作的集合,它是一个不可分割的工作单位。事务会把所有的操作作为一个整体,一起向数据库提交或者是撤销操作请求。所以这组操作要么同时成功,要么同时失败。事务的操作主要有三步:开启事务(一组操作开始前,开启事务):start transaction / begin;提交事务(这组操作全部成功后,提交事务):commit;回滚事务(中间任何一个操作出现异常,回滚事务):rollback;

2023-04-11 20:55:41 239 1

原创 count(*)和count(1)和count(列名)的区别

count(*),执行时会把星号翻译成字段的具体名字,效果也是一样的,不过多了一个翻译的动作,比固定值的方式效率稍微低一些。其实就可以想成表中有这么一个字段,这个字段就是固定值1,count(1),就是计算一共有多少个1.它们之间根据不同情况会有些许区别,MySQL会对count(*)做优化。,一般也是我们第一个开始学习的聚合函数,那么它们之间究竟由什么区别呢?补充关于count(1)、count(*)原理 引用百度知道专业回答。count(1),其实就是计算一共有多少符合条件的行。

2023-04-04 11:16:39 293 1

空空如也

空空如也

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

TA关注的人

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