开启AI短剧新纪元!SkyReels-V1/A1双剑合璧!昆仑万维开源首个面向AI短剧的视频生成模型
论文链接:https://arxiv.org/abs/2502.10841
项目链接:https://skyworkai.github.io/skyreels-a1.github.io/
Demo链接:https://www.skyreels.ai/
开源地址:https://github.com/SkyworkAI/SkyReels-A1
https://github.com/SkyworkAI/SkyReels-V1
亮点直击
提出了SkyReels-A1,一种用于肖像动画的全新框架,采用DiT(扩散Transformer)架构,以提升运动传递精度、身份保留和时间一致性的保真度。该框架结合了基于表情标志点的动态条件模块,以及连接视觉-文本语义空间的跨模态对齐机制。
分阶段的训练方法被设计用于逐步优化运动-表情相关性以及主体特定特征的不变性。
通过一系列全面的实验评估了SkyReels-A1的性能,结果表明其能够生成高效的结果,并展现出对各种组合变化的无缝适应性。最后,为了支持进一步的研究和行业应用,代码和演示材料均已公开提供。
总结速览
解决的问题
-
身份失真:现有方法在动画生成过程中难以保持人物身份的稳定性,导致身份信息泄露或扭曲。
-
背景不稳定:动画生成时背景容易出现抖动或不一致的现象。
-
面部表情不真实:特别是在仅头部动画的场景中,面部表情缺乏真实感。
-
全身动画的挑战:当动画扩展到全身时,现有方法容易产生视觉伪影或不自然的动作。
-
身份与运动融合的困难:现有方法难以在保持身份一致性的同时,实现细腻的表情和动作生成。
提出的方案
-
基于视频扩散Transformer(DiT)的框架:利用DiT的强大生成能力,提升面部运动传递的精度、身份保留和时间一致性。
-
表情感知条件模块:通过表情引导的标志点输入驱动连续视频生成,增强表情与动作的关联性。
-
面部图像-文本对齐模块:深度融合面部特征与运动轨迹,强化身份一致性。
-
多阶段训练策略:逐步优化表情与运动的相关性,同时确保身份稳定再现。
-
统一潜在空间建模:在单一潜在空间中联合建模面部细节和全身动态,解决身份漂移和背景不一致问题。
应用的技术
-
视频扩散Transformer(DiT):利用其强大的生成能力和时间一致性建模能力。
-
表情感知标志点序列:作为条件输入,驱动细腻的表情生成。
-
图像-文本对齐技术:增强面部特征与运动轨迹的融合。
-
多阶段训练范式:分阶段优化姿势准确性、身份稳定性和运动真实性。
-
模块化设计:便于集成到实时视频编辑系统和个性化虚拟化身平台。
达到的效果
-
高质量动画生成:生成高保真、富有表现力的肖像动画,适应多样化的身体比例。
-
身份一致性:在动画过程中保持人物身份的完整性,避免身份失真。
-
自然的表情与动作:实现细腻的面部表情和自然的全身动作,提升动画的真实感。
-
广泛的适用性:适用于虚拟化身、远程通信、数字媒体生成等多种应用场景。
-
优于现有方法:在定量评估和用户研究中表现优异,特别是在处理复杂解剖结构和微表情方面。
-
模块化与易集成性:便于集成到下游应用中,如实时视频编辑和个性化虚拟化身平台。
方法
SkyReels-A1框架概述
给定输入视频序列和参考肖像图像,从视频中提取表情感知的面部标志点,这些标志点作为运动描述符,用于将表情传递到肖像上。本文的方法基于DiT(扩散Transformer)的条件视频生成框架,将这些表情感知的面部标志点直接集成到输入潜在空间中。与先前的研究一致,采用了在VAE(变分自编码器)架构中构建的姿态引导机制。该组件将表情感知的面部标志点编码为DiT框架的条件输入,从而使模型能够捕捉关键的低维视觉属性,同时保持面部特征的语义完整性。
表情感知关键点
本文为肖像动画引入了一种类似的基于面部关键点的运动条件输入。精准的面部表情运动表征是实现富有表现力的肖像动画的基础,它能够捕捉人类情感和微表情的细微变化,从而显著提升动画头像的真实感和情感共鸣。目前的扩散模型方法主要在训练过程中使用 2D 面部关键点 作为运动表征,但这类方法存在关键限制:
-
2D 关键点的推理依赖性 —— 由于推理阶段仍然依赖 2D 关键点,目标表情与参考肖像之间容易出现错位,导致 表情不匹配 和 身份泄漏伪影。
-
3D 关键点提取的精度不足 —— 现有方法使用 MediaPipe 等第三方工具从视频序列中提取 3D 关键点,但这些方法往往缺乏捕捉细粒度表情细节和复杂面部动态的精度,尤其是在 非正面视角 和 极端表情 情况下。
为了解决上述问题,本文提出了 3D Facial Expressions,一个集成神经渲染模块的框架,以提升重建面部表情的精度与真实感。不同于依赖可微分渲染(differentiable rendering)的传统方法,我们用 神经渲染机制 取代这一组件,使得模型能够更高效地学习,并具备更强的泛化能力,适应多样的面部表情。该架构能够提取 高精度 3D 关键点,以更高的保真度捕捉复杂的运动细节和面部动态。借助这一优化的运动表征,本文的方法显著增强了肖像动画的真实感,同时确保 更精准的表情匹配、身份一致性和多场景适应性。
3D 关键点引导模块
为了确保驱动信号与输入视频潜在表示(latent representations) 之间的时空一致性,我们提出 时空对齐关键点引导模块(Spatio-temporal Alignment Landmark Guide Module)。该模块的核心组件是 3D 因果编码器(3D causal encoder),通过精细调优,该编码器能够更有效地捕捉驱动信号的运动表征,确保运动信号与输入视频潜在特征之间的精准对齐。
该模块通过 3D 因果编码器 直接投影 驱动信号,使其与视频潜在特征共享同一个潜在空间。这种共享表征 弥合了运动信号与生成视频帧之间的鸿沟,确保时空动态的同步性。此外,进一步的 精细调优 强化了编码器对复杂运动模式的捕捉能力,从而提升运动迁移的真实性和细节还原度。
这一方法不仅确保 精准的运动对齐,还能在生成的视频中保持 身份一致性和运动稳定性,从而实现高质量、时序稳定的肖像动画。
面部图像-文本对齐
在现有的肖像动画方法中,在改变面部表情的同时保持身份一致性仍然是一个亟待深入研究的挑战。早期的方法主要通过 跨注意力机制(cross-attention) 和 身份保持适配器(identity-preserving adapters) 来增强身份一致性。然而,我们发现此类方法不仅 训练难度较大,还 引入了大量额外参数,增加了计算开销。
受CogVideoX架构的启发,我们在表情生成过程中,通过在输入阶段拼接面部图像和视频的嵌入(embeddings)来提升身份一致性。这种方法不仅能够增强身份保持能力,还可以无缝继承预训练基础模型的能力。
为此,本文引入了一个 轻量级的可学习映射模块,该模块采用 多层感知机(MLP)P,用于将面部特征映射到文本特征空间。
其中, 是由视觉编码器Evision提取的 身份嵌入(identity embedding),该编码器基于预训练的图像-文本模型。由于 能够捕捉精细的面部特征,而视觉特征(visual)则涵盖更广泛的面部信息,并且对光照、遮挡等外部因素的敏感度较低,因此融合这两类信息能够提升生成结果中面部特征的准确性。
实验
本节首先概述了实验的实施细节,包括数据来源、数据过滤过程、基线模型以及实验中使用的基准。然后展示了与选定基线模型的对比实验结果,以验证所提出模块的有效性。
实验设置
实施细节:基于先进的视频扩散Transformer模型CogVideoX-5B进行训练,使用收集的数据集与公开数据集的组合。在多阶段训练过程中,第一阶段训练2K步,第二阶段训练2K步,最后阶段训练1K步,批量大小为512。前两个阶段的学习率设置为1e-5,最后阶段降至1e-6,使用AdamW优化器。实验在32台NVIDIA A800 GPU上进行。在推理过程中,使用DDIM采样器,并将无分类器引导的尺度设置为3。实验中使用的静态参考图像由Flux生成,并来源于Pexels。
数据集来源:训练视频片段来源于NeRSemble数据集、HDTF、DFEW、RAVDESS、Panda70M以及从互联网上收集的约1W个角色视频片段。
数据过滤:在数据预处理阶段,实施了一系列细致的过滤步骤,以确保视频-文本数据集的质量和适用性。工作流程包括三个阶段:单角色提取、运动过滤和后处理。首先,选择单角色视频,并使用现有工具清理视频内容,解决相机捕捉伪影和背景噪声等问题。然后使用MediaPipe检测的面部关键点提取头部姿态信息和嘴部标志点。通过计算头部角度和嘴部变化,筛选出具有显著面部表情和头部运动的样本。最后,基于前几步检测到的面部位置,我们将视频裁剪或填充至固定分辨率480×720,以满足模型的输入要求。从每个视频中随机选择一帧,并使用clip编码器将面部编码为嵌入向量,为模型提供必要的面部特征信息。
基线模型:为了全面评估SkyReels-A1在不同场景下的性能,将其与多个肖像动画基线模型进行比较,包括开源解决方案LivePortrait、Follow-Your-Emoji以及闭源商业产品Runway Act One。
评估指标
为了衡量肖像动画结果的泛化质量和运动准确性,本文采用了三个指标分别评估身份相似性、图像质量以及表情和头部姿态的准确性。具体来说:
-
身份保留:使用FaceSim-Arc和FaceSim-Cur分数,计算源图像与生成图像之间的余弦相似度。
-
图像质量:使用预训练网络结合FID(Fréchet Inception Distance)进行评估。
-
运动准确性:通过比较驱动帧和生成帧之间提取的面部混合形状(blendshapes)和头部姿态的L1差异,使用FaceAnalysis3和OpenPose4工具进行评估。
与基线模型的比较
定量结果:本文进行了跨身份运动传递的实验,其中参考肖像从100张野外图像中随机选择,驱动序列则来自我们的测试数据集。下表1展示了定量评估结果。本文提出的模型在生成保真度和运动精度方面均优于基于扩散和非扩散的方法。通过引入视频扩散Transformer作为先验,SkyReels-A1在图像质量上取得了显著提升,超越了现有方法(闭源商业模型Act-One除外)。
定性结果:下图4展示了肖像动画的定性比较,补充了自动化评估指标的结果。前两个示例突出了模型在驱动或源肖像存在显著姿态变化时仍能准确传递运动的鲁棒性。第三和第四个案例中,模型有效地捕捉并传递了细腻的面部表情(如嘴唇运动和眼神),同时保持了原始肖像的视觉一致性。此外,最后一个案例表明,通过集成拼接技术,模型在动画全身图像时表现出更高的稳定性,即使参考肖像的面部区域较小。
用户研究
为了进一步验证SkyReels-A1模型在运动准确性和表现力方面的优越性,进行了用户研究,招募了来自不同地理区域的20名参与者对合成视频进行评估。每位参与者回答了一系列比较问题,评估两个关键方面:运动准确性和人类相似性。评估过程中明确告知模型名称,参与者被要求选择最能准确复制驱动序列表情和运动的视频。在收集的100份反馈中,63%的参与者更倾向于选择SkyReels-A1,证实了其在保留面部表情和姿态保真度方面的增强能力优于现有基线模型。
使用
clone代码&准备环境:
git clone https://github.com/SkyworkAI/SkyReels-A1.git
cd SkyReels-A1# create env using conda
conda create -n skyreels-a1 python=3.10
conda activate skyreels-a1
下载依赖:
pip install -r requirements.txt
下载预训练weights
# !pip install -U "huggingface_hub[cli]"
huggingface-cli download SkyReels-A1 --local-dir local_path --exclude "*.git*" "README.md" "docs"
推理
执行脚本
python inference.py
如果脚本运行成功,可以得到一个输出 mp4 文件。该文件包含以下结果:视频、输入图像或视频以及生成的结果。
结论
本研究提出了 SkyReels-A1,一种基于视频扩散Transformer的创新肖像动画框架。通过融合运动与身份表征,本文的方法在细微和夸张的面部表情生成方面均实现了高保真度。通过广泛的自动评估和用户评测,我们验证了模型在不同定制场景下的鲁棒性和适应性。我们期待这些具有前景的结果能够推动肖像动画应用的发展。
参考文献
[1] SkyReels-A1: Expressive Portrait Animation in Video Diffusion Transformers
相关文章:
开启AI短剧新纪元!SkyReels-V1/A1双剑合璧!昆仑万维开源首个面向AI短剧的视频生成模型
论文链接:https://arxiv.org/abs/2502.10841 项目链接:https://skyworkai.github.io/skyreels-a1.github.io/ Demo链接:https://www.skyreels.ai/ 开源地址:https://github.com/SkyworkAI/SkyReels-A1 https://github.com/Skywork…...
mac安装环境
minconda https://docs.anaconda.net.cn/miniconda/install/ 注意在下载下来应该有100多兆,太大了应该是完整版,我们不需要 jdk 镜像网站下载设置环境变量: 终端:sudo vim ~/.zshrc # JDK Config JAVA_HOME/Library/Java/Java…...
js加密之延伸requestAnimationFrame
简言 上篇文章有提到requestAnimationFrame,只是随笔带过。这篇文章就着重研究一下requestAnimationFrame的运用,以及实际作用。还有关于在js加密技术中的落地实现可行性。 功能说明 小声说一下,做开发的同学一定要学会翻官方文档,我这里直接引用一段官方介绍。 …...
SpringBoot @Value 注解使用
Value 注解用于将配置文件中的属性值注入到Spring管理的Bean中。 1. 基本用法 Value 可以直接注入配置文件中的属性值。 配置文件 (application.properties 或 application.yml) 配置文件定义需要注入的数据。 consumer:username: lisiage: 23hobby: sing,read,sleepsubje…...
JavaFunction的使用
一、基础概念与核心方法 定义与作用 Function<T, R> 是一个函数式接口,接收类型为 T 的输入参数,返回类型为 R 的结果。其核心方法为 apply(T t)。例如,将字符串转换为整数长度: java Function<String, Integer>…...
TVbox蜂蜜影视:智能电视观影新选择,简洁界面与强大功能兼具
蜂蜜影视是一款基于猫影视开源项目 CatVodTVJarLoader 开发的智能电视软件,专为追求简洁与高效观影体验的用户设计。该软件从零开始编写,界面清爽,操作流畅,特别适合在智能电视上使用。其最大的亮点在于能够自动跳过失效的播放地址…...
Python基于交互注意力的深度时空网络融合多源信息的剩余寿命预测方法
基于交互注意力的深度时空网络融合多源信息的剩余寿命预测方法 一、方法框架设计 本方法的核心思想是通过交互注意力机制动态捕捉多源数据间的跨模态关联,并结合深度时空网络建模序列的时空退化特征。 1. 多源特征编码器 输入:传感器数据、工况参数、…...
阿里云 | 快速在网站上增加一个AI助手
创建智能体应用 如上所示,登录阿里云百炼人工智能业务控制台,创建智能体应用,智能体应用是一个agent,即提供个人或者企业的代理或中间件组件应用,对接阿里云大模型公共平台,为个人或者企业用户提供大模型应…...
基于Electron的应用程序安全测试基础 — 提取和分析.asar文件的案例研究
目录: 4.4. 案例研究 4.4.2. 情况描述 4.4.3. 信息收集 4.4.3.2. 检查隐藏目录(点目录)的可能性 4.4.3.3. 使用 DB Browser for SQLite 打开 .db 文件 4.4.3.4. 寻找加密算法 4.4.3.5. 找到加密算法 4.4.3.6. 理解加密流程 4.4.3.7. 找到“Ke…...
Vue3生命周期以及与Vue2的区别
文章目录 一、Vue3生命周期核心阶段与钩子函数二、Vue3生命周期示例:选项式 vs 组合式 API选项式 API 示例(Vue2)组合式 API 示例(Vue3) 三、Vue3与Vue2生命周期的核心差异1. 钩子函数更名2. 组合式 API 的影响3. 新增…...
windows下安装CUDA-本地微调大模型
1、查看NVIDIA的控制面板的版本号 2 下载CUDA Toolkit https://developer.nvidia.com/cuda-toolkit-archive 这里要下载和自己电脑NVIDIA适配CUDA的大版本要保持一致 选择对应的版本进行下载 文件比较大,直接右键复制链接,放到迅雷中两分钟就下好了 3 …...
LeetCode:132. 分割回文串 II(DP Java)
目录 132. 分割回文串 II 题目描述: 实现代码与解析: DP 原理思路: 132. 分割回文串 II 题目描述: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是回文串。 返回符合要求的 最少分割次数…...
C# 13与.NET 9革新及工业开发应用
摘要 微软推出的C# 13与.NET 9以“高效且智能”为导向,具备扩展类型、半自动属性、锁对象优化等十大革新。本文深入剖析新特性于工业级开发的应用场景,包含性能优化策略、AI集成方案以及EF Core实战技巧,为开发者提供从理论到实践的完整指引…...
IPoIB源码深度解析:如何基于TCP/IP协议栈实现高性能InfiniBand通信
一、IPoIB的核心设计理念 IPoIB(IP over InfiniBand)是一种在InfiniBand网络上承载IP流量的技术,其核心目标是在不修改上层应用的前提下,利用InfiniBand的高带宽和低延迟特性。与自定义协议栈不同,IPoIB通过深度集成到Linux内核TCP/IP协议栈中,将InfiniBand设备抽象为标…...
《白帽子讲 Web 安全:点击劫持》
目录 摘要: 一、点击劫持概述 二、点击劫持的实现示例:诱导用户收藏指定淘宝商品 案例 构建恶意页面: 设置绝对定位和z - index: 控制透明度: 三、其他相关攻击技术 3.1图片覆盖攻击与 XSIO 3.2拖拽劫持与数据…...
PostgreSQL10 逻辑复制实战:构建高可用数据同步架构!
PostgreSQL10 逻辑复制实战:打造高可用数据同步架构! 概述 PostgreSQL 10 引入了逻辑复制(Logical Replication),为数据库高可用和数据同步提供了更灵活的选择。PostgreSQL 复制机制主要分为物理复制和逻辑复制两种&…...
Spring Boot 异步编程深入剖析
Spring Boot 异步编程深入剖析 1. 异步方法的使用 原理深度解析 Spring Boot 的异步方法基于 Spring 的 AOP(面向切面编程)实现。当在方法上添加 Async 注解时,Spring 会为该方法所在的类创建一个代理对象。当调用该异步方法时,…...
《动手学习深度学习》的笔记,将会持续更新。
1.什么是机器学习? 机器学习是:换句话说,我们用数据训练(train)模型。 数据不断的训练出比较好的模型。 1.2 机器学习的关键零件 1.学习的数据。 2. 如何转换数据的模型。 3.一个目标函数。 4.调整模型参数以优化目标函数的算法。 1,数据有什么组成? 数据=样本+…...
[STM32]从零开始的STM32 BSRR、BRR、ODR寄存器讲解
一、前言 学习STM32一阵子以后,相信大家对STM32 GPIO的控制也有一定的了解了。之前在STM32 LED的教程中也教了大家如何使用寄存器以及库函数控制STM32的引脚从而点亮一个LED,之前的寄存器只是作为一个引入,并没有深层次的讲解,在教…...
VUE3+Vite使用TailwindCSS【若依前后端分离框架】
参考:https://tailwind.nodejs.cn/docs/guides/vite#vue 和 https://blog.csdn.net/hjl_and_djj/article/details/144694485依次运行命令: cnpm install -D tailwindcss3.4.17 postcss autoprefixernpx tailwindcss init -p修改配置文件tailwind.config.…...
【Linux文件IO】系统IO详情
目录 一、前言 二、相关API介绍 2.1 open 2.2 read 2.3 write 2.4 lseek 2.5 close 三、简单示例 3.1 示例1 3.2 示例2 一、前言 在 Linux 系统编程中,系统 I/O(又称低级 I/O)是直接通过操作系统提供的系统调用实现的文件操作接口…...
【弹性计算】弹性裸金属服务器和神龙虚拟化(三):弹性裸金属技术
弹性裸金属服务器和神龙虚拟化(三):弹性裸金属技术 1.弹性裸金属技术背景1.1 传统 KVM 虚拟化系统导致 CPU 计算特性损失1.2 传统 KVM 虚拟化系统导致资源争抢不可避免1.3 传统 KVM 虚拟化系统导致 I/O 性能瓶颈 2.弹性裸金属技术实现2.1 VPC…...
(贪心 合并区间)leetcode 56
思路来源:代码随想录--代码随想录_合并区间题解 首先用lambda 按照左界值升序排序 建立答案的二维数组,将第一个行区间放入,判断从第二行开始 第i行的左区间一定大于第i-1行的左区间(排序过了),所以只判断…...
如何理解语言模型
统计语言模型 先看语言模型,语言即自然语言,模型及我们要解决的某个任务。 任务一:判断哪句话出现的概率大 任务二:预判空缺的位置最有可能是哪个词 再看统计,统计即解决上述两个任务的解决方法。先对语句进行分词…...
动态规划/贪心算法
一、动态规划 动态规划 是一种用于解决优化问题的算法设计技术,尤其适用于具有重叠子问题和最优子结构性质的问题。它通过将复杂问题分解为更简单的子问题,并保存这些子问题的解以避免重复计算,从而提高效率。 动态规划的核心思想 最优子结…...
Hadoop简介
1. Hadoop简介 官网:http://hadoop.apache.org 1.1 Hadoop架构 Hadoop由三个模块组成:分布式存储HDFS、分布式计算MapReduce、资源调度引擎YARN 1.2 Hadoop历史 Hadoop作者Doug Cutting Apache Lucene是一个文本搜索系统库 Apache Nutch作为前者的一部…...
Vscode 便用快捷键设置教程
文章目录 简介:1. go to define (跳转到函数定义的位置)2. go to declaration (跳转到函数声明的位置)3. move line (上下移动本行代码)3.1上下复制本行代码 4. 前进和后退(就是前进到光标上一次停留的位置,和后退到那…...
数据库(MySQL):使用命令从零开始在Navicat创建一个数据库及其数据表(一).创建基础表
一. 使用工具和命令 1.1 使用的工具 Navicat Premium 17 :“Navicat”是一套可创建多个连接的数据库管理工具。 MySQL版本8.0.39 。 1.2 使用的命令 Navicat中使用的命令 命令 命令解释 SHOW DATABASES; 展示所有的数据库 CREATE DATABASE 数据…...
水滴tabbar canvas实现思路
废话不多说之间看效果图,只要解决了这个效果水滴tabbar就能做出来了 源码地址 一、核心实现步骤分解 布局结构搭建 使用 作为绘制容器 设置 width=600, height=200 基础尺寸 通过 JS 动态计算实际尺寸(适配高清屏) function initCanvas() {// 获取设备像素比(解决 Re…...
windows安装vue
1、下载nodejs安装包 https://nodejs.cn/download/ 2、安装node 中途记得可以自己改安装路径,其他都是下一步 3、安装完成后检查 node -v :查看nodejs的版本 npm -v :查看npm的版本 4、修改npm默认安装目录与缓存日志目录的位置 在nodejs目…...
使用3090显卡部署Wan2.1生成视频
layout: post title: 使用3090显卡部署Wan2.1生成视频 catalog: true tag: [Kubernetes, GPU, AI] 使用3090显卡部署Wan2.1生成视频 1. 环境说明2. 模型下载3. 克隆仓库4. 安装依赖5. 生成视频 5.1. 使用generate脚本生成5.2. 使用gradio启动UI界面生成 5.2.1. 启动gradio服务5…...
DCN讲解
DCN是DeepFM的升级版,后者是只能做二阶交叉特征,随着阶数上升,模型复杂度大幅提高,且FM网络层较浅,表达能力有限。google团队通过构建深度交叉网络来自动进行特征的高阶交叉,且时空复杂度均为线性增长&…...
ARM 架构下 cache 一致性问题整理
本篇文章主要整理 ARM 架构下,和 Cache 一致性相关的一些知识。 本文假设读者具备一定的计算机体系结构和 Cache 相关基础知识,适合有相关背景的读者阅读 1、引言 简单介绍一下 Cache 和内存之间的关系 在使能 Cache 的情况下,CPU 每次获取数…...
算法-二分查找
二分查找 其实二分查找是一个很简单理解的东西,从他的名字就可以看出,就是要分为两段去查找一个元素 我们确定一个中间元素,然后将这一个元素和左边的部分和右边的部分做对比 然后根据实际情况来选择一个部分来继续做这么一个步骤 直到找…...
Python Cookbook-2.24 在 Mac OSX平台上统计PDF文档的页数
任务 你的计算机运行着比较新的MacOSX系统(10.3的“Panther”或更新的版本),现在需要知道一个 PDF 文档的页数。 解决方案 PDF格式和 Python都已经集成到了Mac OsX系统中(10.3或更高版本),因而这个问题解决起来也相对比较容易: #!/usr/bin python im…...
【MySQL】索引(页目录、B+树)
文章目录 1. 引入索引2. MySQL与磁盘交互的基本单位3. 索引的理解3.1 页目录3.2 B树 4. 聚簇索引、非聚簇索引5. 索引的操作5.1 索引的创建5.1.1 创建主键索引5.1.2 创建唯一索引5.1.3 普通索引的创建5.1.4 全文索引的创建 5.2 索引的查询5.3 删除索引 1. 引入索引 索引&#…...
工业AR眼镜的‘芯’动力:FPC让制造更智能【新立电子】
随着增强现实(AR)技术的快速发展,工业AR智能眼镜也正逐步成为制造业领域的重要工具。它不仅为现场工作人员提供了视觉辅助,还极大地提升了远程协助的效率、优化了仓储管理。FPC在AI眼镜中的应用,为工业AR智能眼镜提供了…...
开启mysql的binlog日志
mysql版本5.7 1.查看是否开启bin_log show global variables like’log_bin’; off的话需要先开启 在mysql的文件夹目录中找到my.ini 加一行log-bin“C:/ProgramData/MySQL/MySQL Server 5.7/logs/log-bin” 并提前创建好目录 2.数据库会把日志放进logs目录中 3.查看log日…...
SpringSecurity基于JWT实现Token的处理
前面介绍了手写单点登录和JWT的应用,本文结合SpringSecurity来介绍下在SpringBoot项目中基于SpringSecurity作为认证授权框架的情况下如何整合JWT来实现Token的处理。 一、认证思路分析 SpringSecurity主要是通过过滤器来实现功能的!我们要找到SpringSecurity实现认证和校验…...
数据结构与算法-图论-最短路-floyd扩展
floyd和它的拓展: 在计算机科学领域,Floyd通常指Floyd Warshall算法,由罗伯特弗洛伊德(Robert W. Floyd)提出,这是一种用于在加权有向图中查找所有顶点对之间最短路径的算法。 算法原理 Floyd Warsha…...
c++中所有构造函数的介绍与使用
C 中,构造函数是一种特殊的成员函数,用于在创建对象时对对象进行初始化。C 中有多种类型的构造函数,下面详细介绍这些构造函数及其特点和使用场景。 1. 默认构造函数 定义:默认构造函数是指在没有提供任何参数的情况下可以被调用…...
力扣1584. 连接所有点的最小费用
力扣1584. 连接所有点的最小费用 题目 题目解析及思路 题目要求返回最小生成树 最小生成树模版题 法一:prim 主要思想是每次找离树最近的顶点,将其加入树种,并更新其他所有点到该点的距离 代码 class Solution { public:int minCostCo…...
FPGA开发,使用Deepseek V3还是R1(8):FPGA的全流程(简略版)
以下都是Deepseek生成的答案 FPGA开发,使用Deepseek V3还是R1(1):应用场景 FPGA开发,使用Deepseek V3还是R1(2):V3和R1的区别 FPGA开发,使用Deepseek V3还是R1&#x…...
处理大数据的架构模式:Lambda 架构 和 Kappa 架构
Lambda 架构 和 Kappa 架构 是两种用于处理大数据的架构模式,尤其在实时数据处理场景中广泛应用。 1. Lambda 架构 核心思想 Lambda 架构将数据处理分为两条独立的流水线: 批处理层(Batch Layer): 处理全量数据&…...
Docker网络模式实战
docker的镜像是令人称道的地方,但网络功能还是相对薄弱的部分 docker安装后会自动创建3种网络:bridge、host、none docker原生bridge网路 docker安装时会创建一个名为 docker0 的Linux bridge,新建的容器会自动桥接到这个接口 docker安装时…...
Linux网络基础(协议 TCP/IP 网络传输基本流程 IP VS Mac Socket编程UDP)
文章目录 一.前言二.协议协议分层分层的好处 OSI七层模型TCP/IP五层(或四层)模型为什么要有TCP/IP协议TCP/IP协议与操作系统的关系(宏观上是如何实现的)什么是协议 三.网络传输基本流程局域网(以太网为例)通信原理MAC地址令牌环网 封装与解包分用 四.IP地址IP VS Mac地址 五.So…...
MFC: 控件根据文本内容大小自动调整
背景: 针对不同语言下,控件显示不全的现象; 例如: 现象1:中文下显示全部信息,英语下只能显示部分文字 现象2:中文下显示不全## 实现思路: 控件绑定按钮计算控件文本长度根据文本长…...
记一次线上Tomcat服务内存溢出的问题处理
背景:JavaWeb项目部署在Tomcat服务器上,服务器用的Windows。 问题表现:系统出现偶发性无法访问(隔几天就会在早上无法访问) Tomcat的日志catalina中,有如下报错信息。 java.lang.OutOfMemoryError: GC ov…...
go设计模式
刘:https://www.bilibili.com/video/BV1kG411g7h4 https://www.bilibili.com/video/BV1jyreYKE8z 1. 单例模式 2. 简单工厂模式 代码逻辑: 原始:业务逻辑层 —> 基础类模块工厂:业务逻辑层 —> 工厂模块 —> 基础类模块…...
通往 AI 之路:Python 机器学习入门-语法基础
第一章 Python 语法基础 Python 是一种简单易学的编程语言,广泛用于数据分析、机器学习和人工智能领域。在学习机器学习之前,我们需要先掌握 Python 的基本语法。本章将介绍 Python 的变量与数据类型、条件语句、循环、函数以及文件操作,帮助…...