这篇可以接着 Ai Agent概念扫盲 阅读。想把 ACP、A2A、LSP 和 Code Mode 一起弄清楚,可以看 工具与协议专题。 最近看 Agent 相关的项目,经常会同时碰到三个词,Function Calling、MCP 和 Skill。 它们看起来都和「让模型做事」有关,于是很容易混在一起。有人把 MCP 当成更高级的 Function Calling,也有人觉得有了 Skill 就
本文侧重错误治理。完整的资料准备、分块、Embedding、BM25、重排和 GraphRAG,可以先读 RAG 概念专题;整个系列入口是 Ai Agent概念扫盲。 大模型最麻烦的时刻,不是它说不知道。 而是它给出一个语气笃定、结构完整、甚至带着出处的答案,等你真的去查,才发现内容根本不存在。 这种现象通常被叫作幻觉。 模型不是在主观撒谎。它的核心任务是根据上下文预测接下来最可能出现的内容。当可
cookie、session、token cookie 服务端发给客户端,交给客户端保存的数据,每次请求,客户端带上这些数据,服务端就读取这些数据,鉴别身份。 完全由客户端存储,和域名绑定,且不可跨域。 数据大小一般有限制。 容易被伪造,且客户端清除数据就丢失了 session 服务端将客户端的信息保存在服务端,然后将一个sessionId传给客户端,客户端保存起来,下次请求携带sessionId
MySQL锁 全局锁: flush tables with read lock,执行此条命令,整个数据库处于只读状态 unlock tables, 释放全局锁,会话断开时,也会自动释放全局锁 一般用来全库逻辑备份 表级锁:MySQL 里面表级别的锁有这几种: - - 表锁:通过lock tables 语句可以对表加表锁,表锁除了会限制别的线程的读写外,也会限制本线程接下来的读写操作。 - 元数据锁
垃圾收集器(CMS-G1-ZGC) CMS 垃圾收集器 JDK1.5时引入,JDK9被标记弃用,JDK14被移除 CMS(Concurrent Mark Sweep,并发标记清除)收集器是以获取最短回收停顿时间为目标的收集器(追求低停顿),它在垃圾收集时使得用户线程和 GC 线程并发执行,因此在垃圾收集过程中用户也不会感到明显的卡顿。 - 初始标记:Stop The World,仅使用一条初始标记
类加载机制/类加载器 类加载的完整流程(生命周期) 类从加载到卸载经历 5 个阶段,其中加载、验证、准备、初始化、卸载的顺序是固定的,解析阶段可能与初始化交叉进行: 1. 加载(Loading) - 任务:通过类的全限定名(如 )获取其字节码数据,并生成 对象。 - 来源:字节码可来自本地文件、网络、数据库、动态生成(如 CGLib)等。 - 关键组件:类加载器(ClassLoader)负责此阶段
MVCC多版本并发控制 MVCC 的目标:让读操作尽量不阻塞写操作,写操作也尽量不阻塞读操作。 核心机制: MVCC主要依赖以下机制实现: 数据库行记录中的隐藏字段:最近修改本行数据的事务id、回滚指针指向本行数据的上个版本(其实是指向undo,通过undo计算上一个版本) •undo log:回滚日志,在insert、delete、update时产生,记载了与操作相反的操作,比如delete操作
SpringMVC执行流程 请求先到 DispatcherServlet(前端控制器),它负责调度 HandlerMapping → HandlerAdapter → Controller → ViewResolver → View。 Spring MVC 采用前端控制器模式,所有请求先进入 DispatcherServlet。DispatcherServlet 通过 HandlerMapping
MySqL事务隔离级别 事务的特性: 原子性:事务要么全部提交成功要么全部失败 一致性:事务操作前和操作后具有完整性约束,数据库保持一致性状态 隔离性:事务执行时相互隔离互不影响,可以防止多个事务并发执行由于交叉执行导致的不一致 持久性:事务操作结束后修改是永久性的,即使关机故障也不会消失 MySQL InnoDB 引擎通过什么技术来保证事务的这四个特性的呢? - 持久性是通过 redo log
Redis的压缩列表ziplist到紧凑列表listpack ziplist 的结构(老版本用的) 大概长这样: 每个 里: - :前一个 entry 的长度(1 或 5 字节) - :当前 entry 是字符串还是整数,长度是多少 - :真正的数据 listpack 的结构(新版本用的) 大概长这样: 每个 里: 注意两点变化: 1. 没有 prevlen 了(不再依赖“记录前一个元素长度”来反