- 博客(125)
- 资源 (10)
- 收藏
- 关注

原创 Aop+自定义注解对入参进行操作(过滤、解密)
背景:对外提供接口,为了数据安全,接口入参进行了数据加密,接口收到参数后需要进行解密;如果每一个接口都要对入参进行一 一的解密操作,就大大增加了代码量和工作量;所以,这里使用自定义注解加Aop进行无侵入式的操作;第一步:自定义注解package com.example.demo.common;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.ann
2020-07-21 17:44:47
5018
原创 ApplicationRunner执行顺序问题
作用:ApplicationRunner是Spring Boot提供的一个接口,主要用于在Spring应用完全启动后执行特定的初始化任务或逻辑,例如数据库初始化、配置文件加载、缓存预热等。执行结果:可以看到,执行顺序就是按照@Order()注解来执行的,数值越小执行顺序越靠前。具体用法这里就不做详细介绍了。
2025-05-06 16:57:47
161
原创 解决报错:Could not autowire. There is more than one bean of ‘RedisConnectionFactory‘ type.
原因:项目中原先引入了spring-boot-starter-data-redis依赖,然后又引入了redisson-spring-boot-starter依赖,最终导致依赖冲突。因为redisson-spring-boot-starter依赖包含了spring-boot-starter-data-redis依赖。解决:去掉spring-boot-starter-data-redis依赖即可。看这提示就是存在多个RedisConnectionFactory Bean。
2025-05-06 16:39:59
228
原创 Java controller接口出入参时间序列化转换操作
场景:在controller编写的接口,在前后端交互过程中一般都会涉及到时间字段的交互,比如:后端给前端返的数据有时间相关的字段,同样,前端也存在传时间相关的字段给后端,最原始的方式就是前后端都先转换成字符串和时间戳后进行传输,收到后再进行转换,特别麻烦。为了方便可以使用注解或者配置做到时间字段的自动转换,这里列举两种简单的操作。
2025-04-29 10:04:41
290
原创 java服务报错ERROR[http-nio-8088-exec-1] org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:175)
项目使用的是jdk1.8,但是IDE默认使用了jdk11,最终导致打包后出现问题。原因:打包的时候指定的jdk版本错误!
2025-04-28 18:29:40
241
原创 解决报错:this[kHandle] = new _Hash(algorithm, xofLen);
这个错误是由于 Node.js 的加密模块与当前项目使用的 OpenSSL 版本不兼容导致的。常见于 Node.js v17+ 版本,因为这些版本使用了 OpenSSL 3.0,而一些老项目可能依赖旧版的加密算法。
2025-04-23 21:10:06
363
原创 @RequiredArgsConstructor注解是个什么东西?
帮我们自动生成一个包含所有 final 字段的构造函数,这样就不需要使用注入相关的注解(@Autowired、@Resource)了。编译后的代码情况如下,可以看出,单独用@Autowired或@Resource注解标识的字段不会出现在构造方法中。先看看我们常见的一个写法,使用@Autowired在指定字段上,让 spring 完成 bean 自动装配的工作。1、自动生成构造函数:为类中所有 final 字段和标记为 @NonNull 的字段生成一个构造函数。2.如果有继承关系,不会包含父类的字段。
2025-04-18 10:04:18
551
原创 为什么不能在foreach循环中进行元素的remove/add操作?
不要在for/foreach循环中进行元素的remove/add操作,为什么?因为会报错。这不是废话吗,具体说明原因呢,这里简单的来看看怎么回事。比较官方的回答:某些集合(如 ArrayList、HashMap等)在添加或删除元素时,会调整其内部数组的大小或重新排列元素,可能会导致迭代器遍历到错误的索引或元素,从而破坏集合的完整性。不仅如此,在同一个集合被多线程读写过程中也会有同样的问题,比如一个线程在遍历,同时其他线程在进行remove/add操作,同样会抛异常。
2025-02-10 11:03:11
343
原创 minio桶设置权限
minio的桶Bucket权限设置,如果设置为private,文件的访问或下载需要URL带上签名。如果设置为public,直接通过文件的URL就能访问或下载。
2024-11-28 16:10:04
5324
原创 登录时用户名密码加密传输(包含前后端代码)
登录时用户名密码加密传输,这里使用RSA非对称加密,前端使用公钥加密,后端使用私钥解密,这样就不会暴露私钥。
2024-10-18 15:34:39
4152
1
原创 jvm内存溢出问题排查Java服务自动停止问题排查
Java服务自动停止,Java服务内存溢出问题解决记录。过程描述:服务器上的一个项目突然服务不了了,登录服务器一看,服务被停了,第一反应大概率就是内存溢出导致的,结果查看日志没有任何报错,就很奇怪,然后就在启动命令里面加上了一个命令,该命令的作用就是在发生内存溢出的时候会自动生成dump文件(jvm内存快照),把该文件下载到本地后用jvisualvm应用打开就能分析出问题。从日志可以看出,由于Java服务占用的内存太多了,为了能保证系统的正常运行,操作系统就把Java服务kill停止了。
2024-10-15 17:54:47
999
1
原创 重装系统后进不了系统
记录一下重装系统后进不了系统并且报错的几种原因。这里记录一下解决思路,系统安装好了,但是就是进不去并且报错,大概就是启动的时候BIOS没有识别到安装系统的硬盘或者BIOS启动引导方式设置错误问题。
2024-10-08 21:39:25
7389
原创 ThreadLocal解惑
比较书面的回答:类如其名,线程本地变量。当使用 ThreadLocal 维护变量时,ThreadLocal 为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程。这句话没问题,但容易被人误解,会被误以为:任意变量用ThreadLocal维护都是线程隔离的。后面会解答这个问题。
2024-08-23 22:43:13
907
原创 【解决】npm install 报错 cb() never called! This is an error with npm itself. Please report this error at
场景:npm install 报错总结一下,出现这个错误主要有两种原因1.npm缓存问题、2.node.js版本问题。附加node.js管理工具nvm的安装教程。
2024-07-28 19:48:57
7650
1
原创 “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directory)问题
报错的意思是大概就是没找到 nginx.pid这个文件。这个是什么文件呢?nginx.pid文件在启动Nginx时会自动生成,它记录了nginx的进程ID也就是pid, 主要用于管理Nginx进程,例如停止或重启Nginx。当Nginx无法找到该文件时,会导致启动或重新加载Nginx配置文件失败。
2024-07-27 19:29:07
1419
原创 Jenkins流水线部署Maven项目
使用Jenkins的流水线功能,构建部署Java Maven项目,步骤很简单但是有不少细节需要注意。
2024-05-10 15:22:41
2677
1
原创 jvisualVM分析jvm内存使用快照dump
服务发生内存溢出,就需要查看服务器上Java服务的jvm堆内存使用情况,可以使用dump命令生成dump文件,然后下载到本地,然后使用jvisualVM工具打开,即可实现可视化分析。生成dump文件常用的两种方式:第一种:使用命令直接生成。第二种:java -jar启动服务的时候添加dump参数,服务发生内存溢出时自动生成。
2024-04-14 23:00:16
7059
1
原创 jvisualVM远程连接jstatd
使用本地的jvisualvm工具远程连接jstatd。jvisualVM远程连接jstatd一般作为临时监控使用,例如:测试环境做压力测试时需要监控内存、以及其他的指标使用情况;线上服务出现内存使用异常等。如需要功能更全面,更规范的监控方式,可使用一些第三方监控服务,例如:Spring Boot Admin。
2024-04-14 20:33:29
1058
原创 springcloud gateway网关动态配置限流
这里简单记录一下gateway网关集成mybatisPlus实现动态限流。gateway网关默认的限流方式各项限流参数都是在配置文件中配置,不够灵活,虽然使用阿里的Sentinel组件可以实现从nacos注册中心、配置中心动态读取配置,但是还是有一定的局限性。
2024-03-13 22:46:11
1673
原创 spring-boot-maven-plugin springboot打包配置问题
springboot项目的pom文件中一般都配置了spring-boot-maven-plugin打包插件,一般情况下,只需要映入 spring-boot-maven-plugin 依赖即可,但是某些情况下还是需要额外配置部分参数。
2024-03-10 19:53:50
1382
1
原创 jar运行报错Unable to read meta-data for class
项目在idea中运行没有任何问题,但是打包部署后就报错了,报错:java.lang.IllegalStateException: Unable to read meta-data for class com.zhh.zhhd.biz.config.Test1Config
2024-03-10 18:03:22
3896
1
原创 springcloud gateway网关
gateway网关功能:服务路由、负载均衡、请求限流、跨域问题统一解决配置、身份认证和权限校验等下面记录一下gateway网关的基本功能和配置。PS:没有使用注册中心。
2024-03-02 13:38:45
715
原创 spring-boot-starter-parent和spring-boot-dependencies介绍
springboot项目的pom文件中,我们经常看见这样(下图)两种springboot的版本依赖管理方式;图片中的这两种依赖声明方式任意用其中一种都可以。文章后面会简单阐述一下区别和使用场景。
2024-03-02 01:42:49
2607
原创 SpringCloud gateway限流无效,redis版本低的问题
在使用springCloud gateway的限流功能的时候,配置RedisRateLimiter限流无效,后来发现是Redis版本过低导致的问题,实测 Redis版本为3.0.504时限流无效,改用7.0.x版本的Redis后限流生效。gateway配置RedisRateLimiter限流,限流过程中会有key存储在Redis中,可以在Redis客户端使用命令 keys * 查看存储的key,key消失得特别快,可以在压测该过程中查看。
2024-03-01 20:59:59
904
原创 RedisTemplate序列化
RedisTemplate默认使用的是JDK 序列化方式(JdkSerializationRedisSerializer) ,这种序列化方式可以不用在配置类里配置,默认即可,这种不推荐使用,这种方式对应客户端来说可读性差,不利于人工排查问题。所以一般用JSON序列化,JSON序列化方式又有两种,GenericJackson2JsonRedisSerializer和Jackson2JsonRedisSerializer,GenericJackson2JsonRedisSerializer配置更简单方便些。
2024-01-01 11:47:46
1509
原创 aop使用自定义注解报错 cannot resolve symbol
aop使用自定义注解报错 cannot resolve symbol '*',自定义一个注解 AuthTest,在aop场景下使用:@annotation(原因:如果自定义注解和aop类在同一个包下,@annotation中就可以只写注解名称,否则注解里面需要写全路径,例如:@annotation(")结果自定义注解报红。
2023-12-04 22:19:07
405
原创 GitHub经常打不开或者访问解决办法
访问慢或无法访问的原因:DNS解析是最为基础的一个环节。由于Github的服务器在全球各地,域名解析所需的时间也会不同,这就导致了在特定地区可能会出现Github无法正常访问的情况。解决:查询到github对应的IP,然后在hosts中配置IP和域名的对应关系,就相当于告诉浏览器目标地址在哪里了。可以ping命令: ping github.com 试一下,刚刚配置的域名IP映射已经生效。文件位置:C:\Windows\System32\drivers\etc。打开hosts文件,追加下面文本到末尾保存。
2023-10-30 21:03:24
2185
1
原创 读取yaml文件的值
记录一下,读取yaml文件中属性的值,这里用Kubernetes的deployment.yaml文件来举例。读取yaml文件中的image的值。
2023-09-17 15:35:58
369
原创 获取spring容器中的bean实例
在开发过程中,我们可能需要动态获取spring容器中的某个bean的实例,此时我们就会用到ApplicationContext spring应用上下文,这里做一下记录,网上很多类似的的工具类。先写好工具类再测试一下是否好用。创建一个bean并注入到容器。
2023-09-17 14:45:18
463
原创 Java判断文件的系统格式编码格式
使用Java判断一个文件的系统格式(亲测可用!),比如我们常见的:Windows格式的文件,Unixg格式的文件,Mac格式的文件;常常有这样的场景:我们在Windows系统编写的脚步上传到Linux系统执行,执行过程中偶尔会出现各种各样奇怪的问题,然后还找不到原因!好了,大概率是脚本格式问题。1.如果有notepad++,直接打开查看右下角,既可以查看当前的文件系统格式,也可以直接点击修改。
2023-08-05 17:02:23
1446
原创 base64: invalid input
类似的编码问题经常出现,比如:在windows平台下创建的shell脚本、文本、文件等等默认都是windows的编码格式,在上传到Linux平台之前或者上传之后记得最好是转一下格式。场景:把一个文件转成了base64字符串,并且存储在一个文本文件中,现在要使用命令把她转回去。2.Notepad++, 窗口右下角有Windows(CRLF)字样,这就是当前文本的编码格式,右键可以选择需要转换的编码。是因为文本编码的问题,文本是在windows平台下创建的,默认编码是windows编码,需要转为Unix编码;
2023-07-17 17:18:46
2661
原创 使用try catch干掉if else
阿里巴巴开发手册不建议使用try cath处理业务逻辑,但是实际开发过程中使用try catch代理if else往往会起到事半功倍的效果。一个简单的场景(实际开发过程中肯定比较复杂):现在要对一个字符串进行多重校验,每个校验写一个方法,然后挨个调用这些方法,一个校验通过后进行下一个校验,直到结束为止。如果使用常规写法,会出现大量的判断和处理逻辑。
2023-07-01 11:12:40
1135
原创 Spring Boot @RestControllerAdvice 全局异常处理
利用注解@RestControllerAdvice 轻轻松松实现全局异常处理
2023-05-27 17:41:37
377
Navicat12安装包.zip
2020-07-02
solr定时同步jar包.zip
2020-05-22
eclipseSVN-site-1.10.11.zip
2020-02-23
HttpClient所需jar包
2019-03-07
基于Java FX实现的可视化排序算法
2018-09-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人