3.【线性代数】——矩阵乘法和逆矩阵
三 矩阵乘法和逆矩阵
- 1. 矩阵乘法
- 1.1 常规方法
- 1.2 列向量组合
- 1.3 行向量组合
- 1.4 单行和单列的乘积和
- 1.5 块乘法
- 2. 逆矩阵
- 2.1 逆矩阵的定义
- 2.2 奇异矩阵
- 2.3 Gauss-Jordan 求逆矩阵
- 2.3.1 求逆矩阵 ⟺ \Longleftrightarrow ⟺解方程组
- 2.3.2 Gauss-Jordan求逆矩阵
1. 矩阵乘法
1.1 常规方法
[ . . . . . . . . . . . . a 31 a 32 a 33 a 34 . . . . . . . . . . . . ] ⏟ A m ∗ n [ . . . . . . . . . b 14 . . . . . . . . . b 24 . . . . . . . . . b 34 . . . . . . . . . b 44 ] ⏟ B n ∗ p = [ . . . . . . . . . . . . . . . . . . . . . C 34 . . . . . . . . . . . . ] ⏟ C m ∗ p \underbrace{\begin{bmatrix} ...&...&...&...\\ a_{31}&a_{32}&a_{33}&a_{34}\\ ...&...&...&...\\ \end{bmatrix}}_{A_{m*n}} \underbrace{\begin{bmatrix} ...&...&...&b_{14}\\ ...&...&...&b_{24}\\ ...&...&...&b_{34}\\ ...&...&...&b_{44} \end{bmatrix}}_{B_{n*p}}= \underbrace{\begin{bmatrix} ...&...&...&...\\ ...&...&...&C_{34}\\ ...&...&...&... \end{bmatrix}}_{C_{m*p}} Am∗n ...a31......a32......a33......a34... Bn∗p ....................................b14b24b34b44 =Cm∗p ..............................C34...
C 34 = A r o w 3 ∗ B c o l 4 = ∑ i = 1 n a 3 i ∗ b i 4 C_{34} = A_{row_3}*B_{col_4} = \sum\limits_{i=1}^{n}a_{3i}*b_{i4} C34=Arow3∗Bcol4=i=1∑na3i∗bi4
1.2 列向量组合
已知
[ A 11 A 12 A 13 A 21 A 22 A 23 A 31 A 32 A 33 ] [ B 11 B 21 B 31 ] = B 11 ∗ A c o l 1 + B 21 ∗ A c o l 2 + B 31 ∗ A c o l 3 = [ B 11 ∗ A 11 + B 21 ∗ A 12 + B 31 ∗ A 13 B 11 ∗ A 21 + B 21 ∗ A 22 + B 31 ∗ A 23 B 11 ∗ A 31 + B 21 ∗ A 32 + B 31 ∗ A 33 ] \begin{aligned} \begin{bmatrix} A_{11}&A_{12}&A_{13}\\ A_{21}&A_{22}&A_{23}\\ A_{31}&A_{32}&A_{33} \end{bmatrix} \begin{bmatrix} B_{11}\\ B_{21}\\ B_{31} \end{bmatrix} &=B_{11}*A_{col1}+B_{21}*A_{col2}+B_{31}*A_{col3} \newline &= \begin{bmatrix} B_{11}*A_{11}+B_{21}*A_{12}+B_{31}*A_{13}\\ B_{11}*A_{21}+B_{21}*A_{22}+B_{31}*A_{23}\\ B_{11}*A_{31}+B_{21}*A_{32}+B_{31}*A_{33} \end{bmatrix}\end{aligned} A11A21A31A12A22A32A13A23A33 B11B21B31 =B11∗Acol1+B21∗Acol2+B31∗Acol3= B11∗A11+B21∗A12+B31∗A13B11∗A21+B21∗A22+B31∗A23B11∗A31+B21∗A32+B31∗A33
那么
[ A 11 A 12 A 13 A 21 A 22 A 23 A 31 A 32 A 33 ] ⏟ A [ B 11 B 12 B 21 B 22 B 31 B 32 ] ⏟ B = [ B 11 ∗ A c o l 1 + B 21 ∗ A c o l 2 + B 31 ∗ A c o l 3 B 12 ∗ A c o l 1 + B 22 ∗ A c o l 2 + B 32 ∗ A c o l 3 ] ⏟ C = [ B 11 ∗ A 11 + B 21 ∗ A 12 + B 31 ∗ A 13 B 12 ∗ A 11 + B 22 ∗ A 12 + B 32 ∗ A 13 B 11 ∗ A 21 + B 21 ∗ A 22 + B 31 ∗ A 23 B 12 ∗ A 21 + B 22 ∗ A 22 + B 32 ∗ A 23 B 11 ∗ A 31 + B 21 ∗ A 32 + B 31 ∗ A 33 B 12 ∗ A 31 + B 22 ∗ A 32 + B 32 ∗ A 33 ] \begin{aligned} \underbrace{\begin{bmatrix} A_{11}&A_{12}&A_{13}\\ A_{21}&A_{22}&A_{23}\\ A_{31}&A_{32}&A_{33} \end{bmatrix}}_{A} \underbrace{\begin{bmatrix} B_{11}&B_{12}\\ B_{21}&B_{22}\\ B_{31}&B_{32} \end{bmatrix}}_{B} &=\underbrace{\begin{bmatrix}B_{11}*A_{col1}+B_{21}*A_{col2}+B_{31}*A_{col3} & B_{12}*A_{col1}+B_{22}*A_{col2}+B_{32}*A_{col3}\end{bmatrix}}_{C} \newline &=\begin{bmatrix} B_{11}*A_{11}+B_{21}*A_{12}+B_{31}*A_{13}& B_{12}*A_{11}+B_{22}*A_{12}+B_{32}*A_{13}\\ B_{11}*A_{21}+B_{21}*A_{22}+B_{31}*A_{23} & B_{12}*A_{21}+B_{22}*A_{22}+B_{32}*A_{23}\\ B_{11}*A_{31}+B_{21}*A_{32}+B_{31}*A_{33} & B_{12}*A_{31}+B_{22}*A_{32}+B_{32}*A_{33} \end{bmatrix}\end{aligned} A A11A21A31A12A22A32A13A23A33 B B11B21B31B12B22B32 =C [B11∗Acol1+B21∗Acol2+B31∗Acol3B12∗Acol1+B22∗Acol2+B32∗Acol3]= B11∗A11+B21∗A12+B31∗A13B11∗A21+B21∗A22+B31∗A23B11∗A31+B21∗A32+B31∗A33B12∗A11+B22∗A12+B32∗A13B12∗A21+B22∗A22+B32∗A23B12∗A31+B22∗A32+B32∗A33
C矩阵是A矩阵的列向量组合
1.3 行向量组合
已知
[ A 11 A 12 A 13 ] [ B 11 B 12 B 21 B 22 B 31 B 32 ] = A 11 ∗ B r o w 1 + A 12 ∗ B r o w 2 + A 13 ∗ B r o w 3 = [ A 11 ∗ B 11 A 11 ∗ B 12 + + A 12 ∗ B 21 A 12 ∗ B 22 + + A 13 ∗ B 31 A 13 ∗ B 32 ] \begin{aligned} \begin{bmatrix} A_{11}&A_{12}&A_{13} \end{bmatrix} \begin{bmatrix} B_{11}&B_{12}\\ B_{21}&B_{22}\\ B_{31}&B_{32} \end{bmatrix} &=A_{11}*B_{row1}+A_{12}*B_{row2}+A_{13}*B_{row3} \newline &= \begin{bmatrix} A_{11}*B_{11}&A_{11}*B_{12}\\ +&+\\ A_{12}*B_{21}&A_{12}*B_{22}\\ +&+\\ A_{13}*B_{31}&A_{13}*B_{32} \end{bmatrix}\end{aligned} [A11A12A13] B11B21B31B12B22B32 =A11∗Brow1+A12∗Brow2+A13∗Brow3= A11∗B11+A12∗B21+A13∗B31A11∗B12+A12∗B22+A13∗B32
那么
[ A 11 A 12 A 13 A 21 A 22 A 23 A 31 A 32 A 33 ] ⏟ A [ B 11 B 12 B 21 B 22 B 31 B 32 ] ⏟ B = [ A 11 ∗ B r o w 1 + A 12 ∗ B r o w 2 + A 13 ∗ B r o w 3 A 21 ∗ B r o w 1 + A 22 ∗ B r o w 2 + A 23 ∗ B r o w 3 A 31 ∗ B r o w 1 + A 32 ∗ B r o w 2 + A 33 ∗ B r o w 3 ] ⏟ C \begin{aligned} \underbrace{\begin{bmatrix} A_{11}&A_{12}&A_{13}\\ A_{21}&A_{22}&A_{23}\\ A_{31}&A_{32}&A_{33} \end{bmatrix}}_{A} \underbrace{\begin{bmatrix} B_{11}&B_{12}\\ B_{21}&B_{22}\\ B_{31}&B_{32} \end{bmatrix}}_{B} &=\underbrace{\begin{bmatrix} A_{11}*B_{row1}+A_{12}*B_{row2}+A_{13}*B_{row3}\\ A_{21}*B_{row1}+A_{22}*B_{row2}+A_{23}*B_{row3}\\ A_{31}*B_{row1}+A_{32}*B_{row2}+A_{33}*B_{row3} \end{bmatrix}}_{C} \newline \end{aligned} A A11A21A31A12A22A32A13A23A33 B B11B21B31B12B22B32 =C A11∗Brow1+A12∗Brow2+A13∗Brow3A21∗Brow1+A22∗Brow2+A23∗Brow3A31∗Brow1+A32∗Brow2+A33∗Brow3
C矩阵是B矩阵的行向量组合
1.4 单行和单列的乘积和
[ 2 7 3 8 4 9 ] [ 1 6 1 1 ] = [ 2 3 4 ] [ 1 6 ] + [ 7 8 9 ] [ 1 1 ] = [ 9 19 11 26 13 33 ] \begin{aligned} \begin{bmatrix} 2&7\\ 3&8\\ 4&9 \end{bmatrix} \begin{bmatrix} 1&6\\ 1&1\\ \end{bmatrix} &= \begin{bmatrix} 2\\ 3\\ 4 \end{bmatrix} \begin{bmatrix} 1&6\\ \end{bmatrix} + \begin{bmatrix} 7\\ 8\\ 9 \end{bmatrix} \begin{bmatrix} 1&1\\ \end{bmatrix} \newline &= \begin{bmatrix} 9&19\\ 11&26\\ 13&33 \end{bmatrix} \end{aligned} 234789 [1161]= 234 [16]+ 789 [11]= 91113192633
1.5 块乘法
[ A 1 ∣ A 2 —— —— —— A 3 ∣ A 4 ] [ B 1 ∣ B 2 —— —— —— B 3 ∣ B 4 ] = [ A 1 ∗ B 1 + A 2 ∗ B 3 ∣ A 1 ∗ B 2 + A 2 ∗ B 4 ———————— —— ———————— A 3 ∗ B 1 + A 4 ∗ B 3 ∣ A 3 ∗ B 2 + A 4 ∗ B 4 ] \begin{bmatrix} A_{1}&|&A_{2}\\ ——&——&——\\ A_{3}&|&A_{4} \end{bmatrix} \begin{bmatrix} B_{1}&|&B_{2}\\ ——&——&——\\ B_{3}&|&B_{4} \end{bmatrix} =\begin{bmatrix} A_{1}*B_{1}+A_2*B_{3}&|&A_{1}*B_{2}+A_2*B_{4}\\ ————————&——&————————\\ A_{3}*B_{1}+A_4*B_{3}&|&A_{3}*B_{2}+A_4*B_{4} \end{bmatrix} A1——A3∣——∣A2——A4 B1——B3∣——∣B2——B4 = A1∗B1+A2∗B3————————A3∗B1+A4∗B3∣——∣A1∗B2+A2∗B4————————A3∗B2+A4∗B4
2. 逆矩阵
2.1 逆矩阵的定义
存在
A − 1 A = I A^{-1}A = I A−1A=I
那么,称 A − 1 A^{-1} A−1为A的逆矩阵,A是可逆的,记为非奇异矩阵
当A为方阵(行数=列数)时,左逆矩阵=右逆矩阵
A − 1 A = I = A A − 1 A^{-1}A = I=AA^{-1} A−1A=I=AA−1
2.2 奇异矩阵
存在 A x = 0 ( x 非零向量 ) ⇒ A 不可逆 Ax=0(x非零向量)\Rightarrow A不可逆 Ax=0(x非零向量)⇒A不可逆
证明如下
A x = 0 ⇒ A − 1 A = I A − 1 A x = 0 ⇒ x = 0 (与 x 为非零向量冲突) \begin{aligned} &Ax = 0 \newline&\xRightarrow{A^{-1}A=I} A^{-1}Ax=0\newline &\xRightarrow{} x=0 (与x为非零向量冲突) \end{aligned} Ax=0A−1A=IA−1Ax=0x=0(与x为非零向量冲突)
延伸(学习了后面的列向量等):
- A x Ax Ax是A的列向量的线性组合, A x = 0 有解 Ax=0有解 Ax=0有解说明,存在A的列向量的组合为0,A不是满秩矩阵。
- 那么奇异矩阵不是满秩矩阵
那能不能说明由此推导出满秩矩阵可逆?
好像不是很充分,除非能推导出 A x = 0 ( x 非零向量 ) 无解 ⇒ A 可逆 Ax=0(x非零向量)无解\Rightarrow A可逆 Ax=0(x非零向量)无解⇒A可逆
2.3 Gauss-Jordan 求逆矩阵
2.3.1 求逆矩阵 ⟺ \Longleftrightarrow ⟺解方程组
[ 1 3 2 7 ] ⏟ A [ a c b d ] ⏟ A − 1 = [ 1 0 0 1 ] ⏟ I ⟺ { a + 3 b = 1 2 c + 7 d = 1 \underbrace{\begin{bmatrix} 1&3\\ 2&7 \end{bmatrix}}_{A} \underbrace{\begin{bmatrix} a&c\\ b&d \end{bmatrix}}_{A^{-1}} =\underbrace{\begin{bmatrix} 1&0\\ 0&1 \end{bmatrix}}_{I} \Longleftrightarrow \begin{cases} a+3b=1 \\ 2c+7d=1\\ \end{cases} A [1237]A−1 [abcd]=I [1001]⟺{a+3b=12c+7d=1
2.3.2 Gauss-Jordan求逆矩阵
A A − 1 = I AA^{-1}=I AA−1=I 可写为:
{ [ 1 3 2 7 ] [ a b ] = [ 1 0 ] [ 1 3 2 7 ] [ c d ] = [ 0 1 ] \begin{cases} \begin{bmatrix} 1&3\\ 2&7 \end{bmatrix} \begin{bmatrix} a\\b \end{bmatrix} = \begin{bmatrix} 1\\0 \end{bmatrix} \\\\ \begin{bmatrix} 1&3\\ 2&7 \end{bmatrix} \begin{bmatrix} c\\d \end{bmatrix} = \begin{bmatrix} 0\\1 \end{bmatrix} \end{cases} ⎩ ⎨ ⎧[1237][ab]=[10][1237][cd]=[01]
[ 1 3 1 0 2 7 0 1 ] ⏟ 增广矩阵[A|I] ⇒ r o w 2 − 2 r o w 1 [ 1 3 1 0 0 1 − 2 1 ] ⇒ r o w 1 − 3 r o w 2 [ 1 0 7 − 3 0 1 − 2 1 ] ⏟ [ I ∣ E ] \begin{aligned} \underbrace{\begin{bmatrix} 1&3&1&0\\ 2&7&0&1 \end{bmatrix}}_{\text{增广矩阵[A|I]}} &\xRightarrow{row_{2}-2row_{1}} \begin{bmatrix} 1&3&1&0\\ 0&1&-2&1 \end{bmatrix} \newline&\xRightarrow{row_{1}-3row_{2}} \underbrace{\begin{bmatrix} 1&0&7&-3\\ 0&1&-2&1 \end{bmatrix}}_{[I|E]} \end{aligned} 增广矩阵[A|I] [12371001]row2−2row1[10311−201]row1−3row2[I∣E] [10017−2−31]
第一种,老师上课讲的,公式推导
E [ A I ] = [ I E ] ⇒ E A = I ⇒ E = A − 1 E\begin{bmatrix} A&I \end{bmatrix} =\begin{bmatrix} I&E \end{bmatrix} \Rightarrow EA=I \Rightarrow E = A^{-1} E[AI]=[IE]⇒EA=I⇒E=A−1
ps:
- 从矩阵A经过消元变成了单位矩阵, 那么A满秩,不然变不成单位矩阵。
- 所以说,如果A可逆,那么A一定是满秩矩阵。
- 如果A满秩,那么A一定可逆。
第二种,回代到方程组中,也能求出解
{ [ 1 0 0 1 ] [ a b ] = [ 7 − 2 ] [ 1 0 0 1 ] [ c d ] = [ − 3 1 ] ⇒ { a = 7 b = − 2 c = − 3 d = 1 \begin{cases} \begin{bmatrix} 1&0\\ 0&1 \end{bmatrix} \begin{bmatrix} a\\b \end{bmatrix} = \begin{bmatrix} 7\\-2 \end{bmatrix} \\\\ \begin{bmatrix} 1&0\\ 0&1 \end{bmatrix} \begin{bmatrix} c\\d \end{bmatrix} = \begin{bmatrix} -3\\1 \end{bmatrix} \end{cases} \Rightarrow \begin{cases} a = 7\\ b=-2\\ c=-3\\ d=1 \end{cases} ⎩ ⎨ ⎧[1001][ab]=[7−2][1001][cd]=[−31]⇒⎩ ⎨ ⎧a=7b=−2c=−3d=1
相关文章:
3.【线性代数】——矩阵乘法和逆矩阵
三 矩阵乘法和逆矩阵 1. 矩阵乘法1.1 常规方法1.2 列向量组合1.3 行向量组合1.4 单行和单列的乘积和1.5 块乘法 2. 逆矩阵2.1 逆矩阵的定义2.2 奇异矩阵2.3 Gauss-Jordan 求逆矩阵2.3.1 求逆矩阵 ⟺ \Longleftrightarrow ⟺解方程组2.3.2 Gauss-Jordan求逆矩阵 1. 矩阵乘法 1.…...
手动配置IP
手动配置IP,需要考虑四个配置项: 四个配置项 IP地址、子网掩码、默认网关、DNS服务器 IP地址:格式表现为点分十进制,如192.168.254.1 子网掩码:用于区分网络位和主机位 【子网掩码的二进制表达式一定是连续的&#…...
unity is running as administrator 管理员权限问题
每次打开工程弹出unity is running as administrator的窗口 unity版本2022.3.34f1,电脑系统是win 11系统解决方法一:解决方法二: unity版本2022.3.34f1,电脑系统是win 11系统 每次打开工程都会出现unity is running as administr…...
AI在电竞比分网中的主要应用场景
AI在电竞体育比分网的数据应用非常广泛,能够显著提升数据分析、预测、用户体验和商业价值。以下是AI在电竞比分网中的主要应用场景: 1. 实时数据采集与分析 比赛数据实时更新:AI通过自动化系统实时采集比赛数据(如击杀数、经济差、…...
消息中间件:RabbitMQ镜像集群部署配置全流程
目录 1、特点 2、RabbitMQ的消息传递模式 2.1、简单模式(Simple Mode) 2.2、工作队列模式(Work Queue Mode) 2.3、发布/订阅模式(Publish/Subscribe Mode) 2.4、路由模式(Routing Mode&am…...
TCP的拥塞控制
什么是TCP的拥塞控制?它的工作原理是什么?为什么需要拥塞控制? TCP拥塞控制简介 想象一下,你和一群朋友在一条狭窄的小路上跑步。如果每个人都拼命跑,小路很快就会变得拥挤不堪,大家互相碰撞,…...
Jenkins 配置 Git Repository 五
Jenkins 配置 Git Repository 五 这里包含了 Freestyle project 任务类型 和 Pipeline 任务类型 关于 Git 仓库的配置,如下 不同的任务类型,只是在不同的模块找到 配置 Git 仓库 找到 Git 仓库配置位置之后,所有的任务类型配置都是一样的 …...
父组件中循环子组件调用
父组件中循环子组件调用 父组件 //father.vue <template><view><view v-for"(item,index) in list"><son ref"son"></son></view><buton click"submit">123</buton></view> </templ…...
【网络安全.渗透测试】Cobalt strike(CS)工具使用说明
目录 前言 一、工具显著优势 二、安装 Java 运行环境 三、实验环境搭建要点 四、核心操作流程详解 (一)环境准备与连接步骤 (二)主机上线与深度渗透流程 五、其他实用功能应用指南 (一)office 宏 payload 应用 (二)Https Payload 应用 (三)信息收集策略 …...
C++ 设计模式-建造者模式
以下是一个完整的C建造者模式示例,包含产品类、建造者接口、具体建造者、指挥者以及测试代码: #include <iostream> #include <string> #include <memory>// 产品类:汽车 class Car { public:void setBody(const std::str…...
【Unity3D】Unable to detect SDK in the selected directory
某天突然发现SDK选中自己的目录 或 打安卓包时 提示SDK Tools相关的报错 打开Android Studio的SDK Manager更新Android SDK Tools...
QML使用ChartView绘制饼状图
一、工程配置 首先修改CMakeLists.txt,按下图修改: find_package(Qt6 6.4 REQUIRED COMPONENTS Quick Widgets) PRIVATEtarget_link_libraries(appuntitledPRIVATE Qt6::QuickPRIVATE Qt6::Widgets )其次修改main.cpp,按下图修改ÿ…...
ollama本地部署 deepseek离线模型安装 一套从安装到UI运行
一、安装本地ollama 1、下载ollama (1)百度网盘windows版本 通过网盘分享的文件:OllamaSetup.exe 链接: https://pan.baidu.com/s/15ca6WAzrc4wWph5H9BEOzw 提取码: 283u (2)进入官网:Ollama 2、选择你的系统 等待下载完成就可以了。 注:这…...
【linux】ubunbu切换到root
在 Ubuntu 中切换到 root 用户有几种方法,具体取决于你的需求和权限配置。以下是常见的几种方式: 1. 使用 sudo 临时切换到 root 如果你当前用户有 sudo 权限,可以使用以下命令临时切换到 root 用户: bash sudo -i 或者࿱…...
推理框架对比:ReAct、思维链(COT)和思维树(TOT)谁更胜一筹
推理框架作为 AI 解决复杂问题的核心机制,正逐渐成为研究和应用的焦点。ReAct、思维链(Chain-of-Thought,CoT)(Chain-of-Thought (CoT):引导大型语言模型解决问题的有效策略)和思维树࿰…...
electron.vite 项目创建以及better-sqlite3数据库使用
1.安装electron.vite npm create quick-start/electronlatest中文官网:https://cn.electron-vite.org/ 2. 安装项目依赖 npm i3.修改 electron-builder 配置文件 appId: com.electron.app productName: text33 directories:buildResources: build files:- !**/.v…...
Dockerfiles 的 Top 10 常见 DevOps/SRE 面试问题及答案
1. RUN 和 CMD 之间有什么区别? RUN : 在镜像构建过程中执行命令,创建一个新的层。通常用于安装软件包。 示例: RUN apt-get update && apt-get install -y curlCMD : 指定容器启动时默认运行的命令。它在运行时执行,而不是在构建过程…...
Sentinel——Spring Boot 应用接入 Sentinel 后内存开销增长计算方式
接入 Sentinel 对 Spring Boot 应用的内存消耗影响主要取决于 规则数量、资源数量、监控粒度、并发量 等因素。 1. 核心内存消耗来源 (1) Sentinel 核心库 默认依赖:Sentinel Core 本身占用较小,通常在 10~50MB(取决于资源数量和规则复杂度…...
domain 网络安全 网络安全域
文章目录 1、域的概述 1.1、工作组与域1.2、域的特点1.3、域的组成1.4、域的部署概述1.5、活动目录1.6、组策略GPO 2、域的部署实验 2.1、建立局域网,配置IP2.2、安装活动目录2.3、添加用户到指定域2.4、将PC加入域2.5、实验常见问题 3、OU(组织单位…...
OpenCV机器学习(2)提升算法类cv::ml::Boost
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::ml::Boost 是 OpenCV 机器学习模块中的一部分,用于实现提升算法(Boosting Algorithms)。Boosting 是一种…...
【Java 面试 八股文】框架篇
框架篇 1. Spring框架中的单例bean是线程安全的吗?2. 什么是AOP?3. 你们项目中有没有使用到AOP?4. Spring中的事务是如何实现的?5. Spring中事务失效的场景有哪些?6. Spring的bean的生命周期?7. Spring中的…...
基于HAL库的按钮实验
实验目的 掌握STM32 HAL库的GPIO输入配置方法。 实现通过按钮控制LED亮灭(支持轮询和中断两种模式)。 熟悉STM32CubeMX的外部中断(EXTI)配置流程。 实验硬件 开发板:STM32系列开发板(如STM32F103C8T6、N…...
TCP 端口号为何位于首部前四个字节?协议设计的智慧与启示
知乎的一个问题很有意思:“为什么在TCP首部中要把TCP的端口号放入最开始的四个字节?” 这种问题很适合我这种搞历史的人,大年初一我给出了一个简短的解释,但仔细探究这个问题,我们将会获得 TCP/IP 被定义的过程。 文…...
前端实现在PDF上添加标注(1)
前段时间接到一个需求,用户希望网页上预览PDF,同时能在PDF上添加文字,划线,箭头和用矩形框选的标注,另外还需要对已有的标注进行修改,删除。 期初在互联网上一通搜索,对这个需求来讲发现了两个问…...
Springboot 中如何使用Sentinel
在 Spring Boot 中使用 Sentinel 非常方便,Spring Cloud Alibaba 提供了 spring-cloud-starter-alibaba-sentinel 组件,可以快速将 Sentinel 集成到你的 Spring Boot 应用中,并利用其强大的流量控制和容错能力。 下面是一个详细的步骤指南 …...
如何优化React应用的性能?
文章目录 1. 引言2. 渲染优化2.1 使用 React.memo 避免不必要的重新渲染2.2 使用 shouldComponentUpdate 或 PureComponent2.3 使用 useMemo 和 useCallback 3. 异步渲染与懒加载3.1 使用 React.lazy 和 Suspense 实现懒加载3.2 分割代码(Code-Splitting)…...
ES的java操作
ES的java操作 一、添加依赖 在pom文件中添加依赖包 <dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</version></dependency><!-- elastic…...
八大排序——简单选择排序
目录 1.1基本操作: 1.2动态图: 1.3代码: 代码解释 1. main 方法 2. selectSort 方法 示例运行过程 初始数组 每轮排序后的数组 最终排序结果 代码总结 1.1基本操作: 选择排序(select sorting)也…...
算法学习笔记之贪心算法
导引(硕鼠的交易) 硕鼠准备了M磅猫粮与看守仓库的猫交易奶酪。 仓库有N个房间,第i个房间有 J[i] 磅奶酪并需要 F[i] 磅猫粮交换,硕鼠可以按比例来交换,不必交换所有的奶酪 计算硕鼠最多能得到多少磅奶酪。 输入M和…...
【数据结构】(8) 二叉树
一、树形结构 1、什么是树形结构 根节点没有前驱,其它节点只有一个前驱(双亲/父结点)。所有节点可以有 0 ~ 多个后继,即分支(孩子结点)。每个结点作为子树的根节点,这些子树互不相交。 2、关于…...
前端大屏适配方案:从设计到实现的全流程指南
引言 随着数据可视化需求的增长,大屏展示项目在前端开发中越来越常见。然而,大屏开发面临独特的挑战: 屏幕分辨率多样:从1080P到4K甚至8K,如何保证清晰度?布局复杂:多图表、多组件如何合理排列…...
10. Hbase Compaction命令
一. 什么是Compaction 在 HBase 中,频繁进行数据插入、更新和删除操作会生成许多小的 HFile,当 HFile 数量增多时,会影响HBase的读写性能。此外,垃圾数据的存在也会增加存储需求。因此,定期进行 Compact操作ÿ…...
完善sql盲注中的其他函数 dnslog+sqlmap外带数据
2. 布尔盲注 布尔盲注是通过观察应用程序的响应(如页面内容、HTTP 状态码等)来判断查询条件是否为真。 <?php // 数据库连接配置 $host localhost; $dbname testdb; $user root; $password password; // 创建数据库连接 $conn new mysqli($ho…...
Python 识别图片和扫描PDF中的文字
目录 工具与设置 Python 识别图片中的文字 Python 识别图片中的文字及其坐标位置 Python 识别扫描PDF中的文字 注意事项 在处理扫描的PDF和图片时,文字信息往往无法直接编辑、搜索或复制,这给信息提取和分析带来了诸多不便。手动录入信息不仅耗时费…...
Java 有哪些锁,他们的区别是什么
Java 锁的分类 Java 中的锁可以从多个维度进行分类: 悲观锁 vs. 乐观锁公平锁 vs. 非公平锁独占锁 (互斥锁) vs. 共享锁 (读写锁)可重入锁 vs. 不可重入锁自旋锁偏向锁 vs. 轻量级锁 vs. 重量级锁 (JVM 锁优化) 1. synchronized 关键字: 类型: 悲观锁…...
CSS实现单行、多行文本溢出显示省略号(…)
在网页设计中,我们常常遇到这样的情况:文本内容太长,无法完全显示在一个固定的区域内。为了让界面看起来更整洁,我们可以使用省略号(…)来表示内容溢出。这不仅能提升用户体验,还能避免内容溢出…...
网络协议/MQTT Paho.MQTT客户端库接口基础知识
开源c版mqtt客户端:https://github.com/eclipse-paho/paho.mqtt.cMQTT 客户端与服务器之间支持的通信协议主要包括: 协议地址格式加密默认端口适用场景服务器地址示例TCPtcp://不加密1883局域网或对安全性要求不高的场景tcp://localhost:1883TLS/SSLssl://加密8883对安全性要…...
VSCode C/C++ 开发环境完整配置及常见问题(自用)
这里主要记录了一些与配置相关的内容。由于网上教程众多,部分解决方法并不能完全契合我遇到的问题,因此我选择以自己偏好的方式,对 VSCode 进行完整的配置,并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…...
深入解析 Go 中的 `io.Pipe()`:实现高效的并发通信
在 Go 语言中,io.Pipe() 是一个强大且灵活的工具,用于在不同的 goroutine 之间实现高效的同步和通信。它通过创建一对连接的 I/O 流,允许数据在管道的两端安全地传递。本文将详细介绍 io.Pipe() 的工作原理、主要特点、使用方法以及一些实际应…...
【Kubernetes】常用命令全解析:从入门到实战(中)
🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是k8s 2、K8s的核心功能 二、资…...
嵌入式八股文面试题(二)C语言算法
相关概念请查看文章:C语言概念。 1. 如何实现一个简单的内存池? 简单实现: #include <stdio.h> #include <stdlib.h>//内存块 typedef struct MemoryBlock {void *data; // 内存块起始地址struct MemoryBlock *next; // 下一个内…...
Proxmox VE 8.3 qm 方式导入ESXi Linux OVA UEFI模式虚拟机
前言 实现esxi ova uefi 虚拟机导入到pve,Linux UEFI 都支持 创建一个105虚拟机 qm 参数使用参考,以下可以根据自己的实际情况执行调整 esxi 导出虚拟机参考 #vmid (100 - 999999999) vmid=105# qm vm name...
人工智能浪潮下脑力劳动的变革与重塑:挑战、机遇与应对策略
一、引言 1.1 研究背景与意义 近年来,人工智能技术发展迅猛,已成为全球科技领域的焦点。从图像识别、语音识别到自然语言处理,从智能家居、智能交通到智能医疗,人工智能技术的应用几乎涵盖了我们生活的方方面面,给人…...
【线性代数】1行列式
1. 行列式的概念 行列式的符号表示: 行列式的计算结果:一个数 计算模型1:二阶行列式 二阶行列式: 三阶行列式: n阶行列式: 🍎计算行列式 计算模型2:上三角形行列式 上三角形行列式特征:主对角线下皆为0。 上三角形行列式: 化上三角形通用方法:主对角线下,…...
厘米和磅的转换关系
在排版和设计领域,厘米(cm)和磅(pt)都是常用的长度度量单位,它们之间的转换关系基于特定的换算标准,下面为你详细介绍: 基本换算关系 磅是印刷行业常用的长度单位,1英寸…...
vant4 van-list组件的使用
<van-listv-if"joblist && joblist.length > 0"v-model:loading"loading":finished"finished":immediate-check"false"finished-text"没有更多了"load"onLoad">// 加载 const loading ref(fals…...
QT 异步编程之多线程
一、概述 1、在进行桌面应用程序开发的时候,假设应用程序在某些情况下需要处理比较复制的逻辑,如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事…...
HCIA项目实践---OSPF的知识和原理总结
9.5 OSPF 9.5.1 从哪些角度评判一个动态路由协议的好坏? (1)选路佳(是否会出环) OSPF 协议采用链路状态算法,通过收集网络拓扑信息来计算最短路径,从根本上避免了路由环路的产生。 (…...
DNS污染:网络世界的“隐形劫持”与防御
在互联网的底层架构中,DNS(域名系统)如同数字世界的“导航员”,将用户输入的域名翻译成机器可读的IP地址。然而,DNS污染(DNS Poisoning)正像一场无声的“地址篡改”危机,威胁着全球网…...
Unity Shader Feature
Shader Feature 设置Keyword //0:Red 1:Green 2:Blue Mat.SetInt(“_Color”,0); 需要在创建时进行设置,运行时不可设置 Shader "Unlit/KeywordEnum" {Properties{[KeywordEnum(Red,Green,Blue)] _Color("Color",int) 0}SubShader{Pass{HLSL…...