- 博客(29)
- 收藏
- 关注
原创 使用redis的setnx实现分布式锁
是 “Set If Not Exists”(如果不存在,则设置)的缩写。这是一个原子操作,用于设置一个键的值,前提是这个键不存在。如果键已经存在,.则不会执行任何操作。接下来,你可以在需要防止并发执行的方法中使用。
2024-06-02 09:21:14
283
原创 查看docker中各个容器所占的资源
这个命令会显示容器的名称、CPU使用百分比、内存使用情况、网络IO、块IO、内存使用百分比和进程ID数量。这个命令提供了容器的实时资源使用统计,包括内存使用情况。要查看Docker中的每个容器占用的资源,可以使用。命令持续输出数据,而是只显示当前时刻的统计信息。替换为想要查看的容器的名称或ID。
2024-05-31 00:07:01
608
原创 在SpringBoot中使用redis中的zset实现延迟任务
(有序集合)适合实现延迟任务的原因主要有以下几点:2、配置redis3、创建ZSET操作服务创建一个服务类来封装对ZSET的操作:4、定时轮询ZSET创建一个定时任务来定期检查ZSET中是否有到期的任务:负责添加和处理延迟任务,而负责定期调用方法来检查和处理到期的任务。
2024-05-30 18:29:07
386
原创 java中String、List、数组之间的转换方式
在Java中,StringList和数组(如String[])之间的转换是常见的操作。下面是如何在它们之间进行转换的示例。
2024-05-29 21:26:48
657
原创 docker使用docker logs命令查看容器日志的几种方式
命令只能用于显示容器的日志输出,如果容器没有输出日志到stdout和stderr,那么这个命令将不会显示任何信息。如果容器日志非常大,你可能只想查看某个时间段的日志。在这种情况下,可以使用。如果需要更详细的日志信息,例如带有时间戳的日志,可以使用。参数,后跟一个相对的时间或者一个具体的时间戳。如果只想查看最近几行的日志,可以使用。如果想要实时查看日志,可以加上。参数,后面跟上想查看的行数。参数,这样日志就会像使用。
2024-05-29 14:58:48
758
原创 浅析AOP中的JoinPoint的使用
JoinPoint接口提供了多个方法,允许我们在切面中获取与连接点(即目标方法执行点)相关的信息。getArgs()SignaturegetThis()toString()getKind()下面是一个使用JoinPoint在这个示例中,我们定义了一个切面InfoAspect,它有一个@Before通知,该通知会在执行包下所有方法之前触发。在方法中,我们通过JoinPoint参数获取了方法名、目标对象、方法参数、代理对象、连接点类型和源代码位置等信息,并将它们打印出来。
2024-05-28 17:55:38
533
原创 浅析SpringBoot中的AOP以及自定义注解类
下面我们自定义一个注释@Target(ElementType . METHOD) // 注解应用的地方(方法) @Retention(RetentionPolicy . RUNTIME) // 注解的生命周期(运行时) public @interface LogExecutionTime {// 可以定义一些属性,例如是否启用日志 boolean enabled() default true;
2024-05-28 17:32:44
1142
原创 SLF4J自定义方法输出日志信息
在Slf4j中封装一个方法,每当调用这个方法时在日志中输出当前时间、线程id和当前类,并可输出传入的日志信息。现在,你可以在你的代码中这样使用。创建一个自定义工具类。
2024-05-26 12:24:49
172
原创 mybatis-plus自定义拦截器统计方法中调用所有数据库表的名称
/定义正则表达式,提取出sql语句中的关键字 private static final Pattern TABLE_NAME_PATTERN = Pattern . compile("(FROM|UPDATE)\\s+([\\w\\._]+)");// 解析SQL语句,提取表名称 Matcher matcher = TABLE_NAME_PATTERN . matcher(sql);
2024-05-21 19:25:47
253
1
原创 freemarker常用内建函数介绍
检查Hash是否为空(即是否包含至少一个键值对))都需要在模板的数据模型中被定义和赋值。:检查字符串是否以特定子串开始或结束。:返回序列的第一个和最后一个元素。:返回Hash中的所有键和值。等:检查变量是否为特定类型。:检查字符串是否包含特定子串。请注意,上述示例中的变量(如。:对字符串进行HTML编码。:使字符串的第一个字母大写。:返回序列中元素的数量。:对数字进行四舍五入。:对数字进行向上取整。
2024-04-30 22:15:11
243
原创 freemarker基本语法介绍
虽然 FreeMarker 提供了丰富的内置指令,但你也可以定义自己的指令。这通常涉及编写 Java 代码来扩展 FreeMarker。
2024-04-30 16:04:42
198
原创 解决:java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter
如果你使用的是Maven或Gradle等构建工具,你可以添加JAXB的依赖到你的项目中。但是,请注意,即使添加了依赖,你也可能需要额外的配置来确保。:如果你的项目可以兼容Java 8,那么回退到Java 8可以避免这个问题,因为。在Java 8中仍然可用。
2024-04-29 01:31:19
600
原创 vue3中,ref响应式变量什么时候需要使用.value
value在 Vue 3 中,ref用于创建响应式的引用(references),它总是返回一个包装对象,这个对象的.value属性包含了真正的响应式值。
2024-04-20 23:53:27
529
2
原创 捕获SpringSecurity异常,进行统一返回
需要捕获SpringSecurity中的异常,通过统一返回类封装后返回给前端,但是使用@ControllerAdvice的全局异常处理器无法捕获到SpringSecurity中的异常,原因如下:在SpringSecurity中,如果认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。所以如果我们需要自定义异常处理,我们只需要实现AuthenticationEntryPoint和AccessDeniedHandler接口然后配置给SpringSecurity即可。
2023-02-22 10:50:03
2004
原创 org.springframework.security.access.AccessDeniedException: Access is denied
使用SpringSecurity时,已经允许登录接口匿名访问:还是报错:原因在过滤器中使用 SecurityContextHolder 对所有请求都进行了授权,而 .anonymous() 只允许未授权的请求访问在过滤器中将授权业务放在token验证后,token为空的直接放行,不进行授权
2023-02-22 04:11:26
1133
原创 docker部署RabbitMQ集群
RabbitMQ底层依赖于Erlang,而Erlang虚拟机就是一个面向分布式的语言,默认就支持集群模式。用户发送给队列的一切请求,例如发送消息、消息回执默认都会在主节点完成,如果是从节点接收到请求,也会路由到主节点去完成。而镜像模式下,创建队列的节点被称为该队列的。但是,不同队列可以在集群中的任意节点上创建,因此不同队列的主节点可以不同。使用exactly模式的镜像,因为集群节点数量为3,因此镜像数量就设置为2。当主节点接收到消费者的ACK时,所有镜像都会删除节点中的数据。
2023-02-19 03:02:23
516
原创 解决虚拟机挂起重连后无法连接docker容器的问题
最近在docker中部署各种容器时,遇到一个问题:每次挂起虚拟机恢复后,就无法连接docker中的容器了,必须要重新启动容器才能正常连接,非常麻烦,查阅各种资料后,解决方法如下。
2023-02-16 21:49:10
1396
3
原创 JAVA使用FTP将本地文件传输到虚拟机中
vsftpd默认只能将文件上传到用户目录下(上面的 /ftpuser),如果想要将文件上传到其他目录,上传前一定要对上传的目标目录进行授权,否则会上传失败。到此虚拟机环境就搭建好了,下面编写java代码。创建成功后 /home 下会生成用户目录。下面对 /tmp/images 目录授权。
2023-02-16 21:19:29
516
原创 解决centos出现多个ip或ip地址消失
使用VMware Workstation创建虚拟机后,有时在挂起虚拟机恢复后,虚拟机会出现两个ip地址或者ip地址消失。为虚拟机设置静态ip可以解决这个问题。
2023-02-16 20:46:13
1882
CacheService类,封装了redis中的所有方法
2024-05-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人