自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(596)
  • 资源 (14)
  • 收藏
  • 关注

原创 CMake 多模块项目构建指南:从库编译到可执行文件集成

本文介绍了使用 CMake 构建多模块 C++ 项目的完整流程,包括项目结构设计、库编译配置和可执行文件集成。主要内容涵盖: 项目采用分层结构,核心库与多个 Demo 程序分离,输出统一管理到 bin 目录 顶层 CMakeLists.txt 负责项目全局设置和子目录组织 库模块配置详解: 支持动态/静态库切换 源码收集与目标创建 头文件路径分级管理(PUBLIC/PRIVATE) 输出目录统一配置 可执行文件通过导入库目标实现链接 关键技巧:版本控制、调试信息配置、跨平台兼容性处理 文章提供了清晰的配置模

2026-07-14 21:45:00 350

原创 滑动窗口五题通关:从食堂打饭到上下文窗口——算法与大模型的内存管理哲学

文章摘要 本文通过食堂打饭的生动比喻,系统讲解滑动窗口算法的核心思想和五类经典题型。从基础的长度最小子数组(LeetCode 209)到复杂的最小覆盖子串(LeetCode 76),作者用统一的双指针框架解析了不定长求最小/最大、固定长度及带哈希表验证等滑动窗口变体。每种题型均配以生活化类比(如自助餐、水果摊)、代码实现和复杂度分析,并延伸探讨了滑动窗口与大模型上下文管理的关联。全文以"扩张-收缩-记录"的三步逻辑贯穿始终,帮助读者建立解决滑动窗口问题的肌肉记忆。

2026-07-12 21:15:00 717

原创 二分查找的三重变奏:有序区间、旋转最小值与平方根——从“猜数字”到“向量检索”的思维演化

本文探讨了二分查找的三种高级变体问题:搜索旋转排序数组、寻找旋转排序数组中的最小值和计算平方根。通过生动的比喻(如魔方旋转、山谷寻底和数轴测量),文章揭示了这些问题的核心思想——在部分有序或连续空间中使用二分法快速定位目标值。三种问题分别代表了二分查找的不同应用场景:分段有序数组搜索、极值点定位和连续空间边界确定。文章不仅提供了详细的解题思路和代码实现,还将其与现代大模型中的向量检索技术相联系,展示了算法思维在AI领域的延伸应用。

2026-07-11 21:15:00 364

原创 二分查找三部曲:从“猜数字”到“精准定位”——有序世界里的分治哲学

这篇文章从“猜数字游戏”引入,系统讲解了二分查找算法的三种经典变体:标准查找(LeetCode 704)、搜索插入位置(LeetCode 35)和查找元素边界(LeetCode 34)。通过生动的比喻和代码示例,文章剖析了二分查找的核心思想——利用有序性每次排除一半搜索空间,将时间复杂度从O(n)降至O(log n)。特别强调了循环条件、边界处理和mid计算等关键细节,并指出二分查找的本质是分治思想。最后通过三题对比,展示了从简单查找扩展到处理重复元素的完整知识图谱。

2026-07-10 21:00:00 216

原创 跳跃游戏 II:从“接力赛”到“BFS 层级覆盖”——贪心 + BFS 的经典范式

本文探讨了跳跃游戏 II(LeetCode 45)的贪心算法解法,通过接力赛的比喻形象化解释问题本质。文章指出,该问题可转化为无权图中的最短路径问题,贪心策略即是在每一步选择能最大化下一跳范围的位置,从而以最少跳跃次数到达终点。核心解法通过维护当前跳跃边界(current_end)和下一跳最远可达位置(farthest)来实现,时间复杂度为O(n)。与跳跃游戏I不同,本题需要计算最小跳跃次数而非仅判断可行性。文中还提供了Python代码实现,并强调了贪心算法的正确性证明及与BFS层级的对应关系。

2026-07-09 20:15:00 335

原创 跳跃游戏:从“过河踩石”到“贪心边界”——贪心策略的经典范式

