ACM MM24 | Hi3D: 3D生成领域再突破!新视角生成和高分辨率生成双SOTA(复旦智象等)

文章链接:https://arxiv.org/pdf/2409.07452
Github 链接:https://github.com/yanghb22-fdu/Hi3D-Official

亮点直击

  • 本文提出了高分辨率图像到3D模型(Hi3D),这是一种基于视频扩散的新范式,将单个图像重新定义为多视角图像,作为3D感知的序列图像生成(即轨道视频生成)。该方法深入探讨了视频扩散模型中潜在的时间一致性知识,这些知识在3D生成中能够很好地推广到多个视角之间的几何一致性。

  • 提出了基于视频扩散模型的图像到3D生成方法,通过利用视频扩散模型的时间一致性来增强3D几何一致性。

  • 提出了高分辨率图像到3D模型(Hi3D),在两阶段中生成高分辨率的3D网格和纹理:首先生成低分辨率轨道视频,然后通过3D感知精化器生成高分辨率视频。

  • 在新视角合成和单视角重建任务中表现出色,实现了高质量的3D网格和纹理。

总结速览

解决的问题

Hi3D框架旨在解决从高分辨率图像生成3D模型时面临的挑战,特别是如何在多个视角之间保持几何一致性和高质量的纹理细节。传统方法往往在生成多视角图像时缺乏时间一致性,导致生成的3D内容在视觉上不连贯。

提出的方案

Hi3D提出了一种基于视频扩散的新范式,通过将单个图像重新定义为多视角图像,形成一个序列图像生成的过程(即轨道视频生成)。该方案利用3D感知先验(如相机姿态条件)来增强预训练的视频扩散模型,从而生成低分辨率的多视角图像。接着,使用学习到的3D感知视频到视频的细化器进一步提升这些图像的分辨率和细节。

应用的技术

视频扩散模型:用于生成多视角图像,特别关注时间一致性。 3D感知先验:通过相机姿态条件增强模型的生成能力。 3D高斯点云:用于进一步增强生成的多视角图像,以便进行高保真网格重建。

达到的效果

实验结果表明,Hi3D能够生成具有高度详细纹理的优越多视角一致图像。大量关于新视图合成和单视图重建的实验验证了该方法在生成高保真3D模型方面的有效性,显著提升了生成内容的几何一致性和视觉质量。

方法

本文设计了一种新的高分辨率图像到3D生成架构,称为Hi3D,创新性地将视频扩散模型整合到3D感知的360°序列图像生成中(即轨道视频生成)。 本文的出发点是利用视频扩散模型中固有的时间一致性知识,以增强3D生成中的视角一致性。首先在本节中详细阐述图像到3D生成的问题表述,再详细介绍Hi3D框架中两阶段视频扩散范式的细节。

第一阶段,本文重新构建了预训练的图像到视频扩散模型,增加了相机姿态的条件,然后在3D数据上进行微调,以实现轨道视频生成。在第二阶段,本文通过3D感知的视频到视频细化器进一步提升多视角图像的分辨率。最后,本文引入了一种新颖的3D重建 pipeline,从这些高分辨率的多视角图像中提取高质量的3D网格。Hi3D的整体架构如下图2所示。

问题表述

给定一张 RGB 图像 (源视图),目标是生成其对应的 3D 内容(即,纹理三角网格)。与之前的图像到 3D 生成方法类似,分解为两个步骤:

  1. 生成围绕物体 的多视角图像序列。

  2. 从这些生成的多视角图像重建 3D 内容。

在技术上,首先以两阶段的方式,从与输入条件图像 对应的 个不同摄像机姿态 合成物体的多视角图像序列 。在本工作中,生成 张高分辨率的多视角图像,分辨率为 。值得注意的是,之前的最先进的图像到 3D 模型只能生成低分辨率(即 )的多视角图像。相比之下,据本文所知,本文的工作是首个实现高分辨率(即 )图像到 3D 生成的研究,这可以保留输入图像更丰富的几何和纹理细节。

