当前位置: 首页 > news >正文

线性代数笔记28--奇异值分解(SVD)

1. 奇异值分解

假设矩阵 A A A m m m n n n

奇异值分解就是在 A A A的行向量上选取若干对标准正交基,对它作 A A A矩阵变化并投射到了 A A A的列空间上的正交基的若干倍数。

A v → = u → σ u → ∈ R m v → ∈ R n A\overrightarrow{v}=\overrightarrow{u} \sigma\\ \overrightarrow{u} \in R^{m} \quad \overrightarrow{v} \in R^{n} Av =u σu Rmv Rn

其中 σ \sigma σ被称为奇异值,我们在计算时将奇异值从大到小进行排列。

假设有 r r r对行空间和列空间上的标准正交基可以进行上面的变化

那么我们得到了
A [ v 1 → ⋯ v r → v r + 1 → ⋯ v n → ] = [ u 1 → ⋯ u r → u r + 1 → ⋯ u m → ] [ σ 1 σ 2 ⋯ σ r ] A[\overrightarrow{v_1}\cdots\overrightarrow{v_r}\overrightarrow{v_{r+1}}\cdots \overrightarrow{v_n}] =\\ [\overrightarrow{u_1}\cdots\overrightarrow{u_r}\overrightarrow{u_{r+1}}\cdots\overrightarrow{u_m}] \begin{bmatrix} \sigma_1 & \ & \ & \ \\ \ & \sigma_2 & \ & \ \\ \ & \ & \cdots & \ \\ \ & \ & \ & \ \sigma_r \\ \ & \ & \ & \ & \\ \end{bmatrix} A[v1 vr vr+1 vn ]=[u1 ur ur+1 um ] σ1     σ2           σr 
其中
u 1 → u 2 → ⋯ u r → ∈ C ( A ) \overrightarrow{u_1}\overrightarrow{u_2} \cdots \overrightarrow{u_r} \in C(A) u1 u2 ur C(A)

u r + 1 → ⋯ u m → ∈ N ( A ⊤ ) \overrightarrow{u_{r+1}} \cdots \overrightarrow{u_m}\in N(A^{\top}) ur+1 um N(A)

v 1 → v 2 → ⋯ v r → ∈ C ( A ⊤ ) \overrightarrow{v_1}\overrightarrow{v_2} \cdots \overrightarrow{v_r}\in C(A^{\top}) v1 v2 vr C(A)

v r + 1 → ⋯ v r → ∈ N ( A ) \overrightarrow{v_{r+1}} \cdots \overrightarrow{v_r} \in N(A) vr+1 vr N(A)

Σ \Sigma Σ矩阵有 m m m行, m − r m-r mr个零行。

SVD将四个空间联系起来, 将上面公式换成矩阵形式我们得到。

A V = U Σ AV=U\Sigma AV=UΣ
更进一步地有
A = U Σ V − 1 = U Σ V ⊤ A=U\Sigma V^{-1}=U\Sigma V^{\top} A=UΣV1=UΣV
加上行列号标识
A m × n = U m × m Σ m × n V n × n ⊤ A_{m\times n}=U_{m\times m}\Sigma_{m\times n}V^{\top}_{n\times n} Am×n=Um×mΣm×nVn×n

A = σ 1 u 1 v 1 ⊤ + ⋯ + σ r u r v r ⊤ = ∑ i = 1 r σ i u i v i ⊤ A =\sigma_1u_1v_1^{\top} + \cdots +\sigma_r u_rv_r^{\top}=\sum_{i=1}^{r}\sigma_iu_iv_i^{\top} A=σ1u1v1++σrurvr=i=1rσiuivi

这也是svd最精华的地方,任何一个矩阵都可以写成至多 n n n

m × 1 m\times1 m×1矩阵和 1 × n 1\times n 1×n矩阵的倍数相加。

为了规范,我们约定 σ 1 ≥ σ 2 ≥ ⋯ ≥ σ r \sigma_1 \ge \sigma_2 \ge \cdots \ge \sigma_r σ1σ2σr

如何求 A A A的奇异值分解呢?

可以利用 A ⊤ A A A ⊤ A^{\top}A\quad AA^{\top} AAAA来求。

假设 A = U Σ V ⊤ A = U\Sigma V^{\top} A=UΣV

