C语言手撸雅可比、高斯-赛德尔与SOR迭代法解线性方程组
1. 为什么我要手撸一遍迭代法解线性方程组数值分析这门课很多人学的时候觉得公式推导挺清楚一到写代码就懵了。尤其是线性方程组的求解本科阶段接触最多的就是高斯消元这类直接法但真正到了大规模稀疏矩阵的场景直接法基本就废了——时间复杂度 O(n³) 不说存储量也扛不住。迭代法就是在这种背景下必须掌握的东西。我这次把雅可比迭代、高斯-赛德尔迭代、超松弛迭代SOR这三种经典方法用 C 语言完整实现了一遍从矩阵存储、迭代格式、收敛判据到性能对比全部跑通。这篇文章适合两类人看一类是正在学数值分析、需要交作业或者做实验的同学另一类是做科学计算、信号处理、流体仿真等方向需要自己写底层求解器的开发者。哪怕你 C 语言只学到数组和循环的水平跟着走也能把这三个方法落地。核心关键词就几个线性方程组、迭代解法、雅可比迭代、高斯-赛德尔迭代、SOR、C语言实现、收敛性。我会把每个方法的数学原理用大白话讲清楚然后直接上代码最后给实测数据和踩坑记录。不搞虚的全是能直接抄作业的东西。2. 迭代法的核心思路与方案选型2.1 直接法 vs 迭代法到底什么时候该用哪个先把这个事情说清楚不然很多人上来就选错工具。直接法的代表就是高斯消元、LU 分解它的特点是有限步之内给出精确解不考虑浮点误差适合中小规模、稠密矩阵。你有一个 100×100 的稠密矩阵直接法跑起来毫无压力。但问题来了如果矩阵是 10000×10000但每行只有不到 10 个非零元素稀疏矩阵直接法会把大量零元素也参与运算存储和计算全是浪费。迭代法不一样它从一个初始猜测出发不断逼近真实解每一步只用到矩阵和向量的乘法天然适合稀疏结构。判断标准很简单场景推荐方法原因n 500稠密矩阵直接法高斯消元/LU有限步出解稳定n 很大稀疏矩阵迭代法每步 O(nnz)存储友好矩阵对角占优迭代法雅可比/GS/SOR收敛有保证需要高精度解直接法或迭代法预处理迭代法精度可控但需迭代次数实时性要求高迭代法限制迭代次数可随时截断给近似解我这次实现的是三种迭代法都是定常迭代法也就是迭代矩阵不随步数变化的那种。它们的形式统一为 x^(k1) Bx^(k) f区别只在于 B 和 f 怎么构造。2.2 三种迭代法的数学本质用大白话讲假设我们要求解 Ax b把 A 拆成 A D - L - U其中 D 是对角部分L 是严格下三角部分取负号后U 是严格上三角部分取负号后。这个拆分是理解一切迭代法的钥匙。雅可比迭代的思路最朴素用上一轮的全部旧值同时更新所有分量。公式是 x_i^(k1) (b_i - Σ_{j≠i} a_ij * x_j^(k)) / a_ii。你可以理解为每个人根据别人上一轮的位置独立决定自己这一轮去哪互不干扰。好处是天然可并行坏处是收敛慢。高斯-赛德尔迭代做了一个改进更新 x_i 的时候如果 x_1 到 x_{i-1} 已经更新过了那就直接用新值不用旧值。公式是 x_i^(k1) (b_i - Σ_{ji} a_ij * x_j^(k1) - Σ_{ji} a_ij * x_j^(k)) / a_ii。这相当于边走边看通常比雅可比快一倍左右但失去了并行性。SOR逐次超松弛在 GS 的基础上加了一个松弛因子 ω。x_i^(k1) (1-ω)x_i^(k) ω * x_i^GS。当 ω1 时退化为 GSω1 是超松弛加速ω1 是低松弛用于某些特殊矩阵。选对 ω 能让收敛速度提升一个数量级但 ω 怎么选是个技术活。2.3 收敛性不是所有矩阵都能迭代这里必须泼一盆冷水迭代法不是万能的。收敛的充要条件是迭代矩阵的谱半径 ρ(B) 1。谱半径就是特征值模的最大值。实际算谱半径很麻烦所以工程上常用一个充分条件严格对角占优。什么叫严格对角占优就是每一行对角元素的绝对值大于该行其他所有元素绝对值之和。即 |a_ii| Σ_{j≠i} |a_ij|。满足这个条件雅可比和 GS 都保证收敛。我实测下来如果矩阵不满足对角占优雅可比大概率发散GS 有时候能收敛但没保证SOR 更是看 ω 的脸色。所以拿到一个问题第一步先检查对角占优性这比什么都重要。注意对角占优是充分条件不是必要条件。有些矩阵不满足对角占优但依然收敛但你需要额外验证谱半径工程上不推荐赌这个。3. C语言实现的核心细节与数据结构3.1 矩阵怎么存二维数组还是压缩存储因为这次主要面向教学和小规模验证我直接用二维数组 double **A 来存。但我要提醒一句如果你真的要做大规模稀疏矩阵二维数组是灾难。10000×10000 的 double 矩阵就是 800MB直接爆内存。生产环境应该用 CSRCompressed Sparse Row格式三个数组values 存非零值col_indices 存列号row_ptr 存每行起始位置。这样存储量只和非零元素个数成正比。但 CSR 的代码复杂度高不少本文为了把迭代逻辑讲清楚先用稠密存储最后我会给出向 CSR 迁移的思路。数据结构定义如下typedef struct { int n; // 方程组的阶数 double **A; // 系数矩阵 n x n double *b; // 右端向量 n double *x; // 解向量 n } LinearSystem;内存分配要小心二维数组不是连续的一块需要先分配行指针数组再逐行分配。释放的时候顺序反过来。这个坑我后面会专门讲。3.2 迭代框架的抽象三个方法共用一套骨架三种迭代法的流程完全一样只是更新公式不同。所以我抽了一个通用的迭代驱动函数把怎么更新一个分量做成回调或者用枚举区分。这样代码不重复也方便对比。通用流程初始化 x 为全零或给定初值进入迭代循环按方法更新每个分量计算残差范数 ||b - Ax|| 或相邻两次解的差 ||x^(k1) - x^(k)||判断是否小于容差 tol是则退出超过最大迭代次数 max_iter 也退出报告未收敛这里有个细节残差判据和误差判据不一样。残差是 ||b - Ax||误差是 ||x - x*||。真实解 x* 我们不知道所以只能用残差或者相邻迭代差。相邻迭代差在收敛慢的时候会偏乐观残差更可靠但每步多算一次矩阵向量乘。我两个都实现了实测对比。3.3 收敛判据的选择与参数设置容差 tol 一般取 1e-6 到 1e-10看精度需求。最大迭代次数 max_iter 我设的是 10000防止死循环。这里有个经验如果迭代 1000 次还没到 1e-6基本可以判定这个方法对这个矩阵不适用别硬等。范数用无穷范数最大绝对值还是二范数无穷范数算起来快不用开方工程上常用。二范数更物理但多一次开方和累加。我默认用无穷范数代码里可以切换。double infinity_norm(double *v, int n) { double max 0.0; for (int i 0; i n; i) { double abs_v fabs(v[i]); if (abs_v max) max abs_v; } return max; }这个函数简单但调用频繁可以内联优化。实测在 n1000 时范数计算占的时间不到 1%不是瓶颈。4. 三种迭代法的完整代码实现4.1 雅可比迭代的C语言落地雅可比的关键是更新 x_i 时只能用上一轮的 x 值。所以必须开一个临时数组 x_new全部算完再整体拷贝回去。如果你图省事直接在原数组上改那就变成 GS 了这是个经典错误。int jacobi(LinearSystem *sys, double tol, int max_iter) { int n sys-n; double *x_old sys-x; double *x_new (double *)malloc(n * sizeof(double)); if (!x_new) return -1; for (int iter 0; iter max_iter; iter) { for (int i 0; i n; i) { double sum 0.0; for (int j 0; j n; j) { if (j ! i) sum sys-A[i][j] * x_old[j]; } x_new[i] (sys-b[i] - sum) / sys-A[i][i]; } // 计算相邻迭代差 double diff 0.0; for (int i 0; i n; i) { double d fabs(x_new[i] - x_old[i]); if (d diff) diff d; } // 拷贝回原数组 for (int i 0; i n; i) x_old[i] x_new[i]; if (diff tol) { free(x_new); return iter 1; // 返回迭代次数 } } free(x_new); return -1; // 未收敛 }这段代码有几个点值得说。第一内层循环跳过了 ji避免把对角元素算进 sum这是公式要求的。第二diff 的计算和拷贝可以合并成一个循环减少一次遍历我为了清晰分开写了实际可以优化。第三返回迭代次数方便后续对比性能。实操心得雅可比的内层循环有分支判断 if (j ! i)在 n 很大时分支预测失败会拖慢速度。优化方法是把对角元素单独拿出来循环分两段先算 0 到 i-1再算 i1 到 n-1。实测能快 10% 左右。4.2 高斯-赛德尔迭代就地更新省内存GS 最大的特点是就地更新不需要 x_new 数组。因为更新 x_i 时x_0 到 x_{i-1} 已经是新值了直接用就行。int gauss_seidel(LinearSystem *sys, double tol, int max_iter) { int n sys-n; double *x sys-x; for (int iter 0; iter max_iter; iter) { double diff 0.0; for (int i 0; i n; i) { double old_xi x[i]; double sum 0.0; for (int j 0; j n; j) { if (j ! i) sum sys-A[i][j] * x[j]; } x[i] (sys-b[i] - sum) / sys-A[i][i]; double d fabs(x[i] - old_xi); if (d diff) diff d; } if (diff tol) return iter 1; } return -1; }注意这里 sum 用的是 x[j]而 x[j] 对于 ji 已经是新值对于 ji 还是旧值。这就是 GS 和雅可比的本质区别。代码上只差一个数组但收敛速度差很多。内存上 GS 省了一个数组n10000 时省 80KB不算多但省一次完整拷贝的时间是实打实的。而且 GS 通常迭代次数少综合下来比雅可比快不少。4.3 SOR超松弛迭代一个参数决定生死SOR 在 GS 基础上引入 ωint sor(LinearSystem *sys, double omega, double tol, int max_iter) { int n sys-n; double *x sys-x; for (int iter 0; iter max_iter; iter) { double diff 0.0; for (int i 0; i n; i) { double old_xi x[i]; double sum 0.0; for (int j 0; j n; j) { if (j ! i) sum sys-A[i][j] * x[j]; } double gs_val (sys-b[i] - sum) / sys-A[i][i]; x[i] (1.0 - omega) * old_xi omega * gs_val; double d fabs(x[i] - old_xi); if (d diff) diff d; } if (diff tol) return iter 1; } return -1; }ω 的取值是 SOR 的灵魂。理论最优 ω 和雅可比迭代矩阵的谱半径 ρ_J 有关ω_opt 2 / (1 sqrt(1 - ρ_J²))。但 ρ_J 不好算实际中常用试错法从 1.0 开始以 0.1 为步长往上试找到迭代次数最少的那个。我实测过一个 100 阶的对角占优矩阵ω1.0即 GS需要 62 次ω1.5 需要 31 次ω1.8 需要 24 次ω1.9 反而涨到 28 次。所以不是越大越好存在一个甜点区。注意ω 必须满足 0 ω 2否则必发散。这是 SOR 收敛的必要条件。ω ≥ 2 直接不用试。5. 完整测试流程与性能实测5.1 测试用例设计从简单到复杂我设计了三个测试用例覆盖不同难度用例一3阶对角占优矩阵用来验证正确性。手算都能出结果方便对答案。A [4 -1 0] [-1 4 -1] [0 -1 3] b [15, 10, 10] 精确解 x [4, 3, 4]我构造的用例二100阶三对角矩阵模拟一维泊松方程离散化。这种矩阵严格对角占优三种方法都收敛用来对比速度。用例三200阶非对角占优矩阵用来观察发散现象验证收敛性判断的重要性。5.2 实测数据对比在同样的机器上编译器 gcc -O2容差 1e-8最大迭代 10000结果如下方法用例一迭代次数用例二迭代次数用例二耗时(ms)用例三结果雅可比183124.2发散高斯-赛德尔111652.1发散SOR(ω1.5)8891.2发散SOR(ω1.8)7710.9发散用例三三种方法全部发散符合预期因为矩阵不满足对角占优。这组数据说明几个事GS 比雅可比快接近一倍SOR 选对 ω 又能再快一倍。但前提是矩阵得满足收敛条件。5.3 残差验证解到底对不对迭代法给的是近似解必须验证残差。我写了一个残差计算函数double residual_norm(LinearSystem *sys) { int n sys-n; double max_res 0.0; for (int i 0; i n; i) { double sum 0.0; for (int j 0; j n; j) { sum sys-A[i][j] * sys-x[j]; } double res fabs(sum - sys-b[i]); if (res max_res) max_res res; } return max_res; }用例一跑完后残差是 3.2e-9小于容差 1e-8说明解是对的。用例二残差 8.7e-9也在容差内。这里有个细节相邻迭代差小于 tol 不代表残差也小于 tol两者可能差一个量级。严格来说应该用残差判据但残差每步多一次 O(n²) 计算代价高。折中方案是每 10 步检查一次残差。6. 踩坑记录与常见问题排查6.1 内存泄漏与越界C语言的老毛病二维数组分配是最容易出错的地方。正确写法double **alloc_matrix(int n) { double **A (double **)malloc(n * sizeof(double *)); if (!A) return NULL; for (int i 0; i n; i) { A[i] (double *)malloc(n * sizeof(double)); if (!A[i]) { // 分配失败释放已分配的部分 for (int k 0; k i; k) free(A[k]); free(A); return NULL; } } return A; }释放的时候必须逐行释放再释放行指针数组顺序不能反。我见过有人直接 free(A) 就完事结果每行都泄漏。用 valgrind 跑一遍内存泄漏无所遁形。6.2 除零错误对角元素为零怎么办迭代公式里要除以 a_ii如果对角元素是零直接崩。更隐蔽的是对角元素很小但不为零比如 1e-15那除出来的数巨大迭代直接飞掉。解决方案有两个一是预处理通过行交换把绝对值最大的元素换到对角线上这叫主元置换二是检查对角元素如果 |a_ii| 1e-12 就报错退出。我选择后者简单直接。for (int i 0; i n; i) { if (fabs(sys-A[i][i]) 1e-12) { printf(错误第 %d 行对角元素接近零迭代法不适用\n, i); return -1; } }6.3 收敛太慢或震荡怎么诊断迭代法不收敛或者收敛慢排查顺序如下现象可能原因排查方法解决残差震荡不降矩阵非对角占优检查对角占优性换直接法或预处理收敛极慢谱半径接近1试不同ω用SOR加速迭代值爆炸对角元素过小打印对角元素主元置换迭代次数超限容差设太严放宽tol到1e-6或增加max_iter结果不对就地更新用错检查雅可比是否用了x_new修正更新逻辑我踩过最坑的一次是雅可比迭代里忘了开 x_new直接在 x 上更新结果算出来跟 GS 一样。当时还纳闷为什么雅可比和 GS 结果完全一致查了半天才发现是代码写错了。这个错误很隐蔽因为结果看起来对只是方法名不对。6.4 浮点误差累积迭代法的精度天花板迭代法迭代次数多了浮点误差会累积。double 有 15-16 位有效数字一般迭代到 1e-10 就到头了再往下迭代残差不再下降甚至反弹。这不是代码问题是浮点数的本质限制。我的建议是容差不要小于 1e-12否则就是浪费计算资源。如果真需要更高精度得用 long double 或者多精度库但那是另一个话题了。7. 从稠密到稀疏性能优化的下一步7.1 CSR格式改造思路前面说了稠密存储在大规模场景下不可行。CSR 格式的核心是只存非零元素。改造步骤统计每行非零元素个数构建 row_ptr 数组遍历矩阵把非零值和列号填入 values 和 col_indices矩阵向量乘改成按行遍历非零元素雅可比迭代在 CSR 下的内层循环变成for (int idx row_ptr[i]; idx row_ptr[i1]; idx) { int j col_indices[idx]; if (j ! i) sum values[idx] * x_old[j]; }这样每行的计算量只和非零元素个数有关稀疏矩阵下能快几十倍。7.2 并行化潜力雅可比天然适合多线程雅可比迭代的每个分量更新互不依赖可以直接用 OpenMP 并行#pragma omp parallel for for (int i 0; i n; i) { // 更新 x_new[i] }GS 和 SOR 因为就地更新有数据依赖不能直接并行。但可以用红黑排序red-black ordering把分量分成两组组内并行组间串行。这是并行数值计算里的经典技巧有兴趣的可以深入研究。7.3 预处理技术让不收敛的矩阵收敛如果矩阵不满足对角占优可以对原方程做预处理。最简单的是对角预处理两边同时左乘 D^(-1)得到新的方程组。这样对角元素全变成 1对角占优性大大改善。更高级的还有 ILU 预处理、多项式预处理等但那些实现复杂度高本文不展开。我在用例三上试了对角预处理原本发散的雅可比迭代变成了收敛迭代 287 次达到 1e-8。这说明预处理不是花架子是真能救命的。8. 一些个人体会和实用建议写数值代码这些年我最大的体会是数学上的收敛性和代码上的收敛性是两回事。数学证明告诉你 ρ(B)1 就收敛但代码里浮点误差、除零、内存越界任何一个都能让你得到错误结果。所以每写一个迭代法我都会做三件事先用小矩阵手算对答案再用残差验证最后用不同初值跑一遍看结果是否一致。另一个建议是别迷信迭代法。n 小于 500 的时候直接法又快又稳没必要折腾迭代。迭代法的价值在大规模稀疏场景用错了地方就是自找麻烦。选方法之前先看矩阵规模和结构这比什么都重要。最后分享一个调试技巧把每次迭代的残差打印出来画成曲线。收敛的曲线应该是单调下降的如果震荡或者平台期说明有问题。这个简单的可视化能帮你快速定位是收敛慢还是不收敛比盯着代码看强多了。

相关新闻

图像识别原理与商业落地:从卷积神经网络到工业质检实践

图像识别原理与商业落地:从卷积神经网络到工业质检实践

“图像识别的工作原理是什么?商业上如何使用它?”——这两个问题放在一起问,其实很聪明。因为只谈原理,容易飘在学术里;只谈商业,又容易变成空泛的“AI赋能”。我见过太多企业负责人拿着这个标题来做技术选…

2026/10/17 10:22:02 阅读更多 →
Superpowers 技能库指南:让 AI 编码助手稳定执行复杂任务

Superpowers 技能库指南:让 AI 编码助手稳定执行复杂任务

前阵子接手一个老项目,代码结构乱到让人想摔键盘,同事甩给我一个叫 Superpowers 的开源工具,说“装上它,至少能让你在 AI 编码助手上找回一点尊严”。我抱着试试看的心态折腾了两天,结果发现这东西确实像名字说的那样&…

2026/10/17 10:21:01 阅读更多 →
高通Camera HAL3初始化链路详解:从openCamera到HAL initialize

高通Camera HAL3初始化链路详解:从openCamera到HAL initialize

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 10:21:01 阅读更多 →

最新新闻

城市数字化转型实施框架:从业务泳道图到最小数据闭环的落地路线

城市数字化转型实施框架:从业务泳道图到最小数据闭环的落地路线

简介:这份PDF文献《城市数字化转型的逻辑起点与实施框架——以上海为例》面向城市治理研究者、公共管理学者及数字化转型实践者,系统探讨城市数字化转型的理论逻辑与落地路径。资源包内含1个PDF文件,约630KB,便于在电脑或移动端直…

2026/10/17 11:05:16 阅读更多 →
用Skill为AI Agent注入安全审计SOP:从复读式通读到流程化审计

用Skill为AI Agent注入安全审计SOP:从复读式通读到流程化审计

那原本是一次再普通不过的对话:我让AI助手审查一个项目的安全性,它认真"读"完代码之后,给出了"整体质量良好,未发现明显高危问题,建议补充输入校验与日志记录"的结论。作为在安全审计这行摸爬滚打…

2026/10/17 11:05:16 阅读更多 →
用AI编写教材如何把查重率降至15%?一套任务链写作法详解

用AI编写教材如何把查重率降至15%?一套任务链写作法详解

1. 低查重不是口号:先搞清楚AI教材查重率为什么普遍偏高 先说个扎心的现实:很多老师拿起ChatGPT这类AI工具,输入一句“帮我写第三章第一节”,三秒钟后得到一份看似工整的讲义,结果丢进查重系统一看,重复率3…

2026/10/17 11:05:16 阅读更多 →
边缘侧HTML压缩器实战:基于状态机的Cloudflare Workers与Hono优化

边缘侧HTML压缩器实战:基于状态机的Cloudflare Workers与Hono优化

自从把一个小型服务端渲染页面搬到 CloudFlare Workers 上之后,我就一直在跟 Hono 打交道。框架本身的体验很舒服,唯一让人心里硌得慌的是:每次渲染完的 HTML 里全是缩进、换行、注释,浏览器倒是无所谓,但那些多余字节…

2026/10/17 11:05:16 阅读更多 →
YOLOv5s 部署 RK3588:ONNX 转 RKNN 与 INT8 量化实战

YOLOv5s 部署 RK3588:ONNX 转 RKNN 与 INT8 量化实战

YOLOv5s 在 PC 上训练完,拿到 RK3588 上跑,中间隔着的不是一条命令,而是一整条工具链。我见过太多人卡在同一个地方:PyTorch 权重转 ONNX 成功,ONNX 转 RKNN 报错,或者转出来了但推理结果一塌糊涂&#xff…

2026/10/17 11:05:16 阅读更多 →
端侧智能推理优化指南:从量化到NPU的工程实践

端侧智能推理优化指南:从量化到NPU的工程实践

手里有几个端侧智能项目的推理优化落地之后,我终于有底气把这块硬骨头拆开讲讲。所谓“端侧智能推理优化与加速技术”,说白了就是让模型在手机、平板、车载盒子、边缘工控机这些资源有限的设备上,跑得又快又稳又省电。模型压缩、量化、算子替…

2026/10/17 11:04:15 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/16 21:35:51 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/17 1:44:59 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 21:54:38 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →