[Diffusion Model笔记] DDPM数学推导版 2024.04.23

news2024/12/23 10:42:07

本文是观看以下视频的笔记:
https://www.bilibili.com/video/BV1CU4y1i7jn/?p=4&spm_id_from=pageDriver

其他参考
https://zhuanlan.zhihu.com/p/614147698
https://zhuanlan.zhihu.com/p/563661713

这个写的非常详细:
https://www.zhihu.com/question/574586781/answer/3001481574

符号定义

  • xT: 符合高斯分布的噪声
  • x0: 一个符合GT的图像,无噪声的,clean image
  • T: 时间步
  • xt: 第t步的图像,要从他推出t-1的图像。(一直推下去的话可以推出x0)
  • β t \beta_t βt:noise rate,关于t的固定序列,含义是每一步t要加的噪声的比例。
  • α t \alpha_t αt:signal rate,关于t的固定序列, α t \alpha_t αt= 1- β t \beta_t βt,含义是每一步t保留的上一步图像比例。通常会被设置为 lim ⁡ t → T α t = 0 \lim _{t \rightarrow T} \alpha_t=0 limtTαt=0。具体定义是: x t = α t x t − 1 + 1 − α t ϵ t \mathbf{x}_t=\sqrt{\alpha_t} \mathbf{x}_{t-1}+\sqrt{1-\alpha_t} \boldsymbol{\epsilon}_{t} xt=αt xt1+1αt ϵt
  • q:正向扩散:加噪声
  • p:逆向扩散:去噪声
  • ϵ t \boldsymbol{\epsilon}_t ϵt z t \mathbf{z}_t zt: xt相比xt-1加的噪声,服从标准正态分布。本文中z和epsilon混用
  • ϵ \boldsymbol{\epsilon} ϵ:不是t这一步的噪声,而是前面的噪声叠加后的结果,还是以服从标准正态分布
  • z波浪:网络预测的噪声,希望他尽可能接近真实的z

概述

https://www.bilibili.com/video/BV16N4y177Wk/?spm_id_from=333.788&
在这里插入图片描述
在这里插入图片描述

加噪(Forward,training)

初始定义: q ( x t ∣ x t − 1 ) q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right) q(xtxt1)

(“:=” 是定义为的意思)

  • q ( x t ∣ x t − 1 ) : = N ( x t ; α t x t − 1 , ( 1 − α t ) I ) q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right):=\mathcal{N}\left(\mathbf{x}_t;\sqrt{\alpha_t} \mathbf{x}_{t-1}, (1-\alpha_t\right)\mathbf{I}) q(xtxt1):=N(xt;αt xt1,(1αt)I) q ( x t ∣ x t − 1 ) ∼ N ( α t x t − 1 , ( 1 − α t ) I ) q\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right)\sim \mathcal{N}\left(\sqrt{\alpha_t} \mathbf{x}_{t-1}, (1-\alpha_t\right)\mathbf{I}) q(xtxt1)N(αt xt1,(1αt)I), 也即
  • x t = α t x t − 1 + 1 − α t ϵ t \mathbf{x}_t=\sqrt{\alpha_t} \mathbf{x}_{t-1}+\sqrt{1-\alpha_t} \boldsymbol{\epsilon}_{t} xt=αt xt1+1αt ϵt, 其中 ϵ t − 1 ∼ N ( 0 , 1 ) \boldsymbol{\epsilon}_{t-1} \sim \mathcal{N}(0,1) ϵt1N(0,1)

