Qwen2.5-VL Technical Report 论文翻译和理解

news2025/7/17 13:08:00

一、TL;DR

  1. Qwen2.5-VL是QwenVL的最新模型,在视觉识别、精准目标定位、稳健文档解析以及长视频理解等方面实现了重大突破
  2. 引入了动态分辨率处理和绝对时间编码,使其能够处理不同尺寸的图像以及长达数小时的视频,并实现秒级事件定位
  3. 数据集上建立了一个自动化filter的流程,使得模型能够获取高质量数据
  4. 在现实世界场景(如操作计算机和移动设备)中具备推理、工具使用和任务执行能力。可在不同领域实现强大的zero-shot泛化能力
  5. Qwen2.5-VL有三种不同大小的模型,旗舰版Qwen2.5-VL-72B模型与GPT-4o和Claude 3.5 Sonnet等最先进模型相当,同时还保留了Qwen2.5语言大模型的核心语言能力。

二、引言/介绍

现有的MLLMs存在什么问题?

  1. MLLMS在细粒度感知上尚未达到卓越的性能(就是比不过专家模型)
  2. 包括计算复杂性、上下文理解有限、细粒度视觉感知能力差以及在不同序列长度上的表现不一致。

怎么解决这个问题?

  1. 在视觉编码器中实现了窗口注意力机制,以优化推理效率;
  2. 引入了动态FPS采样,将动态分辨率扩展到时间维度,从而能够对不同采样率的视频进行全面理解;
  3. 通过与绝对时间对齐,在时间域升级了MRoPE,从而促进更复杂的时间序列学习;
  4. 策划高质量数据方面做出了巨大努力,用于预训练和有监督的微调,进一步将预训练语料库从1.2万亿个token扩展到4.1万亿个token。

Qwen2.5-VL的显著特点如下:

  1. 强大的文档解析能力:Qwen2.5-VL将文本识别升级为全文档解析,在处理多场景、多语言以及各种内置(手写、表格、图表、化学公式和乐谱)文档方面表现出色。
  2. 跨格式的精准目标定位:Qwen2.5-VL解锁了在检测、指向和计数目标方面的更高精度,支持绝对坐标和JSON格式,以实现高级空间推理。
  3. 超长视频理解和细粒度视频定位:我们的模型将原生动态分辨率扩展到时间维度,增强了对持续数小时的视频的理解能力,同时能够以秒为单位提取事件片段。
  4. 增强的计算机和移动设备代理功能:利用先进的定位、推理和决策能力,为模型在智能手机和计算机上提供卓越的代理功能。

整体网络结构如图1所示,浅显易懂,有几个关键点要注意:

  1. SwinGLU的激活函数+RMSNorm的归一化
  2. 动态分辨率的输入和窗口注意力机制,还有小尺寸在原始分辨率输入
  3. 视频的动态fps采样和特征融合进行计算,还有帧序列的位置编码

三、方法和模型结构

3.1 模型架构

Qwen2.5-VL的整体模型架构由三个组件构成:

  • 大型语言模型(LLM):Qwen2.5-VL系列采用Qwen2.5 LLM作为基础组件并使用对应的预训练权重进行初始化。为了更好地满足多模态理解的需求,我们将一维旋转位置embedding(1D RoPE)修改为与绝对时间对齐的多模态旋转位置嵌入(Multimodal Rotary Position Embedding Aligned to Absolute Time)。

  • 视觉编码器:Qwen2.5-VL的视觉编码器采用重新设计的视觉变换器(ViT)架构。在结构上,我们引入了二维旋转位置嵌入(2D-RoPE)和窗口注意力机制,以支持原生输入分辨率,同时加速整个视觉编码器的计算。在训练和推理过程中,输入图像的高度和宽度在输入ViT之前被调整为28的倍数。视觉编码器通过以14的步长将图像分割成块,生成一组图像特征。

  • 基于MLP的视觉-语言融合器:在将特征序列输入大型语言模型(LLM)之前对其进行压缩。具体而言,将视觉变换器(ViT)提取的原始块特征在空间上相邻的四个块特征分组。这些分组后的特征随后被连接并通过两层多层感知机(MLP),将其投影到与LLM中使用的文本嵌入维度一致的空间。这种方法不仅降低了计算成本,还提供了一种灵活的方式来动态压缩不同长度的图像特征序列。

表1详细列出了Qwen2.5-VL的架构和配置(注意:视觉encoder的大小是一样的,说明视觉编码器现在基本已经到上限了)。