A ⊤ A = V Σ ⊤ U ⊤ U Σ V ⊤ = V Σ ⊤ Σ V ⊤ A A ⊤ = U Σ ⊤ V ⊤ V Σ U ⊤ = U Σ ⊤ Σ U ⊤ A^{\top}A=V \Sigma^{\top}U^{\top}U\Sigma V^{\top}=V\Sigma^{\top}\Sigma V^{\top}\\ AA^{\top}=U \Sigma^{\top}V^{\top}V\Sigma U^{\top}=U\Sigma^{\top}\Sigma U^{\top}\\ AA=VΣUUΣV=VΣΣVAA=UΣVVΣU=UΣΣU
由于 A ⊤ A A A ⊤ A^{\top}A \quad AA^{\top} AAAA都是对称矩阵
( A A ⊤ ) ⊤ = A A ⊤ ( A ⊤ A ) ⊤ = A ⊤ A (AA^{\top})^{\top} =AA^{\top}\\ (A^{\top}A)^{\top} =A^{\top}A (AA)=AA(AA)=AA
不严谨的说,它们可以分解为 S Λ S ⊤ S\Lambda S^{\top} SΛS的形式。

因此求解 U V Σ U\quad V\quad \Sigma UVΣ变为了求解 A A ⊤ A ⊤ A AA^{\top}\quad A^{\top}A AAAA的特征值和特征向量。

2. 举例子

上面的符号描述还是太抽象了,我们举例子。

2.1 案例1

A = [ 4 4 − 3 3 ] A=\begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix} A=[4343]
A A A的转置
A ⊤ = [ 4 − 3 4 3 ] A^{\top}=\begin{bmatrix} 4 & -3 \\ 4 & 3 \\ \end{bmatrix} A=[4433]

A A ⊤ = [ 32 0 0 18 ] AA^{\top}=\begin{bmatrix} 32 & 0\\ 0 & 18\\ \end{bmatrix} AA=[320018]
λ 1 = 32 M 1 = A A ⊤ − λ 1 I = [ 0 0 0 − 14 ] M 1 [ 1 0 ] = [ 0 0 ] \lambda_1=32\\ M_1=AA^{\top}-\lambda_1 I=\\ \begin{bmatrix} 0 & 0 \\ 0 & -14 \end{bmatrix}\\ M_1\begin{bmatrix} 1\\0 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \end{bmatrix} λ1=32M1=AAλ1I=[00014]M1[10]=[00]
因此 A A ⊤ AA^{\top} AA的一个特征向量为
u 1 → = [ 1 0 ] \overrightarrow{u_1}=\begin{bmatrix} 1\\0 \end{bmatrix} u1 =[10]
同理
λ 2 = 18 M 2 = A A ⊤ − λ 2 I = [ 14 0 0 0 ] M 2 [ 0 1 ] = [ 0 0 ] \lambda_2=18\\ M_2=AA^{\top}-\lambda_2 I=\\ \begin{bmatrix} 14 & 0 \\ 0 & 0 \end{bmatrix}\\ M_2\begin{bmatrix} 0 \\ 1 \end{bmatrix}=\begin{bmatrix} 0 \\ 0 \end{bmatrix} λ2=18M2=AAλ2I=[14000]M2[01]=[00]
因此 A A ⊤ AA^{\top} AA的另一个特征向量为
u 2 → = [ 0 1 ] \overrightarrow{u_2}= \begin{bmatrix} 0 \\ 1 \end{bmatrix} u2 =[01]
因此我们可以得到矩阵 U U U

U = [ 1 0 0 1 ] U=\begin{bmatrix} 1 & 0\\ 0 & 1\\ \end{bmatrix} U=[1001]

