矩阵 II : 线性组的线性相关性

    学习机器学习, 基础的线性代数知识是必备的基础功, 对于线性代数的探索, 向量组也是线性代数的重要基础. 今天我们就开始学习一下线性代数中重要的向量组知识. 这是本人关于线性组的线性相关性的学习分享.

章节目录

  1. 相关性基本概念
    1.1 相性相关和线性无关
    1.2 相性相关性的判别定理
  2. 向量组的秩与极大无关组
    2.1 秩与极大无关组
    2.2 等价向量组
  3. 向量空间
    3.1 向量空间的概念
    3.2 正交基
    3.3 基变换与坐标变换
    3.4 线性方程组解的结构

本文是一篇包含大量枯燥数学知识的文章, 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢!

本文也同时发布于我的个人博客, 欢饮访问.(文中超链接均指向本人的博客网站, 不想离开 CSDN 页面的读者慎点)

这里偷个懒, 就不介绍向量的基本定义了. 我们直入主题.不是很清楚向量基本概念的读者可以先熟悉一下相关知识.

相关性基本概念

相性相关和线性无关

α1,α1,...,αmα1,α1,...,αm 均为 n 维向量, 如果存在一组数 k1,k2,...,kmk1,k2,...,km 使

α=k1α1+k2α2+...+kmαmα=k1α1+k2α2+...+kmαm

则称向量 ααα1,α1,...,αmα1,α1,...,αm线性组合, 或者称向量 αα 可由 α1,α1,...,αmα1,α1,...,αm线性表示

判断向量 αα 是否可由 α1,α1,...,αmα1,α1,...,αm 线性表示的问题, 可以转化为判断非齐次线性方程组是否有解的问题. 其中 αα 作为线性方程组的 b, α1,α1,...,αmα1,α1,...,αm 作为线性方程组的对应系数, k1,k2,...,kmk1,k2,...,km 作为未知数.

α1,α1,...,αmα1,α1,...,αm 均为 n 维向量, 如果存在一组不全为零的数 k1,k2,...,kmk1,k2,...,km 使

k1α1+k2α2+...+kmαm=0k1α1+k2α2+...+kmαm=0

则称向量组 α1,α1,...,αmα1,α1,...,αm 线性相关, 否则,称向量组 α1,α1,...,αmα1,α1,...,αm线性无关

判断向量组是否线性相关的问题可以转化为判断齐次线性方程组是否有非零解的问题.


注意: 区分一下线性表示和相性相关:
线性表示是判断一组向量是否可以通过适当的线性组合表示另外一个向量.
线性相关是判断一组向量是否可以通过适当的线性组合表示成一个零向量.
注意线性相关定义中加粗的”不全为零”关键字. 线性相关要求组合时使用的系数不能全部为零, 而线性表示并没有这个要求.

相性相关性的判别定理

向量组 α1,α1,...,αm(m2)α1,α1,...,αm(m≥2) 线性相关的充分必要条件是至少其中一个向量可由其余 m-1 个向量线性表示.
证明:

必要性:

α1,α1,...,αmα1,α1,...,αm 线性相关, 由定义知, 存在不全为零的一组数 k1,k2,...,kmk1,k2,...,km, 使

k1α1+k2α2+...+kmαm=0k1α1+k2α2+...+kmαm=0

不妨设 k10k1≠0, 则有:

α1=(k2k1α2)+(k3k1α3)+...+(kmk1αm)α1=(−k2k1α2)+(−k3k1α3)+...+(−kmk1αm)

α1α1 可由 α2,α3,...,αmα2,α3,...,αm 线性表示.

充分性:

不妨设 αmαm 可由 α1,α1,...,αm1α1,α1,...,αm−1 线性表示, 由定义知, 存在一组数 k1,k2,...,km1k1,k2,...,km−1, 使

αm=k1α1+k2α2+...+km1αm1αm=k1α1+k2α2+...+km−1αm−1

k1α1+k2α2+...+km1αm1+(1)kmαm=0k1α1+k2α2+...+km−1αm−1+(−1)kmαm=0

因为 m 个数 k1,k2,...,km1,1k1,k2,...,km−1,−1 不全为零, 所以α1,α1,...,αmα1,α1,...,αm 线性相关.

推论: 两个向量线性相关的充分必要条件是它们的对应分量成比例.

