MATLAB最短路算法实战:从Dijkstra原理到美赛建模应用
1. 从“最短路”到“美赛”一个数学建模新手的必经之路如果你正在准备美国大学生数学建模竞赛MCM/ICM并且把目光投向了“最短路问题”同时还在自学MATLAB那么恭喜你你正踩在一条非常经典且高效的备赛路径上。这条路我走过也带很多学生走过。最短路问题几乎是数模竞赛中“出场率”最高的几类问题之一从物流配送、网络通信、交通规划到灾害应急它的身影无处不在。而MATLAB以其强大的矩阵运算能力和丰富的工具箱是解决这类问题当之无愧的“瑞士军刀”。但问题来了网上教程千千万为什么自己动手还是“一看就会一写就废”很多同学在自学时往往陷入两个极端要么沉迷于各种炫酷算法的理论推导却写不出能跑的代码要么只会调用几个内置函数一旦题目条件稍有变化就束手无策。这篇文章我想和你分享的不是一份冰冷的算法说明书而是一个从“知道概念”到“能在美赛高压下灵活运用”的完整实战指南。我们会把最短路问题掰开揉碎结合MATLAB讲清楚为什么要这么建模怎么用代码实现以及在实际比赛中可能遇到哪些坑。我们的目标很明确让你手里有代码心里有地图面对美赛题目时能迅速找到那条通往解决方案的“最短路”。2. 最短路问题不止于“找最短距离”在深入代码之前我们必须先统一思想数学建模中的“最短路”绝不仅仅是地图上两点之间的最短直线距离。它是一种抽象的优化思想核心是在一个由“节点”和“边”构成的网络图中寻找从起点到终点总“权重”最小的路径。2.1 核心概念与美赛场景映射这里有几个关键概念你需要像熟悉自己名字一样熟悉它们节点可以代表任何实体。在城市交通网络中是交叉路口在通信网络中是路由器或基站在物流问题中是仓库、配送中心或客户点在社交网络中是个人。边连接两个节点的关系具有方向性有向图或无方向性无向图。在美赛题目中一条边可能代表道路权重是距离、时间或通行成本。数据传输链路权重是带宽、延迟或丢包率。物资运输通道权重是运输成本、碳排放量或风险值。人际关系权重是亲密度、信息传播概率。权重这才是最短路问题的灵魂。它定义了“短”的标准。在很多赛题中目标不是最小化地理距离而是最小化时间、成本、风险或最大化可靠性此时可将可靠性倒数作为权重。例如在灾害救援题中路径的“权重”可能需要综合道路损坏程度、通行时间和救援紧迫性。一个常见的建模陷阱很多新手会不假思索地把题目给出的“距离”直接当作权重输入算法。但美赛的精华往往在于权重的自定义。你需要根据题目目标构建一个复合权重函数。比如权重 a * 时间 b * 成本 c * 风险其中a, b, c是根据题目要求设定的系数。这个构建过程本身就是建模能力的体现。2.2 主流算法选型为什么是Dijkstra和它的朋友们面对最短路问题MATLAB提供了几种武器。选择哪一种取决于你的图网络的特点graph/digraph对象 shortestpath函数这是MATLAB R2015b以后推荐的主流、高级且直观的方法。它底层封装了成熟的算法你只需要关心图的构建。对于99%的美赛问题这应该是你的首选。因为它代码简洁易于调试且能方便地输出路径节点序列和总权重。graphallshortestpaths函数用于计算图中所有节点对之间的最短路径即“全源最短路”返回一个距离矩阵。当你需要分析网络整体连通效率或起点、终点不确定需要频繁查询时有用。例如评估一个交通网络中所有区域之间的平均通行时间。自定义实现Dijkstra或A*算法虽然不推荐在时间紧迫的美赛中从头造轮子但理解它们至关重要。Dijkstra算法解决非负权重单源最短路问题的经典算法。它是理解最短路思想的基石。在MATLAB中当你的权重非常复杂例如是其他变量的函数无法直接构建graph对象时你可能需要手动实现Dijkstra来嵌入你的权重计算逻辑。A*算法在Dijkstra基础上加入了“启发式函数”用于预测当前节点到终点的代价从而大幅减少搜索范围效率更高。特别适用于已知终点位置、且节点具有地理位置信息的问题比如网格地图上的寻路。MATLAB的shortestpath函数在某些情况下对某些图类型可能就使用了A*的变种。选型心法优先使用graphshortestpath组合。只有当你的权重是动态的、需要复杂计算或者题目明确要求你实现特定算法时才考虑手动编写。在美赛论文中即使你调用了内置函数也必须在模型部分清晰地阐述你使用的是Dijkstra算法原理并说明MATLAB的实现是可靠且高效的。3. MATLAB实战从构建网络到求解路径理论说得再多不如一行代码。让我们从一个完整的、可复用的例子开始。假设我们遇到一个简化版的美赛题目某城市有5个主要区域节点部分道路单行有向边我们需要找出从区域1市政府到区域5应急物资中心的最短时间路径。已知某些道路在高峰时段会有拥堵时间权重需要调整。3.1 基础建模构建图对象并求解这是最标准、最推荐的操作流程。% 步骤1定义节点和边 % 节点就是1,2,3,4,5我们更关心的是边和权重 start_nodes [1, 1, 2, 2, 3, 4]; % 每条边的起点 end_nodes [2, 3, 3, 4, 5, 5]; % 每条边的终点 % 权重基于平时通行时间分钟 weights [5, 10, 3, 2, 7, 4]; % 步骤2创建有向图对象 G digraph(start_nodes, end_nodes, weights); % 步骤3绘制图形直观检查论文中可放入美观的示意图 figure; p plot(G, EdgeLabel, G.Edges.Weight, LineWidth, 2, MarkerSize, 7, NodeColor, r); title(城市区域交通网络图平时); xlabel(节点1-市政府, 5-应急中心); % 步骤4计算从节点1到节点5的最短路径 [path_nodes, path_length] shortestpath(G, 1, 5); fprintf(最短路径节点序列%s\n, num2str(path_nodes)); fprintf(最短通行时间%.2f 分钟\n, path_length); % 步骤5高亮显示最短路径 highlight(p, path_nodes, EdgeColor, g, LineWidth, 3); highlight(p, path_nodes(1), NodeColor, b, MarkerSize, 10); % 起点蓝色 highlight(p, path_nodes(end), NodeColor, m, MarkerSize, 10); % 终点洋红色代码解读与避坑点digraph用于创建有向图。如果是双向道路你需要添加两条方向相反的边。使用graph则是无向图。shortestpath函数返回两个值path_nodes是路径经过的节点编号数组path_length是路径的总权重时间。这是你论文中可以直接引用的结果。易错点节点编号必须是正整数但可以不连续。如果数据中节点是字符串如地名可以使用cell数组G digraph({A,B}, {B,C}, weights)shortestpath函数同样支持。可视化在美赛论文中一张清晰的网络图和最短路径高亮图是极大的加分项。务必调整好图形属性使其在论文中美观、易读。3.2 进阶操作动态权重与全源最短路现在考虑题目进阶晚高峰时段道路(1,3)和(3,5)的通行时间增加50%。我们需要重新计算。% 假设我们有一个函数能根据道路ID和时间段返回动态权重 % 这里简化处理直接修改权重向量 peak_weights weights; % 复制原权重 peak_weights([2, 5]) weights([2, 5]) * 1.5; % 道路(1,3)和(3,5)拥堵 % 创建高峰期的图对象 G_peak digraph(start_nodes, end_nodes, peak_weights); % 重新计算最短路 [path_nodes_peak, path_length_peak] shortestpath(G_peak, 1, 5); fprintf(高峰时段最短路径%s 时间%.2f 分钟\n, num2str(path_nodes_peak), path_length_peak); % 对比分析 if ~isequal(path_nodes, path_nodes_peak) fprintf(注意高峰时段最优路径发生了变化\n); % 可以进一步分析变化的原因这是论文中可以进行深入讨论的点 end动态权重处理心得在实际美赛题目中权重可能依赖于时间、流量、天气等多种因素。我的建议是将权重计算封装成一个独立的函数。例如getEdgeWeight(edge_id, current_time, traffic_flow)。然后在构建图之前循环所有边调用这个函数生成权重数组。这样代码结构清晰也便于进行灵敏度分析比如改变某个参数看最短路径是否稳定。接下来如果题目要求你评估整个网络的效率或者需要频繁查询任意两点间的最短时间例如为多个救援队规划路线就需要计算全源最短路。% 计算所有节点对之间的最短距离矩阵 D distances(G); % D是一个 n x n 的矩阵D(i,j) 表示节点i到j的最短距离 % 例如计算网络的平均最短通行时间忽略无穷大即不连通的点 valid_distances D(isfinite(D)); % 取出所有有限值 avg_time mean(valid_distances); fprintf(网络平均最短通行时间%.2f 分钟\n, avg_time); % 查找哪两个区域之间最“远” [max_dist, idx] max(D(:)); [row, col] ind2sub(size(D), idx); fprintf(最不连通的区域对是 %d - %d 距离为 %.2f 分钟\n, row, col, max_dist);distances函数返回的矩阵D是一个强大的中间结果。你可以基于它做很多网络分析比如计算网络的直径max(D(:))、平均路径长度、或某个节点的中心性到所有其他节点距离的平均值。这些指标都能为你的模型提供更丰富的分析和讨论维度。4. 当内置函数不够用手撕Dijkstra算法虽然内置函数强大但总有特殊情况。比如你的“权重”不是预先知道的固定值而是在路径搜索过程中根据已经走过的路径动态计算出来的例如路径的“风险”会累积。这时你可能需要手动实现算法核心。理解Dijkstra也能让你在论文中把算法讲得更透彻。下面是一个针对节点编号为1到n的网络的、非最优但非常清晰易懂的Dijkstra实现适合教学和理解。function [dist, prev] myDijkstra(adj_matrix, source) % MYDIJKSTRA 使用邻接矩阵实现Dijkstra算法 % adj_matrix: n x n 的邻接矩阵adj_matrix(i,j) 表示从i到j的边的权重若无连接则为Inf % source: 源节点编号 % dist: 1 x n 向量dist(i) 表示从源点到节点i的最短距离 % prev: 1 x n 向量prev(i) 表示节点i在最短路径上的前驱节点用于回溯路径 n size(adj_matrix, 1); dist inf(1, n); prev zeros(1, n); visited false(1, n); dist(source) 0; for i 1:n % 找到未访问节点中距离最小的节点u min_dist inf; u -1; for v 1:n if ~visited(v) dist(v) min_dist min_dist dist(v); u v; end end if u -1 % 所有可达节点都已处理完毕 break; end visited(u) true; % 松弛操作更新u的所有邻居的距离 for v 1:n if adj_matrix(u, v) inf % 如果u到v有边 alt dist(u) adj_matrix(u, v); if alt dist(v) dist(v) alt; prev(v) u; end end end end end % 使用示例将之前的图G转换为邻接矩阵 adj full(adjacency(G, weighted)); % 将graph对象转换为带权邻接矩阵无边处为0 adj(adj 0) inf; % 将0权重表示无边替换为Inf for i 1:size(adj,1) adj(i,i) 0; % 对角线设为0 end [dist, prev] myDijkstra(adj, 1); fprintf(手动Dijkstra结果到节点5的距离%.2f\n, dist(5)); % 回溯路径 path []; node 5; while node ~ 0 path [node, path]; node prev(node); end fprintf(回溯路径%s\n, num2str(path));为什么需要自己实现教学与理解这段代码清晰地展示了Dijkstra算法的两个核心步骤选择未访问的最小距离节点和松弛操作。在论文的算法描述部分你可以直接引用这个逻辑。处理动态权重在松弛操作部分alt dist(u) adj_matrix(u, v)这里的adj_matrix(u, v)可以替换为一个函数调用比如getDynamicWeight(u, v, dist(u), path_so_far)从而实现权重依赖于已走路径的复杂场景。定制化输出你可以轻松修改代码来记录更多信息比如在搜索过程中探索了哪些节点用于算法效率分析或绘图。性能提醒上述实现使用简单的循环查找最小节点时间复杂度为O(n^2)对于节点数n很大的图比如上千个节点会很慢。美赛中如果遇到大规模网络应优先使用内置的shortestpath函数它经过了高度优化。自己实现的Dijkstra主要用于小规模问题或原理演示。5. 美赛实战中的典型问题与建模技巧掌握了基础工具我们来看看在真实的72小时美赛战场上最短路问题会以怎样的面貌出现以及如何应对。5.1 多目标优化与K最短路径很多时候“最短”不是唯一标准。题目可能要求“在时间不超过T的前提下成本最低的路径”或者“寻找前3条备选路径以供决策”。这就需要用到K最短路径算法。MATLAB没有直接提供K最短路径函数但我们可以通过一些技巧来近似实现或者使用Yens algorithm的思想。一个实用的比赛技巧是使用shortestpath并修改图结构。思路找到第一条最短路径后依次“删除”这条路径上的某条边或将权重设为无穷大然后重新计算最短路得到的新路径就是一条不同的、通常较长的路径。重复这个过程可以得到一组备选路径。% 假设我们想找从1到5的前3条最短路径 G digraph(start_nodes, end_nodes, weights); paths cell(1, 3); path_lengths zeros(1, 3); G_temp G; for k 1:3 try [path_nodes, path_len] shortestpath(G_temp, 1, 5); paths{k} path_nodes; path_lengths(k) path_len; % 如果不是最后一条则“破坏”当前找到的路径迫使算法寻找下一条 if k 3 % 简单策略移除当前路径的第一条边 edge_to_remove findedge(G_temp, path_nodes(1), path_nodes(2)); if edge_to_remove ~ 0 % 将该边权重设为Inf相当于移除 G_temp.Edges.Weight(edge_to_remove) inf; else % 如果是无向图或者边不存在可能需要更复杂的逻辑 break; end end catch ME % 如果找不到路径跳出循环 fprintf(只找到 %d 条路径。\n, k-1); paths(k:end) []; path_lengths(k:end) []; break; end end % 显示结果 for i 1:length(paths) fprintf(第%d条路径: %s, 长度: %.2f\n, i, num2str(paths{i}), path_lengths(i)); end注意这种方法得到的“第K短”路径不一定严格是全局第K短但通常是有效的、不同的路径在美赛的实用场景中经常够用。在论文中你需要说明这种方法是一种启发式方法用于生成可行的备选方案集。5.2 处理大规模网络与稀疏矩阵美赛有时会提供真实的地理数据节点数可能成千上万如所有城市交叉口。直接用邻接矩阵会消耗巨大内存。此时必须利用图的稀疏性。MATLAB的graph/digraph对象天生就为稀疏存储设计。当你用边的列表start_nodes,end_nodes,weights创建图时它内部就是以高效的方式存储的。这是你无需担心底层优化的福利。但是如果你需要自己操作邻接矩阵一定要使用稀疏矩阵。% 假设有上万个节点但每个节点只连接少量邻居 n 10000; % 随机生成一个稀疏的边列表示例 s randi(n, 100000, 1); % 10万条边的起点 t randi(n, 100000, 1); % 终点 w rand(100000, 1)*100; % 权重 % 创建稀疏邻接矩阵 (这是存储大规模图的正确方式) adj_sparse sparse(s, t, w, n, n); % 使用graph对象它处理稀疏矩阵很高效 G_large digraph(adj_sparse); % 计算最短路 - 对于大规模图这一步可能较慢但MATLAB已优化 tic; [path, len] shortestpath(G_large, 1, 5000); toc; fprintf(大规模图计算耗时%.2f 秒\n, toc);关键建议在美赛中如果遇到大规模数据在论文里一定要提及你使用了稀疏存储技术来保证模型的可行性和计算效率这是一个重要的建模细节。5.3 将最短路嵌入更大模型以物流配送为例最短路很少是问题的终点它常常是一个更大优化模型的子模块。例如经典的车辆路径问题有多个配送点、多辆车如何规划路线使总成本最低在这种情况下最短路算法扮演了“成本计算器”的角色。你需要预先计算所有配送点两两之间的最短距离或时间、成本形成一个距离矩阵就是我们前面用distances函数得到的D矩阵。然后VRP模型会基于这个距离矩阵去决定车辆的访问顺序。建模流程数据预处理将地图抽象为网络图节点包括仓库和所有客户点。成本矩阵生成使用distances(G)计算所有节点对之间的最短路成本得到矩阵C其中C(i,j)表示从点i到点j的最小成本。构建VRP模型将C矩阵作为输入建立整数规划或启发式算法如遗传算法、模拟退火模型决策变量是车辆的访问序列。模型求解与验证求解VRP模型后得到的是节点的访问顺序。你需要将这个顺序映射回实际的路径上这时可以再次调用shortestpath函数画出每辆车的具体行驶路线。在论文中你需要清晰地阐述这两个阶段的耦合关系“我们首先建立了交通网络的最短路模型用于精确计算任意两点间的运输成本生成了成本矩阵。随后该成本矩阵作为核心输入被用于后续的车辆路径优化模型中。”6. 论文写作要点与代码整合策略最后也是最关键的一步如何将你的MATLAB工作和思考转化成一篇专业的美赛论文。6.1 模型描述部分不要写“我们使用了MATLAB的shortestpath函数”。要这样写“针对网络中的路径优化问题本研究采用Dijkstra算法求解单源最短路径。该算法通过迭代更新从源点到其他所有节点的当前已知最短距离最终保证找到全局最优解。其核心步骤包括初始化、选择未访问的最小距离节点、松弛操作等。在本模型中边的权重定义为[根据你的问题定义如通行时间、物流成本等]。算法的具体实现基于MATLAB R2023a环境该环境提供了经过高度优化的图论计算工具箱确保了模型求解的效率和稳定性。”6.2 结果可视化与呈现一图胜千言。除了之前提到的网络图和高亮最短路径你还可以绘制路径对比图将不同方案如平时vs高峰的最短路径在同一张底图上用不同颜色画出。绘制距离矩阵热图使用imagesc(D)或heatmap函数直观展示网络中所有点对之间的最短距离可以发现哪些区域是交通枢纽或孤岛。制作动画如果你的模型与时间有关如动态拥堵可以制作路径随时间变化的动画并导出为GIF或视频插入论文附录这是极大的亮点。% 示例绘制距离矩阵热图 figure; imagesc(D); colorbar; title(所有区域对之间的最短通行时间矩阵); xlabel(目标区域); ylabel(出发区域); % 可以进一步添加刻度使坐标轴显示区域编号6.3 代码整理与附录美赛论文需要提交完整的代码。你的代码应该模块化将不同的功能封装成函数如createNetwork.m,calculateShortestPath.m,plotResults.m。主脚本main.m清晰简洁按顺序调用这些函数。注释清晰关键步骤、复杂逻辑、模型假设都要有注释。用英文注释是加分项。数据分离将原始数据节点、边、权重放在单独的.mat文件或.csv文件中通过load或readtable读取。这使代码更易读也便于更换数据测试。附录展示在论文附录中不要粘贴全部代码只粘贴核心算法的实现片段如你自定义的Dijkstra函数和主程序的框架。并说明完整代码已随论文提交。自学MATLAB解决美赛最短路问题是一个从工具使用到模型思维升华的过程。它始于一行shortestpath代码但远不止于此。真正的挑战在于如何将杂乱的现实问题抽象成一个清晰的网络图如何定义合理的权重以反映题目核心目标以及如何将最短路这个“零件”巧妙地嵌入到更大的解决方案“机器”中。我见过太多队伍止步于调用函数得出一个数字而忽略了背后的建模艺术。记住在美赛评委眼里一个考虑了动态权重、进行了灵敏度分析、并提供了清晰可视化结果的“最短路”模型远比一个单纯跑出了最小值的模型更有价值。这其中的差距就是那需要你自己去思考和填补的、从“会用”到“精通”的“最短路”。