使用重参数技巧一步步展开可得: q ( x t ∣ x 0 ) q\left(\mathbf{x}_t \mid \mathbf{x}_0\right) q(xtx0)

  • q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) \mathbf{I}\right) q(xtx0)=N(xt;αˉt x0,(1αˉt)I) q ( x t ∣ x 0 ) ∼ N ( α ˉ t x 0 , ( 1 − α ˉ t ) I ) q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)\sim \mathcal{N}\left(\sqrt{\bar\alpha_t} \mathbf{x}_0, (1-\bar\alpha_t\right)\mathbf{I}) q(xtx0)N(αˉt x0,(1αˉt)I)也即

  • x t = α ˉ t x 0 + 1 − α ˉ t ϵ \mathbf{x}_t=\sqrt{\bar\alpha_t} \mathbf{x}_0+\sqrt{1-\bar\alpha_t} \boldsymbol{\epsilon} xt=αˉt x0+1αˉt ϵ, 其中 α ˉ t = ∏ i = 1 t α i \bar{\alpha}_t=\prod_{i=1}^t \alpha_i αˉt=i=1tαi, ϵ ∼ N ( 0 , 1 ) \boldsymbol{\epsilon} \sim \mathcal{N}(0,1) ϵN(0,1)

  • 注意区分“每一步t的噪声 ϵ t \boldsymbol{\epsilon}_t ϵt”和“他们叠加后的噪声 ϵ \boldsymbol{\epsilon} ϵ ”,

    • 叠加公式是 a X 1 + b X 2 ∼ N ( a μ 1 + b μ 2 , a 2 σ 1 2 + b 2 σ 2 2 ) \mathrm{aX_1}+\mathrm{bX_2}\sim N\left(\mathrm{a}\mu_1+b\mu_2,\mathrm{a}^2\sigma_1^2+b^2\sigma_2^2\right) aX1+bX2N(aμ1+bμ2,a2σ12+b2σ22)
  • 具体推导过程如下:

  • x t = α t x t − 1 + 1 − α t ϵ t = α t ( α t − 1 x t − 2 + 1 − α t − 1 ϵ t − 1 ) + 1 − α t ϵ t = α t α t − 1 x t − 2 + α t − α t α t − 1 2 + 1 − α t 2 ϵ ˉ t − 1 ; 两个相互独立的正态分布的叠加仍是正态分布 = α t α t − 1 x t − 2 + 1 − α t α t − 1 ϵ ˉ t − 1 = … = α ˉ t x 0 + 1 − α ˉ t ϵ \begin{aligned} \mathbf{x}_{t}& =\sqrt{\alpha_{t}}\mathbf{x}_{t-1}+\sqrt{1-\alpha_{t}}\epsilon_{t} \\ &=\sqrt{\alpha_t}\big(\sqrt{\alpha_{t-1}}\mathbf{x}_{t-2}+\sqrt{1-\alpha_{t-1}}\epsilon_{t-1}\big)+\sqrt{1-\alpha_t}\epsilon_{t} \\ &=\sqrt{\alpha_t\alpha_{t-1}}\mathbf{x}_{t-2}+\sqrt{\sqrt{\alpha_t-\alpha_t\alpha_{t-1}}^2+\sqrt{1-\alpha_t}^2}\bar{\epsilon}_{t-1} ; 两个相互独立的正态分布的叠加仍是正态分布\\ &=\sqrt{\alpha_t\alpha_{t-1}}\mathbf{x}_{t-2}+\sqrt{1-\alpha_t\alpha_{t-1}}\bar{\epsilon}_{t-1} \\ &=\ldots \\ &=\sqrt{\bar{\alpha}_{t}}\mathbf{x}_{0}+\sqrt{1-\bar{\alpha}_{t}}\epsilon \end{aligned} xt=αt xt1+1αt ϵt=αt (αt1 xt2+1αt1 ϵt1)+1αt ϵt=αtαt1 xt2+αtαtαt1 2+1αt 2 ϵˉt1;两个相互独立的正态分布的叠加仍是正态分布=αtαt1 xt2+1αtαt1 ϵˉt1==αˉt x0+1αˉt ϵ

或者看下图:
在这里插入图片描述

training

  • 每一个不同的t,对应的噪声都是不同的(重新随机采的)!
  • 网络预测不是某一步相比上一步增加的噪声 ϵ t \boldsymbol{\epsilon}_t ϵt,而是 ϵ t \boldsymbol{\epsilon}_t ϵt, ϵ t − 1 \boldsymbol{\epsilon}_{t-1} ϵt1…最后叠加得到的 ϵ \boldsymbol{\epsilon} ϵ
    在这里插入图片描述
    在这里插入图片描述

去噪(Reverse, inference, sampling)

目标是 p ( x t − 1 ∣ x t , x 0 ) p(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_0) p(xt1xt,x0)