3.2 快速高效的视觉编码器

原生分辨率不一致会导致计算负载不平衡,因此重新设计了VIt架构:

  1. 目的:处理不同大小图像时的二次计算复杂度
  2. 方法:大部分层引入窗口注意力机制(窗口大小:112x112,patch大小:8x8),只有4层是全自注意力机制,小于112x112的区域直接保持原分辨率
  3. 结果:计算成本与patch的数量呈线性关系而不是二次关系

对于位置编码:

  1. 采用二维旋转位置嵌入(RoPE)有效地捕捉二维空间中的空间关系

对于视频输入:

  1. 方法扩展到三维块划分,两个连续的帧被组合在一起,显著减少了输入到语言模型的标记数量

为了简化网络结构:

  1. 采用RMSNorm进行归一化,并使用SwiGLU作为激活函数。这些选择提高了模型视觉和语言组件之间的计算效率和兼容性。

训练阶段:

  1. 训练过程包括几个阶段,包括CLIP预训练、视觉-语言对齐和端到端微调。
  2. 采用原生分辨率的动态采样。根据原始宽高比随机采样图像,提高了模型的适应性,还确保了不同大小视觉数据的稳定和高效训练。

3.3 原生动态分辨率和帧率

Qwen2.5-VL在空间和时间维度上引入了进步,以有效处理多样化的多模态输入。

  1. 在空间领域,Qwen2.5-VL动态地将不同大小的图像转换为具有相应长度的标记序列。与传统的坐标归一化方法不同,我们的模型直接使用输入图像的实际尺寸来表示边界框、点和其他空间特征。这使得模型能够内在地学习尺度信息,提高其处理不同分辨率图像的能力。
  2. 对于视频输入,Qwen2.5-VL引入了动态帧率(FPS)训练和绝对时间编码。通过适应可变帧率,模型能够更好地捕捉视频内容的时间动态。与其他方法不同,这些方法通过引入文本时间戳或使用额外的头部来实现时间定位,我们引入了一种新颖且高效的策略,将MRoPE ID直接与时间戳对齐。这种方法允许模型通过时间维度ID之间的间隔来理解时间的节奏,而无需任何额外的计算开销。

3.4 与绝对时间对齐的多模态旋转position embedding

Qwen2VL的做法:

  1. MRoPE将position embedding分解为三个不同的组成部分:时间、高度和宽度
  2. 对于文本输入,所有三个组成部分使用相同的位置ID,使MRoPE在功能上等同于传统的1D RoPE(Su et al., 2024)。
  3. 对于图像,时间ID在视觉标记中保持不变,而高度和宽度组成部分根据每个token在图像中的空间位置分配唯一的ID。
  4. 在处理视频时,视频被视为帧的序列,时间ID逐帧递增,而高度和宽度组成部分遵循与静态图像相同的分配模式。

问题点:

MRoPE中的时间位置ID与输入帧的数量相关联,这并未考虑到内容变化的速度或视频中事件的绝对时间。

解决方法:

将MRoPE的时间组成部分与绝对时间对齐。如下图所示,通过利用时间ID之间的间隔,模型能够学习不同FPS采样率视频之间的一致时间对齐

四、预训练

4.1 预训练数据

与Qwen2-VL相比:

  1. 数据规模:从1.2万亿个标记增加到约4万亿个标记。
  2. 构建方法:清理原始网络数据、合成数据等。
  3. 包含内容:该数据集涵盖了多种多模态数据,如图像标题、交错的图像-文本数据、光学字符识别(OCR)数据、视觉知识(例如名人、地标、动植物识别)、多模态学术问题、本地化数据、文档解析数据、视频描述、视频定位和基于代理的交互数据。

4.1.1 交错的图像-文本数据

  1. 通过同时提供视觉和文本线索实现上下文中的学习
  2. 即使缺少图像,也能保持强大的纯文本能力
  3. 包含广泛的一般信息。然而,许多可用的交错数据缺乏有意义的文本-图像关联,且通常存在噪声,限制了其在复杂推理和创造性生成中的有用性。

如何得到高质量的交错的图像-文本数据?

我们开发了一种用于评分和清理数据的流程,确保仅使用高质量、相关的交错数据。我们的流程包括两个步骤:标准数据清理(Li et al., 2024e-这篇paper也标记一下,下一步好好看看),然后使用内部评估模型进行四阶段评分系统

