Topo2Seq:突破DETR局限,车道拓扑推理新高度
本篇针对先前DETR类框架远距离感知较弱且车道端点不对齐问题,提出了一种通过拓扑序列学习来增强拓扑推理的新方法Topo2Seq。在OpenLane-V2数据集上的实验结果表明,Topo2Seq在拓扑推理方面实现了最先进的性能。
©️【深蓝AI】编译
论文标题:Divide and Merge: Motion and Semantic Learning in End-to-End Autonomous Driving
论文作者:Yinzhe Shen, Ömer Şahin Taş, Kaiwen Wang, Royden Wagner, Christoph Stiller
论文地址:https://arxiv.org/pdf/2502.07631
01 摘要
从透视图(PV)中提取车道拓扑对于自动驾驶的规划和控制是至关重要的。该方法为自动驾驶汽车提取潜在的可行驶轨迹,而不依赖于高精(HD)地图。然而,DETR类框架的无序性和弱远距离感知可能会导致线段端点错位和拓扑预测能力有限等问题。受到语言模型中上下文关系学习的启发,道路的连接关系可以表征为显式的拓扑序列。本文引入了Topo2Seq,这是一种通过拓扑序列学习来增强拓扑推理的新方法。Topo2Seq的核心概念为车道线段解码器和拓扑序列解码器之间随机顺序的提示到序列学习。双解码器分支同时学习从有向无环图(DAG)和包含几何信息的车道图中提取的车道拓扑序列。随机顺序的提示到序列学习从车道线段解码器预测的车道图中提取无序关键点,然后将它们传入拓扑序列解码器的提示设计中,以重建有序且完整的车道图。通过这种方式,车道线段解码器从拓扑序列解码器中学习到强大的远距离感知和准确的拓扑推理。值得注意的是,拓扑序列解码器仅在训练过程中引入,不影响推理效率。在OpenLane-V2数据集上的实验评估证明了Topo2Seq在拓扑推理方面的最新性能。
02 介绍
近年来,自动驾驶中的车道拓扑推理越来越受关注。这是因为自动驾驶传统上依赖于离线的高精地图以提供路径信息。然而,道路条件可能不确定且具有挑战性,过时的在线高精地图对于自动驾驶汽车是灾难性的。仅仅依靠这些地图不足以满足高级自动驾驶的更高要求,例如L4和L5级别。
为了解决这些问题,自动驾驶汽车需要执行车道拓扑推理,这涉及从全景图像中实时感知周围道路流,并且提取中心线的几何位置及其拓扑关系。因此,车道拓扑推理对于端到端自动驾驶中的轨迹预测和规划是至关重要的。
早期工作着重于表征地图元素。语义地图学习方法为每个像素分配标签以标记地图元素。然而,不一致的语义预测和不足的实例感知可能会导致自动驾驶系统规划的混乱。此外,逐像素后处理在拓扑提取方面经常失败,并且造成耗时问题。作为一种升级的替代方案,矢量化地图学习方法采用可学习的查询来提取地图元素,它在DETR类框架中矢量化线条和多边形。这些方法提供了较高的检测精度和较快的推理速度。然而,它们在地图学习中缺乏全面的轨迹检测,例如车道方向和连通性。为了解决这些问题,关于车道拓扑推理的最新研究将中心线拓扑转化为车道图。这些端到端的框架旨在预测以有序点表征的线段和由邻接矩阵表示的拓扑关系。然而,这些方法没有显式建模车道之间的关系,而是依赖于MLPs来确定查询之间的连接概率。由于DETR类框架中的弱远距离感知和无序检测特性,简单的MLPs难以有效地学习车道之间的连通性。因此,现有方法存在若干局限性,如图1(a)所示。