相关新闻

怎么降aigc检测率又不改坏数据?维普AI降重后还要检查重复率

怎么降aigc检测率又不改坏数据?维普AI降重后还要检查重复率

怎么降aigc检测率又不改坏数据?维普AI降重后还要检查重复率 假设维普AIGC报告提示方法与结果章节标高,你准备把整段交给AI重写。若处理稿出现样本数量少一位、变量方向由负向变成正向等变化,应立即停止使用该版本;新表达也可能与…

2026/8/29 13:31:12 阅读更多 →
降低ai时知网摘要越改越高怎么办?AIGC降重后同步复查重复率

降低ai时知网摘要越改越高怎么办?AIGC降重后同步复查重复率

降低ai时知网摘要越改越高怎么办?AIGC降重后同步复查重复率 假设知网报告里全文其他章节变化不大,摘要却被连续提示。如果你只是删掉“本文旨在”,再把原来的四句话拆成八句,复检时摘要AI率仍可能偏高。这里演示的是一种需要防范…

2026/8/29 13:31:12 阅读更多 →
GNSS与GPS:从原理到应用,一文读懂卫星导航定位技术

GNSS与GPS:从原理到应用,一文读懂卫星导航定位技术

1. 卫星导航系统的基本概念 想象一下你正在一个陌生的城市迷路了,手机上的地图APP能精确告诉你当前位置——这背后就是**全球导航卫星系统(GNSS)**在发挥作用。GNSS如同太空中的"灯塔网络",由多颗卫星组成,持…

