<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ah68356的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ah68356</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ah68356]]></copyright><item><title><![CDATA[面试八股题目]]></title><link>https://blog.youkuaiyun.com/ah68356/article/details/164189996</link><guid>https://blog.youkuaiyun.com/ah68356/article/details/164189996</guid><author>ah68356</author><pubDate>Fri, 04 Sep 2026 20:28:17 +0800</pubDate><description><![CDATA[什么是 ThreadLocal全称（线程局部变量），功用非常简单，使用场合主要解决多线程中数据因并发产生不一致问题。ThreadLocal 为每一个线程都提供了变量的副本，使得每个线程在某时间访问到的并不是同一个对象。这样就隔离了多个线程对数据的数据共享，这样的结果是耗费了内存。但大大减少了线程同步所带来性能消耗，也减少了线程并发控制的复杂度。同一个线程内共享数据，线程之间数据隔离。注意：ThreadLocal 不能使用原子类型，只能使用 Object 类型。应用场景。]]></description><category></category></item><item><title><![CDATA[AI面试可能问题]]></title><link>https://blog.youkuaiyun.com/ah68356/article/details/161201160</link><guid>https://blog.youkuaiyun.com/ah68356/article/details/161201160</guid><author>ah68356</author><pubDate>Sat, 01 Aug 2026 21:21:16 +0800</pubDate><description><![CDATA[对于正在发生写入的对象，可以记录重建开始时的版本或时间点，先全量统计，再把重建期间的增量事件补上，避免覆盖新写入。]]></description><category></category></item><item><title><![CDATA[Ragent面试题]]></title><link>https://blog.youkuaiyun.com/ah68356/article/details/162426268</link><guid>https://blog.youkuaiyun.com/ah68356/article/details/162426268</guid><author>ah68356</author><pubDate>Sat, 01 Aug 2026 21:07:05 +0800</pubDate><description><![CDATA[你提到“基于 LLM 实现 Query Rewrite 与多问题拆分，并结合术语映射缓存，把用户表达归一化为标准业务问题”。假设用户问：“我们系统里那个支持外部工具调用的知识库检索，超时以后为啥还能兜底回答？另外召回不准的时候你们怎么优化的？请你从角度讲清楚：这个问题进入系统后，Query Rewrite、术语映射、多问题拆分、意图识别、检索和兜底分别会怎么处理？这个问题进来以后，我不会直接拿原始 Query 去检索，而是先做一层标准化处理。比如用户说“外部工具调用”，系统会映射到我们内部的MCP；]]></description><category></category></item><item><title><![CDATA[Ragent 项目笔记(一)]]></title><link>https://blog.youkuaiyun.com/ah68356/article/details/162274566</link><guid>https://blog.youkuaiyun.com/ah68356/article/details/162274566</guid><author>ah68356</author><pubDate>Sat, 27 Jun 2026 16:17:01 +0800</pubDate><description><![CDATA[Ragent 项目包含三项核心底层设计：一是搭建分层自定义异常体系，异常绑定错误码，由全局异常处理器统一处理并返回标准结果，规范前后端交互；二是利用 MyBatis-Plus 实现实体映射与公共字段自动填充，自动完成主键、时间、逻辑删除等字段维护；三是基于 TransmittableThreadLocal 搭建用户上下文容器，配合拦截器与线程池处理，同步同步及异步场景的登录信息传递。三者将底层基建逻辑统一收口，简化业务代码，聚焦业务核心，提升项目的可维护性与扩展性。]]></description><category></category></item><item><title><![CDATA[后端开发学习知识点（一）]]></title><link>https://blog.youkuaiyun.com/ah68356/article/details/162278497</link><guid>https://blog.youkuaiyun.com/ah68356/article/details/162278497</guid><author>ah68356</author><pubDate>Wed, 24 Jun 2026 21:00:38 +0800</pubDate><description><![CDATA[（1）紧凑构造器：做参数校验（最常用）用来在构造时做参数判断，]]></description><category></category></item><item><title><![CDATA[知光项目学习ing]]></title><link>https://blog.youkuaiyun.com/ah68356/article/details/160554272</link><guid>https://blog.youkuaiyun.com/ah68356/article/details/160554272</guid><author>ah68356</author><pubDate>Sun, 03 May 2026 17:01:34 +0800</pubDate><description><![CDATA[saveCode 会用 scene + identifier 生成唯一 key，格式是 auth:code:{scene}:{identifier}，然后用 Redis Hash 存储 code、maxAttempts、attempts，并设置验证码 TTL。JWT 这里不是“加密/解密”，而是“签名/验签”。register：校验是否同意协议，校验验证码，创建用户，若传入密码则进行密码策略校验和 BCrypt 哈希，然后签发 token pair，保存 refresh token 白名单，记录审计日志。]]></description><category></category></item></channel></rss>