<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[KevinChen2019的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/KevinChen2019</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; KevinChen2019]]></copyright><item><title><![CDATA[文件加载器：从入门到实战]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/166134332</link><guid>https://blog.csdn.net/KevinChen2019/article/details/166134332</guid><author>KevinChen2019</author><pubDate>Sun, 20 Sep 2026 15:49:20 +0800</pubDate><description><![CDATA[文件加载器是一种负责读取外部数据源并将其转换为统一格式的工具组件。它屏蔽了不同数据源的差异，为上层应用提供一致的接口。文件加载器是数据处理链路中的第一环，选择合适的加载器能显著提升开发效率。本文介绍了加载器的概念、分类和常见用法，希望能帮助你快速上手。在实际项目中，建议根据数据源类型和业务需求灵活选择，必要时自定义加载器以满足特殊场景。]]></description><category></category></item><item><title><![CDATA[LangChain 短期记忆：基于 PostgreSQL 的持久化实现详解]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/166132038</link><guid>https://blog.csdn.net/KevinChen2019/article/details/166132038</guid><author>KevinChen2019</author><pubDate>Sun, 20 Sep 2026 15:19:28 +0800</pubDate><description><![CDATA[llm=llm,LangChain 短期记忆的「基于 PostgreSQL 的持久化」，本质上是把对话历史从进程内存迁移到 PostgreSQL 数据库，通过session_id实现会话隔离，让记忆在进程重启后依然可用。数据库持久化 ≠ 内存持久化：数据存储在 PostgreSQL 中，重启不丢失；是关键：它实现了与内存版相同的接口，可无缝替换；session_id实现隔离：天然支持多用户、多会话场景；可组合使用：滑动窗口、摘要压缩等策略均可与 PostgreSQL 结合；生产需注意。]]></description><category></category></item><item><title><![CDATA[Embedding 模型：从原理到实践]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/166104402</link><guid>https://blog.csdn.net/KevinChen2019/article/details/166104402</guid><author>KevinChen2019</author><pubDate>Sun, 20 Sep 2026 09:54:55 +0800</pubDate><description><![CDATA[Embedding（嵌入）是将高维离散数据（如单词、句子、图片）映射为低维稠密向量的过程。在文本领域，Embedding 模型将一段文本转换为固定长度的数值向量，使得语义相近的文本在向量空间中距离更近。Embedding 模型是语义理解与向量检索的基础设施，在大模型时代的重要性日益凸显。理解其原理、熟悉主流模型的特点，并掌握基本的实践方法，将帮助你在实际项目中做出合理的技术选型，构建高效可靠的语义应用。]]></description><category></category></item><item><title><![CDATA[Milvus 向量数据库的 DDL、DML、DQL 操作详解]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/166007149</link><guid>https://blog.csdn.net/KevinChen2019/article/details/166007149</guid><author>KevinChen2019</author><pubDate>Sat, 19 Sep 2026 14:47:01 +0800</pubDate><description><![CDATA[DDL 操作主要涉及数据库、集合（Collection）、字段（Field）、索引（Index）等结构的管理。类别操作说明DDL创建/删除数据库、集合、索引管理数据结构DML插入、删除、更新数据管理数据内容DQL标量查询、向量搜索、混合检索检索与分析数据Milvus 的集合（Collection）对应关系型数据库的表，字段（Field）对应列。向量搜索必须提前创建索引，否则无法执行。更新操作采用「先删后插」策略。混合检索（向量 + 标量过滤）是生产环境中最常用的检索模式。]]></description><category></category></item><item><title><![CDATA[Spring Boot 多数据源实战：让不同 Mapper 走不同数据源]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165882960</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165882960</guid><author>KevinChen2019</author><pubDate>Fri, 18 Sep 2026 15:56:19 +0800</pubDate><description><![CDATA[适合需要运行时动态切换数据源的场景，比如读写分离、按租户切换。让不同 Mapper 走不同数据源，核心是让每个 Mapper 绑定到独立的 SqlSessionFactory。如果业务库之间完全独立、互不切换，推荐方案一，简单直观；如果需要运行时动态切换（如读写分离），推荐方案二。实际项目中也可以两者结合：静态分包 + 动态路由兜底。]]></description><category></category></item><item><title><![CDATA[LangChain 文本切分策略与 TextSplitter 详解]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165849376</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165849376</guid><author>KevinChen2019</author><pubDate>Fri, 18 Sep 2026 10:19:39 +0800</pubDate><description><![CDATA[文本切分是 RAG 应用的地基，切分策略直接决定检索质量。选对切分器：通用文本用，代码用代码专用切分器，Markdown 用标题切分器。调好参数：块大小、重叠率、分隔符优先级三者配合，找到最适合你数据的组合。保持语义完整：优先在段落、句子边界切分，避免割裂关键信息。建议在实际项目中多组参数对比测试，用检索召回率和生成质量来验证切分策略的优劣。掌握好 TextSplitter，你的 RAG 应用就成功了一半。]]></description><category></category></item><item><title><![CDATA[高并发抢红包系统设计方案]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165595433</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165595433</guid><author>KevinChen2019</author><pubDate>Wed, 16 Sep 2026 11:12:56 +0800</pubDate><description><![CDATA[抢红包系统的核心在于用 Redis 扛住高并发、用 Lua 脚本保证原子性、用幂等设计防止重复领取、用异步化削峰填谷。整体上采用「缓存 + 数据库 + 消息队列」的组合架构，既保证了抢红包瞬间的极致性能，又通过异步落库与对账机制保障了资金数据的最终一致。实际落地时还需结合具体业务量级，在限流阈值、缓存策略、集群规模等方面做针对性调优。]]></description><category></category></item><item><title><![CDATA[大模型对话记忆机制详解：为什么模型记不住历史提问？]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165593801</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165593801</guid><author>KevinChen2019</author><pubDate>Wed, 16 Sep 2026 10:48:06 +0800</pubDate><description><![CDATA[大模型本身没有记忆能力，所谓"记住历史提问"，本质上是开发者把历史对话作为上下文拼接到每次请求中。理解这一点后，你就能通过维护消息列表、控制上下文长度、引入外部存储等手段，让大模型在工程上表现出"记忆"能力。大模型是无状态的，每次调用独立。通过messages拼接历史即可实现短期记忆。长对话需要滑动窗口或摘要压缩来控制 Token。跨会话记忆需要借助数据库或向量库。]]></description><category></category></item><item><title><![CDATA[Spring AOP 详解：从入门到实战]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165592215</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165592215</guid><author>KevinChen2019</author><pubDate>Wed, 16 Sep 2026 10:43:52 +0800</pubDate><description><![CDATA[AOP（Aspect Oriented Programming，面向切面编程）是一种编程范式，它通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能。AOP 是 Spring 框架的核心模块之一，与 IoC（控制反转）相辅相成。AOP 的核心思想是将横切关注点（Cross-cutting Concerns）与业务逻辑分离。日志记录事务管理权限校验性能监控异常处理import org。]]></description><category></category></item><item><title><![CDATA[MySQL 是如何实现事务隔离的？]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165585042</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165585042</guid><author>KevinChen2019</author><pubDate>Wed, 16 Sep 2026 09:47:27 +0800</pubDate><description><![CDATA[隔离级别脏读不可重复读幻读READ UNCOMMITTED（读未提交）可能可能可能READ COMMITTED（读已提交）不可能可能可能REPEATABLE READ（可重复读）不可能不可能可能（InnoDB 已解决）SERIALIZABLE（串行化）不可能不可能不可能MySQL InnoDB 默认使用REPEATABLE READ（可重复读）隔离级别，但通过 MVCC 和间隙锁的配合，实际上已经解决了幻读问题，达到了接近 SERIALIZABLE 的效果。]]></description><category></category></item><item><title><![CDATA[RocketMQ 顺序消费处理：从原理到实战]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165483768</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165483768</guid><author>KevinChen2019</author><pubDate>Tue, 15 Sep 2026 16:38:59 +0800</pubDate><description><![CDATA[顺序消息是指消息的消费顺序与生产顺序保持一致。订单状态流转：订单创建 → 支付 → 发货 → 完成，必须按顺序处理，否则会出现状态错乱。库存扣减：多个操作对同一商品库存进行增减，必须串行执行。日志同步：数据库 binlog 同步，需要按主键顺序写入。类型说明适用场景全局顺序一个 Topic 下所有消息严格有序对顺序要求极高，吞吐量要求低的场景分区顺序同一队列（Queue）内消息有序按业务 key 分桶，兼顾顺序与并发RocketMQ 顺序消费的核心在于。]]></description><category></category></item><item><title><![CDATA[Redis 过期事件监听：原理与实战]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165478113</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165478113</guid><author>KevinChen2019</author><pubDate>Tue, 15 Sep 2026 15:34:45 +0800</pubDate><description><![CDATA[Redis 确实可以监听 Key 的过期时间，核心机制是键空间通知。通过订阅频道，我们可以在 Key 过期时收到通知并触发业务逻辑。但需要注意，这种方案存在事件丢失和触发延迟两个固有限制。对于订单超时这类对可靠性要求较高的场景，建议结合 Redis Stream 或延迟队列等方案，做到万无一失。]]></description><category></category></item><item><title><![CDATA[RocketMQ 延时队列使用详解]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165476115</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165476115</guid><author>KevinChen2019</author><pubDate>Tue, 15 Sep 2026 15:12:58 +0800</pubDate><description><![CDATA[延时队列是一种特殊的消息队列，消息发送后不会立即被消费者消费，而是需要等待指定的延时时间后才能被投递给消费者。RocketMQ 原生支持延时消息，使用简单，无需额外部署组件。RocketMQ 的延时消息并不是任意时间都能设置，而是固定延时等级。默认支持 18 个延时级别，从 1 秒到 2 小时。RocketMQ 的延时队列使用非常简单，核心就是通过方法设置延时等级。虽然默认只支持固定等级的延时时间，但足以覆盖大多数业务场景。理解其底层实现原理，有助于在实际项目中更好地使用和排查问题。]]></description><category></category></item><item><title><![CDATA[高并发下超卖问题解决方案：从数据库到分布式锁的完整实践]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165474102</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165474102</guid><author>KevinChen2019</author><pubDate>Tue, 15 Sep 2026 14:43:49 +0800</pubDate><description><![CDATA[超卖问题的本质是并发下的竞态条件，解决方案的核心思路是让「判断库存」和「扣减库存」成为一个原子操作。数据库层面：乐观锁、悲观锁、原子更新；应用层层面：分布式锁、Redis Lua 脚本、限流、MQ 削峰；生产实践：预扣减 + MQ 异步化 + 对账 + 幂等控制。实际项目中，没有银弹，需要根据并发量、一致性要求、团队技术栈综合选型。建议从最简单的数据库原子更新入手，在性能出现瓶颈时再逐步引入 Redis 方案，并配合限流和异步化，构建一套高可用、不超卖的库存系统。]]></description><category></category></item><item><title><![CDATA[RocketMQ 消费模式详解：从基础概念到实战]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/165327866</link><guid>https://blog.csdn.net/KevinChen2019/article/details/165327866</guid><author>KevinChen2019</author><pubDate>Mon, 14 Sep 2026 16:26:00 +0800</pubDate><description><![CDATA[本文详细介绍了 RocketMQ 的两种消费模式：集群消费与广播消费。集群消费通过消费组内负载均衡实现高吞吐与高可靠，是生产环境的首选；广播消费则适用于需要所有节点同步感知消息的特殊场景。理解两者的差异，并根据业务场景做出正确选择，是构建稳定可靠消息系统的关键一步。希望本文能帮助你更好地掌握 RocketMQ 消费模式，在实际项目中游刃有余。]]></description><category></category></item><item><title><![CDATA[LangChain Agent 开发中间件使用指南]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/164741946</link><guid>https://blog.csdn.net/KevinChen2019/article/details/164741946</guid><author>KevinChen2019</author><pubDate>Wed, 09 Sep 2026 14:26:41 +0800</pubDate><description><![CDATA[本文系统介绍LangChain Agent开发中中间件的使用方法，基于回调机制实现日志记录、限流、错误处理、上下文增强等横切关注点。通过自定义回调处理器，支持构造函数、运行时及全局配置三种接入方式，并提供实战示例构建完整的中间件链，提升智能体应用的健壮性与可维护性。]]></description><category></category></item><item><title><![CDATA[Claude Code 常用操作总结]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/164403858</link><guid>https://blog.csdn.net/KevinChen2019/article/details/164403858</guid><author>KevinChen2019</author><pubDate>Sat, 05 Sep 2026 21:47:28 +0800</pubDate><description><![CDATA[在项目根目录创建CLAUDE.md文件，写入项目说明、代码风格、常用命令等，Claude Code 会自动读取并遵循这些规范。# 项目规范- 使用 TypeScript 编写代码- 使用 pnpm 作为包管理器- 测试文件放在 __tests__ 目录下Claude Code 的核心价值在于把 AI 能力无缝融入终端工作流。掌握上述常用操作后，你就能在日常开发中高效使用它完成代码编写、审查、调试等任务。建议从简单的对话和文件操作开始，逐步尝试进阶功能，找到最适合自己的使用方式。]]></description><category></category></item><item><title><![CDATA[Claude Code Skill 从使用到原理：让 Claude 真正“会干活”的技能体系]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/164403817</link><guid>https://blog.csdn.net/KevinChen2019/article/details/164403817</guid><author>KevinChen2019</author><pubDate>Sat, 05 Sep 2026 21:42:56 +0800</pubDate><description><![CDATA[Claude Code Skill 是指赋予 Claude 的一组可复用、可组合、可调用的能力单元。如果说 Claude 是智能体的“大脑”，那么 Skill 就是大脑可以灵活支配的“手脚”。触发条件：什么情况下该技能被调用输入参数：技能执行所需的必要信息执行逻辑：技能内部的处理步骤或调用链输出结果：技能执行完成后返回的结构化结果元信息：技能的名称、描述、版本、依赖关系等在 Claude Code 中，Skill 以SKILL.md 文件为核心载体，存放在目录下，每个技能一个子目录。]]></description><category></category></item><item><title><![CDATA[Vue 3 模板语法详解：从插值到指令的完整指南]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/164360066</link><guid>https://blog.csdn.net/KevinChen2019/article/details/164360066</guid><author>KevinChen2019</author><pubDate>Fri, 04 Sep 2026 10:07:57 +0800</pubDate><description><![CDATA[模板语法允许开发者以声明式的方式将 DOM 绑定到底层组件实例的数据上，让页面渲染变得直观而高效。本文将系统性地介绍 Vue 3 的模板语法，从基础的文本插值到复杂的指令用法，帮助你快速掌握并灵活运用。：优先使用数据中稳定的唯一标识（如 id）作为 key，避免使用 index，因为当列表顺序变化时，index 会导致渲染错误。文本插值是 Vue 模板中最基础的语法，使用双大括号（Mustache 语法）将数据渲染为文本。指令在表单元素上创建双向数据绑定，是 Vue 中最常用的指令之一。]]></description><category></category></item><item><title><![CDATA[Vue 3 响应式核心：ref() 与 reactive() 的深入解析与实战]]></title><link>https://blog.csdn.net/KevinChen2019/article/details/164359415</link><guid>https://blog.csdn.net/KevinChen2019/article/details/164359415</guid><author>KevinChen2019</author><pubDate>Fri, 04 Sep 2026 09:16:56 +0800</pubDate><description><![CDATA[ref()是全能型 API，适合所有场景，尤其是单个值和组合式函数。reactive()适合集中管理复杂对象状态，但要注意解构丢失响应性的问题。在中，ref在模板中自动解包，体验更佳。理解底层Proxy和依赖收集机制，有助于写出更高效的代码。在实际开发中，建议以ref()为主，reactive()为辅，根据具体场景灵活选择。掌握这两者的精髓，你的 Vue 3 开发效率将大幅提升。]]></description><category></category></item></channel></rss>