▲图1| 先前方法与Topo2Seq的比较©️【深蓝AI】编译
在语言模型中,序列学习可以捕获长文本中的上下文关系,同时维持正确的顺序。受到语言模型的启发,将车道图表示为序列可以显式地捕获车道的几何位置和拓扑关系。然而,在序列到序列的方法中,自回归模型依赖于先验预测来生成后续输出,由于需要重复推理,因此效率相当低下。
本文引入了Topo2Seq,这是一种通过拓扑序列学习来增强拓扑推理的新方法。Topo2Seq利用了双解码器架构,包括车道线段解码器和拓扑序列解码器。拓扑序列解码器预测从有向无环图(DAG)中提取的车道拓扑序列,而车道线段解码器提取包含几何信息的车道图。然后,采用随机顺序的提示到序列学习,从车道线段解码器预测的车道图中提取无序关键点。这些关键点被传入拓扑序列解码器的提示设计中,从而能够重建有序且完整的车道图。
通过这种方式,车道线段解码器通过共享的解码器从拓扑序列解码器中获得强大的远距离感知和精确的拓扑推理,如图1(b)所示。值得注意的是,拓扑序列解码器仅在训练过程中引入,而不会影响推理效率。
本文的贡献总结如下:
1)本文提出了Topo2Seq,这是一种具有双解码器训练的新框架,它通过利用拓扑序列学习来增强拓扑推理;
2)本文显式地将车道图建模为序列,以捕获车道的远距离几何位置和拓扑关系;
3)本文引入了一种随机顺序的提示到序列学习机制,它使车道线段解码器能够从拓扑序列解码器中获得鲁棒的远距离感知和准确的拓扑推理能力;
4)本文在多视图拓扑推理基准OpenLane-V2上进行了大量实验,结果证明了Topo2Seq在拓扑推理方面的最先进性能。
03 方法
3.1. 问题表述
给定通过车辆环视相机获取的多视图图像 L,Topo2Seq 的目标是感知中心线及其拓扑结构。中心线被表示为一组有序的 3D 点 ,其中 n 设置为 10,并且每个 3D 点表示为
。拓扑描述为一个邻接矩阵
,其中 m 为检测到的中心线数量。在该矩阵中,
表示车道 Li 的终点与车道 Lj 的起点对齐。然而,实现网络预测的连接车道的起点和终点的精确对齐通常具有挑战性。
3.2. 概述
如图2所示,Topo2Seq采用多视图图像作为输入。

▲图2| Topo2Seq的框架©️【深蓝AI】编译
本文利用图像主干网络、FPN 和 BEVFormer 将这些多视图图像编码为 BEV 特征。车道线段解码器通过自注意力和与 BEV 特征
的交叉注意力来更新可学习的查询
。更新后的查询被传入预测头进行车道分割。本文从预测车道图的起点和终点中提取关键点作为关键点提示
。真值 (GT) 车道图被转换为边序列
。边序列与关键点提示
连接,并且被传入拓扑序列解码器中,其中它们与 BEV 特征
交互。预测序列由目标边序列监督,并且去量化为车道图。在测试过程中,拓扑序列解码器没有执行推理,而车道线段解码器预测了中心线和邻接矩阵。
车道线段解码器
本文将一组实例级查询表示为,其中
为预设的查询数量,通常大于车道图中的中心线数量。查询被传入车道线段解码器中,以获得更新的查询:
其中,LaneDec 表示车道线段解码器。在每个车道线段解码器层内,车道查询通过自注意力模块、车道注意力模块和前馈网络来顺序更新。
头
本文采用 MLPs 来生成车道 L 和拓扑 A 的 3D 坐标。车道之间的拓扑由下式预测:
其中,MLPs 相互独立。为了提供车道图更细节的表示,不仅可以预测拓扑结构,还可以预测左右车道边界的偏移、这些边界的类型和人行横道。
拓扑序列解码器
本文构建了拓扑序列解码器。每个解码器层包含一个自注意力模块、一个交叉注意力模块和一个前馈网络。自注意力模块中的因果掩码维持了自回归性质。整个结构在提取和细化 BEV 特征方面具有若干个优势:
(1) 增强的特征细化:该模型可以根据序列选择性地着重于 BEV 特征的相关区域。这种具有针对性的注意力有助于通过突出对准确重建车道图或者理解场景关键的区域来细化 BEV 特征;
(2) 改进的远距离依赖关系:拓扑序列解码器增强了对远距离关键点之间依赖关系的捕获。它将关键点之间的上下文信息加入到车道线段解码器中,使其能够预测更对齐的车道线段端点。
(3) 上下文集成:通过着重于特定的关键点提示,该模型可以降低 BEV 特征中不相关或者冗余信息的影响。这导致特征提取更高效,并且可能会减少最终预测结果中的噪声。训练拓扑序列解码器的输出结果可以表示为:
其中,表示拓扑序列解码器,
表示预测的边序列。
序列结构
本文遵循 RoadNet,将有向无环图 (DAG) 转换为边序列。车道上的每个关键点都可以作为起点或者终点,每条边可以表示为六个整数:
其中,前两个整数、
表示关键点的离散坐标。
表示关键点的类别,可以为 Ancestor、Lineal、Offshoot 或者 Clone。con 表示关键点的连接。如果 cls 为 Ancestor 或者 Lineal,则 con 设置为 0。否则,con 被设置为父关键点的索引。由于三次贝塞尔曲线可以有效地表示两个关键点之间车道的轨迹,因此最后两个整数 int(bxi)、int(byi) 表示贝塞尔曲线的中间控制点。为了确定关键点的唯一顺序,本文选择 BEV 透视图右前方的位置作为起点,并且使用深度优先搜索进行排序。
在训练过程中,本文构建了两种类型的序列,如图 3 所示。其中,输入序列和目标序列用于监督。