每一步都做局部最优选择,相信局部最优能推出全局最优。在跳跃游戏中,贪心策略是:每一步都更新“从当前位置能到达的最远位置”,并不断扩大这个边界。如果在遍历过程中发现某个位置已经超出了当前能到达的范围,就返回 False。为什么贪心在这里成立?因为跳跃能力是累积的——当你到达某个位置i时,你继承了之前所有位置能到达的最远距离。所以只要max_reach一直在增长,你就一定能到达终点。不需要回溯,不需要动态规划。直觉本质:这就像接力赛——你不关心每个队员具体怎么跑的,只关心。

2026-07-08 21:15:00 315

原创 买卖股票的最佳时机 II:从“登山补给”到“贪婪哲学”——贪心算法的优雅落地

【学习记录】买卖股票的最佳时机 II:从“登山补给”到“贪婪哲学”——贪心算法的优雅落地如果说“两数之和”是哈希表的“签到簿哲学”,那么就是贪心算法的“登山补给哲学”。它不像动态规划那样需要维护复杂的状态表,也不需要像回溯那样穷举所有路径——它只是简单地、贪婪地抓住每一个向上的机会。今天,我们用“登山队物资补给”的比喻,把这道题彻底拆透,并连接到大模型时代的“梯度下降”与“贪婪解码”思想。

2026-07-07 21:45:00 295

原创 分发饼干:从“公司年会发礼品”到“资源分配”——贪心算法的朴素哲学

摘要:贪心算法在资源分配中的高效实践——以分发饼干为例 贪心算法通过局部最优选择追求全局最优解,其核心思想在LeetCode 455题"分发饼干"中得到完美体现。题目要求用有限尺寸的饼干满足最多孩子的胃口,类比公司年会礼品分配场景:将最小可用资源优先匹配最低需求,实现资源利用率最大化。关键步骤包括双排序(需求与资源升序排列)和双指针匹配,确保O(nlogn)时间复杂度。该算法适用于满足"贪心选择性质"的问题,如标准化货币找零,但在复杂场景(如0-1背包)可能失效。文章延伸探讨了该策略与大模型算力调度的关联,

2026-07-06 21:11:22 214

原创 字母异位词分组:从“图书馆分类”到“特征指纹”——哈希表分组的经典范式

这篇文章摘要如下: 字母异位词分组的哈希表解法与核心思想 本文通过图书馆分类的比喻,深入讲解LeetCode 49题"字母异位词分组"的解法。核心思路是为每个字符串生成唯一的"特征指纹"(如排序后的字符串),然后使用哈希表按指纹分组。文章详细分析了三种实现方法:排序法(O(nklogk))、字符频率计数法(O(nk))和质数乘积法(数学技巧),并指出频率计数法最优。通过时间切片图解和数学本质分析,揭示了分组问题的通用范式:为复杂对象寻找规范表示。最后连接到大模型时代的特征提取思想,展示了算法与AI的深层联系

2026-06-30 21:15:00 362

原创 验证回文串 II:从“修改错别字”到“容错机制”——双指针的工程智慧

文章摘要 LeetCode 680题"验证回文串II"考察字符串在最多删除一个字符后能否成为回文。核心解法采用双指针+容错机制:当左右字符不匹配时,尝试跳过左或右字符继续检查。这种"单点修复"思想体现了工程中的容错设计,类比于文本编辑中的错字修改。算法时间复杂度O(n),空间O(1),关键点在于分层处理标准回文检查和容错分支。该思想可延伸至数据库事务、网络通信等需要错误恢复的场景,展现了"最小代价修复"的工程智慧。

2026-06-30 21:15:00 331

原创 字符串中的第一个唯一字符:从“班级举手”到“异常检测”——哈希表计数的经典二次遍历模式