现在我们有: q ( x t ∣ x t − 1 ) q(\mathbf{x}_t \mid \mathbf{x}_{t-1}) q(xtxt1) q ( x t ∣ x 0 ) q(\mathbf{x}_t \mid \mathbf{x}_0) q(xtx0) p ( x T ) = N ( x T ; 0 , I ) p(\mathbf{x}_T)=\mathcal{N}(\mathbf{x}_T ; \mathbf{0}, \mathbf{I}) p(xT)=N(xT;0,I)
要求的是: p ( x t − 1 ∣ x t ) p(\mathbf{x}_{t-1} \mid \mathbf{x}_t) p(xt1xt)
这个东西不好弄,我们改为求 p ( x t − 1 ∣ x t , x 0 ) p(\mathbf{x}_{t-1}|\mathbf{x}_{t},\mathbf{x}_0) p(xt1xt,x0)

开始,
p ( x t − 1 ∣ x t , x 0 ) = p ( x t ∣ x t − 1 , x 0 ) p ( x t − 1 ∣ x 0 ) p ( x t ∣ x 0 ) ( 贝叶斯公式 ) = p ( x t ∣ x t − 1 ) p ( x t − 1 ∣ x 0 ) p ( x t ∣ x 0 ) (马尔科夫假设) \begin{aligned} &p(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)\\ &=p(\mathbf{x}_t|\mathbf{x}_{t-1},\mathbf{x}_0)\frac{p(\mathbf{x}_{t-1}|\mathbf{x}_0)}{p(\mathbf{x}_t|\mathbf{x}_0)} (贝叶斯公式)\\ &=p(\mathbf{x}_t|\mathbf{x}_{t-1})\frac{p(\mathbf{x}_{t-1}|\mathbf{x}_0)}{p(\mathbf{x}_t|\mathbf{x}_0)}(马尔科夫假设) \end{aligned} p(xt1xt,x0)=p(xtxt1,x0)p(xtx0)p(xt1x0)(贝叶斯公式)=p(xtxt1)p(xtx0)p(xt1x0)(马尔科夫假设)

第一个等号:贝叶斯公式(将右边分母挪到左边后,两边就都是x0条件下xt-1和xt同时发生的概率)
第二个等号:由于从t-1到t这个加噪的过程是马尔科夫过程,即xt只与xt-1有关,而与更小的时间步无关,所以 p ( x t ∣ x t − 1 , x 0 ) = p ( x t ∣ x t − 1 , x 0 ) p(\mathbf{x}_t|\mathbf{x}_{t-1},\mathbf{x}_0)=p(\mathbf{x}_t|\mathbf{x}_{t-1},\mathbf{x}_0) p(xtxt1,x0)=p(xtxt1,x0)

最后的这三项都是已知的:
p ( x t ∣ x t − 1 ) : = N ( x t ; α t x t − 1 , ( 1 − α t ) I ) q ( x t ∣ x 0 ) = N ( x t ; α ˉ t x 0 , ( 1 − α ˉ t ) I ) q ( x t − 1 ∣ x 0 ) = N ( x t − 1 ; α ˉ t − 1 x 0 , ( 1 − α ˉ t − 1 ) I ) p\left(\mathbf{x}_t \mid \mathbf{x}_{t-1}\right):=\mathcal{N}\left(\mathbf{x}_t;\sqrt{\alpha_t} \mathbf{x}_{t-1}, (1-\alpha_t\right)\mathbf{I})\\ q\left(\mathbf{x}_t \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_t ; \sqrt{\bar{\alpha}_t} \mathbf{x}_0,\left(1-\bar{\alpha}_t\right) \mathbf{I}\right)\\ q\left(\mathbf{x}_{t-1} \mid \mathbf{x}_0\right)=\mathcal{N}\left(\mathbf{x}_{t-1} ; \sqrt{\bar{\alpha}_{t-1} } \mathbf{x}_0,\left(1-\bar{\alpha}_{t-1} \right) \mathbf{I}\right) p(xtxt1):=N(xt;αt xt1,(1αt)I)q(xtx0)=N(xt;αˉt x0,(1αˉt)I)q(xt1x0)=N(xt1;αˉt1 x0,(1αˉt1)I)

