Stable Difussion能做什么?

news2024/11/25 18:35:11

扩散模型(Diffusion Model)​

稳定扩散模型(Stable Diffusion)属于深度学习模型中的一个大类,即扩散模型。它们属于生成式模型,这意味着它们是被设计用于根据学习内容来生成相似的新的数据的。对于稳定扩散模型而言,新的数据即为图像数据。​

假设我们只使用猫和狗这两类图像来训练这个稳定扩散模型。如下图所示,图中左侧曲线的两个峰值代表了猫与狗这两组图像。

 

扩散分类:​

前向扩散(Forward diffusion )​

所谓前向扩散(forward diffusion)过程就是向训练图像中不断地添加噪声,从而使其逐渐变为一张毫无意义的纯噪声图。在我们的例子中,前向扩散过程会将猫与狗的图片转变为噪声图。最终你将无法从得到的噪声图中分别出原来的图究竟是猫还是狗(这点很重要)

这就好比往一杯水中滴入一滴墨水。墨滴将在水中扩散,在几分钟之后,它将随机均匀的遍布于整杯水中,你将再也无法从这杯水中看出原来的墨滴究竟是从杯子的中心还是边缘滴入的了。​

简单理解:向图片添加噪声,使其不能被辨别;​

之所以这么做是因为要将噪声作为外扩容器;(相当于将其设置为一种新型变量)方便生成后面变动的新物种;

下图演示了一张图像经由前向扩散逐渐变为纯噪声图的过程

 

逆向扩散(Reverse diffusion)

现在来到神奇的部分了。如果我们能够逆转扩散的过程会怎样呢?就像影片倒带一样,在时间线上逆向移动,那我们最终将会看到墨滴最初是从哪里滴落的了。​

本质:前向扩散的逆行为;主要就是消减噪声、使得被噪声篡改的噪声图变成其原来的样子;

 

从一张完全无意义的噪声图,逆向扩散过程使其还原为一张猫【或】狗的图像,这就是逆向扩散的核心理念。​

从技术上来说,每个扩散过程都有两个分量:​

(1)漂移或引导的方向;​

(2)随机的方向。逆向扩散会将结果导向猫或者狗的图像,但并不会是二者之间的图像。这也是为什么我上面说,逆向扩散的结果将会是猫或者狗。

扩散原理的实现:​

要实现扩散原理;

前向扩散(Forward diffusion ):核心是要控制住变量“噪声”;​

为了将扩散过程逆转,我们需要知道到底有多少噪声被添加到了图像中。而这个问题的答案,将会由一个经过训练的神经网络模型来预测解答。在Stable Diffusion模型中,这个模块被称为噪声预测器(noise predictor)。训练的过程如下:

1、选择一张训练图片,比如一张狗或猫的图像​
2、生成一个随机的噪声图​
3、将这张噪声图像原始训练图片中添加特定次数,使图像变得嘈杂​
4、以正确答案为基准,通过调试参数,训练噪声预测器最终能够识别出究竟有多少次噪声被添加到了这张图片中。

在训练完成后,我们将得到一个能够估计出有多少噪声被添加到了一张图像中的噪声预测器

 

逆向扩散(Reverse diffusion)

Stable Diffusion模型的工作机制:​

首先:SD实现基础不是以扩散模型中的图片间“像素转化”为基础的​

原因是:​

1、计算量巨大、耗费资源惊人​

以上所描述的扩散过程都是在图像(像素)空间(image space)进行的。它的计算量是非常非常巨大的,因而生成的速度会非常的慢。而且你不可能在任何一个单一的GPU中跑通这个过程,更别说那些笔记本电脑上的垃圾GPU了。​

2、参数变量巨多、难以把控最终结果的准确性​

图像的像素空间是非常巨大的。想象有一张512x512大小RBG三通道的彩色图片,这将是一个768,432(512x512x3)维度的空间。(意味着为了生成一张图,你需要确定768,432个值)​

