ComfyUI:Stable Diffusion 及 LoRA、VAE 、ControlNet模型解析

news2025/2/26 17:46:43

目录

Stable Diffusion流程

扩散过程

去噪过程

checkpoints

LoRA

LoRA 位置与结构

LoRA 层与原层的关系

LoRA 层的参数拆解

VAE

训练特定 VAE 时更新的参数部分

ControlNet

ControlNet 位置与结构

ControlNet 的训练过程

ControlNet 的参数处理与信息融合

ControlNet 在推理时的应用

Embeddings(Textual Inversion)是什么?

什么是Hypernetwork(超网络)?


这张图展示了 Stable Diffusion 模型结构及其组件,以下介绍其流程步骤和各模块名称:

Stable Diffusion流程

Stable Diffusion 模型的生成过程(也包括整个训练过程)主要由扩散过程和去噪过程组成,以下结合图和相关模块为你详细介绍:

扩散过程

  1. 图像编码(VAE 部分):在实际应用场景中,若有真实图像作为输入(图中左侧粉色区域 “Pixel Space” 中的图像x ),会先经过 VAE 中的编码器(图中左侧粉色框中的\varepsilon)。VAE 编码器将像素空间中的图像x编码成低维的潜在表示 ,随后进入潜在空间z(Latent Space,图中绿色背景的区域 )。这一步相当于把复杂的图像信息压缩提炼成关键特征要点。
  2. 噪声逐步添加:在潜在空间中,Scheduler(调度器,图下方蓝色框标注部分,包含 DDIM、DDPM 等算法 )发挥作用,按照既定规则对潜在表示z逐步添加噪声。随着操作步骤的推进,潜在表示逐渐转变为高度噪声化的潜在表示z_T ,该过程即为扩散过程(图中标注 “Diffusion Process” 的箭头走向 )。在此过程中,原本图像的信息被噪声逐步干扰、打乱,潜在表示越来越趋近于纯粹的噪声状态。

去噪过程

  1. 文本编码:输入的文本提示词进入 CLIP text encoder(文本编码器,图中最右侧蓝色模块 )。文本编码器对文本进行处理,将其转换为语义特征表示(对应图中右侧 “Conditioning” 区域绿色框中的内容 ),这些语义特征后续将用于指导图像生成,为模型提供 “创作方向”。
  2. UNET 处理:高度噪声化的潜在表示z_T进入 UNET(去噪 U-Net\epsilon_\theta ,图中间绿色背景包含 QKV 模块的部分 )。UNET 内部利用多头注意力机制(QKV,即 Query、Key、Value )对噪声化的潜在表示进行处理。同时,CLIP text encoder 输出的语义特征(对应 “Conditioning” 中的信息 )也会参与进来,进行交叉注意力(crossattention)计算,帮助模型理解文本提示与图像特征之间的关联。
  3. 结构辅助去噪:UNET 借助跳跃连接(skip connection)等结构,将不同层次的特征进行融合,逐步去除潜在表示中的噪声。在这个过程中,模型不断尝试恢复图像原本的特征信息,使潜在表示从高度噪声化状态逐渐还原为较为清晰的潜在表示z
  4. 图像解码(VAE 部分):去噪后的潜在表示z进入 VAE 中的解码器(图中左侧粉色框中的D )。VAE 解码器将潜在表示转换回像素空间,把之前提炼并经过去噪处理的要点 “还原” 成复杂的图像{\tilde{x}} ,即最终生成的图像。
  5. 控制生成过程
    • Scheduler 作用:Scheduler 持续控制着整个去噪过程中噪声去除的节奏和方式,确保去噪过程稳定且合理地进行。
    • CFG 作用:CFG(Classifier-Free Guidance,无分类器引导,图中单独蓝色框标注 )通过特殊的计算方式,增强生成图像与输入文本提示的一致性,提升生成图像的质量,使图像更好地符合文本描述的要求。

了解 Stable Diffusion 图像生成核心机制后,在 ComfyUI 工具中,模型的多样性拓宽了创作边界。Liblib 提供的 checkpoints、lora 等多种模型,基于 Stable Diffusion 架构,作用各异。下面就探究它们的原理,以及与 Stable Diffusion 的协作方式 


