點積、叉積、矩陣行列式詳解、線性相關與線性無關、矩陣的秩、矩陣可逆與不可逆詳解

1.向量

1.1 點積(Dot Product)

1.1.1 定義

點積是在求一個標量,點積結果沒有方向。
對于兩個向量u=(u1,u2,u3),v=(v1,v2,v3)\bold{u}=(u_1,u_2,u_3),\bold{v}=(v_1,v_2,v_3)u=(u1?,u2?,u3?),v=(v1?,v2?,v3?)
點積定義為:u?v=u1v1+u2v2+u3v3\bold{u} \cdot \bold{v}=u_1v_1+u_2v_2+u_3v_3u?v=u1?v1?+u2?v2?+u3?v3?

1.1.2 幾何意義

點積也可以寫成:u?v=∥u∥∥v∥cosθ\bold{u} \cdot \bold{v}=\| \bold{u} \|\| \bold{v} \|cos \thetau?v=u∥∥vcosθ
其中θ\thetaθ是向量u,vu,vu,v之間的夾角。

  • 如果θ<90°:\theta<90^\circ:θ<90°點積>0>0>0
  • 如果θ=90°:\theta=90^\circ:θ=90°點積=0=0=0(正交)
  • 如果θ>90°:\theta>90^\circ:θ>90°點積<0

直觀:點積 = 一個向量在另一個向量方向上的投影 × 另一個向量的長度。

1.1.3 主要應用

  • 判斷向量是否垂直(點積=0)
  • 機器學習里:相似度度量(余弦相似度)

1.2 叉積(Cross Product)

1.2.1 定義(僅在三維空間有意義)

對于兩個三維向量u=(u1,u2,u3),v=(v1,v2,v3)\bold{u}=(u_1,u_2,u_3),\bold{v}=(v_1,v_2,v_3)u=(u1?,u2?,u3?),v=(v1?,v2?,v3?)
叉積定義為:
u×v=∣ijku1u2u3v1v2v3∣=(u2v3?u3v2,u3v1?u1v3,u1v2?u2v1)\bold{u} \times \bold{v} = \left| \begin{matrix} \bf{i} & \bf{j} & \bf{k} \\ u_1 & u_2 & u_3 \\ v_1 & v_2 & v_3 \end{matrix} \right| = (u_2v_3-u_3v_2,u_3v_1-u_1v_3,u_1v_2-u_2v_1)u×v=?iu1?v1??ju2?v2??ku3?v3???=(u2?v3??u3?v2?,u3?v1??u1?v3?,u1?v2??u2?v1?)

1.2.2 幾何意義

  • 方向:u×v\bold{u} \times \bold{v}u×v垂直于u\bold{u}uv\bold{v}v所在的平面(右手定則,四指并攏,拇指豎起,四指指向u\bold{u}u的方向,手掌旋轉,從u\bold{u}u旋轉到v\bold{v}v,拇指豎直指向叉積的方向。)
  • 長度:∥u×v∥=∥u∥∥v∥sinθ\|\bold{u} \times \bold{v} \|=\| \bold{u}\| \|\bold{v} \| sin \thetau×v=u∥∥vsinθ,等于“以u,v\bold{u},\bold{v}u,v為邊的平行四邊形面積”。
    在這里插入圖片描述
    直觀:叉積 = 給出“垂直方向 + 面積大小”的向量。

1.2.3 主要應用

  • 計算面積:∣u×v∣=| \bold{u} \times \bold{v}|=u×v=平行四邊形面積
  • 計算體積:∣u?(v×w)∣=| \bold{u} \cdot (\bold{v} \times \bold{w})|=u?(v×w)=平行六面體體積

1.3 向量減法

1.3.1 定義