文章摘要 本文通过LeetCode 387题"第一个唯一字符"的解题过程,深入讲解了哈希表计数和两次遍历(Two-Pass)的经典模式。文章从班级举手的比喻入手,分三层解析了该问题的核心思路:为什么需要先统计后筛选、代码执行的时间切片机制以及"统计→筛选"模式的本质。提供了三种Python实现方案,并通过图解示例展示算法流程。最后将这一模式与AI系统中异常日志检测的实际应用场景相联系,说明其在处理大数据流中独特事件的重要价值。文章强调,很多算法问题都需要先积累全局信息再做决策,这种"数据驱动"的思维方式具有

2026-06-29 21:45:00 491

原创 验证回文串:从“双向奔赴”到“两端逼近”——双指针的温柔哲学

本文以验证回文串(LeetCode 125)为例,生动讲解了对撞指针算法的核心思想。通过"双向奔赴的爱情"比喻,形象展示了双指针从两端向中间逼近的过程。文章从直觉、机制、本质三个层面剖析算法原理,提供Python实现代码、复杂度分析和面试考点,并巧妙关联到大模型的双向注意力机制。该题是双指针最优雅的入门案例,仅需同步比较对称位置字符,无需额外空间,时间复杂度O(n)。文中还对比了不同解法,强调了预处理和边界条件处理的技巧。

2026-06-29 19:45:00 179

原创 有效的字母异位词:从“扑克牌洗牌”到“频率指纹”——哈希表计数思维的经典范式

本文探讨了判断字母异位词的两种核心方法:排序法和哈希表计数法。通过扑克牌洗牌的比喻,揭示了异位词问题的本质是比较字符频率分布而非顺序。文章详细分析了哈希表从"存在性检测"到"完整性检测"的进阶过程,对比了不同解法的时空复杂度,并针对面试场景提供了注意事项。最后延伸到AI领域,指出异位词问题与自然语言处理中"词序无关性"的关联,体现了语义不变性的思想。全文通过三层递进(直觉层、机制层、本质层)系统性地拆解了这道经典算法题。

2026-06-28 22:15:00 313

原创 两个数组的交集:从“校友会签到”到“集合运算”——哈希表判重的自然延伸

本文以“校友会签到”为比喻,生动讲解了两个数组交集问题的解法。文章通过三层递进式解析(直觉层、机制层、本质层),揭示了哈希表判重在集合运算中的核心作用。主要亮点包括: 用Set自动处理数组去重和结果去重 对比暴力法、哈希法、排序双指针法的时间复杂度 提供Python三种实现(标准哈希表、一行简洁版、空间优化版) 连接AI场景,说明交集问题在RAG系统权限过滤中的应用 强调哈希表"以空间换时间"的交易哲学 解题关键:将一个数组转为Set,遍历另一个数组快速查询,时间复杂度O(n+m)。该问题本质是集合论中的基

2026-06-28 21:30:00 349

原创 三数之和:当双指针遇见“去重剪枝”——从有序数组到多路搜索的思维跃迁

在上一讲中,我们用双指针解决了“两数之和 II(有序数组)”,并探索了它与大模型解码策略的深层共鸣。今天,我们把难度升级到——这道题不仅是双指针的经典应用,更是检验你是否真正理解“剪枝”与“去重”的试金石。我们将从暴力解法出发,逐步优化到排序 + 双指针,并再次跨越到大模型的和。读完这篇,你会对“如何用有序性剪枝”产生肌肉记忆。

2026-06-27 20:30:00 821

原创 无重复字符的最长子串:从“电影院座位”到“上下文窗口”——滑动窗口的经典范式

这篇文章以LeetCode第3题“无重复字符的最长子串”为例,深入讲解了滑动窗口算法的原理和应用。主要内容包括: 问题描述:找出字符串中不含重复字符的最长子串长度。 形象比喻:用电影院找连续座位的场景比喻滑动窗口的工作原理。 算法解析: 三层递进理解:直觉层(窗口扩张与收缩)、机制层(代码执行流程)、本质层(数学剪枝原理) 两种实现方式:基于Set的滑动窗口和基于Map的优化版本 复杂度分析:两种实现均为O(n)时间复杂度和O(min(n, Σ))空间复杂度。 扩展应用:连接到大模型的上下文窗口概念。 面试

2026-06-27 20:15:00 661

