[EAI-028] Diffusion-VLA,能够进行多模态推理和机器人动作预测的VLA模型
Paper Card
论文标题:Diffusion-VLA: Scaling Robot Foundation Models via Unified Diffusion and Autoregression
论文作者:Junjie Wen, Minjie Zhu, Yichen Zhu, Zhibin Tang, Jinming Li, Zhongyi Zhou, Chengmeng Li, Xiaoyu Liu, Yaxin Peng, Chaomin Shen, Feifei Feng
论文链接:https://arxiv.org/abs/2412.03293
项目主页:https://diffusion-vla.github.io/
论文出处:/
论文被引:/
Abstract
本文提出了 DiVLA,它将自回归模型与扩散模型结合,用于学习视觉运动策略(visuomotor policy)。目标是 next token prediction,使模型能够有效地根据当前观测结果进行推理。随后,连接一个扩散模型来生成动作。为了通过 self-reasoning 增强策略学习,引入了推理注入模块,将推理句子直接集成到策略学习过程中。使用多个真实机器人进行了大量的实验,以验证DiVLA的有效性。包括一个工厂分拣任务,其中DiVLA成功地对物体进行了分类,包括那些在训练期间未见过的物体。推理模块增强了解释性,能够理解模型的思维过程并识别策略失败的潜在原因。此外,在零样本抓取任务上测试了DiVLA,在102个未见物体上实现了63.7%的准确率。证明了对视觉变化(例如干扰物和新的背景)的鲁棒性,并且易于适应新的机器人本体。DiVLA可以遵从新的指令并保持对话能力。DiVLA的数据效率高,推理速度快;DiVLA-2B在单个A6000 GPU上运行速度达到82Hz,并且可以从<50个演示中学习一个复杂任务。 最后,将模型从20亿参数扩展到720亿参数,展示了随着模型规模的增加而改进的泛化能力。
Summary
受到 pi0 启发,跟进的挺快的。把 PaliGemma-3B 的骨干换成了 Qwen2-VL 系列的 2B/7B/72B,同时增加了一个细粒度的特征提取模块,来更好的注入到扩散部分。并且实现了多模态推理,能够做 VQA,原始的pi0是没有的。利用预训练VLM作为VLA的骨干,提供了对视觉概念的强大先验理解,可以显著增强复杂任务中的下游性能。用了SigLIP编码器,又用了Qwen2-VL骨干,看起来像是用了两次视觉编码器?另外就是,微调阶段用的数据太少,看起来像是单任务,扩散+VLM构建VLA的实现长周期任务和复杂灵巧类双臂操作任务的优势没有发挥出来,可能是先占坑,期待后续工作~
研究背景
基于离散token自回归预测建模的方式实现的VLA模型,例如 RT-2、OpenVLA 面临的问题是:将连续的机器人动作离散化为固定大小的 token 破坏了动作的连续性和精确性。其次,NTP 的方式推理频率很低,难以满足端侧高频动作推理需求,限制了模型的应用。
近两年,基于扩散的视觉运动策略模型取得了较大的进展。通过将动作序列生成建模为去噪过程,很多方法表现出不错的性能。这种方法能够更好地捕获机器人动作的多模态性质,并能够更快的生成动作序列。但问题是基于扩散的模型缺乏推理能力,因为没有LLM。
所以能不能结合二者的优势构建一个VLA,融合自回归模型的推理能力和扩散模型的高频动作生成能力?
方法介绍
本文提出了 DiffusionVLA(DiVLA),结合了多模态理解模型和扩散模型。其中,多模态理解模型VLM具备良好的基于文本的推理能力,扩散模型能够通过去噪过程学习机器人的动作分布。这使得 DiVLA可以做多模态推理也可以做动作生成。但是有一点需要注意,逻辑推理和可操作的机器人策略之间存在gap,因此引入了推理注入模块,该模块重用了VLM的推理输出并将其直接应用于扩散策略,从而使用显式的推理信号丰富策略学习过程。DiVLA具备的优势:
- 快速的推理速度:DiVLA-2B 在单个 A6000 GPU 上的推理速率达到 82Hz,DiVLA-7B 的推理速率为 42Hz。
- 增强的视觉泛化能力:DiVLA不受视觉干扰或新背景的影响,在视觉动态环境中表现出鲁棒性。
- 可泛化的推理能力:DiVLA能够准确识别和分类未见的物体,展示其跨新输入泛化推理的能力。
- 对新指令的适应性和对话能力:可以解释和执行复杂的新指令,同时保持对话流畅性,在交互场景中提供多样的响应范围。
- 对其他机器人本体的泛化能力:DiVLA可以轻松微调以部署在双臂机器人上,只需少量微调即可实现高性能,证明其在各种机器人本体上的适应性。
- 可扩展性:提供了可扩展的模型系列——DiVLA-2B、7B 和 72B——证明泛化能力和性能随着模型大小的增加而提高,符合 Scaling Law。
模型架构
最终目标是创建一个统一的框架,将擅长预测语言序列以进行推理的自回归模型与擅长生成机器人动作的扩散模型结合起来。 开发这样一个集成模型面临着巨大的挑战:(i)设计一个能够无缝且高效地集成自回归和扩散机制的架构;(ii)利用自生成的推理来增强动作生成,而不会增加推理计算开销。
视觉编码器:SigLIP,将视觉输入转换为固定数量的 token。每个视角的图像单独编码,之后对 token 做拼接,各个视图是共享的。有个疑问,过了两遍视觉编码器?VLM还有自带的 ViT,论文貌似也没说清楚。通过View- adaptive tokenization 方法,将腕部相机视角的图像输入的token数量减少到 16,降低计算量。
VLM骨干:Qwen2-VL-2B/7B/72B
动作解码器:将 LLM 输出的 token 作为condition输入到扩散模型中以进行动作解码,采用标准的 Diffusion Policy 设计,权重随机出实话。之后接多层 MLP 用于解码动作,预测机器人的关节空间,如果用于不同设置的机器人本体,会随机初始化 MLP 的部分,而不是直接复用训练好的。
推理注入模块:目的是将显式的推理注入到VLA模型,避免了迭代输入-输出循环的计算和操作复杂性。使用 RT-1 和 YAY 使用的 FiLM 将其注入到扩散模型部分。
损失函数:两部分,一部分为扩散损失,一部分是 token prediction 损失,其中后者用了超参数,以平衡不同损失的贡献。实验发现,后者比前者小10倍。
训练策略:参考 pi0,使用 lora 微调 VLM,预训练学习率为 2e-5。
数据构建
预训练数据:2B/7B模型使用 Droid 数据,72B模型使用 OXE和Droid数据。使用 GPT-4o 将Droid数据语言注释部分转换为包含推理的形式。
微调数据:四种实验设置 sorting,(500 episodes) bin picking(未采集,评估零样本泛化能力), multi-task learning(580 episodes), and table bussing(400 episodes)。前三种使用 Franka 单机械臂,后者使用双臂 AgileX 机器人。
消融实验
Real-World Multi-Task Learning
设计了 5 个任务:
- object selection
- flip the vertically placed pot
- placing a cube into a designated box
- placing a cup onto a plate
- placing a cube inside a box
对视觉变化的泛化能力:评估模型在多样化、动态环境中的鲁棒性和适应性。三个场景:1) 在周围添加额外的干扰物以增加视觉杂乱和复杂性;2) 改变背景以测试对场景上下文变化的适应能力;3) 实现多彩的灯光效果以引入不同的照明和色彩色调。图 4 显示了这些场景,以说明每次变化对视觉环境的影响,实验结果如表1所示。
评估表明,虽然所有方法的性能都因这些视觉变化而下降,但DiVLA在五个不同的任务中始终保持最高的平均成功率。说明了模型固有的鲁棒性和适应性,尽管在训练过程中没有任何特定的数据增强技术。
End-to-End Sorting on Real Robot
在工业环境中评估了DiVLA的能力:将物品分为四类:1)玩具汽车,2)针织手套,3)毛绒玩具和 4)内六角扳手。语言指令是“将所有物品分类到相应的区域”。总共收集了500条轨迹作为训练数据。只有当机器人成功抓取物体并将其放置到正确的区域时,才认为任务成功。实验装置如图1所示。
在两种难度设置下评估:简单和困难。简单模式——桌子上放置的物品少于5件;困难模式——6到11件物品被随机排列。 此外,已见物体和未见物体在这两种场景中混合在一起。 在杂乱的场景中,物品可能会重叠或随机分布在桌面上,增加了排序任务的复杂性。
实验结果如图2所示。DiVLA在所有实验设置下的平均成功率为66.2%。 当场景复杂度增加(即物体数量和杂乱程度增加)时,其他方法的性能会显著下降(例如,在高度杂乱的混合场景中,DP的成功率急剧下降到9.2%),而DiVLA保持了60%的成功率。这种持续的性能突显了DiVLA有效处理复杂和动态的现实世界场景的能力。
通过检查推理结果来诊断策略模型。因为模型使用自然语言推理生成输出,所以可以通过观察其推理短语来了解模型的“思考”过程。如图5所示,模型识别出一辆玩具车并决定将其拾起。如果放一个内六角扳手来进行干预,推理短语就会从“抓取玩具车”转变为“抓取内六角扳手”,从而使模型能够适应并准确地对物品进行排序。这种动态推理使模型的决策过程更加透明和可解释。推理注入模块也受益于推理自我校正,从而使机器人动作更加鲁棒。
Zero-Shot Bin Picking of Unseen Objects
评估DiVLA的实例泛化能力,重点关注 Bin Picking 任务——这是评估机器人模型性能的基准。使用102个独特的物体,都没有包含在训练数据中。图6显示了其中一些物体。任务指令“将右侧面板上的任何物体移到左侧篮筐中”。图1(右)展示了实验设置。此次评估的挑战在于物体之间存在显著差异,这不仅包括尺寸差异,还包括不同的颜色图案、纹理和可变形程度。图7是该实验的五个不同尺寸物体的示例。
实验结果如图3所示,DiVLA 达到了 63.7% 的成功率。相比之下,扩散策略、Octo、TinyVLA 和 OpenVLA 的成功率分别为 8.9%、19.6%、23.5% 和 28.4%。这些结果表明,DiVLA 可以理解各种物体形状和尺寸,而其他模型往往由于依赖于可能无法很好地泛化到新实例的特定于物体的特征而失败。这突出了其在动态、非结构化环境中的应用潜力,在这些环境中,机器人会遇到不熟悉的物体,并且必须在最少人工干预的情况下执行任务。
Adapt to Real-World Bimanual Robot
研究 DiVLA 对双臂机器人的适应性。 受π0的启发,设计了一个桌子整理任务,该任务涉及清理带有各种物体的桌子。 此任务已针对双臂机器人设置进行了调整:所有餐具都应放置在左侧的面板上,而垃圾则应丢入右侧的垃圾箱。 与工厂分拣任务类似,使用可见物体和可见物体与未见物体的组合来评估模型的性能。图8显示了环境设置以及用于训练和评估的所有物体。 评估包括十二次试验,每次试验在桌子上随机放置3到5个物体。成功率由正确放置的物体数量计算得出。
实验结果表明,当物体出现在训练数据中时,在可见物体上的平均成功率达到72.9%。相比之下,Diffusion Policy和OpenVLA的成功率分别为45.8%和0%。 对于涉及可见物体和不可见物体的任务,DiVLA的成功率高达70.8%,与可见物体相比略有下降,这表明其对不同颜色和形状的物体的泛化能力显著。最后,DiVLA展示了识别未见物体的能力,特别是通过对物体颜色做出敏感的反应。例如,它将雪碧罐分类为“绿色罐”,并将其正确地放入垃圾箱。 这一观察结果进一步支持了推理有助于泛化的观点。
Following Novel Instruction
评估模型遵循新指令的能力,特别关注其对未见指令的泛化能力。引入新的指令来提示模型:
对四个物体进行了测试:1)西瓜,2)柠檬水,3)蓝色纸垃圾,4)红辣椒。 这是一项极具挑战性的任务,因为这些新指令在Droid数据集和我们收集的数据中都不存在。评估了四个新的指令,结果总结在表2中。
研究结果表明,OpenVLA和DiVLA-2B都可以识别这些未见过的物体并执行基本的拾取和放置任务。 然而,当涉及到复杂的顺序任务时,OpenVLA无法准确解释指令;相反,它会随机选择项目。 相比之下,DiVLA 正确地遵循了指令,按指定的顺序拾取物体。通过学习将长期任务分解成子任务,DiVLA获得了理解复杂的多步骤指令的泛化能力。 虽然OpenVLA可以执行更简单的命令,例如“拿起西瓜”,但它难以处理需要按特定顺序选择项目的更高级指令。当模型处理新指令时抓取精度下降,这表明指令的新颖性给任务执行带来了进一步的复杂性。
实验结论
这项工作提出了视觉-语言-动作模型 DiVLA,它在模拟和现实场景中都具有强大的性能,包括单臂和双臂机器人。核心在于结合下一个 token 预测目标和扩散模型:前者用于任务推理,后者用于动作预测。 引入了一个推理重用模块来增强动作生成,并实现自适应视图的符元化以降低计算成本。 通过在模拟和多个真实世界实现中的广泛评估,DiVLA 优于几种 SOTA 机器人模型。 此外,DiVLA 具有强大的泛化能力,能够有效地适应新的指令、任务和环境。
相关文章:
[EAI-028] Diffusion-VLA,能够进行多模态推理和机器人动作预测的VLA模型
Paper Card 论文标题:Diffusion-VLA: Scaling Robot Foundation Models via Unified Diffusion and Autoregression 论文作者:Junjie Wen, Minjie Zhu, Yichen Zhu, Zhibin Tang, Jinming Li, Zhongyi Zhou, Chengmeng Li, Xiaoyu Liu, Yaxin Peng, Chao…...
char和varchar的区别、varchar(?)中问号部分的含义、索引的作用
char和varchar的区别 char是固定长度类型,当输入字符不满设定的固定长度时依旧占用固定长度的空间,补充空字节。 最大长度为255个字符 优点:效率高,在涉及索引和排序时缺点:占用空间使用场景:存储密码的…...
.NET9增强OpenAPI规范,不再内置swagger
ASP.NETCore in .NET 9.0 OpenAPI官方文档ASP.NET Core API 应用中的 OpenAPI 支持概述 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/openapi/overview?viewaspnetcore-9.0https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/ope…...
qsort应用
每天都会收到ai个礼物,到第n天的时候,然然发现他的宿舍被礼物搞得一团糟,所以然然打算到超市买一个柜子装礼物。但是超市有m个柜子,每个柜子都有不同的容量bi,然然想知道每个柜子最多可以装多少天的礼物(可…...
仿真设计|基于51单片机的贪吃蛇游戏
目录 具体实现功能 设计介绍 51单片机简介 资料内容 仿真实现(protues8.7) 程序(Keil5) 全部内容 资料获取 具体实现功能 利用单片机8*8点阵实现贪吃蛇游戏的控制。 仿真演示视频: 51-基于51单片机的贪吃蛇游…...
Linux内核中的页面错误处理机制与按需分页技术
在现代操作系统中,内存管理是核心功能之一,而页面错误(Page Fault)处理机制是内存管理的重要组成部分。当程序访问一个尚未映射到物理内存的虚拟地址时,CPU会触发页面错误异常,内核需要捕获并处理这种异常,以决定如何响应,例如加载缺失的页面、处理权限错误等。Linux内…...
Baklib推动企业知识管理创新与效率提升的全面探讨
内容概要 在当今数字化转型的背景下,有效的知识管理显得尤为重要。知识是企业的核心资产,而传统的管理方式往往无法充分发挥这些知识的价值。因此,企业亟需一种高效、灵活的解决方案来应对这一挑战。Baklib作为一款先进的企业级知识管理平台…...
NLP自然语言处理通识
目录 ELMO 一、ELMo的核心设计理念 1. 静态词向量的局限性 2. 动态上下文嵌入的核心思想 3. 层次化特征提取 二、ELMo的模型结构与技术逻辑 1. 双向语言模型(BiLM) 2. 多层LSTM的层次化表示 三、ELMo的运行过程 1. 预训练阶段 2. 下游任务微调 四、ELMo的…...
计算机毕业设计Python+CNN卷积神经网络考研院校推荐系统 考研分数线预测 考研推荐系统 考研爬虫 考研大数据 Hadoop 大数据毕设 机器学习
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
【编译原理实验二】——自动机实验:NFA转DFA并最小化
本篇适用于ZZU的编译原理课程实验二——自动机实验:NFA转DFA并最小化,包含了实验代码和实验报告的内容,读者可根据需要参考完成自己的程序设计。 如果是ZZU的学弟学妹看到这篇,那么恭喜你,你来对地方啦! 如…...
Hive:复杂数据类型之Map函数
Map函数 是Hive里面的一种复杂数据类型, 用于存储键值对集合。Map中的键和值可以是基础类型或复合类型,这使得Map在处理需要关联存储信息的数据时非常有用。 定义map时,需声明2个属性: key 和 value , map中是 key value 组成一个元素 key-value, key必须为原始类…...
C++ 中的引用(Reference)
在 C 中,引用(Reference)是一种特殊的变量类型,它提供了一个已存在变量的别名。引用在很多场景下都非常有用,比如函数参数传递、返回值等。下面将详细介绍 C 引用的相关知识。 1. 引用的基本概念和语法 引用是已存在…...
密码学的数学基础1-整数 素数 和 RSA加密
数学公式推导是密码学的基础, 故开一个新的课题 – 密码学的数学基础系列 素数 / 质数 质数又称素数。 一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数(规定1既不是质数也不是合数࿰…...
Java锁自定义实现到aqs的理解
专栏系列文章地址:https://blog.csdn.net/qq_26437925/article/details/145290162 本文目标: 理解锁,能自定义实现锁通过自定义锁的实现复习Thread和Object的相关方法开始尝试理解Aqs, 这样后续基于Aqs的的各种实现将能更好的理解 目录 锁的…...
STM32-时钟树
STM32-时钟树 时钟 时钟...
android 圆形弹窗摄像头开发踩坑——源码————未来之窗跨平台操作
一、飘窗刷脸,拍照采用飘窗 刷脸认证安卓接口采用飘窗具有在不干扰用户主要操作的前提下以醒目方式引导用户完成认证,且能灵活定制样式以提升用户体验和认证效率的优点 二、踩坑只有一个扇形 <?xml version"1.0" encoding"utf-8&quo…...
markdown公式特殊字符
个人学习笔记 根号 在 Markdown 中,要表示根号 3,可以使用 LaTeX 语法来实现。常见的有以下两种方式: 行内公式形式:使用一对美元符号 $ 将内容包裹起来,即 $\sqrt{3}$ ,在支持 LaTeX 语法渲染的 Markdow…...
Web-3.0学习路线
方向学习内容✅ 区块链基础区块链、智能合约、共识机制✅ 智能合约Solidity / Rust(Ethereum / Solana)✅ 前端React.js, Next.js, Web3.js, ethers.js✅ 后端Node.js, Python, Golang(链上数据)✅ 存储IPFS, Arweave, Filecoin&a…...
【算法设计与分析】实验5:贪心算法—装载及背包问题
目录 一、实验目的 二、实验环境 三、实验内容 四、核心代码 五、记录与处理 六、思考与总结 七、完整报告和成果文件提取链接 一、实验目的 掌握贪心算法求解问题的思想;针对不同问题,会利用贪心算法进行问题建模、求解以及时间复杂度分析&#x…...
使用 cmake
使用前注意 : CMake是一种跨平台的构建系统,它用于管理软件构建过程,尤其适合多语言、多配置的项目。CMake不直接构建软件,而是生成特定构建工具(如Makefile或Visual Studio项目)所需的配置文件。 如果仅仅使用 qt 编…...
万物皆有联系:驼鸟和布什
布什?一块布十块钱吗?不是,大家都知道,美国有两个总统,叫老布什和小布什,因为两个布什总统(父子俩),大家就这么叫来着,目的是为了好区分。 布什总统的布什&a…...
PHP实现混合加密方式,提高加密的安全性(代码解密)
代码1: <?php // 需要加密的内容 $plaintext 授权服务器拒绝连接;// 1. AES加密部分 $aesKey openssl_random_pseudo_bytes(32); // 生成256位AES密钥 $iv openssl_random_pseudo_bytes(16); // 生成128位IV// AES加密(CBC模式)…...
分层多维度应急管理系统的设计
一、系统总体架构设计 1. 六层体系架构 #mermaid-svg-QOXtM1MnbrwUopPb {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QOXtM1MnbrwUopPb .error-icon{fill:#552222;}#mermaid-svg-QOXtM1MnbrwUopPb .error-text{f…...
FFmpeg源码:av_base64_decode函数分析
一、引言 Base64(基底64)是一种基于64个可打印字符来表示二进制数据的表示方法。由于log2 646,所以每6个比特为一个单元,对应某个可打印字符。3个字节相当于24个比特,对应于4个Base64单元,即3个字节可由4个…...
算法随笔_30: 去除重复字母
上一篇:算法随笔_29:最大宽度坡_方法3-CSDN博客 题目描述如下: 给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。 示例 1: …...
fpga系列 HDL:XILINX Vivado Vitis 高层次综合(HLS) 实现 EBAZ板LED控制(上)
目录 创建工程创建源文件并编写C代码C仿真综合仿真导出RTL CG导出RTL错误处理: 创建工程 创建源文件并编写C代码 创建源文件(Souces下的hlsv.h和hlsv.cpp,Test Bench下的test_hlsv1.cpp): hlsv1.h #ifndef HLSV1 #define HLSV1 #include &l…...
企业微信SCRM推动企业数字化转型实现高效客户管理与营销效益提升
内容概要 在当今数字化转型的大背景下,企业微信SCRM逐渐成为推动企业高效客户管理和提升营销效益的重要工具。说到SCRM,首先要了解它的定义。SCRM即社交化客户关系管理,通过整合社交媒体与客户管理,帮助企业更好地理解和服务客户…...
C++ 7
vector 底层原理和扩容过程 底层原理 ● vector 是 C 标准库中的一个容器,可以看作是一个动态数组,它的大小可以根据元素的增加而增长。它通过在堆上分配一段连续的内存空间存放元素,支持时间复杂度为 O(1 ) 的随机访问。 ● vec…...
论文阅读(七):贝叶斯因果表型网络解释遗传变异和生物学知识
1.论文链接:Bayesian Causal Phenotype Network Incorporating Genetic Variation and Biological Knowledge 摘要: 在分离群体中,数量性状基因座(QTL)定位可以确定对表型有因果效应的QTL。这些方法的一个共同特点是Q…...
数据库之PostgreSQL详解
一、PostgreSQL介绍 PostgreSQL是一个功能强大的 开源 的关系型数据库。底层基于C实现。 PostgreSQL的开源协议和Linux内核版本的开源协议是一样的。。BDS协议,这个协议基本和MIT开源协议一样,说人话,就是你可以对PostgreSQL进行一些封装&a…...
计算机毕业设计Python+CNN卷积神经网络高考推荐系统 高考分数线预测 高考爬虫 协同过滤推荐算法 Vue.js Django Hadoop 大数据毕设
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
可被electron等调用的Qt截图-录屏工具【源码开放】
1. 工具功能简介: (1)、QT5.15.2截图工具(exe)可单独使用或嵌入IM(嵌入方法参照:https://gitee.com/lykiao/yfscreenshot_release) (2)、支持通过Windows消息通知截图成功或取消 (3)、支持圆形、矩形、线条…...
【Python蓝桥杯备赛宝典】
文章目录 一、基础数据结构1.1 链表1.2 队列1.3 栈1.4 二叉树1.5 堆二、基本算法2.1 算法复杂度2.2 尺取法2.3 二分法2.4 三分法2.5 倍增法和ST算法2.6 前缀和与差分2.7 离散化2.8 排序与排列2.9 分治法2.10贪心法1.接水时间最短问题2.糖果数量有限问题3.分发时间最短问题4.采摘…...
.cc扩展名是什么语言?C语言必须用.c为扩展名吗?主流编程语言扩展名?Java为什么不能用全数字的文件名?
.cc扩展名是什么语言? .cc是C语言使用的扩展名,一种说法是它是c with class的简写,当然C语言使用的扩展名不止.cc和.cpp, 还包含.cxx, .c, .C等,这些在不同编译器系统采用的默认设定不同,需要区分使用。当然,编译器提…...
基于 Redis GEO 实现条件分页查询用户附近的场馆列表
🎯 本文档详细介绍了如何使用Redis GEO模块实现场馆位置的存储与查询,以支持“附近场馆”搜索功能。首先,通过微信小程序获取用户当前位置,并将该位置信息与场馆的经纬度数据一同存储至Redis中。利用Redis GEO高效的地理空间索引能…...
项目练习:重写若依后端报错cannot be cast to com.xxx.model.LoginUser
文章目录 一、情景说明二、解决办法 一、情景说明 在重写若依后端服务的过程中 使用了Redis存放LoginUser对象数据 那么,有存就有取 在取值的时候,报错 二、解决办法 方法1、在TokenService中修改如下 getLoginUser 方法中:LoginUser u…...
Python算法详解:贪心算法
贪心算法(Greedy Algorithm)是一种通过选择当前最优解以期望达到全局最优解的算法思想。它在每一步选择时只考虑当前状态下的局部最优,而不关心全局问题的复杂性。这种算法简单高效,适用于某些特定问题,尤其是存在贪心…...
5.3.2 软件设计原则
文章目录 抽象模块化信息隐蔽与独立性衡量 软件设计原则:抽象、模块化、信息隐蔽。 抽象 抽象是抽出事物本质的共同特性。过程抽象是指将一个明确定义功能的操作当作单个实体看待。数据抽象是对数据的类型、操作、取值范围进行定义,然后通过这些操作对数…...
sublime_text的快捷键
sublime_text的快捷键 向下复制, 复制光标所在整行并插入到下一行:通过 CtrlShiftD 实现快速复制当前行的功能。 可选多行, 不选则复制当前行 ctrl Shift D 删除当前行:通过 CtrlShiftK 实现快速删除当前行的功能。 可选多行, 不选则删当前行 ctrl S…...
【项目集成Husky】
项目集成Husky 安装初始化 Husky在.husky → pre-commit文件中添加想要执行的命令 安装 使用 Husky 可以帮助你在 Git 钩子中运行脚本,例如在提交代码前运行测试或格式化代码pnpm add --save-dev husky初始化 Husky npx husky init这会在项目根目录下创建一个 .hu…...
本地运行大模型效果及配置展示
电脑上用ollama安装了qwen2.5:32b,deepseek-r1:32b,deepseek-r1:14b,llama3.1:8b四个模型,都是Q4_K_M量化版。 运行过程中主要是cpu和内存负载比较大,qwen2.5:32b大概需要22g,deepseek-r1:32b类…...
数据结构与算法 —— 常用算法模版
数据结构与算法 —— 常用算法模版 二分查找素数筛最大公约数与最小公倍数 二分查找 人间若有天堂,大马士革必在其中;天堂若在天空,大马士革必与之齐名。 —— 阿拉伯谚语 算法若有排序,二分查找必在其中;排序若要使用…...
进阶数据结构——高精度运算
目录 前言一、高精度运算的定义与背景二、高精度运算的实现方式三、高精度运算的算法实现四、高精度运算的应用场景五、代码模版(c)六、经典例题1.[高精度加法](https://www.lanqiao.cn/problems/1516/learning/?page1&first_category_id1&name…...
第一届“启航杯”网络安全挑战赛WP
misc PvzHE 去这个文件夹 有一张图片 QHCTF{300cef31-68d9-4b72-b49d-a7802da481a5} QHCTF For Year 2025 攻防世界有一样的 080714212829302316092230 对应Q 以此类推 QHCTF{FUN} 请找出拍摄地所在位置 柳城 顺丰 forensics win01 这个软件 云沙盒分析一下 md5 ad4…...
前端八股CSS:盒模型、CSS权重、+与~选择器、z-index、水平垂直居中、左侧固定,右侧自适应、三栏均分布局
一、盒模型 题目:简述CSS的盒模型 答:盒模型有两种类型,可以通过box-sizing设置 1.标准盒模型(content-box):默认值,宽度和高度只包含内容区域,不包含内边距、边框和外边距。 2.边框盒模型&a…...
使用 Tauri 2 + Next.js 开发跨平台桌面应用实践:Singbox GUI 实践
Singbox GUI 实践 最近用 Tauri Next.js 做了个项目 - Singbox GUI,是个给 sing-box 用的图形界面工具。支持 Windows、Linux 和 macOS。作为第一次接触这两个框架的新手,感觉收获还蛮多的,今天来分享下开发过程中的一些经验~ 为啥要做这个…...
Windows程序设计10:文件指针及目录的创建与删除
文章目录 前言一、文件指针是什么?二、设置文件指针的位置:随机读写,SetFilePointer函数1.函数说明2.函数实例 三、 目录的创建CreateDirectory四、目录的删除RemoveDirectory总结 前言 Windows程序设计10:文件指针及目录的创建与…...
Rk3588芯片介绍(含数据手册)
芯片介绍:RK3588是一款低功耗,高性能的处理器,适用于基于arm的PC和边缘计算设备,个人移动互联网设备和其他数字多媒体应用,集成了四核Cortex-A76和四核Cortex-A55以及单独的NEON协处理器 视频处理方面:提供…...
golang 使用双向链表作为container/heap的载体
MyHeap:container/heap的数据载体,需要实现以下方法: Len:堆中数据个数 Less:第i个元素 是否必 第j个元素 值小 Swap:交换第i个元素和 第j个元素 Push:向堆中追加元素 Pop:从堆…...
HTML DOM 修改 HTML 内容
HTML DOM 修改 HTML 内容 引言 HTML DOM(文档对象模型)是浏览器内部用来解析和操作HTML文档的一种机制。通过DOM,我们可以轻松地修改HTML文档的结构、样式和行为。本文将详细介绍如何使用HTML DOM来修改HTML内容,包括元素的增删改查、属性修改以及事件处理等。 1. HTML …...