▲图3| 输入序列和目标序列©️【深蓝AI】编译
输入序列以 Start token 为开始,随后是关键点提示,然后为 GT 边,剩余长度由噪声边填充。关键点提示包括所有预测边以及噪声边的关键点。值得注意的是,所有预测边的关键点都是无序的,并且与边序列中的坐标顺序不对应。最后,关键点提示以 EOK token 结束。在目标序列中,关键点提示的位置由 pad tokens 填充,随后是真值边和噪声边,最后以 EOS token结束。
随机顺序的提示到序列学习
车道线段解码器预测的车道往往端点不对齐。表示两条车道需要四个端点,这可能会出现不同车道端点之间几何不一致的现象。相比之下,边序列仅使用三个点来表示具有完美对齐端点的两条相邻车道线,从而提高了自动驾驶的轨迹理解能力。为了利用序列到序列学习的远距离理解和顺序关系的能力,本文在关键点提示下促进了车道线段解码器和序列拓扑解码器之间的交互。 基于车道线段解码器的预测结果,本文根据置信度从高到低的顺序对预测的车道进行排序,并且使用预测的邻接矩阵滤除每条预测车道中任何重复的关键点:
其中,关键点的坐标是离散的。随机顺序的提示到序列学习的目标表述如下:
其中,表示类别权重,
表示
之前的 tokens,
为预测的目标序列。输入关键点提示相对于边序列是无序的,这使得序列拓扑解码器能够引导网络推理离散关键点之间的关系。通过这种方式,网络推理了无序关键点提示之间的正确关联。此外,该过程促进网络细化高置信度的关键点位置,减少重复预测并且在 BEV 域中对齐端点。通过增强两个解码器之间的交互,该方法间接解决了基于序列到序列学习捕获远距离关系的局限性。
损失函数
Topo2Seq 中的整体损失函数定义如下:
其中,L1 表示 L1 损失。表示焦点损失,用于车道分类。
包括交叉熵损失和 diss 损失。
表示交叉熵损失,用于分类左右车道类型。
为焦点损失,用于监督预测邻接矩阵 A 和真值邻接矩阵 A¯ 之间的关系信息。Lseq 表示最大似然损失,它监督拓扑序列解码器。每个损失的权重表示为 α1,α2,α3,α4,α5 和 α6。
04 实验
4.1. 数据集
本文在OpenLane-V2数据集上评估了Topo2Seq模型,OpenLane-V2是一个最近发布的开源数据集,专门用于自动驾驶中的拓扑推理。OpenLane-V2来源于Argoverse2和nuScenes数据集。这些数据涵盖了全球各地并且包括具有挑战性的场景,例如白天和夜间、晴天和雨天,以及城市和郊区环境。本文主要在subsetA上评估Topo2Seq,它由每帧7张周围图像组成。训练集包含约27000帧,验证集包含约4800帧。
4.2. 实现细节
本文使用在 ImageNet 上预训练的 ResNet-50 作为图像骨干网络。FPN 用于获得多尺度特征。BEVFormer 将环视图像的多尺度特征编码为 BEV 特征。与最近的工作一致,BEV 感知范围设置为 x 轴 [−50.0m,+50.0m],y 轴 [−25.0m,+25.0m]。BEV 网格配置为 200×100。车道线段解码器的配置遵循 LaneSegNet 的配置。它由 6 层组成,查询数量设置为 200。该模型实现了 14.7 FPS 的帧率。输入序列和目标序列都由 802 个 tokens 组成,包括 201-token 关键点提示和 601-token 边序列。由于资源限制,本文在 4 个 NVIDIA A100 GPUs 上训练网络,总的 batch size 为 4。本文采用 AdamW 作为优化器。α1、α2、α3、α4、α5 和 α6 的值分别设置为 0.025、1.5、3.0、0.1、5.0 和 1.0。
本文评估了三种训练策略:
策略 1:使用随机排序的 GT 关键点作为关键点提示,对网络进行 24 个周期的训练,以获得稳定的输出,然后再进行 24 个周期的训练,着重于两个解码器之间的交互。
策略 2:仅对两个解码器之间的交互进行 24 个周期的训练。
策略 3:使用随机排序的 GT 关键点作为关键点提示,训练 12 个周期以获得稳定的输出,然后再进行 12 个周期的解码器交互训练。
4.3. 指标
本文在两种类型的任务上评估Topo2Seq:车道线段感知和中心线感知。对于车道线段感知,本文使用mAP、APls、APped和TOPlsls。对于中心线感知,我们使用DETl、TOPll以及DETl和TOPll之间重新定义的OLS。值得注意的是,在OpenLane-V2基准测试中,中心线和车道线段的标签未对齐,并且由于车道线段的数量较多,检测车道线段的标签更具挑战性。
4.4. 主要结果
本文首先在OpenLane-V2基准上比较Topo2Seq与最先进的方法。在OpenLane-V2 subsetA上的结果如表格1所示。

