- 博客(41)
- 收藏
- 关注
原创 Go select 底层“注册-唤醒”机制:原来这就是观察者模式
Go 的 select 语句通过观察者模式实现高效通道监听,其底层采用"注册-唤醒"机制:1)编译阶段将select转为runtime结构;2)运行时注册通道事件;3)无就绪事件时挂起goroutine;4)通道就绪时唤醒执行。这种设计融合了观察者模式和反应器模式思想,相比轮询方式具有显著性能优势,是Go并发编程的核心机制之一。
2025-12-03 03:23:36
720
原创 代码执行 + MCP:AI 代理 token 省 98%!
本文详解代码执行 + MCP 优化 AI 代理的实操方案:解决传统 MCP 工具调用的 token 浪费、延迟问题,通过工具代码封装、按需调用,实现省 token、提速度、护隐私,附完整代码与图解,新手也能上手。
2025-11-26 23:15:04
613
原创 【全网首发】深度解析6.3k star 开源多智能体框架 DeepAgents 的提示词工程
DeepAgents是LangChain推出的轻量级多智能体协作框架,提供开箱即用的多智能体协作能力,支持Swarm架构、分布式任务处理等场景。其系统提示采用分层设计,包含基础提示、用户自定义提示和中间件提示(如TodoList、文件系统等)。核心设计强调任务导向性和工具使用,通过记忆优先协议实现知识持久化存储与检索,要求智能体主动检查记忆文件、优先使用存储知识而非通用知识,并遵循简洁直接的交互风格。该框架深度集成LangChain生态,是快速构建LLM多智能体系统的便捷选择。
2025-11-26 15:07:02
642
原创 事件驱动 vs 传统多线程:以用户下单全流程为例,手把手带你看两种设计的差异与实现
摘要:本文以用户下单支付全流程(7个关键步骤)为案例,对比分析事件驱动与传统多线程两种高并发实现方案。事件驱动模式通过事件总线解耦步骤依赖,实现异步非阻塞处理,适合高并发场景;而多线程模式逻辑直观但资源消耗大。文章提供Python完整代码实现,从耦合度、并发能力等维度进行深度对比,帮助开发者根据业务场景选择合适架构。
2025-11-24 22:36:06
1015
原创 深度剖析 9.6k star 开源项目 Open Deep Research 蕴含的提示词工程设计
Open Deep Research 是 LangChain 团队开源的深度研究工具,通过"主管+研究员"多智能体协同工作,解决传统研究中的信息碎片化问题。其核心在于精心设计的 Prompt 系统,主要包括澄清 Prompt 和转换 Prompt 两类。澄清 Prompt 用于判断是否需要用户澄清,避免重复提问,识别模糊点,并输出结构化 JSON 结果。转换 Prompt 则将用户问题转化为详细研究简报,强调具体性和完整性。该系统支持主流 AI 模型和搜索工具,显著提升科研和市场分析效率
2025-11-19 14:41:44
846
原创 【首发】深入Weaviate多租户,从用法到存在的意义
摘要: Weaviate多租户功能通过物理隔离实现企业级数据安全,相比Filter过滤具有显著优势:隔离强度更高、检索性能更优(仅访问指定租户分片)、符合GDPR等合规要求。从SaaS平台到多部门协作场景,Weaviate支持租户级资源管理和权限控制,配置过程包含启用多租户实例、创建租户集合、生命周期管理等关键步骤。结合HNSW索引和分词器优化,成为企业AI应用(如知识库、教育平台)向量数据管理的首选方案,尤其适用于金融、医疗等强合规领域。
2025-11-13 00:39:42
625
原创 让Weaviate向量查询性能瞬间提升10倍的简单技巧
摘要:向量归一化是优化Weaviate性能的关键技巧,通过将向量长度统一为1,可以大幅提升查询效率和精度。归一化简化了余弦相似度计算,使运算速度提升10倍以上;优化HNSW索引导航,减少20%漏检率;配合量化技术可降低70%内存占用。实施只需三步:生成向量时立即归一化、配置cosine距离度量、验证归一化效果。实验显示,归一化后百万级数据的查询响应时间从320ms降至28ms,内存占用减少70.4%,检索准确率提升18%。对于语义检索场景,归一化不会损失精度,反而能消除干扰因素。
2025-11-07 18:32:51
788
原创 RAG下的向量库用Weaviate还是用Postgres
摘要: Weaviate与PostgreSQL(搭配向量扩展)是向量检索的热门技术选项,但定位差异显著。PostgreSQL是关系型数据库,通过扩展支持向量检索,适合结构化业务数据与向量一体化存储(千万级以下)。Weaviate是原生向量数据库,擅长大规模向量检索与复杂混合查询(亿级向量仍低延迟)。选型关键: PostgreSQL适用场景:需事务、JOIN查询且向量规模较小(如企业轻量RAG系统)。 Weaviate适用场景:向量为核心、数据量大或需复杂混合检索(如全网文档搜索)。 混合架构:两者结合可兼顾
2025-10-29 00:15:43
786
原创 【大白话讲】A2A协议,即多Agent通信协议
A2A协议通过三大标准化机制实现智能体协作:身份名片(Agent Card)让智能体互相识别能力,统一消息格式确保跨平台通信,结构化任务流程管理协作生命周期。该协议为智能体定义了类似人类社交的交互规则,包括身份声明、标准通信接口和任务状态跟踪机制。示例展示了旅行规划智能体通过查询航班智能体的身份名片,按照标准格式发起请求并获取结构化响应的完整流程,验证了协议在跨智能体协作中的可行性。
2025-10-28 20:55:48
837
原创 [EvoAgentX]Agent工作流三大自进化算法:TextGrad、MIPRO、AFlow深度解析
在AI Agent开发中,我们经常面临这样的困境:幸运的是,学术界近期提出了三种突破性的自动优化算法:本文将深入解析这三种算法在EvoAgentX框架中的实现细节与应用实践。TextGrad的核心洞察是:既然LLM能理解自然语言反馈,为什么不用文本代替数值梯度?传统深度学习:TextGrad:这种类比听起来抽象,让我们通过实际代码理解。EvoAgentX使用开源的textgrad库,将Agent的提示词包装为对象:关键转换:损失函数不再返回数值,而是返回LLM生成的文本反馈:示例输出:步骤3:反向
2025-10-28 00:33:23
1181
原创 哪些任务是单Agent 无法完成,而多Agent能够完成的呢?
单Agent与多Agent系统的核心差异在于架构设计而非功能边界。单Agent通过集成多工具实现"万能专家",而多Agent通过专业分工构建"协作团队"。多Agent在三大场景具有不可替代性:1) 跨空间实时控制(如分布式物流/电网),解决单Agent的物理延迟瓶颈;2) 开放博弈环境(如拍卖/军事对抗),实现动态策略创新;3) 高可靠系统(如工业质检),通过物理隔离保障安全。决策时应评估任务复杂度、实时性要求及容错需求,遵循"先单后多"原则,仅在
2025-07-08 16:44:44
656
原创 解决 LangChain 中 RAG 检索结果过多导致上下文过长的 6 大策略
优化RAG系统:解决上下文过长问题的实战方案 针对RAG系统中检索文档过多导致LLM输入超限的痛点,本文提出六维度优化方案:1) 检索参数调整(调节k值、MMR算法、元数据过滤);2) 文档分块策略(递归分块、语义分块及上下文增强);3) 结果精筛(摘要压缩、重排序模型);4) 高级检索(多路召回、层级合并);5) 模型适配(选用长上下文LLM或分批处理);6) 性能调优(动态分块、嵌入缓存)。这些方法平衡了信息完整性与上下文长度,经实践验证可显著提升生成效果。
2025-06-03 11:20:14
1220
原创 【这一篇就够】MySQL创建和使用JSON数据的索引
- 创建表 DROP TABLE IF EXISTS ` test `;CREATE TABLE test(id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY , jchararr JSON NOT NULL COMMENT "元素为char类型的json数组");-- 插入数据 INSERT INTO test(jchararr) VALUES('["1","2","3"]') ,('["1"]') ,('[]') ,('["4","2","3"]');
2023-03-03 16:19:30
7311
9
原创 python import失败原因及解决方案
中,并且其中还包含一些python自带的工具包所处的目录。,以及python核心包的导入没问题的原因.第一个值得关注的点,返回列表的第一个元素为。分析到此为止,很容易得到解决方案,即, 往。肯定能成功,不管在什么目录下都可以导入。因此,我们可知执行的路径会被自动加入。,可以发现这个路径,就是我们执行。因此,该篇内容只讲包的解决方式。中增加需要扫描包的所处目录。这个列表类型的变量中存在。此时有这么一个目录结构。因为这些包的目录进行在。命令时,所处的路径。
2023-01-03 19:12:10
10428
3
原创 electron(vue3+vite+flask+sqlite)构建桌面应用程序 踩坑
全网搜不到,electron(vue3+vite+flask+sqlite + 其它应用的)教程,那只能自己来踩坑了,真的是踩了完完全全一整天,从上午十点到,现在这个凌晨一点,终于完结了,哎要不是有兴趣,给自己的原创程序加个桌面应用版本。当然明天还要继续加上paddle+flask的打包程序!加油!解决:文件中增加分析: 将vite项目打包是的路径变为,若不指定是,nginx可以正常使用,但由于electron是使用形式的路径将无法正常访问。场景:在package.json中配置将该文件导入使
2022-06-27 01:02:16
1700
原创 pyinstaller打包程序, 找不到文件路径的问题
报错内容为: 百度查找, 目前搜到的都是一些和产生的问题, 经过审计代码, 该项目并不存在该问题.于是想到了第一个解决方案1解决方案1: 直接将原先项目中的配置文件拷贝到, 提示缺失文件的路径中.()缺点: 每次 -> 都要进行一次手动的 复制粘贴文件, 很麻烦.配置文件导入的问题, 下方是问题出现的原因分析: 代码的导入是的形式的导入的, 并不会识别出该文件的存在, 只会当作普通的字符串, 导致没有将 两个配置文件进行处理打包.找到了问题的根源, 可以思考为什么其它文件可以被导入?可以猜测是因为模块触
2022-06-23 20:21:26
8484
原创 无法访问Docker的Flask服务
分析:如果设置为或者,容器环境外将无法访问。因为和都是环回地址,也就是只能指代本身,无法提供本机环境之外访问,并且 只是 的别名。而当服务器被告知要监听时,意味着“监听每个可用的网络接口”,当然最后会被替换成本机真实的IP地址,例如:,并且将会同时监听:,也就是说最终flask启动的服务将同时提供本机访问和外部访问。解决:将改为即可。分析:绑定不正确,将无法提供访问。解决:重新创建容器,确保正确。.........
2022-06-21 13:55:32
1179
2
原创 ORM(对象映射模型)理解, 为什么出现ORM这个玩意?
首先, 对象关联映射模型,其实是将数据表关系,然后映射成对象关系概括的来说数据库的表结构映射成面向对象中的类第二,是数据表中的记录映射成面向对象中的对象第三,数据表之间的关系,映射成对象之间的关系模型那么为什么会有对象关联映射这种思想呢?因为目前还没有,面向对象的数据库那么,为了解决这个问题就产生了这种对象关联映射,这种思想将数据库中的实体,把它抽象成类的属性, 然后再次基础上添加行为,也就是说,将数据库中的实体,封装成类于是呢,对于数据库的操作就做完成了对对象的操作这样就可以和应用面向
2021-01-20 21:25:08
722
原创 可移植性和可重用性的区别
前段时间看了软件工程的书, 这两个概念说的区别也不是很清楚, 后来根据经验的个人理解.可重用性: 其实就是复用, 可以应用在多个地方, 或者一个地方可以重复用多次可移植性: 稍微修改以下就可以在另外一个环境中使用, 也就是说可以在两个环境以上使用, 就具备可移植性区别:重用: 强调被使用的次数, 也就是通用性移植: 强调支持的环境的能力, 多个系统环境都可以正常使用, 也就是兼容性...
2021-01-20 21:14:47
4061
2
原创 清晰 明了 玻璃盒测试的六种覆盖
语句覆盖条件结果为 True 全部都执行一次, 不管false的情况判定覆盖每个分支, True 和 Flase 都要执行一次条件覆盖if ( a>3||b<8) a>3 为True的时候一次, False的时候一次, b<8也是一样, 不关注, ( a>3||b<8)的结果是啥, 两次都是 True都无所谓判定/条件if ( a&g...
2020-11-25 13:09:13
274
原创 SKU与SPU(外行人都能看懂)
This官方解释SPU: 标准化产品单元(Standard Product Unit)。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。SKU: 库存保有单位 (Stock keeping Unit)是对每一个产品的唯一标示符(唯一表示符: 就是可以唯一确认一个存在的东西。 例如身份证号, 是一个人的唯一标识,因为每个人的身份证号码不同且唯一)就这说辞, 我当初看十遍...
2019-12-19 17:12:05
3327
原创 大三 sql server 自我总结
use JXGL(1) select sname,age, s.sdept, cname from S join sc on s.sno = sc.sno join c on sc.cno = c.cno select s.sno, sname, cname, grade from S join sc on s.sno = sc.sno join c on sc.cno = c.cno–...
2019-12-17 22:52:37
273
原创 大三-软件工程复习-自我理解后制作
《软件工程》复习大纲文章目录《软件工程》复习大纲@[toc]第1章:软件工程的范畴重点掌握如下的内容:1掌握软件工程、软件危机、生命周期的概念 1%2掌握维护的3种分类并能够结合具体例子进行判断 1%3掌握为什么没有计划、文档和测试阶段 1%4掌握软件工程的传统生命周期模型(瀑布模型)的阶段划分和各阶段的主要任务1%5掌握传统的维护观念与现代的维护观念之间的区别1%了解如下内容:1了解纠错与成......
2019-12-14 22:58:04
855
原创 技术进阶的方法论-讲座记录
给大家分享一些技术进阶的方法论,我相信大家提升技术已经听过很多的方法,但这里我想给大家分享的并不是具体你应该怎么去学习技术,而是超越技术本身,我们在做技术的时候,如何构建一个正确的思维方式。这个思维方式不仅仅适用于前端开发,也适用于任何开发岗位,同时还适合于任何行业的技术从业者。经过一些了解, 基本 80% 以上的同学换工作的原因都是:“当前公司的技术有些局限,感觉没有办法成长了,感觉没人带,感觉需要换一个公司去学习新的技术”。在这里我抛一个问题给大家,大家跳槽的时候,换工作的主要原因是否也是上面的这个原因
2019-09-27 23:12:53
269
原创 tuple 元组 移除和增加元素的方法
python中 tuple 没有 像 List 那样的 append, remove 方法, 我们可以通过以下, 实现增加require_add_element = 5tup = (1,2,3,4)tup = tup + (require_add_element,)print(tup)移除require_remove_element = 3tup = (1,2,3,4)inde...
2019-09-14 20:39:05
8870
2
原创 python学习笔记(推荐有其他语言编程经验想学python的人看)
文章目录进制转换身份判断:注意: isinstance() 可以判断父类和子类相等算术符号的优先等级导包的方法导入多个模块变量或者方法__init__.py的用法内置函数注意: 自定义函数名, 不要和 内置函数重名*** 递归调用的次数可以自己设置, 通过sys库返回值类型为多个时的处理方式序列解包参数注意: 关键字参数 和 默认参数 不能和普通参数有交叉, 有混杂的使用的面向对象类定...
2019-09-10 20:44:10
2402
原创 迪米特原则(最少知道原则)-快速理解
定义一个对象应该对其他对象保持最少的了解。狭义的迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一类的某一个方法的话,可以通过第三者转发这个调用。广义的迪米特法则:一个模块设计的好坏的一个重要标志就是该模块在多大程度上讲自己的内部数据与实现的有关细节隐藏起来。一个软件实体应当尽可能少的与其他实体发生相互作用。每一个软件单位对...
2019-09-04 10:23:16
4038
原创 里氏替换原则-快速理解
定义里氏替换原则(Liskov Substitution Principle, LSP):所有引用父类的地方必须能使用其子类的对象。怎么理解?来个例子class A { }class B extends A{}class C {// void func(A a) { // // } //以上使用了A 类, 那必须要保证,保证什么呢? 保证替换成以下代码, 在任何情...
2019-09-03 20:32:15
788
原创 接口隔离原则-快速理解
定义用多个专门的接口,而使用单一的总接口,客户端不应该依赖它不需要的接口一个类对一个类的依赖应该建立在最小的接口上建立单一接口,不要建立庞大臃肿的接口尽量细化接口,接口中的方法尽量少注意适度原则,一定要适度!!!否则,导致接口过多,复杂不好管理优点符合我们常说的高内聚,低耦合的设计思想,从而使得类具有很好的可读性、可扩展性和可维护性例子场景: 有一个 interface 具...
2019-09-02 22:04:37
554
原创 单一职责原则-快速理解
定义不要存在多余一个导致类变更的原因一个类/接口/方法只负责一项职责怎么理解? 尽量降低类间,方法间,接口间的耦合。假设场景:(注意:这里说的任务是,独立开来是没有任何联系的)把多个任务 压到一个人身上,那样他会很累,而且,一个人,只能在同一时刻,做一件事,如果其中一件事没做好,就会影响没做完的事情的进度,或者因为心情不好,做后面的事情就变慢了,或者不想做了。(这么说,多个任务给一个...
2019-09-01 22:46:38
462
原创 依赖倒置原则-快速理解
定义高层模块不应该依赖底层模块,二者都应该依赖其抽象抽象不应该依赖细节;细节应该依赖抽象针对接口编程,不要针对实现编程很多人可能看到这里就蒙了,什么是高层模块?底层模块?细节具体指什么?依赖抽象?那么我来解释一下举例:比如超人 Class extends 人类 ,人类 implements动物类接口,那么人类就是高层模块,也就是相对于前面的类,更为具体的类。高层模块: 一个类,...
2019-08-30 11:58:37
465
原创 开闭原则-快速理解
定义一个软件实体入,如类模块和函数应该对扩展开放,对修改关闭。我们应该把注意力集中在扩展开放和修改关闭这两个行为上。扩展开放:可以扩展实现的细节,增加新的功能。修改关闭:不修改原先定义的规则,尽量不修改源代码。同时准寻这两个行为,即为遵循开闭原则。开闭原则是面向对象设计中最基础的设计原则。就比如:一个公司的上班时间是8小时,但是去上班的时间可以任意,早去上班早下班,晚去晚下班,只要满8...
2019-08-29 23:27:20
631
原创 HTTP之数据协商
文章目录什么是数据协商类型分类请求类型AcceptAccept-EncodingAccept-LanguageUser-Agent返回类型ContentContent-TypeContent-EncodingContent-Language源码使用方法文件的具体内容常用的MIME什么是数据协商客户端发送一个请求的时候,会在请求头中声明,我此次请求想拿到的数据格式和一些其他内容的限制,而服务端会...
2019-08-28 22:19:16
390
原创 学习发展历史,真的一无所用吗?NO
对于很多人来说,某个学科,某个东西的发展历史,是最没人愿意学的,因为很枯燥,而且对于大家来说,很难看到收益。但事实上,因人而异,因为发展的历史的每个阶段,必然有每个阶段存在的原因,里面蕴藏着很多设计思想,这个演变的思考过程,如果能读懂这些,将会受益匪浅,并非对我们的工作没有,但是明白这些思想的前提,是你需要有可以理解这个思想的相关的经验和思想基础,如果没有,再怎么硬性理解,也只是片面的理解,没有多...
2019-08-28 10:55:29
303
原创 HTTP协议的发展历史
学习发展历史有何用,我来说说我的看法读之前,我给大家说说我对于发展历史的看法,对于很多人来说,某个学科,某个东西的发展历史,是最没人学的,因为很枯燥,而且很没有用。但事实上,因人而异,因为发展的历史的每个阶段,必然有每个阶段存在的原因,里面蕴藏着很多设计思想,思考的过程,如果能读懂这些,将会受益匪浅,并非对我们的工作没有,但是明白这些思想的前提,是你需要有可以理解这个思想,相关的经验和思想基础,...
2019-08-27 19:31:53
359
原创 浏览器输入URL后HTTP请求返回的完整过程
了解HTTP请求过程,时间点有什么用处浏览器中会有一个叫做performance的API, 给我们记录HTTP协议过程中每个时间点的时间消耗。而我们可以通过,查看时间消耗,将时间消耗较大的时间点【见下图】进行优化,来提高HTTP请求的性能。过程解析Redirect(跳转)第一步,判断是否需要跳转,如果需要,就是域名的跳转, 比如,一个网站已经将域名改变了,但是老用户却不知道,所以可以设...
2019-08-26 22:32:59
601
原创 Ajax,fetch等http请求跨域产生的原因及其解决
文章目录跨域产生的原因第一种: 浏览器的限制第二种: 跨域第三种: XHR (XMLHttpRequest)解决思路解决方法服务器端(被调用方)适配跨域跨域产生的原因第一种: 浏览器的限制浏览器会对请求进行安全的信息校验。第二种: 跨域调用方于被调用方的协议, 域名, 端口,任何一个不一样,都会产生跨域问题。第三种: XHR (XMLHttpRequest)只要发出去的请求类型(ty...
2019-08-25 23:21:23
1847
原创 HTTP协议之5层网络模型
文章目录5层网络模型介绍物理层数据链路层网络层传输层应用层5层网络模型介绍一个web服务器来提供个网站的服务,那么这些经典的计算机模型都会有这么一个网络的过程。物理层物理层主要的作用就是定义物理设备如何去传输数据简单来说有没有物理我们的软件是没有办法去使用的所以呢物理层就是这些硬件设备相关的东西数据链路层数据链路层是在等我们的通信实体之间建立数据链路的连接。那么怎么理解呢?就是说,把...
2019-08-23 23:46:56
1008
原创 IT简历如何是好
#IT简历如何是好文章目录#IT简历如何是好界面简洁,而不是简单注意事项精通的误区当有好几个类似的技术都会时,是否需要都写上总结界面简洁,而不是简单有些人,字体搞得很大,导致一个页面上也放不了不少内容,HR看了不到几秒就看完了,都不知道你会干啥,简历也只能停滞于此,到不了技术面试官的手里。太小密密麻麻的,也同样不行,看起来太累了。所以字体大小的选择在简历里也是一门学问。正文里,除了标题以外...
2019-08-21 23:37:44
420
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