<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Stray_Lambs的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Stray_Lambs</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Stray_Lambs]]></copyright><item><title><![CDATA[SWE-agent 论文全文翻译与深度解读：接口设计如何决定代码 Agent 的可靠性]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/166733899</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/166733899</guid><author>Stray_Lambs</author><pubDate>Sun, 27 Sep 2026 11:18:15 +0800</pubDate><description><![CDATA[SWE-agent提出将智能体-计算机接口（ACI）作为模型与代码仓库间的独立设计层，证明在固定模型权重下，精心设计的接口可显著提升代码修复成功率。实验显示，GPT-4Turbo在SWE-bench上从11.00%提升至18.00%，绝对提高7个百分点。核心机制包括状态化窗口、汇总搜索、多行编辑与lint回滚，有效降低状态跟踪负担。研究强调：界面设计是代码Agent的关键基础设施，保护机制与信息预算管理比单纯增加上下文更值得投入。结论基于2024年实验口径，不可直接外推至当前模型或评测体系。]]></description><category></category></item><item><title><![CDATA[ReAct：推理与行动协同的全文翻译与机制解读]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/166645289</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/166645289</guid><author>Stray_Lambs</author><pubDate>Fri, 25 Sep 2026 18:11:36 +0800</pubDate><description><![CDATA[ReAct在2022–2023年首次将语言推理与环境反馈纳入统一执行轨迹，通过Thought（推理）与Action（行动）的交替，实现“以推理指导行动、以行动修正推理”的闭环。实验表明，该范式在知识问答与交互决策任务中显著优于纯推理或纯行动模型，尤其在降低事实幻觉方面成效明显。但其效果依赖于外部证据，且易受检索错误与循环推理影响。核心价值在于构建可观察、可校正的执行过程，而非完整智能体系统。现代应用应保留其闭环结构，并通过工具权限、超时、回退等工程控制保障安全与稳定。]]></description><category></category></item><item><title><![CDATA[数仓基础理论(一)]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/136191877</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/136191877</guid><author>Stray_Lambs</author><pubDate>Wed, 13 Mar 2024 11:30:46 +0800</pubDate><description><![CDATA[模范定义指以维度建模作为理论基础，构建总线矩阵，划分和定义数据域、业务过程、维度、度量 / 原子指标、修饰类型、修饰词、时间周期、派生指标。名词术语解释数据域指面向业务分析将业务过程或者维度进行抽象的集合。其中，业务过程可以概括为一个个不可拆分的行为事件，在业务过程之下，可以定义指标；维度是指度量的环境，如买家下单事件，买家是维度。为保障整个体系的生命力，数据域是需要抽象提炼，并且长期维护和更新的，但不轻易变动。]]></description><category></category></item><item><title><![CDATA[Flink面试题与详解]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134999082</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134999082</guid><author>Stray_Lambs</author><pubDate>Sat, 23 Dec 2023 21:20:37 +0800</pubDate><description><![CDATA[官网图：由两个部分组成，JM，TM。JM中包含三个组件，。dispatch主要是负责提供了rest接口，接受客户端提供的jar包dataflow等信息，并且运行Flink UI也是该组件运行。jobmaster主要是负责将dataflow等数据流图转换成真正的物理执行图，如果资源足够启动任务，那么就会将图分发给对应的TM，并且负责任务启动后的协调运行管理，比如checkpoint的协调。resource manager主要负责资源的申请、释放、分配。管理着Flink的slot。]]></description><category></category></item><item><title><![CDATA[Flink优化——数据倾斜（二）]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134785183</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134785183</guid><author>Stray_Lambs</author><pubDate>Wed, 06 Dec 2023 18:35:02 +0800</pubDate><description><![CDATA[的思想：在 keyBy 上游算子数据发送之前，首先在上游算子的本地对数据进行聚合后再发送到下游，使下游接收到的数据量大大减少，从而使得 keyBy 之后的聚合操作不再是任务的瓶颈。如果 keyBy 之前就存在数据倾斜，上游算子的某些实例可能处理的数据较多，某些实例可能处理的数据较小，产生该情况可能是因为数据源的数据本身就不均匀。注意： Flink 是实时流处理，如果 keyby 之后的聚合操作存在数据倾斜，且没有开窗口的情况下，简单的任务使用两阶段聚合，是不能解决问题的。通常，数据倾斜也会引起反压。]]></description><category></category></item><item><title><![CDATA[Flink优化——资源优化（一）]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134780210</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134780210</guid><author>Stray_Lambs</author><pubDate>Mon, 04 Dec 2023 15:17:41 +0800</pubDate><description><![CDATA[另外 Sink 端要与下游的服务进行交互，并行度还得根据下游的服务抗压能力来设置，如果在 Flink Sink 这端的数据量过大的话，且 Sink 处并行度也设置的很大， 但下游的服务完全撑不住这么大的并发写入， 可能会造成下游服务直接被写挂，所以最终还是要在 Sink 处的并行度做一定的权衡。上，让多块磁盘来分担压力。Flink 性能调优的第一步，就是为任务分配合适的资源，在一定范围内，增加资源的分配与性能的提升是成正比的，实现了最优的资源配置后，在此基础上再考虑进行后面论述的心更难调优策略。]]></description><category></category></item><item><title><![CDATA[leetcode周赛 第 370 场周赛]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134247226</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134247226</guid><author>Stray_Lambs</author><pubDate>Mon, 06 Nov 2023 15:58:18 +0800</pubDate><description><![CDATA[你的得分之和为 values[1] + values[2] + values[3] + values[4] + values[5] = 11。第二种情况：values[x] 加入答案，问题变成「以 y 为根的子树是健康时，失去的最小分数」，这里 y 是 x 的儿子。那么答案就是 values 的元素和，减去「以 0 为根的子树是健康时，失去的最小分数」。第一种情况：失去 values[x]，也就是不加入答案，那么 x 的所有子孙节点都可以加入答案，失去的最小分数就是 values[x]。]]></description><category></category></item><item><title><![CDATA[leetcode第369周赛]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134114168</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134114168</guid><author>Stray_Lambs</author><pubDate>Mon, 30 Oct 2023 14:23:54 +0800</pubDate><description><![CDATA[右移：答案为 coins[i]>>(j+1)\textit{coins}[i]>>(j+1)coins[i]>>(j+1) 加上每个子树 ch\textit{ch}ch 的 dfs(ch,j+1)\textit{dfs}(ch,j+1)dfs(ch,j+1)。因为 k == 1 ，数组的 1-or 等于其中所有元素按位或运算的结果。长度大于或等于 3 的子数组为 [2,4,0], [4,0,0], [0,0,4], [2,4,0,0], [4,0,0,4], [2,4,0,0,4]。]]></description><category></category></item><item><title><![CDATA[每日一题：leetcode1155 掷骰子等于目标和的方法数]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134009073</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/134009073</guid><author>Stray_Lambs</author><pubDate>Tue, 24 Oct 2023 14:43:39 +0800</pubDate><description><![CDATA[dp[i][j] = dp[i][j] + dp[i-1][j-x]，其中x的范围是[1-k]，i表示几个骰子，j表示这i个骰子能加到的范围，dp[i][j]则表述i个骰子达到j值的方法数。首先看到这个是求方法数，就让我想起了超级楼梯这个递推的动态规划题目，再看看这个数据的规模才1000，直接就是有着异曲同工的思路。当然需要进行一些分支截取，骰子的范围，最小值就是1，最大是k，那么数据的范围就是[n,n*k]。得到 7 的和有 6 种方法：1+6 2+5 3+4 4+3 5+2 6+1。]]></description><category></category></item><item><title><![CDATA[每日一题： leetcode1726 同积元组]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/133923321</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/133923321</guid><author>Stray_Lambs</author><pubDate>Thu, 19 Oct 2023 11:50:21 +0800</pubDate><description><![CDATA[1、若 a = c，则 b = d，可以通过反证法推断，如果a = c，但是 b 不等于 d，则式子可以写成 a * b = a * d ==> b = d，所以若 a = c，则 b = d。说白了，其实就是根据给定的nums数组，每个元素两两相乘，遍历一次，记录乘积的个数，然后个数大于2的，根据排列组合公式，从可选组合中选取2个。首先，我们可以从答案上推断出，只要有一组符合的答案，比如 2*3 = 4*6，根据换不同的位置，可以知道，最终的答案就是4元组的个数 * 8。]]></description><category></category></item><item><title><![CDATA[Flink1.14 SourceReader概念入门讲解与源码解析 (三)]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/133794233</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/133794233</guid><author>Stray_Lambs</author><pubDate>Tue, 17 Oct 2023 15:43:38 +0800</pubDate><description><![CDATA[SourceReader是一个运行在Task Manager上的组件，主要是负责读取 SplitEnumerator 分配的source split。SourceReader 提供了一个拉动式(pull-based)处理接口。Flink任务会在循环中不断调用 pollNext(ReaderOutput) 轮询来自 SourceReader 的记录。pollNext(ReaderOutput) 方法的返回值指示 SourceReader 的状态。]]></description><category></category></item><item><title><![CDATA[Flink1.14 SplitEnumerator概念入门讲解与源码解析 (二)]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/133088688</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/133088688</guid><author>Stray_Lambs</author><pubDate>Sun, 08 Oct 2023 16:53:14 +0800</pubDate><description><![CDATA[SplitEnumerator被认为是整个Source的“大脑”。SplitEnumerator的功能实现SplitEnumerator 可以在的帮助下完成所有上述工作，其会在 SplitEnumerator 的创建或者恢复的时候提供给 Source。SplitEnumeratorContext 允许SplitEnumerator 检索到 reader 的必要信息并执行协调操作。而在 Source 的实现中会将 SplitEnumeratorContext 传递给 SplitEnumerator 实例。]]></description><category></category></item><item><title><![CDATA[Flink1.14 Source概念入门讲解与源码解析(一)]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132544770</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132544770</guid><author>Stray_Lambs</author><pubDate>Fri, 22 Sep 2023 15:50:22 +0800</pubDate><description><![CDATA[目前可以看出，Souce接口的更新，其实是因为Flink在1.12之前将批处理任务与流处理任务分为两种实现模式。在底层实现中描述输入的数据如何被划分为不同的InputSplit，继承于 INputSplitSource描述如何从单个InputSplit读取记录，具体包括如何打开一个分配到的InputSplit，如何从这个INputSplit读取一条记录，如何得知记录已经读完和如何关闭这个Inputsplit描述如何获取输入数据的统计信息（比如文件的大小、记录的数目）]]></description><category></category></item><item><title><![CDATA[每日一题：leetcode 2594 修车的最少时间]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132733110</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132733110</guid><author>Stray_Lambs</author><pubDate>Thu, 07 Sep 2023 10:58:28 +0800</pubDate><description><![CDATA[这样就明确了，我只需要在一个范围里面进行判断最小的time是什么就行了，这个范围就是[1 - x * n * n]，其中x是随便某个人的rank，n是全部汽车数，即就是随便一个人修完全部车的时间。最终，这个算法其实就是二分答案，初听这个名字有点炫酷，但是其实就是二分查找，在答案范围内进行查询，找到满足条件的最值即可。- 第一位机械工修 2 辆车，需要 4 * 2 * 2 = 16 分钟。- 第二位机械工修 2 辆车，需要 2 * 2 * 2 = 8 分钟。，表示总共需要修理的汽车数目。]]></description><category></category></item><item><title><![CDATA[每日一题：leetcode 57 插入区间]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132540998</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132540998</guid><author>Stray_Lambs</author><pubDate>Mon, 28 Aug 2023 16:03:37 +0800</pubDate><description><![CDATA[跟之前的同向指针一样，只要互不重叠的情况下，就要看需要插入的区间是否在已有的区间内，判断的标准则是看插入的区间左边界是否有小于某个区间的右边界，如果有则合并。并且记录更大的右边界。在列表中插入一个新的区间，你需要确保列表中的区间仍然有序且不重叠（如果有必要的话，可以合并区间）。按照区间起始端点排序的区间列表。]]></description><category></category></item><item><title><![CDATA[每日一题：leetcode 56 合并区间]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132524518</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132524518</guid><author>Stray_Lambs</author><pubDate>Sun, 27 Aug 2023 16:42:22 +0800</pubDate><description><![CDATA[区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].一个不重叠的区间数组，该数组需恰好覆盖输入中的所有区间。区间 [1,4] 和 [4,5] 可被视为重叠区间。表示若干个区间的集合，其中单个区间为。请你合并所有重叠的区间，并返回。]]></description><category></category></item><item><title><![CDATA[每日一题：leetcode 1448 统计二叉树中好节点的数目]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132495193</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132495193</guid><author>Stray_Lambs</author><pubDate>Fri, 25 Aug 2023 14:47:16 +0800</pubDate><description><![CDATA[往下递归的同时需要维护一个当前路径上的最大值，而ans的话，看个人喜好，我是将ans同步传递下去进行更新。「好节点」X 定义为：从根到该节点 X 所经过的节点中，没有任何节点的值大于 X 的值。节点 2 -> (3, 3, 2) 不是好节点，因为 "3" 比它大。节点 5 -> (3,4,5) 是路径中的最大值。节点 3 -> (3,1,3) 是路径中的最大值。节点 4 -> (3,4) 是路径中的最大值。的二叉树，请你返回二叉树中好节点的数目。根节点 (3) 永远是个好节点。图中蓝色节点为好节点。]]></description><category></category></item><item><title><![CDATA[每日一题：leetcode 1109 航班预订统计]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132481630</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132481630</guid><author>Stray_Lambs</author><pubDate>Thu, 24 Aug 2023 20:02:58 +0800</pubDate><description><![CDATA[航班编号        1   2   3   4   5。预订记录 3 ：       25  25  25  25。总座位数：      10  55  45  25  25。因此，answer = [10,55,45,25,25]预订记录 2 ：       20  20。，里面的元素是每个航班预定的座位总数。因此，answer = [10,25]预订记录 1 ：   10  10。预订记录 1 ：   10  10。预订记录 2 ：       15。总座位数：      10  25。]]></description><category></category></item><item><title><![CDATA[每日一题：leetcode 1267 统计参与通信的服务器]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132477502</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132477502</guid><author>Stray_Lambs</author><pubDate>Thu, 24 Aug 2023 16:39:18 +0800</pubDate><description><![CDATA[还有更优的，比如可以通过hashmap去记录行列是否出现，或者是通过一维数组+一个变量去记录，放一个更优的解法。第一行的两台服务器互相通信，第三列的两台服务器互相通信，但右下角的服务器无法与其他服务器通信。如果两台服务器位于同一行或者同一列，我们就认为它们之间可以进行通信。先按行遍历，如果出现第一个，先记录位置，然后看看有没有第二个的出现。请你统计并返回能够与至少一台其他服务器进行通信的服务器的数量。中，1 表示单元格上有服务器，0 表示没有。（我这种肯定不是最优的）没有一台服务器能与其他服务器进行通信。]]></description><category></category></item><item><title><![CDATA[每日一题：leetcode 849 到最近的人的最大距离]]></title><link>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132428159</link><guid>https://blog.youkuaiyun.com/Stray_Lambs/article/details/132428159</guid><author>Stray_Lambs</author><pubDate>Tue, 22 Aug 2023 15:05:45 +0800</pubDate><description><![CDATA[记录上一个乘客的位置极为last，然后当前的乘客的位置为cur，最大的位置就是（cur-last）/ 2。当然需要判断特殊情况，比如前面都是空位置，然后坐第一个位置上，最大距离就是第一个位置到第一个乘客的位置。同理，最后都是空位置，坐在最后一个位置上，最大距离就是上一个乘客到最后一个空位置的大小。亚历克斯希望坐在一个能够使他与离他最近的人之间的距离达到最大化的座位上。如果亚历克斯坐在其它任何一个空位上，他到离他最近的人的距离为 1。如果亚历克斯坐在最后一个座位上，他离最近的人有 3 个座位远。]]></description><category></category></item></channel></rss>