【AI论文】使用滑动磁贴注意力实现快速视频生成
摘要:扩散变换器(DiTs)凭借3D全局注意力机制在视频生成领域达到了最先进水平,但其计算成本高昂——生成一段仅5秒的720P视频时,仅注意力计算就占用了总推理时间的945秒中的800秒。本文引入了滑动磁贴注意力(STA)机制来应对这一挑战。STA基于这样一个观察结果:在预训练的视频扩散模型中,注意力分数主要集中在局部的3D窗口内。通过滑动并在局部时空区域内进行注意力计算,STA消除了全局注意力的冗余。与传统基于标记的滑动窗口注意力(SWA)不同,STA采用了一种新颖的硬件感知滑动窗口设计,以瓦片为单位进行操作,既保持了表达能力,又提高了硬件效率。通过细致的核级优化,STA提供了首个高效的2D/3D滑动窗口式注意力实现,达到了58.79%的多功能单元(MFU)利用率。具体来说,与FlashAttention-2(FA2)相比,STA将注意力计算速度提高了2.8至17倍,与FlashAttention-3(FA3)相比则提高了1.6至10倍。在领先的视频DiT模型HunyuanVideo上,STA在不降低质量的情况下,将端到端延迟从945秒(使用FA3)缩短至685秒,且无需重新训练。启用微调后,延迟可进一步降低至268秒,同时在VBench上的性能仅下降了0.09%。Huggingface链接:Paper page,论文链接:2502.04507
1. 引言
背景与动机:
- 扩散变换器(DiTs):作为高分辨率视频生成的主流架构,DiTs通过3D注意力机制对视频帧进行空间和时间依赖性的建模,实现了长时间、视觉连贯的视频输出。然而,这种设计引入了显著的计算开销,尤其是在视频分辨率和持续时间增加时,训练和推理速度变得极为缓慢。
- 计算成本问题:生成一段仅5秒的720P视频时,注意力计算就占用了总推理时间的绝大部分(例如,在HunyuanVideo模型中,注意力计算占了945秒中的800秒)。这一瓶颈严重限制了DiTs在实际部署中的应用。
- 本文贡献:针对上述问题,本文引入了滑动磁贴注意力(STA)机制,旨在通过消除全局注意力的冗余来加速视频生成过程。
2. 问题分析
全局注意力的局限性:
- 计算复杂度:全局注意力机制的计算复杂度为O(N^2),其中N是视频帧中标记(token)的数量。随着视频分辨率和帧数的增加,N迅速增长,导致计算成本急剧上升。
- 注意力分数分布:通过对预训练视频扩散模型的注意力分数进行可视化,发现注意力分数主要集中在局部的3D窗口内。这表明,全局注意力机制中存在大量的冗余计算。
滑动窗口注意力(SWA)的局限性:
- 现有SWA实现的问题:尽管SWA机制通过限制注意力计算到局部窗口来减少计算成本,但现有的2D或3D SWA实现(如NATTEN和CLEAR)未能将浮点运算减少量转化为相应的时钟加速比。这主要是因为它们的计算模式对GPU不友好,导致硬件利用率低。
- 混合块问题:在SWA中,由于每个查询标记(query token)关注的键标记(key token)组不同,导致注意力图中存在大量的混合块(mixed blocks)。这些混合块不仅不减少浮点运算量,还引入了额外的掩码评估开销。
3. 方法
滑动磁贴注意力(STA):
- 基本思想:STA通过以磁贴(tile)为单位进行滑动窗口注意力计算,消除了混合块,提高了计算效率。具体来说,STA将视频帧划分为多个非重叠的磁贴,每个瓦片内的标记具有连续的序列索引。然后,对每个瓦片内的查询标记和键标记进行注意力计算。
- 磁贴大小与窗口大小:STA设置磁贴大小(T)等于FlashAttention的块大小(B)的立方根(即B=T^3),并确保视频大小和窗口大小都是瓦片大小的整数倍。这样,每个磁贴都可以完整地滑入注意力窗口内,形成密集的注意力块。
- 核级优化:STA基于ThunderKittens和FlashAttention3实现了高效的注意力核。通过拆分线程块为计算warp组和数据warp组,并将块间掩码逻辑与计算核解耦,STA进一步提高了计算效率。
应用于视频扩散模型:
- 无需训练的应用:由于视频扩散模型表现出显著的3D局部性和头部专业化模式,STA可以通过在少量提示上搜索每个头部的最优窗口大小,然后直接替换预训练视频DiTs中的3D注意力,而无需重新训练。
- 微调:为了进一步降低延迟,可以对应用STA后的模型进行微调。微调过程中采用了注意力蒸馏损失、最终层损失和数据损失来确保模型保持高质量的视频生成能力。
4. 实验
实验设置:
- 数据集与模型:实验在HunyuanVideo模型上进行,该模型是一个领先的开源视频DiT模型。此外,还在图像扩散模型FLUX上应用了STA,以展示其在2D场景下的有效性。
- 评估指标:效率方面,使用MFU(多功能单元利用率)和延迟来衡量注意力核的效率;质量方面,除了报告自动化指标(如VBench、SSIM、PSNR和CD-FVD)外,还进行了人类评估。
效率评估:
- 与现有方法的比较:与CLEAR、NATTEN、Swin和∆-DiT等现有方法相比,STA在保持高表达能力的同时,实现了更高的计算效率。具体来说,STA的MFU达到了58.79%,比现有方法高出许多倍。与FlashAttention-3相比,STA将注意力计算速度提高了1.6至10倍。
- 在HunyuanVideo上的应用:在不降低质量的情况下,STA将HunyuanVideo的端到端延迟从945秒缩短至685秒,且无需重新训练。启用微调后,延迟可进一步降低至268秒。
质量评估:
- 人类评估:在人类评估中,STA生成的视频在质量上与原始HunyuanVideo相当,且明显优于∆-DiT生成的视频。这表明STA在加速视频生成的同时,没有牺牲视频质量。
- 自动化指标:在自动化指标上,STA也表现出了与原始模型相当或更优的性能。例如,在VBench上,STA的得分与原始模型相差无几,甚至在某些配置下略有提高。
5. 相关工作
线性注意力方法:
- 线性注意力方法通过分解二次注意力操作来实现线性复杂度。然而,这些方法在视频DiTs中尚未取得成功。
扩散模型加速技术:
- 除了注意力加速外,还有许多技术被提出用于加速扩散模型的采样过程,如DDIM、更快的ODE和PDE求解器等。STA与这些技术是互补的,可以结合使用以实现更高的加速比。
6. 结论与未来工作
结论:
- 本文提出的滑动磁贴注意力(STA)机制通过消除全局注意力的冗余,显著加速了视频扩散模型的推理过程。实验结果表明,STA在不降低视频质量的情况下,实现了高达3.53倍的端到端加速比。
未来工作:
- STA的概念与其他加速技术(如缓存和一致性蒸馏)是正交的,未来可以探索它们的组合使用以实现更高的加速比。此外,还可以将STA应用于其他类型的扩散模型(如图像生成模型)中,以验证其通用性。
7. 影响声明
本文的工作通过引入高效的注意力核来减少视频生成时间,同时保持输出质量。这一改进使得视频生成对于计算资源有限的研究人员和开发者来说更加实用,有望促进AI驱动的视频应用在创意产业、教育等领域的发展。尽管更快的视频生成可能会带来滥用风险,但现有的内容检测和水印技术可以帮助缓解这些问题。总体而言,本文的工作对推动可访问的视频AI系统的发展具有重要意义。
8. 详细实现与优化
磁贴与窗口的设计:
- STA通过精心设计的磁贴大小和窗口大小来确保每个磁贴都可以完整地滑入注意力窗口内,从而形成密集的注意力块。这种设计不仅消除了混合块,还提高了GPU的硬件利用率。
核级优化技术:
- STA采用了多种核级优化技术来提高计算效率,包括拆分线程块为计算warp组和数据warp组、将块间掩码逻辑与计算核解耦等。这些优化技术使得STA能够在保持高表达能力的同时,实现高效的注意力计算。
微调策略:
- 为了进一步降低延迟并保持高质量的视频生成能力,本文对应用STA后的模型进行了微调。微调过程中采用了多种损失函数来确保模型在加速的同时不损失性能。这些损失函数包括注意力蒸馏损失、最终层损失和数据损失等。
9. 实验细节与结果分析
实验设置与基准方法:
- 实验在HunyuanVideo模型上进行,并与CLEAR、NATTEN、Swin和∆-DiT等现有方法进行了比较。实验设置包括生成720P 5秒的视频、使用不同的注意力核实现等。
效率与质量权衡:
- 实验结果表明,STA在保持高质量视频生成的同时,实现了显著的加速比。与现有方法相比,STA在MFU、延迟和计算效率等方面均表现出色。此外,人类评估和自动化指标也验证了STA在视频质量方面的优越性。
不同配置下的性能:
- 本文还探索了不同配置下STA的性能表现。例如,在不同的稀疏度设置下,STA仍然能够保持高效的计算性能和高质量的视频生成能力。此外,STA还可以应用于不同的视频分辨率和帧数设置下,以适应不同的应用场景需求。
10. 未来研究方向
与其他加速技术的结合:
- 如前所述,STA的概念与其他加速技术(如缓存和一致性蒸馏)是正交的。未来可以探索这些技术的组合使用以实现更高的加速比和更好的性能表现。
应用于其他扩散模型:
- 除了视频生成模型外,STA还可以应用于其他类型的扩散模型(如图像生成模型)中。通过验证STA在不同类型扩散模型中的通用性,可以进一步推动其在实际应用中的发展。
硬件加速与优化:
- 随着硬件技术的不断发展,未来可以探索针对STA的硬件加速和优化技术。例如,可以设计专门的硬件加速器来支持STA的高效计算,或者优化现有的GPU架构以更好地支持STA的执行。这些硬件加速和优化技术有望进一步提高STA的计算效率和性能表现。
相关文章:
【AI论文】使用滑动磁贴注意力实现快速视频生成
摘要:扩散变换器(DiTs)凭借3D全局注意力机制在视频生成领域达到了最先进水平,但其计算成本高昂——生成一段仅5秒的720P视频时,仅注意力计算就占用了总推理时间的945秒中的800秒。本文引入了滑动磁贴注意力(…...
MAAS | Ollama 搭建本地 AI 大模型 deepseekWeb 界面调用
目录 一、环境准备二、安装 Ollama三、下载并部署 DeepSeek 模型四、简单交互五、通过 Web 界面调用大模型 在当今人工智能快速发展的时代,本地部署大语言模型赋予了用户更高的灵活性和个性化服务体验。本文介绍了如何准备环境、安装Ollama框架、下载并部署DeepSeek…...
Arduino 第十一章:温度传感器
Arduino 第十一章:LM35 温度传感器 一、LM35 简介 LM35 是美国国家半导体公司(现德州仪器)生产的一款精密集成电路温度传感器。与基于热力学原理的传统温度传感器不同,LM35 能直接将温度转换为电压输出,且输出电压与…...
普通用户授权docker使用权限
1、检查docker用户组 sudo cat /etc/group |grep docker 若显示:docker:x:999: # 表示存在否则创建docker用户组: sudo groupadd docker2、查看 /var/run/docker.sock 的属性 ll /var/run/docker.sock 显示: srw-rw---- 1 root root 0 1月…...
嵌入式软件C语言面试常见问题及答案解析(四)
嵌入式软件C语言面试常见问题及答案解析(四) 原本打算将链表相关的面试题整合到一个文档中,奈何写着写着就发现题目比较多,题型也比较丰富,所以导致上一篇已经足够长了,再长也就有点不礼貌了。 所以在这儿继续来总结分享那个面试中遇到的题目,文中的问题和提供的答案或者…...
Python中是否有类似R语言中rds的功能,可将对象保存为文件?
在数据分析和科学计算领域,R语言和Python都是极为流行的编程语言。它们各自拥有独特的优势和丰富的库资源,使得数据科学家们能够高效地处理和分析数据。在R语言中,RDS(R Data Serialization)格式是一种非常方便的方式&…...
LabVIEW无人机飞行状态监测系统
近年来,无人机在农业植保、电力巡检、应急救灾等多个领域得到了广泛应用。然而,传统的目视操控方式仍然存在以下三大问题: 飞行姿态的感知主要依赖操作者的经验; 飞行中突发的姿态异常难以及时发现; 飞行数据缺乏系统…...
车联网安全入门一:了解CAN总线及环境模拟
准备打工了,工作内容和车联网安全相关,本来想着和app分析有较大关系,但是还涉及到很多关于汽车渗透测试相关的知识,由于之前并没有接触过,就借此机会和大家来学习一下。 ## CAN基础知识 ### CAN(Controller…...
hive spark读取hive hbase外表报错分析和解决
问题现象 使用Spark shell 操作hive关联Hbase的外表导致报错;hive使用tez引擎操作关联Hbase的外表时报错。 问题1:使用tez或spark引擎,在hive查询时只要关联hbase的hive表就会有问题其他表正常。 “org.apache.hadoop.hbase.client.RetriesExhaustedException:Can’t get …...
【MQ】RabbitMQ 高可用延时功能的探究
延迟消息如果使用延时交换机来实现,如果数据量过大,就会很占 CPU 资源,轻则时间误差大,重则 RabbitMQ 宕机 一、针对一个 RabbitMQ 节点 (1)利用队列 ttl,将延迟消息根据 delay 的时间进行分级…...
网络安全讲座之一:网络安全的重要性
第一讲内容主要对于安全的发展以及其重要性作了简明的阐述,并介绍了一些国内外知名的网络安全相关网站,并对于如何建立有效的安全策略给出了很好的建议,并让大家了解几种安全标准。 媒体经常报道一些有关网络安全威胁的令人震惊的事件&am…...
flutter ListView Item复用源码解析
Flutter 的 ListView 的 Item 复用机制是其高性能列表渲染的核心,底层实现依赖于 Flutter 的渲染管线、Element 树和 Widget 树的协调机制。以下是 ListView 复用机制的源码级解析,结合关键类和核心逻辑进行分析。 1. ListView 的底层结构 ListView 的复…...
基于java手机销售网站设计和实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
HTML 左右联动高亮示例
HTML 左右联动高亮示例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>左右联动高亮示例</titl…...
如何本地部署DeepSeek
第一步:安装ollama https://ollama.com/download 打开官网,选择对应版本 第二步:选择合适的模型 https://ollama.com/ 模型名称中的 1.5B、7B、8B 等数字代表模型的参数量(Parameters),其中 B 是英文 B…...
虚拟机+Docker配置主机代理和常见配置
完整配置流程如下: 配置虚拟机使用宿主机代理: # 设置环境变量(宿主机IP为192.168.100.1,代理端口7890) export http_proxyhttp://192.168.100.1:7890 export https_proxyhttp://192.168.100.1:7890# 测试代理是否生…...
996引擎-问题处理:盟重传送石问题
996引擎-问题处理:盟重传送石问题 问题解决方案补充:回城卷参考资料问题 今天添加了个新地图,由于这个版本只有盟重传送石没设计回城卷。 所以怎么搞都回不到新地图的回城点。(当时也是懵逼了都忘记它叫 盟重 传送石`) 分析 先看一下道具表的配置。 [@StdModeFuncX] 表示…...
从零到一学习c++(基础篇--筑基期七-vector与迭代器)
从零到一学习C(基础篇) 作者:羡鱼肘子 温馨提示1:本篇是记录我的学习经历,会有不少片面的认知,万分期待您的指正。 温馨提示2:本篇会尽量用更加通俗的语言介绍c的基础,用通俗的语言去…...
PKI及SSL协议分析
PKI的基本组成,完整的PKI系统必须具有权威认证机构(CA)、数字证书库、密钥备份及恢复系统、证书作废系统、应用接口(API)等基本构成部分,构建PKI也将围绕着这五大系统来着手构建。 任务一:搭建CA服务器 本任务初步了…...
请解释 JavaScript 中的函数式编程,优缺点是什么?
一、对JavaScript函数式编程的理解 函数式编程(Functional Programming,FP)是一种编程范式,它将计算视为数学函数的求值,并避免改变状态和可变数据。 在JavaScript中,函数式编程具有以下几个关键特性&…...
WPS接入DeepSeek模型
1.wps 下载安装 WPS-支持多人在线协作编辑Word、Excel和PPT文档_WPS官方网站 (最好是安装最新的wps) 2.offieceAi工具下载安装 软件下载 | OfficeAI助手 下载后安装下载下来的两个工具。安装路径可以自行修改 3.打开WPS,点击文件-》 选项-》信任中心 勾…...
头条百度批量采集软件说明文档
旧版说明文档《头条号文章批量采集软件4.0版本说明文档!头条/微头条文章批量采集》 头条的采集软件已经更新了好多个版本了,一直没有做详细的介绍文档,最近更新了一些功能进去,一块来写一下说明文档。 1、主界面 2、头条作者采集…...
网络安全架构师怎么考 网络安全 架构
安全通信网络 随着现代技术的不断发展,等级保护对象通常通过网络实现资源共享和数据交互,当大量的设备连成网络后,网络安全成了最为关注的问题。按照“一个中心,三重防御”的纵深防御思想,边界外部通过广域网或城域网…...
Vue 3 30天精进之旅:Day 21 - 项目实践:打造功能完备的Todo应用
前言 经过前20天的学习,我们已经掌握了Vue 3的核心概念、组合式API、路由、状态管理等关键技术。今天将通过一个完整的项目实践——Todo应用,将所学知识融会贯通。我们将为Todo应用添加编辑、删除、过滤等进阶功能,并优化代码结构。 一、项目…...
2025年02月11日Github流行趋势
项目名称:unsloth 项目地址url:https://github.com/unslothai/unsloth项目语言:Python历史star数:27175今日star数:1024项目维护者:danielhanchen, shimmyshimmer, Erland366, Datta0, xyangk项目简介&…...
嵌入式硬件篇---原码、补码、反码
文章目录 前言简介八进制原码、反码、补码1. 原码规则示例问题 2. 反码规则示例问题 3. 补码规则示例优点 4. 补码的运算5. 总结 十六进制原码、反码、补码1. 十六进制的基本概念2. 十六进制的原码规则示例 3. 十六进制的反码规则示例 4. 十六进制的补码规则示例 5. 十六进制补…...
PCM与G711A互转
PCM与G711A互转 工具类(Java)调用方法(Kotlin) 工具类(Java) public class G711Code {private final static int SIGN_BIT 0x80;private final static int QUANT_MASK 0xf;private final static int SEG…...
MapReduce简单应用(三)——高级WordCount
目录 1. 高级WordCount1.1 IntWritable降序排列1.2 输入输出格式1.3 处理流程 2. 代码和结果2.1 pom.xml中依赖配置2.2 工具类util2.3 高级WordCount2.4 结果 参考 本文引用的Apache Hadoop源代码基于Apache许可证 2.0,详情请参阅 Apache许可证2.0。 1. 高级WordCo…...
C# 数据验证Regex
Regular Expression,简称 Regex,是一种用于匹配和处理文本的强大工具。它通过定义特定的模式,可以用来搜索、替换或提取字符串中的特定内容。 先引入命名空间 using System.Text.RegularExpressions; Intege(整数) 必须是正整数 //必须是正整数publi…...
Jenkins+gitee 搭建自动化部署
Jenkinsgitee 搭建自动化部署 环境说明: 软件版本备注CentOS8.5.2111JDK1.8.0_211Maven3.8.8git2.27.0Jenkins2.319最好选稳定版本,不然安装插件有点麻烦 一、安装Jenkins程序 1、到官网下载相应的版本war或者直接使用yum安装 Jenkins官网下载 直接…...
C/C++混合读入cin与scanf问题
因为C/C在某些时候是如此的融洽,以至于很多时候可能会混用,就比如 scanf与cin或getline(cin, ..)这是一个严肃的问题。因为随意混用,可能导致,在某些特殊时刻,读取混乱。所以本篇的意义就是为了缕清混用机制 一、scan…...
矩阵 NFC 碰一碰发视频源码搭建技术解析,支持OEM
一、引言 在移动互联与物联网飞速发展的当下,NFC(Near Field Communication,近场通信)技术凭借其便捷、快速的数据传输特性,在众多领域得到广泛应用。本文将深入探讨如何搭建矩阵 NFC 碰一碰发视频的源码,…...
Log4j定制JSON格式日志输出
1.前言 log4j是Java中一个强大的日志记录框架,通过简单的配置便可以在程序中进行日志打印与记录。关于log4j博主最近碰到一个需求,需要将程序运行过程中的日志按给定的json模板输出,本文记录一下log4j如何配置json格式的日志打印。 2.日志配…...
Spring依赖注入方式
写在前面:大家好!我是晴空๓。如果博客中有不足或者的错误的地方欢迎在评论区或者私信我指正,感谢大家的不吝赐教。我的唯一博客更新地址是:https://ac-fun.blog.csdn.net/。非常感谢大家的支持。一起加油,冲鸭&#x…...
【C++八股】什么是函数指针,如何定义和使⽤场景
函数指针是指向函数的指针变量,它存储的是一个函数的地址,允许通过指针间接调用函数。使用函数指针可以动态地选择和调用函数,或者将函数作为参数传递给其他函数。 1. 函数指针的定义 函数指针的定义与普通指针稍有不同。它需要声明指向特定…...
DeepSeek 入驻 Cursor —— 表现能否超越 Claude?
DeepSeek 刚刚在 Cursor 平台上线了它的两款模型:DeepSeek V3 和 R1。目前,许多开发者(包括我们在内)主要依赖 Claude 3.5 Sonnet(最新版本 claude-3-5-sonnet-20241022)作为主要语言模型,因此我…...
skynet-src/atomic.h:25:23: 致命错误:stdatomic.h:没有那个文件或目录
skynet-src/atomic.h:25:23: 致命错误:stdatomic.h:没有那个文件或目录 故事背景,又接了一个新项目,要搞开发环境啊。skyent的框架。ubuntu已经跑起来了,但是内网是centos的跑不起来。只能怀疑是环境问题了࿰…...
docker compose部署nexus
整个工具的代码都在Gitee或者Github地址内 gitee:solomon-parent: 这个项目主要是总结了工作上遇到的问题以及学习一些框架用于整合例如:rabbitMq、reids、Mqtt、S3协议的文件服务器、mongodb github:GitHub - ZeroNing/solomon-parent: 这个项目主要是…...
IBM服务器刀箱Blade安装Hyper-V Server 2019 操作系统
案例:刀箱某一blade,例如 blade 5 安装 Hyper-V Server 2019 操作系统(安装进硬盘) 刀箱USB插入安装系统U盘,登录192.168... IBM BlandeCenter Restart Blande 5,如果Restart 没反应,那就 Power Off Blade 然后再 Power On 重启后进入BIOS界面设置usb存储为开机启动项 …...
Python的顺序结构和循环结构
文章目录 一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(c)多分支 if-elif-elif-...-else (3)注意事…...
[python SQLAlchemy数据库操作入门]-30.掌握 SQLAlchemy:优雅应对数据库异常的艺术
哈喽,大家好,我是木头左! 捕获和处理 SQLAlchemy 异常 在实际应用中,需要根据不同的异常类型采取不同的处理策略。下面是一个示例,展示了如何捕获和处理 SQLAlchemy 的异常。 from sqlalchemy import create_engine, Column, Integer, String, exc from sqlalchemy.ext.…...
编译和链接【三】
文章目录 编译和链接【三】前言系列文章入口编译过程词法分析语法分析语义分析生成中间代码汇编链接 编译和链接【三】 前言 在我大一的时候, 我使用VC6.0对C语言程序进行编译链接和运行 , 然后我接触了VS, Qt creator等众多IDE,…...
11苍穹外卖之Apache ECharts(数据可视化图表、后端传数据)
课程内容 Apache ECharts 营业额统计 用户统计 订单统计 销量排名Top10 功能实现:数据统计 数据统计效果图: 1. Apache ECharts 1.1 介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动&#…...
Grafana-使用Button修改MySQL数据库
背景 众所周知,Grafana是一个用来展示数据的平台,但是有时候还是会有需求说能不能有一个按钮,点击的时候再对数据库进行修改,从而达到更新数据的效果 经过多方查证,终于实现了一个简单的,点击button执行sq…...
C++11语法及库详解
目录 一、c11语法 1. 自动类型推导 (auto) 2. 基于范围的 for 循环 3. Lambda 表达式 4. 智能指针 5. 右值引用和移动语义 6. nullptr 关键字 7. constexpr 关键字 8. 初始化列表 9. std::thread 多线程支持 10. std::function 和 std::bind 11. std::unordered_map…...
数据库,数据表的增删改查操作
一.数据库的基本操作 (1)创建数据库 创建数据库就是在数据库系统中划分一块存储数据的空间,方便数据的分配、放置和管理。在MySQL中使用CREATE DATABASE命令创建数据库,语法格式如下: CREATE DATABASE数据库名称; 注:…...
Python——批量图片转PDF(GUI版本)
目录 专栏导读1、背景介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…...
RocketMQ面试题:原理部分
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…...
中间件-安装Minio-集成使用(ubantu-docker)
目录 1、安装docer 2、运行以下命令拉取MinIO的Docker镜像 3、检查当前所有Docker下载的镜像 4、创建目录 5、创建Minio容器并运行 6、SDK操作 FileUploader.java 1、安装docer 参考这篇:Linux安装Docker 2、运行以下命令拉取MinIO的Docker镜像 docker pull…...
vue3: const一个function怎么写呢?
问: 用ref或者reactive定一个一个const refCharts ref(function xxx (config){ xxxxx,xxxxx xxxx,xxxx })请问怎么写? 回答: 在 Vue 3 中,ref 和 reactive 是两种常用的响应式数据定义方式。ref 用于定义单个响应式对象或原始值…...