主要包括checkpoints,lora,ControlNet,VAE(在搜索框搜索即可),Embeddings(Textual Inversion),Hypernetwork。

checkpoints

对于checkpoints,就是训练整个stable diffusion模型,包括扩散过程和去噪过程,以及对应的vae编码器,解码器,(通常情况下,训练一个checkpoints模型,至少是要训练出一个在某一个方面全面的模型出来,就好比训练出一个在某一个领域内什么会的人,如果只是训练出会一个单一技能的人,那从实现上LoRA没有区别。)

其中具体损失:是计算去噪网络预测的噪声与实际添加到潜在表示中的噪声之间的差异作为损失。例如,在某一个去噪步骤中,模型预测当前潜在表示中的噪声,然后与该步骤实际添加的噪声对比,通过反向传播更新 UNet 等相关模块的参数,让模型不断优化去噪的能力,以便能在给定文本语义信息的情况下,生成符合要求的图像。

LoRA

对于LoRA,可以形象的描述为:假设我们已经训练出一个多功能的机器人厨师(叫Checkpoints),它可以做出各种基本的菜肴。但是,如果你想让这个机器人厨师做出一些特别的、有特定风味的菜肴,比如意大利的披萨或者中国的饺子,你就需要给它一些额外的“食谱”。

  • Stable Diffusion Stable Diffusion 就像是这个多功能的机器人厨师,它可以根据不同的食材(描述)做出各种各样的菜肴(图片)。它非常擅长理解你的要求,并创造出符合你描述的美味佳肴。
  • LoRA 模型 LoRA 模型就像是给这个机器人厨师提供的额外“食谱”。这些“食谱”可以帮助机器人厨师学会制作一些特别的菜肴,让它的烹饪技巧更加丰富。

LoRA 位置与结构

从 Stable Diffusion 模型结构图来看,LoRA 主要作用于 UNET 模块(图中间绿色区域) 。在训练特定 LoRA 模型时,更新的参数集中在 UNET 的特定部分。具体而言,通常会在 UNET 的多头注意力机制(QKV,即 Query、Key、Value)相关模块添加 LoRA 层。原始 UNET 的大部分参数会被冻结,仅 LoRA 层的参数参与训练。

LoRA 层与原层的关系

LoRA 层与原模型中的多头注意力机制相关模块是并行关系(如下图所示蓝色为原始的,橙色部分为增加的LoRA层)。当添加 LoRA 层后,原始的注意力计算路径保持不变,LoRA 层作为新的并行路径融入其中。这种设计最大的优势在于,无需改变原模型整体架构,就能通过训练 LoRA 层对模型进行微调,大幅减少训练所需的参数数量。

LoRA 层的参数拆解

LoRA 的核心在于对参数的独特处理。其核心思想是将原本需要更新的模型参数变化量(如多头注意力机制中的权重矩阵W的变化矩阵\bigtriangleup W),拆解为两个低秩矩阵AB的乘积,即\bigtriangleup W=BA 。并且,AB的秩远小于原矩阵W的维度。在训练过程中,只对这两个低秩矩阵进行更新训练,而原模型的大部分参数保持不变。通过这种低秩分解方式,LoRA 能以较少的计算资源和内存消耗,有效微调模型,使其适配特定任务或数据集,比如依据大量特定人物照片,训练出符合该人物特征的 LoRA 模型。

经过训练得到的 LoRA 模型,本质是一组经过优化的低秩矩阵参数集合。在推理阶段,将 LoRA 模型与 Stable Diffusion 模型拼接使用时,LoRA 层会依据输入的文本提示等信息,利用训练好的参数,对 UNET 模块的计算过程进行调整,让 UNET 在处理潜在图像表示和结合文本语义信息时,能生成契合特定需求的图像,实现对 Stable Diffusion 模型生成效果的优化与拓展。

VAE