▲表1| 在OpenLane-V2基准上与最先进方法的比较车道线段感知©️【深蓝AI】编译
最先进方法的结果主要来自它们各自的论文。当训练24个周期(12个周期实现稳定输出,随后是12个周期的解码器交互训练)时,Topo2Seq在APls和TOPlsls上分别比LaneSegNet高出1.8%和1.5%。通过使用ResNet-50在总共48个周期内进行两阶段训练,Topo2Seq的mAP和TOPlsls分别达到了37.7%和29.9%。在相同的配置下,Topo2Seq在APls和TOPlsls上分别比LaneSegNet高出2.0%和2.6%。
在OpenLane-V2 subsetA上的中心线感知结果如表格2所示。

▲表2| 在OpenLane-V2基准上与最先进的方法比较中心线感知©️【深蓝AI】编译
在相同的24个训练周期下,Topo2Seq在OLS∗上相比于LaneSegNet提高了2.0%,在DET1上提高了2.4%,在TOPll上提高了1.7%。与使用相同48个训练周期的TopoMLP和LaneSegNet相比,Topo2Seq在DET1上比TopoMLP提高了4.2%,在OLS*上比LaneSegNet提高了2.5%,在DET1上提高了2.4%,在TOPll上提高了2.7%。这些结果表明,在训练过程中引入额外的序列解码器交互可以使网络在拓扑推理方面实现显著的改进。
4.5. 消融研究
本文研究了Topo2Seq中的每个重要设计。消融研究如表格3所示。