需要指出, 向量组 α1,α1,...,αmα1,α1,...,αm 线性相关时, 一般不能肯定是哪个向量可由其他的向量线性表示, 更不能理解为其中的任一个向量都可以由其他向量线性表示


设向量组 α1,α1,...,αmα1,α1,...,αm 线性无关, 而向量组 α1,α1,...,αm,βα1,α1,...,αm,β 线性相关, 则向量 ββ 可由 α1,α1,...,αmα1,α1,...,αm 线性表示, 且表示唯一
证明:

α1,α1,...,αmα1,α1,...,αm 线性相关可知 存在不全为零的一组数 k1,k2,...,km,km+1k1,k2,...,km,km+1, 使

k1α1+k2α2+...+kmαm+km+1β=0k1α1+k2α2+...+kmαm+km+1β=0

假设 km+1=0km+1=0, 上式变为

k1α1+k2α2+...+kmαm=0k1α1+k2α2+...+kmαm=0

此时 k1,k2,...,kmk1,k2,...,km 全部为零, 得到 α1,α1,...,αmα1,α1,...,αm 线性相关, 这与题设矛盾, 因此 km+10km+1≠0, 于是有:

β=(k1km+1α1)+(k2km+1α2)+...+(kmkm+1αm)β=(−k1km+1α1)+(−k2km+1α2)+...+(−kmkm+1αm)

再证唯一性. 设有两个表达式

β=k1α1+k2α2+...+kmαm,β=l1α1+l2α2+...+lmαmβ=k1α1+k2α2+...+kmαm,β=l1α1+l2α2+...+lmαm

两式相减, 可得:

(k1l1)α1+(k2l2)α2+...+(kmlm)αm=0(k1−l1)α1+(k2−l2)α2+...+(km−lm)αm=0

因为 α1,α1,...,αmα1,α1,...,αm 线性无关, 所以

k1l1=0,...,kmlm=0k1−l1=0,...,km−lm=0

k1=l1,...,km=lmk1=l1,...,km=lm, 故表达式唯一.


如果向量组的部分向量线性相关, 则这个向量组就线性相关.
推论1: 若向量组线性无关, 则其任一部分向量也线性无关.


设矩阵 A=(aij)mnA=(aij)m∗n, 称

