【Math】特征值和奇异值辨析

news2025/1/16 15:58:05

奇异值和特征值都描述了一个矩阵的一些特性,但很多情况下,对于两者之间的区别和联系都不太清楚。

本文就这两者进行解析,并对奇异值的一些简单应用进行探索。


奇异值与特征值的定义

奇异值与特征值都被用于描述矩阵作用于某些向量的标量,都是描述该向量模长变化幅度的数值。矩阵与向量的乘积得到一个新的向量,几何上相当于对向量进行了旋转和拉伸,就像是对向量施加了一个作用,或者说是变换。

定义:

  • 如果有向量 v v v能使得矩阵 A A A与之的积 A v = λ v Av=\lambda v Av=λv λ \lambda λ为标量,那么 λ \lambda λ v v v就分别是 A A A特征值特征向量
  • 如果存在单位正交矩阵 U U U V V V,使得 A = U D V T A=UDV^T A=UDVT D D D对角矩阵,对角线上的值被称为奇异值 U U U V V V中的列分别被称为 D D D左奇异向量右奇异向量

特征值只能在方阵中进行,而奇异值则没有这个限制

如果考虑矩阵的维度,奇异值的定义为:

对于一个秩为 r r r的矩阵 A m ∗ n A_{m*n} Amn,必存在 m ∗ m m*m mm的正交矩阵 U m ∗ m U_{m*m} Umm n ∗ n n*n nn的正交矩阵 V n ∗ n V_{n*n} Vnn m ∗ n m*n mn的矩阵 D m ∗ n D_{m*n} Dmn,使得:

A m ∗ n = U m ∗ m D m ∗ n V n ∗ n T = U m ∗ m [ Σ r ∗ r 0 0 0 ] m ∗ n V n ∗ n T A_{m*n}=U_{m*m}D_{m*n}V_{n*n}^T=U_{m*m}\begin{bmatrix}\Sigma_{r*r}&0\\0&0\end{bmatrix}_{m*n}V^T_{n*n} Amn=UmmDmnVnnT=Umm[Σrr000]mnVnnT

特征值

从定义中可看出,特征向量给出了方向不变作用的方向。 当 A A A作用于特征向量时( A v Av Av),它只是将特征向量 v v v数乘一个标量(对应的特征值 λ \lambda λ),相当于将 v v v长度变化了 λ \lambda λ倍,若 λ \lambda λ为正, v v v方向保持不变;否则, v v v方向反转。

例如:对于矩阵 A = [ 1 1 3 1 3 1 ] A=\begin{bmatrix}1&\frac{1}{3}\\\frac{1}{3}&1\end{bmatrix} A=[131311],单位圆被变换为椭圆,特征向量是所有向量中经过线性变换(乘以 A A A)后,方向不变的向量。

在这里插入图片描述

奇异值

特征向量不变的方向并不保证是拉伸效果最大的方向,而这是奇异向量的方向。

奇异值是非负实数,通常从大到小顺序排列

σ 1 \sigma_1 σ1是矩阵 A A A的最大奇异值,对应右奇异向量 v v v v v v a r g max ⁡ x , ∣ x ∣ = 1 ( ∣ ∣ A x ∣ ∣ 2 2 ) arg\max_{x,|x|=1}(||Ax||_2^2) argmaxx,x=1(∣∣Ax22)的解,换句话说:在 A A A与所有单位向量 x x x的乘积中, ∣ ∣ A v ∣ ∣ 2 2 = σ 1 ||Av||_2^2=\sigma_1 ∣∣Av22=σ1是最大的;但不保证乘积后方向不变

怎么理解这一点呢?

对于 A = U D V T A=UDV^T A=UDVT,可以这么理解:

  • V T V^T VT:旋转(正定矩阵)
  • D D D:缩放或拉伸(对角矩阵)
  • U U U:旋转(正定矩阵)

由于SVD分解对于 A A A本身没有任何的限制,也就是说,任何矩阵变换总可以看成旋转+缩放或拉伸+旋转的过程

既然这样,那么对于拉伸效果最大的判断,就是看 D D D矩阵中最大的奇异值了。

例如:对于矩阵 A = [ 1 1 3 1 3 1 ] A=\begin{bmatrix}1&\frac{1}{3}\\\frac{1}{3}&1\end{bmatrix} A=[131311],单位圆被变换为椭圆,奇异向量对应椭圆的半长轴,不同于上例中同一矩阵的特征值方向。