3、性能提升缓慢、新技术仍待发展;​

扩散模型如谷歌的 Imagen 或者Open AI的 DALL-E 都是在像素空间上运行的,它们使用了一些技巧去使模型的计算速度得以提升,但总的来说提升的并不够

SD采用的方法:​

潜空间扩散模型(Latent diffusion model)

稳定扩散模型(Stable Diffusion)的设计目的,就是要解决速度的问题。它是这么做的:​

Stable Diffusion模型实际上是在潜空间中的扩散模型。为避免在高维度的图像空间中操作,它首先将图像压缩到了一个称作潜空间的区域中。潜空间相较于像素空间小了48倍【译者注:你可以简单的理解将图像压缩了48倍】。也就是说,模型所处理的计算数据相比之下少了许多,也因此它比标准的扩散模型快了非常多

变分自动编码器 (Variational Autoencode)​

实现图像潜空间压缩的技术叫做变分自动编码器,是的,就是那个你在SD工具中需要设置的VAE文件,我这里会说的更详尽一点。​

变分自动编码器(VAE)神经网络有两个部分:(1)编码器;(2)解码器。编码器将图像压缩至潜空间这个低维度的表达形式,而解码器则是将潜空间的数据还原为原始的图像。

 

Stable Diffusion所使用的是一个4x64x64的潜空间,相较于图像的像素空间【译注:512x512的图像】而言小了48倍。所有我们上一章节所描述的前向扩散与逆向扩散的过程都实际是在这个空间中完成的。​

训练的过程也是一样的,训练流程中生成的并不是噪声图像,而是潜空间中的张量(即一个4x64x64的噪声图)。训练中像潜空间的图像添加潜空间的噪声,而不是像素图添加像素噪声。这样做的原因都是因为由于潜空间较小从而可以使整个过程的执行速度得到大幅的提升

为什么图像能压缩至潜空间(latent space)?​

你可能震惊于为什么VAE可以将图像压缩到如此小的空间之中而不损失信息。原因很简单:自然图像并不是纯随机的。它们有着很高的规律性:​

一张脸上的五官总是有着特定的空间关系,一只狗总是有着4条腿以及总体的一类特征形状。​

换句话说,图像的高维度是人为刻意产生的,而自然图像可以很容易地压缩到更小的潜在空间中而不会丢失任何信息。 这在机器学习中被称为 流形假设

在潜空间中做逆向扩散​

我们来整理一下在Stable Diffusion模型中,逆向扩散如何在潜空间中进行的​

1.一个随机的潜空间矩阵被生成(4x64x64维)​

2.噪声预测器预测出一个潜空间噪声,其在前向扩散过程中被作用在了这个潜空间噪声矩阵上​

3.从原始潜空间噪声中减去预测出的噪声​

4.重复2到3步指定的采样次数(sampling steps)​

5.VAE的解码器(decoder)将得到到的潜空间矩阵数据还原为最终的像素图像。​

核心:在潜空间中实现预测噪声和消去噪声生成图像的过程;

什么是VAE文件?​

VAE文件 在 Stable Diffusion一代中用于提升眼睛与面部的绘画结果。正如前面讲的,它们是自动编码器所对应的解码器。通过对解码器进行调教,Stable Diffusion模型的生成图像可以拥有更好的细节表现。​

你可能注意到了我前面有一处描述并不是完全正确的。将图片压缩至潜空间是会丢失原始图像的信息的,因为原始的VAE并不能对细节进行恢复。因此VAE解码器将负责在解码过程中绘制那些精细的细节内容。(这也是为什么最终生成图像具有不可控的因素之一)

调节(Conditioning)​

以上关于模型的描述仍然是不完整的:当我们使用SD时所传入的文字指令是如何生效的呢?没有指令的存在,SD并不是一个完整的text-to-image模型。你没有办法控制SD最终为你生成一张猫的图片还是一张狗的图片。​

