<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>桩白墨 PLOUGH</title>
    <link>https://baimoz.me</link>
    <description>桩白墨 PLOUGH 的个人网站：10 年全栈与架构经验，专注 AI Agent、系统架构与优化、从 0 到 1 项目；也记录技术与诗意。</description>
    <language>zh-CN</language>
    <generator>桩白墨 PLOUGH RSS Generator</generator>
    <atom:link href="https://baimoz.me/rss.xml" rel="self" type="application/rss+xml" />
  <item>
    <title>写作与编程——AI 时代工程师真正的护城河是什么？</title>
    <link>https://baimoz.me/blog/xie-zuo-yu-bian-cheng-ai-shi-dai-gong-cheng-shi-zhen-zheng-de-hu-cheng-he/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/xie-zuo-yu-bian-cheng-ai-shi-dai-gong-cheng-shi-zhen-zheng-de-hu-cheng-he/</guid>
    <description>工程师的真正护城河不是写代码，而是建立清晰抽象模型并准确表达的能力——写作和编程本质上都是建模，AI 能生成代码，但无法替代人进行问题理解、边界划定与结果验证。</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>随笔</category>
  </item>
  <item>
    <title>流式 Agent 应用中的上下文传播：当 ThreadLocal 不够用</title>
    <link>https://baimoz.me/blog/agent-context-propagation-without-threadlocal/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/agent-context-propagation-without-threadlocal/</guid>
    <description>Java 后端有一个在 90% 场景下好用的惯例：把请求级上下文（用户 ID、租户 ID、trace ID）塞进 ThreadLocal，在请求入口 set，在请求出口 clear。Spring 的 RequestContextHolder</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>Agent 健康检查与同步协调：让多 Agent 协作不再是 fire-and-forget</title>
    <link>https://baimoz.me/blog/agent-health-check-sync-coordination/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/agent-health-check-sync-coordination/</guid>
    <description>多 Agent 协作中最常见的两个问题是&quot;子 Agent 死了我却不知道&quot;和&quot;我说完就走了，没法等结果&quot;——前者让主 Agent 空等超时，后者让本来能在一轮里完成的任务被迫拆分到多轮（用户体验下降、延迟加倍）。</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>Agent Loop 的原理与实现：从 ReAct 循环到流式 tool-calling</title>
    <link>https://baimoz.me/blog/20260728-agent-loop-implementation/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/20260728-agent-loop-implementation/</guid>
    <description>&quot;Agent Loop&quot;（智能体推理循环）是所有 Agent 系统的心脏。这篇文章讲清楚三件事：Agent Loop 到底是什么；我们的内部 Agent 平台里两套 Loop 实现分别长什么样（主 Agent 委托给框架、子 Agent 手</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>Agent 的长期记忆系统：自动提取、定时整理与画像注入</title>
    <link>https://baimoz.me/blog/20260728-agent-memory-system/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/20260728-agent-memory-system/</guid>
    <description>让一个 Agent &quot;记住&quot;用户，最朴素的方案是开一个设置页让用户手填：&quot;我是做外贸的&quot;&quot;主要客户在德国&quot;。我们的内部 Agent 平台一开始就是这么做的。但上线后很快发现三个问题：</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>Agent 消息可靠性：从 Redis Pub/Sub 到持久化信箱</title>
    <link>https://baimoz.me/blog/agent-message-reliability-inbox/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/agent-message-reliability-inbox/</guid>
    <description>多 Agent 系统最脆弱的一环不是 LLM——是消息。主 Agent 发一条&quot;请帮我调研中国市场&quot;给子 Agent，子 Agent 没收到，或者收到后崩溃了，或者处理完了但主 Agent 不知道。这些失败模式在没有持久化信箱的系统里是不可</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>为什么我们的 Agent 平台不需要 DAG 工作流引擎</title>
    <link>https://baimoz.me/blog/agent-orchestration-without-dag/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/agent-orchestration-without-dag/</guid>
    <description>我们在建设内部 Agent 能力平台的过程中，几乎每隔一段时间就会有人提出同一个问题：&quot;要不要上一个 AI 工作流 / DAG 编排引擎？&quot;</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>Agent 决策血缘：如何让 LLM Agent 的每次推理可查询、可回放</title>
    <link>https://baimoz.me/blog/agent-trace-decision-lineage/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/agent-trace-decision-lineage/</guid>
    <description>我们的 Agent 平台上线几个月后，一个尴尬的场景反复出现：用户问&quot;Agent 当时为什么选了这个工具？为什么没召那篇知识库？&quot;，我们只能耸耸肩——除了 SSE 日志里的零散事件和 SQL 表里几条 token 数字，什么也拿不出来。</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>Agent 平台的媒体生成管线：文生图、文生视频与评分闭环</title>
    <link>https://baimoz.me/blog/20260728-ai-media-generation-pipeline/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/20260728-ai-media-generation-pipeline/</guid>
    <description>给 Agent 平台加&quot;画画&quot;和&quot;拍视频&quot;能力，表面上是对接两个生成 API，实际上是一条完整的管线：生成能力要被抽象成 LLM 可调用的工具、图片和视频的同步/异步模型完全不同、产物要转存到自己的对象存储、失败要可重试、生成的作品还要能被</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>用 ClickHouse 做对话消息存储：一个 Agent 平台的存储选型与落地</title>
    <link>https://baimoz.me/blog/chat-message-clickhouse-persistence/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/chat-message-clickhouse-persistence/</guid>
    <description>我们的内部 Agent 能力平台在上线前夜发现了一个尴尬的事实：所有对话历史都只在 Redis 里，TTL 24 小时，没开持久化，没挂 volume。 Redis 一重启，所有对话记录灰飞烟灭。</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>用 COLA 模块化单体承载 Agent 平台：四层架构、编译期防火墙与四个数据存储</title>
    <link>https://baimoz.me/blog/cola-modular-monolith-agent-platform/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/cola-modular-monolith-agent-platform/</guid>
    <description>我们在给公司内部的 Agent 能力平台做架构设计时，面对的是一个相当典型的处境：业务是全新的（LLM Agent、知识检索、工具调用、推理编排），团队只有两三个人，公司基础设施现成（MySQL、Redis、Milvus、ClickHous</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>可组合的 Agent 能力单元：工具、技能与空间绑定</title>
    <link>https://baimoz.me/blog/composable-tools-and-skills/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/composable-tools-and-skills/</guid>
    <description>一个 Agent 平台做到后面，真正的护城河不是&quot;接了多少模型&quot;，而是能力单元的组织方式：知识库、工具、技能如何被独立维护、被任意 Agent 组合装配、被精确地按空间授权。这篇文章分享我们的内部 Agent 平台在这件事上的三层设计：三类</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>DeepSeek 思考流与工具调用的工程实现</title>
    <link>https://baimoz.me/blog/deepseek-reasoning-stream-tool-calling/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/deepseek-reasoning-stream-tool-calling/</guid>
    <description>我们的内部 Agent 平台用 DeepSeek V4 系列模型做推理主力，前端需要实时展示&quot;思考过程 → 调工具 → 继续思考 → 给答案&quot;的完整链路。这篇文章讲清楚三个工程问题：reasoningcontent 怎么流式转发到前端、思考</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>双模型 AI 协作：把&quot;判断&quot;留给贵模型，把&quot;翻译&quot;交给便宜模型</title>
    <link>https://baimoz.me/blog/dual-model-ai-collab-workflow/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/dual-model-ai-collab-workflow/</guid>
    <description>用 AI 辅助开发一个中大型项目，很快会撞上一笔经济账：旗舰模型效果好但 token 贵，长项目里 80% 的活其实是&quot;把明确意图翻译成代码&quot;的体力活——全用旗舰模型烧不起，全用便宜模型又怕静默翻车。</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>手撸一个 MCP Client：为什么不直接用官方 SDK</title>
    <link>https://baimoz.me/blog/handrolled-mcp-client/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/handrolled-mcp-client/</guid>
    <description>我们的内部 Agent 平台需要对接外部 MCP Server，把对方的工具发现并注册进平台，供 Agent 在推理时调用。主流做法是用 Spring AI 的 MCP starter 或官方 SDK，但我们最终选择手写了一个不到 200 </description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>LLM Agent 评测体系 — 构建自带回归测试的 Agent 平台</title>
    <link>https://baimoz.me/blog/llm-agent-eval-system/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/llm-agent-eval-system/</guid>
    <description>Agent 平台上线几个月后，我们遇到了一个尴尬的循环：</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>LLM 上下文预算工程：如何把有限的 context window 分配给无限的内容</title>
    <link>https://baimoz.me/blog/llm-context-budget-engineering/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/llm-context-budget-engineering/</guid>
    <description>Agent 平台上线几个月后，我们的 Prompt 构造器变成了一个&quot;缝缝补补&quot;的拼接怪兽：system prompt 2K、技能定义 3K、KB 检索 5K、用户画像 300 tokens、对话历史 8K——每样都不多，加起来轻松破 20</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>LLM 流式输出的 SSE 协议设计：紧凑类型化事件、平滑输出与容错收尾</title>
    <link>https://baimoz.me/blog/llm-sse-streaming-protocol/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/llm-sse-streaming-protocol/</guid>
    <description>我们的内部 Agent 平台在推理时需要把 LLM 的 token、思考过程、工具调用、知识库引用、子 Agent 协作状态实时推给前端。本文记录我们在 SSE（Server-Sent Events）之上设计的一套紧凑类型化事件协议，以及围</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>LLM 工具调用的失败降级协议：错误文本即上下文</title>
    <link>https://baimoz.me/blog/llm-tool-failure-degradation/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/llm-tool-failure-degradation/</guid>
    <description>工具调用（Function Calling）失败时，大多数框架的默认行为是让异常沿调用栈传播——在我们的流式架构里，这意味着整条 SSE 流被打断：用户看到推理中途崩掉，模型连&quot;补救&quot;的机会都没有。</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>让 LLM Agent 的每次推理可回放：从快照到重放的工程实践</title>
    <link>https://baimoz.me/blog/llm-trace-replay-snapshot/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/llm-trace-replay-snapshot/</guid>
    <description>我们上线 Trace 系统后，团队某天讨论了一个问题：&quot;如果把 Lily 的模型从 deepseek-v4-pro 换成 gpt-4.1，同一个用户输入质量会变好还是变差？&quot;</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>消息传递式多 Agent 协作：设计、实现与权衡</title>
    <link>https://baimoz.me/blog/message-passing-multi-agent/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/message-passing-multi-agent/</guid>
    <description>当单个 Agent 的能力不足以覆盖复杂任务时，有两条路：把更多能力塞进同一个 Agent（更长的 prompt、更多的工具），或者让多个 Agent 协作。我们的内部 Agent 平台选了后者，并且选了一种不那么主流的协作形态——消息传递</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>给内部平台做一个全站新手引导系统</title>
    <link>https://baimoz.me/blog/product-tutorial-system/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/product-tutorial-system/</guid>
    <description>内部平台有个通病：功能越堆越多，新人进来面对满屏的入口不知道该先点哪里。传统解法是写用户手册——但说实话，没人读手册，手册的宿命是写完即过时。</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>RAG 文本切片的工程实践：从固定窗口到递归语义边界</title>
    <link>https://baimoz.me/blog/rag-chunking-strategy/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/rag-chunking-strategy/</guid>
    <description>RAG 系统的质量有三个决定性因素：检索精度、上下文组装、LLM 理解能力。而检索精度的第一道门槛就是文本切片（chunking）——如果切分时就把语义单元切碎了，后续再怎么优化 embedding 和排序也补救不回来。</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>流式系统的回归测试：如何断言&quot;流式&quot;与&quot;终止&quot;</title>
    <link>https://baimoz.me/blog/streaming-system-regression-testing/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/streaming-system-regression-testing/</guid>
    <description>给一个 LLM 流式系统写回归测试，最容易犯的错是用批处理系统的断言习惯去断言流：</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>WebFlux + 虚拟线程：响应式网关下的阻塞式 LLM 调用</title>
    <link>https://baimoz.me/blog/webflux-virtual-threads-llm/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/webflux-virtual-threads-llm/</guid>
    <description>我们的内部 Agent 平台后端是 Spring WebFlux 全栈响应式的：入口是 Netty 的 NIO 线程，出口是 SSE 流，中间是 Reactor 的 Flux 管道。但 LLM 调用这个场景和典型的响应式网关不太一样——一次</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>从 Day 1 可观测：事件驱动的工作日志系统</title>
    <link>https://baimoz.me/blog/worklog-event-driven-observability/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/worklog-event-driven-observability/</guid>
    <description>在构建我们的内部 Agent 平台时，有一条从项目第一天就立下的规矩：</description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>Agent 平台的多层隔离模型：工作空间、两阶段 JWT 与终端用户透传隔离</title>
    <link>https://baimoz.me/blog/workspace-isolation-api-keys/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/workspace-isolation-api-keys/</guid>
    <description>我们的内部 Agent 能力平台同时服务两类调用方：坐在浏览器前的员工，和背后有成百上千终端客户的外部业务系统（通过 API Key 接入，让 Agent 能力嵌入它们自己的产品）。这两类调用方对&quot;隔离&quot;的要求完全不同：前者是典型的多租户 </description>
    <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>事故复盘：SSE 思考流卡死 48 秒 —— Reactor 背压饿死（request 信号排队在阻塞读循环之后）</title>
    <link>https://baimoz.me/blog/reactor-backpressure-postmortem/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/reactor-backpressure-postmortem/</guid>
    <description>1. 现象</description>
    <pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate>
    <category>AI Agent</category>
  </item>
  <item>
    <title>不用大模型，纯 JS 实现店铺名称相似度比对</title>
    <link>https://baimoz.me/blog/bu-yong-da-mo-xing-chun-js-shi-xian-dian-pu-ming-cheng-xiang-si-du-bi-dui/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/bu-yong-da-mo-xing-chun-js-shi-xian-dian-pu-ming-cheng-xiang-si-du-bi-dui/</guid>
    <description>本文通过纯 JavaScript 实现店铺名称相似度比对工具，结合 Levenshtein、Bigram Dice 和 Jaro-Winkler 算法加权组合，并解决括号陷阱、缩写误杀、错别字淹没等真实数据挑战。</description>
    <pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate>
    <category>前端笔记</category>
  </item>
  <item>
    <title>与书对话！我手搓了一个私人 AI 图书馆</title>
    <link>https://baimoz.me/blog/yu-shu-dui-hua-wo-shou-cuo-le-yi-ge-si-ren-ai-tu-shu-guan/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/yu-shu-dui-hua-wo-shou-cuo-le-yi-ge-si-ren-ai-tu-shu-guan/</guid>
    <description>清明假期，我开发了一款私人 AI 图书管理系统，能自动扫描电子书并基于 RAG 技术进行深度拆解，实现与书籍的智能对话。该项目既为深化技术理解，也为高效阅读提供帮助，未来可能开源或创业。</description>
    <pubDate>Mon, 06 Apr 2026 00:00:00 GMT</pubDate>
    <category>AI 大模型</category>
  </item>
  <item>
    <title>与 Kimi 关于 Flink、StarRocks 实现大表 JOIN 的探讨</title>
    <link>https://baimoz.me/blog/yu-kimi-guan-yu-flink-starrocks-shi-xian-da-biao-join-de-tan-tao/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/yu-kimi-guan-yu-flink-starrocks-shi-xian-da-biao-join-de-tan-tao/</guid>
    <description>本文通过与 Kimi 的对话，深入探讨了在数据仓库中使用 Flink 和 StarRocks 处理多张亿级大表 JOIN 操作的设计合理性、技术方案及底层原理，并对比了两种方案在资源消耗和实现方式上的异同。</description>
    <pubDate>Sun, 06 Oct 2024 00:00:00 GMT</pubDate>
    <category>Flink</category>
  </item>
  <item>
    <title>记一次 Flink Job 调优经验</title>
    <link>https://baimoz.me/blog/ji-yi-ci-flink-job-tiao-you-jing-yan/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/ji-yi-ci-flink-job-tiao-you-jing-yan/</guid>
    <description>本文记录了一次 Flink 素材计算 Job 的调优经验，通过降低并行度、增大批次和窗口、增加失败重试，仅用 24 个并行度便实现了之前 60 个并行度 3 倍以上的吞吐量，并解决了系统频繁重启的问题。</description>
    <pubDate>Sun, 15 Sep 2024 00:00:00 GMT</pubDate>
    <category>Flink</category>
  </item>
  <item>
    <title>服务器单机部署 Flink 1.18.1</title>
    <link>https://baimoz.me/blog/fu-wu-qi-dan-ji-bu-shu-flink-1-18-1/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/fu-wu-qi-dan-ji-bu-shu-flink-1-18-1/</guid>
    <description>本文记录了在服务器单机环境下快速部署 Apache Flink 1.18.1 的步骤，包括下载安装包、修改 WebUI 绑定地址及启动集群。</description>
    <pubDate>Tue, 07 May 2024 00:00:00 GMT</pubDate>
    <category>Flink</category>
  </item>
  <item>
    <title>Python 下划线转驼峰</title>
    <link>https://baimoz.me/blog/python-xia-hua-xian-zhuan-tuo-feng/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/python-xia-hua-xian-zhuan-tuo-feng/</guid>
    <description>本文介绍一个 Python 函数，将下划线命名转换为驼峰命名，通过拆分字符串并重组首字母大小写实现，附带使用示例。</description>
    <pubDate>Mon, 06 May 2024 00:00:00 GMT</pubDate>
    <category>Python</category>
  </item>
  <item>
    <title>《隆中对》原文</title>
    <link>https://baimoz.me/blog/20240425-long-zhong-dui-yuan-wen/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/20240425-long-zhong-dui-yuan-wen/</guid>
    <description>【作者】陈寿 【朝代】魏晋 亮躬耕陇亩，好为《梁父吟》。身长八尺，每自比于管仲、乐毅，时人莫之许也。惟博陵崔州平、颍川徐庶元直与亮友善，谓为信然。 时先主屯新野。徐庶见先主，先主器之，谓先主曰：“诸葛孔明者，卧龙也，将军岂愿见之乎？”先主曰：“君与俱来。”庶曰：“此人可就见，不可屈致也。将军宜枉驾顾之。” 由是先主遂诣…</description>
    <pubDate>Thu, 25 Apr 2024 00:00:00 GMT</pubDate>
    <category>收藏</category>
  </item>
  <item>
    <title>本地部署 Kafka</title>
    <link>https://baimoz.me/blog/20240425-ben-di-bu-shu-kafka/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/20240425-ben-di-bu-shu-kafka/</guid>
    <description>本文记录了在本地环境部署 Apache Kafka 2.3.0 的简易步骤，涵盖 ZooKeeper 启动、Kafka 服务运行、测试主题创建以及消息的生产与消费，用于快速搭建消息队列测试环境。</description>
    <pubDate>Thu, 25 Apr 2024 00:00:00 GMT</pubDate>
    <category>Kafka</category>
  </item>
  <item>
    <title>Flink 集成 KafkaSource</title>
    <link>https://baimoz.me/blog/flink-ji-cheng-kafkasource/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/flink-ji-cheng-kafkasource/</guid>
    <description>本文演示在 Flink 1.18 中使用 Kafka Source 从本地 Kafka 读取数据的完整 demo，包括 Maven 依赖、测试数据准备及 Stream Job 代码编写。</description>
    <pubDate>Thu, 25 Apr 2024 00:00:00 GMT</pubDate>
    <category>Flink</category>
  </item>
  <item>
    <title>初次部署 Flink，WebUI 外网无法访问的问题</title>
    <link>https://baimoz.me/blog/chu-ci-bu-shu-flink-webui-wai-wang-wu-fa-fang-wen-de-wen-ti/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/chu-ci-bu-shu-flink-webui-wai-wang-wu-fa-fang-wen-de-wen-ti/</guid>
    <description>部署Flink后，WebUI默认只允许本地访问，导致外网无法连接。通过修改flink-conf.yaml中rest.bind-address为0.0.0.0并重启集群即可解决。</description>
    <pubDate>Wed, 24 Apr 2024 00:00:00 GMT</pubDate>
    <category>Flink</category>
  </item>
  <item>
    <title>创建并运行一个 Flink Stream Api 的 HelloWorld 项目</title>
    <link>https://baimoz.me/blog/chuang-jian-bing-yun-hang-yi-ge-flink-stream-api-de-helloworld-xiang-mu/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/chuang-jian-bing-yun-hang-yi-ge-flink-stream-api-de-helloworld-xiang-mu/</guid>
    <description>本文介绍如何使用 Maven 快速创建 Flink Stream API 的 HelloWorld 项目，包括项目生成、核心代码解析以及在 Flink WebUI 上提交运行流程，帮助开发者快速上手 Flink 流处理。</description>
    <pubDate>Wed, 24 Apr 2024 00:00:00 GMT</pubDate>
    <category>Flink</category>
  </item>
  <item>
    <title>践行黑客之道，虽千万人，吾往矣！</title>
    <link>https://baimoz.me/blog/jian-hang-hei-ke-zhi-dao-sui-qian-wan-ren-wu-wang-yi/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/jian-hang-hei-ke-zhi-dao-sui-qian-wan-ren-wu-wang-yi/</guid>
    <description>从编程到国学、武术，看似散漫的多元兴趣背后，其实贯穿着同一种“黑客之道”——用好奇心和改造力理解世界、持续迭代自我。找到这个内核，所有的探索便不再是分裂，而是一种纵深与确定。</description>
    <pubDate>Mon, 01 Jan 2024 00:00:00 GMT</pubDate>
    <category>随笔</category>
  </item>
  <item>
    <title>DDD（1）——领域驱动设计架构的四个层次，及依赖关系</title>
    <link>https://baimoz.me/blog/ddd-1-ling-yu-qu-dong-she-ji-jia-gou-de-si-ge-ceng-ci-ji-yi-lai-guan-xi/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/ddd-1-ling-yu-qu-dong-she-ji-jia-gou-de-si-ge-ceng-ci-ji-yi-lai-guan-xi/</guid>
    <description>本文介绍了领域驱动设计（DDD）的四层架构：用户界面层、应用层、领域层和基础设施层，并详细阐述了它们之间的依赖关系及其设计理由。这种分层结构旨在保证业务逻辑的纯粹性，实现隔离变化、提升可测试性与可复用性。</description>
    <pubDate>Sat, 07 Oct 2023 00:00:00 GMT</pubDate>
    <category>架构笔记</category>
  </item>
  <item>
    <title>DDD（2）——“图书管理系统”，DDD 完整架构范例</title>
    <link>https://baimoz.me/blog/ddd-2-tu-shu-guan-li-xi-tong-ddd-wan-zheng-jia-gou-fan-li/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/ddd-2-tu-shu-guan-li-xi-tong-ddd-wan-zheng-jia-gou-fan-li/</guid>
    <description>本文以图书管理系统为例，展示了DDD（领域驱动设计）的四层架构，涵盖用户界面层、应用层、领域层和基础设施层，包含用户、图书和借阅领域的模型、服务和仓储等组件。</description>
    <pubDate>Sat, 07 Oct 2023 00:00:00 GMT</pubDate>
    <category>架构笔记</category>
  </item>
  <item>
    <title>spring-cloud-dependencies 导致版本号冲突的问题</title>
    <link>https://baimoz.me/blog/spring-cloud-dependencies-dao-zhi-ban-ben-hao-chong-tu-de-wen-ti/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/spring-cloud-dependencies-dao-zhi-ban-ben-hao-chong-tu-de-wen-ti/</guid>
    <description>当 Maven 项目引入 spring-cloud-dependencies 依赖管理后，可能会覆盖其他依赖版本（例如 grpc 从 1.56 降至 1.34）。解决方案是在同层 pom.xml 中显式声明所需依赖并指定版本号，即可避免版本冲突。</description>
    <pubDate>Tue, 08 Aug 2023 00:00:00 GMT</pubDate>
    <category>Java</category>
  </item>
  <item>
    <title>ES 在创建索引时，指定分词方式</title>
    <link>https://baimoz.me/blog/es-zai-chuang-jian-suo-yin-shi-zhi-ding-fen-ci-fang-shi/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/es-zai-chuang-jian-suo-yin-shi-zhi-ding-fen-ci-fang-shi/</guid>
    <description>本文演示在 Elasticsearch 创建索引时，通过自定义空格分词器，为不同文本字段分别指定空格分词和标准分词，实现字段粒度的分词方式控制。</description>
    <pubDate>Fri, 04 Aug 2023 00:00:00 GMT</pubDate>
    <category>ElasticSearch</category>
  </item>
  <item>
    <title>Mac 账户恢复“管理员”身份</title>
    <link>https://baimoz.me/blog/mac-zhang-hu-hui-fu-guan-li-yuan-shen-fen/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/mac-zhang-hu-hui-fu-guan-li-yuan-shen-fen/</guid>
    <description>记录一次 Mac 升级后丢失管理员权限的修复过程，通过恢复模式为账户添加 sudo 权限并将其加入管理员组，最终恢复管理员身份。</description>
    <pubDate>Sun, 16 Jul 2023 00:00:00 GMT</pubDate>
    <category>运维笔记</category>
  </item>
  <item>
    <title>Python 中带花括号的字符串格式化报错的问题</title>
    <link>https://baimoz.me/blog/python-zhong-dai-hua-kuo-hao-de-zi-fu-chuan-ge-shi-hua-bao-cuo-de-wen-ti/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/python-zhong-dai-hua-kuo-hao-de-zi-fu-chuan-ge-shi-hua-bao-cuo-de-wen-ti/</guid>
    <description>在使用 Python 的 `format` 方法进行字符串格式化时，如果模板内包含花括号（如 JSON 模板），会触发报错。通过使用双重花括号（`{{` 和 `}}`）即可转义并避免该问题。</description>
    <pubDate>Wed, 21 Jun 2023 00:00:00 GMT</pubDate>
    <category>Python</category>
  </item>
  <item>
    <title>ANTLR4 入门</title>
    <link>https://baimoz.me/blog/20230609-antlr4-ru-men/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/20230609-antlr4-ru-men/</guid>
    <description>介绍ANTLR4的词法分析器、语法分析器及抽象语法树核心概念，结合IDEA与Maven配置，手把手演示如何编写.g4语法文件、生成解析器并实现代码解析。</description>
    <pubDate>Fri, 09 Jun 2023 00:00:00 GMT</pubDate>
    <category>Java</category>
  </item>
  <item>
    <title>使用 ANTLR 实现公式解析</title>
    <link>https://baimoz.me/blog/shi-yong-antlr-shi-xian-gong-shi-jie-xi/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/shi-yong-antlr-shi-xian-gong-shi-jie-xi/</guid>
    <description>本文介绍了如何使用 ANTLR 实现公式解析，通过定义函数类、编写语法和词法规则，并实现 Visitor 将公式字符串转换为可执行的函数对象，适合有 ANTLR 基础的开发者参考。</description>
    <pubDate>Fri, 09 Jun 2023 00:00:00 GMT</pubDate>
    <category>Java</category>
  </item>
  <item>
    <title>Lombok 常用注解</title>
    <link>https://baimoz.me/blog/lombok-chang-yong-zhu-jie/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/lombok-chang-yong-zhu-jie/</guid>
    <description>本文整理了 Lombok 常用注解如 @Getter、@Setter、@Data、@Builder 等，通过简洁示例说明其作用，帮助开发者减少 Java 样板代码，提升开发效率。</description>
    <pubDate>Wed, 07 Jun 2023 00:00:00 GMT</pubDate>
    <category>Java</category>
  </item>
  <item>
    <title>使用 Stopwatch 监控 sql 执行时间</title>
    <link>https://baimoz.me/blog/shi-yong-stopwatch-jian-kong-sql-zhi-hang-shi-jian/</link>
    <guid isPermaLink="true">https://baimoz.me/blog/shi-yong-stopwatch-jian-kong-sql-zhi-hang-shi-jian/</guid>
    <description>介绍使用 Guava 的 Stopwatch 工具类优雅地监控 SQL 或任意代码的执行时间，替代直接使用 System.currentTimeMillis()，并给出示例代码。</description>
    <pubDate>Wed, 07 Jun 2023 00:00:00 GMT</pubDate>
    <category>Java</category>
  </item>
  </channel>
</rss>