在这里插入图片描述

区别与联系

从上面的图中可以清楚的看到,奇异值与特征值的差异在于:

  • 特征向量描述的是矩阵的方向不变作用的向量
  • 奇异向量描述的是矩阵最大作用的方向向量

而它们的关联在于:

  • A T A A^TA ATA A A T AA^T AAT特征值是 A A A的奇异值的平方(具体的解释分析见下文)

方向不变和拉伸最大都是矩阵内禀的性质,方向不变在马尔可夫随机场中非常重要;而拉伸最大的方向则是数据方差分布最大的方向,所含信息量最大,是PCA等方法中的核心思想


A A A的奇异值与 A T A A^TA ATA A A T AA^T AAT的特征值的关系

首先,我们需要简单回顾一下特征值与特征向量:

如果对于任意方阵A,假设求得 n n n个特征值 [ λ 1 , λ 2 , . . . , λ n ] [\lambda_1,\lambda_2,...,\lambda_n] [λ1,λ2,...,λn],对应到特征向量为 [ x 1 , x 2 , . . . x n ] [x_1,x_2,...x_n] [x1,x2,...xn],其中每一个 x i x_i xi均为一个列向量。我们分别构建特征值对应的对角阵 Σ \Sigma Σ和特征向量构建的矩阵 W W W,有:

Σ = [ λ 1 λ 2 ⋱ λ n ] \Sigma=\begin{bmatrix}\lambda_1 \\ & \lambda_2 \\ && \ddots \\ &&& \lambda_n\end{bmatrix} Σ= λ1λ2λn

W = [ x 1 x 2 . . . x n ] W=\begin{bmatrix}x_1&x_2&...&x_n\end{bmatrix} W=[x1x2...xn]

那么结合 A x = λ x Ax=\lambda x Ax=λx,我们得到如下等式,即 A A A的特征分解表达式:

A W = W Σ ⇒ A = W Σ W − 1 AW=W\Sigma \Rightarrow A=W\Sigma W^{-1} AW=WΣA=WΣW1

进一步,由于特征向量是原空间经过线性变换后的方向向量,因此我们可以对每个特征向量进行尺度缩放,令其模长为1(归一化),即 ∣ ∣ x i ∣ ∣ 2 2 = 1 ||x_i||_2^2=1 ∣∣xi22=1。那么此时构建的 n n n个特征向量组成的矩阵 W W W则为正交矩阵,即满足 W T = W − 1 W^T=W^{-1} WT=W1。因此, A A A的特征分解表达式可改写为:

A = W Σ W T A=W\Sigma W^T A=WΣWT

有了以上结论,我们就可以进一步去探寻 A T A A^TA ATA的特征值与 A A A的奇异值之间的关系了。

我们知道, A A A的SVD分解结果为:

A = U D V T = U [ Σ 0 ] V T A=UDV^T=U\begin{bmatrix}\Sigma\\0\end{bmatrix}V^T A=UDVT=U[Σ0]VT

因此:

A T = V D T U T = V [ Σ 0 ] U T A^T=VD^TU^T=V\begin{bmatrix}\Sigma & 0\end{bmatrix}U^T AT=VDTUT=V[Σ0]UT

那么有:

A T A = V D T U T U D V T A^TA=VD^TU^TUDV^T ATA=VDTUTUDVT

由于 U U U是正交矩阵:

A T A = V D T D V T = V Σ 2 V T A^TA=VD^TDV^T=V\Sigma^2V^T ATA=VDTDVT=VΣ2VT

因此我们发现 A A A的右奇异矩阵 V V V正好是 A T A A^TA ATA的特征向量构建的矩阵 W W W。同时, A T A A^TA ATA特征值是 A A A奇异值的平方

同理:

A A T = U D V T V D T U T = U D D T U T = U Σ 2 U T AA^T=UDV^TVD^TU^T=UDD^TU^T=U\Sigma^2U^T AAT=UDVTVDTUT=UDDTUT=UΣ2UT

因此我们发现 A A A的左奇异矩阵 U U U正好是 A A T AA^T AAT的特征向量构建的矩阵 W W W。同时, A A T AA^T AAT特征值是 A A A奇异值的平方