这时候我们就需要引入“调节(Conditioning)”了。调节的目的是引导噪声预测器,以便预测的噪声在从图像中减去后,会使图像朝着我们想要的结果演变

调节主要实现的内容:​

文本指引 (text-to-image)​

下图展现了文字指令(Text Prompt)如何经过处理并送入噪声预测器的过程。分词器(Tokenizer)首先将指令中的每个单词转化为一个数字表示的词元(token)。每个词元随后将转换为一个包含768个数值的向量,我们称之为标签(Embedding)(是的,就是那个你在SD GUI工具中所使用的Embedding)。这些标签随后传递给文本Transformer模型【译注:可理解为一个通用的神经网络模型】,并经过其处理后交由噪声预测器使用

 

详细讲解:​

分词器(tokenizer)​

 

文本指令将会首先被一个CLIP分词器分解为一组词元。​

CLIP是一个由OpenAI开发的深度学习模型,被用于生成对任意图像的文本描述。Stable Diffusion第一代版本使用的是CLIP分词器。​

•将文本词元化,是使其可以被计算机所理解的第一步。​

我们人类可以阅读文字,但是计算机只能阅读数字,这就是文本指令处理过程中首先被转换成一组词元所对应的数字的原因。​

•一个分词器只能对其在训练过程中见到过的词汇进行分词。​

比如说,在CLIP模型中有“dream“和”beach“这两个词元,但是并没有”dreambeach“这个词元。分词器在处理时会将dreambeach这个单词拆分为”dream”和“beach”这两个它所认识的词元·。因此,一个单词并不一定只对应一个词元!​

•另一个细则是,空格也是词元的一部分。​

“dream beach"这个单词将会生成两个词元“dream“与”[空格]beach"。这些词元实际上与上个例子中由“dreambeach”解析出来的两个词元是不一样的(前面例子中的词元是不带空格的)。​

•Stable Diffusion模型所使用的指令长度被限制为75个词元。​

(现在你知道了这并不等同于75个单词)【译注:作者这里说的75个词元限制是针对于基础的SD模型,而SD工具通过对指令进行拆分处理,再合并的方式让你可以输入任意长度的指令】

标签(Embedding)

 

Stable Diffusion一代版本使用的是OpenAI的ViT-L/14 CLIP模型。在这个模型中标签向量的长度是768。每个词元都有其唯一对应的标签向量。这些标签向量的值在CLIP模型中是固定的,通过训练所得到的。​

我们为什么需要标签?这是因为不同的单词之间可能会有很强的关联性。我们需要使用到这种关联性的信息。举例来说,man(男人), gentleman(绅士), guy(男的)这几个词对应的标签值几乎是一样的,因为这些单词在文字中大多情况是可以相互替换的。Monet,Manet与Degas都是印象派的画家,但各自风格又有显著区别,所以这几个名字所对应的标签向量有相近的部分,但又不完全一样。​

这里我们所讨论的标签(Embedding),与在使用SD时所用于调教模型的标签是一个东西。标签的使用是有魔法的。科学家们已经证明了,在SD中找到一个合适的标签向量即可以触发任意物体与风格要素,这种模型调教技术被称作逆向构建(Textual Inversion)

将标签(embeddings)喂给噪声预测器(noise predictor)

 


上一步得到的那些标签在传入噪声预测器前,还需要先交由文本Transformer做进一步处理。Transformer模型类似于一个通用的调节因子适配器。在现在的情况中,输入给Transformer的是标签向量,但实际上也可以将其他种类的数据如:类型标签、图像、深度图等作为输入传入这个模型中。Transformer存在的意义,不仅仅是需要其作为数据处理的一个环节,更在于它可以提供一个能包含不同调节方式的数据处理机制。​

经由Transformer模型输出的数据,将在后面的U-Net神经网络中被噪声预测器多次使用。而U-Net使用一种叫做交叉注意力(cross-attention)的机制来使用这些数据。正是这个机制使得在前面步骤中被拆散的单词指令能够被正确的组合关联起来。举例来说:指令“A man with blue eyes"需要在“blue”与“eyes”之间形成交叉注意力,这样Stable Diffusion才能知道需要绘制的是一个有蓝色眼睛的男人,而不是一个有眼睛的蓝色男人

