DeepSeek最新图像模型Janus-Pro论文阅读
目录
论文总结
摘要
1. 引言
2. 方法
2.1 架构
2.2 优化的训练策略
2.4 模型扩展
3. 实验
3.1 实施细节
3.2 评估设置
3.3 与最新技术的比较
3.4 定性结果
4. 结论
论文总结
Janus-Pro是DeepSeek最新开源的图像理解生成模型,Janus-Pro在多模态理解和文本到图像生成方面进行了显著改进的先进模型。它是之前工作 Janus 的升级版本,主要通过优化训练策略、扩展训练数据和扩大模型规模来提升性能。
Janus-Pro 的架构基于解耦的视觉编码器。具体来说,它使用 SigLIP 编码器 处理多模态理解任务中的图像特征,使用 VQ tokenizer 处理视觉生成任务中的图像特征。这两种编码器分别将图像转换为特征序列,然后将这些特征序列与文本特征序列合并,输入到统一的自回归变换器中进行处理。这种设计有效缓解了多模态理解和生成任务之间的冲突,使得模型在这两项任务上都能表现出色。
Janus-Pro 在以下三个方面进行了关键改进:
1.优化训练策略
Janus-Pro 对训练过程进行了重新设计,增加了第一阶段的训练步骤,专注于在 ImageNet 数据集上训练视觉编码器,以更好地建模像素依赖关系。在第二阶段,直接使用正常的文本到图像数据进行训练,避免了之前版本中对 ImageNet 数据的过度依赖,提高了训练效率。此外,在第三阶段的监督微调中,调整了不同类型数据的比例,进一步平衡了多模态理解和生成任务的训练。
2.扩充数据集
Janus-Pro 在多模态理解和视觉生成方面引入了大量高质量的数据。对于多模态理解,增加了约 9000 万个样本,包括图像字幕数据和表格、图表、文档理解数据。对于视觉生成,引入了约 7200 万个合成审美数据样本,使真实数据与合成数据的比例达到 1:1。这些数据的增加显著提升了模型的泛化能力和生成质量。
3.扩大模型
Janus-Pro 将模型规模从 1.5B 扩展到 7B,显著提高了模型的表达能力和收敛速度。实验表明,更大的模型在多模态理解和视觉生成任务上都表现出了更好的性能。
项目主页:https://github.com/deepseek-ai/Janus
接下来是论文原文的翻译
Janus-Pro:通过数据和模型扩展实现统一的多模态理解和生成
摘要
在本研究中,我们介绍了 Janus-Pro,这是之前工作 Janus 的一个高级版本。具体来说,Janus-Pro 采用了(1)优化的训练策略,(2)扩展的训练数据,以及(3)更大的模型规模。凭借这些改进,Janus-Pro 在多模态理解和文本到图像的指令跟随能力方面取得了显著进展,同时增强了文本到图像生成的稳定性。我们希望这项工作能够激发该领域的进一步探索。代码和模型已公开。
1. 引言

图1 | Janus-Pro 的多模态理解和视觉生成结果。对于多模态理解,我们平均了 POPE、MME-Perception、GQA 和 MMMU 的准确率。MME-Perception 的分数除以 20 以缩放到 [0, 100] 范围。对于视觉生成,我们在两个指令跟随基准测试 GenEval 和 DPG-Bench 上评估性能。总体而言,Janus-Pro 超越了之前的统一多模态模型以及一些特定任务的模型。最好在屏幕上查看。