2026/8/29 13:31:12 阅读更多 →

最新新闻

学术写作不该是一个人的事:Academic Research Skills的设计理念与人文立场

学术写作不该是一个人的事:Academic Research Skills的设计理念与人文立场

学术写作不该是一个人的事:Academic Research Skills的设计理念与人文立场 【免费下载链接】academic-research-skills Academic Research Skills for Claude Code: research → write → review → revise → finalize 项目地址: https://gitcode.com/GitHub_Tre…

2026/8/29 14:19:31 阅读更多 →
CEAA认知具身智能体架构:从环境感知到行动闭环的系统设计

CEAA认知具身智能体架构:从环境感知到行动闭环的系统设计

这次我们来看一个偏研究与架构设计方向的智能体方案:CEAA(Cognitive Embodied Agents Architecture)。从命名上就能看出,它的目标不是做一个“能聊天的机器人”,而是给交互式计算系统设计一套“有认知、能感知、会行动…

2026/8/29 14:19:31 阅读更多 →
STM32N6 TCM访问Hard Fault排查:从时钟使能到MPU配置的避坑指南

STM32N6 TCM访问Hard Fault排查:从时钟使能到MPU配置的避坑指南

直接说结论:这活儿我调了两天,最后发现不是芯片坏了,不是代码写错了,是时钟没配好就急着访问TCM导致的。最近项目里把主控换成了STM32N6,本来想用DTCM做音频缓冲,结果一上电跑没多久就进Hard Fault&#xf…