其他类型的指引​

1.文本指令并不是唯一能够调节Stable Diffusion的方式。​

2.在depth-to-image功能中,文本与深度图都可以作为调节参数来使用。​

3.ControlNet通过轮廓线、人物姿态等来控制噪声预测器,在对于生成图像的控制上取得了非常卓越的效果

Stable Diffusion的各个功能的实际运作过程:​

文本生成图像(Text-to-image)​

在使用文本到图像功能时,你通过给SD传入一个文本指令,使其返回一张图像。​

第一步,Stable Diffusion生成一个潜空间的随机张量。这个随机张量的生成是受你在SD中设置的随机种子(seed)的值所控制的。如果你将随机种子设置成了一个固定值,那SD将始终使用同样的初始随机张量。不要忘了,这个随机张量就是你图像在潜空间中的表达形式,只不过目前他还只是完全的噪声

 

第二步,噪声预测器的U-Net网络会将这个初始随机张量与文本指令作为输入传入其中,并预测出应移除的噪声,当然其也是个潜空间的张量

 

第三步,将这个潜空间噪声从潜空间初始图像中减去,得到潜空间中新的图像

 

第二步与第三步将根据你设置的采样步数(sampling steps)重复特定次数,比如20次。​

第四步,VAE解码器将最后得到的潜空间图像恢复为像素空间的图像,这也是你在Stable Diffusion工具中最终得到的图像

 

这里展示了图像经过每一次去噪步骤后的变化情况。​

https://pic4.zhimg.com/v2-77d82434be19a23040abc042977c4dd3_b.webp

图生图(Image-to-image)​

图生图方法首先是由 SDEdit 所提出的。SDEdit可以应用于任何的扩散模型。因此我们在Stable Diffusion中也有了图生图的功能。​

图生图功能使用一张图片与一段文字指令共同作为输入。生成的图像将受到这两个输入的共同调节作用。比如,使用下面这张初级草图以及一段指令 ”photo of perfect green apple with stem, water droplets, dramatic lighting" 作为输入,图生图功能会将其转化为一张很专业的绘画:

 

下面介绍其具体生成的过程。​

第一步,输入的图片会被编码至潜空间中

 

第二步,我们会向其添加噪声。通过在SD工具中设置降噪强度(Denoising strength)可以控制究竟要添加多少噪声到原始输入图像中去(在潜空间)。如果这个值设置为0,不会有任何噪声添加进去,如果是1则会向其添加最大量的噪声以使其成为一个在潜空间中完全随机的张量

 

第三步,噪声预测器将上一步处理后的潜空间图像与文字指令作为输入传入其U-Net网络,并给出预测应减去的潜空间噪声张量

 

第四步,将这个潜空间噪声从潜空间初始图像中减去,得到潜空间中新的图像

 

第三步与第四步将根据你设置的采样步数(sampling steps)重复特定次数,比如20次

第五步,VAE解码器将最后得到的潜空间图像恢复为像素空间的图像,这也是你在image-to-image工具中最终得到的图像

 

所以现在你知道图生图究竟是什么了,他所做的就是将初始的潜空间图像设置为输入图片与一些噪声的混合。如果你将降噪强度(denoising strength)设置为1,那你获得的图片其实就等价于纯粹使用文本指令运行文本生成图片工具所得到的结果,因为此时这两种功能使用的初始潜空间图像都是一个完全随机的噪声图

修图(Inpainting)​

修图其实只是图生图的一种特殊形式。噪声将仅被添加到图中你希望修改的部分。噪声的添加量同样是使用降噪强度这个参数来控制

Depth-to-image​

Depth-to-image是image-to-image的增强;它使用深度图生成具有附加条件的新图像

