【论文笔记】Fast3R:前向并行muti-view重建方法
众所周知,DUSt3R只适合做稀疏视角重建,与sapnn3r的目的类似,这篇文章以并行的方法,扩展了DUSt3R在多视图重建中的能力。
abstract
多视角三维重建仍然是计算机视觉领域的核心挑战,尤其是在需要跨不同视角实现精确且可扩展表示的应用中。当前的主流方法,如DUSt3R,采用了一种基于成对处理的方式,即对图像进行两两处理,并需要通过昂贵的全局对齐程序来实现多视角重建。我们提出了Fast3R,这是对DUSt3R的一种新颖的多视角扩展,通过并行处理多个视角,实现了高效且可扩展的三维重建。Fast3R基于Transformer的架构在一次前向传播中处理N张图像,避免了迭代对齐的需求。通过在相机姿态估计和三维重建上的大量实验,Fast3R展示了最先进的性能,在推理速度上显著提升,并减少了误差累积。这些结果表明,Fast3R是多视角应用中的一个强大替代方案,在不牺牲重建精度的前提下提供了更强的可扩展性。
1. Introduction
传统的重建流程,例如基于运动恢复结构(SfM)[44]和多视角立体视觉(MVS)[18]的方法,主要依赖于图像对来重建三维几何。但它们需要大量的工程来实现特征提取、对应匹配、三角测量和全局对齐等顺序阶段,从而限制了其可扩展性和速度。
DUSt3R[61通过将成对重建问题转化为点图的回归问题能够直接从RGB图像中预测三维结构。并放宽了传统投影相机模型的硬约束[61],在具有挑战性的视角下展现了令人印象深刻的鲁棒性。这代表了三维重建领域的一次根本性转变,因为端到端可学习的解决方案不仅减少了流程中误差的累积,还显著简化了操作。
然而,DUSt3R的根本是重建两幅图像输入的场景。为了处理多于两幅图像,DUSt3R需要计算O(N²)对点图并执行全局对齐优化过程。这一过程计算成本高昂,随着图像数量的增加,其扩展性较差。例如,在A100 GPU上仅处理48个视角就可能导致内存溢出(OOM)。另外,两两重建这一过程限制了模型的上下文信息,既影响了训练期间的学习效果,也限制了推理阶段的最终精度。从这个意义上说,DUSt3R与传统SfM和MVS方法一样,面临着成对处理的瓶颈问题。
Fast3R是一种新型的多视图重建框架,旨在克服上面提到的局限性。 FAST3R在Dust3R的基础上,利用Transformer-based架构[56]并行处理多个图像,允许在单个正向过程中重建。 每个帧可以同时参与重建过程中输入集中的所有其他帧,大大减少了误差的积累。 并且Fast3R推理的时间也大大减少。
总结:
(1)Fast3R是一种基于Transformer的多视角点图估计模型,无需全局后处理,在速度、计算开销和可扩展性方面实现了显著提升。
(2)通过实验证明,模型性能随着视角数量的增加而提升。在相机姿态定位和重建任务中,当模型在更大规模的视角集上训练时,其性能会得到改善。在推理过程中使用更多视角时,每个视角的精度会进一步提高,并且模型能够泛化到远超训练时所见视角数量的场景。
(3)我们展示了在相机姿态估计任务中的最先进性能,并显著提升了推理时间。在CO3Dv2数据集[39]上,Fast3R在15度误差范围内的姿态估计精度达到99.7%,与经过全局对齐的DUSt3R相比,误差减少了14倍以上。
2. Related Work
现代三维重建方法都是基于MVG,分为多个顺序阶段:特征提取、寻找成对图像对应关系、通过三角测量生成三维点及成对相机相对姿态,以及全局捆绑调整(bundle adjustment)。然而,任何流程化方法都容易累积误差,尤其是在手工设计的组件中。此外,顺序处理的特性阻碍了并行化,从而限制了速度和可扩展性。MVG方法自计算机视觉早期就已存在,并且至今仍在使用的理由是:当它们没有灾难性失败时,可以非常精确。最新的多视角几何流程,如COLMAP[44]或OrbSLAM2[30],融合了近60年的工程改进,但这些方法在静态场景(如ETH-3D[52])中仍然有超过40%的概率会灾难性失败,而这类场景由于图像覆盖密集,实际上可以被认为是相对简单的情况。
DUSt3R通过点图回归来替换MVG流程中直到全局成对对齐的所有步骤。直接为成对图像在共享坐标系中预测三维点图。其他MVG组件任务,如相对相机姿态估计和深度估计,可以从生成的点图表示中恢复。然而,DUSt3R存在很大局限性,即只能完成稀疏视角重建,上述也提到了DUSt3R的局限性。
然而,DUSt3R具有启发意义,MASt3R在每个解码器输出上添加了一个局部特征头,而MonST3R[69]则对动态场景进行了数据驱动的探索,但两者本质上仍然是成对方法。特别是MASt3R并未对全局对齐方法进行任何改动。与我们同期的工作,Spann3R[57]将图像视为有序序列(例如来自视频),并使用成对滑动窗口网络以及学习的空间记忆系统逐步重建场景。这扩展了DUSt3R以处理更多图像,但Spann3R的增量成对处理无法修复早期帧的重建,这可能导致误差累积。作者提出的Fast3R的Transformer架构使用了all-to-all注意力机制,使模型能够同时并联合地推理所有帧,而无需假设图像顺序。Fast3R消除了顺序依赖性,从而在单次前向传播中实现了跨多个设备的并行推理。
3. Model
3.1. Problem definition
如图2,输入N个无序无pose的RGB图像,Fast3R预测对应的pointmap
(
)以及confidence map
来重建场景,不过这里的
有两类,一种是全局pointmap
,另一种是局部pointmap
,confidence map也一样,全局置信图
,局部置信图
,比如,在MASt3R中,
是在视角1的坐标系下,
就是当前相机坐标系:
3.2. Training Objective-Fast3R的loss设计
Fast3R的预测与GT的loss是DUST3R的一个广义版本,即归一化 3D 逐点回归损失的置信加权:
首先,我们回顾DUST3R的点图loss:
在此基础上,使用confidence-ajusted loss:
我们的直觉是置信度加权有助于模型处理标签噪声。与DUST3R类似,我们在真实世界的扫描数据上进行训练,这些数据通常包含底层点图标签中的系统性误差。例如,在真实激光扫描中,玻璃或薄结构通常无法正确重建[4, 67],而相机配准中的误差会导致图像与点图标签之间的错位[66]。
3.3. Model architecture
Fast3R的结构设计来源于DUSt3R,包括三部分:image encoding, fusion transformer,
and pointmap decoding,并且处理图片的方式是并行的。
(1)Image encoder
与DUST3R一样,对于任意的图片,encoder部分使用CroCo ViT里面的
,即分成patch提取特征,最后得到
,其中
,记作:
然后,在fusion transformer之前,往patch 特征H里面添加一维的索引嵌入(image index positional embeddings),索引嵌入帮助融合Transformer确定哪些补丁来自同一图像,并且是识别的机制,而
定义了全局坐标系。使模型能够从原本排列不变的标记集中隐式地联合推理所有图像的相机pose。
(2)Fusion transformer
Fast3R 主要的计算在Fusion transformer过程中,我们使用的是与ViTB [12] 或 BERT类似的12层transformer,还可以按照比例放大,在此过程中,直接执行all-to-all的自注意力,这样,Fast3R获得了包含整个数据集的场景信息。
(3)pointmap decoding
Fast3R的位置编码细节也很讲究,这个细节大家感兴趣可以仔细看看,可以达到训练20张图,推理1000张图的效果。最后,使用DPT-Large的decoder得到点图以及置信图
,下面简单介绍一下DPT-L。
DPT探讨了如何将视觉Transformer应用于密集预测任务(如语义分割、深度估计等)。通过引入层次化特征提取、多尺度特征融合以及专门的密集预测头,改进了ViT架构,使其能够有效处理高分辨率输入并生成像素级预测。
4. Experiments
baseline是DUSt3R,MASt3R,Spann3R,所以,训练数据与他们保持一致,包括object-center和scene scan两类,在 64 个 A100 GPU 上训练 6.13 天
4.1. Inference Efficiency
表2显示了随着视角数量增加,推理时间和内存使用情况的变化。Fast3R能够单次处理多达1500个视角,而DUSt3R在超过32个视角时就会耗尽内存。Fast3R的推理时间也显著更快,且随着视角数量的增加,其优势更加明显。
4.2. Pose Estimation
受DUSt3R[61]的启发,我们从预测的全局点图中估计焦距、相机旋转和相机平移。我们首先基于图像分辨率初始化一组随机焦距猜测,然后使用RANSAC-PnP根据猜测的焦距和全局点图估计相机的旋转和平移。RANSAC-PnP的离群点数量用于对每个猜测的焦距进行评分(越低越好),并选择得分最高的焦距来计算相机的内参和外参矩阵。
表1中显示了15°阈值下的相对旋转精度RRA(预测的相机旋转与真实旋转之间的误差小于15°的比例)和相对平移精度(RTA),30°阈值下的平均精度mAA(多个误差阈值(通常从0°到30°)下的平均精度),以及模型的每秒帧数(FPS)。在Co3D数据集上,Fast3R在RRA和mAA指标上超越了所有其他方法,实现了接近完美的RRA,同时在RTA上保持竞争力。重要的是,速度比DUSt3R快200倍,比MASt3R快700倍。
图4和图5显示,Fast3R的预测随着视角数量的增加而改进,表明该模型能够利用多张图像的额外上下文信息。
4.3. 3D Reconstruction
在场景级基准测试(7-Scenes [47] 和 Neural RGB-D [3])以及物体级基准测试(DTU [1])上评估了Fast3R的三维重建性能。
使用ICP(迭代最近点算法)将每张图像的局部点图独立对齐到全局点图,并使用对齐后的局部点图进行评估。Fast3R在与DUSt3R和MASt3R等其他点图重建方法的比较中表现出了竞争力,同时速度显著更快,如表3和表4所示。我们相信,随着更好的重建数据、更多的计算资源以及更优的训练策略,Fast3R的性能将进一步提升。
5. Conclusion
我们提出了Fast3R,这是一种能够在单次前向传播中直接预测所有像素在统一参考系中三维位置的Transformer模型。通过用端到端训练的通用架构取代整个SfM(运动恢复结构)流程,Fast3R及类似方法有望受益于Transformer的常规扩展规律:随着数据质量的提升和参数规模的增加,性能持续改进。由于Fast3R采用全局注意力机制,它避免了现有系统中因瓶颈而导致的两个潜在人为扩展限制。首先,图像对重建的瓶颈限制了模型可用的信息量。其次,成对全局优化只能部分弥补这一问题,且无法通过增加数据来改进。
通过我们的高效实现,Fast3R能够以超过250 FPS的速度运行,并在一次前向传播中处理1500张图像,远超其他方法,同时在三维重建和相机姿态估计基准测试中取得了具有竞争力的结果。另外,Fast3R继承了未来工程改进的优势,能够高效地服务于和训练基于Transformer的大型模型。例如,像Deepspeed-Inference [38]和FlashAttention [7, 8]这样的工具包提供了融合内核、模型并行化和数据并行化功能。这些功能加速了推理并减少了内存需求,使每个设备能够处理更多图像,且图像数量随设备数量的增加而扩展。
Fast3R的架构允许并行处理多个视角,其位置嵌入设计使得在视角上下文长度上能够实现“短训练,长测试”。然而,我们观察到,对于重建区域非常大的场景,当视角数量变得极端(例如超过200个)时,某些视角的点图(特别是那些置信度得分较低的视角)开始表现出漂移行为。目前解决这一问题的一种方法是丢弃置信度得分较低的帧。在密集重建中,这种方法通常不会对重建质量造成太大影响。
相关文章:
【论文笔记】Fast3R:前向并行muti-view重建方法
众所周知,DUSt3R只适合做稀疏视角重建,与sapnn3r的目的类似,这篇文章以并行的方法,扩展了DUSt3R在多视图重建中的能力。 abstract 多视角三维重建仍然是计算机视觉领域的核心挑战,尤其是在需要跨不同视角实现精确且可…...
开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析
内容概要 在当今数字化快速发展的时代,园区管理软件的选择显得尤为重要。而开源智慧园区管理系统凭借其独特的优势,逐渐成为用户的新宠。与传统管理软件相比,它不仅灵活性高,而且具有更强的可定制性,让各类园区&#…...
第四节 MATLAB变量
每个MATLAB变量可以是数组或者矩阵。 用一个简单的方法指定变量。例如: x 3 % defining x and initializing it with a value MATLAB执行上述语句,并返回以下结果: x 3 上述的例子创建了一个1-1的矩阵名为x和的值存储在其元素中…...
小红的小球染色期望
B-小红的小球染色_牛客周赛 Round 79 题目描述 本题与《F.R小红的小球染色期望》共享题目背景,但是所求内容与范围均不同,我们建议您重新阅读题面。 有 n 个白色小球排成一排。小红每次将随机选择两个相邻的白色小球,将它们染成红色。小红…...
c++井字棋(单人对电脑:1.电脑随机下 2.电脑AI;3.双人对决)
本游戏分两个模式,三种玩法: 每个玩法中的人下棋规则不变,如下: while (1) {/*输入*/int row,col;cout<<"请输入坐标(1索引):\n";cin>>row>>col;/*切换索引*/row--;col--;if(legal(row,col)) {prin…...
Python 原子操作:使用 `atomic` 模块保证线程安全
Python 原子操作:使用 atomic 模块保证线程安全 在多线程编程中,共享数据的访问往往需要考虑线程安全问题。如果多个线程同时修改同一个变量,可能会导致数据竞争,从而产生不可预测的结果。为了解决这个问题,我们可以使用原子操作。原子操作是指不可中断的操作,要么全部执…...
《解锁AI黑科技:数据分类聚类与可视化》
在当今数字化时代,数据如潮水般涌来,如何从海量数据中提取有价值的信息,成为了众多领域面临的关键挑战。人工智能(AI)技术的崛起,为解决这一难题提供了强大的工具。其中,能够实现数据分类与聚类…...
使用朴素贝叶斯对自定义数据集进行分类
准备自定义数据集 首先,需要一个自定义数据集来进行分类。创建一个简单的二维数据集,其中每个样本有两个特征,并且属于两个类别之一。 import numpy as np import pandas as pd# 创建自定义数据集 np.random.seed(42) num_samples 100# 生…...
《超自然》:科学与灵性融合的自我转变之路
在现代社会中,许多人开始探寻自我成长、身心疗愈与灵性提升的可能性。Bestselling author Dr. Joe Dispenza 的《超自然:普通人如何创造非凡人生》正是在这样的大背景下问世的。书中既融合了量子物理、神经科学和表观遗传学的前沿理论,又吸收…...
学习日记-250202
现在开始要继续写我的日记了......(也可以当作笔记吧) 一.论文 Prompt Transfer for Dual-Aspect Cross Domain Cognitive Diagnosis 主要内容: 主要是加入prompt提示, 为重叠实体设计个性化的提示,为非重叠实体设计共…...
AI(计算机视觉)自学路线
本文仅用来记录一下自学路线方便日后复习,如果对你自学有帮助的话也很开心o(* ̄▽ ̄*)ブ B站吴恩达机器学习->B站小土堆pytorch基础学习->opencv相关知识(Halcon或者opencv库)->四类神经网络(这里跟…...
游戏引擎 Unity - Unity 启动(下载 Unity Editor、生成 Unity Personal Edition 许可证)
Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…...
第二篇:多模态技术突破——DeepSeek如何重构AI的感知与认知边界
——从跨模态对齐到因果推理的工程化实践 在AI技术从单一模态向多模态跃迁的关键阶段,DeepSeek通过自研的多模态融合框架,在视觉-语言-语音的联合理解与生成领域实现系统性突破。本文将从技术实现层面,解构其跨模态表征学习、动态融合机制与…...
41. 缺失的第一个正数
参考题解:https://leetcode.cn/problems/first-missing-positive/solutions/7703/tong-pai-xu-python-dai-ma-by-liweiwei1419 难点在于时间复杂度控制在O(n),空间复杂度为常数级。 哈希表时间复杂度符合,但是空间复杂度为O(n) 排序空间复杂…...
DeepSeek R1 简易指南:架构、本地部署和硬件要求
DeepSeek 团队近期发布的DeepSeek-R1技术论文展示了其在增强大语言模型推理能力方面的创新实践。该研究突破性地采用强化学习(Reinforcement Learning)作为核心训练范式,在不依赖大规模监督微调的前提下显著提升了模型的复杂问题求解能力。 技…...
经典游戏红色警戒2之英语
1. New construction options 部署新的建筑物(一般是部署基地车时说的)。 2. Loading 等待。(正在进行) 3. Construction complete 建筑完成。 4. On hold 等待。(暂停进行) 5. Canceled 取消。 6. Ca…...
Zemax 中带有体素探测器的激光谐振腔
激光谐振腔是激光系统的基本组成部分,在光的放大和相干激光辐射的产生中起着至关重要的作用。 激光腔由两个放置在光学谐振器两端的镜子组成。一个镜子反射率高(后镜),而另一个镜子部分透明(输出耦合器)。…...
猴子吃桃问题
# 猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,有多吃了一个,第二天早上有将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩的一半零一个。到第十天早上想再吃时࿰…...
ELECTRA:作为判别器而非生成器的预训练文本编码器
摘要 诸如BERT之类的掩码语言建模(MLM)预训练方法通过将某些标记替换为[MASK]来破坏输入,然后训练模型以重建原始标记。尽管这些方法在下游自然语言处理(NLP)任务中表现良好,但它们通常需要大量的计算资源…...
图论——最小生成树
最小生成树 给定一个无向图,在图中选择若干条边把图的所有节点连起来。要求边长之和最小。在图论中,叫做求最小生成树。 prim算法 prim 算法采用的是一种贪心的策略。 每次将离连通部分的最近的点和点对应的边加入的连通部分,连通部分逐渐扩大…...
【Linux-网络】初识计算机网络 Socket套接字 TCP/UDP协议(包含Socket编程实战)
🎬 个人主页:谁在夜里看海. 📖 个人专栏:《C系列》《Linux系列》《算法系列》 ⛰️ 道阻且长,行则将至 目录 📚一、初识计算机网络 📖 背景 📖 网络协议 🔖OSI七层…...
三数之和(15)
15. 三数之和 - 力扣(LeetCode) 可以一起总结的题目:三角形的最大周长(976)-CSDN博客 解法: class Solution { public:vector<vector<int>> threeSum(vector<int>& nums) {vector…...
6 Flink 状态管理
6 Flink 状态管理 1. State-Keyed State2. State-Operator State3. Broadcast State 我们前面写的 wordcount 的例子,没有包含状态管理。如果一个task在处理过程中挂掉了,那么它在内存中的状态都会丢失,所有的数据都需要重新计算。从容错和消…...
物联网 STM32【源代码形式-使用以太网】连接OneNet IOT从云产品开发到底层MQTT实现,APP控制 【保姆级零基础搭建】
物联网(IoT)是指通过各种信息传感器、射频识别技术、全球定位系统、红外感应器等装置与技术,实时采集并连接任何需要监控、连接、互动的物体或过程,实现对物品和过程的智能化感知、识别和管理。物联网的核心功能包括数据采集与监…...
elasticsearch8.15 高可用集群搭建(含认证Kibana)
文章目录 1.资源配置2.系统参数优化3.JDK17安装4.下载&安装ES 8.155.生成ES的证书(用于ES节点之间进行安全数据传输)6.修改ES 相关配置文件7.创建es用户并启动8.配置ES的账号和密码(用于ES服务端和客户端)9.下载和安装Kibana10.编辑Kibana配置文件11.启动Kiabana12.访问Kia…...
如何实现滑动网格的功能
文章目录 1 概念介绍2 使用方法3 示例代码 我们在上一章回中介绍了SliverList组件相关的内容,本章回中将介绍SliverGrid组件.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 我们在本章回中介绍的SliverGrid组件是一种网格类组件,主要用来…...
DBASE DBF数据库文件解析
基于Java实现DBase DBF文件的解析和显示 JDK19编译运行,实现了数据库字段和数据解析显示。 首先解析数据库文件头代码 byte bytes[] Files.readAllBytes(Paths.get(file));BinaryBufferArray bis new BinaryBufferArray(bytes);DBF dbf new DBF();dbf.VersionN…...
linux中统计文件中特定单词或字符串的出现次数
在 Linux 中,可以使用 grep 和 wc 命令组合来统计一个文件中特定单词或字符串的个数。假设想统计文件 example.txt 中字符串 “example_string” 出现的次数,可以使用以下命令: grep -o -w example_string example.txt | wc -l这里是每个选项…...
视觉状态空间模型(VMamba)的解读
在计算机视觉领域,设计计算高效的网络架构一直是研究的热点。今天,我想和大家分享一篇发表在 NIPS 2024 上的论文——VMamba:Visual State Space Model,这篇论文提出了一种新的视觉骨干网络,具有线性时间复杂度&#x…...
几种K8s运维管理平台对比说明
目录 深入体验**结论**对比分析表格**1. 功能对比****2. 用户界面****3. 多租户支持****4. DevOps支持** 细对比分析1. **Kuboard**2. **xkube**3. **KubeSphere**4. **Dashboard****对比总结** 深入体验 KuboardxkubeKubeSphereDashboard 结论 如果您需要一个功能全面且适合…...
nodejs:js-mdict 的下载、安装、测试、build
js-mdict 项目的目录结构:js-mdict 项目教程 js-mdict 下载地址: js-mdict-master.zip 先解压到 D:\Source\ js-mdict 6.0.2 用了 ts (TypeScript) 和 Jest,增加了应用开发的难度,因为先要了解 ts 和 Jest。 参阅:测试与开发&a…...
Vue3 表单:全面解析与最佳实践
Vue3 表单:全面解析与最佳实践 引言 随着前端技术的发展,Vue.js 已经成为最受欢迎的前端框架之一。Vue3 作为 Vue.js 的最新版本,带来了许多改进和新的特性。其中,表单处理是 Vue 应用中不可或缺的一部分。本文将全面解析 Vue3 …...
JavaWeb入门-请求响应(Day3)
(一)请求响应概述 请求(HttpServletRequest):获取请求数据 响应(HttpServletResponse):设置响应数据 BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器就可访问,应用程序的逻辑和数据都存储在服务端(维护方便,响应速度一般) CS架构:Client/ser…...
【单层神经网络】基于MXNet库简化实现线性回归
写在前面 同最开始的两篇文章 完整程序及注释 导入使用的库# 基本 from mxnet import autograd, nd, gluon # 模型、网络 from mxnet.gluon import nn from mxnet import init # 学习 from mxnet.gluon import loss as gloss # 数据集 from mxnet.gluon…...
一元函数微积分的几何应用:二维平面光滑曲线的曲率公式
文章目录 前言曲率和曲率半径的定义曲率计算公式参数方程形式直角坐标显式方程形式极坐标形式向量形式 前言 本文将介绍二维平面光滑曲线的曲率定义以及不同形式的曲率及曲率半径公式的推导。 曲率和曲率半径的定义 (关于二维平面光滑曲线的定义以及弧长公式请参…...
编程题-最接近的三数之和
题目: 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数,使它们的和与 target 最接近。 返回这三个数的和。 假定每组输入只存在恰好一个解。 解法一(排序双指针): 题目要求找…...
【LLM-agent】(task4)搜索引擎Agent
note 新增工具:搜索引擎Agent 文章目录 note一、搜索引擎AgentReference 一、搜索引擎Agent import os from dotenv import load_dotenv# 加载环境变量 load_dotenv() # 初始化变量 base_url None chat_model None api_key None# 使用with语句打开文件…...
string类详解
为什么学习string类? 1.1 C语言中的字符串 C语言中,字符串是以\0结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想…...
【含文档+PPT+源码】基于微信小程序农家乐美食餐厅预约推广系统
项目介绍 本课程演示的是一款基于微信小程序农家乐美食餐厅预约推广系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 …...
享元模式——C++实现
目录 1. 享元模式简介 2. 代码示例 1. 享元模式简介 享元模式是一种结构型模式。 享元模式用于缓存共享对象,降低内存消耗。共享对象相同的部分,避免创建大量相同的对象,减少内存占用。 享元模式需要将对象分成内部状态和外部状态两个部分…...
《苍穹外卖》项目学习记录-Day11订单统计
根据起始时间和结束时间,先把begin放入集合中用while循环当begin不等于end的时候,让begin加一天,这样酒吧把这个区间内的时间放到List集合。 查询每天的订单总数也就是查询的时间段是大于当天的开始时间(0点0分0秒)小…...
Python3 OS模块中的文件/目录方法说明十六
一. 简介 前面文章简单学习了 Python3 中 OS模块中的文件/目录的部分函数。 本文继续来学习 OS 模块中文件、目录的操作方法:os.unlink() 方法、os.utime()方法。 二. Python3 OS模块中的文件/目录方法 1. os.unlink() 方法 os.unlink() 方法用于删除文件,如果文…...
(二)QT——按钮小程序
目录 前言 按钮小程序 1、步骤 2、代码示例 3、多个按钮 ①信号与槽的一对一 ②多对一(多个信号连接到同一个槽) ③一对多(一个信号连接到多个槽) 结论 前言 按钮小程序 Qt 按钮程序通常包含 三个核心文件: m…...
图论——spfa判负环
负环 图 G G G中存在一个回路,该回路边权之和为负数,称之为负环。 spfa求负环 方法1:统计每个点入队次数, 如果某个点入队n次, 说明存在负环。 证明:一个点入队n次,即被更新了n次。一个点每次被更新时所对应最短路的边数一定是…...
96,【4】 buuctf web [BJDCTF2020]EzPHP
进入靶场 查看源代码 GFXEIM3YFZYGQ4A 一看就是编码后的 1nD3x.php 访问 得到源代码 <?php // 高亮显示当前 PHP 文件的源代码,用于调试或展示代码结构 highlight_file(__FILE__); // 关闭所有 PHP 错误报告,防止错误信息泄露可能的安全漏洞 erro…...
Rust 的基本类型有哪些,他们存在堆上还是栈上,是否可以COPY?
Rust 的基本类型主要包括以下几类: 1. 整数类型(Integer) Rust 提供了有符号和无符号的整数类型: 有符号整数(i8, i16, i32, i64, i128, isize)无符号整数(u8, u16, u32, u64, u128, usize&a…...
函数与递归
函数与递归 声明或者定义应该在使用之前(不单单针对于函数) 函数对全局变量做出的改变还是不会随着函数结束而消失的 函数声明在main函数里面也是可以的 引用变量和引用实体的变化是一样的 传址调用比传值调用效率高 重载函数->编译器会根据传递…...
UE5 蓝图学习计划 - Day 11:材质与特效
在游戏开发中,材质(Material)与特效(VFX) 是提升视觉体验的关键元素。Unreal Engine 5 提供了强大的 材质系统 和 粒子系统(Niagara),让开发者可以通过蓝图控制 动态材质、光效变化、…...
DeepSeek 详细使用教程
1. 简介 DeepSeek 是一款基于人工智能技术的多功能工具,旨在帮助用户高效处理和分析数据、生成内容、解答问题、进行语言翻译等。无论是学术研究、商业分析还是日常使用,DeepSeek 都能提供强大的支持。本教程将详细介绍 DeepSeek 的各项功能及使用方法。…...
低代码系统-产品架构案例介绍、炎黄盈动-易鲸云(十二)
易鲸云作为炎黄盈动新推出的产品,在定位上为低零代码产品。 开发层 表单引擎 表单设计器,包括设计和渲染 流程引擎 流程设计,包括设计和渲染,需要说明的是:采用国际标准BPMN2.0,可以全球通用 视图引擎 视图…...