在文章【Math】线性方程组的最小二乘解中,对齐次方程组的最小二乘解进行分析,其中对应的特征值解和奇异值解。根据结论,特征值解为 A T A A^TA ATA最小特征值对应的特征向量,奇异值解为 A A A最小奇异值对应的右奇异向量

根据本文结论, A T A A^TA ATA特征值是 A A A奇异值的平方,因此最小奇异值就对应着最小特征值,又因为 A A A的右奇异矩阵 V V V矩阵正好是 A T A A^TA ATA的特征向量构建的矩阵 W W W,因此 A T A A^TA ATA最小特征值对应的特征向量等同于 A A A最小奇异值对应的右奇异向量。这并不矛盾。

对于SVD分解与特征值特征向量的关系,我们还应该想到, A A A的SVD分解结果亦可通过特征分解得到。其中求解 A T A A^TA ATA的特征向量对应SVD中的 V V V;求解 A A T AA^T AAT的特征向量对应SVD中的 U U U;而 D D D也可通过特征值求平方根得到;最后在构建 U D V T UDV^T UDVT各矩阵行列顺序的时候,按照奇异值 σ \sigma σ从大到小的顺序构建即可


奇异值分解的求法

根据 A A A的奇异值与 A T A A^TA ATA A A T AA^T AAT的特征值的关系,我们就可以通过特征值的求法,来进行奇异值分解,下面介绍一下步骤:

第一步:求出 A m ∗ n T A m ∗ n A^T_{m*n}A_{m*n} AmnTAmn n n n个特征值 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 . . . ... ... λ r \lambda_r λr λ r + 1 = 0 \lambda_{r+1}=0 λr+1=0 λ r + 2 = 0 \lambda_{r+2}=0 λr+2=0 . . . ... ... λ n = 0 \lambda_{n}=0 λn=0(并按照从大到小排列)和对应的标准正交的特征向量 v 1 v_1 v1 v 2 v_2 v2 . . . ... ... v r v_r vr v r + 1 v_{r+1} vr+1 v r + 2 v_{r+2} vr+2 . . . ... ... v n v_n vn

第二步:取标准正交的特征向量构成正交矩阵

V n ∗ n = [ v 1 v 2 . . . v r v r + 1 v r + 2 . . . v n ] n ∗ n V_{n*n}=\begin{bmatrix}v_1&v_2&...&v_r&v_{r+1}&v_{r+2}&...&v_n\end{bmatrix}_{n*n} Vnn=[v1v2...vrvr+1vr+2...vn]nn

取正奇异值,即前 r r r个奇异值,即非零特征值开根号 λ 1 \sqrt{\lambda_1} λ1 λ 2 \sqrt{\lambda_2} λ2 . . . ... ... λ r \sqrt{\lambda_r} λr ,构成对角矩阵

Σ r ∗ r = [ λ 1 λ 2 ⋱ λ n ] r ∗ r \Sigma_{r*r}=\begin{bmatrix}\sqrt{\lambda_1} \\ & \sqrt{\lambda_2} \\ && \ddots \\ &&& \sqrt{\lambda_n}\end{bmatrix}_{r*r} Σrr= λ1 λ2 λn rr

添加额外的 0 0 0组成 m ∗ n m*n mn的矩阵:

D m ∗ n = [ Σ r ∗ r 0 0 0 ] m ∗ n D_{m*n}=\begin{bmatrix}\Sigma_{r*r}&0\\0&0\end{bmatrix}_{m*n} Dmn=[Σrr000]mn

第三步:求出 A m ∗ n A m ∗ n T A_{m*n}A_{m*n}^T AmnAmnT m m m个特征值 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2 . . . ... ... λ r \lambda_r λr λ r + 1 = 0 \lambda_{r+1}=0 λr+1=0 λ r + 2 = 0 \lambda_{r+2}=0 λr+2=0 . . . ... ... λ m = 0 \lambda_{m}=0 λm=0(并按照从大到小排列)和对应的标准正交的特征向量 u 1 u_1 u1 u 2 u_2 u2 . . . ... ... u r u_r ur u r + 1 u_{r+1} ur+1 u r + 2 u_{r+2} ur+2 . . . ... ... u n u_n un

第四步:取标准正交的特征向量构成正交矩阵