2026/8/29 14:19:31 阅读更多 →
Ventoy 启动盘:多个系统镜像装进一个U盘,不用再反复格式化

Ventoy 启动盘:多个系统镜像装进一个U盘,不用再反复格式化

Ventoy 启动盘:多个系统镜像装进一个U盘,不用再反复格式化 【免费下载链接】Ventoy A new bootable USB solution. 项目地址: https://gitcode.com/GitHub_Trending/ve/Ventoy Ventoy 是一款开源启动盘工具:在U盘头部写入 32MB 引导区…

2026/8/29 14:19:31 阅读更多 →
5分钟接入 Taste-Skill:让 AI 生成的前端告别模板脸的实战指南

5分钟接入 Taste-Skill:让 AI 生成的前端告别模板脸的实战指南

5分钟接入 Taste-Skill:让 AI 生成的前端告别模板脸的实战指南 【免费下载链接】taste-skill Taste-Skill - gives your AI good taste. stops the AI from generating boring, generic slop 项目地址: https://gitcode.com/GitHub_Trending/ta/taste-skill AI 生成的落…

2026/8/29 14:19:31 阅读更多 →
用 llama-bench 测出本地 LLM 推理的真实速度

用 llama-bench 测出本地 LLM 推理的真实速度

用 llama-bench 测出本地 LLM 推理的真实速度 【免费下载链接】llama.cpp LLM inference in C/C 项目地址: https://gitcode.com/GitHub_Trending/ll/llama.cpp 把同一个 7B 模型丢到两台配置一样的机器上,一台能跑出 130 t/s,另一台只有 40 t/s—…