图2 | Janus-Pro 与前代产品 Janus 在文本到图像生成之间的比较。Janus-Pro 在短提示下能够提供更稳定的输出,具有改进的视觉质量、更丰富的细节,并且能够生成简单文本。图像分辨率为 384×384。
最近在统一多模态理解和生成模型方面的进展已经取得了显著的成果。这些方法已被证明可以增强视觉生成任务中的指令跟随能力,同时减少模型冗余。大多数方法使用相同的视觉编码器来处理多模态理解和生成任务的输入。由于这两个任务所需的表示不同,这通常会导致多模态理解性能不佳。为了解决这一问题,Janus 提出了视觉编码解耦,缓解了多模态理解和生成任务之间的冲突,实现了在两项任务中的出色表现。
作为开创性模型,Janus 在 1B 参数规模上得到了验证。然而,由于训练数据有限,模型容量相对较小,它在短提示图像生成和不稳定文本到图像生成质量方面表现出一定的不足。在本文中,我们介绍了 Janus-Pro,这是 Janus 的一个增强版本,它在训练策略、数据和模型规模三个维度上进行了改进。Janus-Pro 系列包括两种模型规模:1B 和 7B,展示了视觉编码解码方法的可扩展性。
我们在多个基准测试上评估了 Janus-Pro,结果表明其在多模态理解能力方面表现出色,文本到图像指令跟随性能显著提高。具体来说,Janus-Pro-7B 在多模态理解基准测试 MMBench 上得分为 79.2,超过了其他统一多模态模型,如 Janus(69.4)、TokenFlow(68.9)和 MetaMorph(75.2)。此外,在文本到图像指令跟随排行榜 GenEval 上,Janus-Pro-7B 得分为 0.80,超过了 Janus(0.61)、DALL-E 3(0.67)和 Stable Diffusion 3 Medium(0.74)。
2. 方法
2.1 架构
Janus-Pro 的架构如图 3 所示,与 Janus 相同。整体架构的核心设计理念是解耦多模态理解和生成的视觉编码。我们应用独立的编码方法将原始输入转换为特征,然后通过统一的自回归变换器进行处理。对于多模态理解,我们使用 SigLIP 编码器从图像中提取高维语义特征。这些特征从二维网格展平为一维序列,然后通过理解适配器将图像特征映射到 LLM 的输入空间。对于视觉生成任务,我们使用 VQ tokenizer 将图像转换为离散 ID。将 ID 序列展平为一维后,我们使用生成适配器将每个 ID 对应的码本嵌入映射到 LLM 的输入空间。然后我们将这些特征序列连接起来形成多模态特征序列,随后将其输入到 LLM 中进行处理。除了 LLM 内置的预测头外,我们还为视觉生成任务中的图像预测使用了一个随机初始化的预测头。整个模型遵循自回归框架。

图3 | Janus-Pro的架构。我们解耦了用于多模态理解和视觉生成的视觉编码。“Und. Encoder”和“Gen. Encoder”分别是“Understanding Encoder”(理解编码器)和“Generation Encoder”(生成编码器)的缩写。
2.2 优化的训练策略
Janus 的前一个版本采用了一个三阶段训练过程。第一阶段专注于训练适配器和图像头部。第二阶段处理统一预训练,在此期间,除了理解编码器和生成编码器之外的所有组件都会更新其参数。第三阶段是监督微调,在第二阶段的基础上,进一步在训练过程中解锁理解编码器的参数。这种训练策略存在一些问题。在第二阶段,Janus 按照 PixArt 的方式将文本到图像能力的训练分为两部分。第一部分使用 ImageNet 数据,以图像类别名称作为文本到图像生成的提示,目标是建模像素依赖关系。第二部分使用正常的文本到图像数据进行训练。在实施过程中,第二阶段 66.67% 的文本到图像训练步骤分配给了第一部分。然而,通过进一步的实验,我们发现这种策略是次优的,并导致了显著的计算效率低下。
为了解决这一问题,我们进行了两项改进:
-
第一阶段的更长训练:我们增加了第一阶段的训练步骤,以便在 ImageNet 数据集上进行充分的训练。我们的发现表明,即使在 LLM 参数固定的情况下,模型也能够有效地建模像素依赖关系,并根据类别名称生成合理的图像。
-
第二阶段的专注训练:在第二阶段,我们放弃了 ImageNet 数据,直接使用正常的文本到图像数据来训练模型,使其能够根据密集描述生成图像。这种重新设计的方法使得第二阶段能够更高效地利用文本到图像数据,从而提高了训练效率和整体性能。
我们还调整了第三阶段监督微调过程中不同类型数据集的数据比例,将多模态数据、纯文本数据和文本到图像数据的比例从 7:3:10 调整为 5:1:4。通过略微减少文本到图像数据的比例,我们观察到这种调整使我们能够在保持强大的视觉生成能力的同时,实现更好的多模态理解性能。
2.3 数据扩展
我们在多模态理解和视觉生成方面扩展了用于 Janus 的训练数据。
-
多模态理解:对于第二阶段预训练数据,我们参考了 DeepSeekVL2,并增加了大约 9000 万个样本。这些包括图像字幕数据集(例如 YFCC),以及用于表格、图表和文档理解的数据(例如 Docmatix)。对于第三阶段监督微调数据,我们也纳入了 DeepSeek-VL2 的额外数据集,如 MEME 理解、中文对话数据以及旨在增强对话体验的数据集。这些新增内容显著扩展了模型的能力,丰富了其处理多样化任务的能力,同时改善了整体对话体验。
-
视觉生成:我们发现前一个版本的 Janus 所使用的现实世界数据质量欠佳且包含大量噪声,这常常导致文本到图像生成不稳定,产生审美质量较差的输出。在 Janus-Pro 中,我们纳入了大约 7200 万个合成审美数据样本,在统一预训练阶段使真实数据与合成数据的比例达到 1:1。这些合成数据样本的提示是公开可用的,例如 [43] 中的提示。实验表明,模型在合成数据上训练时收敛速度更快,生成的文本到图像输出不仅更加稳定,而且在审美质量上也有显著提升。
2.4 模型扩展
Janus 的前一个版本使用 1.5B LLM 验证了视觉编码解耦的有效性。在 Janus-Pro 中,我们将模型扩展到 7B,1.5B 和 7B LLM 的超参数详细信息见表 1。我们发现,当使用更大规模的 LLM 时,多模态理解和视觉生成的损失收敛速度显著提高,与较小模型相比优势明显。这一发现进一步验证了这种方法的强大可扩展性。
表1 | Janus-Pro 的架构配置。我们列出了架构的超参数。

