【第三十五周】Janus-pro 技术报告阅读笔记
Janus-Pro
- 摘要
- Abstract
- 文章信息
- 引言
- 方法
- Janus 架构
- Janus 训练
- Janus-Pro 的改进
- 实验结果
- 总结
摘要
本篇博客介绍了Janus-Pro,这是一个突破性的多模态理解与生成统一模型,其核心思想是通过解耦双路径视觉编码架构解决传统方法中语义理解与像素生成的任务冲突。针对统一编码器在高低层次特征需求上的矛盾,Janus-Pro采用SigLIP编码器提取图像语义特征(理解路径)与VQ Tokenizer建模像素细节(生成路径),再通过自回归Transformer联合训练;针对训练效率低的问题,提出三阶段优化策略:延长ImageNet基础生成训练、采用高密度文本-图像数据预训练、调整微调数据配比,使训练周期缩短20%;同时引入9000万结构化理解数据和7200万合成美学生成数据,平衡多任务性能。实验表明,Janus-Pro在MMBench(79.2)和GenEval(0.80)上达到SOTA,生成稳定性显著提升。然而,受限于384×384分辨率,其在细粒度识别和图像细节还原上仍有不足。未来研究可探索更高分辨率输入、动态特征融合机制,以及跨模态对齐损失优化,进一步突破多模态统一架构的语义-细节平衡瓶颈。
Abstract
This blog introduces Janus-Pro, a groundbreaking unified model for multimodal understanding and generation. Its core innovation lies in a decoupled dual-path visual encoding architecture that resolves the inherent conflict between semantic comprehension and pixel-level generation tasks in traditional unified encoders. To address the contradictory demands for high-level semantic features (understanding) and low-level pixel details (generation), Janus-Pro employs a SigLIP encoder to extract image semantic features (understanding path) and a VQ Tokenizer to model pixel-level details (generation path), unified via joint training with an autoregressive Transformer. To enhance training efficiency, it proposes a three-stage optimized strategy: prolonging ImageNet-based foundational training, adopting high-density text-image data for pretraining, and adjusting fine-tuning data ratios, reducing the training cycle by 20%. The model further balances multitask performance by integrating 90 million structured understanding samples and 72 million synthetic aesthetic generation datasets. Experiments demonstrate SOTA results on MMBench (79.2) and GenEval (0.80), with significantly improved generation stability. However, constrained by 384×384 resolution, challenges remain in fine-grained recognition and intricate detail restoration. Future research should explore higher-resolution inputs, dynamic feature fusion mechanisms, and cross-modal alignment loss optimization to further bridge the semantic-detail trade-off in unified multimodal architectures.
文章信息
Title:Janus-Pro: Unified Multimodal Understanding and Generation with Data and Model Scaling
Author:Xiaokang Chen, Zhiyu Wu, Xingchao Liu, Zizheng Pan, Wen Liu, Zhenda Xie, Xingkai Yu, Chong Ruan
Source:https://arxiv.org/abs/2501.17811
引言
近年来,多模态大模型在理解和生成任务上取得了显著进展,成为人工智能领域的核心研究方向之一。传统方法通常采用统一的视觉编码器处理多模态输入,但由于理解和生成任务对视觉特征的需求存在本质差异(前者需要高层次的语义信息,后者依赖低层次的像素级建模),这种架构容易导致性能冲突。例如,生成任务对图像细节的建模要求可能削弱理解任务的语义捕捉能力,反之亦然。为了解决这个问题,Janus 提出解耦两种任务的视觉编码,这缓解了多模态理解和生成任务之间的冲突,在这两项任务中都实现了出色的性能。
Janus在1.5B的参数规模上验证了可行性,其仍存在明显局限:
(1)训练策略效率低下,例如在预训练阶段需分阶段处理ImageNet数据和文本生成数据,导致计算资源浪费;
(2)训练数据规模和质量不足,尤其在文本到图像生成任务中,真实数据噪声大、合成数据缺乏美学优化,影响生成稳定性;
(3)模型容量受限,无法充分发挥解耦架构的潜力。
为了解决上述问题,本文介绍的Janus-Pro,从三个维度对Janus进行全面升级:
- 训练策略优化:重新设计三阶段训练流程,延长ImageNet数据建模时间以增强像素依赖学习,并在预训练阶段直接采用高质量文本生成数据,提升效率。
- 数据扩展与平衡:引入9000万理解任务样本(含表格、图表等结构化数据)和7200万合成美学图像数据,通过1:1的真实-合成数据比例改善生成质量。
- 模型规模化验证:将参数量从1.5B扩展至7B,证明解耦架构的可扩展性,并通过实验发现大模型在多任务损失收敛速度上显著优于小模型。
这些改进使Janus-Pro在多模态理解和生成任务上均超越现有SOTA模型。
方法
Janus 架构
Janus-pro 的架构与 Janus 的架构一致。所以在此小节先介绍Janus。
对于多模态理解,通常遵循LLaVA的设计,使用视觉编码器作为桥梁,使大语言模型能够理解图像。对于生成,通常基于扩散模型,也有一些基于自回归方法。一些方法试图使用单个Transformer试图统一多模态理解与生成任务,其通常使用单一视觉编码器处理两个任务的输入。
然而,多模态理解与生成任务所需要的表示有所差异。在多模态理解任务中,视觉编码器的目的是提取高层次的语义信息(如物体类别或者视觉属性),输出不仅涉及从图像中提取信息,还涉及复杂的语义推理,编码器主要集中于高维语义表示。生成任务主要关注于生成局部细节并在图像中保持全局一致性,因此需要低维度编码表示空间结构和纹理细节。在同一空间中将两种任务的表示进行统一会导致冲突。
Janus包含2个独立的视觉编码路径,分别用于多模态理解、生成,并带来两个收益:
- 缓解了源自多模态理解和生成不同粒度需求的冲突
- 具有灵活性和可扩展性,解耦后,理解和生成任务都可以采用针对其领域最先进的编码技术
- 对于文本理解,使用LLM内置Tokenizer将文本转换为离散IDs;
- 对于多模态理解,使用SigLIP编码器抽取图片中的高维语义特征(笔者注:Cosmos中在Guardrails部分同样使用SigLIP编码器),使用Adaptor(2层MLP)将抽取特征映射到LLM的文本特征空间中;
- 对于视觉生成,使用VQ Tokenizer将图像转换为离散IDs,使用Adaptor(2层MLP)将每个ID映射到LLM的文本特征空间中;
无论是视觉生成还是多模态理解任务,图片特征序列和文本特征序列都会连接在一起,作为LLM(文中使用DeepSeek-LLM 1.3B)的输入。
The built-in prediction head of the LLM is utilized for text predictions in both the pure text understanding and multimodal understanding tasks, while a randomly initialized prediction head is used for image predictions in the visual generation task. The entire model adheres to an autoregressive framework without the need for specially designed attention masks.
LLM 的内置预测头用于纯文本理解和多模态理解任务中的文本预测,而随机初始化的预测头用于视觉生成任务中的图像预测。整个模型遵循自回归框架,不需要专门设计的注意力掩码。
Janus 训练
Janus的训练分为3个阶段:
- stage1:训练Adaptor与Image Head,在嵌入空间创建语言元素与视觉元素之间的联系,使得LLM能够理解图像中的实体,并具备初步视觉生成能力。其中对于多模态理解,使用来自SHareGPT4V125万个图像-文本配对字幕数据,格式:<图像><文本>;对于视觉生成,使用来自ImageNet1k的120万个样本,格式:<类别名><图像>。
- stage2:统一预训练,使用多模态语料库进行统一预训练,学习多模态理解和生成。在该阶段使用纯文本数据、多模态理解数据和视觉生成数据。使用ImageNet-1k进行简单的视觉生成训练,随后使用通用文本到图像数据提升模型开放领域的视觉生成能力。
- stage3:监督微调,使用指令微调数据对预训练模型进行微调,以增强其遵循指令和对话的能力。微调除生成编码器之外的所有参数。在监督答案的同时,对系统和用户提示进行遮盖。为了确保Janus在多模态理解和生成方面都具备熟练度,不会针对特定任务分别微调模型。相反,我们使用纯文本对话数据、多模态理解数据和视觉生成数据的混合数据,以确保在各种场景下的多功能性。
训练目标 Janus是自回归模型,训练使用交叉熵损失函数,对于纯文本理解和多模态理解任务,在文本序列计算损失。对于视觉生成任务,仅在图像序列上计算损失。为了保持设计简单,没有为不同任务分配不同的损失权重。
推理 使用下一个词元预测方法,对于纯文本理解和多模态理解,从预测分布中依次采样词元。对于图像生成,使用无分类器引导。
Janus-Pro 的改进
Janus训练数据有限且模型容量(1B)相对较小,在一些方面存在不足,如在短提示下的图像生成表示不佳,文本到图像生成的质量不稳定。Janus-Pro的架构与Janus相同。
Janus 的改进主要在三个方面:训练策略、数据规模和模型规模。
训练策略上:
- 延长 stage1 的训练,在 ImageNet 数据集上充分训练,即便 LLM 参数固定,模型也能有效建模像素依赖并生成合理图像;
- stage2 中不再使用ImageNet,直接使用正常文本到图像数据训练模型基于密集描述生成图像,提高训练效率和整体性能。
- 调整 stage3 监督微调过程中不同类型数据集的数据比例,从 7:3:10 调整为 5:1:4,在保持视觉生成能力的同时提升多模态理解性能。
数据规模上:
在多模态理解和视觉生成方面均扩展了训练数据。
多模态理解中,第二阶段预训练数据参考 DeepSeekVL2 添加约 9000 万个样本,包括图像字幕数据集、表格图表和文档理解数据;第三阶段监督微调数据也加入了 DeepSeek-VL2 的其他数据集,如 MEME 理解、中文对话数据等,丰富了模型处理任务的能力和对话体验。
视觉生成中,Janus 之前使用的真实世界数据质量欠佳且有噪声,导致文本到图像生成不稳定。Janus-Pro 引入约 7200 万个合成美学数据样本,统一预训练阶段真实数据与合成数据比例为 1:1,实验表明使用合成数据训练模型收敛更快,生成的图像更稳定且美学质量更高。
模型规模上,Janus 使用 1.5B参数的 LLM 验证了视觉编码解耦的有效性,Janus-Pro 将模型扩展到 7B 参数。实验观察到,使用更大规模的 LLM 时,多模态理解和视觉生成的损失收敛速度比小模型显著提升,进一步验证了该方法的强扩展性。
实验结果
多模态理解性能
在多个广泛认可的基于图像的视觉语言基准测试中评估 Janus-Pro,包括 GQA、POPE、MME 等。结果显示 Janus-Pro 取得总体最佳成绩,这得益于其对多模态理解和生成的视觉编码解耦,缓解了两个任务间的冲突。
与参数规模大得多的模型相比,Janus-Pro 也极具竞争力,例如 Janus-Pro-7B 在除 GQA 外的所有基准测试中均优于 TokenFlow-XL(13B)。
视觉生成性能
在 GenEval 基准测试中评估文本到图像的生成能力,Janus-Pro-7B 总体准确率达到 80%超越了所有其他统一模型或仅用于生成的模型,如 Transfusion、SD3-Medium 和 DALL-E 3 等,这表明该模型具有更好的指令跟随能力。
在 DPG-Bench 基准测试中,Janus-Pro 得分为 84.19,超过所有其他方法,证明 Janus-Pro 在遵循密集指令进行文本到图像生成方面表现出色。
Janus-pro 代码:https://github.com/deepseek-ai/Janus
总结
Janus-Pro作为多模态理解与生成统一架构的突破性模型,其核心在于双路径视觉编码器与三阶段训练策略的协同优化:通过独立的SigLIP编码器(提取语义特征)和VQ Tokenizer(捕捉像素细节)分别处理理解与生成任务,再将特征序列拼接输入自回归Transformer联合训练;训练流程上,第一阶段延长ImageNet数据学习以强化生成基础,第二阶段直接采用高密度文本-图像数据提升效率,第三阶段调整数据配比以平衡多任务性能。该方法在多模态理解(MMBench 79.2)和生成(GenEval 0.80)上实现SOTA,生成稳定性显著提升,但受限于384×384分辨率,存在细粒度识别不足和图像细节缺失的缺陷。未来研究可探索更高分辨率输入、动态特征融合机制,以及跨模态对齐损失的优化,以进一步突破多模态统一架构的语义-细节平衡瓶颈。
相关文章:
【第三十五周】Janus-pro 技术报告阅读笔记
Janus-Pro 摘要Abstract文章信息引言方法Janus 架构Janus 训练Janus-Pro 的改进 实验结果总结 摘要 本篇博客介绍了Janus-Pro,这是一个突破性的多模态理解与生成统一模型,其核心思想是通过解耦双路径视觉编码架构解决传统方法中语义理解与像素生成的任务…...
基于Qt的app开发第七天
写在前面 笔者是大一下计科生,标题这个项目是笔者这个学期的课设,与学长共创,我负责客户端部分,现在已经实现了待办板块的新建、修改。 这个项目目前已经走上正轨了,博主也实现了主要功能的从无到有ÿ…...
第二十二节:图像金字塔-拉普拉斯金字塔
在数字图像处理的奇幻世界中,存在着一种能够连接不同视觉维度的神秘阶梯——图像金字塔。这种独特的结构让计算机视觉算法能够在不同尺度下观察和理解图像特征,而其中的拉普拉斯金字塔更是隐藏着图像细节重构的终极奥秘。 一、金字塔的数学基础:从高斯到拉普拉斯 1.1 高斯金…...
Flutter基础()
导航栏 appBar: AppBar() title: const Text(搜索) //标题 backgroundColor: Colors.blue //背景颜色 centerTitle: true //标题居中leading 属性 作用: 放置在应用栏左侧的控件,通常是一个图标按钮,用于导航或打开菜单。 AppBar(le…...
ES面试题系列「一」
1、Elasticsearch 是什么?它与传统数据库有什么区别? 答案:Elasticsearch 是一个基于 Lucene 的分布式、开源的搜索和分析引擎,主要用于处理大量的文本数据,提供快速的搜索和分析功能。与传统数据库相比,E…...
Oracle 通过 ROWID 批量更新表
Oracle 通过 ROWID 批量更新表 在 Oracle 数据库中,使用 ROWID 进行批量更新是一种高效的更新方法,因为它直接定位到物理行位置,避免了通过索引查找的开销。 ROWID 基本概念 ROWID 是 Oracle 数据库中每一行的唯一物理地址标识符ÿ…...
罗技无线鼠标的配对方法
罗技鼠标的配对方法: 重新连接鼠标 请按照以下步骤将鼠标与 USB 接收器重新配对。 1.将USB接收器插入计算机。 2.将鼠标关闭电源。 3.按住并持续按住向右按钮,直到操作结束。 4.切换鼠标电源。 5. 单击一次左侧按钮。 6. 单击一次中间按钮。 7.全部松开&…...
移动应用开发的六大设计原则
在移动应用开发中,遵循设计原则能大幅提升代码的可维护性和扩展性。本文以一个简单的学生管理系统为例,解析六大核心设计原则的实践方法。 1. 单一职责原则 优点: 提高可维护性:一个类只负责一项职责,代码的功能会更…...
LLM初识
从零到一:用 Python 和 LLM 构建你的专属本地知识库问答机器人 摘要: 随着大型语言模型(LLM)的兴起,构建智能问答系统变得前所未有的简单。本文将详细介绍如何使用 Python,结合开源的 LLM 和向量数据库技…...
【CTF】Linux Shell RCE绕过(bypass)技术总结
在Linux环境下,远程代码执行(RCE,Remote Code Execution)是一种常见的攻击手段。然而,许多系统会对命令注入进行过滤或限制,例如禁止特定关键字(如system)、斜杠(/&#…...
深入理解 Linux 权限控制机制
引言 在 Linux 系统中,权限控制是保障系统安全的核心机制。通过限制用户对文件和资源的访问,它能有效防止未授权操作,保护数据不被篡改或泄露。合理设置权限不仅有助于实现用户隔离和最小权限原则,还能降低系统被滥用或攻击的风险…...
技术书籍推荐(002)
20. 利用Python进行数据分析 免费 电子书 PDF 下载 书籍简介: 本书聚焦于使用Python进行数据处理和分析。详细介绍了Python中用于数据分析的重要库,如NumPy(提供高效的数值计算功能,包括数组操作、数学函数等)、panda…...
[SAP] SAP ERP用户参数设置
菜单路径 个人默认值的设置(数值,日期,时间) 个人参数值的设置 在给参数设置参数值后,当用户登录到对应功能页面时,这些参数值就会自动带出来 例如,我们分别对上述AAT,VKO以及VTW这3个参数设置了参数值&am…...
Python中,async和with结合使用,有什么好处?
在Python的异步编程中,async和with的结合使用(即async with)为开发者提供了一种优雅且高效的资源管理模式。这种组合不仅简化了异步代码的编写,还显著提升了程序的健壮性和可维护性。以下是其核心优势及典型应用场景的分析&#x…...
【信息系统项目管理师】第3章:信息系统治理 - 29个经典题目及详解
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 【第1题】【第2题】【第3题】【第4题】【第5题】【第6题】【第7题】【第8题】【第9题】【第10题】【第11题】【第12题】【第13题】【第14题】【第15题】【第16题】【第17题】【第18题】【第19题】【第20题】【第…...
python实战项目69:基于Python爬虫的链家二手房数据采集方法研究
python实战项目69:链家二手房数据采集 一、项目需求1.1 房地产数据价值1.2 传统数据获取局限性1.3 技术可行性二、数据采集流程2.1 需求分析2.2 网页结构分析2.3 请求发送与反爬策略2.4 数据解析2.5 数据存储三、结论与展望四、完整代码一、项目需求 本文针对房地产数据分析需…...
PowerShell 脚本中文乱码处理
问题描述 脚本带中文,执行时命令行窗口会显示出乱码 示例 Write-Host "测试成功!"解决方法 问了DeepSeek,让确认是不是 UTF8 无 BOM 格式 事实证明方向对了 但是确认信息有偏差 改成 UTF8 with BOM 使用任意支持修改编码的文本…...
SpEL(Spring Expression Language)使用详解
SpEL(Spring Expression Language)是 Spring 框架中一种强大的表达式语言,支持在运行时动态查询和操作对象图。它与 Spring 生态深度集成,广泛应用于依赖注入、数据绑定、AOP、安全规则等场景。以下是其核心语法、应用场景及使用示…...
论文阅读与写作:《从探索到突破:解密科研和论文写作的思维密码》
文章目录 一、如何做科研1.科研的步骤2.课题选择3.快速入门一个新领域:读论文,先读综述(1)自己看论文的时候,每篇论文花3-5分钟记录一下自己的idea和一些瞬间的想法(2)高质量文献:顶会顶刊(3)如何检索 4.注重团队协作与学术交流5.…...
免费公共DNS服务器推荐
当自动获取的DNS或本地运营商的DNS出现问题,可能导致软件无法连接服务器。此时,手动修改电脑的DNS设置或许能解决问题。许多用户觉得电脑上网速度慢、游戏卡顿,归咎于DNS问题。确实,我们可以自行设置一个DNS来改善网络体验。不少用…...
CK-S650-PA60S半导体专用读写器|读写头与绿联RS232串口转接头联机测试说明
CK-S650-PA60S半导体专用读写器|读写头是一款国产替代欧姆龙V640系列,支持德州仪器公司(TI)制造的RI-TRP-DR2B、RI-TRP-WR2B-40低频玻璃管标签|射频标签读写,广泛应用半导体硅片盒、晶圆盒、花篮等RFID插件识别与产品追溯领域。 CK-S650-PA60S半导体专用…...
Babel 基础使用指南:从安装到编译的完整流程
Babel 是当今前端开发中不可或缺的工具,它允许开发者使用最新的 JavaScript 特性,同时确保代码能在各种浏览器和环境中运行。本文将带你从零开始学习 Babel 的基础使用,涵盖安装、配置到实际编译的全过程。 1. 安装 Babel 和插件 首先&…...
uniapp-商城-52-后台 商家信息(商家信息数据,云对象使用)
1、概述 已经通过好几个篇幅来说明商家信息,包括logo、商家名称,地址,电话以及商家简介。通过表单组件和标签,以及我们的文件上传标签,都做了说明。(logo上传,用的文件上传组件是上传到公共的数…...
【我的创作纪念日】512
机缘 还记得 2023 年 12 月 15 日,我撰写了第 1 篇技术博客:《oracle 跟踪文件--审计日志》。从此,这平凡的一天,赋予了我不平凡的意义。在那一刻,我已在创作这趟旅程中出发,并立志将工作中的经验总结&…...
共享内存与信号量结合
在Linux系统中,进程间通信(IPC)和原子性是并发编程中的核心问题。以下是对这些概念的详细分步解释: 一、进程间通信(IPC)方法 1. 管道(Pipe) 匿名管道:用于父子进程等有…...
西门子PLC s7-1200工艺对象“轴”的应用(1)
1. 工艺对象 “ 轴 ” 的概念 在西门子 S7-1200 PLC 中,术语 “ 轴 ” 特指用 “ 轴 ” 工艺对象表示的驱动器工艺映像。 “ 轴 ” 工艺对象是用 户程序与驱动器之间的接口,用于接收用户程序中的运动控制命令、执行这些命令并监视其运行情况。 运动控制…...
ubuntu22.04在 Docker容器中安装 ROS2-Humble
22.04 安装 docker 容器并实现rviz功能 1 docker pull命令拉取包含ROS-Humble的镜像: docker pull osrf/ros:humble-desktop-full-jammy docker images验证该镜像是否拉取成功。 使用镜像osrf/ros:humble-desktop-full-jammy创建并运行容器 sudo docker run -it…...
【LwIP源码学习6】UDP部分源码分析
前言 本文对lwip协议栈里UDP部分的源码进行分析。将源码中最关键部分提取出来,梳理UDP部分的设计框架。 应用层例子 首先举一个应用层使用UDP的简单例子,如下: //第一步:申请套接字 sock socket(AF_INET, SOCK_DGRAM, 0); //…...
Python Cookbook-7.10 在 MySQL 数据库中储存 BLOB
任务 想把一个二进制的大对象(BLOB)存入MySQL数据库 解决方案 MySQLdb 模块并不支持完整的占位符,不过可以使用模块的escape_string 函数来解决: import MySQLdb,cPickle #连接到数据库,用你的本机来测试数据库,并获得游标 connection = MySQLdb.connect(db = "tes…...
LWIP的ICMP协议
ICMP协议简介 ICMP协议是一个网络层协议 背景:如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。因此我们需要ICMP协议来完成这样的功能 为什么需要ICMP协议 1,IP 协议本身不提供差错报告和差错控制机制来保证数据报递交的有效…...
Spring Web MVC响应
返回静态页面 第一步 创建html时,要注意创建的路径,要在static下面 第二步 把需要写的内容写到body内 第三步 直接访问路径就可以 返回数据ResponseBody RestController Controller ResponseBody Controller:返回视图 ResponseBody&…...
STM32智能窗帘系统:从零到一的开发实战
简介 智能窗帘控制系统是智能家居领域的经典应用,随着物联网技术的不断发展,其功能从简单的远程控制演变为具备环境感知、多设备联动和跨平台兼容的智能系统。本篇文章将全面解析基于STM32的智能窗帘系统开发方案,从硬件设计到软件实现,再到企业级扩展功能,提供完整的代码…...
第三方评测机构如何凭借专业公正提供高可靠性软件检测服务?
第三方评测机构与软件开发及使用单位保持独立,凭借其专业技能和公正立场,为企业提供多样化的软件检测服务。这些检测结果的可靠性极高,不仅有助于企业减轻负担,节省人力和物力资源,而且赢得了业界的普遍认可。下面&…...
相或为K(位运算)蓝桥杯(JAVA)
这个题是相或为k,考察相或的性质,用俩个数举例子,011001和011101后面的数不管和哪个数相或都不可能变成前面的数,所以利用这个性质我们可以用相与运算来把和k对应位置的1都积累起来,看最后能不能拼起来k如果能拼起来k那…...
X.509证书详解
文章目录 1. X.509证书基础1.1 什么是X.509证书1.2 X.509证书结构1.3 证书编码格式2. Java中的X509Certificate2.1 类层次结构2.2 核心方法3. 获取X509Certificate对象3.1 从文件加载证书3.2 从KeyStore获取证书3.3 从HTTPS连接获取证书4. 创建自签名证书5. 证书验证5.1 基本验…...
深入浅出:Spring Boot 中 RestTemplate 的完整使用指南
在分布式系统开发中,服务间通信是常见需求。作为 Spring 框架的重要组件,RestTemplate 为开发者提供了简洁优雅的 HTTP 客户端解决方案。本文将从零开始讲解 RestTemplate 的核心用法,并附赠真实地图 API 对接案例。 一、环境准备 在 Spring…...
C++23 views::repeat (P2474R2) 写一篇博客
文章目录 std::views::enumerate 简介使用示例性能和灵活性与其他视图的结合使用总结 C23 标准引入了众多令人期待的新特性,其中 std::views::enumerate 便是一个备受瞩目的新增视图。这个新特性通过为迭代器提供索引和元素的组合,极大地简化了对集合中…...
微软向现实低头:悄悄延长Windows 10的Microsoft 365支持
快科技5月11日消息,Windows 10将在今年10月14日正式结束支持,此前微软曾明确表示,Microsoft 365(M365)应用,如Outlook、Teams、OneDrive、Word、Excel等,也将随之停止支持。 不过无法升级至Win…...
数字化转型-4A架构之技术架构
4A架构系列文章 数字化转型-4A架构(业务架构、应用架构、数据架构、技术架构) 数字化转型-4A架构之业务架构 数字化转型-4A架构之应用架构 数字化转型-4A架构之数据架构 数字化转型-4A架构之技术架构 一、 技术架构 Technology Architecture 1. 技…...
生产级 Flink CDC 应用开发与部署:MySQL 到 Kafka 同步示例
生产级 Flink CDC 应用开发与部署:MySQL 到 Kafka 同步示例 为了帮助你更好地理解如何将 Flink 作业部署为独立服务,下面我将提供一个完整的工程代码示例。这个例子基于之前的 MySQL 到 Kafka 的数据同步需求,但这次我们将 Flink 作业作为一个独立的服务进行打包和部署。 …...
【计算机视觉】OpenCV实战项目:Text-Extraction-Table-Image:基于OpenCV与OCR的表格图像文本提取系统深度解析
Text-Extraction-Table-Image:基于OpenCV与OCR的表格图像文本提取系统深度解析 1. 项目概述2. 技术原理与算法设计2.1 图像预处理流水线2.2 表格结构检测算法2.3 OCR优化策略 3. 实战部署指南3.1 环境配置3.2 核心代码解析3.3 执行流程示例 4. 常见问题与解决方案4.…...
TSN网络与DIOS融合:破解煤矿井下电力系统越级跳闸难题
一、引言 1.1 研究背景与意义 在现代煤矿生产中,井下电力系统作为整个煤矿生产的动力核心,其重要性不言而喻。煤矿井下的各类机械设备,如采煤机、刮板输送机、通风机、排水泵等,都依赖稳定的电力供应才能正常运行。电力系统的稳定…...
ALLinSSL:一站式SSL证书管理解决方案
引言 在当今互联网安全日益重要的背景下,SSL证书已成为保护网站安全的必备工具。然而,管理多个SSL证书常常是一项繁琐且容易出错的任务。ALLinSSL应运而生,它提供了一个一站式的SSL证书管理解决方案,大大简化了证书的申请、安装和更新过程。本文将深入介绍ALLinSSL的特性、…...
jsAPI
环境准备 1 安装nvm nvm 即 (node version manager),好处是方便切换 node.js 版本 安装注意事项 要卸载掉现有的 nodejs提示选择 nvm 和 nodejs 目录时,一定要避免目录中出现空格选用【以管理员身份运行】cmd 程序来执行 nvm 命令首次运行前设置好国…...
三、c语言练习四题
在这个系列中,我将以每次五题的形式加强对C语言的理解 1、 矩阵转置 要求 输入: 2 3 1 2 3 4 5 6输出: 1 4 2 5 3 6 //矩阵转置(复习) int main() {int i 0;int j 0;int arr[10][10];/*提前定义好一个大容量数…...
MySql(进阶)
一.数据库约束 约束类型 NOT NULL - 指示某列不能存储 NULL 值。 (not null不能为NILL) UNIQUE - 保证某列的每行必须有唯一的值。 (unique唯一值) DEFAULT - 规定没有给列赋值时的默认值。 (default为空给定默认值) PRIMARY…...
数据结构练习:顺序表题目
今天我们来进行顺序表后面习题的练习 目录 移除数组 思路1:查找后进行删除 思路2:新数组交换: 思路3:双指针法: 删除重复项 合并两个有序数组 移除数组 它的示例如下: 思路1:查找后进行删除…...
Ubuntu 22虚拟机【网络故障】快速解决指南
Ubuntu22虚拟机突然无法连接网络了,以下是故障排除步骤记录。 Ubuntu 22虚拟机网络故障快速解决指南 当在虚拟机中安装的 Ubuntu 22 系统出现 ping: connect: 网络不可达 和 ping: www.baidu.com: 域名解析出现暂时性错误的报错时,通常意味着虚拟机无法…...
SwaggerLogger.java
package further.config;import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.CommandLineRunner; import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils;/*** swagger启动ap…...
基于SpringBoot的在线教育管理系统
作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...