自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (1)
  • 收藏
  • 关注

原创 Langchaine4j 流式输出 (6)

摘要:本文介绍了Langchaine4j大模型的流式输出功能,它允许逐步返回生成结果,提升用户体验。内容包括流式输出概念、添加Spring WebFlux和Langchain4j-Reactor依赖的配置方法、创建流式助理服务的代码示例,以及两种测试方式:通过单元测试验证流式输出功能和使用REST接口实现浏览器实时展示。还提供了相关配置参数和测试效果截图,展示了流式输出实时返回结果的特性。

2025-06-01 15:15:57 418

原创 Langchain4j Function Calling (5)

本文介绍了Langchain4j中的Function Calling(函数调用)功能。通过示例展示了不使用函数调用时LLM在处理复杂数学运算时的局限性,以及如何使用@Tool注解创建计算工具类(如加法、平方根计算)来增强模型能力。文章详细解析了函数调用的执行流程、关键注解(@Tool、@P、@ToolMemoryId)的使用方法,以及如何通过工具调用获得准确计算结果。测试案例证实了函数调用机制能有效解决复杂运算问题,并保留了对话上下文记忆。

2025-05-30 14:30:14 770

原创 Langchain4j 提示词 (4)

本文介绍了Langchain4j框架中系统提示词(@SystemMessage)和用户提示词(@UserMessage)的使用方法。系统提示词用于设定AI角色身份和行为模式,可通过注解直接配置或从资源文件加载,修改后会重置聊天记忆。用户提示词可通过{{it}}占位符引用参数,支持多参数场景下的参数名指定。测试案例展示了方言回复、日期处理和表情符号等功能实现,并通过MongoDB存储验证了系统提示词的单次传递特性。这些功能增强了AI交互的个性化和灵活性。

2025-05-30 10:39:43 1145

原创 Langchain4j 聊天记忆 (3)

Langchain4j 聊天记忆实现方案 本文介绍了Langchain4j中实现聊天记忆的几种方法: 基础测试:发现直接调用模型不具备记忆功能 手动实现:通过手动传入历史对话记录实现简单记忆 ChatMemory内置功能: 配置MessageWindowChatMemory 使用AiService自动管理对话历史 支持设置最大记忆消息数 隔离记忆: 通过memoryId实现不同会话的记忆隔离 配置ChatMemoryProvider为不同会话创建独立记忆 持久化方案: 基于MongoDB存储聊天记录 实现M

2025-05-29 13:26:17 579

原创 Langchain4j AIService (2)

AIService使用面向接口和动态代理的方式完成程序的编写,更灵活的实现高级功能。链的概念源自 Python 中的 LangChain。其理念是针对每个常见的用例都设置一条链,比如聊天机器人、检索增强生成(RAG)等。链将多个底层组件组合起来,并协调它们之间的交互。链存在的主要问题是不灵活,我们不进行深入的研究。在LangChain4j中我们使用AIService完成复杂操作。底层组件将由AIService进行组装。

2025-05-29 13:24:40 723

原创 Langchain4j 接入 Spring Boot(1)

Spring Boot 接入langchain4j

2025-05-28 09:51:28 423

原创 Spring Boot 读取.env文件获取配置

Spring Boot项目可以通过在resources目录下创建.env文件存储敏感配置(如API密钥),然后在application.yml中使用spring.config.import加载该文件。配置项可通过${}占位符引用,如示例中使用了阿里百炼平台的API密钥和DeepSeek模型配置。这种方式实现了敏感信息与代码分离,支持环境变量式配置管理。(98字)

2025-05-28 09:49:38 621

原创 修改War包文件

修改War包文件

2025-03-19 15:53:05 406

原创 Centos7.6单机部署Kafka

centos7.6 单机部署kafka

2025-03-19 15:51:47 419

原创 ECS单机部署Hadoop

hadoop 单机部署

2025-02-28 15:55:48 888

原创 服务器间免密登录

在本地客户端生成SSH密钥对。生成密钥对命令为:按回车键确认默认设置,生成的密钥对将保存在(私钥)和(公钥)。

2025-02-28 15:50:39 494

原创 更新Tomcat版本

【代码】更新Tomcat版本。

2024-09-11 13:11:00 201

原创 Java8对接三方流式接口,并实时输出(GPT)