VAE(Variational AutoEncoder)变分自编码器是一种重要的生成模型。想象一下,VAE就像一个非常聪明的画家:

  1. 编码器(Encoder): 首先,这个画家会仔细观察一幅画,并把画中的关键特征记在脑子里。这就像是把复杂的画压缩成简单的要点。

  2. 潜在空间(Latent Space): 画家脑子里记下的这些要点,就形成了一个想象空间。在这个空间里,画家可以自由组合这些特征。

  3. 解码器(Decoder): 然后,画家就可以根据脑子里的这些要点,重新画出一幅相似但又不完全一样的画。这就像是把简单的要点又还原成复杂的画作。

训练特定 VAE 时更新的参数部分

  • VAE 编码器与解码器:在训练特定的 VAE 时,主要更新的是 VAE 模块(图中左侧粉色区域)中的编码器(\varepsilon)和解码器(D)的参数。编码器负责将像素空间的图像转换为潜在空间的表示,解码器则是将潜在空间的表示还原为像素空间的图像。通过训练,调整这些参数可以让 VAE 更好地学习数据集中图像的特征分布,例如在处理特定风格或类型的图像(如大量美女照片数据集)时,能够更精准地进行编码和解码,提升图像重建或生成的质量。(虽然更新参数上,编码器和解码器都更新了,但在实际用途上,图生成只用到了解码器)
  • 潜在空间相关参数:虽然潜在空间本身不是具体的参数,但在 VAE 训练过程中,与潜在空间分布建模相关的参数也会被更新。比如,为了使潜在空间中的向量具有良好的统计特性(如近似高斯分布),相关的变分参数会在训练中不断优化,以便生成更具多样性和合理性的图像。

当我们将单独训练好的 VAE 解码器应用到其他的 checkpoints 模型上时,会带来一系列有趣的效果。以人的图像生成为例,不同的 VAE 解码器对潜在空间表示的理解和转换方式存在差异,这会直接影响到最终生成的人物图像的质量和特征。

一方面,更换后的 VAE 解码器可能会提升图像的细节表现。比如,原本的 checkpoints 模型生成的人物图像在面部细节上可能不够清晰,而新的 VAE 解码器经过针对性训练后,能够更准确地还原潜在空间中的面部特征信息,使得生成的人物面部更加细腻、真实,如眼睛的纹理、皮肤的质感等都能得到显著改善。

另一方面,VAE 解码器的更换还可能改变图像的风格倾向。由于不同的 VAE 在训练过程中学习到了不同的图像特征分布,新的解码器可能会使生成的人物图像带有特定的风格特点。例如,某个 VAE 解码器在训练时使用了大量具有复古风格的人物图像数据集,那么当将其应用到其他 checkpoints 模型上时,生成的人物图像可能会呈现出复古的色调、服饰风格等,为图像增添独特的艺术氛围。

然而,更换 VAE 解码器也并非总是带来积极的效果。如果新的 VAE 解码器与原 checkpoints 模型的潜在空间表示不匹配,可能会导致生成的图像出现失真、扭曲等问题。比如,生成的人物身体比例失调,或者面部特征出现奇怪的变形。这是因为不同的模型在对潜在空间的编码和解码过程中,对特征的理解和映射方式存在差异,如果不进行合理的适配,就会影响图像生成的质量。

ControlNet

在 VAE 中编码器提取关键特征,而 ControlNet 接收额外的控制条件信息 ,比如输入的边缘图、人体姿态图、深度图等。这就如同一位画家在作画前,除了观察画面本身,还额外获取了一些特定的指引信息,像画面中物体的轮廓线条要求,人物的动作姿态设定等。这些控制条件信息就相当于 ControlNet 的 “输入特征”,它对这些信息进行分析和处理,提取其中关键的结构、语义等特征,为后续生成过程提供方向指引,这类似于 VAE 编码器的特征提取环节。

ControlNet 位置与结构

ControlNet 是在原 Stable Diffusion 模型基础上插入的一个额外神经网络结构。在 Stable Diffusion 模型中,它主要与 UNet(去噪网络)的中间层进行交互,同时也会间接地与 CLIP text encoder(文本编码器)协同工作。具体来说,在 UNet 处理潜在图像表示的过程中,ControlNet 会适时地插入额外的控制信号,成为图像生成过程中的 “调控器”。