2026/8/29 14:18:31 阅读更多 →

日新闻

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

etc目录下的profile.d文件目录设置环境变量和全局脚本shell

一、设置环境变量etc目录下的profile.d文件目录 /etc/profile.d1、编写 vi test.sh文件内容# jdk变量 export ZHK_HOME/root export PATH$PATH:$ZHK_HOME/test # 可以取出来ZHK_HOME变量给ZZZ_HOME赋值 export ZZZ_HOME${ZHK_HOME}/test2、刷新 执行source /etc/profile 命令使…

2026/8/29 0:00:24 阅读更多 →
【JavaScript】内存管理-垃圾回收机制-内存泄露

【JavaScript】内存管理-垃圾回收机制-内存泄露

内存管理 C 语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()。 而 JavaScript 是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放。释放的过程称为垃圾回收。 整…

2026/8/29 0:00:24 阅读更多 →
Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP:为嵌入式硬件实验室接入AI Agent操控能力

Labgrid-MCP 的目标是把 MCP(Model Context Protocol)能力延伸到真实嵌入式硬件实验室:AI Agent 通过一个标准化的 MCP Server,就能查看目标板状态、控制上电断电、复位开发板、读取串口日志,甚至执行镜像刷写。对于经…

2026/8/29 0:00:24 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/28 11:23:26 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/28 23:05:07 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/28 19:47:53 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/29 4:34:53 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/28 17:43:04 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/29 2:05:18 阅读更多 →