原创 LRU缓存机制:从“奶茶店记录”到“GPT推理缓存”——数据结构组合的经典工程范式

文章摘要 本文通过奶茶店顾客记录的生动比喻,深入解析了LRU缓存机制的设计原理与实现方法。文章从三层递进(直觉、机制、本质)剖析了LRU的核心概念,指出哈希表和双向链表组合的必要性:哈希表提供O(1)查找,链表维护访问顺序。详细展示了Python实现方案,包括节点结构、辅助函数和核心操作。特别强调了虚拟头尾节点简化边界处理的技巧,以及_move_to_head操作的关键作用。最后延伸探讨了该模式在数据库索引、文件系统及大模型KV Cache中的应用价值,体现了数据结构组合解决工程问题的经典范式。全文以"组合

2026-06-26 23:15:00 354

原创 双指针与解码策略:在“有序”的世界里,如何优雅地做减法

这篇文章通过LeetCode第167题"两数之和II"的解法,深入剖析了双指针算法在有序数组中的应用原理,并将其与大模型文本生成中的解码策略(如Beam Search、Top-P采样等)建立联系。文章采用三层递进式解析:从直觉层面的品酒师比喻,到代码实现的对撞指针机制,最终揭示其数学本质是基于单调性的安全剪枝策略。重点指出双指针利用有序性实现O(1)空间复杂度的关键,并通过对比表格将算法思想映射到大模型的概率剪枝过程。最后以三数之和问题为延伸,启发读者思考分层剪枝在复杂场景中的应用。全文以烹饪为喻,将抽象算

2026-06-26 20:45:00 389

原创 数之和:从“暴力相亲”到“提前登记”——算法里的时间-空间交易哲学(哈希表)

这篇文章以LeetCode经典题目“两数之和”为切入点,通过生动形象的比喻(单身派对签到簿)和三层递进式解析,深入浅出地揭示了算法设计中时间与空间复杂度的权衡哲学。重点讲解了哈希表解法如何通过O(n)空间换取O(n)时间效率,并与大模型时代的RAG技术建立巧妙联系,指出两者共享“预计算索引”的核心思想。文中特别强调了代码顺序的微妙性、哈希表的潜在不稳定性等关键细节,最后通过思考题引导读者探索双指针解法与Beam Search的深层关联。全文以独特视角将基础算法与前沿技术贯通,展现了算法思维的迁移价值。

2026-06-24 23:39:12 434

原创 本地 RAG 问答系统实战:FAISS 检索 + DeepSeek 生成

本文介绍了如何构建一个本地RAG(检索增强生成)问答系统,结合FAISS向量检索和DeepSeek大模型生成能力。系统首先通过FAISS索引检索相关文档片段,再将这些片段作为上下文输入DeepSeek模型生成回答。文章详细说明了环境配置、核心原理(包括检索模块、生成模块和Prompt设计)、完整代码实现及运行方法。该系统支持私有知识问答,具有可解释性强、减少幻觉等优点,适用于本地化部署场景。

2026-06-16 21:45:00 243

原创 本地 RAG 检索器:加载 FAISS 索引并实现语义搜索

本文介绍了如何使用本地FAISS索引实现语义检索功能,主要包括加载已保存的FAISS索引和LlamaIndex存储上下文,创建独立的检索器进行语义搜索。文章详细说明了环境配置、核心原理和完整实现代码,展示了如何加载一致的Embedding模型、读取FAISS索引文件、恢复存储上下文,并构建交互式检索系统。该方案适合作为RAG系统的检索模块,可用于验证检索效果或调试参数,为后续接入LLM生成答案提供基础。

2026-06-15 23:15:00 245

原创 从 PDF 到 FAISS 向量索引:构建本地 RAG 数据预处理流水线

