<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[前端小白在前进的博客]]></title><description><![CDATA[大学生在学习前端]]></description><link>https://blog.youkuaiyun.com/m0_52040370</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_52040370]]></copyright><item><title><![CDATA[鸿蒙PC迁移：Scribus 开源排版软件（DTP）鸿蒙PC适配全记录]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/162128405</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/162128405</guid><author>m0_52040370</author><pubDate>Fri, 19 Jun 2026 20:02:41 +0800</pubDate><description><![CDATA[本文记录了开源桌面排版软件Scribus在HarmonyOS/OpenHarmony PC环境中的适配过程。Scribus基于Qt6和大量原生库（如poppler、cairo等），代码量庞大（约1259个C++文件），本次适配采用逐步验证策略：保留原有C++主体，新建鸿蒙工程壳，通过Qt for HarmonyOS的QPA插件将Qt窗口嵌入鸿蒙的XComponent组件。适配过程解决了SDK路径配置、按钮事件响应等问题，并利用hdc工具进行真机测试验证。项目采用模块化设计，通过条件编译隔离鸿蒙特有代码，确保]]></description><category></category></item><item><title><![CDATA[鸿蒙PC迁移：AutoHotkey v2 脚本引擎鸿蒙PC适配全记录]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/162128387</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/162128387</guid><author>m0_52040370</author><pubDate>Fri, 19 Jun 2026 20:01:31 +0800</pubDate><description><![CDATA[本文介绍将AutoHotkey适配到鸿蒙PC的独特过程。由于AutoHotkey核心功能依赖Win32系统且与鸿蒙安全架构冲突，无法完整移植。开发者选择仅移植其脚本语言引擎部分，通过NDK交叉编译为.so库，经N-API暴露给ArkTS，在鸿蒙PC上实现脚本编辑与执行功能。文章详细阐述了技术路线选择、可移植边界划定、开发机测试验证及最终工程结构，展示了在系统限制下如何实现有价值的功能迁移。]]></description><category></category></item><item><title><![CDATA[鸿蒙PC迁移：Shotcut 开源视频编辑器鸿蒙PC适配全记录 —— 从在鸿蒙跑起来到真能导入视频、轨道显示真实画面]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/162128376</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/162128376</guid><author>m0_52040370</author><pubDate>Fri, 19 Jun 2026 20:00:05 +0800</pubDate><description><![CDATA[本文介绍了视频编辑器Shotcut在鸿蒙PC上的适配过程，重点解决了Qt应用集成到鸿蒙Stage模型、绕过MLT直接使用FFmpeg实现视频解码播放，以及依赖库缺失导致白屏等问题。适配采用分步验证策略，新增harmony_pc目录作为鸿蒙工程，ArkTS负责窗口管理，Qt运行时承载界面，通过条件编译确保桌面构建不受影响。项目提供了两种构建模式：SHELL模式（默认）快速验证基础功能，FULL模式实现完整视频编辑能力。文章还分享了FFmpeg集成后白屏问题的排查方法，最终成功在鸿蒙PC上实现了视频导入、预览播]]></description><category></category></item><item><title><![CDATA[鸿蒙PC迁移：RenderDoc 图形调试器鸿蒙PC适配全记录]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/162128372</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/162128372</guid><author>m0_52040370</author><pubDate>Fri, 19 Jun 2026 19:59:04 +0800</pubDate><description><![CDATA[本文记录了将图形调试工具RenderDoc（v1.x）适配到HarmonyOS PC/鸿蒙真机环境的过程。RenderDoc是一款基于C++/Qt的帧捕获式图形调试器，原版支持多种图形API和平台。适配面临的主要挑战包括：Qt Widgets程序在鸿蒙Stage模型的运行、Native库加载、界面绘制到鸿蒙XComponent组件、Qt动态库打包进HAP等问题。项目采用混合架构，保持上游RenderDoc源码基本不变，新增鸿蒙工程目录实现双模式构建，通过Qt for Harmony SDK和QPA插件完成移]]></description><category></category></item><item><title><![CDATA[鸿蒙PC迁移：Avogadro Qt 分子编辑器鸿蒙PC适配全记录]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/162128357</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/162128357</guid><author>m0_52040370</author><pubDate>Fri, 19 Jun 2026 19:57:22 +0800</pubDate><description><![CDATA[文章摘要 本文记录了分子可视化工具Avogadro 2在鸿蒙PC/真机环境的适配过程。作为一款基于C++/Qt的计算化学工具，该项目面临Qt Widgets桌面程序整合鸿蒙Stage模型、OpenGL 4.0转OpenGL ES 3.x渲染等核心挑战。适配方案采用工程自带的Qt 5.15 for HarmonyOS SDK，通过CMake参数控制构建模式（SHELL模式优先实现基础分子查看功能），保持上游代码零修改的同时在harmony_pc目录新增鸿蒙工程结构。关键突破包括：Qt应用作为HAP原生库加载、]]></description><category></category></item><item><title><![CDATA[优雅的使用Nexent创建与部署前端面试智能体]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156871063</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156871063</guid><author>m0_52040370</author><pubDate>Mon, 12 Jan 2026 20:02:37 +0800</pubDate><description><![CDATA[Nexent，作为ModelEngine社区的核心智能体平台，重新定义了零代码开发。它允许用户通过纯语言描述，一键生成功能完备的智能体。平台深度集成MCP（Model Context Protocol）工具生态，赋予智能体强大的工具扩展与模型兼容能力，让用户无需涉足复杂的流程设计，即可轻松构建具备多模态对话、知识库检索与网络搜索等高级功能的AI应用。在ModelEngine官网找到“在线体验”，然后点击Nexent智能体进入：在AI平台中，知识库是一个专为大模型配备的“外部专家大脑”。]]></description><category></category></item><item><title><![CDATA[力扣刷题：最低票价]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156535198</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156535198</guid><author>m0_52040370</author><pubDate>Sat, 03 Jan 2026 11:22:52 +0800</pubDate><description><![CDATA[例如，如果我们在第 2 天获得一张 为期 7 天 的通行证，那么我们可以连着旅行 7 天：第 2 天、第 3 天、第 4 天、第 5 天、第 6 天、第 7 天和第 8 天。在第 1 天，你花了 costs[2] = $15 买了一张为期 30 天的通行证，它将在第 1, 2, …输入：days = [1,2,3,4,5,6,7,8,9,10,30,31], costs = [2,7,15]在第 1 天，你花了 costs[0] = $2 买了一张为期 1 天的通行证，它将在第 1 天生效。]]></description><category></category></item><item><title><![CDATA[力扣刷题：二叉树中的最大路径和]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156534423</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156534423</guid><author>m0_52040370</author><pubDate>Sat, 03 Jan 2026 10:52:34 +0800</pubDate><description><![CDATA[如果子树的和是负数，我们宁愿不选择这个子树，比如一个节点值是-10，左子树贡献-5，右子树贡献-3，最好的选择是都不要，返回0。在当前节点（需要拐弯的那个节点）的路径和 = 左子树的最长路径和 + 右子树的最长路径和 + 当前节点的值。解释：最优路径是 15 -> 20 -> 7 ，路径和为 15 + 20 + 7 = 42。解释：最优路径是 2 -> 1 -> 3 ，路径和为 2 + 1 + 3 = 6。以当前节点为根节点的子树的最长路径和 + 当前节点的值。路径和 是路径中各节点值的总和。]]></description><category></category></item><item><title><![CDATA[力扣刷题：爬楼梯]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156447437</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156447437</guid><author>m0_52040370</author><pubDate>Wed, 31 Dec 2025 09:52:31 +0800</pubDate><description><![CDATA[解释：有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶       3. 2 阶 + 1 阶。这道题是一个简单的动态规划问题，主要是定义好dp数组的含义，在这里，dp[i]代表爬i层楼梯，总共的方法数有dp[i]种。解释：有两种方法可以爬到楼顶。1.  1 阶 + 1 阶 2.   2 阶。所以，可以总结出规律：dp[i] = dp[i-1] + dp[i-2]当你爬两层楼梯时，有两种方法。当你爬三层楼梯时，有三种方法。当你爬四层楼梯时，有五种方法。]]></description><category></category></item><item><title><![CDATA[力扣刷题：移动零]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156422275</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156422275</guid><author>m0_52040370</author><pubDate>Tue, 30 Dec 2025 14:19:27 +0800</pubDate><description><![CDATA[给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序。当right遇到非零元素时，把right和 left 位置的元素交换。请注意 ，必须在不复制数组的情况下原地对数组进行操作。输入: nums = [0,1,0,3,12]输出: [1,3,12,0,0]1 所有非零元素都移动到了前面。2 非零元素的相对顺序保持不变。输入: nums = [0]3 所有的0都移动到了末尾。]]></description><category></category></item><item><title><![CDATA[力扣刷题：文件组合]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156421530</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156421530</guid><author>m0_52040370</author><pubDate>Tue, 30 Dec 2025 13:53:07 +0800</pubDate><description><![CDATA[待传输文件被切分成多个部分，按照原排列顺序，每部分文件编号均为一个 正整数（至少含有两个文件）。传输要求为：连续文件编号总和为接收方指定数字 target 的所有文件。解释：在上述示例中，存在两个连续正整数序列的和分别为 18，分别为 [3, 4, 5, 6] 和 [5, 6, 7]。这道题本质是寻找所有连续的正整数序列，这些序列的和等于给定的 target，序列长度至少为2。解释：在上述示例中，存在一个连续正整数序列的和为 12，为 [3, 4, 5]。输出：[[3,4,5,6],[5,6,7]]]]></description><category></category></item><item><title><![CDATA[力扣刷题：长按键入]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156421085</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156421085</guid><author>m0_52040370</author><pubDate>Tue, 30 Dec 2025 13:23:20 +0800</pubDate><description><![CDATA[如果 typed[j] === typed[j - 1]（即 typed 的当前字符和前一个字符相同），说明这个字符是长按产生的，j 继续向前移动。偶尔，在键入字符 c 时，按键可能会被长按，而字符可能被输入 1 次或多次。如果它对应的可能是你的朋友的名字（其中一些字符可能被长按），那么就返回 True。结束时，i 必须遍历完整个 name，否则说明 typed 里缺少 name 的部分字符，返回 false。如果 name[i] === typed[j]，说明当前字符匹配，i 和 j 都向前移动。]]></description><category></category></item><item><title><![CDATA[力扣刷题：Z字型变换]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156383765</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156383765</guid><author>m0_52040370</author><pubDate>Mon, 29 Dec 2025 10:32:06 +0800</pubDate><description><![CDATA[之后，你的输出需要从左往右逐行读取，产生出一个新的字符串，比如：“PAHNAPLSIIGYIR”。输入：s = “PAYPALISHIRING”, numRows = 3。输入：s = “PAYPALISHIRING”, numRows = 4。向右上移动：从第 numRows-1 行到第 0 行。向下移动：从第 0 行到第 numRows-1 行。输入：s = “A”, numRows = 1。输出：“PAHNAPLSIIGYIR”输出：“PINALSIGYAHRPI”核心思想：模拟 Z 字形遍历过程。]]></description><category></category></item><item><title><![CDATA[力扣刷题：第N位数字]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156382546</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156382546</guid><author>m0_52040370</author><pubDate>Mon, 29 Dec 2025 10:08:48 +0800</pubDate><description><![CDATA[首先设置当前位数以及在当前位数的时候有多少个数组，例如当前位数是1，那么此时就有9个数字（1-9），如果当前位数是2，此时就有90个数字（10-99），当n=11的时候，说明n>1*9，那么此时我们要找的第N位数字一定是落在10-99这个区间中的。给你一个整数 n ，请你在无限的整数序列 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …解释：第 11 位数字在序列 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, …接下来是确定具体是哪个数字，]]></description><category></category></item><item><title><![CDATA[力扣刷题：数组中重复的数据]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156328486</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156328486</guid><author>m0_52040370</author><pubDate>Sat, 27 Dec 2025 10:36:12 +0800</pubDate><description><![CDATA[这道题的思想是原地哈希，因为题目中比较特殊，数组中每一个数的值是在[1,n]这个区间中，数组的长度也刚好为n，所以我们可以借助数组中某个数的前一个索引表示这个数是否出现过，如果没出现过，就将这个数减一作为下标对应的元素设置为负数。，变为负数，那么下次我们再次遇到4这个数的时候，我们去查看arr[4-1]对应的元素，如果对应的元素为负数，那么说明元素4之前出现过一次。输入：nums = [4,3,2,7,8,2,3,1]输入：nums = [1,1,2]输入：nums = [1]]]></description><category></category></item><item><title><![CDATA[力扣刷题：将数组分成和相等的三个部分]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156327648</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156327648</guid><author>m0_52040370</author><pubDate>Sat, 27 Dec 2025 10:03:58 +0800</pubDate><description><![CDATA[arr[i] == arr[i + 1] + arr[i + 2] + …解释：0 + 2 + 1 = -6 + 6 - 7 + 9 + 1 = 2 + 0 + 1。解释：3 + 3 = 6 = 5 - 2 + 2 + 5 + 1 - 9 + 4。输入：arr = [0,2,1,-6,6,-7,9,1,2,0,1]输入：arr = [0,2,1,-6,6,7,9,-1,2,0,1]输入：arr = [3,3,6,5,-2,2,5,1,-9,4]1 计算总和，检查是否能被3整除。]]></description><category></category></item><item><title><![CDATA[力扣刷题：三个数的最大乘积]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156327383</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156327383</guid><author>m0_52040370</author><pubDate>Sat, 27 Dec 2025 09:52:04 +0800</pubDate><description><![CDATA[nums[x] * nums[y] * nums[z]（x < y < z，都是最大的）。给你一个整型数组 nums ，在数组中找出由三个数组成的最大乘积，并输出这个乘积。排序后，最小的两个数（可能是负数）和最大的一个数的乘积。因为负数相乘得到正数，再乘以最大正数可能很大。排序后，末尾三个数（最大的三个数）的乘积。输入：nums = [-1,-2,-3]输入：nums = [1,2,3,4]输入：nums = [1,2,3]取两种情况的最大值即可。]]></description><category></category></item><item><title><![CDATA[力扣刷题：路径总和]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156297374</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156297374</guid><author>m0_52040370</author><pubDate>Fri, 26 Dec 2025 11:03:15 +0800</pubDate><description><![CDATA[给你二叉树的根节点 root 和一个表示目标和的整数 targetSum。判断该树中是否存在 根节点到叶子节点 的路径，这条路径上所有节点值相加等于目标和 targetSum。输入：root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22。解释：由于树是空的，所以不存在根节点到叶子节点的路径。不存在 sum = 5 的根节点到叶子节点的路径。解释：等于目标和的根节点到叶节点路径如上图所示。叶子节点 是指没有子节点的节点。]]></description><category></category></item><item><title><![CDATA[力扣刷题：括号生成]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156297093</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156297093</guid><author>m0_52040370</author><pubDate>Fri, 26 Dec 2025 10:26:18 +0800</pubDate><description><![CDATA[输出：[“((()))”,“(()())”,“(())()”,“()(())”,“()()()”]数字 n 代表生成括号的对数，请你设计一个函数，用于能够生成所有可能的并且 有效的 括号组合。只有当已添加的右括号数量小于左括号数量时，才能添加右括号。：当左右括号都用了 n 个时，得到一个有效组合。只要左括号还有剩余，就可以添加左括号。]]></description><category></category></item><item><title><![CDATA[力扣刷题：矩阵重叠]]></title><link>https://blog.youkuaiyun.com/m0_52040370/article/details/156294876</link><guid>https://blog.youkuaiyun.com/m0_52040370/article/details/156294876</guid><author>m0_52040370</author><pubDate>Fri, 26 Dec 2025 09:42:53 +0800</pubDate><description><![CDATA[矩形以列表 [x1, y1, x2, y2] 的形式表示，其中 (x1, y1) 为左下角的坐标，(x2, y2) 是右上角的坐标。输入：rec1 = [0,0,2,2], rec2 = [1,1,3,3]输入：rec1 = [0,0,1,1], rec2 = [1,0,2,1]输入：rec1 = [0,0,1,1], rec2 = [2,2,3,3]矩形1的左边缘在矩形2的右边缘的左边。矩形1的右边缘在矩形2的左边缘的右边。矩形1的下边缘在矩形2的上边缘的下边。矩形1的上边缘在矩形2的下边缘的上边。]]></description><category></category></item></channel></rss>