U m ∗ m = [ u 1 u 2 . . . u r v r + 1 u r + 2 . . . u m ] m ∗ m U_{m*m}=\begin{bmatrix}u_1&u_2&...&u_r&v_{r+1}&u_{r+2}&...&u_m\end{bmatrix}_{m*m} Umm=[u1u2...urvr+1ur+2...um]mm

结束。

再思考一下,因为 A T A A^TA ATA A A T AA^T AAT的秩相等、特征值一致,感觉第三步第四步有点重复的意思了,还有没有其他的办法代替这两步么?

从另个角度看:

A = U D V T ⇒ A V = U D V T V A=UDV^T \Rightarrow AV=UDV^TV A=UDVTAV=UDVTV

由于 V V V是正交矩阵,可以得到:

A V = U D ⇒ A v i = σ i u i ⇒ u i = 1 σ i A v i AV=UD \Rightarrow Av_i=\sigma_iu_i \Rightarrow u_i=\frac{1}{\sigma_i}Av_i AV=UDAvi=σiuiui=σi1Avi

这个时候,可以看到 Σ \Sigma Σ的维度为 r r r V V V的维度为 n n n,最多只可以计算出 U U U r r r个维度,还缺 m − r m-r mr个维度。此时可以通过标准正交的基扩充方法,将 u 1 u_1 u1 u 2 u_2 u2 . . . ... ... u r u_r ur扩充为 m m m维向量空间的标准正交基 u 1 u_1 u1 u 2 u_2 u2 . . . ... ... u r u_r ur b 1 b_1 b1 b 2 b_2 b2 . . . ... ... b m − r b_{m-r} bmr,组成正交矩阵:

U m ∗ m = [ u 1 u 2 . . . u r b 1 b 2 . . . b m − r ] m ∗ m U_{m*m}=\begin{bmatrix}u_1&u_2&...&u_r&b_{1}&b_{2}&...&b_{m-r}\end{bmatrix}_{m*m} Umm=[u1u2...urb1b2...bmr]mm

关于标准正交的基扩充,可以参考文章:奇异值分解(SVD)的定义、证明、求法。


奇异值的应用

假设想要对图片进行压缩,图片的像素矩阵为 A m ∗ n A_{m*n} Amn。根据SVD分解,可以将 A m ∗ n A_{m*n} Amn进行转换为:

A m ∗ n = U m ∗ m D m ∗ n V n ∗ n T A_{m*n}=U_{m*m}D_{m*n}V^T_{n*n} Amn=UmmDmnVnnT

我们现在存储的是 U m ∗ m U_{m*m} Umm D m ∗ n D_{m*n} Dmn V n ∗ n V_{n*n} Vnn三个矩阵。如何能够压缩这 3 3 3个矩阵的维度呢?

对于 m m m n n n列的矩阵 A A A, 通过SVD分解之后,拆分成了 3 3 3个子矩阵,其中 U U U矩阵为 m m m n n n列的方阵, V V V矩阵为 n n n n n n列的方阵, D D D矩阵为只有对角线有值的矩阵,其中的值称之为奇异值。

在奇异值分解中, D D D矩阵的奇异值是按照从大到小的顺序排列的,而且减少的特别快,经常前 10 % 10\% 10%的奇异值就占据了全部奇异值 99 % 99\% 99%以上的比例。基于这个性质,我们可以只提取前几个奇异值及其对应的矩阵来近似的描述原来的矩阵

通常, D D D矩阵可以根据 A A A矩阵的秩 r r r进行划分块:

D m ∗ n = [ Σ r ∗ r 0 0 0 ] m ∗ n D_{m*n}=\begin{bmatrix}\Sigma_{r*r}&0\\0&0\end{bmatrix}_{m*n} Dmn=[Σrr000]mn

如果只取前 k k k个奇异值,且 k ≥ r k\ge r kr,那么新的矩阵较原来的矩阵是无损的。这是因为, Σ \Sigma Σ矩阵的奇异值表示其对应的特征,而当 k ≥ r k\ge r kr时, D k ∗ k D_{k*k} Dkk已经包含了 Σ r ∗ r \Sigma_{r*r} Σrr的所有非零元素,所以其是可以完美复原出来的。

例如:

A 4 ∗ 5 = [ 1 0 0 0 2 0 0 3 0 0 0 0 0 0 0 0 4 0 0 0 ] A_{4*5}=\begin{bmatrix}1&0&0&0&2\\0&0&3&0&0\\0&0&0&0&0\\0&4&0&0&0\end{bmatrix} A45= 10000004030000002000

可以SVD分解为:

A 4 ∗ 5 = U 4 ∗ 4 D 4 ∗ 5 V 5 ∗ 5 T = [ 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 ] [ 4 0 0 0 0 0 3 0 0 0 0 0 5 0 0 0 0 0 0 0 ] [ 0 1 0 0 0 0 0 1 0 0 0.2 0 0 0 0.8 0 0 0 1 0 0.8 0 0 0 − 0.2 ] A_{4*5}=U_{4*4}D_{4*5}V_{5*5}^T=\begin{bmatrix}0&0&1&0\\0&1&0&0\\0&0&0&1\\1&0&0&0\end{bmatrix}\begin{bmatrix}4&0&0&0&0\\0&3&0&0&0\\0&0&\sqrt{5}&0&0\\0&0&0&0&0\end{bmatrix}\begin{bmatrix}0&1&0&0&0\\0&0&1&0&0\\\sqrt{0.2}&0&0&0&\sqrt{0.8}\\0&0&0&1&0\\\sqrt{0.8}&0&0&0&-\sqrt{0.2}\end{bmatrix} A45=U44D45V55T= 0001010010000010 40000300005 000000000 000.2 00.8 100000100000010000.8 00.2

如果 U U U取前 3 3 3列, D D D取前 3 3 3 3 3 3列, V T V^T VT取前 3 3 3行,那么:

U 4 ∗ 3 D 3 ∗ 3 V 3 ∗ 5 T = [ 0 0 1 0 1 0 0 0 0 1 0 0 ] [ 4 0 0 0 3 0 0 0 5 ] [ 0 1 0 0 0 0 0 1 0 0 0.2 0 0 0 0.8 ] = [ 1 0 0 0 2 0 0 3 0 0 0 0 0 0 0 0 4 0 0 0 ] U_{4*3}D_{3*3}V_{3*5}^T=\begin{bmatrix}0&0&1\\0&1&0\\0&0&0\\1&0&0\end{bmatrix}\begin{bmatrix}4&0&0\\0&3&0\\0&0&\sqrt{5}\end{bmatrix}\begin{bmatrix}0&1&0&0&0\\0&0&1&0&0\\\sqrt{0.2}&0&0&0&\sqrt{0.8}\end{bmatrix}=\begin{bmatrix}1&0&0&0&2\\0&0&3&0&0\\0&0&0&0&0\\0&4&0&0&0\end{bmatrix} U43D33V35T= 000101001000 400030005 000.2 100010000000.8 = 10000004030000002000

可以看到,该值与 A 4 ∗ 5 A_{4*5} A45完全一致。

如果 U U U取前 2 2 2列, D D D取前 2 2 2 2 2 2列, V T V^T VT取前 2 2 2行,那么:

U 4 ∗ 2 D 2 ∗ 2 V 2 ∗ 5 T = [ 0 0 0 1 0 0 1 0 ] [ 4 0 0 3 ] [ 0 1 0 0 0 0 0 1 0 0 ] = [ 0 0 0 0 0 0 0 3 0 0 0 0 0 0 0 0 4 0 0 0 ] U_{4*2}D_{2*2}V_{2*5}^T=\begin{bmatrix}0&0\\0&1\\0&0\\1&0\end{bmatrix}\begin{bmatrix}4&0\\0&3\end{bmatrix}\begin{bmatrix}0&1&0&0&0\\0&0&1&0&0\end{bmatrix}=\begin{bmatrix}0&0&0&0&0\\0&0&3&0&0\\0&0&0&0&0\\0&4&0&0&0\end{bmatrix} U42D22V25T= 00010100 [4003][0010010000]= 00000004030000000000

此时看到,该值与 A 4 ∗ 5 A_{4*5} A45不一致。

因此,假设 A A A的秩为 r r r,有:

A m ∗ n = U m ∗ m D m ∗ n V n ∗ n T ≈ U m ∗ k D k ∗ k V k ∗ n T A_{m*n}=U_{m*m}D_{m*n}V^T_{n*n}\approx U_{m*k}D_{k*k}V^T_{k*n} Amn=UmmDmnVnnTUmkDkkVknT

  • k ≥ r k\ge r kr时,没有损失
  • k < r k< r k<r时, k k k越大,损失的越小