另一方面
A ⊤ A = [ 25 7 7 25 ] A^{\top}A=\begin{bmatrix} 25 & 7 \\ 7 & 25 \end{bmatrix} AA=[257725]
同理我们可以求得
( 25 − λ ) ( 25 − λ ) − 49 = 0 ( λ − 32 ) ( λ − 18 ) = 0 λ 1 = 32 λ 2 = 18 (25-\lambda)(25-\lambda)-49=0\\ (\lambda-32)(\lambda-18)=0\\ \lambda_1=32\quad \lambda_2=18 (25λ)(25λ)49=0(λ32)(λ18)=0λ1=32λ2=18
对应的
M 1 ′ = A ⊤ A − λ 1 I = [ − 7 7 7 − 7 ] M 1 ′ [ 1 1 ] = 0 M_1'=A^{\top}A-\lambda_1I= \begin{bmatrix} -7 & 7\\ 7 & -7 \end{bmatrix}\\ M_1'\begin{bmatrix}1\\1\end{bmatrix}=0 M1=AAλ1I=[7777]M1[11]=0
因此 A ⊤ A A^{\top}A AA的一个特征向量单位化后
v 1 → = 2 2 [ 1 1 ] \overrightarrow{v_1}=\frac{\sqrt{2}}{2}\begin{bmatrix} 1 \\1 \end{bmatrix} v1 =22 [11]
同理
M 2 ′ = A ⊤ A − λ 2 I = [ 7 7 7 7 ] M 2 ′ [ 1 − 1 ] = [ 0 0 ] M_2'=A^{\top}A-\lambda_2I=\begin{bmatrix}7 & 7\\7 & 7 \end{bmatrix}\\ M_2'\begin{bmatrix}1 \\ -1 \end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix} M2=AAλ2I=[7777]M2[11]=[00]
A ⊤ A A^{\top}A AA的另一个特征向量单位化后
v 2 → = 2 2 [ 1 − 1 ] \overrightarrow{v_2}=\frac{\sqrt{2}}{2}\begin{bmatrix} 1\\ -1 \end{bmatrix} v2 =22 [11]
因此得到矩阵 V V V

V = [ 2 2 2 2 2 2 − 2 2 ] V= \begin{bmatrix} \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2}\\ \end{bmatrix} V=[22 22 22 22 ]

又有 σ 2 = λ \sigma^2=\lambda σ2=λ

那么 Σ \Sigma Σ矩阵为

Σ = [ 4 2 0 0 3 2 ] \Sigma=\begin{bmatrix} 4\sqrt{2} & 0\\ 0 & 3\sqrt{2} \end{bmatrix} Σ=[42 0032 ]

最终分解形式为
A = U Σ V ⊤ = [ 1 0 0 1 ] [ 4 2 0 0 3 2 ] [ 2 2 2 2 2 2 − 2 2 ] A=U\Sigma V^{\top}= \begin{bmatrix} 1 & 0\\ 0 & 1\\ \end{bmatrix} \begin{bmatrix} 4\sqrt{2} & 0\\ 0 & 3\sqrt{2} \end{bmatrix} \begin{bmatrix} \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2}\\ \end{bmatrix} A=UΣV=[1001][42 0032 ][22 22 22 22 ]
我们验算后发现,右边符号不对劲;得到的矩阵为
[ 4 4 3 − 3 ] \begin{bmatrix}4 & 4\\ 3 & -3\\ \end{bmatrix} [4343]
因此上面有一步错误
验证
A v 1 → = [ 4 4 − 3 3 ] [ 2 2 2 2 ] = [ 4 2 0 ] = σ 1 v 1 → A v 2 → = [ 4 4 − 3 3 ] [ 2 2 − 2 2 ] = [ 0 − 3 2 ] ≠ σ 2 v 2 → A\overrightarrow{v_1}= \begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix} \begin{bmatrix} \frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2} \end{bmatrix}= \begin{bmatrix} 4\sqrt{2}\\0 \end{bmatrix}=\sigma_1\overrightarrow{v_1}\\ A\overrightarrow{v_2}= \begin{bmatrix} 4 & 4 \\ -3 & 3 \end{bmatrix} \begin{bmatrix} \frac{\sqrt{2}}{2}\\ -\frac{\sqrt{2}}{2} \end{bmatrix}= \begin{bmatrix} 0\\-3\sqrt{2} \end{bmatrix}\ne\sigma_2\overrightarrow{v_2}\\ Av1 =[4343][22 22 ]=[42 0]=σ1v1 Av2 =[4343][22 22 ]=[032 ]=σ2v2
因此 v 2 → ≠ [ 2 2 − 2 2 ] \overrightarrow{v_2} \ne \begin{bmatrix}\frac{\sqrt{2}}{2}\\-\frac{\sqrt{2}}{2}\end{bmatrix} v2 =[22 22 ],我们符号换下下就好了。

v 2 → = [ − 2 2 2 2 ] \overrightarrow{v_2}= \begin{bmatrix} -\frac{\sqrt{2}}{2}\\\frac{\sqrt{2}}{2} \end{bmatrix} v2 =[22 22 ]

最终 A A A的奇异值分解形式为