第一步,输入图像被编码到潜空间

第二步, MiDaS (一个AI模型) 根据输入图像来分析其深度信息

第三步,我们会向潜空间的原始输出图像添加噪声。通过在SD工具中设置降噪强度(Denoising strength)可以控制究竟要添加多少噪声到原始输入图像中去(在潜空间)。如果这个值设置为0,不会有任何噪声添加进去,如果是1则会向其添加最大量的噪声以使其成为一个在潜空间中完全随机的张量

第四步,噪声预测器将预估应移除的潜空间噪声,并受到文本提示输入和深度图输入的共同调节

第五步,将这个潜空间噪声从潜空间初始图像中减去,得到潜空间中新的图像第四步与第五步将根据你设置的采样步数(sampling steps)重复特定次数,比如20次。​

第六步,VAE解码器将最后得到的潜空间图像恢复为像素空间的图像,这也是你在depth-to-image工具中最终得到的图像

CFG值是什么?​

关于Stable Diffusion还有一个重要的概念需要介绍,那就是无分类器引导(Classifier-Free Guidance,CFG)。这个参数相信是每个使用SD的美术每天都在不停调试的值。为了能够较好的理解这个概念,我们先来介绍一下它的前身,即分类器引导(Classifier Guidance)

分类器引导(Classifier Guidance)​

分类器引导是一种能够将图像标签(label)信息包含于Stable Diffusion模型中的方法。你可以使用一个标签来引导扩散过程

分类器引导强度(classifier guidance scale)是一个用于控制扩散过程应该多贴近于给定标签的一个变量

无分类器引导(Classifier-free Guidance)​

尽管分类器指导为扩散模型带来了突破性的效果提升,但它需要一个额外的模型来提供该指导。这给整个模型的训练带来了一些困难。​

无分类器引导(Classifier-free Guidance),用其作者的话来说,是一种可以获得分类器引导结果而不需要分类器的方法。不同于前面所说使用标签和一个单独模型用于引导,他提出使用图像的描述信息并训练一个带条件的扩散模型(conditional diffusion model)。​

在text-to-image功能中,这种引导就由文本指令来提供。​

【译注:通俗点来说:无分类器引导就是不以图像+标签作为训练内容,而是以图像+其文字概述作为训练内容,因此不需要再额外训练一个判断图像与标签匹配度的分类器,来额外较正图像生成模型。而直接训练生成图像与图像+文字描述的匹配度,从而得到的就是一个具有text-to-image功能的整体的图像生成模型】

CFG值​

现在我们有了一个可调节的无分类器的扩散过程,我们要如何控制扩散过程遵循指导到什么程度?​

无分类器引导 (CFG) 强度是一个值,它控制文本指令(prompt)对扩散过程的影响程度。 当将其设置为 0 时,图像生成是无引导的(即忽略提示),而较高的值会使扩散过程更贴近于文本指令

SD版本比较:​

StableDiffusion一代版本与二代版本的比较​

模型差异​

Stable Diffusion v2 使用 OpenClip 进行文本数据处理(text embedding)。 ​

Stable Diffusion v1 使用 Open AI 的 CLIP ViT-L/14 进行文本处理。这种变化的原因是:​

•OpenClip 模型大小是原来的5倍。更大的文本编码器模型提高了图像质量。​

•尽管 Open AI 的 CLIP 模型是开源的,但这些模型是使用专有数据训练的。切换到 OpenClip 模型使研究人员在研究和优化模型时更加透明。更利于长远发展。​

训练数据差异​

Stable Diffusion v1.4 使用如下数据集进行训练​

•237k steps at resolution 256×256 on the laion2B-en dataset.​

•194k steps at resolution 512×512 on laion-high-resolution.​

•225k steps at 512×512 on “laion-aesthetics v2 5+“, with 10% dropping of text conditioning.​

Stable Diffusion v2 使用如下训练集训练:​