评分标准包括:

  1. 纯文本质量;
  2. 图像-文本相关性:较高的分数表示图像与文本之间的联系更强,图像有意义地补充、解释或扩展文本内容,而不仅仅是装饰文本。
  3. 图像-文本互补性:较高的分数反映了图像和文本之间更大的互补信息。每个都应该提供独特的细节,共同构成一个完整的故事。
  4. 信息密度平衡:较高的分数意味着图像和文本之间的信息分布更加平衡,避免过多的文本或图像信息,确保两者之间适当的平衡

这种细致的方法提高了模型在复杂推理和生成连贯多模态内容方面的能力。

4.1.2 grounding/OCR/Video/文档数据

使用绝对位置坐标的grounding数据

技术细节:

  • 为了实现对世界的更准确感知,我们采用原生分辨率训练。与相对坐标不同,Qwen2.5-VL在训练中使用基于输入图像实际尺寸的坐标值来表示边界框和点(这点很重要,尤其是在做数据集的时候要注意)。这种方法使得模型能够更好地捕捉物体的真实尺度和空间关系,从而在对象检测和定位任务中表现更佳。

数据集介绍:

  • 我们开发了一个全面的数据集,包括带有指代表达式的边界框和点,利用了公开可用的数据集和专有数据。我们的方法包括将数据合成为各种格式,包括XML、JSON和自定义格式,采用复制粘贴增强和与现成模型合成的技术。此外,为了增强模型在开放词汇检测中的性能,我们将训练数据集扩展到包含超过10000种目标物体类别。
  • 同时合成了不存在的目标类别,并构建了包含每个目标多个实例的图像数据。为了确保模型在基于点的目标grounding能力方面表现出色,我们构建了一个综合的指向数据集,包括公开可用的和合成的数据。

文档全解析数据

为了训练Qwen2.5-VL,我们合成了大量的文档数据。传统的文档解析方法通常依赖于多个模型来处理布局分析、文本提取、图表解释和插图处理。而Qwen2.5-VL则设计为一个通用模型,具备全面的文档解析、理解和转换能力。具体来说,文档中包含了表格、图表、方程、自然或合成图像、乐谱和化学公式等多种元素,这些元素被统一格式化为HTML,集成了布局框信息和插图描述的HTML标签结构。

OCR数据:为了提升OCR性能,我们收集并整理了来自不同来源的数据,包括合成数据、开源数据和内部收集的数据。我们引入了一个大型多语言OCR数据集,合成了100万张图样本,并处理了600万份表格样本。

视频数据:为了增强模型对不同帧率的视频数据的理解能力,我们在训练过程中动态调整采样频率,使训练数据集的FPS分布更均衡。针对时长超过半小时的长视频,我们构建了多帧连贯描述,并在视频定位任务中,以秒级和小时-分钟-秒-帧格式双重标注时间戳。

Agent数据:为了增强Qwen2.5-VL的感知和决策能力,我们收集了移动、网络和桌面平台的截屏数据,并生成了截屏描述和UI元素定位描述。我们将不同平台的操作统一为具有共享动作空间的函数调用格式。此外,我们还收集和标注了来自开源数据和代理框架在虚拟环境中生成的多步轨迹数据。对于每个动作,我们要求标注者提供全局查询以及该动作前后的截屏,并撰写解释该动作意图的推理内容。

4.2 训练方法

从头开始训练一个视觉变换器(ViT),使用 DataComp和一些内部数据集作为视觉编码器的初始化,同时利用预训练的 Qwen2.5 大型语言模型(LLM)作为 LLM 组件的初始化。如表 2 所示,预训练过程分为三个不同的阶段,每个阶段采用不同的数据配置和训练策略,逐步提升模型的能力。

第一阶段:

  1. 目的:旨在培养 ViT 提取有意义的视觉表示的能力,这些表示可以有效地与文本信息整合。
  2. 方法:只训练视觉变换器(ViT),以提高其与语言模型的对齐程度,
  3. 数据来源:包括图像标题、视觉知识和 OCR 数据

第二阶段:

  1. 目的:加强了模型在视觉和语言模态之间建立更深层次联系的能力,使其能够处理日益复杂的任务
  2. 方法:模型的所有参数都被解冻,并在多样化的多模态图像数据上进行训练,以增强其处理复杂视觉信息的能力
  3. 数据来源:引入了更为复杂且需要推理能力的数据集,如交错数据、多任务学习数据集、视觉问答(VQA)、多模态数学、基于代理的任务、视频理解以及纯文本数据集。