給定兩個向量:
a=(a1,a2,??,an),b=(b1,b2,??,bn)\bold{a}=(a_1,a_2,\cdots,a_n),\bold{b}=(b_1,b_2,\cdots,b_n)a=(a1?,a2?,?,an?)b=(b1?,b2?,?,bn?)
它們的差定義為:
a?b=(a1?b1,a2?b2,??,an?bn)\bold{a}-\bold{b}=(a_1-b_1,a_2-b_2,\cdots,a_n-b_n)a?b=(a1??b1?,a2??b2?,?,an??bn?)
逐分量相減。

1.3.2 幾何意義

在平面/空間里,a?b\bold{a} ? \bold{b}a?b 表示從 點 b 指向點 a 的向量。
在這里插入圖片描述
例子
在二維中:
a=(3,2),b=(1,4)\bold{a}=(3,2),\bold{b}=(1,4)a=(3,2)b=(1,4)
則:a?b=(3?1,2?4)=(2,?2)\bold{a}-\bold{b}=(3-1,2-4)=(2,-2)a?b=(3?1,2?4)=(2,?2)
幾何上,這就是從點 (1,4) 指向點 (3,2) 的向量。

1.4 向量加法

1.4.1 定義

在這里插入圖片描述

1.4.2

2.矩陣

2.1 基礎內容

1.矩陣映射
A:Rp→RmA: \mathbb{R}^p \rightarrow \mathbb{R}^mA:RpRm代表矩陣AAAm×pm \times pm×p,它接受一個ppp維的向量,輸出一個mmm維的向量,也可表示為:A∈Rm×pA \in \mathbb{R}^{m \times p}ARm×p
輸入所需向量數為矩陣列數,輸出向量數為矩陣行數。
2.各類表示
det(A):det(A):det(A)矩陣AAA的行列式(只有方陣,即接受的向量和輸出的向量數一致。)
rank(A):rank(A):rank(A)矩陣AAA的秩

2.1 矩陣行列式

2.1.1 從二維出發(面積)

考慮二維矩陣:A=[abcd]A = \left[ \begin{matrix} a & b \\ c & d \end{matrix} \right]A=[ac?bd?]
它把單位正方形的兩個基向量:e1=[10],e2=[01]e_1 = \left[ \begin{matrix} 1 \\ 0 \end{matrix} \right],e_2 = \left[ \begin{matrix} 0 \\ 1 \end{matrix} \right]e1?=[10?],e2?=[01?]
變換為:Ae1=[ac],Ae2=[bd]Ae_1=\left[ \begin{matrix} a \\c \end{matrix} \right],Ae_2=\left[ \begin{matrix} b \\ d \end{matrix} \right]Ae1?=[ac?],Ae2?=[bd?]
所以正方形變成了一個平行四邊形,它的面積是:Area=∣ad?bc∣Area=|ad-bc|Area=ad?bc,也就是Ae1,Ae2Ae_1,Ae_2Ae1?Ae2?兩個向量做叉積的絕對值,即Area=∣Ae1×Ae2∣Area=|Ae_1 \times Ae_2|Area=Ae1?×Ae2?
這正好是∣det(A)∣,A|det(A)|,Adet(A),A的行列式的絕對值。
在二維,行列式就是單位正方形被矩陣變換后的面積縮放因子。

2.1.2 三維情況(體積)

三維矩陣:A=[abcdefghi]A=\left[ \begin{matrix} a & b & c \\ d & e & f \\ g & h & i\end{matrix}\right]A=?adg?beh?cfi??
把單位立方體的三個基向量映射到新的三個向量:v1=(a,d,g)T,v2=(b,e,h)T,v3=(c,f,i)Tv_1=(a,d,g)^T,v_2=(b,e,h)^T,v_3=(c,f,i)^Tv1?=(a,d,g)T,v2?=(b,e,h)T,v3?=(c,f,i)T
這三個向量張成一個平行六面體,它的體積由三重積給出:
V=∣v1?(v2×v3)∣=∣(a,d,g)?((b,e,h)×(c,f,i))∣V=|v_1 \cdot (v_2 \times v_3)|=|(a,d,g)\cdot((b,e,h) \times (c,f,i))|V=v1??(v2?×v3?)=(a,d,g)?((b,e,h)×(c,f,i))
這個結果恰好就是∣det(A)∣|det(A)|det(A)