内部改造细节如下图:

ControlNet 的训练过程

  1. 冻结原模型参数:在使用 ControlNet 进行训练时,原 Stable Diffusion 模型(包含 UNet、CLIP text encoder 等关键组件)的大部分参数会被冻结。这一操作保留了原模型在大量数据训练后所学到的丰富语义理解能力和图像生成的通用能力,例如对各种物体、场景、风格的基础认知。这样,原模型的核心知识储备得以保留,为后续的图像生成提供了坚实的基础。
  2. 更新自身参数:ControlNet 自身拥有独立的网络结构,包含卷积层、残差连接等组件。在训练过程中,主要更新的是 ControlNet 内部的这些参数。ControlNet 通过学习如何依据输入的控制条件(如边缘图、姿态图等)来调整原模型的生成过程,就像为原模型配备了一个专注于特定任务的 “助手”,这个 “助手” 在不改变原模型主体知识储备的前提下,学习如何利用外部控制条件来优化图像生成。

ControlNet 的参数处理与信息融合

  1. 控制条件特征提取:ControlNet 首先对输入的控制条件进行特征提取。例如,从姿态图中提取人体关节位置、动作走向等关键特征,从边缘图中提取物体的轮廓信息等。这些提取出来的特征代表了新的信息要求,是引导图像生成的重要依据。
  2. 与原模型特征融合:ControlNet 将提取的控制条件特征与 Stable Diffusion 原模型中 UNet 等模块在处理图像生成时的中间层特征进行深度融合。这种融合并非简单地分割原模型的学习内容,而是在原模型处理信息的流程中巧妙地加入新的控制信号。通过这种方式,ControlNet 引导原模型生成符合控制条件的图像,实现了新信息与原模型知识的有机整合。

ControlNet 在推理时的应用

在模型推理阶段,当输入文本提示和控制条件(如边缘图、姿态图等)后,ControlNet 会依据训练好的参数,对 UNet 的中间层特征传播和计算进行实时调整。它会平衡文本提示所传达的语义信息和额外控制条件,使得生成的图像既满足文本描述,又符合控制信号限定的条件。例如,当文本提示为 “一个在公园散步的人”,同时输入了特定的人物姿态控制图时,ControlNet 会协调 UNet 和 CLIP text encoder,确保生成的图像中人物的姿态符合姿态图的要求,同时人物所处的场景和整体氛围也与文本描述相符。

在 Stable Diffusion 模型体系中,ControlNet 主要训练和作用于以下部分:

  • 中间层特征交互:ControlNet 与 UNet (去噪网络)中间层进行交互并训练。它在 UNet 处理潜在图像表示的过程中,插入额外的控制信号。比如在图像生成的去噪过程中,ControlNet 会依据输入的控制条件(如边缘图、姿态图等),调整 UNet 中间层的特征传播和计算,使得生成过程能按照指定条件进行。
  • 添加额外网络结构:ControlNet 自身是一个额外的神经网络结构,训练时主要更新自身网络中的参数。该网络会学习如何将输入的控制信号与 UNet 的特征有效融合,比如通过卷积层、残差连接等操作对控制信号进行处理,再与 UNet 的特征图进行拼接或其他运算,引导生成符合特定结构或语义要求的图像。
  • 与文本编码器协同:虽然 ControlNet 主要和 UNet 交互紧密,但也会间接地与 CLIP text encoder(文本编码器)协同。在训练中,它要学会平衡文本提示所传达的语义信息和额外控制条件,使得生成图像既满足文本描述,又符合控制信号限定的条件,比如根据文本 “一个在公园散步的人” 以及输入的人物姿态控制图,生成对应的图像。


LoRA,VAE和ControlNet之前的区别,结构位置这里就不做说明了