通过精心设计的 3D 重建 pipeline,从这些合成的高分辨率多视角图像中提取 3D 网格。由于生成的视图数量相对有限,因此从这些稀疏视图中提取高质量网格是困难的。为了解决这个问题,本文利用新颖的视图合成方法(3D 高斯喷溅从多视角图像 重建隐式 3D 模型。然后,本文在多视角图像之间渲染额外的插值视图 ,并将这些渲染的视图添加到 中,从而获得物体 的稠密视图图像 。最后,采用基于 SDF 的重建方法从这些稠密视图 中提取高质量网格。

第一阶段:基本多视图生成

之前的图像到3D生成方法通常依赖于预训练的图像扩散模型来实现多视图生成。这些方法通常通过注入多视图交叉注意力层,将图像扩散模型中的2D UNet扩展为3D UNet。这些新增的注意力层在3D数据集上从头开始训练,以学习多视图一致性。然而,为了确保训练的稳定性,这些方法中的图像分辨率被限制在256×256。正如Zero123所指出的,保持预训练图像扩散模型中的原始分辨率(512×512)会导致收敛速度变慢和方差增加。因此,由于这种低分辨率限制,这些方法无法完全捕捉输入2D图像中的丰富3D几何和纹理细节。

此外,研究者们观察到这些方法仍然存在多视图不一致的问题,特别是对于复杂物体的几何形状。这可能是因为底层预训练的2D扩散模型仅在单个2D图像上训练,缺乏对多视图相关性的3D建模。为了解决上述问题,将单张图像到多视图图像重新定义为3D感知序列图像生成(即轨道视频生成),并利用预训练的视频扩散模型实现这一目标。特别是,重新利用Stable Video Diffusion (SVD) 从输入图像生成多视图图像。SVD的吸引力在于它在大量不同的视频上进行了训练,使网络在训练期间能够遇到物体的多个视图。这可能缓解了3D数据稀缺问题。此外,SVD已经通过时间注意力层明确建模了多帧关系。我们可以继承这些时间层中固有的多帧一致性知识,以追求3D生成中的多视图一致性。

训练数据。 首先从Objaverse的LVIS子集中构建一个高分辨率多视图图像数据集。对于每个3D资产,以1,024 × 1,024的分辨率在随机仰角 下渲染16个视图。需要注意的是,虽然仰角是随机选择的,但在单个视频中的所有视图中保持不变。对于每个视频,相机与物体的距离为 ,并在方位角从 到 均匀分布。训练数据集总共包含大约300,000个视频,记为 ,其中输入条件图像 是序列图像 的第一帧。

视频扩散微调 ,在第一阶段,重新利用预训练的图像到视频扩散模型,以生成多视角一致的顺序图像。因此,前述的多视角图像数据集 被用来对具有额外相机姿态条件的3D感知视频扩散模型进行微调。具体而言,给定输入的单视角图像 ,首先通过视频扩散模型的VAE编码器将其投影到潜在空间,并与噪声潜在序列在通道上进行拼接,这鼓励合成的多视角图像保留输入图像的身份和复杂细节。此外,通过交叉注意力机制将输入条件图像的CLIP embedding并入扩散UNet。在每个 transformer 块中,CLIP embedding 矩阵作为交叉注意力层的键和值,而层的特征则作为查询。

通过这种方式,输入图像的高层语义信息被传递到视频扩散模型中。由于多视角图像序列是在随机高度下渲染的,将高度参数作为额外条件输入到视频扩散模型中。相机高度角 首先被嵌入到到正弦位置 embeddings中,然后与扩散噪声时间步 一起输入到UNet中。由于所有多视角序列遵循相同的方位轨迹,本文不将方位参数输入到扩散模型中。在这里,本文省略了视频扩散模型中的原始“fps id”和“运动桶id”条件,因为这些条件与多视角图像生成无关。

改造后的视频扩散模型中的去噪神经网络(3D UNet)可以表示为 。给定多视角图像序列 ,预训练的VAE编码器 首先提取每幅图像的潜在编码,以构成潜在编码序列 。接下来,通过在每个时间步 采用典型的前向扩散过程,将高斯噪声 添加到 中,以获得噪声潜在编码 。具有参数 的3D UNet 被训练以基于噪声潜在编码 、输入图像条件 和高度角 估计添加的噪声 ,通过标准的均方误差(MSE)损失进行训练:

是一个对应的权重因子。本文并没有直接在高分辨率(即 1024 × 1024)下训练去噪神经网络,而是以粗到细的方式将这个复杂的问题分解为更稳定的子问题。在第一阶段,使用公式 (4) 在 512 × 512 分辨率下训练去噪神经网络,以生成低分辨率的多视角图像。第二阶段则进一步将 512 × 512 的多视角图像转换为高分辨率(1024 × 1024)的多视角图像。

第 2 阶段:3D 感知多视图细化

阶段一输出的 512 × 512 多视角图像展现了良好的多视角一致性,但仍未能完全捕捉输入的几何和纹理细节。为了解决这个问题,增加了一个额外的阶段,通过新的 3D 感知视频到视频的精细化器,进一步放大第一阶段的低分辨率输出,从而生成更高分辨率(即 1024 × 1024)的多视角图像,具有更精细的 3D 细节和一致性。

在这一阶段,还将预训练的视频扩散模型重塑为 3D 感知的视频到视频精细化器。形式上,这种去噪神经网络可以表示为 ,其中 表示与第一阶段输入图像 对应生成的多视角图像, 是生成的多视角图像 的估计深度序列。为了明确,输入条件 和 以与第一阶段相同的方式注入到预训练的视频扩散模型中。此外,本文采用 VAE 编码器提取预生成多视角图像 的潜在编码序列,并将其与噪声潜在变量 在通道维度上连接起来。

此外,为了充分利用生成的多视角图像的潜在几何信息,本文利用现成的深度估计模型来估计 中每幅图像的深度作为 3D 线索,从而生成深度图序列 。然后,本文将深度图直接调整为与潜在编码 相同的分辨率,并在通道维度上将其与 连接。

最后,重塑后的去噪神经网络通过扩散模型中的标准均方误差(MSE)损失进行训练:

这里 是一个加权因子。训练图像的分辨率在公式 (5) 中被放大到 1024 × 1024。

在训练过程中,采用了一些图像降质方法来合成 以进行数据增强,而不仅仅使用第一阶段生成的粗糙多视角图像。具体来说,本文利用高阶降质模型来合成训练数据,包括一系列模糊、调整大小、噪声和压缩过程。

为了复制超调伪影(例如,图像中锐利过渡处的振铃或重影),使用了 滤波器。此外,还使用随机遮罩技术来模拟形状变形的效果。这样不仅加快了训练过程,还增强了本文视频到视频的细化器的鲁棒性。

3D 网格提取

通过上述两阶段视频扩散基础范式,本文可以获得一个高分辨率图像序列 (),该序列以输入图像 为条件。本节旨在从这些生成的高分辨率多视角图像中提取高质量的网格。之前的图像到 3D 方法通常通过优化神经隐式符号距离场(SDF)来重建目标 3D 网格。然而,这些基于 SDF 的重建方法最初是为在真实世界中捕获的密集图像序列量身定制的,通常无法仅基于稀疏视图重建出高质量的网格。

为了解决这个问题,研究者们设计了一种独特的高分辨率稀疏视图 3D 重建pipeline。并不直接采用基于 SDF 的重建方法来提取 3D 网格,而是首先使用 3D 高斯喷溅(3DGS)算法从生成的高分辨率图像序列中学习一个隐式 3D 模型。3DGS 在新视角合成能力和渲染速度方面表现出色。在这里,本文试图利用 3DGS 的隐式重建能力,为第二阶段的输出稀疏多视角图像提供更多的新视角。具体来说,本文从重建的 3DGS 中渲染 个相邻图像之间的插值视图 。最后,本文基于增强后的密集视图 优化一个基于 SDF 的重建方法,以提取物体 的高质量 3D 网格。

实验

实验设置

数据集与评估。 通过在两个主要任务上进行实验来实证验证本文的Hi3D模型的优越性,即新视图合成和单视图重建。在Google扫描物体(GSO)数据集上进行定量评估。在新视图合成任务中,采用三种常用指标:PSNR、SSIM 和LPIPS。在单视图重建任务中,使用Chamfer距离和体积IoU来衡量重建3D模型的质量。此外,为了评估本文Hi3D的泛化能力,对来自互联网的各种风格的单幅图像进行了定性评估。

实现细节。 在基本多视图生成的第一阶段,将视频数据集缩放为512 × 512的视频。在多视图精细化的第二阶段,不仅使用第一阶段的输出,还采用合成数据生成策略(类似于传统的图像/视频恢复方法进行数据增强。该策略旨在加速训练过程并增强模型的鲁棒性。整体实验在八个80G A100 GPU上进行。具体来说,第一阶段经历了80,000个训练步骤(大约3天),学习率为1 × 10⁻⁵,总批量大小为16。第二阶段包含20,000个训练步骤(约3天),学习率为5 × 10⁻⁵,批量大小减少为8。

对比方法。 本文将Hi3D与以下最先进的方法进行比较:RealFusion和Magic123利用2D扩散模型(Stable Diffusion)和SDS损失从单视图图像重建。Zero123学习从不同视角生成同一物体的新视图图像,并可以与SDS损失结合进行3D重建。Zero123-XL和Stable-Zero123通过提高训练数据质量进一步升级Zero123。One-2-3-45通过多视图图像(即Zero123的输出)直接学习显式3D表示,利用3D有符号距离函数(SDFs)。Point-E和Shap-E在一个广泛的内部OpenAI 3D数据集上进行预训练,从而能够直接将单视图图像转换为3D点云或以MLP编码的形状。SyncDreamer引入了3D全局特征体积以保持多视图一致性。Wonder3D和EpiDiff利用3D注意力机制,通过交叉注意力层使多视图图像之间能够相互作用。值得注意的是,在新视图合成任务中,本文仅包含部分基线(即Zero123系列、SyncDreamer、EpiDiff),以便与本文的Hi3D进行公平比较。

新颖的视图合成

下表1总结了新视图合成任务的性能比较,下图3展示了在两种不同视图下的定性结果。Hi3D在性能上始终优于现有的基于2D扩散的方法。具体来说,Hi3D的PSNR达到了24.26%,比最佳竞争对手EpiDiff高出3.77%。Hi3D的最高图像质量得分突显了视频扩散基于范式的关键优势,即利用3D先验知识来提升新视图合成的效果。

由于图像独立翻译,Zero123系列(例如,Stable-Zero123)未能实现多视图一致性结果(例如,上图3(a)中闹钟头部在不同视图下的一/两个环)。SyncDreamer和EpiDiff通过利用3D中间信息或使用多视图注意机制进一步增强了多视图一致性。然而,由于受到限制的低图像分辨率(256×256),它们的新视图结果仍然存在模糊和不真实的问题(例如,上图3(a)中模糊的闹钟数字)。相反,通过挖掘3D先验并通过视频扩散模型提升多视图图像分辨率,本文的Hi3D成功生成了多视图一致且高分辨率的1024×1024图像,从而实现了最高的图像质量(例如,上图3(a)中清晰可见的闹钟数字)。

单视图重建

下表2中评估了Hi3D的单视图重建性能。此外,下图4展示了Hi3D与现有方法的定性比较。总体而言,Hi3D在两个指标上均优于最先进的方法。One-2-3-45直接利用Zero123的多视图输出进行重建,但其3D一致性较差,通常导致生成的网格过于平滑,细节较少。Stable-Zero123通过使用更高质量的训练数据进一步提高了3D一致性,但仍然存在缺失或过于平滑的网格问题。与Zero123中的独立图像翻译不同,SyncDreamer、EpiDiff和Wonder3D通过2D扩散模型同时进行多视图图像翻译,从而实现了更好的3D一致性。然而,由于低分辨率多视图图像的限制,它们在重建复杂的3D网格和丰富细节方面仍然面临挑战。相比之下,Hi3D充分发挥了预训练视频扩散模型中固有的3D先验知识,并将多视图图像提升到更高的分辨率。这种设计使得3D网格重建的质量更高,细节更丰富(例如,下图4中鸟和企鹅的脚部)。

消融研究

3D感知多视图优化阶段的效果。 在这里检查第二阶段(即3D感知多视图优化)对新视图合成的有效性。下表3详细列出了Hi3D的消融实验结果。具体而言,第二行去除了整个第二阶段,性能大幅下降。这验证了通过3D感知视频到视频的优化器提升多视图图像分辨率的有效性。此外,当仅去除第二阶段中的深度条件(第三行)时,性能明显下降,这表明深度条件在增强多视图图像之间的3D几何一致性方面的有效性。

3D重建中插值视图数量的影响。 下表4显示了使用不同数量的插值视图𝑀的单视图重建性能。在极端情况下,当𝑀 = 0时,不使用插值视图,3D重建流程退化为典型的基于SDF的重建。随着𝑀增加到16,重建性能明显提高,这基本上显示了通过3DGS插值视图的优势。然而,当进一步增大𝑀时,性能略有下降。推测这可能是由于视图之间不必要的信息重复和错误累积所致。在实际应用中,𝑀通常设置为16。

更多讨论

文本到图像再到3D。 通过将先进的文本到图像模型(例如,Stable Diffusion、Imagen)集成到Hi3D中,能够直接从文本描述生成3D模型,如下图5所示。本文的方法能够生成高保真度的3D模型,具有高度细致的纹理,这再次突显了高分辨率多视图图像生成与3D一致性的优点。

3D模型生成中的多样性和创造力。 在这里,本文通过使用不同的随机种子来考察本文的Hi3D的多样性和创造力。如下图6所示,Hi3D能够生成多样且合理的实例,每个实例都有独特的几何结构或纹理。这种能力不仅增强了3D模型创建的灵活性,还显著促进了在3D设计和可视化中的创造性探索。

结论

本文探讨了在预训练视频扩散模型中固有的3D先验知识,以促进图像到3D生成的提升。本文从一个新颖的视角研究了将单幅图像转化为多视图图像的问题,提出了3D感知的序列图像生成(即轨道视频生成)。为了实现本文的想法,本文引入了Hi3D,该方法采用两阶段视频扩散的范式,以触发高分辨率的图像到3D生成。

在技术上,在基本多视图生成的第一阶段,重新塑造了一个视频扩散模型,并增加了相机姿态的3D条件,旨在将单幅图像转化为低分辨率轨道视频。在3D感知的多视图细化的第二阶段,设计了一个带有深度条件的视频到视频细化器,以将低分辨率轨道视频放大为具有丰富纹理细节的高分辨率序列图像。最终,生成的高分辨率输出通过3D高斯点云进行插值视图增强,并采用基于SDF的重建方法实现3D网格。

在新视图合成和单视图重建任务上的实验验证了本文的方法在性能上优于最先进的技术。

参考文献

[1] Hi3D: Pursuing High-Resolution Image-to-3D Generation with Video Diffusion Models

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147431.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Codeforces Round 974 (Div. 3) G. Milky Days

题目 题解 #include<bits/stdc.h> using namespace std; #define int long long #define ll long long #define ld long double #define pb push_back #define fi first #define se second #define pii pair<int, int> #define lson p << 1 #define rson p …

Mapper核心配置文件

文章目录 environment 数据库环境typeAlias 起别名 environment 数据库环境 typeAlias 起别名

PMBOK® 第六版 估算活动持续时间

目录 读后感—PMBOK第六版 目录 在项目管理中&#xff0c;尤其是在软件开发这样的复杂项目中&#xff0c;工作内容是多种多样的。从需求分析、设计、编码到测试和部署&#xff0c;每个阶段都有其独特的挑战和不确定性。 没有人能独自完成所有估算工作并做到绝对精准。估算涉及…

股指期货交割方式是什么?

说起股指期货&#xff0c;这可是个高大上的金融玩意儿。咱们平时买卖股票&#xff0c;那是看准了哪只股就下手&#xff0c;赚了就卖&#xff0c;赔了就扛&#xff0c;挺直接的。但股指期货呢&#xff0c;它玩的是未来的预期&#xff0c;就像是你跟人打赌明天天气好不好&#xf…

开源推理库介绍:ZML,Distributed Llama,EXO | LeetTalk Daily

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 开源推理库的出现为机器学习模型的部署、监控和扩展提供了强大的支持。我们介绍三个重要的开源推理库&#xff1a;ZML、Distributed Llama …

机器人速度雅可比矩阵求解(2自由度平面关节机器人)

关节速度和末端速度空间的映射需要计算雅可比矩阵的逆矩阵,在博途PLC里如何计算一个方阵的逆矩阵,大家可以参考下面这篇文章: 博途PLC矩阵求逆 矩阵求逆 博图SCL_博图矩阵运算-CSDN博客文章浏览阅读839次。本文介绍如何用C语言实现矩阵求逆的过程,详细解析了相关代码,适…

Spring实战——入门讲解

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 Spring介绍 Spring实战的入门讲解主要涵盖了Spring框架的基本概念、核心功能以及应用场景。以下是关于Spring实战入门的具体介绍&#xff1a; Spring框架概述&#xff1a;Spring是一个轻量级的Java开发框架…

【有啥问啥】探索累计推理(Cumulative Reasoning, CR)——大型语言模型中的复杂推理新框架

探索累计推理&#xff08;Cumulative Reasoning, CR&#xff09;——大型语言模型中的复杂推理新框架 引言 随着人工智能&#xff08;AI&#xff09;的快速发展&#xff0c;大型语言模型&#xff08;LLMs&#xff09;在自然语言处理上的表现令人瞩目。然而&#xff0c;LLMs在…

【HTTPS】—— HTTPS协议原理详解

目录 &#xff08;一&#xff09;Https是什么 1.1 什么是加密 1.2 为什么要加密 1.3 常见的加密方式 1.4 数据摘要 && 数据指纹 &#xff08;二&#xff09;Https工作过程研究 方案一&#xff1a;只使用对称秘钥 方案二&#xff1a;只使用非对称秘钥 方案三&a…

14年数据结构

第一题 解析&#xff1a; 求时间复杂度就是看程序执行了多少次。 假设最外层执行了k次&#xff0c;我们看终止条件是kn&#xff0c;则&#xff1a; 有, 内层是一个j1到jn的循环&#xff0c;显然执行了n次。 总的时间复杂度是内层外层 答案选C。 第二题 解析&#xff1a; 一步一…

如何用ChatGPT制作一款手机游戏应用

有没有想过自己做一款手机游戏&#xff0c;并生成apk手机应用呢&#xff1f;有了人工智能&#xff0c;这一切就成为可能。今天&#xff0c;我们就使用ChatGPT来创建一个简单的井字棋游戏&#xff08;Tic-Tac-Toe&#xff09;&#xff0c;其实这个过程非常轻松且高效。 通过Cha…

【Linux】常用指令【更详细,带实操】

Linux全套讲解系列&#xff0c;参考视频-B站韩顺平&#xff0c;本文的讲解更为详细 目录 一、文件目录指令 1、cd【change directory】指令 ​ 2、mkdir【make dir..】指令​ 3、cp【copy】指令 ​ 4、rm【remove】指令 5、mv【move】指令 6、cat指令和more指令 7、less和…

【Python】Maya:为人类打造的 Python 日期时间库

不知道少了什么&#xff0c;总感觉没有以前快乐。 在编程中处理日期和时间总是一个挑战&#xff0c;尤其是当涉及到时间和时区的转换时。Maya 是一个由 Kenneth Reitz 开发的 Python 库&#xff0c;旨在简化日期时间的处理&#xff0c;使其对人类开发者更加友好。本文将介绍 M…

【二等奖论文】2024年华为杯研究生数学建模F题成品论文(后续会更新)

您的点赞收藏是我继续更新的最大动力! 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 点击链接获取【2024华为杯研赛资料汇总】&#xff1a; https://qm.qq.com/q/alQjz21npu https://qm.qq.com/q/alQjz21npu X射线脉冲星光子到达时间建模 摘要 脉冲星是…

2024年最新前端工程师 TypeScript 基础知识点详细教程(更新中)

1. TypeScript 概述 TypeScript 是由微软开发的、基于 JavaScript 的一种强类型编程语言。它是在 JavaScript 的基础上添加了静态类型检查、面向对象编程等功能的超集&#xff0c;最终会被编译为纯 JavaScript 代码。由于其扩展了 JavaScript 的功能&#xff0c;TypeScript 特…

【Linux 21】线程安全

文章目录 &#x1f308; 一、线程互斥⭐ 1. 线程间互斥的相关概念&#x1f319; 1.1 临界资源和临界区&#x1f319; 1.2 互斥和原子性 ⭐ 2. 互斥量 mutex⭐ 3. 互斥量接口&#x1f319; 3.1 初始化互斥量&#x1f319; 3.2 销毁互斥量&#x1f319; 3.3 互斥量上锁&#x1f3…

Mysql删库跑路,如何恢复数据?

问题 删库跑路&#xff0c;数据还能恢复吗&#xff1f; 我们经常听说某某被领导训斥了&#xff0c;对领导心生痛恨&#xff0c;然后登录 Mysql 删库跑路。对于闲聊中经常听说过的一个段子&#xff0c;在现实生活中是否真的发生过&#xff0c;如果发生了&#xff0c;我们该如何解…

解决RabbitMQ设置x-max-length队列最大长度后不进入死信队列

解决RabbitMQ设置x-max-length队列最大长度后不进入死信队列 问题发现问题解决方法一&#xff1a;只监听死信队列&#xff0c;在死信队列里面处理业务逻辑方法二&#xff1a;修改预取值 问题发现 最近再学习RabbitMQ过程中&#xff0c;看到关于死信队列内容&#xff1a; 来自队…

Docker 容器技术:颠覆传统,重塑软件世界的新势力

一、Docker简介 什么是docker Docker 是一种开源的容器化平台&#xff0c;它可以让开发者将应用程序及其所有的依赖项打包成一个标准化的容器&#xff0c;从而实现快速部署、可移植性和一致性。 从功能角度来看&#xff0c;Docker 主要有以下几个重要特点&#xff1a; 轻量…

[Redis][数据类型]详细讲解

1.Redis 特殊数据结构 1.Streams 应用场景&#xff1a;主要用为队列(阻塞队列) 2.Geospatial 应用场景&#xff1a;用来存储坐标(经纬度) 3.HyperLogLog 应用场景&#xff1a;估算集合中的元素个数注意&#xff1a; HyperLogLog不存储元素的内容&#xff0c;但是能够记录“…