表2 | Janus-Pro 训练的详细超参数。数据比例是指多模态理解数据、纯文本数据和视觉生成数据的比例。

3. 实验
3.1 实施细节
在我们的实验中,我们使用 DeepSeek-LLM(1.5B 和 7B)作为基础语言模型,最大支持的序列长度为 4096。对于理解任务中使用的视觉编码器,我们选择了 SigLIP-Large-Patch16-384。生成编码器的码本大小为 16,384,图像下采样因子为 16。理解适配器和生成适配器都是两层 MLP。每个阶段的详细超参数见表 2。请注意,在第二阶段,我们采用了提前停止策略,在 270K 步骤时停止训练。所有图像都被调整为 384×384 像素。对于多模态理解数据,我们将图像的长边调整大小,并用背景颜色(RGB:127,127,127)填充短边以达到 384。对于视觉生成数据,将短边调整为 384,长边裁剪为 384。我们在训练中使用序列打包以提高训练效率。我们根据指定的比例在单个训练步骤中混合所有数据类型。我们的 Janus-Pro 使用 HAI-LLM 进行训练和评估,这是一个基于 PyTorch 构建的轻量级高效分布式训练框架。整个训练过程大约花费了 9/14 天,分别在 16/32 个节点的集群上进行,每个节点配备 8 个 Nvidia A100(40GB)GPU。
3.2 评估设置
多模态理解:为了评估多模态理解能力,我们在广泛认可的基于图像的视觉语言基准测试中评估我们的模型,这些测试包括 GQA、POPE、MME、SEED、MMB、MM-Vet 和 MMMU。
视觉生成:为了评估视觉生成能力,我们使用 GenEval 和 DPG-Bench。GenEval 是一个针对文本到图像生成的挑战性基准测试,旨在通过提供详细实例级分析来反映视觉生成模型的综合生成能力。DPG-Bench(密集提示图基准测试)是一个包含 1065 个长且密集提示的综合数据集,旨在评估文本到图像模型的复杂语义对齐能力。
3.3 与最新技术的比较
多模态理解性能:我们将提出的方法与最新统一模型和仅理解模型进行了比较,结果见表 3。Janus-Pro 实现了整体最佳结果。这可以归因于解耦多模态理解和生成的视觉编码,缓解了这两项任务之间的冲突。与规模大得多的模型相比,Janus-Pro 仍然具有很强的竞争力。例如,Janus-Pro-7B 在所有基准测试中(除了 GQA)均超过了 TokenFlow-XL(13B)。
表3 | 与多模态理解基准测试中的最新技术进行比较。“Und.” 和 “Gen.” 分别表示 “理解” 和 “生成”。使用外部预训练扩散模型的模型用†标记。

视觉生成性能:我们在 GenEval 和 DPG-Bench 上报告了视觉生成性能。如表 4 所示,我们的 Janus-Pro-7B 在 GenEval 上获得了 80% 的总体准确率,超过了所有其他统一或仅生成方法,例如 Transfusion(63%)、SD3-Medium(74%)和 DALL-E 3(67%)。这表明我们的方法具有更好的指令跟随能力。如表 5 所示,Janus-Pro 在 DPG-Bench 上得分为 84.19,超过了所有其他方法。这表明 Janus-Pro 在遵循密集指令进行文本到图像生成方面表现出色。
表4 | 在 GenEval 基准测试中对文本到图像生成能力的评估。“Und.” 和 “Gen.” 分别表示 “理解” 和 “生成”。使用外部预训练扩散模型的模型用†标记。