第三阶段:

  1. 目的:进一步提升模型在长序列、视频和基于代理的数据上的推理能力
  2. 方法:增加了序列长度

解决计算负载不平衡的问题:

  1. 原因:不同图像尺寸和文本长度,主要的计算成本来自 LLM 和视觉编码器
  2. 方法:
    1. 视觉编码器的参数相对较少,且我们引入了窗口注意力机制以进一步降低其计算需求
    2. 专注于在不同 GPU 上平衡 LLM 的计算负载,在第一和第二阶段,数据被统一打包到 8192 的序列长度;而在第三阶段,序列长度增加到 32768,以适应模型处理更长序列的能力。

4.3 后训练

Qwen2.5-VL 的后训练对齐框架采用了包括监督微调(SFT)和直接偏好优化(DPO)在内的双阶段优化范式。这种分层对齐策略将参数高效的领域适应与人类偏好蒸馏相结合,通过不同的优化目标解决表示对齐和行为细化问题。

监督微调(SFT):

目的:通过针对性的指令优化,弥合预训练表征与下游任务需求之间的差距

方法:采用 ChatML 格式(Openai, 2024)来构建指令跟随数据,有意识地偏离预训练数据架构,同时保持与 Qwen2.5-VL(Wang et al., 2024e)的架构一致性

作用:三个关键的调整:1)为多模态轮流对话明确标记对话角色;2)将视觉嵌入与文本指令结构化地结合在一起;3)通过格式感知的打包保留跨模态的位置关系。

结果:SFT 实现了高效的知识转移,同时保持了预训练特征的完整性。

4.3.1 指令数据

目的:旨在增强模型在多种模态下的指令遵循能力

规模:大约 200 万条记录,纯文本数据(50%)和多模态数据(50%)各占一半,其中包括图像-文本和视频-文本组合,主要由中文和英文数据组成

数据集内容:针对通用视觉问答(VQA)、图像描述、数学问题解决、编程任务和安全相关查询的专门子集。此外,还构建了针对文档和光学字符识别(Doc and OCR)、定位、视频分析和代理交互的专门数据集

资源消耗:尽管纯文本和多模态条目在数量上持平,但由于嵌入了视觉和时间信息,多模态条目在训练过程中消耗的标记和计算资源要多得多

4.3.2 数据过滤流程

目的:旨在系统地提升监督微调(SFT)数据集的质量

方法:一个两阶段的数据过滤流程

  1. 第一阶段-领域特定分类: 使用Qwen2-VL-Instag对问答(QA)对进行分层分类。该模型将 QA 对分为八个主要领域,如编程和规划,这些领域进一步细分为 30 个细粒度的子类别,这种分层结构便于领域感知和子领域感知的过滤策略,使流程能够针对每个类别的特定特征优化数据清理过程。因此,这提高了监督微调(SFT)数据集的质量和相关性。
  2. 第二阶段-领域定制过滤:它结合了基于规则和基于模型的方法,全面提高数据质量。鉴于文档处理、光学字符识别(OCR)和视觉定位等领域的多样性,每个领域可能需要独特的过滤策略。
    1. 基于规则的过滤:采用预定义的启发式规则来消除低质量或有问题的条目。具体来说,对于与文档处理、OCR 和视觉定位任务相关的数据集,识别并移除重复模式,以防止模型学习过程失真并确保最佳性能。此外,排除包含不完整、截断或格式不正确的响应的条目——这些在合成数据集和多模态环境中很常见。为了保持相关性并维护伦理标准,还丢弃了不相关或可能导致有害输出的查询和答案。这种结构化的方法确保数据集遵守伦理准则并满足特定任务的要求。
    2. 基于模型的过滤:通过利用在 Qwen2.5-VL 系列上训练的奖励模型来完善数据集。这些模型从多个维度评估多模态 QA 对。查询根据复杂性和相关性进行评估,只保留那些具有适当挑战性和上下文相关性的示例。答案根据正确性、完整性、清晰度、与查询的相关性以及是否有帮助进行评估。在视觉定位任务中,特别关注验证视觉信息的准确解释和利用。这种多维度评分确保只有高质量的数据进入 SFT 阶段。

4.3.3 拒绝采样以增强推理能力

目的:补充我们的结构化数据过滤流程

方法:采用拒绝采样作为一种策略来精炼数据集并增强视觉语言模型(VLM)的推理能力

作用:需要复杂推理的任务特别关键,如数学问题解决、代码生成和特定领域的视觉问答(VQA)

