<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[tr6666的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/tr6666</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; tr6666]]></copyright><item><title><![CDATA[【Golang】Go 语言实现高可用、用户态感知与多端广播的服务端 SSE 架构]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/163615550</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/163615550</guid><author>tr6666</author><pubDate>Sun, 09 Aug 2026 20:54:34 +0800</pubDate><description><![CDATA[本文介绍了使用Go语言实现高可用SSE(Server-Sent Events)服务端架构的方案。相较于WebSocket，SSE基于HTTP协议，具有天然的断线重连机制，适合服务端流式推送。文章重点解决了用户态管理问题，包括多端登录和连接生命周期管理，设计了一个线程安全的连接管理器(SSEManager)，采用两级映射关系和读写锁保证并发安全。提供了完整的Go实现代码，包含客户端连接管理、消息推送和资源回收等功能，并演示了本地验证流程。该架构支持一号多端、精准推送和防重机制，适用于实时消息通知等场景。]]></description><category></category></item><item><title><![CDATA[【Agent】智能客服系统设计要点]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161984083</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161984083</guid><author>tr6666</author><pubDate>Sun, 14 Jun 2026 21:13:44 +0800</pubDate><description><![CDATA[本文总结了智能客服系统的设计要点，分为五个部分： 系统定位与架构分层：强调智能客服是嵌入现有客服体系的AI入口，采用LLM Agent+RAG+业务集成+渠道UI的技术栈，需分离Agent运行时状态和业务实体状态。 安全模型：指出Prompt不能作为写操作的安全边界，必须结合代码硬约束（如RBAC、状态机等），并给出读/写操作的安全防线优先级。 业务能力边界：明确智能客服主要承担查询和申请受理角色，不应直接修改订单/资金状态，关键操作应由后端服务驱动。 落地场景与痛点：分析售前、售中等不同场景的应用，列举十]]></description><category></category></item><item><title><![CDATA[【Agent】如何为 AI Agent 设计高可用的 Tools]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161984007</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161984007</guid><author>tr6666</author><pubDate>Sun, 14 Jun 2026 21:07:08 +0800</pubDate><description><![CDATA[摘要 本文探讨了如何为AI Agent设计高可用工具（Tools）的核心原则与方法。文章指出，工具是连接大语言模型与外部系统的关键桥梁，其设计质量直接影响Agent的实际效能。作者提出四大黄金法则：1) 原子化设计原则，2) 精准描述Docstring，3) 强类型参数约束，4) 防御性错误处理。同时分析了工具调用技术从文本匹配到原生JSON结构的演进过程，强调现代框架如LangGraph的优势。最后，文章建议在生产环境中设置熔断机制（如最大迭代次数）来防止模型死循环。全文聚焦于通过工程化手段构建确定性边界]]></description><category></category></item><item><title><![CDATA[【Agent】ReAct 核心架构与设计哲学]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161983938</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161983938</guid><author>tr6666</author><pubDate>Sun, 14 Jun 2026 21:01:59 +0800</pubDate><description><![CDATA[Reasoning（推理）Acting（行动）ReAct\text{Reasoning（推理）} + \text{Acting（行动）} = \text{ReAct}Reasoning（推理）Acting（行动）ReAct以 CoT 为代表。模型在脑海中一步步推导（如：“第一步应该…，第二步应该…”），但由于完全不与外部环境交互，一旦遇到知识盲区，只能盲目续写。以早期的 API 联动为代表。]]></description><category></category></item><item><title><![CDATA[【RAG】RAGAS 评估框架与 Python 代码实践]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161568500</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161568500</guid><author>tr6666</author><pubDate>Sun, 31 May 2026 15:59:39 +0800</pubDate><description><![CDATA[RAGAS评估框架摘要 RAGAS是业界主流的RAG系统自动化评估框架，解决了传统评估中的两大痛点：主观盲测和线上同步打分代价高。其核心思路是解耦评估系统，利用大模型作为异步裁判进行离线审计。 框架包含四项关键指标： Faithfulness（0-1分）：检测回答是否基于检索内容，避免幻觉 Answer Relevancy（0-1分）：评估回答与问题的相关性 Context Precision（0-1分）：检查检索结果的排序质量 Context Recall（0-1分）：验证核心信息是否被检索到 实现需注意]]></description><category></category></item><item><title><![CDATA[【大模型对话】大模型对话送审核心知识点]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161568436</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161568436</guid><author>tr6666</author><pubDate>Sun, 31 May 2026 15:56:39 +0800</pubDate><description><![CDATA[在对话流程中，将用户提问和模型流式生成的回答提交至内容审核服务，通过异步事件回调驱动业务侧中断输出、通知客户端、记录审计日志。阶段送审内容触发时机输入送审用户问题发起 LLM 请求前输出送审累积的回答文本每个流式 chunk 到达时双端送审— 输入 + 输出均覆盖，降低内容风险漏检异步非阻塞— 审核与流式生成并行，事件驱动打断灰度可控— 配置白名单 + 热更新，按应用 / 租户逐步放量多语言适配— 语言检测 + 非母语输出拼接上下文送审精准过滤— 仅对指定违规类型触发打断，减少误杀。]]></description><category></category></item><item><title><![CDATA[【RAG】Milvus 混合检索参数调优：ef / candidate_k / final_k 详解]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161568394</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161568394</guid><author>tr6666</author><pubDate>Sun, 31 May 2026 15:51:19 +0800</pubDate><description><![CDATA[本文详细介绍了Milvus混合检索中的三个关键调优参数：ef、candidate_k和final_k。final_k是最终返回结果数，candidate_k是每路检索的候选条数，ef控制HNSW算法的搜索范围。三者呈层级关系：ef≥candidate_k≥final_k。文章通过代码示例展示了参数的实际应用，解释了candidate_k需要大于final_k的原因（防止优质结果被遗漏），并深入分析了ef在HNSW图搜索中的工作机制。最后给出了参数调优的经验值（如ef≈2*candidate_k）和使用注意事]]></description><category></category></item><item><title><![CDATA[【RAG】召回（Retrieval）与重排（Rerank）核心技术要点汇总]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161568341</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161568341</guid><author>tr6666</author><pubDate>Sun, 31 May 2026 15:48:25 +0800</pubDate><description><![CDATA[本文总结了RAG系统中召回（Retrieval）与重排（Rerank）的核心技术要点。召回阶段采用双塔模型快速筛选候选文本（关注查全率），重排阶段使用交叉编码器进行深度语义排序（关注查准率）。企业级部署可选择微服务化方案或商业化API服务。生产环境应采用多级漏斗架构，并注意截断机制、降级策略和安全合规问题。关键点在于平衡效率与精度，确保系统的高性能和可靠性。]]></description><category></category></item><item><title><![CDATA[【RAG】文本切片（Chunking）参数设置指南]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161568243</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161568243</guid><author>tr6666</author><pubDate>Sun, 31 May 2026 15:45:09 +0800</pubDate><description><![CDATA[RAG文本切片参数设置指南摘要 检索增强生成(RAG)系统中，文本切片参数chunk_size和chunk_overlap的设置直接影响检索效果和回答质量。关键设置原则包括： 参数作用：块大小决定信息粒度，重叠大小保障上下文连贯性 设置依据：需平衡大模型限制、文本类型和Embedding模型能力 典型配置： 叙事型文本：500-800字块+20-25%重叠 独立条目：100-300字块+10%重叠 代码类：按结构切分，几乎不重叠 优化建议：以实际检索召回率为评估标准，避免极端切分，进行多组对比测试 最佳参数]]></description><category></category></item><item><title><![CDATA[【向量数据库】Milvus 稠密与稀疏向量核心解析]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/161367314</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/161367314</guid><author>tr6666</author><pubDate>Sun, 24 May 2026 17:31:05 +0800</pubDate><description><![CDATA[本文解析了Milvus中稠密向量与稀疏向量的核心概念与应用。稠密向量擅长语义理解，表现为固定长度的高维浮点数组；稀疏向量则专注于精准字面匹配，采用权重矩阵结构。文章详细阐述了L2、COSINE和IP三种距离度量方式的适用场景，以及归一化带来的性能优化。特别强调了BM25稀疏向量的抗噪机制和多路混合检索的实现逻辑，包括Python代码示例。最后指出生产环境中必须保持模型一致性，并提供了不同业务场景下的推荐检索方案和架构建议。]]></description><category></category></item><item><title><![CDATA[【Redis】三种缓存问题（穿透、击穿、双删）的 Golang 实践]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/151836688</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/151836688</guid><author>tr6666</author><pubDate>Tue, 21 Oct 2025 18:53:54 +0800</pubDate><description><![CDATA[本文介绍了Redis缓存三大问题（穿透、击穿、双删）的Golang解决方案。针对缓存穿透问题，通过缓存空值和布隆过滤器来防护无效查询；针对缓存击穿问题，采用互斥锁机制确保热点key失效时只有一个请求能访问数据库；针对缓存一致性问题，使用延迟双删策略保证数据同步。文中提供了用户查询和商品查询两个具体场景的Golang实现示例，包含完整的代码实现和关键逻辑说明，如空值缓存有效期设置、互斥锁控制等核心要点，帮助开发者快速落地到实际业务中。]]></description><category></category></item><item><title><![CDATA[【Redis】Scan 命令使用教程：高效遍历海量数据]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/151411003</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/151411003</guid><author>tr6666</author><pubDate>Wed, 10 Sep 2025 19:12:24 +0800</pubDate><description><![CDATA[Redis Scan 命令是高效遍历海量数据的关键工具，相比阻塞式的 KEYS 命令具有显著优势。Scan 采用游标迭代机制，支持分批、非阻塞遍历，适用于统计、清理、校验等场景。其实现基于哈希表遍历，通过渐进式 rehash 兼容扩容情况，保证数据完整性。使用时可结合 MATCH 模式筛选和 COUNT 参数优化性能，但需注意游标传递和可能的重复结果。建议在从库执行高频遍历操作，并适当调整 count 值以平衡效率与资源消耗，是处理大规模 Redis 数据的首选方案。]]></description><category></category></item><item><title><![CDATA[【Redis】布隆过滤器使用介绍：高效判重的利器]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/150574392</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/150574392</guid><author>tr6666</author><pubDate>Thu, 21 Aug 2025 09:45:00 +0800</pubDate><description><![CDATA[文章摘要 Redis 布隆过滤器是一种高效的空间节约型概率数据结构，用于快速判断元素是否可能存在于集合中。其核心优势在于极低的空间消耗和O(1)查询速度，但存在一定误判率（不会漏判）。适用于缓存穿透防护、爬虫去重等场景。Redis通过RedisBloom模块提供布隆过滤器功能，支持动态扩容和参数配置。使用时需注意其无法删除元素和需预设容量的特点。实践案例展示了如何用布隆过滤器防止缓存穿透，先过滤无效请求再查询缓存和数据库。]]></description><category></category></item><item><title><![CDATA[【Redis】ZSET 使用介绍：有序集合的进阶应用]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/150337150</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/150337150</guid><author>tr6666</author><pubDate>Wed, 13 Aug 2025 09:20:47 +0800</pubDate><description><![CDATA[本文介绍了Redis中的有序集合(ZSET)这一数据类型，它兼具集合的唯一性和有序列表的特性。ZSET通过跳跃表和哈希表协同工作，实现高效的元素存储与排序。文章详细讲解了ZSET的核心特性、数据结构原理、常用命令(如ZADD、ZSCORE、ZRANGE等)以及高级应用场景(排行榜、延时任务等)，并提供了使用注意事项。ZSET凭借其有序存储和高效查询的特点，是处理排名、计分等场景的利器，合理使用可以显著提升业务系统性能。]]></description><category></category></item><item><title><![CDATA[【Golang】pprof 使用介绍：从数据采集到可视化分析]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/150262727</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/150262727</guid><author>tr6666</author><pubDate>Tue, 12 Aug 2025 09:24:56 +0800</pubDate><description><![CDATA[本文全面介绍了Go语言性能分析工具pprof的使用方法。pprof通过采样和插桩技术收集CPU、内存、goroutine等运行时数据，支持命令行和Web可视化分析。核心使用流程包括：通过net/http/pprof集成数据接口，用curl命令采集性能文件，再结合go tool pprof生成火焰图、调用图等可视化结果定位性能瓶颈。pprof具有轻量集成、灵活采集和直观分析的特点，是Go开发者优化程序性能的必备工具。]]></description><category></category></item><item><title><![CDATA[【Golang】WaitGroup 实现原理]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/144184810</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/144184810</guid><author>tr6666</author><pubDate>Mon, 02 Dec 2024 11:57:45 +0800</pubDate><description><![CDATA[在并发编程中，协调多个 goroutine 的执行顺序和同步是一个常见的需求。Golang 提供了 sync.WaitGroup 来简化这一过程。WaitGroup 允许主 goroutine 等待一组 goroutine 完成工作。本文将详细介绍 sync.WaitGroup 的实现原理及其使用方法，帮助读者更好地理解和应用这一工具。1. 什么是 sync.WaitGroupsync.WaitGroup 是 Golang 标准库中的一个同步原语，用于等待一组 goroutine 完成。]]></description><category></category></item><item><title><![CDATA[【Golang】Channel的ring buffer实现]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/143677627</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/143677627</guid><author>tr6666</author><pubDate>Mon, 11 Nov 2024 11:57:22 +0800</pubDate><description><![CDATA[在并发编程中，channel 是 Golang 提供的一种用于 goroutine 之间通信的机制。channel 的底层实现是一个环形缓冲区，这种设计使得 channel 在处理大量数据传输时能够保持高效。本文将详细介绍 Golang 中 channel 的环形缓冲区实现原理，帮助读者更好地理解 channel 的工作机制。1. 环形缓冲区的基本概念环形缓冲区（ring buffer），也称为循环缓冲区，是一种固定大小的缓冲区，逻辑上将其首尾相连形成一个环。当缓冲区满时，新的数据会覆盖最旧的数据。]]></description><category></category></item><item><title><![CDATA[【Golang】Golang的CSP模型介绍]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/143567179</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/143567179</guid><author>tr6666</author><pubDate>Wed, 06 Nov 2024 12:01:57 +0800</pubDate><description><![CDATA[在现代软件开发中，并发编程是提高程序性能和响应速度的重要手段。传统的并发编程通常依赖于线程和锁机制，容易导致复杂的同步问题和死锁。Golang 采用了 CSP（Communicating Sequential Processes，通信顺序进程）并发模型，通过 goroutine 和 channel 提供了一种更为简洁和安全的并发编程方式。本文将详细介绍 Golang 的 CSP 并发模型及其使用方法。1. 什么是 CSP 模型。]]></description><category></category></item><item><title><![CDATA[【Golang】Golang的Map的底层原理]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/143480757</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/143480757</guid><author>tr6666</author><pubDate>Mon, 04 Nov 2024 11:56:27 +0800</pubDate><description><![CDATA[在 Golang 编程中，map 是一种常用的数据结构，用于存储键值对。map 提供了高效的查找、插入和删除操作，是开发者在日常编程中不可或缺的工具。本文将详细介绍 Golang 中 map 的底层原理，帮助读者更好地理解 map 的实现机制和使用方法。1. map 的基本概念map 是一种哈希表（Hash Table），通过键（key）来快速查找对应的值（value）。在 Golang 中，map 的定义和使用非常简单fmt.Println(m["foo"]) // 输出：422. map 的底层结构。]]></description><category></category></item><item><title><![CDATA[【Golang】Golang的Map的线程安全问题]]></title><link>https://blog.youkuaiyun.com/tr6666/article/details/143428280</link><guid>https://blog.youkuaiyun.com/tr6666/article/details/143428280</guid><author>tr6666</author><pubDate>Fri, 01 Nov 2024 11:56:09 +0800</pubDate><description><![CDATA[在 Golang 编程中，map 是一种常用的数据结构，用于存储键值对。然而，Golang 的 map 在并发访问时是线程不安全的。如果多个 goroutine 同时读写同一个 map，可能会导致数据竞争和程序崩溃。本文将详细介绍 Golang 中 map 的线程不安全性，并提供一些解决方案，帮助开发者在并发编程中正确使用 map。1. 什么是线程不安全线程不安全是指在多线程（或多 goroutine）环境下，多个线程同时访问和修改共享数据时，可能会导致数据不一致或程序崩溃。]]></description><category></category></item></channel></rss>