αi=(αi1,(αi2,...,(αin),βj=(α1j,(α2j,...,(αmj)T,αi=(αi1,(αi2,...,(αin),βj=(α1j,(α2j,...,(αmj)T,

分别为 AA行向量列向量.

设矩阵 A=(aij)mnA=(aij)m∗n, 则:
(1) AA 的行向量组线性相关的充分必要条件是 rankA<mA<m;
(2) AA 的列向量组线性相关的充分必要条件是 rankA<nA<n;

证明:

考虑 AA 的行向量组

αi=(αi1,(αi2,...,(αin)αi=(αi1,(αi2,...,(αin)

设一组数 k1,k2,...,kmk1,k2,...,km, 使

k1α1+k2α2+...+kmαm=0k1α1+k2α2+...+kmαm=0

写成分量形式, 可得

a11k1+a21k2+...+am1km=0a12k1+a22k2+...+am2km=0...a1nk1+a2nk2+...+amnkm=0{a11k1+a21k2+...+am1km=0a12k1+a22k2+...+am2km=0...a1nk1+a2nk2+...+amnkm=0

该方程组的系数矩阵为 ATAT, 有定理(指向本人博客网站)可知, 该方程组有非零解的充分必要条件是 rankAT<mAT<m, 也就是 rankA<mA<m.

推论1: 设 AA 是 n 阶方阵, 则 AA 的行(列)向量组线性相关的充分必要条件是 detA=0A=0.
推论2: 当 m>nm>n 时, n 维向量组 α1,α2,...,αmα1,α2,...,αm 一定线性相关. (也就是说, 向量个数大于向量维数时, 向量组线性相关).



推论3: 设两个向量组

T1:αiT2:βi=(αi1,αi2,...,αir)=(αi1,αi2,...,αir,αir+1,...,αin)(86)(87)(86)T1:αi=(αi1,αi2,...,αir)(87)T2:βi=(αi1,αi2,...,αir,αir+1,...,αin)

则当向量组 T1T1 线性无关时, 向量组 T1T1 也线性无关.

证明:
构造两个矩阵

AB=α1α2αm=a11a21am1a12a22am2a1ra2ramr=β1β2βm=a11a21am1a1ra2ramra1r+1a2r+1amr+1a1na2namn,>(88)(89)(88)A=[α1α2⋮αm]=[a11a12⋯a1ra21a22⋯a2r⋮⋮⋱⋮am1am2⋯amr](89)B=[β1β2⋮βm]=[a11⋯⋯a1ra1r+1⋯a1na21⋯⋯a2ra2r+1⋯a2n⋮⋮⋮⋮⋮⋱⋮am1⋯⋯amramr+1⋯amn],>

易见, AABB 的子矩阵, 且 AABB 的行数相同. 由上述定理可知, 若 T1T1 线性无关, 则 rankA=mA=m, 从而 rankB=mB=m, 于是 T2T2 线性无关.


AA 是 m*n 矩阵, 有以下结论:
(1) 若 AA 中某个 r 阶子式 Dr0Dr≠0, 则 AA 中含 DrDr 的 r 个行(列)向量线性无关.
(2) 若 AA 中所有 r 阶子式等于 0, 则 AA 的任意 r 个行(列)向量线性相关.

证明:

只证明列的情形.
(1) 设 DrDr 位于 AAi1,i2,...,iri1,i2,...,ir 列, 取这 r 个列向量 βi1,βi2,...,βirβi1,βi2,...,βir 构造 m*r 矩阵.

B=(βi1,βi2,...,βir)B=(βi1,βi2,...,βir)

由于 BB 中有一个 r 阶子式 Dr0Dr≠0, 所以 rankB=rB=r, 有上一条定理可知 βi1,βi2,...,βirβi1,βi2,...,βir 线性无关.

(2) 任取 AA 的 r 个列向量 βi1,βi2,...,βirβi1,βi2,...,βir, 并构成 m*r 矩阵 BB (同上), 因为 rankBB≤ rankA<rA<r, 有上一条定理可知, 向量组 βi1,βi2,...,βirβi1,βi2,...,βir 线性相关.


向量组的秩与极大无关组

秩与极大无关组

设有向量组 TT, 若:
(1) T 中有 r 个向量 α1,α2,...,αrα1,α2,...,αr 线性无关;
(2) TT 中的任意 r+1 个向量都线性相关, 则称 α1,α2,...,αr 为向量组 TT 的一个极大线性无关向量组, 简称为极大无关组. 称数 r 为向量组 T.

由定义可知, 如果向量组 TT 的秩为 r, 那么 T 中任何 r 个线性无关的向量都可以作为 TT 的极大无关组.

A 是 m*n 矩阵, 且 rankA=r(>1)A=r(>1), 则 AA 的行(列)向量组的秩等于 r; 若 AA 中某个 r 阶子式 Dr0Dr≠0, 则 AA 中含 DrDr 的 r 个行(列)向量是 AA 的行(列)向量组的一个极大无关组.
证:

由 rankA=rA=r 知, AA 中至少有一个 r 阶子式 Dr0Dr≠0, 且 AA 中所有的 r+1 阶子式都等于 0. 根据前一条定理可知, AA 中行 DrDr 的 r 个行(列)向量相性相关. 且 AA 中任意的 r+1 个行(列)向量线性无关.


AA 是 m*n 矩阵, 有以下结论:
(1)若 ABA→初等行变换B, 则 AA 的任意 s 个列向量与 BB 中对应的 s 个列向量有相同的线性相关性
(2)若 ACA→初等列变换C, 则 AA 的任意 s 个行向量与 CC 中对应的 s 个行向量有相同的线性相关性

证明:

A=(α1,α2,...,αn),B=(β1,β2,...,βn)A=(α1,α2,...,αn),B=(β1,β2,...,βn). 取 AA 的 s 个列向量 αj1,αj2,...,αjsαj1,αj2,...,αjsBB 中对应的 s 个列向量 βj1,βj2,...,βjsβj1,βj2,...,βjs, 由于 ABA→初等行变换B, 所以

(αj1,αj2,...,αjs)(βj1,βj2,...,βjs)(αj1,αj2,...,αjs)→初等行变换(βj1,βj2,...,βjs)

从而线性方程组

(αj1,αj2,...,αjs)x1x2xs=0(βj1,βj2,...,βjs)x1x2xs=0(αj1,αj2,...,αjs)[x1x2⋮xs]=0与(βj1,βj2,...,βjs)[x1x2⋮xs]=0

同解, 故向量组 αj1,αj2,...,αjsαj1,αj2,...,αjs 与向量组 βj1,βj2,...,βjsβj1,βj2,...,βjs 有相同的线性相关性.

类似的, 可证明另一结论.


等价向量组

设有两个 n 维向量组

T1:α1,α2,...,αr;T2:β1,β2,...,βs;T1:α1,α2,...,αr;T2:β1,β2,...,βs;

如果 αiαi 可由 β1,β2,...,βsβ1,β2,...,βs 线性表示, 则称向量组 T1T1 可由向量组 T2T2 线性表示; 如果方程组 T1T1 与向量组 T2T2 可以互相线性表示 则称向量组 T1T1 与向量组 T2T2 等价.

注意: 这里只需要是线性表示即可, 未要求相性相关.


向量组与它的任意一个极大无关组等价
证明:

设向量组 TT 的一个极大无关组为 T1:α1,α2,...,αr, 因为 T1T1TT 的一个部分组, 所以 T1 可由 TT 线性表示.
另一方面, 对于 T 中的任一向量 αα, 当 ααT1T1 中时, αα 可由 T1T1 表示.当 αα 不在 T1T1 中时, 由于 α1,α2,...,αr,αα1,α2,...,αr,αTT 中 r+1 个向量, 所以线性相关,由定理知, α 可由 T1T1线性表示. 因此 TT 可由 T1 线性表示, 故 TTT1 等价.

推论: 向量组的任意两个极大无关组等价.


设有两个 n 维向量组

T1:α1,α2,...,αr;T2:β1,β2,...,βs;T1:α1,α2,...,αr;T2:β1,β2,...,βs;

T1T1 线性无关, 且 T1T1 可由 T2T2 线性表示, 则 rsr≤s.

向量空间

向量空间的概念

VV 为非空的 n 维实向量集合, 如果对向量的加法运算和数乘运算满足:
(1) 对任意 αV,βV, 有 α+βVα+β∈V (称为对加法封闭)
(2) 对任意 αV,kRα∈V,k∈R, 有 kαVkα∈V (称为对数乘封闭)
则称集合 VV向量空间.

向量 α1,α2,...,αm 生成的向量空间, 记作 L(α1,α2,...,αm)L(α1,α2,...,αm).

设有两个 n 维向量集合 V1V1V2V2, 如果 V1V2V1⊂V2, 且 V1V1V2V2 都是向量空间, 则称 V1V1V2V2子空间.

VV 为向量空间, 若
(1) V 中有 r 个向量 α1,α2,...,αrα1,α2,...,αr 线性无关;
(2) VV 中任一向量 α 都可由 α1,α2,...,αrα1,α2,...,αr 线性表示,
则称 α1,α2,...,αrα1,α2,...,αrVV 的一个, 称数 r 为 V维数, 记作 dimVV, 即 dimV=r.

设向量空间 VV 的一个基为 α1,α2,...,αr, 对 αVα∈V, 有

α=x1α1+x2α2+...+xrαrα=x1α1+x2α2+...+xrαr

称数组 (x1,x2,...,xr)T(x1,x2,...,xr)T 为向量 αα 在基 α1,α2,...,αrα1,α2,...,αr 下的坐标.

正交基

设向量空间 VV 的一个基为 α1,α2,...,αr, 如果

[αi,αj]=0,ij[αi,αj]=0,i≠j

则称 α1,α2,...,αrα1,α2,...,αrVV正交基. 如果还有

αi=1

则称 α1,α2,...,αrα1,α2,...,αrVV标准正交基.

下面介绍从向量空间 V 的一个基出发, 构造 VV 的一个正交基的施密特(Schmidt)正交化方法.

V 的一个基为 α1,α2,...,αrα1,α2,...,αr, 令

β1β2=α1=α2+k1β1(5)(6)(5)β1=α1(6)β2=α2+k1β1

要求 [β2,β1]=0[β2,β1]=0, 可得 k21=[α2,β1][β1,β1]k21=−[α2,β1][β1,β1], 显然 β20β2≠0,否则 α1,α2α1,α2 线性相关, 产生矛盾. 再令

β3=α3+k32β2+k31β1β3=α3+k32β2+k31β1

要求 [β3,βj]=0(j=1,2)[β3,βj]=0(j=1,2), 可得 k3j=[α3,βj][βj,βj]k3j=−[α3,βj][βj,βj], 同理可知 β30β3≠0, 如此下去……,最后令

βr=αr+kr,r1βr1+...+kr1β1βr=αr+kr,r−1βr−1+...+kr1β1

要求 [βr,βj]=0(j=1,2,...,r1)[βr,βj]=0(j=1,2,...,r−1), 可得 krj=[αr,βj][βj,βj]krj=−[αr,βj][βj,βj], 同理可知 βr0βr≠0, 于是得到:
(1) β1,β2,...,βrβ1,β2,...,βr 是两两正交的非零向量, 从而线性无关
(2) β1,β2,...,βrβ1,β2,...,βrα1,α2,...,αrα1,α2,...,αr 等价, 从而 β1,β2,...,βrβ1,β2,...,βrVV 的一个正交基.
(3) 令 γi=1βiβi, 可得 VV 的一个标准正交基 γ1,γ2,...,γr.

基变换与坐标变换

设向量空间 VV 的两个基为

(I):α1,α2,...,αr;(II):β1,β2,...,βr

由于基(II)可由基(I)线性表示, 所以有

β1=c11α1+c21α2+...+cr1αrβ2=c12α1+c22α2+...+cr2αr...βr=c1rα1+c2rα2+...+crrαr{β1=c11α1+c21α2+...+cr1αrβ2=c12α1+c22α2+...+cr2αr...βr=c1rα1+c2rα2+...+crrαr

令矩阵 C=(cij)rrC=(cij)r∗r, 称 CC 为由基(I)到基(II)的过渡矩阵.

上式又可写为

(β1,β2,...,βr)=(α1,α2,...,αr)C(β1,β2,...,βr)=(α1,α2,...,αr)C

称上式为由基(I)到基(II)的基变换公式.

过渡矩阵是可逆的.
证明略.(有兴趣的读者可以自己研究一下:))

线性方程组解的结构

通过之前两篇线性代数的文章(行列式,矩阵I)中提到的, 我们已经得到以下结论:
(1) 若 (A|b)B|d(A|b)→初等行变换B|d, 则 Ax=bAx=bBx=dBx=d 同解.
(2) Ax=0Ax=0 有非零解的充分必要条件是 rankA<nA<n.(n为矩阵的列数).
(3) Ax=bAx=b 有解的充分必要条件是 rankA=A=rankA^A^.
(4) 设 rankA=A=rankA^=rA^=r, 即 Ax=bAx=b 有解, 则 r=nr=n 时, Ax=bAx=b 有唯一解; r<nr<n 时, Ax=bAx=b 有无穷多解;

齐次线性方程组

构造线性方程组的解向量集合

S={x|Ax=0,xRn}S={x|Ax=0,x∈Rn}

因为 0S0∈S, 所以 SS 非空. 当 xS,yS,kRn 时, 由 A(x+y)=Ax+Ay=0A(x+y)=Ax+Ay=0A(kx)=k(Ax)=0A(kx)=k(Ax)=0x+yS,kxSx+y∈S,kx∈S. 因此, SS 是向量空间, 称之为齐次线性方程组的解空间, S 的基称为齐次线性方程组的基础解系.

设 rankA=r<nA=r<n, 且不妨设齐次线性方程组的通解为

x1...xrxr+1xr+2...xn=b1,r+1k1b1,r+2k2...b1,nknr,=...=br,r+1k1br,r+2k2...br,nknr,=k1,=k2,=...=knr(7)(8)(9)(10)(11)(12)(13){(7)x1=−b1,r+1k1−b1,r+2k2−...−b1,nkn−r,(8)...=...(9)xr=−br,r+1k1−br,r+2k2−...−br,nkn−r,(10)xr+1=k1,(11)xr+2=k2,(12)...=...(13)xn=kn−r

其中 k1,k2,...,knrk1,k2,...,kn−r 为任意实数, 依次取

k1k2knr=100,010,,001[k1k2⋮kn−r]=[10⋮0],[01⋮0],⋯,[00⋮1]

可得齐次线性方程组的 n-r 个解向量

ξ1=b1,r+1br,r+1100,ξ2=b1,r+2br,r+2010,,ξnr=b1nbrn001ξ1=[−b1,r+1⋮−br,r+110⋮0],ξ2=[−b1,r+2⋮−br,r+201⋮0],⋯,ξn−r=[−b1n⋮−brn00⋮1]

于是,通解又可写为

x=k1ξ1+k2ξ2+...,+knrξnrx=k1ξ1+k2ξ2+...,+kn−rξn−r

上式表明, 方程组的任意解向量都可以由 ξ1,ξ2,..,ξnrξ1,ξ2,..,ξn−r 线性表示, 又向量组 ξ1,ξ2,..,ξnrξ1,ξ2,..,ξn−r 线性无关, 所以 ξ1,ξ2,..,ξnrξ1,ξ2,..,ξn−r 是解空间 SS 的一个基, 也就是齐次线性方程组的一个基础解系. 于是解空间的维数 dimV=nr, 即基础解系中所包含的解向量个数, 等于线性方程组中未知数的个数减去系数矩阵的秩.

非齐次线性方程组

当非齐次线性方程组 Ax=bAx=b 有解时, 设 ηη∗ 是它的一个解向量(称为特解), ηη 是它的任一解, 由于

A(ηη)=AηAη=bb=0A(η−η∗)=Aη−Aη∗=b−b=0

所以 ηηη−η∗ 是对应的其次方程组 Ax=0Ax=0 的解. 从而可由 Ax=0Ax=0 的基础解系线性表示, 即

ηη=k1ξ1+k2ξ2+...,+knrξnrη−η∗=k1ξ1+k2ξ2+...,+kn−rξn−r

也即

η=η+k1ξ1+k2ξ2+...,+knrξnrη=η∗+k1ξ1+k2ξ2+...,+kn−rξn−r

其中 k1,k2,...,knrk1,k2,...,kn−r 为任意实数, 另外易验证上式右端向量是 Ax=bAx=b 的解向量, 故上式给出了 Ax=bAx=b 的通解.

上式表明, 非齐次线性方程组 Ax=bAx=b 的通解可以表示为它的一个特解与对应的齐次线性方程组 Ax=0Ax=0 的通解之和.

到此为止, 我学习分享就结束了. 读完之后, 有任何看法见解, 欢迎与我分享. 谢谢!

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

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

相关文章

汇编语言笔记(一):基础

章节目录 简单程序 使用段简单字符串处理程序使用 bx, si, di, bp 寄存器寻址寻址方法指明数据长度div指令 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 本文中所有程序均在DOSBox下使用MASM, LINK编译运…

汇编学习笔记(二):转移指令

章节目录 转移指令原理 jmp 指令 jcxz 指令 loop 指令 ret 和 retf 指令 call 指令 callret 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 本文中所有程序均在DOSBox下使用MASM, LINK编译运行 转移指令…

汇编语言笔记(三): 标志寄存器

章节目录 简介 ZF 标志寄存器PF 标志寄存器SF 标志寄存器CF 标志寄存器OF 标志寄存器几条相关指令DF 标志寄存器PUSHF and POPF 标志寄存器 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 简介 8086 CPU…

汇编语言笔记(四):内中断

汇编语言笔记:内中断 章节目录 概念 中断过程示例: 0 号中断处理 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 概念 中断信息: 任何一个通用 CPU 都具备一种能力, 可以在执行完当前正在执行的指令之…

sync.Map 源码学习

golang 线程安全的 Map 作者水平有限,而并发博大精深. 如文章中有任何错误, 希望读者不吝指出.谢谢! 章节目录 Map 基本类型定义StoreLoadDeleteRange Map 基本类型定义## Map 这里我们先看一下 Map 都涉及到那些类型. type Map struct {// 互斥锁. 用于互斥的读写 dirty.…

ASN.1 学习

ASN.1 章节目录 简介常用数据类型 2.1 常见的简单类型 2.2 结构类型Basic Encoding RulesDistinguished Encoding Rules编码示例 5.1 BIT STRING 5.2 IA5String 5.3 INTEGER 5.4 NULL 5.5 OCTET STRING 5.6 UTCTime 5.6 OBJECT IDENTIFIER编码 Name (X.501 type) 参考 http://…

证书体系: PFX 文件格式解析

原文同时发布于本人个人博客&#xff1a; https://kutank.com/blog/cert-pfx/ 章节目录 PFX 简介PFX 格式解析 2.1 最外层结构 2.2 AuthenticatedSafe 结构 参考 https://tools.ietf.org/html/rfc7292. PFX 简介## 以下引用自维基百科 在密码学中&#xff0c;PKCS #12 定义了…

C10K 非阻塞 Web 服务器

本文由作为 Going Concurrency in Go 的作者 Nathan Kozyra 撰写, 解决了互联网上最著名,最受尊敬的挑战之一, 并试图通过核心 Go 包来解决它. 原文地址: https://hub.packtpub.com/c10k-non-blocking-web-server-go/ 我们已经构建了一些可用的应用程序,并且可以在日常使用的真…

MD5 算法描述及实现

MD5 算法的原理及实现 章节目录 简介算法描述 实现 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 简介## Wiki对其的描述: MD5消息摘要算法&#xff08;英语&#xff1a;MD5 Message-Digest Algorithm&…

SHA 算法描述与实现

SHA 算法的原理及实现 章节目录 简介算法描述 2.1 数据准备 2.1.1 数据填充 2.1.2 数据分块 2.1.3 设置初始 Hash 值 2.2 Hash 计算 2.2.1 SHA-1 2.2.2 SHA-256 2.2.3 SHA-512实现 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者…

SHA算法描述及实现

SHA 算法的原理及实现 章节目录 简介算法描述 2.1 数据准备 2.1.1 <数据填充 2.1.2 数据分块 2.1.3 设置初始 Hash 值 2.2 Hash 计算 2.2.1 SHA-1 2.2.2 SHA-256 2.2.3 SHA-512实现<b>作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, …

CNG 关于 Key 相关的操作

章节目录 简介创建 Key查看系统中的 Key从 Windows Store 导出 key导入 Key 到 Windows Store<b>作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢!</b> 简介 CNG 全称 Cryptography API: Next G…

Golang 词法分析器浅析

浅析 Go 语言的词法分析器 章节目录 简介TokenScanner例子 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 简介## 在本文我们将简单的走读 Go 语言的词法分析器实现(go/scanner/scanner.go). 本文基于 G…

如何读懂 C 语言复杂的声明

如何读懂 C 语言复杂的声明 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 参考<<C专家编程>> 废话 虽说 C 语言相比于其他更高级的语言来讲&#xff0c;有着非常精简的语法结构&#xff0c;对…

C 语言笔记: 链表节点实现技巧--struct的妙用

链表节点实现技巧–struct的妙用 作者能力有限, 如果您在阅读过程中发现任何错误, 还请您务必联系本人,指出错误, 避免后来读者再学习错误的知识.谢谢! 废话 C 语言虽然只提供了非常简单的语法&#xff0c;但是丝毫不影响 C 语言程序员使用 C 来实现很多让人叹为观止的高级功能…

协议簇: Media Access Control(MAC) Frame 解析

Media Access Control(MAC) Frame 解析 前言 千里之行&#xff0c;始于足下。 因为个人从事网络协议开发&#xff0c;一直想深入的学习一下协议族&#xff0c;从这篇开始&#xff0c;我将开始记录分享我学习到的网络协议相关的知识 简介 引用百度百科的描述&#xff1a; 数…

协议簇:Ethernet Address Resolution Protocol (ARP) 解析

简介 前面的文章中&#xff0c;我们介绍了 MAC Frame 的帧格式。我们知道&#xff0c;在每个 Ethernet Frame 中都分别包含一个 48 bit 的源物理地址和目的物理地址. 对于源地址很容易理解&#xff0c;该地址可以直接从硬件上读取. 但是对于一个网络节点&#xff0c;他怎么知道…

协议簇:IPv4 解析

简介 IP 是一种无连接的协议. 操作在使用分组交换的链路层&#xff08;如以太网&#xff09;上。此协议会尽最大努力交付数据包。 尽最大努力意味着&#xff1a; IP 协议不保证数据的可靠传输, 没有流量控制机制, 不保证传输序列(意味着 IP 数据包会在传输过程中乱序), 没有…

协议簇:ICMP 解析

简介 ICMP 是 Internet Control Message Protocol 的简写. 它主要用来调试网络通信环境中存在的问题. 比如&#xff0c;当 IP 数据包总是无法正常的发送到目的地址, 当网关没有足够的 buffer 来转发对应的数据包 等问题. 值得一提的是&#xff0c;它属于网络层&#xff0c;不属…

协议簇:TCP 解析: 基础

简介 本文我们将从 RFC 学习一下 RFC793 中描述的 TCP 协议. 这将区别于通常讲解计算机网络书籍中所描述的 TCP. 但他们必然是相统一的&#xff0c;不会互相冲突. 系列文章 协议簇&#xff1a;TCP 解析&#xff1a;基础 协议簇&#xff1a;TCP 解析&#xff1a;建立连接 协议…