本文介绍了一个完整的本地RAG(检索增强生成)数据预处理流水线,能够自动处理PDF文档(包括文本型和扫描图片型),通过OCR识别、文本分块、向量化等步骤构建FAISS向量索引。文章详细说明了代码功能、环境配置、输入输出、核心逻辑和实现方法,并提供了完整的Python代码。该方案可自动判断PDF类型(文本量不足5000字符时触发OCR),使用中文嵌入模型BAAI/bge-small-zh-v1.5进行向量化,最终生成可直接用于语义搜索的FAISS索引。文章还包含了运行测试指南和优化建议,为构建本地知识库提供了

2026-06-14 22:15:00 254

原创 Streamlit 会话状态管理及登录页面实战

本文介绍了使用 Streamlit 的 st.session_state 进行会话状态管理的方法,重点讲解了如何实现登录系统。主要内容包括: 核心概念:解释了 st.session_state 的持久化特性和 Streamlit 的脚本重运行机制。 基础登录示例:演示了如何使用布尔标志控制登录/登出状态切换。 表单优化:通过 st.form 解决输入框卡顿问题,实现流畅的登录体验。 完整实现:展示了包含欢迎页面和聊天输入框的医疗文档问答系统框架。 面试考点:总结了 Streamlit 状态管理和表单使用等关

2026-06-13 19:31:17 336

原创 从零搭建 DeepSeek LLM API 服务:FastAPI + LlamaIndex 实践

本文介绍了如何利用 FastAPI 和 LlamaIndex 框架搭建基于 DeepSeek LLM 的 API 服务。主要内容包括: 环境配置:安装必要的 Python 包(FastAPI、LlamaIndex 等)并获取 DeepSeek API Key 基础调用:通过 LlamaIndex 的 DeepSeek 类实现单轮问答和多轮对话 API 封装:使用 FastAPI 创建 HTTP 接口,包括健康检查端点和文本生成端点 测试方法:提供了 curl 和 Python requests 两种测试方式

2026-06-12 20:15:00 253

原创 从 PDF 到 FAISS 向量索引:构建本地 RAG 数据预处理流水线

本文介绍了一个完整的PDF文档预处理流水线,用于构建本地RAG系统的向量索引。该方案能够自动处理文本型PDF和扫描件(通过OCR),使用中文嵌入模型BAAI/bge-small-zh-v1.5进行文本向量化,并构建FAISS索引。核心流程包括:PDF文本提取与OCR回退机制、语义分块处理、向量化及索引构建。文章详细说明了环境配置、输入输出格式、核心代码逻辑,并提供了使用示例和优化建议。该方案完全开源,可直接用于构建本地知识库,支持后续的语义搜索和问答应用。特别强调了处理不同类型PDF的注意事项,以及在大数据

2026-06-11 21:00:00 466

原创 Refresh Token 实战:让用户“无感”续期,告别重复登录

本文介绍了使用Refresh Token机制优化JWT认证体系的实践方案。传统JWT认证面临安全性与用户体验的矛盾:短期Access Token导致频繁登录,长期Token则增加安全风险。Refresh Token方案通过双令牌机制解决这一问题:短期Access Token(如24小时)用于日常请求,长期Refresh Token(如30天)用于静默续期。文章详细解析了其工作原理,对比了有无Refresh Token的用户体验差异,并以FastAPI后端实现为例,展示了双令牌生成、存储和刷新流程,以及Str

2026-06-11 20:15:00 377

原创 DeepSeek 代码助手:FastAPI 后端 + Streamlit 前端完整实现

本文介绍了如何构建一个基于 DeepSeek 大模型的代码助手系统,采用 FastAPI 后端和 Streamlit 前端架构。后端通过 FastAPI 封装 DeepSeek 模型的 API 调用,支持自定义系统提示词和用户问题输入;前端 Streamlit 界面提供友好的 Web 交互,可发送请求并高亮展示生成的代码或解答。文章详细讲解了前后端代码实现、运行方法及安全注意事项(如 API Key 管理),帮助开发者快速搭建自己的 AI 编程助手。系统支持通过浏览器直接使用,适用于代码生成、问题解答等编程

2026-06-11 17:08:37 228

原创 从零构建安全文件上传系统:FastAPI + JWT + 密码哈希 + Streamlit 前端 + SQLite

