Stable Diffusion文生图技术详解:从零基础到掌握CLIP模型、Unet训练和采样器迭代

news2025/6/9 10:38:29

文章目录

    • 概要
    • Stable Diffusion 底层结构与原理
      • 文本编码器(Text Encoder)
      • 图片生成器(Image Generator)
    • 那扩散过程发生了什么?
    • stable diffusion 总体架构
    • 主要模块分析
      • Unet 网络
      • 采样器迭代
      • CLIP 模型
    • 小结

概要

Stable Diffusion 是一种先进的潜在扩散模型(Latent Diffusion Model),它在深度学习和概率建模领域具有开创性意义。它能够根据文本描述生成高质量、细节丰富的图像,并在图像修复、图像绘制、文本到图像转换和图像到图像转换等任务中表现出色。这种模型由 CompVis、Stability AI 和 LAION 的研究人员在 2022 年发布,其技术提出者 StabilityAI 公司在同年完成了 1.01 亿美元的融资,估值现已超过 10 亿美元。

Stable Diffusion 底层结构与原理

稳定扩散(Stable Diffusion)的底层结构与原理涉及到深度学习和概率建模的领域,尤其是生成模型的研究。以下是稳定扩散的一些基本原理:

稳定过程(Stable Process): 稳定扩散的核心概念之一是稳定过程。稳定过程是一类随机过程,其性质在一定条件下对于加法运算是稳定的。这意味着稳定过程的和仍然遵循相同的分布。在稳定扩散中,这个过程用于逐步生成数据,每一步都是通过添加具有稳定分布的随机变量来改变数据分布。

随机变量的迭代: 稳定扩散的生成过程涉及到对初始噪声进行迭代。初始噪声通常是从简单的分布中生成的,例如标准正态分布。然后,通过多个迭代步骤,每一步都会引入稳定分布的随机变量,逐渐改变数据分布。

生成模型架构: 稳定扩散通常是在生成模型的框架下实现的。生成模型是一类深度学习模型,用于学习数据的分布,并生成具有相似分布的新样本。在稳定扩散中,生成模型的架构可能采用了类似于生成对抗网络(GANs)的结构,其中包括生成器和判别器。

训练过程: 训练稳定扩散模型涉及到通过样本数据来学习模型参数,使得模型能够逐步生成与样本数据相似的数据。这可能包括通过最大似然估计等方法来优化模型参数。

数值方法: 由于稳定扩散涉及到对复杂分布的逐步生成,其中可能包括数值方法来有效地处理和优化生成过程。这可能包括数值稳定性的考虑和一些近似方法。

Stable Diffusion 技术是 Diffusion 模型的改进版本,它通过引入潜在向量空间(Latent Vector Space)来解决传统 Diffusion 模型在速度和效率上的瓶颈。这项技术不仅可以专门用于文本生成图像(Text-to-Image)任务,还可以广泛应用于图像生成图像(Image-to-Image)、特定角色生成、图像超分辨率(Super-Resolution)以及图像上色等多个计算机视觉领域。

下图是一个基本的文生图流程,把中间的 Stable Diffusion 结构看成一个黑盒,那黑盒输入是一个文本串“paradise(天堂)、cosmic(广阔的)、beach(海滩)”,利用这项技术,输出了最右边符合输入要求的生成图片,图中产生了蓝天白云和一望无际的广阔海滩。

在这里插入图片描述
Stable Diffusion 核心思想是通过利用文本中包含的图像分布信息,将一张纯噪声的图片逐步去噪,最终生成一张与文本描述相匹配的高质量图像。这一过程的关键在于将人类可读的文本信息转换为机器可理解的数字表示,并使用这些数字表示来指导图像生成的过程。

文本编码器(Text Encoder)

在 Stable Diffusion 系统中,文本编码器(Text Encoder)是第一个关键模块。它的主要任务是将人类输入的文字字符串转换为计算机能够理解的数字表示,即语义向量(Semantic Vector)。文本编码器通常使用预训练的语言模型,如 CLIP(Contrastive Language-Image Pre-training),来理解文本的含义,并将其转换为一系列具有输入文字信息的语义向量。

图片生成器(Image Generator)

图片信息生成器是 stable diffusion 和 diffusion 模型的区别所在,也是性能提升的关键,有两点区别:

① 图片信息生成器的输入输出均为低维图片向量(不是原始图片),对应上图里的粉色 44 方格。同时文本编码器的语义向量作为图片信息生成器的控制条件,把图片信息生成器输出的低维图片向量进一步输入到后续的图片解码器(黄色)生成图片。(注:原始图片的分辨率为 512512,有RGB 三通道,可以理解有 RGB 三个元素组成,分别对应红绿蓝;低维图片向量会降低到 64*64 维度)

② Diffusion 模型一般都是直接生成图片,不会有中间生成低维向量的过程,需要更大计算量,在计算速度和资源利用上都比不过 stable diffusion;

那低维空间向量是如何生成的?是在图片信息生成器里由一个 Unet 网络和一个采样器算法共同完成,在 Unet 网络中一步步执行生成过程,采样器算法控制图片生成速度,下面会在第三部分详细介绍这两个模块。Stable Diffusion 采样推理时,生成迭代大约要重复 30~50 次,低维空间变量在迭代过程中从纯噪声不断变成包含丰富语义信息的向量,图片信息生成器里的循环标志也代表着多次迭代过程。

图像解码器(Image Decoder)

图像解码器(Image Decoder)是图片生成器的第二个子模块,它接收潜在空间生成器输出的潜在空间向量作为输入,并使用升维技术将潜在空间向量转换为实际的图像。图像解码器通常使用反卷积(Deconvolution)或转置卷积(Transposed Convolution)等操作来逐渐增加图像的分辨率,最终生成一张高质量的图像。

通过将文本编码器和图片生成器有机地组合在一起,Stable Diffusion 技术能够根据文本描述生成多样化、高质量的图像,为计算机视觉和自然语言处理等领域的研究和应用提供了新的思路和工具。

那扩散过程发生了什么?

扩散过程发生在图片信息生成器中,把初始纯噪声隐变量输入到 Unet 网络后结合语义控制向量,重复 30~50 次来不断去除纯噪声隐变量中的噪声,并持续向隐向量中注入语义信息,就可以得到一个具有丰富语义信息的隐空间向量(右下图深粉方格)。采样器负责统筹整个去噪过程,按照设计模式在去噪不同阶段中动态调整 Unet 去噪强度。

更直观看一下,如下图所示,通过把初始纯噪声向量和最终去噪后的隐向量都输到后面的图片解码器,观察输出图片区别。从下图可以看出,纯噪声向量由于本身没有任何有效信息,解码出来的图片也是纯噪声;而迭代 50 次去噪后的隐向量已经耦合了语义信息,解码出来也是一张包含语义信息的有效图片。
在这里插入图片描述

到这里,我们大致介绍了 Stable Diffusion 是什么以及各个模块思路,并且简单介绍了 stable diffusion 的扩散过程。第三部分我们继续分析各个重要组成模块的运行机制,更深入理解 Stable Diffusion 工作原理。

stable diffusion 总体架构

以下是从零基础角度介绍Stable Diffusion技术思路,主要聚焦于Stable Diffusion的文生图技术,并详细阐述其三个核心模块:CLIP模型、Unet训练和采样器迭代。

训练阶段和采样阶段的总体框架如下图所示:
在这里插入图片描述

训练阶段

包含了图里 PART1 CLIP 模型和 PART2 Unet 训练,分成三步:

  1. 用 AutoEncoderKL 自编码器把输入图片从像素空间映射到隐向量空间,把 RGB 图片转换到隐式向量表达。其中,在训练 Unet 时自编码器参数已经训练好和固定的,自编码器把输入图片张量进行降维得到隐向量。
  2. 用 FrozenCLIPEmbedder 文本编码器来编码输入提示词 Prompt,生成向量表示 context,这里需要规定文本最大编码长度和向量嵌入大小。
  3. 对输入图像的隐式向量施加不同强度噪声,再把加噪后隐向量输入到 UNetModel 来输出预估噪声,和真实噪声信息标签作比较来计算 KL 散度 loss,并通过反向传播算法更新 UNetModel 模型参数;引入文本向量 context 后,UNetModel 在训练时把其作为 condition,利用注意力机制来更好地引导图像往文本向量方向生成;

采样阶段