A = [ 1 0 0 1 ] [ 4 2 0 0 3 2 ] [ 2 2 2 2 − 2 2 2 2 ] A=\begin{bmatrix} 1 & 0\\ 0 & 1\\ \end{bmatrix} \begin{bmatrix} 4\sqrt{2} & 0\\ 0 & 3\sqrt{2} \end{bmatrix} \begin{bmatrix} \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\\ -\frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\\ \end{bmatrix} A=[1001][42 0032 ][22 22 22 22 ]
变成秩1矩阵相乘相加的形式为
A = 4 2 [ 1 0 ] [ 2 2 2 2 ] + 3 2 [ 0 1 ] [ − 2 2 2 2 ] A=4\sqrt{2} \begin{bmatrix}1\\0\end{bmatrix}\begin{bmatrix}\frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\end{bmatrix}+3\sqrt{2}\begin{bmatrix}0 \\ 1\end{bmatrix}\begin{bmatrix}-\frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\end{bmatrix} A=42 [10][22 22 ]+32 [01][22 22 ]

2.2 案例2

过程就省略一些了
A = [ 1 0 − 1 0 1 0 ] A ⊤ = [ 1 0 0 1 − 1 0 ] A=\begin{bmatrix} 1 & 0 & -1 \\ 0 & 1 & 0 \end{bmatrix}\\ A^{\top}=\begin{bmatrix} 1 & 0\\0 & 1\\-1 & 0 \end{bmatrix} A=[100110]A= 101010
A ⊤ A = [ 1 0 − 1 0 1 0 − 1 0 1 ] λ 1 = 2 , λ 1 = 1 , λ 3 = 0 v 1 = [ 2 2 0 − 2 2 ] v 2 = [ 0 1 0 ] v 3 = [ 2 2 0 2 2 ] A^{\top}A=\begin{bmatrix} 1 & 0 & -1 \\ 0 & 1 & 0\\ -1 & 0 & 1 \end{bmatrix}\\ \lambda_1=2,\lambda_1=1,\lambda_3=0\\ v_1=\begin{bmatrix} \frac{\sqrt{2}}{2}\\ 0\\ -\frac{\sqrt{2}}{2}\\ \end{bmatrix} v_2=\begin{bmatrix} 0 \\ 1 \\ 0 \end{bmatrix} v_3 = \begin{bmatrix} \frac{\sqrt{2}}{2}\\0 \\ \frac{\sqrt{2}}{2} \end{bmatrix} AA= 101010101 λ1=2,λ1=1,λ3=0v1= 22 022 v2= 010 v3= 22 022
因此
V = [ 2 2 0 2 2 0 1 0 − 2 2 0 2 2 ] V=\begin{bmatrix} \frac{\sqrt{2}}{2} & 0 & \frac{\sqrt{2}}{2}\\ 0 & 1 & 0\\ -\frac{\sqrt{2}}{2} & 0 & \frac{\sqrt{2}}{2} \end{bmatrix} V= 22 022 01022 022
同理
A A ⊤ = [ 2 0 0 1 ] λ 1 = 2 , λ 2 = 1 u 1 = [ 1 0 ] u 2 = [ 0 1 ] AA^{\top}=\begin{bmatrix} 2 & 0\\ 0 & 1 \end{bmatrix}\\ \lambda_1= 2, \lambda_2=1\\ u_1=\begin{bmatrix} 1 \\0 \end{bmatrix} u_2=\begin{bmatrix} 0 \\ 1 \end{bmatrix} AA=[2001]λ1=2,λ2=1u1=[10]u2=[01]
因此
U = [ 1 0 0 1 ] U=\begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} U=[1001]
最终 A A A的奇异值分解为
A = U Σ V ⊤ = [ 1 0 0 1 ] [ 2 0 0 0 1 0 ] [ 2 2 0 − 2 2 0 1 0 2 2 0 2 2 ] A=U\Sigma V^{\top}\\= \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix} \begin{bmatrix} \sqrt{2} & 0 & 0\\ 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} \frac{\sqrt{2}}{2} & 0 & -\frac{\sqrt{2}}{2}\\ 0 & 1 & 0\\ \frac{\sqrt{2}}{2} & 0 & \frac{\sqrt{2}}{2} \end{bmatrix} A=UΣV=[1001][2 00100] 22 022 01022 022
变成秩1矩阵相乘相加的形式为
A = 2 [ 1 0 ] [ 2 2 0 2 2 ] + 1 [ 0 1 ] [ 0 1 0 ] A=\sqrt{2} \begin{bmatrix}1\\0\end{bmatrix}\begin{bmatrix}\frac{\sqrt{2}}{2} & 0 & \frac{\sqrt{2}}{2}\end{bmatrix}+ 1\begin{bmatrix}0 \\ 1\end{bmatrix}\begin{bmatrix}0 & 1 & 0\end{bmatrix} A=2 [10][22 022 ]+1[01][010]

