[{"author":"jizuiba","categories":["Git"],"content":"什么是Git Worktree？ 在一个仓库里，同时打开多个“分身”，每个分身对应不同分支。\n它有什么用呢？ 同时在多分支上工作，很适合当前 vibe coding 的形式。\n古法编码时则可以避免频繁的checkout和可能需要的stash\n基础使用 使用一个demo演示。\n1.初始化仓库 复制 bashgit init # -b main echo \u0026#34;hello\u0026#34; \u0026gt; …","cover_image":"","date":"2026-04-23","subtitle":"","summary":"什么是Git Worktree？ 在一个仓库里，同时打开多个“分身”，每个分身对应不同分支。\n它有什么用呢？ 同时在多分支上工作，很适合当前 vibe coding 的形式。\n古法编码时则可以避免频繁 …","tags":[],"title":"Git Worktree","type":"posts","url":"/posts/git-worktree/"},{"author":"jizuiba","categories":["RAG"],"content":"检索优化是在干啥？ 基础的 RAG 调用：\n复制 text用户问题 → embedding → 向量检索 → top-k → 给 LLM 可能存在的问题：\n找到不一定准 容易遗漏信息 容易拿到“看起来相关但其实不对”的内容 检索优化是让“找资料”更聪明。\n优化方式 了解收集到的 6 种方式。\n1.Top-K 优化 是什么：\n控制取多少个 chunk\n问题：\n太少 -\u0026gt; 信息不够 太多 …","cover_image":"/images/RAG.jpg","date":"2026-03-28","subtitle":"","summary":"检索优化是在干啥？ 基础的 RAG 调用：\n复制 text用户问题 → embedding → 向量检索 → top-k → 给 LLM 可能存在的问题：\n","tags":["RAG检索","ACL","Reranker"],"title":"RAG 检索优化","type":"posts","url":"/posts/rag-%E6%A3%80%E7%B4%A2%E4%BC%98%E5%8C%96/"},{"author":"jizuiba","categories":["AI","RAG"],"content":"Chunk（分块） 是什么：\n把长文档切一小段一小段，再做向量化存储。\n为什么需要它\nLLM 的上下文限制 检索时需要“精准命中片段”而不是一整片文章 例如：\n一篇10000字的文章 -\u0026gt; 切成：\n每300~500一个片段 或按段落/语义切分 关键点：\nchunk 太大 -\u0026gt; 检索不准确 chunk 太小 -\u0026gt; 语义不完整 分块策略： 1.固定长度分块 方式：\n按照 token/ …","cover_image":"/images/RAG.jpg","date":"2026-03-27","subtitle":"","summary":"Chunk（分块） 是什么：\n把长文档切一小段一小段，再做向量化存储。\n为什么需要它\nLLM 的上下文限制 检索时需要“精准命中片段”而不是一整片文章 例如：\n一篇10000字的文章 -\u0026gt; 切成 …","tags":["Chunk","overlap","ACL","Reranker"],"title":"RAG 相关的知识名词","type":"posts","url":"/posts/rag-%E7%9B%B8%E5%85%B3%E7%9A%84%E7%9F%A5%E8%AF%86%E5%90%8D%E8%AF%8D/"},{"author":"jizuiba","categories":["AI"],"content":"一、数据处理单元：Token 定义： 大模型处理文本的最小单位，通过分词器将文本切分为片段 二、临时记忆体：Context 定义：大模型每次处理任务是接收的信息总和 组成：用户问题，对话历史、当前输出Token、工具列表、System Prompt等 容量限制：由 Context Windows（上下文窗口）定义，即最大可以处理的Token数 三、互层的语义约束：Prompt 与 System …","cover_image":"","date":"2026-03-23","subtitle":"","summary":"一、数据处理单元：Token 定义： 大模型处理文本的最小单位，通过分词器将文本切分为片段 二、临时记忆体：Context 定义：大模型每次处理任务是接收的信息总和 组成：用户问题，对话历史、当前输出 …","tags":null,"title":"大模型常见的各类名词都有什么","type":"posts","url":"/posts/%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%B8%B8%E8%A7%81%E7%9A%84%E5%90%84%E7%B1%BB%E5%90%8D%E8%AF%8D%E9%83%BD%E6%9C%89%E4%BB%80%E4%B9%88/"},{"author":"jizuiba","categories":["JAVA"],"content":"什么是双亲委派模型？ 在 Java 虚拟机（JVM）中，双亲委派模型（Parent Delegation Model）是类加载器（ClassLoader）加载类时遵循的核心机制。\n其工作流程如下：\n当一个类加载器收到类加载请求时，它不会立即尝试自己加载，而是先将请求委派给父类加载器。\n父类加载器会继续向上委派，直到启动类加载器（Bootstrap ClassLoader）。\n只有当所有父类加载器都 …","cover_image":"","date":"2025-10-22","subtitle":"理解类加载机制与打破双亲委派的典型场景","summary":"什么是双亲委派模型？ 在 Java 虚拟机（JVM）中，双亲委派模型（Parent Delegation Model）是类加载器（ClassLoader）加载类时遵循的核心机制。\n其工作流程如下：\n当 …","tags":["JVM"],"title":"Java 中的双亲委派模型","type":"posts","url":"/posts/java-%E4%B8%AD%E7%9A%84%E5%8F%8C%E4%BA%B2%E5%A7%94%E6%B4%BE%E6%A8%A1%E5%9E%8B/"},{"author":"jizuiba","categories":["JAVA"],"content":"一、什么是 JWT？ JWT，全称是 JSON Web Token，是 https://datatracker.ietf.org/doc/html/rfc7519 制定的一种开放标准，用于在各方之间安全地传递声明（claims）。\n一个标准的 JWT 通常由三部分组成，使用 . 分隔：\n复制 textHeader.Payload.Signature 举个例子：\n复制 …","cover_image":"","date":"2025-09-24","subtitle":"","summary":"一、什么是 JWT？ JWT，全称是 JSON Web Token，是 https://datatracker.ietf.org/doc/html/rfc7519 制定的一种开放标准，用于在各方之间安 …","tags":["JWT","JWE"],"title":"JWT与JWE：区别、使用场景及安全实践","type":"posts","url":"/posts/jwt%E4%B8%8Ejwe%E5%8C%BA%E5%88%AB%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF%E5%8F%8A%E5%AE%89%E5%85%A8%E5%AE%9E%E8%B7%B5/"},{"author":"jizuiba","categories":["软件管理"],"content":"什么是 fnm fnm 是一款 Node.js 的版本管理工具。\n什么是 scoop Scoop 是一个适用于 Windows 操作系统 的 命令行软件包管理器，它的主要作用是让你能够 通过简单的命令快速安装、更新和管理各种常用的 Windows 软件。\n安装 scoop 在 PowerShell（终端）中运行\n复制 powershellSet-ExecutionPolicy …","cover_image":"","date":"2025-09-15","subtitle":"使用 scoop 管理 fnm","summary":"什么是 fnm fnm 是一款 Node.js 的版本管理工具。\n什么是 scoop Scoop 是一个适用于 Windows 操作系统 的 命令行软件包管理器，它的主要作用是让你能够 通过简单的命令 …","tags":["fnm","scoop"],"title":"Windows 下安装 fnm","type":"posts","url":"/posts/windows-%E4%B8%8B%E5%AE%89%E8%A3%85-fnm/"},{"author":"Jizuiba","categories":["JAVA","AI"],"content":"前提：\n笔记一中有提到如何获取 API KEY 和如何构建简单的 AI 应用\nSpring AI 相关相关依赖引入失败，请参考仓库配置\n1. 项目构建 创建一个新的工程 引入依赖 复制 xml\u0026lt;dependency\u0026gt; \u0026lt;groupId\u0026gt;org.springframework.boot\u0026lt;/groupId\u0026gt; …","cover_image":"/images/spring-ai-356.jpg","date":"2025-07-17","subtitle":"实现带对话记忆的 AI Chat 简单应用","summary":"前提：\n笔记一中有提到如何获取 API KEY 和如何构建简单的 AI 应用\nSpring AI 相关相关依赖引入失败，请参考仓库配置\n1. 项目构建 创建一个新的工程 引入依赖 复制 …","tags":["Spring AI"],"title":"Spring AI 笔记二","type":"posts","url":"/posts/spring-ai-%E7%AC%94%E8%AE%B0%E4%BA%8C/"},{"author":"Jizuiba","categories":["JAVA","AI"],"content":"1. 模型 API KEY 准备 首先需要在以下平台去获取一个API KEY\nIFLY （讯飞星火） 平台 lite 模型可以无限次调用，学习很好用 (๑•̀ㅂ•́)و✧ 也有其他的模型可供调用\n阿里云百炼平台 多个模型有免费额度\n硅基流动 有免费模型\n2. 项目构建 创建一个新的工程\n首先需要引入Maven依赖\n复制 xml\u0026lt;dependency\u0026gt; …","cover_image":"/images/spring-ai-356.jpg","date":"2025-07-16","subtitle":"实现一个简单的 AI Chat 应用","summary":"1. 模型 API KEY 准备 首先需要在以下平台去获取一个API KEY\nIFLY （讯飞星火） 平台 lite 模型可以无限次调用，学习很好用 (๑•̀ㅂ•́)و✧ 也有其他的模型可供调用\n","tags":["Spring AI"],"title":"Spring AI 笔记一","type":"posts","url":"/posts/spring-ai-%E7%AC%94%E8%AE%B0%E4%B8%80/"},{"author":"Jizuiba","categories":["Linux"],"content":"一、安装 Docker 系统 Ubuntu\n1. 更新系统软件包 复制 bashsudo apt update sudo apt upgrade -y 2. 安装依赖包（允许 apt 使用 HTTPS） 复制 bashsudo apt install \\ ca-certificates \\ curl \\ gnupg \\ lsb-release \\ -y 3. 添加 Docker 的官方 GPG 密 …","cover_image":"/images/docker.png","date":"2025-07-13","subtitle":"Docker 的安装笔记","summary":"一、安装 Docker 系统 Ubuntu\n1. 更新系统软件包 复制 bashsudo apt update sudo apt upgrade -y 2. 安装依赖包（允许 apt 使用 …","tags":["Docker"],"title":"Docker 笔记","type":"posts","url":"/posts/docker-%E7%AC%94%E8%AE%B0/"},{"author":"Jizuiba","categories":["Linux"],"content":"1 如何安装？ 1.1 直接安装在服务器上 系统 Ubuntu\n(1) 更新系统软件包 没有更新系统包可能导致后续的安装失败\n复制 bashsudo apt update sudo apt upgrade -y (2) 安装 Java（Jenkins 依赖 Java） 推荐使用 Java 11 或 Java 17（LTS 版本）。\n复制 bashsudo apt install …","cover_image":"","date":"2025-07-13","subtitle":null,"summary":"1 如何安装？ 1.1 直接安装在服务器上 系统 Ubuntu\n(1) 更新系统软件包 没有更新系统包可能导致后续的安装失败\n复制 bashsudo apt update sudo apt …","tags":["Jenkins"],"title":"Jenkins 笔记","type":"posts","url":"/posts/jenkins-%E7%AC%94%E8%AE%B0/"},{"author":"Jizuiba","categories":["JAVA","踩坑笔记"],"content":"一、错误案例 复制 java@Service @Slf4j public class MyService { @Value(\u0026#34;${resend.to}\u0026#34;) private String to; public MyService() { log.info(\u0026#34;to =\u0026gt; {}\u0026#34;, this.to); // 此时的to为null } } Spring 调用构造函数（ …","cover_image":"","date":"2025-07-10","subtitle":null,"summary":"一、错误案例 复制 java@Service @Slf4j public class MyService { @Value(\u0026#34;${resend.to}\u0026#34;) private String …","tags":["SpringBoot"],"title":"Bean生命周期管理错误案例","type":"posts","url":"/posts/bean%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%AE%A1%E7%90%86%E9%94%99%E8%AF%AF%E6%A1%88%E4%BE%8B/"},{"author":"Jizuiba","categories":["JAVA"],"content":"本地消息表是一个实现弱最终一致性的方案，通过对操作状态进行本地记录，失败时进行一定次数的重试，来保证调用时成功的可能。\n核心代码： LocalMessageDO：本地消息表\n复制 java@Builder @Getter @Setter @TableName(\u0026#34;local_message\u0026#34;) public class LocalMessageDO { /** * 主键 */ …","cover_image":"","date":"2025-05-14","subtitle":null,"summary":"本地消息表是一个实现弱最终一致性的方案，通过对操作状态进行本地记录，失败时进行一定次数的重试，来保证调用时成功的可能。\n核心代码： LocalMessageDO：本地消息表\n","tags":["分布式","一致性"],"title":"本地消息表实现","type":"posts","url":"/posts/%E6%9C%AC%E5%9C%B0%E6%B6%88%E6%81%AF%E8%A1%A8%E5%AE%9E%E7%8E%B0/"},{"author":"Jizuiba","categories":["JAVA"],"content":"一、创建 CompletableFuture CompletableFuture.supplyAsync(Supplier\u0026lt;U\u0026gt; supplier)\n异步执行一个任务并返回结果。任务会在默认的线程池（ForkJoinPool.commonPool）中执行。\n复制 javaCompletableFuture\u0026lt;String\u0026gt; future = …","cover_image":"","date":"2025-04-03","subtitle":null,"summary":"一、创建 CompletableFuture CompletableFuture.supplyAsync(Supplier\u0026lt;U\u0026gt; supplier)\n异步执行一个任务并返回结果。任务会在默 …","tags":["并发编程"],"title":"CompletableFuture常用API","type":"posts","url":"/posts/completablefuture%E5%B8%B8%E7%94%A8api/"},{"author":"Jizuiba","categories":["JAVA"],"content":"1. 引入 Druid 后是否需要自己维护连接池？ 1.1 Druid 的作用 Druid 是一个高性能的数据库连接池组件，它负责管理数据库连接的生命周期。 一旦配置好 Druid 数据源，所有的连接获取和释放都会由 Druid 自动处理。 只需要在配置文件中定义数据源的相关参数（如最大连接数、最小空闲连接数等），Druid 会根据这些参数动态管理连接池。 1.2 不需要手动维护连接池 在使用 …","cover_image":"","date":"2025-04-03","subtitle":null,"summary":"1. 引入 Druid 后是否需要自己维护连接池？ 1.1 Druid 的作用 Druid 是一个高性能的数据库连接池组件，它负责管理数据库连接的生命周期。 一旦配置好 Druid 数据源，所有的连接 …","tags":["Druid","数据库","SpringBoot"],"title":"多数据源Druid实现","type":"posts","url":"/posts/%E5%A4%9A%E6%95%B0%E6%8D%AE%E6%BA%90druid%E5%AE%9E%E7%8E%B0/"}]