- 博客(132)
- 收藏
- 关注
原创 Windows下安装Milvus向量数据库
在大数据时代,高效处理和检索向量数据变得尤为重要。Milvus作为一款开源的向量数据库,为海量非结构化数据提供了高性能的存储与搜索解决方案。本文将手把手教你如何快速安装并配置Milvus,从环境搭建到实战应用,让你轻松掌握这一强大工具的核心技能,开启智能检索的新篇章。无论你是初学者还是有经验的开发者,都能从中获得实用的技巧和宝贵的见解。milvus的使用一共有三种方式,分别为:本文接下来主要是来接是如何用docker安装milvus向量数据库,以及如何使用。
2024-10-21 15:14:10
3188
4
原创 LangChain 与 LangGraph 到底是什么?用标书 Buddy 讲清 Agent 框架与工作流编排
本文以标书 Buddy 为例,系统讲解 LangChain 与 LangGraph 的定位、关系和选型方法,并从 Java 工程师视角给出 Agent Harness、Tool、RAG、MCP、人工审批、状态恢复与生产级分层架构的落地建议。
2026-09-21 10:09:47
359
原创 从原理到 Java 实战:彻底搞懂 Tool Use 与 Function Calling
本文结合视频内容与 Java 工程实践,拆解 Tool Use / Function Calling 的六步闭环,并给出 Agent Loop、工具注册、参数校验、权限、幂等与可观测性等生产级设计要点。
2026-09-20 10:26:37
166
原创 多 Agent 为什么比单 Agent 更好用?三种协作模式与销售场景实战解析
为什么复杂任务不应该全部交给一个 Agent?本文结合销售线索分析场景,系统讲解上下级协同、师生式协同和竞争式协同三种多 Agent 模式,并补充 Java 伪代码、权限边界、失败降级与上线指标。
2026-09-08 16:16:26
289
原创 AI 模型又迎来一轮更新:GPT-6 Astra、Gemini 3.8 Flash、Claude Fable 5.1 与 Muse Spark 1.3 怎么选?
官方资料:[GPT-6 Astra 发布说明](https://openai.com/index/gpt-6-astra/)|[GPT-6 Astra API 文档](https://developers.openai.com/api/docs/models/gpt-6-astra)| GPT-6 Astra | 9 月 3 日 | 分阶段开放 | 复杂推理、电脑操作、编码、研究与成品交付 | 高价值企业 Agent、复杂研发任务 |它的能力和价格都处于高位,因此不适合把所有普通请求都交给 Astra。
2026-09-08 15:50:54
699
原创 Harness 实战:如何让 AI Agent 全自动制作知识讲解视频?
让 Agent 自动制作知识讲解视频,真正有价值的并不是某个模型一次生成了多炫的页面,而是把内容、视觉、代码、音频和验收组织成可重复运行的系统。Prompt 决定一次输出,Skill 沉淀方法,Harness 则让整条生产线能够持续推进、恢复失败并控制风险。当你能设计阶段、状态、权限、人工确认、失败降级、成本指标和上线机制时,你做的就不只是一个 AI Demo,而是一个真正可以被使用和运营的 AI 产品。
2026-09-02 16:38:52
375
原创 Harness Engineering 到底是什么?从 Prompt、Context 到可交付的 AI Agent 工程体系
从 Prompt Engineering、Context Engineering 到 Harness Engineering,拆解 AI Agent 的知识、工具、状态、测试、观测、权限与反馈闭环,并结合 OpenAI、Anthropic 实践给出企业落地路线。
2026-09-02 15:14:46
506
原创 没有新模型发布的一天,我重新设计了企业知识助手:16GB多卡、路由与退出机制
2026 年 8 月 13 日 AI 产品观察:过去 24 小时没有出现足以改变企业技术路线的重磅发布。但对产品经理来说,“新闻安静”恰好是补工程账的窗口——把模型路由、私有化部署和版本退出机制真正设计清楚。很多团队选企业知识助手模型时,会先问:“今天最强的模型是哪一个?这个问题并非没有价值,但它很容易把项目带进三个坑:只看榜单、不看真实任务;只算 API 单价、不算完整链路成本;只考虑怎么接入,不考虑模型停服后怎么退出。
2026-08-13 17:34:49
332
原创 企业研发知识助手如何选模型?API成本、私有化配置与16GB多卡部署路线
数据与价格核验日期:2026-08-10。模型价格、许可和服务区域会变化,正式采购前请再次核验官方资料。企业研发知识助手不是“接一个大模型、导入几份文档”那么简单。真正影响上线效果的,是模型质量、权限控制、引用准确率、成本、延迟、供应商锁定以及私有化运维能力。本文以中国企业内部 Java 研发团队为例,对国内外商业 API 和开放权重模型进行比较,并给出一套可以直接落地的选型与私有化路线。
2026-08-12 10:14:28
360
原创 我把 Codex 当“高级工程师”用了一个月:真正拉开差距的,不是写代码
很多人只把 Codex 当代码补全工具,其实它真正的价值是理解完整代码库、跨文件修改、运行测试、操作浏览器并完成验证闭环。本文系统介绍 Codex 的核心亮点、正确使用方法、提示词模板,以及 AGENTS.md、Skill、Plugin 和 Automation 的应用场景。
2026-07-28 09:44:53
393
原创 实测华为云码道智能体:它不只是 AI 写代码工具,更像一个能推进项目的工程搭子(附上手教程)
最近我专门在自己的本地项目里体验了一次华为云码道智能体。原本我的预期比较简单,就是看看它是不是和常见 AI 编码助手差不多,能补代码、改文件、回答问题。它的重点并不是“帮你写几段代码”,而是“把 AI 以工程化方式接进项目”。这篇文章不是照着产品介绍抄能力点,而是基于我本机上的真实运行痕迹、项目目录和执行记录整理出来的体验总结。重点讲三件事:我本地到底看到了什么。它真正的优势在哪里。如果你也想在项目里用起来,应该怎么上手。
2026-05-19 17:41:34
1003
原创 Spring 事务(@Transactional)与异步(@Async / CompletableFuture)结合的陷阱与最佳实践
和@Async都是基于 AOP 代理。当它们结合使用时,AOP 的“自调用失效”和 Spring 事务的“线程绑定”特性是两个最容易被忽视的“陷阱”。try-catch会阻止事务回滚,除非你重新抛出异常或手动标记回滚。调用会绕过 AOP 代理,让和@Async失效。事务不会跨线程传播。异步处理必须设计为多个独立事务,并通过状态机(如PROCESSINGCOMPLETEDFAILED)和消息队列(或@Async)来解耦。
2025-11-13 10:24:32
596
原创 MySQL FIELD() 函数——实现自定义排序的利器
FIELD()函数最大的价值在于它能将一组离散的值(如状态码、类型名)映射为一组有序的数字(1, 2, 3...),从而让我们可以在ORDER BY子句中直接使用。FIELD()函数是 MySQL 提供的一个强大工具,专门用于解决自定义排序的痛点。它代码简洁、意图明确,是替代繁琐CASE语句的优秀选择。它是ORDER BY的好帮手。它返回的是位置索引(从1开始)。小心0:未匹配和NULL都返回0,会导致它们在ASC排序中排在最前。
2025-11-04 09:09:26
778
原创 线程池饥饿问题解决
这次排错经历虽然痛苦,但收获巨大。【黄金法则】严禁在线程池中同步等待:绝对不要在一个线程池的线程中,调用get()或join()来等待另一个需要从同一个池子获取线程才能执行的任务。这是导致死锁的直接原因。【舱壁原则】隔离不同类型的任务:为不同性质的任务(CPU密集型 vs I/O密集型、核心业务 vs 非核心业务、快任务 vs 慢任务)提供不同的线程池。这能有效隔离故障,防止“一烂俱烂”。【响应式思维】用回调和组合代替阻塞:深入学习并使用的thenApplythenAccepthandle。
2025-09-30 11:00:02
696
原创 Windows环境安装RocketMQ
下载完后解压到自定义目录,MQ解压路径D:\developer\rocketmq-all-5.3.0-bin-release。变量值:D:\developer\rocketmq-all-5.3.0-bin-release;,启动NAMESERVER。成功后会弹出提示框,此框勿关闭;我下的是5.3.0版本的。
2025-09-19 16:35:57
501
原创 图数据库neo4j的安装
运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。从Oracle官方网站下载 Java SE JDK,我的的版本是JDK8。配置文档存储在conf目录下,Neo4j通过配置文件neo4j.conf控制服务器的工作。默认情况下,不需要进行任意配置,就可以启动服务器。创建主目录环境变量NEO4J_HOME,并把主目录设置为变量值。1,通过控制台启动Neo4j程序。Neo4j是基于Java的图形。接下来就能够直接访问。
2025-08-28 17:02:13
447
原创 redis分布式锁解决重复提交问题
但此时,第一个长任务的事务尚未提交,导致后续请求的“MD5重复校验”失效,最终仍然造成了数据重复写入和容量重复扣减的严重问题。• 错误尝试: 曾考虑在服务重启时使用 @PostConstruct 批量清空锁Key,但经过分析,此举在多实例部署环境下会删除其他实例的正常锁,是极其危险的操作,故予以否决。多个线程同时“读取-修改-写入”用户的已用容量,导致部分操作被覆盖,最终记录的容量小于实际占用的容量。获取锁成功的线程继续执行,获取失败的线程则立即向前端返回“操作频繁,请稍后重试”的提示,实现请求节流。
2025-08-18 14:58:13
634
原创 Mysql事务的“原子性”陷阱
今天遇到一个mysql事务的一个坑事情是这样的 我在做一个拆分文档的功能,但是可能会出现拆分失败的情况于是为了方便后续对拆分失败文档的追踪,我想加一个日志表记录一个日志后来发现死活数据塞不进去,后来想应该是事务的原因,但是怎么解决呢?
2025-08-14 10:58:01
452
原创 aspose+poi实现文档拆分和表格图片提取
在文档处理场景中,用户常需将长文档按标题层级拆分为独立子文档,并提取其中的表格、图片作为独立资源存储(如OSS),同时替换原文为占位符以便关联。:无论文档标题是“1. 总则→1.1 背景→1.1.1 历史沿革”的三级嵌套,还是“第一章→1.1→1.1.1”的混合层级,均能准确识别拆分边界,避免“跨层级截断”或“层级断裂”问题。:本次实践验证了Aspose+POI组合在复杂文档处理中的可行性,通过标题树驱动的拆分逻辑与资源闭环管理,为长文档的智能化处理提供了可复用的技术方案。
2025-08-01 14:50:00
1061
原创 POI实现文档的图片的提取和替换
在日常办公自动化开发中,常常需要对 Word 文档中的图片进行批量提取、保存,甚至将图片替换为自定义的文本或链接。Apache POI 是一款强大的 Java 开源库,支持对 Microsoft Office 文档(包括 Word、Excel、PowerPoint 等)进行读写操作。本文将介绍如何使用 POI 提取 Word 文档中的图片,并将图片在文档中替换为自定义文本。遍历文档的所有段落和 run。检查 run 是否包含图片(getEmbeddedPictures())。
2025-06-30 10:31:15
860
原创 优化python脚本中OOM问题
发现这段代码中虽然 对于并发处理同一个文件的时候减少了IO的消耗 提高了pdf解析的性能,但是如果文件缓存没有得到合理的释放的话可能就会导致oom。我们现在的python脚本执行时间过长的话有时候会出现OOM的问题。综上所述我们可以使用一个 计数器+单例模式的方式去优化这个问题。但是如果是单个调用,调用完就进行关闭的话会导致性能问题。
2025-06-13 11:24:58
262
原创 优雅代码之自定义注解和反射的使用
其次,在需要进行自动填充时,我们将利用反射机制来遍历对象的所有字段。然后,我们可以按照预定的格式,将该字段的值提取出来,并添加到提示词中。整个转换过程可以通过反射自动完成,极大地减少了手动拼接的工作量,使得代码在使用时显得更加简洁,告别了以往的累赘感。首先,我们定义一个自定义注解。通过在相应的字段上添加该注解,我们可以清晰地标记出哪些字段是需要被处理的。通过使用自定义注解和反射,我们可以将自动填充的逻辑与具体的字段分离。为了解决上述问题,我们引入了自定义注解和反射机制,旨在提升代码的优雅性和可维护性。
2025-06-13 11:23:48
328
原创 单例模式的运用
在这个类中,我们通过单例模式确保了整个应用只维护一个 Milvus 客户端连接,避免了资源浪费和连接泄漏的风险。在我们的向量数据库配置类 MilvusVectorDatabaseConfig 中,采用了单例模式的实现方式,这是一种非常经典且实用的设计模式。在今后的开发中,我将更加注重设计模式的合理应用,特别是在处理共享资源和全局唯一对象时,单例模式将是我的首选方案之一。对于资源密集型的单例对象,需要考虑资源的生命周期管理。单例模式虽然简单,但在实际应用中需要考虑很多细节问题。无需考虑延迟加载问题。
2025-05-22 13:43:17
832
原创 Dify MCP实战 - 邮件发送
由于Dify 目前还没有支持stdio方式连接MCP Server。Zapier配置 • 访问 https://actions.zapier.com/settings/mcp/ • 添加Gmail Send Email工具。Dify MCP sse插件配置 第一步中我们安装了Dify MCP sse插件,现在需要在这个插件中配置连接MCP Server的地址。如下图在Dify Anget中配置工具,选择上面步骤中配置的sse插件。• 复制Zapier MCP sse连接URL。安装MCP sse插件。
2025-05-09 16:54:11
1116
原创 Redis中的hash数据结构设置过期时间的坑!!!
在使用 Redis Hash 结构时,发现在异步操作完成后设置过期时间不生效,但在第一次写入后立即设置过期时间却可以正常工作。
2025-04-24 10:32:27
927
原创 主服务器和子服务器之间通过NFS实现文件夹共享
背景:子服务器想做一个备份服务器 但是之前有很多文件是上传到本地的,于是服务要从本地读取文件但是在不在同一台服务器中,读取就会有问题,想 实现在两者之间创建一个共享文件夹。
2025-04-11 14:49:57
968
原创 rpm: error while loading shared libraries: libbz2.so.1: cannot open shared object file: No such file
最近有一个问题由于用了python的pymilvus但是这个需要依赖。bzip2包但是下载之后需要重新编译一下python文件,于是我选择在另一台服务器上进行实验安装是否可以解决这个问题。但是我一开始用yum安装的方式已经是可以了,但是线上内网,我选择全部卸载之后再进行rpm方式进行安装,也可能手欠没了解明白 会有影响。下载完成并编译完源码之后 还是不行 yum也用不了了于是我重启了一下服务器。开发疯狂找原因找办法去解决。于是就有了以下的问题。
2025-04-09 14:46:27
436
原创 对文件做md5缓存
在文件上传的时候发现很多的文件都是重复上传的 这个时候就可以对文件进行md5处理存储起来。之后上传直接从缓存中拿取,这样可以减少很多的重复处理。
2025-04-05 11:24:33
249
原创 RAG到底怎么分块!!
实际用下来,语义分块往往是个不错的起点,它在语义完整性和效率之间平衡得很好。不过,最靠谱的还是根据你的文档类型和目标试一试,找到最适合的那一款。真正落地业务时,分块策略的优化往往需要反复试验,甚至结合多种方法,才能达到最佳效果。需要设定一个相似度的标准(阈值),而这个标准可能因文档不同而变化,得试着调。追求语义:语义分块和递归分块能让AI更懂内容,适合需要深度理解的文档。适合场景:文档有层次结构,又需要控制大小的时候,这种方法很实用。不差钱:基于LLM的分块效果拔群,但得有足够的资源支持。
2025-03-26 17:33:15
1044
原创 Mysql表中的字符编码到底怎么设置
记录一下趴~今天遇到一个问题在解析doc文件后想把拆解后的内容 存到mysql数据库表的一个字段当中,但是死活是存不进去报错这一看就猜到是编码的问题但是为啥呢?首先排查我的表的字符编码发现字符编码是utf8 utf8_general_ci的平时也没太注意过这些后来去了解了一下两者的区别。
2025-03-26 17:13:11
742
原创 使用Wheel包部署python项目
首先创建requirements.txt文件。或者在window上双击脚本。打包之后得到.whl文件。上传到服务器上执行命令。# 清理 pip 缓存。然后执行命令进行打包。# 然后重新安装依赖。# 安装 whl 包。
2025-03-10 14:47:30
376
原创 python怎么去搭建一个python后台项目并打成jar包运行项目
1.首先要创建requirements.txt文件。打包部署的方式有docker 和jar包的方式。这里为了打包的方便我想采用的是jar包的方式。三、要运行FastAPI项目,需要以下步骤。2.创建脚本文件 .start.sh。# 安装 PyInstaller。2..gitignore文件。kill -9 进程ID。二、创建运行的相关文件。# 后台运行并输出日志。
2025-03-06 10:08:10
623
原创 java中的CompletableFuture的使用过程中遇到的坑
今天遇到一个很诡异的问题,我们有一个业务实现是将一个uuid存入到redis当中的,前端会一直调用获取的接口,直到拿到数据,但是有时候发现却卡主了,一直获取不到。CompletableFuture异步去处理的,想着有没有可能是多线程阻塞了,又有很多地方都用了这个类去实现多线程。第二步找这查询不到的几个接口的共同点,发现都用了线程池 使用的。- IO密集型:使用自定义线程池,线程数可以设置较大。- CPU密集型:使用默认线程池或设置较小的线程数。- 开发测试:可以使用默认线程池。3.1 默认线程池适用场景。
2025-03-05 09:33:47
397
原创 Python 中调用 MySQL 数据库的学习文档
在现代应用程序中,数据库是存储和管理数据的核心组件。Python 提供了多种库来与 MySQL 数据库进行交互,最常用的包括 pymysql 和 MySQL Connector/Python。本文将介绍如何在 Python 中调用 MySQL 数据库,包括安装库、创建连接、执行查询和处理结果。在 Python 中,您需要创建一个与 MySQL 数据库的连接。以下是使用 pymysql 和 mysql-connector-python 创建连接的示例。在开始之前,您需要确保安装了与 MySQL 交互的库。
2025-02-21 14:52:47
398
原创 Python对MYSQL进行统一管理
在选择使用 pymysql 还是 Flask-SQLAlchemy 时,开发者应根据项目的复杂性和需求进行权衡。对于简单的数据库操作,pymysql 是一个轻量级的选择;而对于需要频繁与数据库交互的复杂 Web 应用,Flask-SQLAlchemy 提供了更强大的功能和更简洁的代码结构。通过本文的比较和示例,希望能帮助您更好地理解这两种工具的使用场景和优势。为了不要出现以下错误,大家还是统一化管理趴。
2025-02-21 14:47:46
919
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