模型名称实际生成效果用法
VAE(变分自编码器)1. 主要作用于图像的编码和解码,在图像重建和生成中,学习数据集中图像的特征分布,生成的图像具有一定的通用性和多样性,比如可以生成符合训练数据集中风格和特征的图像。
2. 单独使用 VAE 解码器时,可将潜在空间表示转换为图像,能影响图像的细节、风格倾向等,如更换训练好的 VAE 解码器可能提升图像细节或改变风格,但不匹配时也会导致图像失真
1. 训练时更新编码器和解码器参数,以及与潜在空间分布建模相关的变分参数,以优化对图像特征分布的学习。
2. 图像生成时,若已有潜在表示,可直接使用解码器生成图像,常用于将潜在空间中的向量转换为实际图像
LoRA(低秩适应)1. 对特定任务或数据集进行微调,如基于特定人物照片数据集训练后,能生成符合该人物特征的图像,使生成图像更贴合特定风格或主题。
2. 增强生成图像与特定输入(如特定文本提示)的相关性,在不改变原模型整体架构的基础上,通过少量参数调整提升生成效果
1. 训练时冻结原 UNet 大部分参数,仅更新 LoRA 层的参数,学习低秩矩阵来调整 UNet 相关模块参数。
2. 推理时,LoRA 层依据输入信息,利用训练好的参数调整 UNet 计算过程,优化生成图像
ControlNet1. 通过输入额外的控制条件(如边缘图、姿态图、深度图等),精确控制图像生成过程,生成的图像能严格按照控制条件的要求呈现特定结构或语义,如根据姿态图生成人物姿态一致的图像。
2. 平衡文本提示和控制条件,使生成图像既符合文本描述又满足控制条件限定,提升图像生成的可控性和准确性
1. 训练时冻结原 Stable Diffusion 模型大部分参数,更新 ControlNet 自身网络(包含卷积层、残差连接等)的参数,学习如何融合控制信号与 UNet 特征。
2. 推理时,输入文本提示和控制条件,ControlNet 根据训练好的参数调整 UNet 中间层特征传播和计算,生成符合要求的图像

Embeddings(Textual Inversion)是什么?

Embeddings(Textual Inversion)模型,通常在模型站上,我们可以看到embedding模型,它能够输出特定的风格。例如,它可以生成平面风格的图像,或者使画面中的人物具备某些特征,甚至让整个画面呈现特定的艺术风格。此外,embedding模型的体积通常很小,只有几KB。 你可以把它简单理解为一个提示词(prompt)的压缩包,原本你需要很复杂的文本描述才可以达到的效果,通过 Embedding 模型都可以轻易做到,再加上他的体积很小,所以使用起来非常方便

Embeddings(Textual Inversion)模型的作用主要是 用于在图像中嵌入特定的元素特征,如画面风格、人物特点、场景特征等,从而让模型生成符合这些特征的图像。

模型类型LoRA 模型训练Checkpoint 大模型训练Embeddings 嵌入式训练
版本及大小1.5 & SDXL:100 - 400MB
FLUX:600MB
1.5:1.99 - 6GB
SDXL:大于 6GB
FLUX:11GB / 22GB
1.5& SDXL:0 - 50KB,且模型数量越来越少
训练数据量及时长30 - 50 张图,3000 步大约 10 - 20 分钟300 - 500 张图,训练时长为 1 小时或一天上万步,大约 1 小时
显存要求(支持多显卡)显存 > 8GB1.5&XL:显存 > 12GB
FLUX:显存 > 16GB
显存 > 10GB

什么是Hypernetwork(超网络)?

