- 博客(25)
- 收藏
- 关注
原创 springboot集成langchain4j实现票务助手实战
langchain4j 中的 Function Calls(函数调用)是一种让大语言模型(LLM)与外部工具(如 API、代码执行器等)交互的机制。通过这种机制,LLM 可以根据上下文动态调用开发者预定义的函数,从而扩展其能力边界,解决纯文本生成无法处理的复杂任务(如数学计算、实时数据查询、业务逻辑处理等)。
2025-05-12 13:58:09
998
原创 springboot集成langchain4j记忆对话
LLM 一次生成一个标记(token),因此许多 LLM 提供商提供了一种方式,可以逐个标记地流式传输响应,而不是等待整个文本生成完毕。这显著改善了用户体验,因为用户不需要等待未知的时间,几乎可以立即开始阅读响应。
2025-05-07 21:43:24
944
原创 langchain4j整合springboot
查看AutoConfig源码发现@ConditionalOnProperty({“langchain4j.community.dashscope.chat-model.api-key”})。这个注解的意思就是 Spring 将检查是否存在名为 langchain4j.community.dashscope.chat-model.api-key 的属性,并且其值非空。除了api-key还必须要加上langchain4j.community.dashscope.chat-model.model-name。
2025-05-06 16:28:51
512
原创 langchain4j接入ollama本地大模型
Ollama 是一个开源的本地大语言模型运行框架,专为在本地机器上便捷部署和运行大型语言模型(LLM)而设计。Ollama 支持多种操作系统,包括 macOS、Windows、Linux 以及通过 Docker 容器运行。
2025-05-06 14:11:36
389
原创 springboot集成langchain4j接入open AI和deepseek
查看官网错误码(https://help.aliyun.com/zh/model-studio/error-code)IDEA新建一个springboot项目,使用Spring lnitializr快速构建。发现新建的业务空间没有授权对应的模型,而默认的业务空间是授权的,测试的业务空间授权即可。maven项目在pom文件中引入LangChain4j的核心依赖与要接入的大模型依赖。这里pom需要引入新依赖。
2025-05-06 00:32:12
1188
原创 在有限的内存中计算超限数据的重复值
在有限内存的前提下,想要实现读取超限数据并完成统计功能的方案有很多。基本思路都是把大数据分片成小数据,然后对小数据进行求值,如果内存不足的情况下可能需要借助磁盘来进行分片数据的保存。这里使用滑动时间窗口来解决。
2025-05-04 18:29:02
226
原创 数据结构学习篇——布隆过滤器
如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。同时检索速度也越来越慢,上述三种结构的检索时间复杂度分别为 O(n),O(logn),O(n/k)。布隆过滤器的原理是,当一个元素被加入集合时,通过K个散列函数将这个元素映射成一个位数组中的K个点,把它们置为1。检索时,我们只要看看这些点是不是都是1就(大约)知道集合中有没有它了:如果这些点有任何一个0,则被检元素一定不在;它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。
2025-04-30 16:36:37
332
原创 数据结构学习篇——哈希
其次保存数据时需要先对桶的下标做一个哈希运算,这里采用除留余数法。然后遇到哈希冲突时,采用了拉链法形成一个列表结构依次往下新增。以上实现基于固定长度的数组,没有实现扩容。常见的如:取模、加每个字符、位运算二进制、乘素数等。思路:实现HashMap首先确定结构为数组+链表,
2025-04-30 15:41:17
945
原创 算法学习篇——栈队列篇
有家动物收容所只收留猫和狗,但有特殊的收养规则,收养人有两种收养方式,第一种为直接收养所有动物中最早进入收容所的,第二种为选择收养的动物类型(猫或狗),并收养该种动物中最早进入收容所的。思路:猫狗进入收容所,出收容所(被收养)。若第一个元素为1,则代表有动物进入收容所,第二个元素为动物的编号,正数代表狗,负数代表猫;若第一个元素为2,则代表有人收养动物,第二个元素若为0,则采取第一种收养方式(最早),给定一个操作序列int囗[2]代表所有事件。若为1,则指定收养狗,若为-1则指定收养猫。
2025-04-30 01:31:16
664
原创 算法学习篇——链表篇2
思路一:使用hashset去重,把出现过的节点依次放入hashset,如果重复,则输出。利用快慢指针(也称为弗洛伊德循环检测算法),一个步长为1,一个步长为2。若有环链表,两者必定在某一点相遇。当快慢指针相遇时,将其中一个指针重新指向链表头,然后两个指针都以步长为1移动,再次相遇的点即为环的起点。假设p1移动速度为v,p2移动速度为2v。当p1第一次进入环形链表时,p2移动的步长为p1的两倍,假设p1移动的步长为k,p2与p1相距为kkk。因为p1和p2方向相同,假设环的长度为LLL。
2025-04-29 00:42:18
740
原创 算法学习篇——链表篇1
思路:用两个游标p1,p2,p1放在头节点,p2放在头节点+k个元素的位置。然后两个游标一同向尾部移动,直到p2变成尾节点,可以得出p1所在的元素。1.编写代码,以给定值x为基准将链表分割成两部分,所有小于x的结点排在大于或等于x的结点之前。2.给定一个链表的头指针 ListNode*pHead,请返回重新排列后的链表的头指针。3.注意:分割以后保持原来的数据顺序不变。4.不要开辟新的空间,即不要新建节点。
2025-04-28 16:17:21
283
原创 算法学习篇——桶排序的实现
原理: 将数据分配到多个桶中,对每个桶单独排序,最后合并。时间复杂度:最好情况:OnkO(n + k)Onk(k 是桶的数量)最坏情况:On2O(n²)On2(所有数据集中在同一个桶中,退化成插入排序)平均情况:OnkO(n + k)Onk空间复杂度:OnkO(n + k)Onk稳定性: 稳定适用场景: 数据分布均匀的情况。桶排序原始数据桶排序排序中。
2025-04-28 00:08:20
844
原创 数据结构学习篇——双链表的实现
这里为了保证java的封装性,防止外部手动设置指针方向,采用了迭代器模式。本类的实现是继承Iterator重写hasNext和next方法,这样的好处从toString方法来说可以让用户打印指定的格式。如果说单链表是从前往后的单行线的话,那双链表就是双行线。从节点上看,双链表的ListNode结构比单链表只多了一个pre指针。双链表的结构,每一个node的节点本身含有pre和next指针,pre指针指向上一个node,next指针指向下一个node。实现一个双链表,其中关键点有3个。
2025-04-27 16:50:56
312
原创 数据结构学习篇——单链表的实现
概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。结构:链表的结构不要求相邻元素地址连续,而需要元素的前驱和后继的地址,这样能通过头节点一直找到尾节点。实现一个单链表,其中关键点有4个。
2025-04-27 12:50:52
872
原创 数据结构学习篇——基于数组实现列表
接口是为了规定有哪些操作,那么一个列表有哪些操作呢?比如常见的增、删、改、查都是。那么不妨定义一个列表的接口。/*** 线性表(列表)的接口定义*//**新增一个元素*//**删除相同元素*//**根据索引删除元素*//*** 将指定索引位置的元素替换成新元素*//*** 当前列表中是否含有target这个元素* @return*//*** 返回指定索引处的元素* @return*//*** 查找element的索引,如果没有返回-1* @return。
2025-04-27 00:32:29
266
原创 算法学习篇——稳定性分析
排序算法最好时间复杂度最坏时间复杂度平均时间复杂度空间复杂度稳定性冒泡排序O(n)O(n²)O(n²)O(1)稳定选择排序O(n²)O(n²)O(n²)O(1)不稳定插入排序O(n)O(n²)O(n²)O(1)稳定希尔排序O(n log n)O(n²)O(n log n)O(1)不稳定归并排序O(n log n)O(n log n)O(n log n)O(n)稳定快速排序O(n log n)O(n²)O(n log n)
2025-04-24 16:56:30
271
原创 算法学习篇——位运算篇2
思路:正整数的二进制算法是对二取模,再取余。比如15的二进制计算方式为15/2=7…1,这个1放在个位;1,这个1再放在十位;1,这个1再放在百位;1,这个1放在千位,后续最前面就是0了。浮点数的思路是小数乘二,判断整数位是0还是1。例如0.625x2=1.25,整数为1,所以二进制小数位第一位为1;然后去掉整数位,继续对小数进行操作,0.25x2=0.5,整数位为0,所以二进制小数位第二位为0;0.5x2=1,所以二进制小数位第三位为1。
2025-04-21 13:17:26
180
原创 算法学习篇——位运算篇1
思路: 此题可用与运算解决,每一位用1来比较,若相同则计数加一,题目中因为是整数,所以为32位。例:1001 & 1000 = 1000。思路2:如果题目中没有“不用辅助存储空间”也可新增一个数组来解决。思路1:此题可用位运算来解决,利用A^A=0来解决。思路: 和上面一样,用位运算。
2025-04-21 11:13:31
166
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人