- 博客(55)
- 收藏
- 关注
原创 介绍下CompletableFuture的用法
是 Java 异步编程的核心工具,通过创建异步任务、链式处理结果、多任务组合、异常处理等能力,解决了传统Future的局限性。在实际开发中,常用于处理 IO 密集型任务(如网络请求、数据库操作)、并行计算等场景,能有效提升程序的并发性能和响应速度。
2025-12-24 11:52:14
324
原创 @JsonProperty注解中可以设置哪些属性
@JsonProperty是Jackson库的核心注解,用于定义JSON字段与Java属性的映射关系。主要属性包括: value/name:指定JSON字段名(如@JsonProperty("user_name")) index:控制序列化顺序(数值越小越靠前) required:标记反序列化时是否必填(默认false) defaultValue:仅文档说明用途,不实际赋值 access:控制读写权限(如WRITE_ONLY仅允许反序列化) 该注解支持字段、方法或构造参数,可覆盖默认命名
2025-12-24 11:51:25
53
原创 LangChain4j之AiService结构化输出踩坑记录
摘要:在使用LangChain4j和Spring Boot集成大模型服务时,尝试根据姓名首字母和长度生成推荐姓名列表时遇到异常。配置了QWen大模型服务并定义了返回JSON数组的接口方法,但在调用generateNames()方法时抛出IllegalStateException。问题出现在PojoCollectionOutputParser.formatInstructions()方法中,表明系统在处理集合类型输出时出现解析错误。开发环境为JDK 17、Spring Boot 3.0.2和Maven 3.6
2025-12-22 10:36:06
899
原创 JDK21使用EasyExcel 3.0.3报错:module java.base does not “opens java.lang“ to unnamed module @22f71333
摘要:JDK 21环境下使用EasyExcel 3.0.3处理Excel导入时出现InaccessibleObjectException异常。解决方案为:1) 引入org.burningwave.core依赖;2) 在接口方法中添加StaticComponentContainer.Modules.exportAllToAll()代码行解除模块限制。该问题在EasyExcel 3.10+版本已修复。
2025-09-28 09:06:32
305
原创 修改apk文件的签名
文章摘要:本文介绍了如何为Android应用手动签名APK文件。首先需要配置Java环境并安装keytool工具;然后生成签名文件,通过命令创建keystore;接着预处理APK文件(解压删除META-INF目录后重新压缩);最后使用jarsigner工具进行签名操作,需指定签名文件、密码、输入输出APK等参数。整个过程通过命令行完成,并配有操作截图说明关键步骤。
2025-09-24 11:56:19
608
原创 使用pipreqs解决pip freeze生成间接依赖问题
使用pipreqs工具可以智能生成项目依赖文件,避免pip freeze包含过多间接依赖的问题。通过pip install pipreqs安装后,在项目根目录执行pipreqs --ignore .venv --force命令即可生成精简的requirements.txt文件。注意要添加--ignore参数排除虚拟环境目录,否则可能因编码问题导致报错。对比显示pipreqs生成的依赖文件更简洁高效,仅包含项目实际使用的核心依赖。
2025-09-15 14:28:48
1245
原创 SQLAlchemy 2.0简单使用
本文介绍了使用SQLAlchemy 2.0连接MySQL数据库的方法。主要内容包括:1) 创建引擎连接MySQL数据库的配置方法;2) 创建线程安全的数据库会话;3) 使用自动反射加载表结构;4) 通过Flask框架实现简单登录接口进行测试。示例演示了从数据库连接、表映射到实际查询的完整流程,并展示了SQL日志输出功能。该方法适用于Python 3.8环境,依赖SQLAlchemy 2.0.37和PyMySQL 1.1.1等库,通过简单的配置即可实现MySQL数据库操作。
2025-07-23 18:06:43
1857
原创 封装一个vue组件,实现“新手引导”效果
摘要 本文介绍了一个独立易用的新手引导组件,通过CSS选择器定位页面元素并提供弹框说明。组件特点包括: 通过steps配置项指定目标元素及说明内容 自动计算引导步骤总数和当前位置 支持自定义按钮文本和关闭行为 智能定位提示框位置,自动处理边界情况 为目标元素添加高亮效果 实现基于Vue 3,使用Teleport挂载到body,通过计算目标元素位置动态调整提示框显示方位(上下左右),并提供过渡动画效果。组件暴露了步骤变更、跳过/完成等事件回调,可通过props灵活控制引导流程。
2025-06-30 10:33:43
2871
2
原创 自定义一个简单的MCP Server:使用SpringAI + Cline + DeepSeek实现AI创建文件并写入内容
本文介绍了如何通过AI对话实现自动写入文件的功能。使用Windows 11、JDK 17和SpringBoot 3.4.4环境,首先在VSCode中安装Cline插件并配置DeepSeek大模型。然后开发MCP服务,通过SpringBoot项目引入spring-ai-mcp-server依赖,实现文件写入逻辑。核心是一个LocalFileService类,使用@Tool注解标记writeLocalFile方法,该方法接收文件路径和内容参数,自动创建目录并将内容写入指定文件。
2025-05-09 15:07:53
2439
原创 解决celery框架报错:OSError: [WinError 6] 句柄无效、PermissionError: [WinError 5] 拒绝访问
解决celery框架启动时报错
2025-04-07 11:07:57
696
3
原创 使用开源项目xxl-cache构建多级缓存
XXL-CACHE 是一个 多级缓存框架,高效组合本地缓存和分布式缓存(Redis+Caffeine),支持“多级缓存、一致性保障、TTL、Category隔离、防穿透”等能力;拥有“高性能、高扩展、灵活易用”等特性,提供高性能多级缓存解决方案;
2025-02-11 14:52:33
2564
原创 解决:com.mongodb.MongoSocketOpenException: Exception opening socket
springboot项目启动时,报错并且用工具能够连接mongodb,已经排除是mongodb不能连接的问题。
2024-12-31 08:54:53
2389
原创 Socket学习(一):控制台聊天demo
客户端连接服务端后,可在控制台输入要发送的消息,服务端收到消息后自动回复消息并将消息转发给所有连接上的客户端:服务端收到消息并回复客户端1发送消息并接收服务端的回复客户端2接收服务端转发的消息。
2024-12-28 20:52:03
968
原创 更改 pnpm 的全局存储位置
目录下(在 Windows 系统上)。但是,用户可以通过配置来更改这个位置。pnpm 的全局存储位置可以通过配置来改变,默认情况下,pnpm 会将全局存储位置设置在系统盘的。是你想要设置为 pnpm 全局存储的路径。例如,如果你想要将 pnpm 的全局存储位置设置为。这些命令会将 pnpm 的全局二进制文件目录、缓存目录、状态目录和全局目录分别设置到指定的路径。来查看 pnpm 的全局存储位置。
2024-12-26 08:43:21
3695
原创 windows系统更改pipenv install的虚拟环境文件夹路径
windows系统使用创建独立的虚拟环境时,虚拟环境默认会被创建在这个目录下,长期下去C盘空间会越来越少,网上说的什么新建环境变量完全是胡说八道,根本没有用。
2024-11-26 11:24:20
725
原创 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
999
1
原创 Java NIO中的Selector使用方法
Java NIO中的Selector是一个可以检查一个或多个实例是否准备好进行I/O操作的对象。使用Selector可以让你用一个线程来管理多个Channel,从而提高应用程序的效率。
2024-08-01 01:39:08
1406
原创 对比InputStream/OutputStream和Channel
以下是一个表格,对比了和Channelread()write()close()
2024-07-26 23:18:11
926
原创 docker安装redis及避坑:‘locale-collate ““‘ Bad directive or wrong number of arguments
问题原因:不同的redis版本需要不同的配置文件,根据报错日志可知当前redis的版本为。替换掉,然后按照之前的方法修改配置信息,完成后再次启动redis。,所以需要去redis官网下载对应版本的配置文件。
2024-07-21 10:39:50
2072
原创 使用Redis的SETNX命令实现分布式锁
分布式锁是一种用于在分布式系统中控制多个节点对共享资源进行访问的机制。在分布式系统中,由于多个节点可能同时访问和修改同一个资源,因此需要一种方法来确保在任意时刻只有一个节点能够对资源进行操作,以避免数据不一致或冲突。分布式锁就是用来实现这种互斥访问的工具。
2024-07-18 10:31:56
2641
原创 Kafaka Streams中各个DSL操作符的用法
在Kafka Streams中,DSL(Domain Specific Language)指的是一组专门用于处理Kafka中数据流的高级抽象和操作符。这些操作符以声明性的方式定义了数据流的转换、聚合、连接等处理逻辑,使得开发者可以更加专注于业务逻辑的实现,而不是底层的数据流处理细节。(Transformation Operators):这些操作符用于对KStream或KTable中的数据进行转换,如mapflatMapfilter等。它们允许你对流中的每个元素应用一个函数,从而生成新的流或表。
2024-07-17 10:50:20
1950
原创 MySQL中的递归查询
MySQL中的递归查询主要通过语句来实现,这在处理具有层级关系或树形结构的数据时非常有用。下面将通过一个具体的例子来详细解释如何在MySQL中使用递归查询。
2024-07-15 14:26:29
1901
原创 “Caused by: java.lang.NoClassDefFoundError: javax/xml/bind/DatatypeConverter”解决办法
这个异常通常发生在试图使用类的时候,但是运行环境的类路径中没有找到这个类。在 Java 9 及更高版本中,包含的类被移动到了新的模块中,而默认情况下,这个模块可能没有被加入到模块路径中。
2024-07-13 20:49:35
1503
原创 浅析Kafka Streams中KTable.aggregate()方法的使用
方法是 Kafka Streams 中进行状态化聚合的关键,它允许你定义如何初始化和更新聚合状态,以及如何存储和管理这些状态。通过合理配置,你可以实现复杂的数据流处理需求,如累积计数、滑动窗口计算等。
2024-07-12 14:42:08
1309
原创 浅析Kafka Streams消息流式处理流程及原理
本文通过单词统计案例演示Kafka流处理流程。使用JDK17、Zookeeper 3.4.14和Kafka 2.8.1环境,配置Maven依赖后实现三个核心组件:1)生产者向"kafka-stream-topic-input"发送5条"hello kafka"消息;2)流处理器通过StreamsBuilder构建拓扑,对输入流进行flatMapValues分割、groupBy分组和count统计操作;3)消费者从"kafka-stream-topic-out
2024-07-12 00:01:31
1401
原创 查看docker中各个容器所占的资源
这个命令会显示容器的名称、CPU使用百分比、内存使用情况、网络IO、块IO、内存使用百分比和进程ID数量。这个命令提供了容器的实时资源使用统计,包括内存使用情况。要查看Docker中的每个容器占用的资源,可以使用。命令持续输出数据,而是只显示当前时刻的统计信息。替换为想要查看的容器的名称或ID。
2024-05-31 00:07:01
2778
原创 在SpringBoot中使用redis中的zset实现延迟任务
(有序集合)适合实现延迟任务的原因主要有以下几点:2、配置redis3、创建ZSET操作服务创建一个服务类来封装对ZSET的操作:4、定时轮询ZSET创建一个定时任务来定期检查ZSET中是否有到期的任务:负责添加和处理延迟任务,而负责定期调用方法来检查和处理到期的任务。
2024-05-30 18:29:07
810
原创 java中String、List、数组之间的转换方式
在Java中,StringList和数组(如String[])之间的转换是常见的操作。下面是如何在它们之间进行转换的示例。
2024-05-29 21:26:48
5047
原创 docker使用docker logs命令查看容器日志的几种方式
命令只能用于显示容器的日志输出,如果容器没有输出日志到stdout和stderr,那么这个命令将不会显示任何信息。如果容器日志非常大,你可能只想查看某个时间段的日志。在这种情况下,可以使用。如果需要更详细的日志信息,例如带有时间戳的日志,可以使用。参数,后跟一个相对的时间或者一个具体的时间戳。如果只想查看最近几行的日志,可以使用。如果想要实时查看日志,可以加上。参数,后面跟上想查看的行数。参数,这样日志就会像使用。
2024-05-29 14:58:48
22355
原创 浅析AOP中的JoinPoint的使用
JoinPoint接口提供了多个方法,允许我们在切面中获取与连接点(即目标方法执行点)相关的信息。getArgs()SignaturegetThis()toString()getKind()下面是一个使用JoinPoint在这个示例中,我们定义了一个切面InfoAspect,它有一个@Before通知,该通知会在执行包下所有方法之前触发。在方法中,我们通过JoinPoint参数获取了方法名、目标对象、方法参数、代理对象、连接点类型和源代码位置等信息,并将它们打印出来。
2024-05-28 17:55:38
1331
原创 浅析SpringBoot中的AOP以及自定义注解类
下面我们自定义一个注释@Target(ElementType . METHOD) // 注解应用的地方(方法) @Retention(RetentionPolicy . RUNTIME) // 注解的生命周期(运行时) public @interface LogExecutionTime {// 可以定义一些属性,例如是否启用日志 boolean enabled() default true;
2024-05-28 17:32:44
1421
原创 SLF4J自定义方法输出日志信息
在Slf4j中封装一个方法,每当调用这个方法时在日志中输出当前时间、线程id和当前类,并可输出传入的日志信息。现在,你可以在你的代码中这样使用。创建一个自定义工具类。
2024-05-26 12:24:49
824
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