考虑到:
正态分布 f ( x ) = 1 σ 2 π e − ( x − μ ) 2 2 σ 2 f ( x ) ∝ e − ( x − μ ) 2 2 σ 2 正态分布 f(x) = \frac{1}{\sigma\sqrt{2\pi}} e{-\frac{(x-\mu)2}{2\sigma^2}} \\ f(x) \propto e{-\frac{(x-\mu)2}{2\sigma^2}} 正态分布f(x)=σ2π 1e2σ2(xμ)2f(x)e2σ2(xμ)2
把所有的正态分布换成这个正比于的表达方式,我们凑一下 p ( x t − 1 ∣ x t , x 0 ) p(\mathbf{x}_{t-1} \mid \mathbf{x}_t,\mathbf{x}_0) p(xt1xt,x0) 也写成这个形式:

下方的推导有以下注意点:

  • exp指数部分的常数如果拿到exp外面, 不影响“正比于”这件事,因此我们都忽略掉;
  • 注意,由于目标是 p ( x t − 1 ∣ x t ) p(\mathbf{x}_{t-1} \mid \mathbf{x}_t) p(xt1xt),我们最后的结果中只保留xt这个变量,用xt和预测的z波浪来表达x0

重参数技巧:写成一个新的正态分布,并表示出其均值和方差

p ( x t − 1 ∣ x t , x 0 ) = p ( x t ∣ x t − 1 ) p ( x t − 1 ∣ x 0 ) p ( x t ∣ x 0 ) ∝ exp ⁡ { − 1 2 ( ( x t − α t x t − 1 ) 2 1 − α t + ( x t − 1 − α ˉ t − 1 x 0 ) 2 1 − α ˉ t − 1 − ( x t − α ˉ t x 0 ) 2 1 − α ˉ t ) } \begin{aligned} &p(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)\\ &=p(\mathbf{x}_t|\mathbf{x}_{t-1})\frac{p(\mathbf{x}_{t-1}|\mathbf{x}_0)}{p(\mathbf{x}_t|\mathbf{x}_0)}\\ &{\propto\exp \left\{-\frac{1}{2}\left(\frac{\left(x_{t}-\sqrt{\alpha_{t}}x_{t-1}\right)^{2}}{1-\alpha_{t}}+\frac{\left(x_{t-1}-\sqrt{\bar\alpha_{t-1}} x_{0}\right)^{2}}{1-{\bar\alpha_{t-1}}}-\frac{\left(x_{t}-\sqrt{\bar\alpha_{t}} x_{0}\right)^{2}}{1-\bar\alpha_{t}}\right)\right\}}\\ \end{aligned} p(xt1xt,x0)=p(xtxt1)p(xtx0)p(xt1x0)exp{21(1αt(xtαt xt1)2+1αˉt1(xt1αˉt1 x0)21αˉt(xtαˉt x0)2)}

在这里插入图片描述
在这里插入图片描述
至此得到了方差,发现是固定的常数。下面继续求均值μ。
注意

  • 我们在这里把x0 用xt和网络预测的噪声z波浪来表示,从而消掉x0并引入z波浪
  • 下面没有等号的两行是单独的,要带进μ的等式的内容
    在这里插入图片描述

去噪总结

在这里插入图片描述

至此,我们求出了
p ( x t − 1 ∣ x t , x 0 ) ∝ N ( μ , σ 2 ) ,其中 σ 2 = 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t , μ = α t ( 1 − α ˉ t − 1 ) 1 − α ˉ t x t + α ˉ t − 1 β t 1 − α ˉ t x 0 = 1 α t ( x t − β t 1 − α t ˉ z ^ ) p(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0)\propto \mathcal{N(\mu, σ^2 )},其中\\ \sigma^2 = \frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\cdot\beta_t,\\ \mu=\frac{\sqrt{\alpha_t}(1-\bar{\alpha}_{t-1})}{1-\bar{\alpha}_t}\mathbf{x}_t+\frac{\sqrt{\bar{\alpha}_{t-1}}\beta_t}{1-\bar{\alpha}_t}\mathbf{x}_0\\=\frac{1}{\sqrt{\alpha_{t}}}(\mathbf{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar{\alpha_{t}}}}\hat{z}) p(xt1xt,x0)N(μ,σ2),其中σ2=1αˉt1αˉt1βt,μ=1αˉtαt (1αˉt1)xt+1αˉtαˉt1 βtx0=αt 1(xt1αtˉ βtz^)