表5 | DPG-Bench 上的性能。本表中的方法均为仅生成模型,除了 Janus 和 Janus-Pro。

3.4 定性结果
我们在图 4 中展示了多模态理解的结果。Janus-Pro 在处理来自各种上下文的输入时表现出令人印象深刻的理解能力,展示了其强大的能力。我们还在图 4 的下半部分展示了一些文本到图像的生成结果。Janus-Pro-7B 生成的图像非常逼真,尽管分辨率仅为 384×384,但仍然包含大量细节。对于富有想象力和创造力的场景,Janus-Pro-7B 准确地从提示中捕捉语义信息,生成了合理且连贯的图像。

图4 | 多模态理解和视觉生成能力的定性结果。模型为 Janus-Pro-7B,视觉生成的图像输出分辨率为 384×384。最好在屏幕上查看。
4. 结论
本文从训练策略、数据和模型规模三个方面对 Janus 进行了改进。这些改进使得多模态理解和文本到图像指令跟随能力都取得了显著进展。然而,Janus-Pro 仍然存在一些限制。在多模态理解方面,输入分辨率限制在 384×384,这影响了其在细粒度任务(如 OCR)中的性能。对于文本到图像生成,低分辨率加上视觉 tokenizer 引入的重建损失,导致生成的图像虽然语义丰富,但在细节上仍然缺乏精细度。例如,占据有限图像空间的小面部区域可能会显得细节不足。提高图像分辨率可能会缓解这些问题。
相关文章:
DeepSeek最新图像模型Janus-Pro论文阅读
目录 论文总结 摘要 1. 引言 2. 方法 2.1 架构 2.2 优化的训练策略 2.4 模型扩展 3. 实验 3.1 实施细节 3.2 评估设置 3.3 与最新技术的比较 3.4 定性结果 4. 结论 论文总结 Janus-Pro是DeepSeek最新开源的图像理解生成模型,Janus-Pro在多模态理解和文…...
【仿12306项目】基于SpringCloud,使用Sentinal对抢票业务进行限流
文章目录 一. 常见的限流算法1. 静态窗口限流2. 动态窗口限流3. 漏桶限流4. 令牌桶限流5. 令牌大闸 二. Sentinal简介三. 代码演示0. 限流场景1. 引入依赖2. 定义资源3. 定义规则4. 启动测试 四. 使用Sentinel控台监控流量1. Sentinel控台1.8.6版本下载地址2. 文档说明…...
【赵渝强老师】Spark RDD的依赖关系和任务阶段
Spark RDD彼此之间会存在一定的依赖关系。依赖关系有两种不同的类型:窄依赖和宽依赖。 窄依赖:如果父RDD的每一个分区最多只被一个子RDD的分区使用,这样的依赖关系就是窄依赖;宽依赖:如果父RDD的每一个分区被多个子RD…...
【B站保姆级视频教程:Jetson配置YOLOv11环境(六)PyTorchTorchvision安装】
Jetson配置YOLOv11环境(6)PyTorch&Torchvision安装 文章目录 1. 安装PyTorch1.1安装依赖项1.2 下载torch wheel 安装包1.3 安装 2. 安装torchvisiion2.1 安装依赖2.2 编译安装torchvision2.2.1 Torchvisiion版本选择2.2.2 下载torchvisiion到Downloa…...
Verilog语言学习总结
Verilog语言学习! 目录 文章目录 前言 一、Verilog语言是什么? 1.1 Verilog简介 1.2 Verilog 和 C 的区别 1.3 Verilog 学习 二、Verilog基础知识 2.1 Verilog 的逻辑值 2.2 数字进制 2.3 Verilog标识符 2.4 Verilog 的数据类型 2.4.1 寄存器类型 2.4.2 …...
【阅读笔记】LED显示屏非均匀度校正
一、背景 发光二极管(LED)显示屏具有色彩鲜艳、图像清晰、亮度高、驱动电压低、功耗小、耐震动、价格低廉和使用寿命长等优势。LED显示图像的非均匀度是衡量LED显示屏显示质量的指标,非均匀度过高,会导致LED显示图像出现明暗不均…...
【Java异步编程】CompletableFuture基础(1):创建不同线程的子任务、子任务链式调用与异常处理
文章目录 1. 三种实现接口2. 链式调用:保证链的顺序性与异步性3. CompletableFuture创建CompletionStage子任务4. 处理异常a. 创建回调钩子b. 调用handle()方法统一处理异常和结果 5. 如何选择线程池:不同的业务选择不同的线程池 CompletableFuture是JDK…...
ESXI虚拟机中部署docker会降低服务器性能
在 8 核 16GB 的 ESXi 虚拟机中部署 Docker 的性能影响分析 在 ESXi 虚拟机中运行 Docker 容器时,性能影响主要来自以下几个方面: 虚拟化开销:ESXi 虚拟化层和 Docker 容器化层的叠加。资源竞争:虚拟机与容器之间对 CPU、内存、…...
ASP.NET Core与配置系统的集成
目录 配置系统 默认添加的配置提供者 加载命令行中的配置。 运行环境 读取方法 User Secrets 注意事项 Zack.AnyDBConfigProvider 案例 配置系统 默认添加的配置提供者 加载现有的IConfiguration。加载项目根目录下的appsettings.json。加载项目根目录下的appsettin…...
中间件的概念及基本使用
什么是中间件 中间件是ASP.NET Core的核心组件,MVC框架、响应缓存、身份验证、CORS、Swagger等都是内置中间件。 广义上来讲:Tomcat、WebLogic、Redis、IIS;狭义上来讲,ASP.NET Core中的中间件指ASP.NET Core中的一个组件。中间件…...
SpringBoot 整合 Mybatis:注解版
第一章:注解版 导入配置: <groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.1</version> </dependency> 步骤: 配置数据源见 Druid…...
18.[前端开发]Day18-王者荣耀项目实战(一)
01-06 项目实战 1 代码规范 2 CSS编写顺序 3 组件化开发思想 组件化开发思路 项目整体思路 – 各个击破 07_(掌握)王者荣耀-top-整体布局完成 完整代码 01_page_top1.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8…...
Kafka 使用说明(kafka官方文档中文)
文章来源:kafka -- 南京筱麦软件有限公司 第 1 步:获取 KAFKA 下载最新的 Kafka 版本并提取它: $ tar -xzf kafka_{{scalaVersion}}-{{fullDotVersion}}.tgz $ cd kafka_{{scalaVersion}}-{{fullDotVersion}} 第 2 步:启动 KAFKA 环境 注意:您的本地环境必须安装 Java 8+。…...
基于多智能体强化学习的医疗AI中RAG系统程序架构优化研究
一、引言 1.1 研究背景与意义 在数智化医疗飞速发展的当下,医疗人工智能(AI)已成为提升医疗服务质量、优化医疗流程以及推动医学研究进步的关键力量。医疗 AI 借助机器学习、深度学习等先进技术,能够处理和分析海量的医疗数据,从而辅助医生进行疾病诊断、制定治疗方案以…...
Airflow:深入理解Apache Airflow Task
Apache Airflow是一个开源工作流管理平台,支持以编程方式编写、调度和监控工作流。由于其灵活性、可扩展性和强大的社区支持,它已迅速成为编排复杂数据管道的首选工具。在这篇博文中,我们将深入研究Apache Airflow 中的任务概念,探…...
multisim入门学习设计电路
文章目录 1.软件的安装2.电路基本设计2.1二极管的简介2.2最终的设计效果2.3设计流程介绍 3.如何测试电路 1.软件的安装 我是参考的下面的这个文章,文章的链接放在下面,亲测是有效的,如果是小白的话,可以参考一下: 【…...
【算法精练】二分查找算法总结
目录 前言 1. 二分查找(基础版) 2. 寻找左右端点 循环判断条件 求中间点 总结 前言 说起二分查找,也是一种十分常见的算法,最常听说的就是:二分查找只能在数组有序的场景下使用;其实也未必,…...
从零开始实现一个双向循环链表:C语言实战
文章目录 1链表的再次介绍2为什么选择双向循环链表?3代码实现:从初始化到销毁1. 定义链表节点2. 初始化链表3. 插入和删除节点4. 链表的其他操作5. 打印链表和判断链表是否为空6. 销毁链表 4测试代码5链表种类介绍6链表与顺序表的区别7存储金字塔L0: 寄存…...
MYSQL面试题总结(题目来源JavaGuide)
MYSQL基础架构 问题1:一条 SQL语句在MySQL中的执行过程 1. 解析阶段 (Parsing) 查询分析:当用户提交一个 SQL 语句时,MySQL 首先会对语句进行解析。这个过程会检查语法是否正确,确保 SQL 语句符合 MySQL 的语法规则。如果发现…...
visual studio安装
一、下载Visual Studio 访问Visual Studio官方网站。下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux 在主页上找到并点击“下载 Visual Studio”按钮。 选择适合需求的版本,例如“Visual Studio Community”(免费版本)&#x…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
Vue ③-生命周期 || 脚手架
生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