證明:
v2×v3=[ijkbehcfi]=(ei?hf,hc?bi,bf?ec)v_2\times v_3=\left[ \begin{matrix} \bf{i} & \bf{j} & \bf{k} \\ b & e & h \\ c & f & i \end{matrix} \right]=(ei-hf,hc-bi,bf-ec)v2?×v3?=?ibc?jef?khi??=(ei?hf,hc?bi,bf?ec)
v1?(v2×v3)=a(ei?hf)+d(hc?bi)+g(bf?ec)=aei?ahf+dhc?dbi+gbf?gec=a(ei?hf)?b(di?fg)+c(dh?eg)v_1 \cdot (v_2 \times v_3)=a(ei-hf)+d(hc-bi)+g(bf-ec)\\=aei-ahf+dhc-dbi+gbf-gec \\ =a(ei-hf)-b(di-fg)+c(dh-eg)v1??(v2?×v3?)=a(ei?hf)+d(hc?bi)+g(bf?ec)=aei?ahf+dhc?dbi+gbf?gec=a(ei?hf)?b(di?fg)+c(dh?eg)
∴∣v1?(v2×v3)∣=∣det(A)∣\therefore |v_1\cdot (v_2 \times v_3)|=|det(A)|v1??(v2?×v3?)=det(A)
在三維,行列式就是體積的伸縮因子。

V=v2×v3V=v_2\times v_3V=v2?×v3?,其中VVV的長度為v2,v3v_2,v_3v2?v3?兩個向量組成的平行四邊形面積,這在叉積中有圖作說明,而VVV的方向垂直于v2,v3v_2,v_3v2?v3?所構成的平面。
v1?V=∣v1∣∣V∣cosθ,∣v1∣cosθv_1 \cdot V=|v_1||V|cos\theta,|v_1|cos\thetav1??V=v1?∣∣Vcosθv1?cosθ代表在向量VVV上的投影,即可看作以v2,v3v_2,v_3v2?,v3?構成平面為底的平行六面體的高,而|V|代表v2,v3v_2,v_3v2?,v3?為底的平行六面體的底面積。
∣v1?(v2×v3)∣|v_1 \cdot (v_2 \times v_3)|v1??(v2?×v3?)為該平行六面體相對于三個基向量構成的基六面體變換的體積大小。

2.1.3 高維情況(推廣)

在n維空間里,矩陣A把單位立方體(體積=1)映射到一個平行多面體。
行列式的絕對值∣det(A)∣|det(A)|det(A)就是這個新多面體的體積。
這是由行列式的代數性質決定的:
1.行列式在列向量線性相關時為 0(體積=0,空間被壓扁,下一節細講);
2.行列式在交換兩列時變號(體積方向翻轉);
證明:
A=[abcdefghi]det(A)=a(ei?fh)?b(di?fg)+c(dh?eg)B=[abcghidef]det(B)=a(fh?ei)?b(fg?di)+c(eg?dh)=?det(A)A=\left[ \begin{matrix} a & b & c \\ d & e & f \\ g & h & i\end{matrix}\right] det(A)=a(ei-fh)-b(di-fg)+c(dh-eg) \\ B=\left[ \begin{matrix} a & b & c \\ g & h & i \\ d & e & f\end{matrix}\right] det(B)=a(fh-ei)-b(fg-di)+c(eg-dh)=-det(A)A=?adg?beh?cfi??det(A)=a(ei?fh)?b(di?fg)+c(dh?eg)B=?agd?bhe?cif??det(B)=a(fh?ei)?b(fg?di)+c(eg?dh)=?det(A)
3.行列式在一列乘以常數時,結果也乘以這個常數(體積縮放)。
證明:
A=[abcdefghi]det(A)=a(ei?fh)?b(di?fg)+c(dh?eg)B=[abckdkekfghi]det(B)=a(kei?kfh)?b(kdi?kfg)+c(kdh?keg)=ka(ei?fh)?kb(di?fg)+kc(dh?eg)=kdet(A)A=\left[ \begin{matrix} a & b & c \\ d & e & f \\ g & h & i\end{matrix}\right] det(A)=a(ei-fh)-b(di-fg)+c(dh-eg) \\ B=\left[ \begin{matrix} a & b & c \\ kd & ke & kf \\ g & h & i\end{matrix}\right] \\ det(B)=a(kei-kfh)-b(kdi-kfg)+c(kdh-keg) \\ =ka(ei-fh)-kb(di-fg)+kc(dh-eg)=kdet(A)A=?adg?beh?cfi??det(A)=a(ei?fh)?b(di?fg)+c(dh?eg)B=?akdg?bkeh?ckfi??det(B)=a(kei?kfh)?b(kdi?kfg)+c(kdh?keg)=ka(ei?fh)?kb(di?fg)+kc(dh?eg)=kdet(A)
這些正好與體積的幾何性質一致,于是行列式就是“體積縮放因子”的唯一合理定義。