也就是说,如果已知x0和xt,那么xt-1满足一个标准正态分布,其方差是常数,均值与网络预测的z波浪有关
因此,根据正态分布的重参数化技巧,
p ( x t − 1 ∣ x t , x 0 ) = μ + σ z = 1 α t ( x t − β t 1 − α t ˉ z ^ ) + 1 − α ˉ t − 1 1 − α ˉ t ⋅ β t z \begin{aligned} & p(\mathbf{x}_{t-1}|\mathbf{x}_t,\mathbf{x}_0) \\ &= \mu + \sigma \mathbf{z} \\ &=\frac{1}{\sqrt{\alpha_{t}}}(\mathbf{x}_{t}-\frac{\beta_{t}}{\sqrt{1-\bar{\alpha_{t}}}}\hat{z}) +\sqrt{\frac{1-\bar{\alpha}_{t-1}}{1-\bar{\alpha}_t}\cdot\beta_t} \mathbf{z} \end{aligned} p(xt1xt,x0)=μ+σz=αt 1(xt1αtˉ βtz^)+1αˉt1αˉt1βt z
其中z属于标准正态分布。

那么,为什么这里最后的z要用一个噪声采样而不直接设为0呢?如果全0的话,其实概率很低,符合正态分布的概率更高一些。

Sampling

上面那个式子直接就可以写成这样了,问题仅在于,我们省略的常数去哪 里了。不知道,可能刚好算出来还是没了吧。
在这里插入图片描述

  • 这个sigma t不一定要等于刚才求的那个标准差,比它小也行。
  • 注意,最后一步不再加噪声了

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

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

相关文章

【新手必读】Airtest测试Android手机常见的设置问题

经常有新手同学在使用Airtest测试Android手机的时候,遇到各式各样的问题,其中很大一部分,都是因为Android手机的设置不当,比如: 因为没有登录华为/荣耀/小米账号,而无法开启USB调试功能 因为没有关闭防止恶…

06_Scala流程控制

文章目录 [toc] 1.流程控制**小结:** **2. Scala中流程控制没有三元运算符****2.1 Scala中如果逻辑代码只有一行可以省略花括号****小结:** **3. 循环控制****3.1 for控制****3.2循环守卫 --> 循环表达式添加逻辑判断****3.3 循环步长 --> 表示循环…

IntelliJ IDEA 如何启用 JDK 预览特性

IntelliJ IDEA 也可以启用 JDK 的预览特性。 针对项目,选择项目结构。 配置是在语言结构上。 单击语言结构上的 SDK 默认,往下拉,就可以看到针对新版本的选项。 同时还可以看到那些版本是支持新特性预览的,那些版本是不支持新特…

Python 使用相对路径读取文件失败

python open一个问及那时使用绝对路径可以,但是使用相对路径时报错,找不到指定文件 解决步骤如下: 添加Python配置 在新增的配置Json文件添加下图红框这一行

Linux——(关于权限常见的3个问题)

文章目录 1.修改文件或者目录的拥有者和所属组1.1chown指令1.2chgrp指令 2.常见的权限三个问题2.1对应一个目录,如果要进入,需要什么权限?2.2为什么我们创建的文件默认权限不是7772.2.1关于Linux下的权限掩码 2.3文件能否被删除取决于什么2.3…

与Apollo共创生态:Apollo7周年大会自动驾驶生态利剑出鞘

前言 4月22日,百度Apollo在北京车展前夕举办了以“破晓•拥抱智变时刻”为主题的智能汽车产品发布会,围绕汽车智能化,发布了智驾、智舱、智图等全新升级的“驾舱图”系列产品。 1、7周年大会 自2013年百度开始布局自动驾驶,201…

吴恩达2022机器学习专项课程(一) 6.2 逻辑回归第三周课后实验:Lab2逻辑回归