包含了图里 PART1 CLIP 模型和 PART3 采样器迭代,分成三步:

  1. 用 FrozenCLIPEmbedder 文本编码器把输入提示词 Prompt 进行编码,生成维度为[B, K, E]的向量表示 context,与训练阶段的第 2 步一致。
  2. 利用随机种子随机产出固定维度的噪声隐空间向量,利用训练好的 UNetModel 模型,结合不同采样器(如 DDPM/DDIM/PLMS)迭代 T 次不断去除噪声,得到具有文本信息的隐向量表征。
  3. 用 AutoEncoderKL 自编码器把上面得到的图像隐向量进行解码,得到被映射到像素空间的生成图像。

上面对 stable diffusion 总体架构进行了介绍,那接下来进一步分析介绍下每个重要组成模块,分别是 Unet 网络、采样器和 CLIP 模型三个主要模块。

主要模块分析

Unet 网络

Stable Diffusion 里采用的 UNetModel 模型,采用 Encoder-Decoder 结构来预估噪声,网络结构如下图
在这里插入图片描述

模型输入包括 3 个部分,
(1) 图像表示,用隐空间向量输入的维度为[B, Z, H/8, W/8]。
(2) timesteps 值,维度为[B, ]。
(3) 文本向量表示 context,维度为[B, K, E]。

其中[B, Z, H, W]分别表示[batch_size 图片数,C 隐空间通道数,height 长度,weight 宽度],K 和 E 分别表示文本最大编码长度 max length 和向量嵌入大小。

模型使用 DownSample 和 UpSample 进行样本的下上采样,在采样模块之间还有黑色虚线框的 ResBlock 和 SpatialTransformer,分别接收 timesteps 信息和提示词信息(这里只画出一次作为参考)。

ResBlock 模块的输入有:
① 来自上一个模块的输入和
②timesteps 对应的嵌入向量 timestep_emb(维度为[B, 4*M],M 为可配置参数)。

SpatialTransformer 模块的输入有:
① 来自上一个模块的输入
② 提示词 Prompt 文本的嵌入表示 context,以 context 为注意力机制里的 condition,学习提示词 Prompt 和图像的匹配程度。

最后,UNetModel 不改变输入和输出大小,隐空间向量的输入输出维度均为[B, Z, H/8, W/8]。

ResBlock 网络

ResBlock 网络,有两个输入分别是
① 来自上一个模块的输入
②timesteps 对应的嵌入向量 timestep_emb(维度为[B, 4*M],M 为可配置参数)

网络结构图如下所示。
在这里插入图片描述
timestep_embedding 的生成方式,用的是“Attention is All you Need”论文的 Transformer 方法,通过 sin 和 cos 函数再经过两个 Linear 进行变换。

SpatialTransformer 结构

SpatialTransformer 这里,包含模块比较多,有两个输入分别是:
① 来自上一个模块的输入和
② 提示词 Prompt 文本的嵌入表示 context 作为 condition
两者使用 cross attention 进行建模。

其中,SpatialTransformer 里面的注意力模块 CrossAttention 结构,把图像向量作为 Query,文本表示 context 作为 Key&Value,利用 Cross Attention 模块来学习图像和文本对应内容的相关性。

注意力模块的作用是,当输入提示词来生成图片时,比如输入 “一匹马在吃草”,由于模型已经能捕捉图文相关性以及文本中的重点信息,当看到 “马”时,注意力机制会重点突出图像“马”的生成;当看到“草”时,注意力机制会重点突出图像 “草” 的生成,进而实现和文本匹配的图片生成。
在这里插入图片描述
Unet 如何训练?

Stable Diffusion 里面 Unet 的学习目标是什么?简单来说就是去噪。那在为去噪任务设计训练集时,就可以通过向普通照片添加噪声来得到训练样本。具体来说,对于下面这张照片,用 random 函数生成从强到弱的多个强度噪声,比如下图 0~3 有 4 个强度的噪声。训练时把噪声强度和加噪后图片输入到 Unet,计算预测噪声图和真正噪声图之间的误差损失,通过反向传播更新 unet 参数。

图8 去噪训练样本说明