▲表3| 在OpenLane-V2基准上的消融研究©️【深蓝AI】编译
当将有序的GT关键点提示引入序列学习时,网络仅能学习关键点之间的轨迹,而不能推断它们之间的关系。这解释了为什么索引2的结果优于索引1,在TOPlsls上提高了2.7%。比较索引2和索引3的结果,可以看出,由于车道线段解码器的输出结果不准确且不稳定,过早与拓扑序列解码器交互会导致比使用随机排序的GT关键点作为关键点提示更差的性能。然而,与索引1中的结果相比,该方法在拓扑推理方面仍然略有改进。从索引2和索引4的结果可以看出,当将车道线段解码器的预测关键点引入到关键点提示中以实现两个解码器之间额外24个周期的交互训练时,mAP提高了2.8%,TOP提高了2.1%。这一结果表明,序列学习可以进一步增强车道线段解码器感兴趣区域中BEV特征的提取,特别是增强远距离感知和拓扑推理。
4.6. 定性结果
如图4所示,本文将LaneSegNet和Topo2Seq生成的车道图可视化。

▲图4| 定性结果©️【深蓝AI】编译
相比之下,Topo2Seq生成了具有端点对齐的高质量车道图,其远距离感知更可靠且拓扑关系更准确。这归功于与序列拓扑交互所继承的优势。
05 总结
本文提出了拓扑序列学习增强的拓扑推理方法Topo2Seq。本文从语言模型中获得灵感,通过序列到序列学习解决了基于DETR的拓扑推理框架中固有的远距离感知和关系建模的局限性。本文通过结合随机顺序的提示到序列学习,增强了拓扑序列解码器和车道线段解码器之间的交互。该方法使Topo2Seq能够生成具有更精确端点对齐和准确拓扑的车道图。在OpenLane-V2数据集上的实验结果表明,Topo2Seq在拓扑推理方面实现了最先进的性能。
相关文章:
Topo2Seq:突破DETR局限,车道拓扑推理新高度
本篇针对先前DETR类框架远距离感知较弱且车道端点不对齐问题,提出了一种通过拓扑序列学习来增强拓扑推理的新方法Topo2Seq。在OpenLane-V2数据集上的实验结果表明,Topo2Seq在拓扑推理方面实现了最先进的性能。 ©️【深蓝AI】编译 论文标题…...
程序地址空间:深度解析其结构,原理与在计算机系统中的应用价值
目录 1. 程序地址空间回顾 1.1 虚拟地址 2.进程地址空间 分页&虚拟地址空间 引入新概念 解释上述关于同样的地址不同的变量值问题 回答一个历史遗留问题 编辑 3.虚拟内存管理 虚拟内存是什么 虚拟地址空间区域划分 为什么要有虚拟地址空间 1. 程序地址空间回…...
前端项目的构建流程无缝集成到 Maven 生态系统(一)
在阅读 nexus-public 过程中,发现 ui 无缝集成到 maven 中,这个插件在国外用的还是比较多的。当前后端一体化的工具性应用,一来省去了前后端来回沟通的成本,二来大大降低了协作时间,最终达成软件工具开发的低成本。正文…...
LeetCode 2272.最大波动的子字符串:转为多次的最大子数组和 - 一步步思考推导
【LetMeFly】2272.最大波动的子字符串:转为多次的最大子数组和 - 一步步思考推导 力扣题目链接:https://leetcode.cn/problems/substring-with-largest-variance/ 字符串的 波动 定义为子字符串中出现次数 最多 的字符次数与出现次数 最少 的字符次数之…...
火语言RPA--列表项内容设置
【组件功能】:设置列表项内容 配置预览 配置说明 索引项位置支持T或# 列表对象待修改内容的索引位置。 内容值 支持T或# 默认FLOW输入项 修改的内容值。 示例 对象修改 描述 列表对象索引为0的数据修改为A字符串,并打印修改结果。 配置 输出结…...
1.Qt SDK 的下载和安装
1Qt 下载官⽹: http://download.qt.io/archive/qt/ 2版本自行选择 3下载对应版本的.exe文件 4下载包下载完成 5双击.exe文件,默认下一步,要注册一个qt的账户 6记住程序安装的位置,后面要配置环境变量 7勾3个(组件自行…...
嵌入式系统中的Board Support Package (BSP)详解:以Xilinx Zynq为例
嵌入式系统中的Board Support Package (BSP)详解:以Xilinx Zynq为例 引言 在嵌入式系统开发中,硬件与软件的无缝集成至关重要。Board Support Package (BSP) 作为连接硬件和操作系统的桥梁,在这一过程中扮演着核心角色。本文将深入探讨BSP的…...
Spring Boot 定时任务以及异步任务的实现
一、定时任务 在 Spring Boot 中,实现定时任务非常简单,主要通过 Scheduled 注解和 TaskScheduler 接口来实现。以下是实现定时任务的详细步骤和方法: 启用定时任务支持 在 Spring Boot 应用中,首先需要启用定时任务支持。可以通…...
Vue 生命周期详解:从创建到销毁的全过程
Vue.js 是一个流行的前端框架,它通过组件化的方式帮助开发者构建用户界面。在 Vue 中,每个组件实例都有其生命周期,从创建、挂载、更新到销毁,Vue 提供了一系列的生命周期钩子函数,允许我们在组件的不同阶段执行自定义…...
【ASMbits--常用算术运算指令】
ASMbits--常用算术运算指令 1 基本运算算术指令--最基础1.1 加法和减法1.2 移位操作1.3 乘法 2 practice2.1 编写invert(int n)2.2 编写judge_odd(int n)2.3 计算绝对值abs(int n)2.4 add(int n1, int n2)函数2.4 shift寄存器2.5 sihft ath right2.6 shift left 在ARMv7汇编中&…...
计算机基础:二进制基础12,十进制数转换为十六进制
专栏导航 本节文章分别属于《Win32 学习笔记》和《MFC 学习笔记》两个专栏,故划分为两个专栏导航。读者可以自行选择前往哪个专栏。 (一)WIn32 专栏导航 上一篇:计算机基础:二进制基础11,十六进制的位基…...
SpringCloud系列教程(十四):Sentinel持久化
Sentinel之前已经搭建和应用成功了,但是它有一个很大的缺点就是官方没有提供持久化的方案,从项目源码上看感觉这款工具也没有完成的太好,所以需要我们去对它进行二次开发。要补充的功能大概如下: 1、将Sentinel接入nacos中&#…...
Slider,InputField,Scroll View,Scrollbar及Layout组件
Slider组件 Fill Rect:填充滑动条选中区域的背景图部分 Handle Rect:滑动条的球 Direction:滑动条的滑动方向 Min Value:起始位置的数值(浮点数) Max Value:结束位置的数值(浮点数) Whole Numbers:必须为整数(布尔…...
ollama注册自定义模型(GGUF格式)
文章目录 ollama注册自定义模型(GGUF格式)下载模型注册模型(GGUF格式) ollama注册自定义模型(GGUF格式) 需要全程开启ollama nohup ollama serve > ollama.log 2>&1 &需要注意,尽管手动下载的GGUF格式模…...
【算法】 区间合并(附蓝桥杯真题) python
步骤 1.先将所有区间按左端点排序 2.从前往后扫一遍,维护当前正在合并的区间[st, ed] 3.依次检查每个区间[l, r], 若 l > ed,将[st, ed]加入 ans , 更新st l,ed r 若 l < ed ,更新ed max(ed, r) 时间复杂度 O(nlogn) 模板 https:/…...
关于重构分析查询界面的思考(未完)
业务系统里,查询界面很常见,数据分析场景需求普遍而迫切,而新的技术也在不断出现,很有必要重构分析查询界面。 查询筛选 为了尽可能从数据中发现,需要尽可能地将查询条件添加进来,可这样,查询…...
机器人技能列表
一、机器人制作基础入门 (一)机器人概述 1.机器人的定义与分类 2.机器人的发展历程与现状 3.机器人在各领域的应用案例 (二)必备工具与材料 4.常用电子工具介绍(万用表、电烙铁等) 5.机械加工工具&…...
五大基础算法——分治算法
分治算法 是一种通过将问题分解为多个规模较小的子问题,递归解决子问题,然后将子问题的解合并为原问题解的算法思想。它通常包含三个步骤:分解(Divide)、解决(Conquer) 和 合并(Comb…...
HarmonyOS NEXT 声明式UI语法学习笔记-创建自定义组件
基础语法概述 ArkTS的基本组成 装饰器:用于装饰类、结构、方法以及变量,并赋予其特殊含义。如上图都是装饰器,Component表示自定义组件,Entry表示表示自定义组件的入口组件,State表示组件中的状态变量,当状…...
补充二分LIS
B3637 最长上升子序列 题目描述 这是一个简单的动规板子题。 给出一个由 n ( n ≤ 5000 ) n(n\le 5000) n(n≤5000) 个不超过 1 0 6 10^6 106 的正整数组成的序列。请输出这个序列的最长上升子序列的长度。 最长上升子序列是指,从原序列中按顺序取出一些数字排…...
用户模块——握手验证
1. 引言 在现代 Web 应用中,WebSocket 以其全双工通信、低延迟、减少 HTTP 开销等优势,被广泛应用于即时通讯、在线游戏、实时数据推送等场景。然而,在涉及用户认证时,WebSocket 存在一个常见问题——每次刷新页面都会重新建立 We…...
97.HarmonyOS NEXT跑马灯组件教程:基础概念与架构设计
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT跑马灯组件教程:基础概念与架构设计 1. 跑马灯组件概述 跑马灯(Marquee)是一种常见的UI组件&a…...
81.HarmonyOS NEXT 状态管理与响应式编程:@Observed深度解析
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT 状态管理与响应式编程:Observed深度解析 文章目录 HarmonyOS NEXT 状态管理与响应式编程:Observed深度解析…...
【Agent】OpenManus-Agent架构详细分析
各组件详细设计见: BaseAgent:BaseAgentReActAgent:ReActAgentToolCallAgent:ToolCallAgent具体Agent实现:具体AgentMemory数据结构:Memory 1. 智能体层次结构 OpenManus 采用了一个多层次的智能体继承结…...
股指期货有卖不出去的时候吗?
在股指期货的交易世界里,很多人都有这样的疑问:股指期货会不会有卖不出去的时候呢?答案是会的,下面咱们就来详细唠唠为啥会出现这种情况。 市场极端行情下难以卖出 1.跌停限制:股指期货和股票一样,也有涨…...
前端Html5 Canvas面试题及参考答案
目录 Canvas 元素的默认尺寸是多少?如何正确设置其宽高以避免图像拉伸? 如何获取 Canvas 的 2D 上下文对象?3D 上下文支持哪些技术? canvas.width 与 canvas.style.width 的区别是什么? Canvas 支持的图像格式有哪些?如何将 Canvas 转换为 Base64 图片? Canvas 中如…...
【ES6】03-Set + Map
本文介绍两种集合 set map 的操作和方法。 目录 1. Set 1.1 set基本使用 1.2 add 1.3 delete 1.4 has 1.5 size 1.6 set转换为数组 1.7 拓展运算符 1.8 for...of 1.9 forEach 1.10 set给数组去重 2. Map 2.1 创建map集合 2.2 set添加元素 2.3 delete删除元素 …...
Java缓存String(字符串常量池)、Integer (-128 到 127 )
对问题的解释 1. “字符串常量池存储的是string对象的直接引用,而不是直接存放的对象,是一张string table” 的含义 这句话可以从以下几个方面理解: (1) 字符串常量池的存储内容 直接引用:字符串常量池中存储的是指向实际 Stri…...
消息队列的特性与使用场景:Kafka、ActiveMQ、RabbitMQ与RocketMQ的深度剖析
在分布式系统和微服务架构中,消息队列是实现服务间通信和解耦的核心组件。Kafka、ActiveMQ、RabbitMQ和RocketMQ是当前最受欢迎的消息队列解决方案,它们各自具有独特的特性和适用场景。本文将从特性和使用场景两个维度进行对比分析,帮助读者更…...
开发、科研、日常办公工具汇总(自用,持续更新)
主要记录汇总一下自己平常会用到的网站工具,方便查阅。 update:2025/2/11(开发网站补一下) update:2025/2/21(补充一些AI工具,刚好在做AI视频相关工作) update:2025/3/7&…...