只有方陣有行列式。
行列式det(A)det(A)det(A)的本質作用是:

  • 代數上:判斷一個方陣是否可逆(det(A)≠0?det(A) \neq 0 \Leftrightarrowdet(A)=0?可逆。
  • 幾何上:描述線性變換對應的提及縮放因子(帶方向)。

這些性質都要求“輸入空間維數 = 輸出空間維數”,也就是:
A:Rn→RnA:\mathbb{R} ^n \rightarrow \mathbb{R}^nARnRn
→\rightarrow這只有在 𝐴 是方陣時才成立。
如果是非方陣,比如3×4:3 \times 4:3×4:
A:R4→R3A:\mathbb{R}^4 \rightarrow \mathbb{R}^3AR4R3

  • 它把四維壓到三維,體積一定被壓成 0
  • 沒有“體積縮放”這個說法
  • 所以行列式就沒有定義

2.2 線性相關與線性無關

2.2.1 定義

設有一組向量v1,v2,??,vkv_1,v_2,\cdots,v_kv1?,v2?,?,vk?(在同一個向量空間里)
如果存在一組不全為零的系數a1,a2,??,aka_1,a_2,\cdots,a_ka1?,a2?,?,ak?,使得a1v1+a2v2+?+akvk=0a_1v_1+a_2v_2+\cdots+a_kv_k=0a1?v1?+a2?v2?+?+ak?vk?=0
那么這組向量就叫做 線性相關。
否則(只有當所有系數都等于 0 時,上式才成立),就叫做 線性無關。

2.2.2 幾何直觀

二維空間

  • 如果兩個向量在同一條直線上(共線),它們線性相關。
  • 如果不共線,就線性無關。

三維空間

  • 三個向量如果在同一個平面里(共面),它們線性相關。
  • 如果能撐起整個三維空間,就線性無關。

一句話:一個向量可以由其它向量“拼出來”(線性組合),那它們就是相關的。

2.2.3 代數上的判定

把向量作為矩陣的列:A=[v1v2?vk]A=\left[ \begin{matrix} v_1 & v_2 & \cdots & v_k \end{matrix} \right]A=[v1??v2????vk??]

  • 如果det(A)=0det(A)=0det(A)=0(方陣情況),說明列向量線性相關
  • 一般情況:秩rank(A)<rank(A)<rank(A)<列數→\rightarrow列向量線性相關

rank(A)<rank(A)<rank(A)<列數的話對應det(A)=0det(A)=0det(A)=0,證明:
A=[abcdefa+2db+2ec+2f]A=\left[ \begin{matrix} a & b & c \\ d & e & f \\ a+2d & b+2e & c+2f \end{matrix} \right]A=?ada+2d?beb+2e?cfc+2f??
這個AAA矩陣的列數就小于秩數,及
A=[abcdefa+2db+2ec+2f]→A=[abcdef000] A=\left[ \begin{matrix} a & b & c \\ d & e & f \\ a+2d & b+2e & c+2f \end{matrix} \right] \rightarrow A = \left[ \begin{matrix} a & b & c \\ d & e & f \\ 0 & 0 & 0 \end{matrix} \right] A=?ada+2d?beb+2e?cfc+2f??A=?ad0?be0?cf0??
det(A)=a(e(c+2f)?f(b+2e))?b(d(c+2f)?f(a+2d))+c(d(b+2e)?e(a+2d))=aec+2aef?afb?2afe?bdc?2bdf+bfa+2bfd+cdb+2cde?cea?2ced=0det(A)=a(e(c+2f)-f(b+2e))-b(d(c+2f)-f(a+2d))+c(d(b+2e)-e(a+2d)) \\ =aec+2aef-afb-2afe-bdc-2bdf+bfa+2bfd+cdb+2cde-cea-2ced \\ =0det(A)=a(e(c+2f)?f(b+2e))?b(d(c+2f)?f(a+2d))+c(d(b+2e)?e(a+2d))=aec+2aef?afb?2afe?bdc?2bdf+bfa+2bfd+cdb+2cde?cea?2ced=0

det(A)=0det(A)=0det(A)=0的幾何體積說明:
det(A)=0det(A)=0det(A)=0說明在對應幾維的空間里,體積為0。一般用每行代表特定維度(如第一行代表x軸),有多少行就有多少個維度。而有多少列說明有多少個向量。
比如如果兩個二維列向量組成的矩陣AAA它的行列式det(A)=0det(A)=0det(A)=0,就說明其中一個列向量可以用另一個列向量表示出來。這兩個列向量組成的平行四邊形面積為0(面積相當于二維中的體積。);
三個三維列向量組成的矩陣BBB它的行列式det(B)=0det(B)=0det(B)=0,就說明至少其中一個列向量可以用其他兩個列向量表示出來,這三個列向量組成的三維體積為0(但二維面積并不一定為0。);
類似的可以推廣至四維,行列式為0,四維體積一定為0,但三維體積卻不一定。因此有可以使用降維的方式獲取線性不相關的向量,在機器學習中,或者叫獲取線性不相關的特征。

2.2.4 線性相關和線性無關為什么重要?

  • 線性無關的向量:可以當作“基底”,張成一個空間。
  • 線性相關的向量:含有冗余信息,多余的那個能被其它的表示。

在機器學習/數據分析中:

  • 如果特征(變量)線性相關,就會出現多重共線性問題 → 回歸系數不穩定。
  • 在 PCA(主成分分析)中,我們尋找線性無關的方向來表示數據。

總結:
線性相關 = 存在冗余,一個向量能用其它的拼出來。
線性無關 = 沒冗余,它們是“獨立的方向”,能作為基底。

2.3 矩陣的秩

2.3.1 定義

對于一個矩陣AAA,它的秩定義為:
rank(A)rank(A)rank(A)=列空間的維數=行空間的維數
常用同義表述:

  • rank(A)rank(A)rank(A) = 「最多能選出多少個線性無關的列向量」
  • rank(A)rank(A)rank(A) = 「最多能選出多少個線性無關的行向量」
  • 對方陣:rank(A)=n?Arank(A) = n ? Arank(A)=n?A可逆 ?det(A)≠0?\Leftrightarrow det(A) ≠ 0 \Leftrightarrow?det(A)=0? 列/行向量線性無關 ?\Leftrightarrow? 特征值≠0?\neq0 \Leftrightarrow=0?所有特征值非零。

2.3.2 列空間/行空間是什么?

  • 列向量Col(A)Col(A)Col(A)AAA 的所有列向量的線性組合集合,位于 Rm??Rm 中。 維數 = rank(A)rank(A)rank(A)
  • 行空間 Row(A)Row(A)Row(A)AAA 的所有行向量的線性組合集合,位于 Rn??Rn 中。維數 = rank(A)rank(A)rank(A)

直觀地說:列空間就是 AxAxAx 能到達的所有輸出方向;行空間是 AtyA?yAty 能到達的所有方向。

2.3.3 秩的計算

最常用:行變換到行最簡形(RREF)
變換到行最簡形后就知道選出最大多少線性無關的行向量數,即秩的數量。

  • 用初等行變換把 A 化為 RREF,數主元個數即為 rank(A)。
  • 行變換不會改變秩。

小例子(行簡化):
A=[123231477]①R2←R2?2R1A=[1230?15477]②R3←R3?4R1A=[1230?150?15]R2←R2?2R1A=[1230?15000]A= \left[ \begin{matrix} 1 & 2 & 3 \\ 2 & 3 & 1 \\ 4 & 7 & 7 \end{matrix} \right] \\ ①R2 \leftarrow R2 - 2R1 \quad A=\left[ \begin{matrix} 1 & 2 & 3 \\ 0 & -1 & 5 \\ 4 & 7 & 7 \end{matrix} \right] \\ ②R3 \leftarrow R3 - 4R1 \quad A=\left[ \begin{matrix} 1 & 2 & 3 \\ 0 & -1 & 5 \\ 0 & -1 & 5 \end{matrix} \right] \\ R2 \leftarrow R2 - 2R1 \quad A=\left[ \begin{matrix} 1 & 2 & 3 \\ 0 & -1 & 5 \\ 0 & 0 & 0 \end{matrix} \right]A=?124?237?317??R2R2?2R1A=?104?2?17?357??R3R3?4R1A=?100?2?1?1?355??R2R2?2R1A=?100?2?10?350??
∴rank(A)=2\therefore rank(A)=2rank(A)=2

2.3.4 常用不等式與不變性

1.rank(AB)≤min(rank(A),rank(B))rank(AB) \le min(rank(A),rank(B))rank(AB)min(rank(A),rank(B))

2.4 可逆與不可逆

2.4.1 可逆的定義

矩陣 𝐴 可逆(invertible),是指:存在一個矩陣 A?1A^{-1}A?1,使得 AA?1=A?1A=IAA^{-1}=A^{-1}A=IAA?1=A?1A=I
其中 𝐼 是單位矩陣。

  • 如果存在這樣的逆矩陣,稱 可逆矩陣。
  • 如果不存在這樣的逆矩陣,稱 不可逆矩陣(奇異矩陣 singular matrix)。

可逆矩陣一定是方陣,證明:
如果AAAm×nm \times nm×nA?1A^{-1}A?1n×mn \times mn×m,則AA?1AA^{-1}AA?1m×mm \times mm×mA?1AA^{-1}AA?1An×nn \times nn×nAA?1≠A?1AAA^{-1} \neq A^{-1}AAA?1=A?1A

2.4.2 代數意義

可逆矩陣:
線性方程組 Ax=bAx=bAx=b 有唯一解 xxx

不可逆矩陣:
線性方程組 Ax=bAx=bAx=b 沒有解 或 有無窮多個解。
特別地,Ax=0Ax=0Ax=0 的唯一解不再是 x=0x=0x=0,還可能有非零解(這就是“非零解”的來源)。

為啥可逆矩陣有唯一解?不可逆矩陣沒有解或者無窮多個解?
1.假設AAA為可逆矩陣,A∈Rn×nA \in \mathbb{R}^{n \times n}ARn×nx∈Rn×1x \in \mathbb{R}^{n \times 1}xRn×1AAA可以和xxx列出nnn個方程,方程的右邊等于bbbnnn個方程解xxxnnn個未知數,確定唯一解。
2.假設AAA為不可逆矩陣,A∈Rn×nA \in \mathbb{R}^{n \times n}ARn×nx∈Rn×1x \in \mathbb{R}^{n \times 1}xRn×1rank(A)<nrank(A)<nrank(A)<n

在方程少于nnn個時,又分為兩種情況。
bbb屬于AAA的列空間。
bbb不屬于AAA的列空間。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98702.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98702.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98702.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Mac安裝nvm詳細教程(超簡單)

本章教程,主要介紹如何在Mac操作系統上安裝nvm. 我們使用官方一鍵安裝腳本,完成安裝 一、安裝步驟 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash配置環境變量,編輯.zshrc文件 vim .zshrcexport NVM_DIR="$(

【selenium】網頁元素找不到?從$(‘[placeholder=“手機號“]‘)說起

網頁元素找不到&#xff1f;從$(‘[placeholder“手機號”]’)說起總結&#xff1a;控制臺不騙人&#xff0c;元素選不到&#xff0c;八成是寫法、時機或環境的問題。我們在寫網頁自動化腳本或者調試頁面的時候&#xff0c;經常遇到一個讓人頭疼的問題&#xff1a;明明元素就在…

SSE 模仿 GPT 響應

后端代碼 const express require(express) const cors require(cors);const app express(); app.use(cors()); const port 3000;app.listen(port, () > {console.log(Server running at http://localhost:${port}/); });const msg 全國同胞們&#xff0c; 尊敬的各位國…

MAC 多個版本 JDK進行切換

1.查看本機所有的jdk/usr/libexec/java_home -V2、打開bash_profile文件。可以在終端vim ~/.bash_profile打開&#xff0c;也可以打開訪達shiftcmdG然后輸入/Users/mac/.bash_profile&#xff08;本機bash_profile的路徑&#xff09;加入新的環境變量格式如下&#xff08;參考我…

shell 中 expect 詳解

一、概述Expect是一個免費的編程工具語言&#xff0c;用來實現自動和交互式任務進行通信&#xff0c;而無需人的干預。Expect的作者DonLibes在1990年開始編寫Expect時對Expect做有如下定義&#xff1a;Expect是一個用來實現自動交互功能的軟件套件。通過expect系統管理員可以創…

第4講 機器學習基礎概念

機器學習作為人工智能的子領域&#xff0c;專注于訓練計算機算法自動發現數據中的模式與關聯關系。以下是其核心基礎概念&#xff1a;4.1 數據數據是機器學習的基石。缺乏數據&#xff0c;算法將無從學習。數據可呈現為結構化數據&#xff08;如電子表格、數據庫&#xff09;和…

Go組合式繼承:靈活替代方案

Go 語言沒有傳統面向對象編程中的繼承機制&#xff0c;但通過組合和接口實現類似功能。Go 更提倡組合優于繼承的設計原則&#xff0c;這種設計方式更靈活且易于維護。結構體組合&#xff08;偽繼承&#xff09;通過嵌套結構體實現類似繼承的效果。子結構體可以直接訪問父結構體…

Verilog三段式FSM,實現十字路口紅綠燈

運行環境&#xff1a;VCS verdi狀態說明&#xff1a;S0 &#xff1a; 初始狀態 S1 &#xff1a; 東西方向綠燈亮&#xff0c;南北方向紅燈亮&#xff1b;點亮30周期 S2 &#xff1a; 東西方向黃燈亮&#xff0c;南北方向紅燈亮&#xff1b;點亮2 周期 S3 &#xff1a; 東西方向…

java 將pdf轉圖片

如何將pdf文件轉為圖片 import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.rendering.PDFRenderer; import javax.imageio.ImageIO; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; public class Pdf2Png {/**…

手搓Spring

目錄 兩種方法創建Spring容器 自定義Spring容器及前置操作 Spring掃描邏輯實現 createBean()方法 getBean()方法 依賴注入&#xff08;DI&#xff09; BeanNameAware接口 InitializingBean接口 BeanPostProcessor接口 AOP的實現 Spring 是一個輕量級的 Java 開發框架…

.NET 單文件程序詳解:從原理到實踐

C# 混淆加密大師在最新版本中, 提供了.NET單文件解包打包功能, 它可以快速解包官方打包的單文件程序&#xff0c;恢復為原始的多文件結構。也可以對解包后的程序集進行混淆與加密&#xff0c;有效提升逆向門檻。最后還能重新打包成單文件程序&#xff0c;保持對用戶友好的分發形…

Spring面試題記錄?

請簡述 Spring 框架的核心是什么&#xff1f;它主要包含了哪些核心模塊&#xff1f; spring的核心模塊主要有spring-core&#xff08;工具類&#xff0c;資源加載&#xff09;&#xff0c;spring-bean&#xff08;bean的定義&#xff0c;創建&#xff0c;封裝&#xff09;&…

一次緩存引發的文件系統數據不一致問題排查與深度解析

01 起因EFC&#xff08;Elastic File Client&#xff09;是 NAS 自研的分布式文件系統客戶端&#xff0c;最近完成了對緩存架構的更新&#xff0c;現在支持多個客戶端之間構成分布式緩存&#xff0c;底層支持 NAS、CPFS 和 OSS。由于開發時間較短&#xff0c;一直沒有做 NAS 場…

Spring Boot Gateway 教程:從入門到精通

一、Spring Cloud Gateway 簡介Spring Cloud Gateway 是基于 Spring 5、Project Reactor 和 Spring Boot 2 構建的 API 網關&#xff0c;旨在為微服務架構提供一種簡單而有效的路由管理方式。它取代了 Netflix Zuul&#xff0c;提供了更高效和更強大的網關解決方案。核心特點&a…

防火墻 只允許信任的幾臺服務器訪問

1. 首先&#xff0c;確保 firewalld 服務正在運行&#xff1a;systemctl start firewalld systemctl enable firewall2. 設置默認拒絕規則&#xff1a;設置默認拒絕所有流量&#xff08;拒絕所有的入站流量&#xff09;&#xff1a;firewall-cmd --zonepublic --add-rejectal…

十三,數據結構-樹

定義樹也是基于節點的數據結構&#xff0c;和鏈表不同的是&#xff0c;樹的節點可以指向多個節點。首先對樹的一些常用術語進行說明&#xff1a;最上面的節點叫做根節點&#xff0c;根位于樹頂&#xff0c;如圖中的節點A&#xff1b;和族譜一樣&#xff0c;節點有后代和祖先&am…

JVM-默背版

1.JVM對sychronized的優化&#xff1a;鎖膨脹、鎖消除、鎖粗化、自適應自旋鎖 &#xff08;1&#xff09;鎖膨脹&#xff1a;從無鎖、偏向鎖、輕量級鎖、重量級鎖的過程叫做鎖膨脹。在JDK1.6以前&#xff0c;sychronized是由重量級鎖實現的&#xff0c;加鎖和解鎖的過程需要從用…

Mac M 系列芯片 YOLOv8 部署教程(CPU/Metal 后端一鍵安裝)

在 Mac M 系列芯片&#xff08;Apple Silicon/ARM 架構&#xff09;上部署 YOLOv8&#xff0c;有一些注意事項&#xff1a;PyTorch 需要安裝 ARM 原生版本&#xff0c;推理可利用 Metal 后端加速 CPU。本文教你一步步完成環境配置、模型下載、依賴安裝和驗證推理。1?? 環境準…

Python爬蟲實戰:研究Units模塊,構建氣象數據采集和分析系統

1. 引言 1.1 研究背景 隨著信息技術的飛速發展,互聯網已成為全球最大的信息庫,涵蓋氣象、金融、醫療、農業等多個領域的海量數據。這些數據蘊含著巨大的潛在價值,如何有效獲取并深入分析這些數據成為當下研究的熱點。Python 作為一種功能強大的編程語言,憑借其豐富的庫資…

網頁設計模板 HTML源碼網站模板下載

互聯網已成為現代社會不可或缺的一部分&#xff0c;網站則是連接線上與線下世界的橋梁。無論是用于展示個人作品集、推廣商業產品還是提供公共服務信息&#xff0c;一個設計精良且功能完善的網站都能發揮巨大作用。然而&#xff0c;傳統的手工編碼方式不僅耗時費力&#xff0c;…