训练好 Unet 后,如下图 所示,从加噪图片中推断出噪声后,就可以用加噪图减掉噪声来恢复原图;重复这个过程,第一步预测噪声图后再减去噪声图,用更新后的加噪图进行第二步去噪,最终就能得到一张很清晰的生成图片。由于使用了高斯分布的 KL 散度损失,Unet 生成图片实际上是接近训练集分布的,和训练集有着相同像素规律。也就是说,使用真实场景的写实训练集去训练模型,它的结果就会具有写实风格,尽量符合真实世界规律。
在这里插入图片描述

采样器迭代

这部分介绍下采样阶段中扩散模型如何多次迭代去除噪声,进而得到生成图片的潜在空间表示。提到采样器,要从最基础的采样器 DDPM(Denoising Diffusion Probabilistic Models)进行介绍[4]。DDPM 推导有点复杂,这里就用朴素一点的大白话结合几个关键公式来理清推导思路。

1、扩散模型的思路是,训练时先在图片上不断加噪来破坏图片,推理时对加噪后的图片去噪来恢复出原始图片。训练过程的 T 次迭代中,可推导出一个重要特性:任意时刻的 Xt 可以由 X0 和 β 表示,任意时刻的 X0 也可以由 Xt 和噪声 z 求得。

在这里插入图片描述

其中,第一行里 a 和 β 可以描述噪声强度;第二行,X0 为初始的干净图片,增加噪声 z 后生成加噪图片 Xt,后个公式由前个公式变换而来,表示加噪图片减去一定强度噪声,得到图片 X0。

2、问题变成,如何求逆向阶段的分布,即给定了一张加噪后图片,如何才能求得前一时刻没有被破坏得那么严重的略清晰图片。经过论文里的一顿推导,又得出两个重要结论:

① 逆向过程也服从高斯分布
② 在知道原始清晰图片时,能通过贝叶斯公式把逆向过程转换成前向过程,进而算出逆向过程分布。

在公式上体现如下:
在这里插入图片描述

其中,第一行指的是给定 X0 情况下,逆向过程也服从高斯分布,并且利用贝叶斯公式把逆向过程转换成前向过程,前向过程是不断加噪的过程,可以被计算;第二行指的是,Xt 和 X0 由于可以相互转换,从公式上看,均值也可以从 Xt 减去不同噪声得到。

3、算出逆向过程分布后,就可以训练一个模型尽量拟合这个分布,而且模型预估结果也应该服从高斯分布:

在这里插入图片描述

其中,求均值公式里只包含 Xt 和噪声,由于 Xt 在训练时已知,那只需要得到模型输出的预估噪声,该值可由模型用 Xt 和 t 预估得到。

4、把逆向过程分布(也就是 Label 值)和模型的预估分布做比较,由于 ①KL 散度可以用来描述两个分布之间的差异和 ② 多元高斯分布的 KL 散度有闭式解,经过一番推导发现损失函数变成计算两个高斯分布的 KL 散度。
在这里插入图片描述
其中,q 分布是逆向过程分布,p 是模型预估分布,训练损失是求两个高斯分布的 KL 散度,即两个分布之间的差距。

5、DDPM 训练过程和采样过程的伪代码如下图所示。由于 DDPM 的高质量生成依赖于较大的 T(一般为 1000 以上),导致 Diffusion 前向过程特别缓慢,因此后续进一步有了 DDIM、PLMS 和 Euler A 等一些优化版采样器。
在这里插入图片描述
其中,训练阶段实际上是求真实噪声和模型预估噪声的 MSE 误差,再对 Loss 求导反向传播来训练模型;采样阶段,求得均值和方差后,采用重参数技巧来生成样本。

扩散模型采样阶段是对加噪后图片去噪来恢复出原始图片
① 任意时刻的图片均可以由原始图片和噪声表示
② 逆向过程的图片参数符合高斯分布,优化目标转化为计算逆向分布和预估分布的 KL 散度差异,并在采样阶段使用重参数技巧来生成图片。

CLIP 模型

在前面有提到,提示词 Prompt 文本利用文本模型转换成嵌入表示 context,作为 Unet 网络的 condition 条件。那问题来了,语义信息和图片信息属于两种模态,怎么用 attention 耦合到一起呢?这里介绍下用于提取语义信息的 CLIP 模型。