Hypernetwork(超网络),就像是一个有特殊能力的助手,它可以帮助其他的神经网络变得更聪明。想象一下,你有一支足球队,每个球员都有自己的位置和技能。现在,如果有一个教练,他可以根据比赛的需要,临时给球员们一些额外的技能或建议,让球队表现得更好。Hypernetwork(超网络)在这个比喻中,就扮演了那个教练的角色。

  1. 调整参数:Hypernetwork(超网络)会在原有的扩散模型基础上,新建一个神经网络来调整模型的参数。这就像是给足球队的每个球员一些特殊的训练,让他们在比赛中表现得更出色。
  2. 效果类似:Hypernetwork(超网络)在效果上和Lora相似,都像是给球队的教练,帮助球队提升表现。
  3. 训练难度:Hypernetwork(超网络)的训练难度比较大,就像是找到一个能够即兴给球员们提供完美建议的教练非常难。
  4. 应用范围:由于训练难度大,Hypernetwork(超网络)的应用范围比较小,这就像是这种完美的教练很难找到,所以不是所有的球队都能用上。
  5. 逐渐被替代:因为这些原因,Hypernetwork(超网络)逐渐被Lora替代,Lora就像是一个更常见、更容易找到的教练,虽然可能不是最完美的,但是更容易训练,也更普及。

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

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

相关文章

微信小程序:多菜单栏设计效果

一、实现效果 二、代码 wxml 编辑前端界面,步骤 菜单逻辑: 逐步取出数组中的项,首先取出顶部菜单项,然后选中后取出选中的底部数据(左侧菜单+右侧内容),然后点击左侧菜单取出选中的左侧菜单对应的右侧内容 ①这里我的数据是全部封装到一个数组对象的,首先我的循环…

【Linux Oracle】time命令+oracle exp压缩

Linux && Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.说明 Linux中的time命令:主要用于测量命令的执行时间,并显示该命令在执行过程中所使用的系统资源情况,如CPU时间、内存和…

20分钟 Bash 上手指南

文章目录 bash 概念与学习目的第一个 bash 脚本bash 语法变量的使用位置参数管道符号(过滤条件)重定向符号条件测试命令条件语句case 条件分支Arrayfor 循环函数exit 关键字 bash 脚本记录历史命令查询文件分发内容 bash 概念与学习目的 bash&#xff0…

【虚拟仪器技术】labview操作指南和虚拟仪器技术习题答案(一)

今天是2025年2月24日,画的是fate/Grand Order里面的阿尔托莉雅.卡斯特,武内老师的画。 目录 第1章 第2章 第3章 第4章 第5章 关注作者了解更多 我的其他CSDN专栏 毕业设计 求职面试 大学英语 过程控制系统 工程测试技术 虚拟仪器技术 可编程…

LabVIEW电能质量分析软件

随着电力系统的复杂性增加,电能质量问题日益突出,传统的电能质量检测装置多采用DSP技术,不仅开发周期长、功能单一,而且在多功能集成方面存在局限性。基于LabVIEW虚拟仪器开发平台的电能质量分析软件利用FFT、STFT、WT、HHT等多种…

视频裂变加群推广分享引流源码

源码介绍 视频裂变加群推广分享引流源码 最近网上很火,很多人都在用,适合引流裂变推广 测试环境:PHP7.4(PHP版本不限制) 第一次访问送五次观看次数,用户达到观看次数后需要分享给好友或者群,好友必须点击推广链接后才会增加观看次…

项目一 - 任务3:搭建Java集成开发环境IntelliJ IDEA

通过本次实战,我们成功搭建了Java集成开发环境IntelliJ IDEA,并完成了多个任务。首先,安装了IntelliJ IDEA并进行了个性化设置,如选择主题、调整字体和编码等。接着,创建了Java项目、包和类,编写并运行了简…

RoCBert:具有多模态对比预训练的健壮中文BERT

摘要 大规模预训练语言模型在自然语言处理(NLP)任务上取得了最新的最优结果(SOTA)。然而,这些模型容易受到对抗攻击的影响,尤其是对于表意文字语言(如中文)。 在本研究中&#xff0…

DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库

项目地址:https://github.com/deepseek-ai/DeepEP 开源日历:2025-02-24起 每日9AM(北京时间)更新,持续五天 (2/5)! ​ ​ 引言 在大模型训练中,混合专家模型(Mixture-of-Experts, MoE)因其动…

六十天前端强化训练之第二天CSS选择器与盒模型深度解析

欢迎来到编程星辰海的博客讲解 目录 一、CSS 核心概念 1. 三种引入方式 2. CSS 注释 3. 常见单位系统 二、CSS选择器核心知识 1. 基础选择器类型 2. 组合选择器 3. 伪类选择器(部分示例) 4. 优先级计算规则 三、盒模型深度解析 1. 标准盒模型图…