拒绝采样:

  1. 从包含真实标注的数据集开始。这些数据集经过精心策划,涵盖了需要多步推理的任务,例如数学问题解决、代码生成以及特定领域的视觉问答。我们使用 Qwen2.5-VL 模型的中间版本,将生成的响应与真实标注进行对比评估。只有当模型的输出与预期答案一致时,相应的样本才会被保留,从而确保数据集仅包含高质量且准确的示例
  2. 增加了额外的限制条件以筛选出不理想的输出结果。具体来说,我们会排除那些出现代码切换、长度过长或存在重复模式的响应。这些标准有助于确保 CoT 推理过程的清晰性和连贯性,这对于下游应用来说至关重要。

五、Experiments

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

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

相关文章

Foxmail邮件客户端跨站脚本攻击漏洞(CNVD-2025-06036)技术分析

Foxmail邮件客户端跨站脚本攻击漏洞&#xff08;CNVD-2025-06036&#xff09;技术分析 漏洞背景 ‌漏洞编号‌&#xff1a;CNVD-2025-06036 ‌CVE编号‌&#xff1a;待分配 ‌厂商‌&#xff1a;腾讯Foxmail ‌影响版本‌&#xff1a;Foxmail < 7.2.25 ‌漏洞类型‌&#x…

高并发内存池(三):PageCache(页缓存)的实现

前言&#xff1a; 在前两期内容中&#xff0c;我们深入探讨了内存管理机制中在 ThreadCache 和 CentralCache两个层级进行内存申请的具体实现。这两层缓存作为高效的内存分配策略&#xff0c;能够快速响应线程的内存需求&#xff0c;减少锁竞争&#xff0c;提升程序性能。 本期…

Linux驱动开发-网络设备驱动

Linux驱动开发-网络设备驱动 一&#xff0c;网络设备总体结构1.1 总体架构1.2 NAPI数据处理机制 二&#xff0c;RMII和MDIO2.1 RMII接口2.2 MDIO接口 三&#xff0c;MAC和PHY模块3.1 MAC模块3.2 PHY模块 四&#xff0c;网络模型4.1 网络的OSI和TCP/IP分层模型4.1.1 传输层&…

DataEase同比环比

DataEase同比环比 前言术语实现表结构设计DataEase设计创建数据集创建仪表盘最后前言 某大数据项目,需要比较展示今年跟去年的数据,如下图: 说明:比较24,25的产品销量,相同月份做一组,并排放一块 还有更进一步: 说明:比较24,25相同月份,相同产品的销量 直接用DataE…

RAG 工程基础

RAG 概念 RAG&#xff08;Retrieval - Augmented Generation&#xff09;技术是一种将检索与生成相结合的人工智能技术&#xff0c;旨在利用外部知识源来增强语言模型的生成能力&#xff0c;提高生成内容的质量、准确性和相关性。 具体来说&#xff0c;RAG 技术在处理用户输入的…

基础算法:滑动窗口_python版本

能使用滑动窗口的题&#xff0c;基本都需要数字为正整数&#xff0c;这样才能保证滑入一个数字总和是增加的(单调性) 一、209. 长度最小的子数组 思路&#xff1a; 已每个位置为右端点&#xff0c;依次加大左端点&#xff0c;最短不满足 sum(num[left,right]) < target的。…

Qt 之opengl shader language

着色器示例代码 实际运行效果

PyRoboPlan 库,给 panda 机械臂微分 IK 上大分,关节限位、碰撞全不怕

视频讲解&#xff1a; PyRoboPlan 库&#xff0c;给 panda 机械臂微分 IK 上大分&#xff0c;关节限位、碰撞全不怕 代码仓库&#xff1a;https://github.com/LitchiCheng/mujoco-learning 今天分享PyRoboPlan库&#xff0c;比之前的方式优点在于&#xff0c;这个库考虑了机械…

GPT - TransformerDecoderBlock

本节代码定义了一个 TransformerDecoderBlock 类&#xff0c;它是 Transformer 架构中解码器的一个基本模块。这个模块包含了多头自注意力&#xff08;Multi-Head Attention&#xff09;、前馈网络&#xff08;Feed-Forward Network, FFN&#xff09;和层归一化&#xff08;Lay…

LabVIEW 控制电机需注意的关键问题