图片压损也就是采用这个原理,可以将图片的矩阵进行SVD分解,取其前 k k k个奇异值,然后重新计算出该图片的样式。

PCA主成分分析法,其实也是采取的同样近似的原理,所谓主成分,就是奇异值较大的几个子矩阵,用它们来代替整体的矩阵


相关阅读

  • 白话来说SVD奇异值分解(1)→原理推导与奇异值求解举例
  • 奇异值与特征值辨析
  • 奇异值分解
  • 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用

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

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

相关文章

智能排水解决方案,设备实时监控+预测分析,真正实现“无人值守”!

什么是矿山排水 随着煤炭开采深度不断增加&#xff0c;地质条件也愈加复杂&#xff0c;井下综采作业会面临越来越高的渗水风险。为确保井下综采作业安全&#xff0c;需要设置大量排水系统&#xff0c;在矿山建设和生产过程中排除进入矿山的地下水和地表水。矿井排水系统是保障…

【C++】C++ 语言对 C 语言的加强 ① ( 实用性增强 - 变量任意位置定义 | register 关键字增强 - 自动进行寄存器优化 )

文章目录 一、实用性增强 - 变量任意位置定义二、register 关键字增强 - 自动进行寄存器优化 一、实用性增强 - 变量任意位置定义 C 语言定义变量位置 : 在 C 语言中 , 函数作用域中使用到的变量 , 必须在 作用域 开始的位置定义 , 一旦开始编写代码逻辑后 , 在逻辑代码行之间 …

【100天精通python】Day39:GUI界面编程_PyQt 从入门到实战(下)_图形绘制和动画效果,数据可视化,刷新交互

目录 专栏导读 6 图形绘制与动画效果 6.1 绘制基本图形、文本和图片 6.2 实现动画效果和过渡效果 7 数据可视化 7.1 使用 Matplotlib绘制图表 7.2 使用PyQtGraph绘制图表 7.3 数据的实时刷新和交互操作 7.3.1 数据的实时刷新 7.3.2 交互操作 7.4 自定义数据可视化…

vue实现穿梭框,ctrl多选,shift多选

效果图 代码 <template><div class"container"><!--左侧--><div><div class"title">{{ titles[0] }}</div><div class"layerContainer"><div v-for"item in leftLayerArray":key"…

Flink之时间语义

Flink之时间语义 简介 Flink中时间语义可以说是最重要的一个概念了,这里就说一下关于时间语义的机制,我们下看一下下面的表格,简单了解一下 时间定义processing time处理时间,也就是现实世界的时间,或者说代码执行时,服务器的时间event time事件时间,就是事件数据中所带的时…

LSTM模型

目录 LSTM模型 LSTM结构图 LSTM的核心思想 细胞状态 遗忘门 输入门 输出门 RNN模型 LRNN LSTM模型 什么是LSTM模型 LSTM (Long Short-Term Memory)也称长短时记忆结构,它是传统RNN的变体,与经典RNN相比能够有效捕捉长序列之间的语义关联,缓解梯度消失或爆炸现象.同时LS…

iOS自定义下拉刷新控件

自定义下拉刷新控件 概述 用了很多的别人的下拉刷新控件&#xff0c;想写一个玩玩&#xff0c;自定义一个在使用的时候也会比较有意思。使应用更加的灵动一些&#xff0c;毕竟谁不喜欢各种动画恰到好处的应用呢。 使用方式如下&#xff1a; tableview.refreshControl XRef…

【CTF-web】buuctf-[CISCN2019 华北赛区 Day2 Web1]Hack World(sql盲注)

题目链接 根据上图可知&#xff0c;页面中已经告诉我们要从flag表中的flag列取出flag&#xff0c;思考是sql注入。经过抓包发现发post包中的id字段是注入点。 经测试当输入id1时&#xff0c;结果为Hello, glzjin wants a girlfriend.&#xff0c;当id2时&#xff0c;结果为Do y…

Azure共享映像库构建VM镜像

什么是Azure共享映像库 Azure共享映像库是一项在Microsoft Azure中以共享方式存储和管理映像的服务。映像是预配置的虚拟机操作系统和应用程序的快照&#xff0c;可以用来创建多个虚拟机实例。通过将映像存储在共享映像库中&#xff0c;用户可以轻松地共享映像给其他Azure订阅…

