- 博客(38)
- 收藏
- 关注
原创 Java 17使用netty报错:PlatformDependent0$7 cannot access class jdk.internal.misc.Unsafe
环境:java 17 + netty 4.1.94.Final。
2024-08-16 12:21:21 586 1
原创 Java NIO中的Selector使用方法
Java NIO中的Selector是一个可以检查一个或多个实例是否准备好进行I/O操作的对象。使用Selector可以让你用一个线程来管理多个Channel,从而提高应用程序的效率。
2024-08-01 01:39:08 1063
原创 对比InputStream/OutputStream和Channel
以下是一个表格,对比了和Channelread()write()close()
2024-07-26 23:18:11 697
原创 实例说明如何使用Java 8的Function接口使得代码更加简洁以及降低重复性
Function接口是Java 8中引入的一个功能性接口,位于包下。它代表了一个接受一个参数并产生结果的函数。这个接口只有一个抽象方法apply(T t),用于对传入的参数应用某种操作并返回一个结果。这里,T是函数的输入类型,R是函数的返回类型。
2024-07-23 13:36:44 654
原创 docker安装redis及避坑:‘locale-collate ““‘ Bad directive or wrong number of arguments
问题原因:不同的redis版本需要不同的配置文件,根据报错日志可知当前redis的版本为。替换掉,然后按照之前的方法修改配置信息,完成后再次启动redis。,所以需要去redis官网下载对应版本的配置文件。
2024-07-21 10:39:50 627
原创 使用Redis的SETNX命令实现分布式锁
分布式锁是一种用于在分布式系统中控制多个节点对共享资源进行访问的机制。在分布式系统中,由于多个节点可能同时访问和修改同一个资源,因此需要一种方法来确保在任意时刻只有一个节点能够对资源进行操作,以避免数据不一致或冲突。分布式锁就是用来实现这种互斥访问的工具。
2024-07-18 10:31:56 1790
原创 详细解析Kafaka Streams中各个DSL操作符的用法
在Kafka Streams中,DSL(Domain Specific Language)指的是一组专门用于处理Kafka中数据流的高级抽象和操作符。这些操作符以声明性的方式定义了数据流的转换、聚合、连接等处理逻辑,使得开发者可以更加专注于业务逻辑的实现,而不是底层的数据流处理细节。(Transformation Operators):这些操作符用于对KStream或KTable中的数据进行转换,如mapflatMapfilter等。它们允许你对流中的每个元素应用一个函数,从而生成新的流或表。
2024-07-17 10:50:20 1729
原创 详解MySQL中的递归查询
MySQL中的递归查询主要通过语句来实现,这在处理具有层级关系或树形结构的数据时非常有用。下面将通过一个具体的例子来详细解释如何在MySQL中使用递归查询。
2024-07-15 14:26:29 600
原创 “Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter”解决办法
这个异常通常发生在试图使用类的时候,但是运行环境的类路径中没有找到这个类。在 Java 9 及更高版本中,包含的类被移动到了新的模块中,而默认情况下,这个模块可能没有被加入到模块路径中。
2024-07-13 20:49:35 785
原创 浅析Kafka Streams中KTable.aggregate()方法的使用
方法是 Kafka Streams 中进行状态化聚合的关键,它允许你定义如何初始化和更新聚合状态,以及如何存储和管理这些状态。通过合理配置,你可以实现复杂的数据流处理需求,如累积计数、滑动窗口计算等。
2024-07-12 14:42:08 1020
原创 浅析Kafka Streams消息流式处理流程及原理
结合案例:统计消息中单词出现个数来测试并说明kafka-stream消息流式处理的执行流程
2024-07-12 00:01:31 1123
原创 查看docker中各个容器所占的资源
这个命令会显示容器的名称、CPU使用百分比、内存使用情况、网络IO、块IO、内存使用百分比和进程ID数量。这个命令提供了容器的实时资源使用统计,包括内存使用情况。要查看Docker中的每个容器占用的资源,可以使用。命令持续输出数据,而是只显示当前时刻的统计信息。替换为想要查看的容器的名称或ID。
2024-05-31 00:07:01 1039
原创 在SpringBoot中使用redis中的zset实现延迟任务
(有序集合)适合实现延迟任务的原因主要有以下几点:2、配置redis3、创建ZSET操作服务创建一个服务类来封装对ZSET的操作:4、定时轮询ZSET创建一个定时任务来定期检查ZSET中是否有到期的任务:负责添加和处理延迟任务,而负责定期调用方法来检查和处理到期的任务。
2024-05-30 18:29:07 480
原创 java中String、List、数组之间的转换方式
在Java中,StringList和数组(如String[])之间的转换是常见的操作。下面是如何在它们之间进行转换的示例。
2024-05-29 21:26:48 2505
原创 docker使用docker logs命令查看容器日志的几种方式
命令只能用于显示容器的日志输出,如果容器没有输出日志到stdout和stderr,那么这个命令将不会显示任何信息。如果容器日志非常大,你可能只想查看某个时间段的日志。在这种情况下,可以使用。如果需要更详细的日志信息,例如带有时间戳的日志,可以使用。参数,后跟一个相对的时间或者一个具体的时间戳。如果只想查看最近几行的日志,可以使用。如果想要实时查看日志,可以加上。参数,后面跟上想查看的行数。参数,这样日志就会像使用。
2024-05-29 14:58:48 6994
原创 浅析AOP中的JoinPoint的使用
JoinPoint接口提供了多个方法,允许我们在切面中获取与连接点(即目标方法执行点)相关的信息。getArgs()SignaturegetThis()toString()getKind()下面是一个使用JoinPoint在这个示例中,我们定义了一个切面InfoAspect,它有一个@Before通知,该通知会在执行包下所有方法之前触发。在方法中,我们通过JoinPoint参数获取了方法名、目标对象、方法参数、代理对象、连接点类型和源代码位置等信息,并将它们打印出来。
2024-05-28 17:55:38 814
原创 浅析SpringBoot中的AOP以及自定义注解类
下面我们自定义一个注释@Target(ElementType . METHOD) // 注解应用的地方(方法) @Retention(RetentionPolicy . RUNTIME) // 注解的生命周期(运行时) public @interface LogExecutionTime {// 可以定义一些属性,例如是否启用日志 boolean enabled() default true;
2024-05-28 17:32:44 1251
原创 SLF4J自定义方法输出日志信息
在Slf4j中封装一个方法,每当调用这个方法时在日志中输出当前时间、线程id和当前类,并可输出传入的日志信息。现在,你可以在你的代码中这样使用。创建一个自定义工具类。
2024-05-26 12:24:49 346
原创 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 510 1
原创 freemarker常用内建函数介绍
检查Hash是否为空(即是否包含至少一个键值对))都需要在模板的数据模型中被定义和赋值。:检查字符串是否以特定子串开始或结束。:返回序列的第一个和最后一个元素。:返回Hash中的所有键和值。等:检查变量是否为特定类型。:检查字符串是否包含特定子串。请注意,上述示例中的变量(如。:对字符串进行HTML编码。:使字符串的第一个字母大写。:返回序列中元素的数量。:对数字进行四舍五入。:对数字进行向上取整。
2024-04-30 22:15:11 331
原创 freemarker基本语法介绍
虽然 FreeMarker 提供了丰富的内置指令,但你也可以定义自己的指令。这通常涉及编写 Java 代码来扩展 FreeMarker。
2024-04-30 16:04:42 262
原创 vue3中,ref响应式变量什么时候需要使用.value
value在 Vue 3 中,ref用于创建响应式的引用(references),它总是返回一个包装对象,这个对象的.value属性包含了真正的响应式值。
2024-04-20 23:53:27 1003 2
原创 捕获SpringSecurity异常,进行统一返回
需要捕获SpringSecurity中的异常,通过统一返回类封装后返回给前端,但是使用@ControllerAdvice的全局异常处理器无法捕获到SpringSecurity中的异常,原因如下:在SpringSecurity中,如果认证或者授权的过程中出现了异常会被ExceptionTranslationFilter捕获到。所以如果我们需要自定义异常处理,我们只需要实现AuthenticationEntryPoint和AccessDeniedHandler接口然后配置给SpringSecurity即可。
2023-02-22 10:50:03 2239
原创 org.springframework.security.access.AccessDeniedException: Access is denied
使用SpringSecurity时,已经允许登录接口匿名访问:还是报错:原因在过滤器中使用 SecurityContextHolder 对所有请求都进行了授权,而 .anonymous() 只允许未授权的请求访问在过滤器中将授权业务放在token验证后,token为空的直接放行,不进行授权
2023-02-22 04:11:26 1271
原创 docker部署RabbitMQ集群
RabbitMQ底层依赖于Erlang,而Erlang虚拟机就是一个面向分布式的语言,默认就支持集群模式。用户发送给队列的一切请求,例如发送消息、消息回执默认都会在主节点完成,如果是从节点接收到请求,也会路由到主节点去完成。而镜像模式下,创建队列的节点被称为该队列的。但是,不同队列可以在集群中的任意节点上创建,因此不同队列的主节点可以不同。使用exactly模式的镜像,因为集群节点数量为3,因此镜像数量就设置为2。当主节点接收到消费者的ACK时,所有镜像都会删除节点中的数据。
2023-02-19 03:02:23 564
原创 解决虚拟机挂起重连后无法连接docker容器的问题
最近在docker中部署各种容器时,遇到一个问题:每次挂起虚拟机恢复后,就无法连接docker中的容器了,必须要重新启动容器才能正常连接,非常麻烦,查阅各种资料后,解决方法如下。
2023-02-16 21:49:10 1780 3
原创 JAVA使用FTP将本地文件传输到虚拟机中
vsftpd默认只能将文件上传到用户目录下(上面的 /ftpuser),如果想要将文件上传到其他目录,上传前一定要对上传的目标目录进行授权,否则会上传失败。到此虚拟机环境就搭建好了,下面编写java代码。创建成功后 /home 下会生成用户目录。下面对 /tmp/images 目录授权。
2023-02-16 21:19:29 590
原创 解决centos出现多个ip或ip地址消失
使用VMware Workstation创建虚拟机后,有时在挂起虚拟机恢复后,虚拟机会出现两个ip地址或者ip地址消失。为虚拟机设置静态ip可以解决这个问题。
2023-02-16 20:46:13 2069
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人