在自动化控制系统中&#xff0c;LabVIEW 作为图形化编程平台&#xff0c;因其高度可视化、易于集成硬件等优势&#xff0c;被广泛应用于电机控制场景。然而&#xff0c;要实现稳定、精确、高效的电机控制&#xff0c;仅有软件并不足够&#xff0c;还需结合硬件选型、控制逻辑设…

Jenkins 发送钉钉消息

这里不介绍 Jenkins 的安装&#xff0c;可以网上找到很多安装教程&#xff0c;重点介绍如何集成钉钉消息。 需要提前准备钉钉机器人的 webhook 地址。&#xff08;网上找下&#xff0c;很多教程&#xff09; 下面开始配置钉钉机器人&#xff0c;登录 Jenkins&#xff0c;下载 …

OpenCV 风格迁移

一、引言​ 在计算机视觉和图像处理领域&#xff0c;风格迁移是一项令人着迷的技术。它能够将一幅图像&#xff08;风格图像&#xff09;的艺术风格&#xff0c;如梵高画作的笔触风格、莫奈的色彩风格等&#xff0c;迁移到另一幅图像&#xff08;内容图像&#xff09;上&#x…

35.Java线程池(线程池概述、线程池的架构、线程池的种类与创建、线程池的底层原理、线程池的工作流程、线程池的拒绝策略、自定义线程池)

一、线程池概述 1、线程池的优势 线程池是一种线程使用模式&#xff0c;线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能&#xff0c;而线程池维护着多个线程&#xff0c;等待着监督管理者分配可并发执行的任务&#xff0c;这避免了在处理短时间任务时创建与…

Kubernetes nodeName Manual Scheduling practice (K8S节点名称绑定以及手工调度)

Manual Scheduling 在 Kubernetes 中&#xff0c;手动调度框架允许您将 Pod 分配到特定节点&#xff0c;而无需依赖默认调度器。这对于测试、调试或处理特定工作负载非常有用。您可以通过在 Pod 的规范中设置 nodeName 字段来实现手动调度。以下是一个示例&#xff1a; apiVe…

React 获得dom节点和组件通信

通过REF 实例对象的.current属性获得绑定的DOM节点 组件通信 组件通信 1 父传子 父组件传递数据 子组件接受数据 通过pros对象接受 子组件的形参列表props只读 props中数据不可修改 特殊情况 在子传父的过程中没有直接给子组件添加属性&#xff0c;而是向父组件中添加其他…

代码,Java Maven项目打包遇到的环境问题

这几天在写一些Java版本的Langchain4J的 AI 测试case&#xff0c;有一段时间不运行的Java环境&#xff0c;反复出现环境问题&#xff0c;记录下 1、Java编译版本的问题 修改编译版本&#xff1a; 2、在IDE中运行遇到Maven中JDK版本问题 在ide中执行maven命令&#xff0c;遇到下…

fisco-bcos 关于服务bash status.sh启动runing 中但是5002端口监听不到,出错的问题

bash status.sh Server com.webank.webase.front.Application Port 5002 is running PID(4587) yjmyjm-VMware-Virtual-Platform:~/webase-front$ sudo netstat -anlp | grep 5002 没有端口信息输出 此时可以查看log文件夹下的WeBASE-front.log&#xff0c;找到报错信息如下…

linux多线(进)程编程——(5)虚拟内存与内存映射

前言&#xff08;前情回顾&#xff09; 进程君开发了管道这门技术后&#xff0c;修真界的各种沟通越来越频繁&#xff0c;这天进程君正与自己的孩子沟通&#xff0c;进程君的孩子说道&#xff1a; “爸爸&#xff0c;昨天我看他们斗法&#xff0c;小明一拳打到了小刚的肚子上&…

SpringBoot 动态路由菜单 权限系统开发 菜单权限 数据库设计 不同角色对应不同权限

介绍 系统中的路由配置可以根据用户的身份、角色或其他权限信息动态生成&#xff0c;而不是固定在系统中。不同的用户根据其权限会看到不同的路由&#xff0c;访问不同的页面。对应各部门不同的权限。 效果 [{"id": 1,"menuName": "用户管理"…

[dp8_子数组] 乘积为正数的最长子数组长度 | 等差数列划分 | 最长湍流子数组

目录 1.乘积为正数的最长子数组长度 2.等差数列划分 3.最长湍流子数组 写代码做到&#xff0c;只用维护好自己的一小步 1.乘积为正数的最长子数组长度 链接&#xff1a;1567. 乘积为正数的最长子数组长度 给你一个整数数组 nums &#xff0c;请你求出乘积为正数的最长子数…