- 博客(335)
- 收藏
- 关注

原创 Maven随笔
Maven 是 Apache 旗下的一个开源项目,是一款用于管理和构建项目的工具,它基于项目对象模型(Project Object Model,简称: POM) 的概念,通过一小段描述信息来管理项目的构建、报告和文档。
2024-11-03 00:08:26
1532

原创 Linux命令
比如,简单的ls命令就有:-a -A -b -c -C -d -D -f -F -g -G -h -H -i -I -k -l -L -m -n -N -o -p -q -Q -r-R -s -S -t -T -u -U -v -w -x -X -1等选项,可以发现选项是极其多的。通常情况下是采用“[n1[n2]]”操作参数的格式。为Linux中的文本编辑器,vim是vi的加强版,不仅能编辑文本而且还具有 shell 程序编辑的功能,可以用不同颜色的字体来辨别语法的正确性,极大方便了程序设计和编辑性;
2024-11-01 02:17:27
1065

原创 Git 总结
希望本文可以更好的帮助你在工作中更加有效的使用Git。另外附上一张包含常用 Git 命令大全的表格(来源Chat,不一定准确)。命令名称描述用法示例其他相关信息git init初始化一个新的 Git 仓库git init在当前目录创建一个新仓库git clone克隆一个远程仓库到本地git add将文件添加到暂存区git add .git commit提交暂存区中的更改到仓库添加 -a 参数可以跳过暂存区直接提交所有更改git status显示工作目录和暂存区的状态git status。
2024-10-14 00:11:23
1693
1
原创 SpringAI模型评估
前瞻建议评测与生成用不同模型。文档也强调“选择最合适的评估模型,它不一定与生成模型相同”。这能显著降低自我偏倚。评估模型的选择与成本控制分离评审与生成:评审模型可以更小、更快(如 minicheck、等),达到“快速 + 足够稳定”的平衡。本地化优先:用 Ollama 跑评审模型,结合 Testcontainers,无需外网 即可在 CI 上跑评估(要注意 runner 的算力与镜像缓存)。去随机:评估时把温度调低(0~0.2),避免判定波动。
2025-09-01 23:15:00
987
原创 SpringAI集成MCP
可以自己尝试实现(销毁原来的 Stdio、建立新的 Stdio,不推荐),由于多个用户存在 Stdio 可能会造成并发竞争因此不推荐。以使用百度地图提供的 MCP 服务为例,演示如何使用 Stdio 的方式调用公用的 MCP Server。系统提示词,由调用方传递用户数据:可以将用户信息传递到工具中,但是可以随意去查询其他用户的数据,不可取。在使用其他开发者提供好的 MCP 服务时,仅仅引入 MCP 的客户端依赖即可。首先,对 MCP 进行配置,Stdio 的配置方式有两种。
2025-08-18 23:13:18
1563
1
原创 MCP协议
MCP(Model Context Protocol,模型上下文协议),旨在为大语言模型(LLM)提供统一的、 标准化的方式与外部数据源和工具之间进行通信。从本质上来说,MCP 是一种技术协议,一种智能体 Agent 开发过程中共同约定的一种规范。这就好比秦始皇的书同文、车同轨,在统一的规范下,大家的协作效率就能大幅提高,最终提升智能体 Agent 的开发效率。传统AI集成的问题:这种为每个数据源构建独立连接的方式,可以被视为一个 M*N 问题。问题。
2025-08-18 22:29:11
930
原创 SpringAI实现Reread(Advisor)
Advisor 是 SpringAI 基于 AOP 机制实现与大模型对话过程的增强、拦截、修改等功能的关键组件。所有的增强通知都需要实现 Advisor 接口。Advisor:顶级接口,继承了 Ordered,可以定义拦截器(Advisor)的顺序。ChatClientRequest:表示由 ChatClient 处理的请求,最终用于构建要发送到 LLM 的Prompt。ChatClientResponse:表示由 ChatClient 返回的响应。
2025-08-11 22:03:54
983
原创 SpringBoot 发送邮件
邮件功能虽非核心业务,但在注册验证、通知提醒、工单系统等系统中却非常关键。良好的邮件架构不仅能提升用户体验,也能让系统具备更强的扩展性和稳定性。添加邮件日志记录、异步发送等能力,可继续在此基础上构建更完善的邮件服务模块。
2025-07-28 23:07:25
911
2
原创 PostgreSQL并发控制
PostgreSQL 通过多版本并发控制(MVCC)机制,为开发者提供了高效的并发访问管理工具。MVCC 的核心理念是为每个 SQL 语句提供一个数据快照,使其在执行期间看到的数据始终一致,从而避免由于并发事务修改数据而产生的不一致问题。与传统数据库依赖加锁不同,MVCC 避免了读写之间的冲突:查询不会阻塞写操作,写操作也不会阻塞查询,即使在可序列化快照隔离(SSI)这种最高级别的事务隔离中,这种读写无冲突的特性也依然保持。
2025-07-27 22:00:31
1171
原创 SpringAI之多模态
多模态是指表达或感知事物的方式,例如视觉、听觉、嗅觉。对应的信息传递媒介可以是不同类型的数据,如文本、图像、声音、视频等。多模态就是从多个模态表达或感知事物。大部分情况与大模型交互都是基于普通文本输入,只有需要解析图片等其他类型数据时才会用到多模态模型。deepseekqwen-plus等模型都是纯文本模型,在 Ollama 和百炼平台,也能找到很多多模态模型。以 Ollama 为例,在搜索时点击 Vision,就能找到支持图像识别的模型:在阿里云百炼平台也一样:阿里云百炼平台的。
2025-07-24 00:31:03
570
原创 SpringAI之RAG
要解决大模型的知识限制问题,其实并不复杂。解决的思路就是给大模型外挂一个知识库,可以是专业领域知识,也可以是企业私有的数据。不过,知识库不能简单的直接拼接在提示词中。因为通常知识库数据量都是非常大的,而大模型的上下文是有大小限制的。那怎么办?思路很简单,庞大的知识库中与用户问题相关的其实并不多。所以,我们需要想办法从庞大的知识库中找到与用户问题相关的一小部分,组装成提示词,发送给大模型就可以了。那么问题来了,该如何从知识库中找到与用户问题相关的内容呢?
2025-07-23 00:25:15
1016
原创 No qualifying bean of type ‘org.springframework.ai.embedding.EmbeddingModel‘ available: expected sin
但它在容器中找到了 两个符合条件的实现(ollamaEmbeddingModel 和 openAiEmbeddingModel),它不知道用哪个,导致报错。而后引入 Redis 作为向量数据库时,会让 Spring 自动注入一个 EmbeddingModel 类型的 Bean(给 Redis 使用)。但是 RedisVectorStore 却能找到 Ollama 的向量模型,咱也不知道这算不算 Bug。翻译过来就是 Bean 不唯一,找到了两个 Bean 对象,不知道注入哪一个。
2025-07-20 23:44:15
348
原创 Spring AI开发智能客服(Tool calling)
由于 AI 擅长的是非结构化数据的分析,如果需求中包含严格的逻辑校验或需要读写数据库,纯 Prompt 模式就难以实现了。(也叫作)是人工智能应用中的一种常见模式,它允许模型与一组 API 或工具进行交互,从而增强其功能。主要用于从外部来源(数据库、Web 服务、文件等)检索信息回答原本无法回答的问题,或用于在软件系统中采取行动、比如发送电子邮箱、在数据库中创建新记录等。接下来通过一个智能客服的案例来演示。根据条件筛选和查询课程查询校区列表新增试听预约单声明式地使用 Tool 注解;
2025-07-18 22:30:00
1248
3
原创 Spring AI之Prompt开发
模型开发有四种模式,其中一种就是纯 Prompt 模式,只要我们设定好 System 提示词,就能让大模型实现很强大的功能。接下来就看看如何才能写好提示词。
2025-07-17 20:45:00
1542
1
原创 Spring AI快速入门
SpringAI整合了全球(主要是国外)的大多数大模型,而且对于大模型开发的三种技术架构都有比较好的封装和支持,开发起来非常方便。不同的模型能够接收的输入类型、输出类型不一定相同,SpringAI 根据模型的输入和输出类型不同对模型进行了分类:大模型应用开发大多数情况下使用的都是基于对话模型(Chat Model),也就是输出结果为自然语言或代码的模型。
2025-07-16 23:21:22
1463
2
原创 LangChain4j 开发
市场上主流的 Java 调用大模型的工具库有两种:LangChain4j 是一个 面向 Java 的开源框架,用于构建 基于大语言模型(LLMs) 的应用程序。它是 LangChain(Python 生态中非常流行的 LLM 应用框架)的 Java 实现,旨在让 Java 开发者能够轻松地集成和使用各种 LLM 服务,快速开发 智能聊天机器人、智能搜索、文档问答、Agent系统 等 AI 驱动的应用。官网文档:https://docs.langchain4j.dev/。引入依赖(JDK17 及以上):构建
2025-07-13 22:38:49
1411
4
原创 LangChain4j实现RAG知识库原理
首先我们需要把最新的数据或者专业的数据存储到文档中,接下来借助于文本分割器把一个大的文档分割成一个一个小的文本片段,然后这些小的文本片段要使用一种专门的大模型:向量模型,之前我们介绍大模型的时候有讲过,不同的大模型擅长的领域不一样,有擅长文本处理的、有擅长图片处理的,其中就有一种大模型擅长文本向量化。由于大模型训练完毕后,随着时间的推移产生的新数据大模型是无法感知的,而且训练大模型的时候一般使用的都是通用的训练数据,有关专业领域的知识,大模型也是不知道的。一旦外挂了知识库后,整个工作流程会发生一些变化。
2025-07-13 01:24:48
876
原创 PostgreSQL表操作
如果要更新物化视图,可以采用触发器的形式,当原表中的数据被写后,可以通过触发器执行同步物化视图的操作。在语句级别的触发器以及INSERT操作,这个变量是null。当对标进行 insert,update,delete,truncate 操作时,会触发表的 Trigger(看触发器的创建时指定的事件)相比之前的普通视图,物化视图就不需要每次都查询复杂SQL,每次查询的都是真实的物理存储地址中的一份数据(表)。在存储数据时,数据肯定要落到磁盘上,基于构建的tablespace,指定数据存放在磁盘上的物理地址。
2025-07-05 21:47:34
1014
原创 Python的Asyncio模块
Task 继承 Future,Task对象内部 await 结果的处理是基于 Future 对象来的。await + 可等待的对象(协程对象、future 对象、Task 对象 -> IO 等待)官网解释:“Future” 是一种特殊的低级可等待对象,它表示异步操作的最终结果。,fastAPI、Django 快的原因,比 js 事件循环快,小于 go。的方式创建Task对象,这样可以让协程加入事件循环中等待被调度执行。事件循环的替代方案,第三方方案,在一定程度上提高事件循环的效率。
2025-07-02 10:44:43
1080
原创 Npcap与Pcap4J
Npcap 是用于 Windows 操作系统的数据包捕获和网络分析的架构,由软件库和网络驱动程序组成。大多数网络应用程序通过广泛使用的操作系统原语(例如 Socket 套接字)访问网络。通过这种方式访问网络上的数据非常容易,因为操作系统会处理底层细节(例如协议处理、数据包重组等),并提供类似于读写文件的熟悉接口。然而,有时这种“简单的方法”并不适合,因为有些应用程序需要直接访问网络上的数据包。也就是说,它们需要访问网络上的“原始”数据,而无需操作系统介入协议处理。
2025-06-29 16:15:28
1061
原创 Activiti 补充
手动任务定义了一个 BPM 引擎外部的任务,它用来模拟由某人完成的工作,引擎不需要知道,也没有系统或 UI 接口。思考如下需求,当有一个任务希望他超期自动办理,此时就需要知晓任务的过期时间,此功能其他类型的任务也具有。之前使用的一直是用户任务,activiti 还支持其他类型的流程任务,会用户任务即可,其它用处不大。对于引擎来说,手动任务时作为一个传递活动来处理的,从流程还行到达它里面的那一刻,就会自动继续流程。结束事件:标记流程或子流程的结束,可以是普通结束,也可以是错误结束、消息结束、信号结束。
2025-06-25 22:28:46
963
原创 TCP/IP 网络模型
TCP/IP 网络通常是由上到下分成 4 层,分别是应用层,传输层,网络层和网络接口层。网络接口层的传输单位是帧(frame),IP 层的传输单位是包(packet),TCP 层的传输单位是段(segment),HTTP 的传输单位则是消息或报文(message)。但这些名词并没有什么本质的区分,可以统称为数据包。
2025-06-25 22:18:33
1002
原创 Activiti整合Spring(Boot)
依赖如下:2 添加整合的配置文件添加一个 Spring 的配置文件,并在其中完成 Activiti 的整合操作:databaseSchemaUpdate 的取值注意:通过方法的执行我们能够发现相关的表结构在数据库中完成了创建,说明 Activiti 和 Spring 的整合成功。Activiti7 发布正式版本之后,它和 SpringBoot 2.x 已经完全整合开发了依赖如下:2 修改配置文件配置文件即参数说明:3 整合SpringSecurity因为 Activiti7 和 Spring
2025-06-22 18:42:50
1179
原创 Activiti 进阶
流程实例(ProcessInstance)代表流程定义的一次执行过程。一个流程实例包括了所有的运行节点,我们可以利用这个对象来了解当前流程实例的进度等信息。例如:用户或者程序按照流程定义的内容发起了一个流程,这个就是一个流程实例。流程变量在 activiti 中是一个非常重要的角色,流程运转有时需要靠流程变量,业务系统和 activiti 结合时少不了流程变量,流程变量就是 activiti 在管理工作流时根据管理需要而设置的变量。
2025-06-22 01:34:27
266
原创 Activiti初识
工作流(Workflow),就是通过计算机对业务流程自动化执行管理。它主要解决的是“使在多个参与者之间按照某种预定义的规则自动进行传递文档、信息或任务的过程,从而实现某个预期的业务目标,或者促使此目标的实现”。一个软件系统中具有工作流的功能,我们把它称为工作流系统,一个系统中工作流的功能是什么?就是对系统的业务流程进行自动化管理,所以工作流是建立在业务流程的基础上,所以一个软件的系统核心根本上还是系统的业务流程,工作流只是协助进行业务流程管理。即使没有工作流业务系统也可以开发运行,只不过有了工作流可以更好的
2025-06-14 12:24:20
1111
原创 PostgreSQL数据类型
PostgreSQL 的数据类型系统是其强大灵活的基础之一,既覆盖传统 SQL 标准,也支持现代开发需求如 JSON、数组、范围、网络等。合理选择数据类型,不仅可以提升系统表达力和执行效率,还能提升数据一致性和开发体验。在实际设计表结构时,应结合业务需求、数据特点、未来可扩展性,选择合适的数据类型,不应该选择过于复杂的类型,相反,应该越简单越好(数值、字符、日期)。
2025-05-03 19:43:01
1265
2
原创 PostgreSQL初试
PostgreSQL 是一个功能强大、开源的对象-关系型数据库系统,以其可靠性、数据完整性、可扩展性而著称,底层使用 C 语言实现。它采用与 Linux 内核相同的开源协议 ——BSD 协议。这一协议非常宽松,与 MIT 协议类似,允许你在遵守基础条款的前提下进行二次开发,甚至将其商业化并收费。自 1986 年起由加州大学伯克利分校开始开发,PostgreSQL 目前在全球范围拥有活跃的社区和商业支持。PostgreSQL 最初的前身是名为 Ingres 的数据库系统。
2025-05-02 01:08:15
984
1
原创 SkyWalking链路追踪
随着系统设计变得日趋复杂,越来越多的组件开始走向分布式化,如微服务、分布式数据库、分布式缓存等,使得后台服务构成了一种复杂的分布式网络。往往前端的一个请求需要经过多个微服务、跨越多个数据中心才能最终获取到结果,如下图并且随着业务的不断扩张,服务之间互相调用会越来越复杂,这个庞大的分布式系统调用网络可能会变的如下图所示:那随之而来的就是我们将会面临的诸多困扰:问题定位:当某一个服务节点出现问题导致整个调用失败,无法快速清晰地定位问题服务。
2025-04-22 12:40:30
1492
原创 ELK日志系统
ELK”是三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。Elasticsearch 是一个搜索和分析引擎;Logstash 是服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到诸如 Elasticsearch 等“存储库”中。Kibana 则可以让用户在 Elasticsearch 中使用图形和图表对数据进行可视化。Elastic Stack 是 ELK Stack 的更新换代产品。
2025-04-19 12:35:47
1056
原创 RocketMQ5.0环境搭建
RocketMQ5.0为了更好地拥抱云原生,引入了全新的弹性无状态代理模式,将当前的Broker职责进行拆分,对于客户端协议适配、权限管理、消费管理等计算逻辑进行抽离,独立无状态的代理角色提供服务,Broker则继续专注于存储能力的持续优化。这套模式可以更好地实现在云环境的资源弹性调度。Master与 Slave 的对应关系通过指定相同的BrokerName,不同的Brokerld 来定义,Brokerld为0表示Master,非0表示Slave,Master也可以部署多个。
2025-04-14 06:00:00
950
原创 分布式文件存储系统FastDFS
FastDFS是余庆(国人,淘宝)开发的一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。FastDFS是一个轻量级的开源分布式文件系统。
2025-04-09 18:24:25
1411
原创 大文件断点续传
根据上传视频流程,定义接口,与前端的约定是操作成功返回{code:0}否则返回{code:-1}。@Api(value = "大文件上传接口", tags = "大文件上传接口")@ApiOperation(value = "文件上传前检查文件")@ApiOperation(value = "分块文件上传前的检测")@ApiOperation(value = "上传分块文件")@ApiOperation(value = "合并文件")
2025-04-08 21:26:57
1008
原创 Minio文件系统
MinIO是全球领先的对象存储先锋,是一个非常轻量的服务,可以很简单的和其他应用的结合使用。高性能,在标准硬件上,读/写速度上高达183GB/秒和171GB/秒,拥有更高的吞吐量和更低的延迟可扩展性,为对象存储带来了简单的缩放模型,通过添加更多集群可以扩展空间简单,极简主义是MinIO的指导性设计原则,即可在几分钟内安装和配置与Amazon S3兼容,兼荣亚马逊云的S3 API(接口协议/云存储服务接口)是在全球范围内达到共识的对象存储的协议,是全世界内大家都认可的标准数据安全。
2025-04-07 16:57:57
1050
3
原创 Frame Of Reference压缩算法
Frame of Reference(FoR)压缩算法 是一种用于压缩数值数据的算法,特别是在处理大规模数据集时,利用数据的局部性和重复性来减少存储和传输的开销。该算法通常应用于数据库、数据压缩、信号处理、以及大数据分析等领域。Frame of Reference压缩算法 的核心思想是,通过将数据的最小值作为参考点,将所有数据与这个参考点进行偏移,然后存储相对值(即“偏移量”)。这样可以有效地减少需要存储的数字位数,尤其是在数据的范围比较小且有较多重复值时,能够显著提高压缩率。
2025-04-05 19:37:26
1205
原创 K8s的BackUP备份
同理,如果 Kubernetes API 中显示存在对应的备份资源,但存储桶中没有格式正确的备份文件,那么就认为资源备份失败或是产生错误,将其清理掉。确认文件消失后再执行恢复操作,如果一直监控当前命名空间 Pod 的恢复状态会发现存在 Init 状态,也就是说恢复数据的操作是一个 init 容器去做的,另外如果去观察 Minio 中备份文件的大小会发现仅有 4MB 左右的大小,这是因为 100MB 的数据文件是通过大量重复字段创建的,所以经过压缩算法压缩后的效果非常好。作为对象存储服务,存储备份信息。
2025-04-05 16:42:35
1095
原创 K8S自定义CRD
例如,你想在 Kubernetes 集群中运行一个 messaging 代理,只需要创建一个队列资源实例,而自定义队列控制器将自动完成所需的 Secret、Deployment 和 Service。我们只需要根据监听到的消息做出动作即可,自定义案例逻辑:只需要提供 Website 类型资源清单文件,我们就直接自动创建好对应的 deployment、Service,还能根据给出的 gitRepo 准备好。我们能使用自定义控制器观察高阶对象,并在这些高阶对象的基础上创建底层对象。发起对当前接口的监听。
2025-04-03 11:45:00
2130
原创 使用状态机优化系统
状态机(State Machine)是一种数学模型,用于描述一个系统在不同状态之间的转移和行为。状态机由一组状态、状态间的转移(或称为“边”)以及触发这些转移的事件组成。它广泛应用于计算机科学、工程、自动化、编程语言等多个领域。
2025-02-26 18:34:17
1123
原创 HELM.
在没使用 helm 之前,向 kubernetes 部署应用,我们要依次部署 deployment、svc 等,步骤较繁琐况且随着很多项目微服务化,复杂的应用在容器中部署以及管理显得较为复杂,helm 通过打包的方式支持发布的版本管理和控制,很大程度上简化了 Kubernetes 应用的部署和管理Helm 本质就是让 K8s 的应用管理(Deployment,Service 等)可配置,能**动态生成**。通过动态生成 K8S资源清单文件(deployment.yaml,service.yaml)。然后
2025-02-18 20:27:54
877
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人