•在256x256分辨率下训练550k步,使用 LAION-5B图像数据集,并使用了 punsafe=0.1 以及 aesthetic score >= 4.5 两个条件参数从中筛除了“不和谐”图片。【译注:punsafe=0.1即表明训练数据集中出现“不和谐”图片的概率低于10%】​

•在 512x512分辨率下训练850k步,使用同样的数据集,筛选条件是分辨率大于或等于512x512的​

•再使用一种叫 v-object 方式在同样数据集上再训练150k步​

•在768x768分辨率下再训练140k步。​

Stable Diffusion v2.1 基于v2版本进一步优化:​

•在同样数据集上再训练 55k 步​

•另外再在数据集筛选条件punsafe=0.98的结果中再训练155k 步​

所以基本上,他们在后面的训练步骤中关闭了 NSFW (Not suitable for work) 过滤器【译注:也就是说v2.1也可以出涩图】。​

输出结果差异

用户普遍发现使用 Stable Diffusion v2 来控制风格和生成名人更难。 虽然 Stability AI 【译注:基础模型发布团队】没有明确过滤掉艺术家和名人的名字,但它们的效果在 v2 中要弱得多。 这可能是由于训练数据的差异。 Open AI 的专有数据可能有更多的艺术品和名人照片。 他们的数据可能经过高度过滤,因此一切事物和每个人看起来都非常漂亮。

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

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

相关文章

Vue2与Vue3相应原理区别