本文介绍了一个基于FastAPI构建的安全文件上传系统,实现了完整的用户认证和文件管理功能。系统采用JWT进行无状态认证,使用Passlib进行密码哈希存储,前端通过Streamlit构建,数据存储在SQLite中。关键安全措施包括:密码哈希存储、JWT有效期控制、文件重命名(UUID)避免路径遍历、文件大小限制等。文章详细解析了后端实现,包括用户注册/登录、JWT签发验证、文件上传处理等核心功能,并提供了数据库设计和安全实践要点。该系统可作为内部工具或知识库的原型,具备良好的安全性和扩展性。

2026-06-10 21:30:00 369

原创 构建安全的文件上传系统:FastAPI + JWT 认证 + Streamlit 前端 + SQLite 数据库

本文介绍了一个基于FastAPI、JWT认证、Streamlit前端和SQLite数据库的安全文件上传系统。系统架构包括用户认证(JWT)、文件上传、数据隔离和记录查询功能,确保每个用户只能管理自己的文件。后端使用FastAPI处理RESTful API,JWT进行无状态认证,SQLite存储文件元数据,前端通过Streamlit实现交互界面。关键安全措施包括文件大小限制、唯一文件名生成和路径保护,防止攻击。系统提供完整的登录、文件上传和记录查询流程,适合作为企业级文档管理或知识库上传组件的原型。

2026-06-09 21:43:27 631

原创 从零搭建带数据库的文件上传系统:FastAPI + Streamlit + SQLite+加上日志

本文介绍了如何扩展基础文件上传系统,增加SQLite数据库功能来记录文件上传信息。系统采用FastAPI后端和Streamlit前端,新增功能包括: 数据库设计 - 创建SQLite表记录文件名、路径、大小、用户ID和上传时间 异步操作 - 使用aiosqlite实现异步数据库插入 查询功能 - 提供按用户ID查询历史记录的API接口 完整实现 - 包含后端数据库操作和前端查询界面 系统特点: 轻量级嵌入式数据库(无需额外服务) 异步操作提高性能 支持用户上传记录追踪 包含50MB文件大小限制 技术栈升级为

2026-06-07 20:15:00 231

原创 从零搭建文件上传系统:FastAPI 后端 + Streamlit 前端

摘要:使用FastAPI和Streamlit构建文件上传系统 本文介绍了一个完整的Python文件上传解决方案,结合FastAPI后端和Streamlit前端。系统特点包括: 技术栈: 后端:FastAPI处理文件接收、验证和存储 前端:Streamlit提供用户界面 支持跨域通信(CORS) 核心功能: 文件大小限制(50MB) 自动生成唯一文件名(UUID) 安全保存到指定目录 实时反馈上传状态 实现要点: 后端使用UploadFile处理multipart数据 前端通过requests发送文件 包含错

2026-06-06 19:00:00 190

原创 FastAPI 依赖注入系统完全指南:从入门到精通,让代码更优雅、更可测

本文全面介绍了 FastAPI 中的依赖注入系统,从基础概念到高级应用场景。主要内容包括: 依赖注入核心概念:解耦、复用、可测试性等优势 基础用法:通过Depends()实现简单依赖注入,支持同步/异步函数 典型应用场景: 处理分页/过滤参数 用户认证与权限验证 数据库会话管理(使用yield实现资源自动清理) OAuth2等安全认证 与中间件的对比:从粒度、执行时机等方面分析两者的适用场景 高级特性:依赖嵌套、异步依赖、缓存机制等 最佳实践建议:合理选择依赖注入与中间件,优化代码结构 依赖注入是 Fast

2026-06-06 18:45:00 243

原创 FAISS 详解:原理、使用与面试指南——向量检索的基石