语义信息的好坏直接影响到了最终生成图片的多样性和可控性,那像 CLIP 这样的语言模型是如何训练出来的?是如何结合文本串和计算机视觉的呢?首先,要有一个具有文本串和计算机视觉配对的数据集。CLIP 模型所使用的训练集达到了 4 亿张,通过从网络上爬取图片及相应的标签或者注释。

CLIP 模型结构包含一个图片 encoder 和一个文字 encoder,类似于推荐场景常用到的经典双塔模型。

  • 训练时,从训练集随机取出一些样本(图片和标签配对的话就是正样本,不匹配的话就是负样本),CLIP 模型的训练目标是预测图文是否匹配;

  • 取出文字和图片后,用图片 encoder 和文字 encoder 分别转换成两个 embedding 向量,称作图片 embedding 和文字 embedding;

  • 用余弦相似度来比较两个 embedding 向量相似性,并根据标签和预测结果的匹配程度计算损失函数,用来反向更新两个 encoder 参数。

  • 在 CLIP 模型完成训练后,输入配对的图片和文字,这两个 encoder 就可以输出相似的 embedding 向量,输入不匹配的图片和文字,两个 encoder 输出向量的余弦相似度就会接近于 0。

推理时,输入文字可以通过一个 text encoder 转换成 text embedding,也可以把图片用 image encoder 转换成 image embedding,两者就可以相互作用。在生成图片的采样阶段,把文字输入利用 text encoder 转换成嵌入表示 text embedding,作为 Unet 网络的 condition 条件。
图10 CLIP模型结构示意图

小结

