- 博客(39)
- 收藏
- 关注
原创 从 Q/K/V 到 KV Cache 与缓存命中:大模型推理缓存机制详解
本文以 decoder-only 自回归 Transformer 为例,详解 Q/K/V 的动态计算机制与 KV Cache 的作用。模型参数固定,Q/K/V 在运行时根据隐藏状态实时生成;每层需计算所有 token 输出,下层依赖上层完整序列。KV Cache 缓存历史 token 的 K/V,供新 token 查询,提升生成效率。服务中的“缓存命中”指跨请求复用相同前缀的每层 K/V,显著降低首 token 延迟,提升吞吐。关键在于:缓存的是历史 K/V,非 Q 或输出,且要求前缀完全一致才能命中。
2026-09-23 19:35:55
266
原创 从 TaskRegistry 到大厂架构:Python 高并发流式任务调度实战
理解 Python 并发模型:GIL 的边界、线程与协程各自的适用场景设计 TaskRegistry:一个基于thread_id的任务注册表,实现并发拦截、真取消和自动清理心跳保活与断点续流的非侵入式心跳,LangGraph checkpoint 的状态恢复分布式取消:Redis Pub/Sub 跨 Worker 广播 + 进程重启孤儿扫描大厂演进方向:存储计算分离、分片调度、可观测性体系建设核心设计哲学并发模型选型。
2026-09-10 00:29:58
96
原创 LangGraph 架构辨析:从 Checkpoint 到流式传输的工程实践
LangGraph 是一个功能强大的编排框架,但它的强大是有边界的。Checkpoint 面向系统故障恢复,而非用户主动中断。后者需要独立的意图判断与状态覆写逻辑。多节点流程图适合“规则驱动”的固定流程,而客服对话等开放式场景应由 ReAct 单节点主导。两种范式可以嵌套共存:外层 ReAct 负责对话,内层多节点图作为 Tool 负责固定流程。流式输出不会自动穿透工具边界,需要在外层统一捕获事件并转发给前端,或采用“工具静默执行、外层流式呈现”的简洁架构。
2026-09-09 21:34:46
193
原创 Agent会话持久化:事件日志重放与状态快照Checkpoint深度解析
JSONL(JSON Lines),每行是一条独立合法JSON对象,换行符\n作为记录分隔符;整个文件不是JSON数组,只支持逐行解析,不支持整体反序列化读取。{"role":"user","content":"实现登录接口","timestamp":"2026‑09‑04T10:00:00"}{"role":"assistant","tool_calls":[{"name":"AskUserQuestion","arguments":{"question":"确认数据库类型"}}]}
2026-09-04 16:57:22
223
原创 MySQL索引下推(ICP)与覆盖索引
SQL 明明命中了索引,但是扫描行数多、IO 高、速度慢。回表次数太多过滤逻辑太晚(在 Server 层过滤)MySQL 5.6 引入的ICP(Index Condition Pushdown,索引下推)尽量把过滤动作压到索引层,减少回表,大幅降低 IO。索引下推 和 覆盖索引,本文彻底区分二者,并配套完整 Explain 执行计划解读。将 WHERE 条件中,仅依靠索引字段就能判定的过滤逻辑,从 MySQL Server 层下推到存储引擎层,在索引扫描阶段提前过滤,减少回表次数。查询需要的所有返回列。
2026-08-28 14:09:27
347
原创 PostgreSQL+Milvus分层存储架构:双写一致性与CAP理论取舍分析
在大模型RAG检索、智能Agent、知识库问答等AI应用架构中,结构化业务数据与非结构化向量数据的分层存储已成为工业界主流设计方案。多数中大型项目会采用「PostgreSQL存储结构化业务数据 + Milvus存储向量特征数据」的双库架构,而非直接使用PostgreSQL的pgvector插件实现单库存储。该架构的核心优势在于业务读写负载与向量检索负载的资源隔离、海量向量数据的高性能检索与水平扩容能力。但双库独立部署的设计,彻底打破了单机数据库的ACID事务边界,衍生出跨库双写数据一致性核心问题。
2026-08-28 03:05:24
222
原创 Playwright自动化测试实战:从登录态保留到JWT鉴权完整指南
Playwright为Web自动化测试提供了完善的登录状态管理机制,通过方法可以轻松实现跨测试用例的登录态复用,显著提升测试执行效率。同时,其内置的API请求能力为处理JWT鉴权场景提供了统一且便捷的技术方案。在实际工程实践中,测试人员应根据系统的具体鉴权实现方式(Cookie vs Header)灵活选择状态管理策略,并遵循安全规范妥善处理凭证数据。理解并掌握这些核心机制,是构建高效、稳定的自动化测试体系的重要基础。
2026-08-25 21:48:02
217
原创 Element UI 表格合并单元格完全指南:从原理到实战
在后台管理系统的开发中,表格数据展示是最常见的需求之一。而当数据需要按某种维度分组展示时,合并单元格就成了提升信息层级清晰度的利器。本文将深入剖析 Element UI 的el-table组件中的核心原理,并通过多个实例带你掌握从简单到复杂的合并场景。是el-table提供的一个函数属性,它接收一个方法,该方法会在表格渲染每个单元格时被调用,并返回当前单元格的合并规则。这个机制类似于给表格提供了一份“布局说明书”。数据与规则分离:预处理方法独立封装,保持逻辑简洁。使用对象返回值比数组语义更清晰。善用。
2026-08-25 21:46:57
178
原创 关于Docker Desktop导致C盘空间异常占用的排查与根治方案
摘要: Windows系统C盘空间异常减少问题常见于Docker Desktop用户,主要由WSL2崩溃产生的.dmp转储文件堆积在%LOCALAPPDATA%\Temp\wsl-crashes目录所致。应急方案可通过手动删除或执行PowerShell命令清理文件;长期解决方案需创建.wslconfig文件并禁用崩溃转储功能。建议同时检查内存限制、清理Docker缓存并更新软件版本,以彻底解决问题并提升系统稳定性。
2026-08-20 00:19:49
309
原创 大模型 API 的范式转移:从 Chat Completions 到 Responses API
摘要: OpenAI Responses API 的推出标志着大模型接口从"对话"向"任务执行"的范式转变。相比传统的无状态 Chat Completions API,Responses API 通过服务端状态管理、内置工具系统和混合执行环境,为构建 AI Agent 提供了更强大的运行时支持。文章详细对比了三代 API 的核心差异,解析了内置工具(如 Web Search、Shell 等)的运行位置与权限边界,并揭示了 Codex/Claude Code 等编程助手通过本地代理模式实现文件操作的安全机制。
2026-08-14 16:36:53
468
原创 Windows 端口幽灵占用问题深度剖析:从现象到根治
Windows 平台下“无进程占用却端口被锁”的现象,本质上并非软件缺陷,而是Hyper-V / WSL2 / Docker 所依赖的 WinNAT 端口预留机制与用户应用程序之间产生的系统级资源竞争。netstat类工具仅能查询用户态绑定信息,无法揭示内核态预留状态,这正是排查困难的根源所在。通过本文提供的持久化配置方案,开发者可以将常用开发端口明确标记为系统预留或调整动态端口范围,从而彻底规避此类冲突。
2026-07-08 10:24:44
327
原创 Git 重置模式详解:四种重置方式的原理与应用场景
git reset的四种模式分别对应不同粒度的状态重置需求。软重置以最温和的方式保留全部修改于暂存区,混合重置适合重新整理提交内容,保留重置在冲突场景下提供了一定保护,而硬重置则是一把锋利但危险的刀——仅在确认放弃所有改动时方可谨慎使用。理解这些差异,不仅能帮助开发者避免误操作导致的数据丢失,也能在版本历史的精细化管理中做到游刃有余。建议在实际操作前,先通过git status确认当前工作区与暂存区状态,再根据需求选择恰当的重置模式。
2026-06-10 17:45:00
320
原创 已被 Git 追踪的本地修改文件如何实现临时忽略
本文介绍了Git中临时忽略已追踪文件修改的方法。核心解决方案是使用git update-index --assume-unchanged命令,该命令会告知Git假设文件未被修改,从而在本地开发时忽略对配置、调试等文件的变更检测。文章详细说明了命令用法、适用场景及局限,重点分析了分支切换时可能出现的文件覆盖问题及对应处理方案,并比较了与--skip-worktree的区别。建议仅在必要时使用该临时方案,优先考虑.gitignore和配置文件模板等更规范的解决方案,同时在分支切换前执行git stash以避免数
2026-06-10 10:51:05
226
原创 双网卡内外网同时访问
本文分享了Windows双网卡同时访问内外网的配置经验。作者通过解决实验室电脑的网络问题,总结出一套有效方案:保留内网静态IP和网关的同时,通过合理配置路由表实现内外网并行访问。关键步骤包括删除冲突的默认网关、设置外网默认路由(metric 10)、添加覆盖10.0.0.0/8的内网静态路由(metric 5),并提供了验证方法和一键配置脚本。文章特别强调了避免常见错误配置,如双默认网关冲突、内网路由范围不足等,最终实现了稳定访问内网服务器和互联网的需求,解决了原先网络随机断开、内网服务器无法访问的问题。
2026-05-19 15:29:04
759
原创 Kaggle API 本地上传数据集全程踩坑实录|Windows 从认证报错、401 无解到最终解决
本文详细记录了使用Kaggle CLI上传数据集时遇到的认证问题及解决方案。主要问题包括:认证失败、用户名缺失、OAuth登录后仍401未授权等。关键发现是新版Kaggle CLI已弃用传统kaggle.json认证方式,强制要求OAuth网页登录。解决步骤包括:删除旧配置文件、重新OAuth授权、确保文件路径正确。特别提醒Windows用户注意文件后缀隐藏问题,并强调OAuth登录成功后仍需检查是否残留旧密钥文件。最终通过清除冲突配置成功实现数据集上传,为类似问题提供了完整的排查思路。
2026-05-12 14:24:01
393
原创 Git 暂存区与版本回退实用指南(含冲突处理)
本文详细介绍了Git暂存区操作与版本回退的实用技巧。主要内容包括:1)暂存区退出操作(单个文件退出和批量退出);2)版本回退的三种模式(--soft保留暂存和修改、--mixed保留修改但丢弃暂存、--hard危险模式);3)冲突处理全流程(查看冲突、修改内容、标记解决和提交)。文章强调--mixed模式适合日常使用,警告慎用--hard模式,并解答了常见疑问,帮助开发者掌握基础Git操作,避免代码丢失。核心技巧是理解不同操作对暂存状态和本地修改的影响。
2026-04-08 22:31:47
379
原创 server error - ports are not available: exposing port TCP 0.0.0.0:11434 -> 127.0.0.1:0: listen tcp 0
winnat服务锁定了 11434 端口的绑定权限,导致 Docker 容器无法占用该端口;命令作用:重启winnat释放端口锁定,让容器能正常绑定 11434 端口;优化方案:长期建议修改容器端口映射(如 11435:11434),避免和winnat抢占端口资源。
2026-03-06 20:55:37
499
原创 Maven 编译的settings配置和pom、idea配置关系
Maven编译分为两个层面:项目编译和Maven工具运行。项目编译优先遵循pom.xml配置,确保编译结果一致性;若无配置则读取settings.xml。Maven工具运行必须依赖JAVA_HOME环境变量来启动。在IDEA中,Maven编译优先使用项目配置的JDK版本,可脱离系统JAVA_HOME,但仍需依赖IDEA内部配置的JDK路径。IDEA会自动覆盖Maven配置,使编译版本与项目JDK一致,提升开发便捷性。与命令行Maven相比,IDEA版本不依赖系统JAVA_HOME,但都需要JDK环境支持。
2026-01-15 14:17:02
974
原创 docker desktop创建ollama容器端口绑定失败
net start winnat // 重新启动WinNAT服务。net stop winnat // 停止WinNAT服务。
2025-10-20 16:25:33
519
原创 docker desktop的容器间通信
创建自定义网络将所有的容器添加到网络中查看容器是否添加到网络中如此设置,docker之间就可以通过 url: jdbc:postgresql://postgres:5432/ai容器名通信。
2025-10-20 14:29:17
687
原创 在Docker网络中,同一网络下的容器可以直接通过内部端口通信,无需经过主机端口映射,这是由Docker的网络隔离和内部通信机制决定的。
隔离性:容器间通过网络命名空间隔离,无需暴露内部端口到宿主机。高效性:容器间通信不经过宿主机网络栈,减少了网络转发开销。安全性:内部端口不暴露到外部,降低了安全风险。因此,在容器化部署中,推荐通过Docker网络实现服务间通信,而非依赖主机端口映射。
2025-06-21 17:10:20
674
原创 链接docker容器mysql2002 Can‘t connect to server on ‘192.168.10.100‘(10060)
问题:虚拟机重启后,由于这个网络之前在我的虚拟机已经存在了,导致本地远程连接不上mysql容器。解决:最后重新新建了网络,重新安装mysql使其连接上这个给网络成功连接上了。
2025-06-18 15:24:52
269
原创 Integer[]::new方法引用
方法引用是 Java 8 引入的一种简化 Lambda 表达式的语法糖,它允许你通过方法的名称直接引用已有的方法或构造函数。方法引用可以使代码更加简洁易读,尤其是在使用函数式接口时。这种写法是 Java 方法引用中构造函数引用的一种具体应用,遵循了的语法规则,用于引用数组的构造函数。通过这种方式,可以简洁地创建指定类型和长度的数组。
2025-04-25 14:10:51
269
原创 Java实例对象在堆内存和方法区中存储的内容
堆内存负责存储对象的和String方法区(JDK8+ 称为)存储类的,与具体实例无关,供所有实例共享。publicfinalstatic通过newJVM 根据new的类名,在方法区中查找该类的元数据。若未加载,则触发类加载过程。根据方法区中记录的类结构信息(如对象大小),在堆中划分一块内存空间。填充 Mark Word(初始哈希码、GC 年龄等)和类型指针(指向方法区的类元数据)。根据方法区中字段表的偏移量,将成员变量初始化为默认值(如int初始化为 0,引用初始化为null从方法区中获取。
2025-03-13 14:42:48
2007
原创 Jackson在反序列化JSON为java对象时需要无参构造函数
Jackson 在反序列化 JSON 数据为 Java 对象时,默认需要一个无参构造函数。类中只有一个带参数的构造函数,没有无参构造函数,这会导致 Jackson 无法创建。类中添加无参构造函数。可以手动添加,也可以使用 Lombok 的。
2025-03-11 18:19:17
1049
原创 Java 开发中组(Group)和工件(Artifact)
概念作用示例Group定义组织或项目的命名空间org.apachecom.googleArtifact标识具体的模块或产物gson关系Group是逻辑上的分类,Artifact是具体的实现。两者共同确保依赖的唯一性,是构建工具管理依赖的核心机制。
2025-03-11 16:16:32
1255
原创 Class 对象的核心组成
Class对象是元数据的访问入口:核心是指向方法区元数据的指针。附加信息提升效率:缓存类名、类加载器引用等,优化高频操作。设计平衡:兼顾性能、安全性和灵活性,支撑反射、动态代理等高级特性。理解Class对象的结构,有助于深入掌握 Java 反射、类加载机制及内存模型,为性能调优和复杂系统设计打下基础。
2025-03-08 12:12:09
1674
原创 .Class文件和Class对象
Class对象是类的运行时元数据载体,由 JVM 在类加载阶段创建。每个类对应唯一Class对象,存储了类的完整结构信息。反射、动态代理、注解处理等高级特性均依赖Class对象。通过Class对象,Java 实现了“动态语言”特性(如运行时类型检查、方法调用)。
2025-03-08 12:11:54
2207
原创 是什么是类加载
在 Java 中,是 Java 虚拟机(JVM)将类的字节码文件(.class)加载到内存,并完成类的初始化(如静态变量赋值、静态代码块执行等)的过程。类加载是 Java 程序运行的基础机制,其核心目的是为类的首次使用做准备。
2025-03-08 12:11:40
742
原创 Static关键字修饰的属性创建时间
static属性的初始化与对象无关,它是类级别的成员,生命周期从类加载开始,到类被卸载结束。理解这一点是避免代码设计错误(如误用静态属性导致数据共享问题)的关键。
2025-03-08 12:11:07
499
原创 Java的方法区在哪
在Java中,**方法区(Method Area)**是Java虚拟机(JVM)内存结构的一部分,用于存储类的结构信息。在JDK 7及之前的版本中,方法区是一个独立的内存区域,通常被称为**“永久代”(Permanent Generation,简称PermGen)**。它是一个固定大小的内存区域,用于存储类的结构信息。方法区是JVM内存结构中的一个独立区域,与堆内存(Heap Memory)和栈内存(Stack Memory)并列。方法区是所有线程共享的内存区域,JVM通过。
2025-03-08 12:01:00
687
原创 JDK动态代理与CGLIB动态代理
•代码可维护性:优先使用接口+JDK代理,符合面向接口编程原则。•灵活性:需代理第三方库或无接口类时选择CGLIB。•性能关键场景:高并发方法调用推荐CGLIB+FastClass机制。
2025-03-06 13:22:57
513
原创 Spring 注解中 @Configuration 和 @Component 的区别
Component通过组件扫描机制自动发现并注册 Bean。Spring 会扫描指定包路径下带有@Component及其派生注解的类,将它们实例化并注册到容器中。优点是简单方便,适合快速开发和小型项目。缺点是不够灵活,对于一些复杂的 Bean 创建逻辑难以处理。通过@Bean注解手动定义 Bean。可以在配置类中使用 Java 代码来创建和配置 Bean,支持复杂的初始化逻辑和依赖注入。优点是灵活性高,可以根据具体需求定制 Bean 的创建过程。缺点是代码量相对较多,配置相对复杂。
2025-03-06 13:02:20
722
原创 final关键字
final通过限制引用可变性保障代码稳定性,但对象内容是否可变取决于具体实现。合理使用final可提升代码可读性、线程安全性和性能,但需注意其作用边界,避免误用导致灵活性下降。
2025-03-05 19:44:32
593
原创 VMware Workstation中Centos的ip地址和VMware Virtual Ethernet Adapter for VMnet8的IP关系
VMware® Workstation的虚拟网络编辑器给 VMnet8设置的ip网关是192.168.10.2,centos7的ip为19.168.10.100,将VMware Virtual Ethernet Adapter for VMnet8的ip设为192.168.10.1(自动IP也行)当CentOS 7虚拟机(IP地址为192.168.10.100)想要访问百度时,数据会按照以下步骤进行转发
2025-03-04 20:08:45
808
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