MES管理系统如何帮助制造企业打造透明化工厂

在制造型企业的运营中&#xff0c;车间现场管理至关重要。然而&#xff0c;面临着信息传递速度慢、跨部门协作困难、生产进度无法及时掌握、制造品质不良、设备故障不能及时处理等困境&#xff0c;企业需要寻求有效的解决方案。MES生产管理系统作为针对制造企业车间生产过程控制…

REC 系列 Visual Grounding with Transformers 论文阅读笔记

REC 系列 Visual Grounding with Transformers 论文阅读笔记 一、Abstract二、引言三、相关工作3.1 视觉定位3.2 视觉 Transformer 四、方法4.1 基础的视觉和文本编码器4.2 定位编码器自注意力的文本分支文本引导自注意力的视觉分支 4.3 定位解码器定位 query 自注意力编码器-解…

教你手机摄影要知道的技巧

手机摄影已经成为人们记录生活、分享瞬间的重要方式之一。随着手机摄像头技术的不断提升&#xff0c;我们每个人都有机会成为优秀的手机摄影师。然而&#xff0c;要想在手机摄影领域脱颖而出&#xff0c;掌握一些关键的技巧是必不可少的。 1. 了解你的手机摄像头&#xff1a; …

使用percona-xtrabackup备份MySQL数据

xtrabackup备份分为两种 本文参考链接1 本文参考链接2 全量备份 1.备份数据 要创建备份&#xff0c;请xtrabackup使用xtrabackup --backup option. 您还需要指定一个xtrabackup --target-dir选项&#xff0c;即备份的存储位置&#xff0c;如果InnoDB数据或日志文件未存储在同…

Electron入门,项目启动。

electron 简单介绍&#xff1a; 实现&#xff1a;HTML/CSS/JS桌面程序&#xff0c;搭建跨平台桌面应用。 electron 官方文档&#xff1a; [https://electronjs.org/docs] 本文是基于以下2篇文章且自行实践过的&#xff0c;可行性真实有效。 文章1&#xff1a; https://www.cnbl…

Tomcat 为什么要破坏 Java 双亲委派机制?

大家好&#xff0c;我是锋哥!&#xff01; 我们分为4个部分来探讨: 什么是类加载机制&#xff1f;什么是双亲委任模型&#xff1f;如何破坏双亲委任模型&#xff1f;Tomcat 的类加载器是怎么设计的&#xff1f; 我想&#xff0c;在研究tomcat 类加载之前&#xff0c;我们复习…

java+springboot+mysql银行管理系统

项目介绍&#xff1a; 使用javaspringbootmysql开发的银行管理系统&#xff0c;系统包含超级管理员、管理员、客户角色&#xff0c;功能如下&#xff1a; 超级管理员&#xff1a;管理员管理&#xff1b;客户管理&#xff1b;卡号管理&#xff08;存款、取款、转账&#xff09…

自动化安装系统(三)

Cobbler 简介 Cobbler是一款Linux生态的自动化运维工具&#xff0c;基于Python2开发&#xff0c;用于自动化批量部署安装操作系 统&#xff1b;其提供基于CLI的管理方式和WEB配置界面&#xff0c;其中WEB配置界面是基于Python2和Django框架开发。另外&#xff0c;cobbler还提…

Go语言基础之运算符

运算符用于在程序运行时执行数学或逻辑运算。 运算符 Go 语言内置的运算符有&#xff1a; 算术运算符关系运算符逻辑运算符位运算符赋值运算符

【Java】Spring——Bean对象的作用域和生命周期

文章目录 前言一、引出Bean对象的作用域1.普通变量的作用域2.Bean对象的作用域 二、Bean对象的作用域1.Bean对象的6种作用域2.设置Bean对象的作用域 三、Bean对象的生命周期总结 前言 本人是一个普通程序猿!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果你也…

window安裝python2.7.0

官网下载安装 https://www.python.org/downloads/release/python-270/ 选中所有用户&#xff0c;然后点击next 切换安装位置&#xff0c;最好不要选择c盘 点击next 等待安装 安装完成 配置环境变量 将python安装路径添加到系统环境变量 cmd窗口输入python,会打开应用商…