本文全面介绍了FAISS向量检索库的原理与应用。FAISS由Facebook开发,能够高效实现海量向量的相似性搜索,将时间复杂度从O(N)降至次线性级别。文章从基础概念出发,详细解析了FAISS的核心功能、典型应用场景(推荐系统、图像检索、RAG等),并通过代码示例展示了从索引创建、向量添加、搜索到保存加载的全流程操作。特别介绍了自定义ID映射、多种索引类型选择(包括Flat、IVF、HNSW、PQ等)以及GPU加速方法。最后针对面试场景,总结了关于FAISS原理、索引选择、距离计算等高频问题的回答策略,为

2026-06-05 19:46:17 467

原创 FastAPI 中间件完全指南:从原理到实战,掌控请求响应的全局钩子

FastAPI中间件:全局请求响应处理指南 本文全面介绍FastAPI中间件的原理和实战应用,主要内容包括: 中间件概念:在请求到达路由前和响应返回客户端前执行的全局处理函数,用于日志记录、身份验证、跨域处理等场景。 执行原理:采用"洋葱模型"处理流程,请求从外层向内传递,响应则反向返回,后添加的中间件先执行请求处理代码。 典型应用场景: 日志记录:跟踪请求方法、路径和耗时 身份认证:验证请求头中的token 跨域处理:使用内置CORSMiddleware 自定义响应头:添加统一头部信息 性能监控:检测慢请

2026-06-05 19:45:00 188

原创 FastAPI 响应类型完全指南:从 JSON 到流式响应、异常处理与输出模型

FastAPI响应类型指南摘要 本文全面介绍了FastAPI中的多种响应类型及其应用场景,帮助开发者构建灵活专业的API接口。主要内容包括: 默认的JSONResponse自动处理字典和Pydantic模型 HTMLResponse返回网页内容 PlainTextResponse提供纯文本响应 FileResponse实现文件下载/预览功能 StreamingResponse支持大文件流式传输和实时数据 RedirectResponse处理URL重定向 使用response_class装饰器简化响应类型指定

2026-06-04 21:18:41 259

原创 FastAPI 参数详解:路径参数、查询参数与请求体 —— 从入门到实战

本文详细介绍了FastAPI中三种核心参数传递方式:路径参数、查询参数和请求体。路径参数用于唯一标识资源,支持类型转换和Path验证;查询参数用于过滤和分页,可通过Query类添加元数据;请求体使用Pydantic模型处理复杂数据,支持嵌套结构和Field验证。文章包含基础用法、进阶验证规则和完整代码示例,帮助开发者全面掌握FastAPI的参数处理机制。通过类型注解和自动验证,FastAPI简化了API开发流程,同时保持代码清晰和类型安全。

2026-06-01 21:59:42 184

原创 RAG优化系列:自适应检索(Adaptive Retrieval)——让系统智能选择是否检索

自适应检索技术让RAG系统智能判断是否需要检索外部知识库。本文介绍了该技术的核心原理:通过判断器评估问题复杂度,简单问题直接由LLM回答,复杂问题才执行检索。文章包含完整代码实现,使用规则判断问题类型,并集成LLM评估答案相关性。实验表明,自适应策略相比始终检索能提高平均相关性分数,同时节省成本、减少延迟。还讨论了生产环境中的改进方法,如训练分类器、多级策略等,并提供了面试常见问题的解答建议。该技术能有效避免不必要的检索,提升系统整体性能。

2026-05-31 23:15:00 450

原创 RAG优化系列:基于用户反馈的检索权重调整(Feedback Loop)——让系统越用越聪明

维度说明核心思想根据用户反馈动态调整文档权重,实现个性化检索实现步骤初始权重 → 加权检索 → 收集反馈 → 更新权重 → 循环评估方法用 LLM 打分对比反馈前后的相关性分数适用场景重复查询、个性化推荐、客服问答、内部知识库不适用场景冷启动、长尾查询、对抗性用户最佳实践设置权重上下限;学习率衰减;防恶意攻击;可扩展为个性化权重基于用户反馈的检索权重调整是 RAG 系统中实现“越用越聪明”的简单有效手段。通过闭环学习,系统能逐步适应个体偏好,提升用户体验。

2026-05-31 20:15:00 372