【代码】Java8对接三方流式接口,并实时输出(GPT)

2024-09-05 17:22:49 1167 3

原创 Java 调用三方文件上传接口

【代码】Java 调用三方文件上传接口

2024-08-26 15:11:36 751

原创 Centos7 设置nginx 和 tomcat 自启动

【代码】Centos7 设置nginx 和 tomcat 自启动。

2024-05-30 09:39:45 397

原创 Bean初始化

若以上流程有一个报错,则不进行后面的方法调用。Bean在初始化时先调用。方法进行初始化,在调用。

2024-04-04 18:10:32 546

原创 JVM参数调优

如果你做过JVM调优和参数配置,那么如何盘点查看JVM系统默认值?一般使用jps和jinfo进行查看(JPS:查看运行的Java进程,jinfo 是查看进程的具体信息-Xms:初始堆空间-Xmx:堆最大值-Xss:栈空间-Xms 和 -Xmx最好调整一致,防止JVM频繁进行收集和回收。

2024-04-04 16:38:51 1348

原创 Java 锁

对于SYNCHRONIZED而言,也是一种非公平锁。可重入锁,可以避免死锁。

2024-04-03 20:26:45 229

原创 阻塞队列(BlockingQueue)

在多线程领域:所谓阻塞,在某些情况下会刮起线程(即阻塞),一旦条件满足,被挂起的线程又会自动被唤醒。阻塞队列的好处是,我们不需要关心什么时候需要阻塞线程,什么时候唤醒线程。在concurrent包发布以前,在多线程环境下,我们每个程序员都必须去自己控制这些细节,尤其还要兼顾效率和线程安全,而这会给我们程序带来不小的复杂度。

2024-04-03 20:22:02 374

原创 JVM_垃圾收集器

注意:并行垃圾回收在单核CPU下可能会更慢。

2024-04-02 22:37:16 1075

原创 GC Roots

简单来说就是内存中已经不再被使用的空间就是垃圾。

2024-04-02 22:26:01 289

原创 强软弱虚 四大引用

在原来的时候,我们谈到一个类的实例化在等号的左边,就是一个对象的引用,存储在栈中而等号右边,就是实例化的对象,存储在堆中其实这样的一个引用关系,就被称为强引用红色部分在垃圾回收之外,也就是强引用的蓝色部分:属于软引用,在内存不够的时候,才回收虚引用和弱引用:每次垃圾回收的时候,都会被干掉,但是它在干掉之前还会存在引用队列中,我们可以通过引用队列进行一些通知机制。

2024-04-01 22:30:07 1059

原创 【Linux】在生产环境中,Linux系统排查常用命令

​ r:运行和等待的CPU时间片的进程数,原则上1核的CPU的运行队列不要超过2,整个系统的运行队列不超过总核数的2倍,否则代表系统压力过大,我们看蘑菇博客测试服务器,能发现都超过了2,说明现在压力过大。svctm的值与await的值很接近,表示几乎没有I/O等待,磁盘性能好,如果await的值远高于svctm的值,则表示I/O队列等待太长,需要优化程序或更换更快磁盘。​ us:用户进程消耗CPU时间百分比,us值高,用户进程消耗CPU时间多,如果长期大于50%,优化程序。

2024-04-01 22:23:53 1665

原创 生产者消费者模式

【代码】生产者消费者模式。

2024-03-31 20:22:20 216

原创 JUC_集合类

【代码】JUC_集合类。

2024-03-31 20:18:43 247 1

原创 Volatile

假如开始两个线程读取主内存的数值都是1,A线程进行 number++操作,计算完成,即将刷新到主内存,此时A线程被挂起,B线程进行number++ 操作,写入主内存,这个时候主内存是2,A获取到了CPU资源,也把2写入主内存,导致了计算丢失一次(写覆盖),即保证不了原子性.,首先要将变量从主内存拷贝到自己的工作内存空间,然后对变量进行操作,操 作完成后,再将变量写会主内存,不能直接操作主内存中的变量,各个线程中的工作内存中存储着主内存中的变量副本拷贝,因。,所有线程都可以访问,

2024-03-30 10:35:37 584

原创 Semaphore(信号量)

常用于限制可以访问某些资源的线程数量,例如通过 Semaphore 限流。Semaphore 是一个计数信号量,必须由获取它的线程释放。

2024-03-30 10:20:33 159

原创 Java 线程池

获取多线程的方法,我们都知道有三种,还有一种是实现Callable接口实现Runnable接口实现Callable接口实例化Thread类使用线程池获取。

2024-03-29 18:58:37 1234 1

原创 OOM Error

但如果不断分配本地内存,堆内存很少使用,那么JVM就不需要执行GC,DirectByteBuffer对象就不会被回收,这时候堆内存充足,但本地内存可能已经使用光了,再次尝试分配本地内存就会出现OutOfMemoryError,那么程序就奔溃了。那就是GC清理的这点内存很快会再次被填满,迫使GC再次执行,这样就形成了恶性循环,CPU的使用率一直都是100%,而GC却没有任何成果。GC回收时间过长时会抛出OutOfMemoryError,过长的定义是,超过了98%的时间用来做GC,并且回收了不到2%的堆内存。

2024-03-29 16:47:53 1342 1

原创 CountDownLatch(计数器)

将CountDownLatch的计数器初始化为new CountDownLatch(n),每当一个任务线程执行完毕,就将计数器减1 countdownLatch.countDown(),当计数器的值变为0时,在CountDownLatch上await()的线程就会被唤醒。做法是初始化一个共享的CountDownLatch(1),将其计算器初始化为1,多个线程在开始执行任务前首先countdownlatch.await(),当主线程调用countDown()时,计数器变为0,多个线程同时被唤醒。

2024-03-28 14:15:47 332

原创 CyclicBarrier(循环屏障)

CyclicBarrier 的字面意思是可循环(Cyclic)使用的屏障(Barrier)。它要做的事是:让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程达到屏障时,屏障开放行,所有被放行的线程才会继续任务,线程进入屏障通过CyclicBarrier 的await()方法。

2024-03-28 14:09:31 247

原创 死锁(Dead Lock)

死锁是指两个或多个以上的进程在执行过程中,因争夺资源而造成一种互相等待的现象,若无外力干涉那他们都将无法推进下去,如果资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。解决方法:进程请求资源时,要求它不占有任何其它资源,也就是它必须一次性申请到所有的资源,这种方式会导致资源效率低。我们创建了一个资源类,然后让两个线程分别持有自己的锁,同时在尝试获取别人的,就会出现死锁现象。当我们出现死锁的时候,首先需要使用jps命令查看运行的程序。进程运行推进的顺序不对。

2024-03-27 17:13:00 588

原创 idea历史记录恢复代码

在idea中使用Git切换分支的时候,有时候会丢失代码,当这些代码没有或者的时候,使用Git相关命令就找不到代码了.这个时候代码就不能使用Git来恢复.这个时候我没就需要借助idea的历史功能来进行恢复.idea的历史功能是默认打开的,只保存,当代码丢失,应及时的操作,防止超过历史时间.

2024-03-27 13:39:45 1854 1

原创 Docker overlay2磁盘使用100%处理方法

线上一服务突然停止服务了,登入ECS查看,发现快捷命令都不提示了显示错误.在 根目录使用命令查看,发现。

2024-03-25 15:45:12 561 1

原创 sharding-jdbc-demo

sharding-jdbc 分库分表介绍,并提供完成demo

2024-03-25 15:13:53 1363 1

原创 centos7.9 docker使用GPU 配置

centos7.9 docker使用GPU 配置

2023-11-06 16:22:12 553

原创 Jupyter lab 禁用 Download 和 Open in New Browser Tab 按钮

Jupyter lab 禁用 Download 和 Open in New Browser Tab 按钮

2023-11-04 17:38:50 785 1

原创 Kafka Producer 发消息流程 与机制

Kafka Producer 发消息流程 与机制

2023-10-30 21:06:44 219 1

原创 表结构相同的表,获取列值不同的列名

现有两个表表结构相同,两个表的数据id是一一对应的,由于一些原因导致了两个表部分列的值不一样,现在想最小化程度的更新,去保证两个表的列数据统一.

2023-10-13 10:21:48 80

原创 iframe嵌入jupyterlab,jupyterlab 无法执行代码问题

iframe 嵌套 jupyterlab,jupyterlab 无法执行代码问题

2023-10-12 10:25:34 792 2

java_itext_生成PDF.md

内容包含: pdf封面, 目录和页码信息

2021-10-28

空空如也

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

TA关注的人

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