<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IT_Octopus的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/IT_Octopus</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IT_Octopus]]></copyright><item><title><![CDATA[两盒饭引发的事故：从童话到算法——多实例装填的贪心陷阱与发牌算法]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/170198566</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/170198566</guid><author>IT_Octopus</author><pubDate>Fri, 06 Nov 2026 18:38:36 +0800</pubDate><description><![CDATA[童话里的东西工程术语饭盒 × N容器/实例（N 个完全相同）必须装 3 块主食容器数量约束同种点心每盒只能 1 块同定义项每容器上限cap（多盒之间可以重复）厨师的清单物品多重集（池子），按"同一定义项"分组，组 g 有 c_g 份上游厨师求解器/规划器——它保证两条总量性质（见下）输入：池子P（组 g 有c_g份）、容器数n、每容器数量区间[m, M]、每定义项每容器上限cap_g。输出：一个划分——所有拷贝分进 n 个容器，每容器满足[m, M]和各cap_g。]]></description><category></category></item><item><title><![CDATA[# console 不再刷屏：用一道「默认关闭」的门闸，把大 JSON 日志关进本地文件]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/170195215</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/170195215</guid><author>IT_Octopus</author><pubDate>Fri, 06 Nov 2026 16:44:12 +0800</pubDate><description><![CDATA[自带 level 阈值过滤：同一 logger 的不同 appender 可以收不同级别的日志。"console 只留 info、文件收全量"这类分流，一行属性就够，不需要改任何业务代码。${sys:...}让 log4j2 配置感知 JVM 启动参数：环境差异通过"进程怎么启动"表达，比代码里判断 profile 更早、更底层、也更难出错。named logger 是业务日志单独落盘的标准姿势切断传播，裸%m%npattern 保证落盘内容即消息本身，复制即可回放。守卫不是可有可无的。]]></description><category></category></item><item><title><![CDATA[Apollo 配置中心入门：一所“小学校“读懂 Portal、Meta Server、Config Service]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/168879707</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/168879707</guid><author>IT_Octopus</author><pubDate>Fri, 23 Oct 2026 17:05:04 +0800</pubDate><description><![CDATA[不是必然，而是定位决定的。Portal 是 Apollo 的管理控制台（Web UI），面向人做配置的增删改、发布、权限与审计，所以天然做成浏览器可访问的图形界面。图形化只是 Portal 的前端表现，底层仍是 HTTP 接口；发布服务走的就是 Portal 的 Open API（），并不依赖页面。反过来，Meta Server 和 Config Service 是纯服务端只读角色，只提供 HTTP 接口（/configs），没有也不需要图形界面。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 15】：LangChain 注册工具——告别手写 JSON Schema]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166245668</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166245668</guid><author>IT_Octopus</author><pubDate>Thu, 15 Oct 2026 15:12:38 +0800</pubDate><description><![CDATA[Day 8-9 用原生 SDK 手写工具说明书：一个就写了二十来行 JSON Schema。工具一多，手写说明书又臭又长，还容易写错字段名。。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 14】：让 AI 输出结构化 JSON]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166239455</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166239455</guid><author>IT_Octopus</author><pubDate>Wed, 14 Oct 2026 09:45:51 +0800</pubDate><description><![CDATA[前面的 AI 输出都是"给人看的"。但真实业务里，AI 的输出经常要给程序用：程序读不了"张三今年28岁……"这种自由文本，只认 JSON。模型本身没有开关一键输出 JSON（OpenAI 协议有  参数，但兼容性看服务商），最通用的做法是：在提示词里把格式写死。
本系列最大的语法坑：花括号要写两遍！
盯住 system 那一行：——JSON 的花括号全部写成了双花括号。为什么？Day 10 说过， 里单花括号  是变量占位符。JSON 里一堆 ，框架会试图把它们当变量解析，直接报"找不到变量"或者渲染错乱]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 13】：LangChain 的对话记忆——Message 对象版]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166239200</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166239200</guid><author>IT_Octopus</author><pubDate>Tue, 13 Oct 2026 09:54:08 +0800</pubDate><description><![CDATA[还是那个"历史列表 + 全量发送"的套路。区别只是——框架没变魔术，只是给了你更体面的写法。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 12】：LangChain 流式输出——一行 for 循环的事]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166238964</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166238964</guid><author>IT_Octopus</author><pubDate>Mon, 12 Oct 2026 11:38:33 +0800</pubDate><description><![CDATA[原生 SDK 的流式输出要：判delta是否为 None、判是否为 None、处理只在第一个 chunk 出现的role、自己拼full_reply……LangChain 把这些脏活都封装了。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 11】：ChatOpenAI vs init_chat_model——一行换供应商]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166246163</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166246163</guid><author>IT_Octopus</author><pubDate>Fri, 09 Oct 2026 09:40:57 +0800</pubDate><description><![CDATA[直接实例化，直观明了。——ChatOpenAI只会说"OpenAI 协议"这一种话。哪天想试 Claude、Gemini 或本地模型，每个文件都要改 import 和构造代码。。这篇讲清两者区别，顺便把常见供应商的接入写法一次备齐。]]></description><category></category></item><item><title><![CDATA[Spring Bean 生命周期 × Apollo 动态日志级别热更新（附完整代码）]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/167280253</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/167280253</guid><author>IT_Octopus</author><pubDate>Thu, 08 Oct 2026 17:49:13 +0800</pubDate><description><![CDATA[项目里有一个 70 行的小工具类。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 10】：LangChain 入门——一条管道符串起 prompt 和模型]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166238359</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166238359</guid><author>IT_Octopus</author><pubDate>Thu, 08 Oct 2026 10:34:43 +0800</pubDate><description><![CDATA[用原生 SDK 九天下来，你可能已经发现：每次都要手写 client 初始化、手拼 messages 列表、手取……这些都是重复劳动。：prompt 是积木、模型是积木，你用管道符把它们串成流水线。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 9】：工具描述的艺术——AI 靠“读说明书“做决策]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166235233</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166235233</guid><author>IT_Octopus</author><pubDate>Wed, 07 Oct 2026 09:58:25 +0800</pubDate><description><![CDATA[Day 8 你可能没注意到：两个练习文件里的工具描述不一样。差别在哪？Day 9 的描述里多了：“如果用户没有指定具体城市，请询问用户。效果：当用户问"今天天气怎么样？"（没说城市）——]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 8】：Function Calling——让 AI 会“用“工具]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166234846</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166234846</guid><author>IT_Octopus</author><pubDate>Tue, 06 Oct 2026 09:48:10 +0800</pubDate><description><![CDATA[AI 自己去执行函数。AI 是个活在服务器里的大脑，它碰不到你的电脑。，然后——由替它执行，再把结果喂回给它。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 7】：Embeddings——把文字变成向量]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/166232447</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/166232447</guid><author>IT_Octopus</author><pubDate>Mon, 21 Sep 2026 10:22:28 +0800</pubDate><description><![CDATA[前面 6 天都在"聊天"。但 AI 应用的另一半江山是答案都靠：把一段文字变成一串数字（比如 1024 个浮点数），。打个比方：把每句话放到一张巨大的地图上，"苹果"和"香蕉"住得近，"苹果"和"量子力学"住得很远。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 6】：多轮对话记忆——一个列表撑起的“记忆“]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/165297224</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/165297224</guid><author>IT_Octopus</author><pubDate>Sat, 19 Sep 2026 17:04:25 +0800</pubDate><description><![CDATA[很多初学者以为"AI 记得我们聊过什么"是模型自带的功能。Day 3 说过：模型是无状态的。所谓记忆，实现方式简单到离谱——模型每次都拿到完整剧本，自然演得像"记得一切"。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 5】流式输出——打字机效果]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/165297061</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/165297061</guid><author>IT_Octopus</author><pubDate>Fri, 18 Sep 2026 10:02:42 +0800</pubDate><description><![CDATA[前几天的写法有个体验问题：AI 生成 500 字，你就得，屏幕一片空白。ChatGPT 那种"字一个一个蹦出来"的效果，就是：服务边生成边推送，你边收边显示。总耗时没变，但，体验完全不同。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 4】Temperature——让 AI 严谨或放飞]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/165296951</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/165296951</guid><author>IT_Octopus</author><pubDate>Thu, 17 Sep 2026 09:56:08 +0800</pubDate><description><![CDATA[控制这种"稳重 vs 放飞"的旋钮，就叫。]]></description><category></category></item><item><title><![CDATA[【零基础入门 LLM 开发 · Day 3】读懂响应对象与 Token 用量]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/165295567</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/165295567</guid><author>IT_Octopus</author><pubDate>Mon, 14 Sep 2026 10:59:24 +0800</pubDate><description><![CDATA[到今天为止，我们调用模型都是"发出去 → 拿回一句话"，很粗放。]]></description><category></category></item><item><title><![CDATA[从一个应用开发者的角度，搞懂大数据查询的完整链路]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/165290734</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/165290734</guid><author>IT_Octopus</author><pubDate>Mon, 14 Sep 2026 10:24:57 +0800</pubDate><description><![CDATA[作为一个应用开发者，最近在做数据查询相关的需求时，接触到了 Hue、Hive 表、Spark SQL、HDFS、MapReduce、YARN 队列这些概念。一开始真的是一头雾水——它们之间到底是什么关系？我写的一条 SQL，到底经历了什么才拿到结果？经过一段时间的学习和摸索，终于把整条链路搞清楚了。今天从一个应用开发者的视角，把这条链路从头到尾串一遍，希望能帮到和我一样困惑的朋友。│ 【顶层】用户 / 应用入口 │。]]></description><category></category></item><item><title><![CDATA[IntelliJ 本地日志路径自定义：`-DLOG_PATH=./logs` 为什么总“不听话“]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/165005661</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/165005661</guid><author>IT_Octopus</author><pubDate>Fri, 11 Sep 2026 19:23:04 +0800</pubDate><description><![CDATA[说明系统属性没注入成功：多半填进了"程序实参"，或者改完没有重启进程。运行中的进程不受配置修改影响，必须停止后重新运行。下拉框（在主类下方，可能要往下滚动）选成了父工程对应的模块，宏照样解析到父目录。检查配置里"模块"下拉框是不是选成了父工程模块；VS Code 同样是"工作目录 + VM 参数"两件套，写在。），并把配置名改成带项目标识的名字，避免跑错项目还以为日志丢了。是不是填进了程序实参；就是"VM 选项"。多模块父目录打开时，同样靠每条配置的。：你以为工作目录是子项目，IDEA 默认给的却是别处。]]></description><category></category></item><item><title><![CDATA[SLF4J MDC + MdcTaskDecorator + ThreadPoolConfig：让 traceId 在线程池里“跟人走“]]></title><link>https://blog.youkuaiyun.com/IT_Octopus/article/details/165004836</link><guid>https://blog.youkuaiyun.com/IT_Octopus/article/details/165004836</guid><author>IT_Octopus</author><pubDate>Fri, 11 Sep 2026 19:20:08 +0800</pubDate><description><![CDATA[一篇写给初学者的实战博客。]]></description><category></category></item></channel></rss>