`
AI 绘画各种应用不断涌现,目前有关 Stable Diffusion 的文章主要偏向应用介绍,对于 Stable Diffusion 技术逻辑的介绍还是比较少。这篇文章主要介绍了 Stable Diffusion 技术结构和各个重要组成模块的基本原理,希望能够让大家了解 Stable Diffusion 是如何运行的,才能更好地控制 AI 绘画生成。AI 绘画虽然还面临一些技术挑战,但随着技术不断迭代和发展,相信 AI 能够在更多领域发挥出惊喜生产力。

参考文章

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

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

相关文章

WebLogic-XMLDecoder(CVE-2017-10271)反序列化漏洞分析及复现

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收…

C++string类(个人笔记)

string类 1.认识string的接口以及熟练使用常用接口1.1string类对象的常见构造1.2string类对象的容量操作1.3string类对象的访问及遍历操作1.4string类对象的修改操作 2.vs 和g下string结构的说明3.string类运用的笔试题4.string类的模拟实现 1.认识string的接口以及熟练使用常用…

NPM 命令备忘单

NPM 简介 Node Package Manager (NPM) 是 Node.js 环境中不可或缺的命令行工具,充当包管理器来安装、更新和管理 Node.js 应用程序的库、包和模块。对于每个 Node.js 开发人员来说,无论他们的经验水平如何,它都是一个关键工具。 NPM 的主要…

Day19-【Java SE进阶】网络编程

一、网络编程 1.概述 可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信的)。java.net,*包下提供了网络编程的解决方案! 基本的通信架构 基本的通信架构有2种形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)。 网络通信的…

FourCastNet 论文解析

气象基础模型/气象大模型论文速递 论文链接基于arXiv Feb. 22, 2022版本阅读 几乎是第一篇气象大模型的工作,同时也是为数不多的对precipitation进行预测的模型。 文章目录 PerformanceStructureFourier transformToken mixing TrainingPrecipitation Model Ensembl…

Android开发:Camera2+MediaRecorder录制视频后上传到阿里云VOD

文章目录 版权声明前言1.Camera1和Camera2的区别2.为什么选择Camera2? 一、应用Camera2MediaPlayer实现拍摄功能引入所需权限构建UI界面的XMLActivity中的代码部分 二、在上述界面录制结束后点击跳转新的界面进行视频播放构建播放界面部分的XMLActivity的代码上述代…

C++如何排查并发编程死锁问题?

C如何排查并发编程死锁问题? 最近在Apache arrow里面写一个支持并行的算子:nested loop join,然后既然涉及到并行,这里就会遇到大家常说的死锁问题,假设你碰到了死锁问题,如何调试与定位呢? 那这…

C程序的编译

经过预处理后的源文件,退去一切包装,注释被删除,各种预处理命令也基本上被处理掉,剩下的就是原汁原味的C代码了。接下来的第二步,就开始进入编译阶段。编译阶段主要分两步:第一步,编译器调用一系列解析工具,去分析这些C代码,将C源文件编译为汇编文件;第二步,通过汇编…

科软24炸穿了,25还能冲吗?

25考研,科软必然保持大热 不是吧兄弟,明眼人都能看出来,科软以后不会出现大冷的局面了,除非考计算机的人减少,因为科软简直是叠满了buff,首先科软的专业课是22408,考的是数学二,这就…

一、接口自动化之pytest 运行参数

1、在跟目录下创建一个配置项pytest.ini [pytest] testpaths./testcases markersp0:高于优先级test:测试环境pro:生成环境2、打标签 3、运行命名pytest -m "p0"

暴雨孙辉:做好服务器,但更要辟出技术落地之道

稳扎稳打一直是暴雨的风格,这在被访者孙辉的身上尽显。作为暴雨(武汉暴雨信息发展有限公司)中国区销售及市场副总裁,在谈及公司的技术发展与市场推广走势之时,孙辉沉稳、敏锐且逻辑清晰。 因在服务器领域起步很早&…

MySQL前缀索引(3/16)

前缀索引 前缀索引:MySQL支持前缀索引,允许定义字符串的一部分作为索引。如果不指定前缀长度,索引将包含整个字符串。前缀索引可以节省空间,但可能会增加查询时的记录扫描次数(因为会查询到多个前缀相同的数据&#x…

python数据可视化——笔记1

1、pyecharts模块 Pyecharts 是一个 Python 可视化库,绘制多种类型的图表,创建交互式和美观图表。 官方网站:https://pyecharts.org/#/zh-cn/ pyecharts画廊: https://gallery.pyecharts.org/#/README 安装pyechart包,在pych…

Docker入门指南:从基础概念到实践操

Docker简介 在编程的世界里,有一种名为Docker的神奇工具,它就像一个无形的魔术师,能够将复杂的开发环境和应用打包成一个个轻量级、独立的容器。这些容器犹如一艘艘小船,可以在任何地方轻松启动,而不需要担心环境的差…

阿里云优惠口令2024最新

2024年阿里云域名优惠口令,com域名续费优惠口令“com批量注册更享优惠”,cn域名续费优惠口令“cn注册多个价格更优”,cn域名注册优惠口令“互联网上的中国标识”,阿里云优惠口令是域名专属的优惠码,可用于域名注册、续…

4G脚本开发网关助力城市智慧水务体系建设

智慧水务已经成为现代城市管理的重要组成部分。其中,4G脚本开发网关在智慧水务建设中扮演了关键角色,通过高速稳定的网络连接能力和强大的数据处理能力,实现了对水资源的全方位、精细化管理。 这种网关不仅具备稳定的4G通信能力,…

凡泰极客亮相2024 亚马逊云科技出海全球化论坛,为企业数字化出海赋能

随着「不出海,即出局」登上热搜榜单,企业出海已成燎原之势,3月29日,2024 亚马逊云科技出海全球化论坛在深圳成功举办,凡泰极客创始人梁启鸿受邀出席,并以 「App 2.0:以SuperApp构建智能数字生态…

2024年阿里云服务器优惠曝光:购买、续费、升级优惠都在这!

阿里云服务器租用价格表2024年最新,云服务器ECS经济型e实例2核2G、3M固定带宽99元一年,轻量应用服务器2核2G3M带宽轻量服务器一年61元,ECS u1服务器2核4G5M固定带宽199元一年,2核4G4M带宽轻量服务器一年165元12个月,2核…

Java基础(三)--常用工具类

文章目录 第三章、常用工具类一、Java异常1、什么是异常2、异常处理3、常见的异常类型4、throws5、throw6、自定义异常7、异常链 二、包装类1、包装类2、字符串与基本数据类型转换3、包装类的比较 三、String 类1、创建String对象的方法2、String的常用方法3、字符串的存储4、字…

wife_wife-攻防世界

题目 注册发现可以注册管理员,但是好像有条件 抓包试试 没思路了 看看其他师傅的wp,用到 js 原型链污染攻击 Nodejs原型链污染攻击基础知识 | Savants Blog (lxscloud.top) 网站后端是Node.js搭建的 原型链污染 简单来讲,通过 newUser.__proto__ …