2.3 案例3

A = [ 1 − 2 0 0 − 2 1 ] A=\begin{bmatrix} 1 & -2 & 0\\ 0 & -2 & 1 \end{bmatrix} A=[102201]

A ⊤ = [ 1 0 − 2 − 2 0 1 ] A ⊤ A = [ 1 − 2 0 − 2 8 − 2 0 − 2 1 ] λ 1 = 9 , λ 2 = 1 , λ 3 = 0 v 1 = [ 2 6 − 2 2 3 2 6 ] v 2 = [ 2 2 0 − 2 2 ] v 3 = [ 2 3 1 3 2 3 ] A^{\top}=\begin{bmatrix} 1 & 0\\ -2 & -2 \\ 0 & 1 \end{bmatrix}\\ A^{\top}A=\begin{bmatrix} 1 & -2 & 0\\ -2 & 8 & -2\\ 0 & -2 & 1 \end{bmatrix}\\ \lambda_1=9,\lambda_2=1,\lambda_3=0\\ v_1=\begin{bmatrix} \frac{\sqrt{2}}{6} \\ -\frac{2\sqrt{2}}{3}\\\frac{\sqrt{2}}{6} \end{bmatrix} v_2=\begin{bmatrix} \frac{\sqrt{2}}{2} \\ 0 \\ -\frac{\sqrt{2}}{2} \end{bmatrix} v_3=\begin{bmatrix} \frac{2}{3} \\ \frac{1}{3} \\ \frac{2}{3} \end{bmatrix} A= 120021 AA= 120282021 λ1=9,λ2=1,λ3=0v1= 62 322 62 v2= 22 022 v3= 323132
因此
V = [ 2 6 2 2 2 3 − 2 2 3 0 1 3 2 6 2 2 2 3 ] V=\begin{bmatrix} \frac{\sqrt{2}}{6} & \frac{\sqrt{2}}{2} & \frac{2}{3}\\ -\frac{2\sqrt{2}}{3} & 0 & \frac{1}{3}\\ \frac{\sqrt{2}}{6} & \frac{\sqrt{2}}{2} & \frac{2}{3} \end{bmatrix} V= 62 322 62 22 022 323132
同理
A A ⊤ = [ 5 4 4 5 ] λ 1 = 9 λ 2 = 1 u 1 = [ 2 2 2 2 ] u 2 = [ 2 2 − 2 2 ] AA^{\top}= \begin{bmatrix} 5 & 4 \\4 & 5 \end{bmatrix}\\ \lambda_1=9\ \lambda_2=1\\ u_1=\begin{bmatrix} \frac{\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2} \end{bmatrix}u_2=\begin{bmatrix} \frac{\sqrt{2}}{2} \\ -\frac{\sqrt{2}}{2} \end{bmatrix} AA=[5445]λ1=9 λ2=1u1=[22 22 ]u2=[22 22 ]
因此
U = [ 2 2 2 2 2 2 − 2 2 ] U =\begin{bmatrix} \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} \end{bmatrix} U=[22 22 22 22 ]
最终 A A A的奇异值分解为
A = U Σ V ⊤ = [ 2 2 2 2 2 2 − 2 2 ] [ 3 0 0 0 1 0 ] [ 2 6 − 2 2 3 2 6 2 2 0 − 2 2 2 3 1 3 2 3 ] A=U\Sigma V^{\top}=\\ \begin{bmatrix} \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} \end{bmatrix} \begin{bmatrix} 3 & 0 & 0\\ 0 & 1 & 0 \end{bmatrix} \begin{bmatrix} \frac{\sqrt{2}}{6} & -\frac{2\sqrt{2}}{3} & \frac{\sqrt{2}}{6} \\ \frac{\sqrt{2}}{2} & 0 & -\frac{\sqrt{2}}{2}\\ \frac{2}{3}& \frac{1}{3}& \frac{2}{3} \end{bmatrix} A=UΣV=[22 22 22 22 ][300100] 62 22 32322 03162 22 32
变成秩1矩阵相乘相加的形式为
A = 3 [ 2 2 2 2 ] [ 2 6 − 2 2 3 2 6 ] + 1 [ 2 2 − 2 2 ] [ 2 2 0 − 2 2 ] A=3\begin{bmatrix}\frac{\sqrt{2}}{2} \\ \frac{\sqrt{2}}{2}\end{bmatrix}\begin{bmatrix}\frac{\sqrt{2}}{6} & -\frac{2\sqrt{2}}{3} & \frac{\sqrt{2}}{6}\end{bmatrix}+\\ 1\begin{bmatrix}\frac{\sqrt{2}}{2} \\ -\frac{\sqrt{2}}{2} \end{bmatrix}\begin{bmatrix} \frac{\sqrt{2}}{2} & 0 & -\frac{\sqrt{2}}{2}\\\end{bmatrix} A=3[22 22 ][62 322 62 ]+1[22 22 ][22 022 ]