问题预览/关键词 逻辑回归预测分类创建逻辑回归算法Sigmoid函数Sigmoid函数的表示sigmoid输出的结果Numpy计算指数的方法实验python实现sigmoid函数打印输入的z值和sigmoid计算的值可视化z值和sigmoid的值添加更多数据,使用逻辑回归可以正常预测分类![在这里插入图片…

GMSSL编译iOS

一、GMSSL-2.x 国密SDK源码下载,对GMSSL库进行编译生成对应的静态库。执行如下命令: cd到SDK源码目录 cd /Users/xxxx/Downloads/GMSSLV2-master查看SDK适用环境 ./config上图中错误解决方法 使用文本编辑器打开SDK目录下Configure、test/build.info、…

第十五届蓝桥杯省赛第二场C/C++B组C题【传送阵】题解(AC)

解题思路 由于 a a a 数组是一个 1 1 1 到 n n n 的一个排列,那么形成的一定是如下形式: 一定会构成几个点的循环,或者是几个单独的点。 从任意点开始,如果能进入一个循环,一定可以将整个循环的宝藏都拿走&#x…

android room 数据库升级的原则

1.如果新加了一张数据表则什么都不用干直接database那里将数据库版本升1 就可以nichuang 在entities里增加新加的entity ProviderMeta.DB_VERSION 版本号增1 room会自动生成 一个ProviderMeta.DB_VERSION 版本号的json文件 比如实例中升级到70 就会生成一个70.json的文件这是r…

发电厂智能巡检机器人:让发电厂更安全、更高效

在发电厂的众多应用场景中,升压站、化学车间、空冷塔、输煤皮带、综合管廊等,一直以来都是人工巡检的主战场。然而,这些场所环境极为复杂,人工巡检面临着诸多难题,强度大、频率低、间隔长等问题突出。这使得设备在运行…

三星应用TRIZ创新方法的经验分享:探索科技前沿的奥秘

TRIZ,即发明问题解决理论,于1946年被提出。它是一种基于知识和经验的创新方法,旨在帮助人们快速有效地解决各种复杂问题。TRIZ理论包含了大量的创新原理、算法和工具,可以帮助企业快速识别问题、寻找解决方案,并推动创…

【前端】VUE项目创建

在所需文件夹中打开cmd命令行窗口,输入vue ui 进入web可视化界面选择创建新项目 根据需求依次完成下列选择,下列是参考配置,完成后点击创建项目即可 最终显示完成

Opencv | 边缘提取

目录 一. 边缘检测1. 边缘的定义2. Sobel算子 边缘提取3. Scharr算子 边缘提取4. Laplacian算子 边缘提取5. Canny 边缘检测算法5.1 计算梯度的强度及方向5.2 非极大值抑制5.3 双阈值检测5.4 抑制孤立弱边缘 二. 轮廓信息1. 获取轮廓信息2. 画轮廓 一. 边缘检测 1. 边缘的定义…

智慧图书管理|基于SSM+vue的网上服装商城系统(源码+数据库+文档)

智慧图书管理目录 基于SSMvue的网上服装商城系统 一、前言 二、系统设计 三、系统功能设计 1.1 服装列表 1.2 公告信息管理 1.3 公告类型管理 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍&#xff1…

webpack 入口和出口的最佳实践

入口和出口的最佳实践 {ignore} 具体情况具体分析 下面是一些经典场景 一个页面一个JS 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传 源码结构 |—— src|—— pageA 页面A的代码目录|—— index.js 页面A的启动模块|—— ...|—— pageB 页面…

分享一些常用的内外网文件传输工具

内外网隔离后的文件传输是网络安全领域中一个常见而又重要的问题。随着信息技术的快速发展,网络安全问题日益凸显,内外网隔离成为了许多企业和组织保护内部信息安全的重要手段。然而,内外网隔离后如何有效地进行文件传输,成为了摆…

【sgSearch_v2】自定义组件:常用搜索栏筛选框组件(展开后更多搜索内容悬浮于其他组件之上,不影响整体布局高度)。

sgSearch_v2源码 <template><div:class"$options.name":expand"expandSearch":showCollapseBtn"showCollapseBtn"keyup.enter"(expandSearch true), $emit(keyupEnter, {})"><ul class"search-list">&l…

第一阶段--Day1--什么是网络安全?网络安全常用术语

目录 1. 什么是网络安全&#xff1f; 信息系统&#xff08;Information System&#xff09; 信息系统安全三要素&#xff08;CIA&#xff09; 网络空间安全管理流程 网络安全管理 2. 网络安全的常用术语 3. 网络安全形势 4. 中国网络安全产业现状 1. 什么是网络安全&am…

Leetcode—1256. 加密数字【中等】Plus(bitset、find_first_not_of、erase)

2024每日刷题&#xff08;120&#xff09; Leetcode—1256. 加密数字 实现代码 class Solution { public:string encode(int num) {string ans;num 1;while(num ! 0) {ans to_string(num & 1);num num >> 1;}if(ans.empty()) {return "";} else {stri…