分享httprunner 结合django实现平台接口自动化方案

说明,可以直接在某个视图集定义自定义接口来验证。 调试1:前端界面直接编写yaml文件. 新增要实现存数据到mysql,同时存文件到testcase下, 如test.yaml 更新yaml数据,同时做到更新 testcase下的文件,如test.yaml acti…

本地大模型编程实战(22)用langchain实现基于SQL数据构建问答系统(1)

使 LLM(大语言模型) 系统能够查询结构化数据与非结构化文本数据在性质上可能不同。后者通常生成可在向量数据库中搜索的文本,而结构化数据的方法通常是让 LLM 编写和执行 DSL(例如 SQL)中的查询。 我们将演练在使用基于 langchain 链 &#x…

速通HTML

目录 HTML基础 1.快捷键 2.标签 HTML进阶 1.列表 a.无序列表 b.有序列表 c.定义列表 2.表格 a.内容 b.合并单元格 3.表单 a.input标签 b.单选框 c.上传文件 4.下拉菜单 5.文本域标签 6.label标签 7.按钮标签 8.无语义的布局标签div与span 9.字符实体 HTML…

博客系统完整开发流程

前言 通过前⾯课程的学习, 我们掌握了Spring框架和MyBatis的基本使用, 并完成了图书管理系统的常规功能开发, 接下来我们系统的从0到1完成⼀个项⽬的开发. 企业开发的流程 1. 需求评审(产品经理(PM)会和运营(想口号),UI,测试,开发等沟通) ,会涉及到背景/目标/怎么做,可能会有多…

【C语言】指针笔试题

前言:上期我们介绍了sizeof与strlen的辨析以及sizeof,strlen相关的一些笔试题,这期我们主要来讲指针运算相关的一些笔试题,以此来巩固我们之前所学的指针运算! 文章目录 一,指针笔试题1,题目一…

【Qt】桌面应用开发 ------ 绘图事件和绘图设备 文件操作

文章目录 9、绘图事件和绘图设备9.1 QPainter9.2 手动触发绘图事件9.3 绘图设备9.3.1 QPixmap9.3.2 QImage9.3.3 QImage与QPixmap的区别9.3.4 QPicture 10、文件操作10.1 文件读写10.2 二进制文件读写10.3 文本文件读写10.4 综合案例 9、绘图事件和绘图设备 什么时候画&#x…

python与C系列语言的差异总结(3)

与其他大部分编程语言不一样,Python使用空白符(whitespace)和缩进来标识代码块。也就是说,循环体、else条件从句之类的构成,都是由空白符加上冒号(:)来确定的。大部分编程语言都是使用某种大括号来标识代码块的。下面的…

OpenCV(9):视频处理

1 介绍 视频是由一系列连续的图像帧组成的,每一帧都是一幅静态图像。视频处理的核心就是对这些图像帧进行处理。常见的视频处理任务包括视频读取、视频播放、视频保存、视频帧处理等。 视频分析: 通过视频处理技术,可以分析视频中的运动、目标、事件等。…

【C++设计模式】观察者模式(1/2):从基础到优化实现

1. 引言 在 C++ 软件与设计系列课程中,观察者模式是一个重要的设计模式。本系列课程旨在深入探讨该模式的实现与优化。在之前的课程里,我们已对观察者模式有了初步认识,本次将在前两次课程的基础上,进一步深入研究,着重解决观察者生命周期问题,提升代码的安全性、灵活性…

在 CentOS 7.9上部署 Oracle 11.2.0.4.0 数据库

目录 在 CentOS 7.9上部署 Oracle 11.2.0.4.0 数据库引言安装常见问题vim粘贴问题 环境情况环境信息安装包下载 初始环境准备关闭 SELinux关闭 firewalld 安装前初始化工作配置主机名安装依赖优化内核参数限制 Oracle 用户的 Shell 权限配置 PAM 模块配置swap创建用户组与用户,…