Vue3.0中的响应式原理 vue2.x的响应式 1.实现原理: 对象类型:通过Object.defineProperty()对属性的读取、修改进行拦截(数据劫持)。数组类型:通过重写更新数组的一系列方法来实现拦截。(对数组的变更方法…

测试老鸟整理,性能测试高并发压力测试-案例,进阶之道...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 单个接口的压测&a…

通过foxmail同步其他邮箱邮件到我司邮箱

1、先通过foxmail 登录需要备份邮件的邮箱帐号,全选需要备份的邮件,右键选择“导出邮件”。 2、在foxmail中使用IMAP协议登录我司邮箱帐号,右键选择收件箱或其他文件夹导入邮件,将之前导出备份的邮件文件全选导入。 3、导入完成后…

glibc缺陷居然会导致MySQL卡住?

问题来源: 版本:5.7.25。 现象:备机主从延迟不断变大,无法登陆数据库,建立连接时卡住,但很快恢复正常了。 分析: 常规分析: 通常情况下,这类问题无法分析&#xff0c…

vmware17安装openkylin

官网 系统下载-openKylin 开放麒麟社区官网 | 开源聚力,共创未来 下载链接 https://www.openkylin.top/downloads/download-smp.php?id18 安装 点击浏览,选择镜像 修改服务器cpu配置 修改内存配置 修改网络连接方式 点击启动 等待安装完成 出现上图说…

比较两个Excel表格中的数据,不相同的高亮显示

下面是常用的在Excel中比较两个Excel表格数据的方法, 比如要比较下面A和B中的数据是否一致: 可以这样做:

ikbc键盘2.4G接收器丢失,重新对码

我的键盘:ikbc W200 1.键盘关掉重开; 2.新接收器插在电脑上; 3.电脑上打开软件,点开始对码,一会就连接上了。 对码软件放在这里: 我用夸克网盘分享了「IKBC 对码.rar」,点击链接即可保存。打开…

(Qt) Http之Get请求使用基础

文章目录 前言Code完整code效果循环loop的使用 讲解配置相关对象Https END 前言 http的操作是网络通信中非常常见的操作,其中广泛使用get,post两种操作。 本文将对Qt中,http的get请求做简单应用,来进行展示。 Code 完整code …

2分钟完成Github配置ssh密钥

2分钟完成Github配置ssh密钥 前言: 配置ssh密钥的目的是为了可以在自己的本地开发环境顺利拉取和推送代码到Github 本机是Ubuntu 16.04环境,已安装ssh 步骤1 进入当前用户的home目录: #执行以下命令进入 cd ~进入.ssh/目录下生成ssh的密钥…

JS antdv实现表格树形级联效果

概述 项目中需实现以下这种效果:级联数据,表格横向排列,数据之间相互联动。现有UI组件无法满足此需求,只能撸起袖子加油干!! 实现效果如下 开发前先准备一个树形数据 treeData.js const treeData [{ar…

Linux常用命令【多图预警】

Linux常用命令 文章目录 Linux常用命令Linux虚拟机的安装Linux系统目录结构Linux命令的语法基础命令查看当前目录下所有子目录和子文件ls查看命令手册man查看当前目录pwd切换到指定目录cd 管道符 |文件目录操作命令创建一级目录(文件夹)mkdir创建多级目录…

计算机毕业论文内容参考|基于微信小程序的学生课表系统的设计与实现

文章目录 导文摘要前言绪论1课题背景2国内外现状与趋势3课题内容相关技术与方法介绍系统分析系统设计系统实现系统测试总结与展望1本文总结2后续工作展望导文 计算机毕业论文内容参考|基于微信小程序的学生课表系统的设计与实现 摘要 基于微信小程序的学生课表系统是一个方便学…

【电路原理学习笔记】第2章:电压、电流和电阻:2.8 电气安全

第2章:电压、电流和电阻 2.8 电气安全 2.8.1 触电 电流(而非电压)通过人的身体是触电的的原因。当然,需要有电压施加在有电阻的物体上才能产生电流。当人身体上的一个点与电压接触,而另一个点与不同的电压或地面接触…

玄子Share - mybatis-Plus 3.5.3.1 学习笔记

玄子Share - mybatis-Plus 3.5.3.1 学习笔记 介绍 MyBatis-Plus (opens new window)(简称 MP)是一个 [MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 愿景:…

docker 镜像的使用与创建(三)

相关文章: linux上docker容器运行web应用简单介绍(二)_做测试的喵酱的博客-CSDN博客 linux docker安装及报错处理_做测试的喵酱的博客-CSDN博客 Docker 容器使用 | 菜鸟教程 linux应用docker基本使用(一)_做测试的喵酱的博客-…

29. 求出商品连续售卖的时间区间

文章目录 题目需求思路一实现一题目来源 题目需求 从订单详情表(order_detail)中,求出商品连续售卖的时间区间。 期望结果如下: sku_id (商品id)start_date (起始时间)end_date &…

鸢尾花书简介

鸢尾花书简介 鸢尾花书 系列介绍1《编程不难》2《可视之美》3《数学要素》4《矩阵力量》5《统计至简》6《数据有道》7《机器学习》 重要链接 特别棒,极力推荐!!! 鸢尾花书 系列介绍 1《编程不难》 《编程不难》:https:…

win11预览版更新,并尝试使用Copilot

文章目录 win11预览版更新,并使用Copilot先说结果所需内容具体操作更新操作系统版本更新Edge安装ViVeTool v0.3.3 测试Copilot问题唯一优点 总结 win11预览版更新,并使用Copilot 先说结果 体验一言难尽,就相当于是一个快捷聊天提问窗口。 自…

C语言实现WiFi数据收发(电脑作为服务器)

功能实现: 手机与电脑在一个局域网,实现手机与电脑之间数据收发。 主要是用socket协议完成功能。 电脑作为服务器,手机作为客户端 编程环境: 电脑端变成环境:VC6.0 手机端WiFi助手: 核心代码: …

K8S平台应用安全(Secret Service Ingress)

平台应用安全 1 平台应用安全1.1 敏感数据1.1.1 应用数据1.1.2 Secret基础1.1.3 Secret案例11.1.4 Secret案例2 1.2 数据访问1.2.1 网络体系解读1.2.2 Service实践1.2.3 Service进阶1.2.4 Service解读 1.3 应用流量1.3.1 Ingress基础1.3.2 Ingress实践1.3.3 Ingress进阶1.3.4 I…