原创 LLMLingua:用小型模型“剪枝”大语言模型提示词,让长文本不再昂贵

LLMLingua是一种创新技术,利用小型模型(如GPT-2或LLaMA-7B)对大语言模型的提示词进行"剪枝"压缩。它通过计算每个token的信息熵和困惑度,识别并剔除冗余token,在保持语义完整性的同时实现高达20倍的压缩率。该方法采用预算控制器动态分配压缩率,结合迭代压缩算法处理长距离依赖关系。实际应用中,LLMLingua能显著降低API调用成本、减少延迟,同时避免引入噪声干扰。评估显示,在80%压缩率下仍能保持9分以上的语义保留率。该技术特别适合长文本场景,通过问题感知压缩和动态上下文压缩比优化

2026-05-30 23:00:00 361

原创 RAG优化系列:基于 TF‑IDF 的相关句子提取——轻量级文本压缩与精炼

本文介绍了一种基于TF-IDF的句子提取方法,用于优化RAG系统中的文本检索。该方法通过计算句子与查询的TF-IDF向量相似度,筛选出最相关的句子,从而减少冗余信息并提高回答准确性。文章详细讲解了TF-IDF原理、代码实现流程(包括句子分割、向量化和相似度计算),并提供了AI评估方法(使用LLM进行相关性打分)。此外,还总结了面试常见问题及解答,如TF-IDF优缺点、top_k选择策略等。该方法轻量高效,适合快速原型开发,但存在无法处理同义词等局限性,建议在实际应用中结合语义方法优化。

2026-05-30 20:45:00 376

自己实战总结的医疗器械资料文档模版

自己实战总结的医疗器械资料文档模版

2026-05-12

找不到 MSVCP120.dll 安装微软常用运行库合集

由于找不到 MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题,安装这个,解决问题

2025-02-06

电脑直连设备+window使用nfs挂载设备

电脑直连设备+window使用nfs挂载设备

2024-12-12

SQL条件查询语句练习.txt

SQL002条件查询练习

2022-01-06

python 实现 飞船大战

python 实现 飞船大战

2024-03-29

Cmake test 练习案例

Cmake test 练习案例

2023-05-24

SQL简单查询语句练习.txt

SQL简单查询练习

2022-01-04

HTML相关知识简单总结记录

HTML相关知识简单总结记录

2022-03-09

软件测试流程知识学习记录

软件测试流程知识学习记录

2022-03-09

SQL数据库语言学习记录

SQL数据库语言学习记录

2022-03-09

wrieshark.zip

Wireshark 是网络包分析工具。网络包分析工具的主要作用是尝试捕获网络包, 并尝试显示包的尽可能详细的情况。 你可以把网络包分析工具当成是一种用来测量有什么东西从网线上进出的测量工具,就好像使电工用来测量进入电信的电 量的电度表一样。(当然比那个更高级) 过去的此类工具要么是过于昂贵,要么是属于某人私有,或者是二者兼顾。 Wireshark 出现以后,这种现状得以改变。 Wireshark 可能算得上是今天能使用的最好的开元网络分析软件

2021-03-12

IAR for 430

IAR for MSP430全称IAR Embedded Workbench for MSP430是一款功能强大的专业集成开发环境,是针对单片机开发用户打造的专业开发工具,软件包括项目管理、配置开发环境、创建编译器、定制具体编程方案等多个实用功能。

2020-10-06

SQL003分组查询练习.sql

SQL003分组查询练习

2022-01-06

实验九外部IO扩展实验.zip

51单片机实验九:外部IO扩展实验

2021-07-21

STM32.pdsprj

基于STM32的ADC仿真+OLED显示源程序+Proteus仿真

2021-06-09

JavaScript简介.zip

JavaScript简介,与博客内容一致,具体项目

2021-12-11

JavaScript基础语法.zip

JavaScript基础语法

2021-12-11

实验八双机通信.zip

51单片机实验八:双机通信

2021-07-21

51单片机实验一 74LS138.zip

51单片机:74LS138译码实验

2021-07-21

空空如也

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

TA关注的人

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