参考

mit_svd
svd_numerical_examples
zhihu-svd

相关文章:

线性代数笔记28--奇异值分解(SVD)

1. 奇异值分解 假设矩阵 A A A有 m m m行 n n n列 奇异值分解就是在 A A A的行向量上选取若干对标准正交基,对它作 A A A矩阵变化并投射到了 A A A的列空间上的正交基的若干倍数。 A v → u → σ u → ∈ R m v → ∈ R n A\overrightarrow{v}\overrightarrow{u…...

【从零开始学习计算机科学】硬件设计与FPGA原理

硬件设计 硬件设计流程 在设计硬件电路之前,首先要把大的框架和架构要搞清楚,这要求我们搞清楚要实现什么功能,然后找找有否能实现同样或相似功能的参考电路板(要懂得尽量利用他人的成果,越是有经验的工程师越会懂得借鉴他人的成果)。如果你找到了的参考设计,最好还是…...

项目中同时使用Redis(lettuce)和Redisson的报错

温馨提示:图片有点小,可以放大页面进行查看... 问题1:版本冲突 直接上图,这个错表示依赖版本不匹配问题,我本地SpringBoot用的是2.7,但是Redisson版本用的3.32.5。 我们通过点击 artifactId跟进去 发现它…...

leetcode-数组

26. 删除有序数组中的重复项 已解答 简单 相关标签 相关企业 提示 给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 n…...

人工智能里的深度学习指的是什么?

深度学习(Deep Learning, 简称DL)是机器学习领域的一个重要分支,它通过构建和训练深层神经网络模型,从大量数据中自动学习和提取特征,以实现复杂任务的自动化处理和决策。以下是关于深度学习的详细介绍: 一…...

docker本地部署ollama

启动ollama容器 1.使用该命令启动CPU版运行本地AI模型 docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama 2.此命令用于启动GPU版本运行AI模型 前提是笔记本已配置NVIDIA的GPU驱动,可在shell中输入nvidia-smi查看详细情况…...

LangChain构建语言模型驱动应用的强大框架

LangChain 核心功能与组件链(Chains)记忆(Memory)提示模板(Prompts)代理(Agents)数据检索(Indexes) 应用场景文档问答自动化工作流知识管理系统 发展历程总结…...

2025-03-08 学习记录--C/C++-PTA 习题10-2 递归求阶乘和

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、题目描述 ⭐️ 二、代码&#xff08;C语言&#xff09;⭐️ #include <stdio.h>double fact( int n ); double facts…...

浅谈 DeepSeek 对 DBA 的影响

引言&#xff1a; 在人工智能技术飞速发展的背景下&#xff0c;DeepSeek 作为一款基于混合专家模型&#xff08;MoE&#xff09;和强化学习技术的大语言模型&#xff0c;正在重塑传统数据库管理&#xff08;DBA&#xff09;的工作模式。通过结合其强大的自然语言处理能力、推理…...

AI如何重塑运维体系

AI大模型的引入正在从被动响应到主动预防、从经验驱动到数据智能全面重构运维体系。 一、颠覆传统运维模式的技术革新 故障预测&#xff1a;从“救火”到“防火” AI大模型通过整合历史日志、硬件状态、网络流量等多模态数据&#xff0c;结合时间序列分析&#xff08;如LSTM&am…...

linux 内网下载 yum 依赖问题

1.上传系统镜像 创建系统目录&#xff0c;用户存放镜像&#xff0c;如下&#xff1a; mkdir /mnt/iso上传 iso 文件到 /mnt/iso 文件夹下。 2.挂载系统镜像 安装镜像至 /mnt/cdrom 目录中 mount -o loop /mnt/iso/CentOS-7-x86_64-Minimal-xx.iso /mnt/cdrom3.修改yum源配…...

mapbox开发小技巧

自定义图标 // 1、单个图标 const url ./static/assets/symbols/code24x24/VIDEO.png // 图标路径 map.loadImage(url ,(error, image) > {if (error) throw errormap.addImage(video-icon, image) })// 2、雪碧图利用canvas // json和png图片 function getStyleImage(fil…...

DeepSeek×博云AIOS:突破算力桎梏,开启AI普惠新纪元

背景 在全球人工智能技术高速迭代的背景下&#xff0c;算力成本高企、异构资源适配复杂、模型部署效率低下等问题&#xff0c;始终是制约企业AI规模化应用的关键。 DeepSeek以创新技术直击产业痛点&#xff0c;而博云先进算力管理平台AIOS的全面适配&#xff0c;则为这一技术…...

Java高频面试之集合-07

hello啊&#xff0c;各位观众姥爷们&#xff01;&#xff01;&#xff01;本baby今天来报道了&#xff01;哈哈哈哈哈嗝&#x1f436; 面试官&#xff1a;ArrayList 和 Vector 的区别是什么&#xff1f; ArrayList 与 Vector 的区别详解 ArrayList 和 Vector 都是 Java 中基于…...

Redis- 切片集群

切片集群 切片集群什么是Redis Cluster吗&#xff1f;为什么需要切片集群&#xff1f;Redis Cluster的数据分片机制是怎样的&#xff1f;哈希槽的算法是什么基本算法流程 待填坑 切片集群 什么是Redis Cluster吗&#xff1f;为什么需要切片集群&#xff1f; Redis Cluster是R…...

【项目日记(十)】瓶颈分析与使用基数树优化

前言 上一期我们对整个项目进行了细节部分的优化&#xff0c;并在最后测试了多线程环境下和malloc的性能对比测试&#xff0c;发现malloc有时候还是更胜一筹的&#xff0c;基于此我们进行对我们的内存池进行瓶颈分析与优化。 目录 前言 一、项目瓶颈分析 VS编译器下性能分…...

后台管理系统比较全面的分析对比

以下是主流的 后台管理系统模板 分类与技术选型指南&#xff0c;涵盖开源、商业及全栈解决方案&#xff0c;可根据项目需求灵活选择&#xff1a; 一、开源免费模板 1. React 技术栈 Ant Design Pro 官网&#xff1a;pro.ant.design特点&#xff1a;阿里出品&#xff0c;内置 R…...

HCIA复习拓扑实验

一.拓扑图 二.需求 1.学校内部的HTTP客户端可以正常通过域名www.baidu.com访问到百度网络中HTTP服务器 2.学校网络内部网段基于192.168.1.0/24划分&#xff0c;PC1可以正常访问3.3.3.0/24网段&#xff0c;但是PC2不允许 3.学校内部路由使用静态路由&#xff0c;R1和R2之间两…...

TI毫米波雷达开发 —— 串口输出数据解析

TI毫米波雷达开发 —— 串口输出解析 TLV协议协议概述HeaderBodyPadding TI 毫米波雷达芯片计算的结果数据都会从UART发出供上位机进行解析并展示。解析和展示是两个不同的概念&#xff0c;解析指提取有效数据并转换成常见的度量值。展示指数据的可视化。 由于雷达这个领域的特…...

Docker Desktop 4.38 安装与配置全流程指南(Windows平台)

一、软件定位与特性 Docker Desktop 是容器化应用开发与部署的一体化工具&#xff0c;支持在本地环境创建、管理和运行Docker容器。4.38版本新增GPU加速支持、WSL 2性能优化和Kubernetes 1.28集群管理功能&#xff0c;适用于微服务开发、CI/CD流水线搭建等场景。 二、安装环境…...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

【SpringBoot】100、SpringBoot中使用自定义注解+AOP实现参数自动解密

在实际项目中,用户注册、登录、修改密码等操作,都涉及到参数传输安全问题。所以我们需要在前端对账户、密码等敏感信息加密传输,在后端接收到数据后能自动解密。 1、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...