3b1b线性代数基础

零、写在前面

3b1b之前没认真看,闲了整理整理。


一、向量

学习物理的时候,向量是空间中的箭头。由其方向和长度决定。

学习数据结构的时候,向量是有序的数字列表。向量的每一维度有着不同含义。

线性代数中,我们通常认为**向量(vector)**是在某个坐标系中,以原点为起点的箭头。

向量的**坐标(coordinates)**由一组数字组成,其含义为:如何从原点(向量起点)出发到达坐标系中某个点(向量末端)。

对于向量,我们通常写成一个竖着的列表。

向量围绕两种基本运算:向量加法和向量数乘。

向量加法:将相加的两个向量列表的对应位置数字相加,得到的新向量就是向量加法的结果,它描述的是下图中的紫色向量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分别沿着两个向量移动,等价于直接走相加向量。

向量数乘:将一个标量(scalar)和给定向量的各项相乘,得到的新向量为向量数乘的结果。数乘的本质就是对向量的缩放(scaling)

二、线性组合、张成的空间与基

向量围绕两种基本运算:向量加法和向量数乘。

向量坐标其实就是 数乘后的**基向量(basis vector)**相加 的表示。

如上图的 i j 向量,就是 xy 坐标系的**“基向量”**。

如果我们选择不同的基向量,就会得到合理的新坐标系。

两个数乘向量的和称为两个向量的线性组合(linear combination)

3b1b作者这样理解“线性”:当固定一个向量,只有另一个向量发生数乘变化,所产生向量的中点会描出一条直线:

如果让数乘的标量随意变化,大多数情况下我们可以抵达空间中任意一点。

当然如果所选取的基向量共线那么只能在一个方向上延伸。

如果选取的是零向量,就只能呆在原点了。

上述的更严格表达:一组向量的任意线性组合构成了给定向量张成的空间(span)

如果有一组向量,我们可以移除其中一个向量而不减少张成的空间,我们称这组向量是**线性相关(linearly dependent)**的。

否则,如果所有向量都给张成的空间增加了新的维度,我们称这组向量为**线性无关(linearly independent)**的。

基的严格定义:向量空间的一组基是张成该空间的一个线性无关向量集

三、矩阵与线性变换

线性变换可以是函数的另一种说法。我们考虑接收一个向量输入,并给出一个向量输出。

从几何上看,线性变换是“保持网格线平行且等距分布”的变换。

如何用数值描述线性变换?——描述变换后基向量即可

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这样一来,不难理解计算几何中的旋转变换是怎么来的了。

线性变换是一种操纵空间的手段,它保持网格线平行且等距分布,并且保持原点不动。

四、矩阵乘法与线性变换复合

如果我们想要描述这样一种作用:一个变换之后再进行另一个变换。

比如我们想要先旋转,然后剪切,我们可以先对向量左乘一个旋转矩阵,得到的结果再左乘一个剪切矩阵。

事实上我们可以用一个新的线性变换来表示这两个独立变换相继作用。这个新的线性变换通常被称为前两个独立变换的“复合变换(composition)”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

复合矩阵的计算就是矩阵乘法

一个矩阵左乘另一个矩阵计算方式为:对右部矩阵的每个基向量施加左部矩阵的线性变换,得到的新的基向量构成的矩阵,就是两个变换的复合变换矩阵。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

矩阵乘法显然不符合交换律,因为变换施加顺序影响变换效果。

矩阵乘法显然符合结合律,因为将若干变换复合为一个复合变换,本质仍然是从右往左依次变换。

五、行列式

线性变换实现对空间的挤压/拉伸,那么以二维空间为例,我们如何描述挤压/拉伸后的面积?

我们施加上图的线性变换,发现原来的单位正方形的面积为原来的6倍。

实际上,你只要知道这个单位正方形面积变化的比例,我们就能知道任意区域的面积变化比例。

因为无论怎么线性变换,网格线保持平行且等距分布

**行列式(determinant)**的值就是区域面积的变化比例。

那么如何解释行列式的值可能为负数?

仍以二维平面为例,基向量 j 初始在 i 的左边,我们施加线性变化后,如果 j 在 i 右边,那么空间定向发生改变,即为什么面积变化比例会是负数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当我们讨论的对象变成三维空间,行列式的值就是体积变化比例。

我们关注单位正方体的变化情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

他可能会变成平行六面体。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

那么如何解释三维空间下行列式值为负的情况呢?

三维空间的定向我们通常用右手定则来表述。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果变换后我们仍能用右手定则表述,那么面积变化比例为正,如果只能用左手表述,那么为负。

然而如何计算行列式值呢?

当然,大多数线性代数教科书上会有其他方式计算更高阶的行列式的方法。

理解了行列式的意义,也就不难理解下面这个式子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

六、逆矩阵、列空间与零空间

前面介绍了线性代数对空间的操纵,然而它能被广泛应用于几乎所有领域的一大原因是:它能够帮助我们求解特定的方程组。

在这些方程组中,未知量只有常系数,这些未知量之间只进行加和,没有幂次、奇怪的函数、未知量的乘积等等。

我们通常令未知量处于等号左边,常数项放在等号右边。未知量竖直对齐。

如下图,就被称为线性方程组(linear system of equations)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

事实上,我们可以将所有的方程合并为一个向量方程:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

A x = v 意味着我们在寻找一个 向量 x 使得它施加了 A这样一个线性变换后和 向量 v 重合。

如果A这个变换并没有进行降维,即行列式非0,那么我们可以找到A 的逆变换 A − 1 A^{-1} A1,从而求解x:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

因为此时逆变换唯一,所以我们有唯一解

但是如果行列式值为0,不存在从低维到高维的变换,所以无解?

事实上,即使不存在逆变换,解仍然可能存在!

比如,一个变换将空间压缩为一条直线,如果v 恰好在这条直线上,那么显然是有解的。

我们注意到一些零行列式的情况比其他情况更加严格,例如三维矩阵将空间压缩为一条直线,此时解存在的难度更高了。

除了零行列式外,我们有特定的术语来描述它们:秩(rank)

如果变换的结果为一维,即一条直线,我们称该变换的 秩(rank) 为1

如果变换后的向量落在某个二维平面上,我们称变换的 秩(rank) 为2

也就是说,**秩(rank)**代表着变换后的空间的维数。

矩阵所有可能的变换结果的集合,称为矩阵的”列空间(column space)“

当秩到达最大值,即和列数相等,我们称之为满秩(full rank)

注意到,零向量一定会被包含在列空间中,因为线性变换必须保证原点的位置不变。

对于一个满秩矩阵而言,唯一在变换后能落在原点的向量就是零向量本身。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于一个非满秩矩阵而言,会有一系列的向量变换后能落在原点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

变换后落在原点的向量的集合,被称为矩阵的**“零空间(null space)”“核(kernal)”**。

至于如何具体求解各种线性方程组,可以翻阅相关教科书。

我们再来看看非方阵的情况。

汤神:三行四列的行列式怎么算?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

上例中的三行二列矩阵的列空间是:三维空间中一个过原点的二维平面,注意到这个矩阵仍然是满秩的,因为列空间维数和输入空间维数相等。

三行二列矩阵的含义:将二维空间映射到三维空间上。

  • 两列:输入空间有两个基向量
  • 三行:每一个基向量变换后都将由三个独立坐标来表示

再来看另一个例子:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

输入空间有三个基向量,两行表明三个基向量在变换后都仅用两个坐标来描述。

因此,这是一个从三维空间到二维空间的变换。

七、点积与对偶性

点积在高中数学中就有所涉及,在大多数线性代数课程中也都是比较靠前的内容。

给定两个维数相同的向量,求它们的点积,就是将相应坐标配对,每对坐标乘积相加,就是我们点积的结果。

几何解释

两个向量的点积就是一个向量在另一个向量的方向上做投影,投影长度和向量长度相乘就是结果。

但是为什么坐标相乘结果之和会与投影有关呢?

我们需要关注更深层次的东西——对偶性(duality)

不少函数能够接收二维向量并且输出一个数,但是线性变换有着更严格的要求:

如果有一系列等距分布于一条直线上的点,然后应用变换,线性变换会保持这些点等距分布于输出空间中,即数轴上,否则该变换就不是线性的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

假如在二维平面中,我们有一个变换将 i hat 和 j hat 分别变换至数轴上的 1 和 -2,那么对于向量 v = (4, 3),就被变换为4 - 3 * 2 = -2

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

似乎将向量转化为数的线性变换和这个向量本身有着某种关系。

我们说点积就是一个从二维向量到数的线性变换,那么左乘的1x2矩阵就是一个投影矩阵,我们如何找到这个矩阵?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们考虑这样一条经过原点的数轴,u 是恰好落在数轴上的单位向量,我们发现将 i hat 和 j hat 分别向数轴做投影,投影长度恰好分别为u 的横纵坐标。

这事实上就是变换后的 i hat 和 j hat的位置,即矩阵的列

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这就是为什么向量的点积可以解读为将向量投影到单位向量所在直线上所得到的投影长度。

对于非单位向量,我们只需将u 放大相应倍数即可。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

任何时候我们看到一个线性变换,它的输出空间是一维数轴。无论其如何定义,空间中会存在唯一的向量v 与之相关。应用变换和与向量v做点积是一样的。

八、叉积

8.1 标准介绍

这里给一个非严格的叉积定义,在二维平面中,我们称 向量v 和 向量w 构成平行四边形的有向面积为向量v 和向量w 的叉积。

正负通过右手定则判断,右手四指从v 弯向 w,大拇指朝外,则为正,否则为负。

仍以二维平面为例,计算方式如下:将v 作为 二维矩阵第一列,w 作为第二列,行列式的值就是叉积结果。

事实上,叉积是通过两个三维向量生成一个新的三维向量。

计算方式如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

得到的新的三维向量的长度为v 和 w 围成的平行四边形的面积。

8.2 线性变换的角度

前面知道了,向量 v 叉积 向量 w 的结果为垂直于 v 和 w,长度等于 平行四边形面积的向量,满足右手定则。

但是如何验证这个事实?

回顾一下对偶性

对偶性的思想在于,当我们看到一个(多维)空间到数轴的线性变换,它都与那个空间中唯一一个向量对应,即应用线性变换和这个向量点乘等价。

从数值上说,这类线性变换是一个一行的矩阵,每一列给出了变换后数轴上的基向量的位置。

总之,只要看到(从空间)到数轴的线性变换,我们总能找到一个变化的对偶向量(dual vector)

  1. 通过v 和 w 构造线性变换
  2. 求出对偶向量
  3. 这个求对偶向量的过程就是通过行列式计算叉积的过程

我们尝试分析一下:

我们假设有这样一个函数,一个输入向量,一个输出值,行列式计算结果代表平行六面体的体积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

事实上这个函数是线性的(行列式的分行可加性)

从而说明这个函数是从三维空间到一维空间,那么就存在一个1 * 3的矩阵来表示这个线性变换,即存在一个对偶向量。

我们把这个线性变换写成和对偶向量的点积,并尝试表示出对偶向量 p

我们发现对偶向量就是 v 和 w 坐标的线性组合

还记得我们需要解释这一点:表示叉积的行列式的第一列为什么是 i-hat,j-hat,k-hat?

我们用对偶向量p来表示的话就是p 点成一个向量,使得该向量为行列式第一列,满足:行列式值是 该向量和 v、w 形成的平行四边形构成的平行六面体的有向面积。

而点积的几何意义是一个向量在另一个向量的投影长度乘另一个向量的长度。而p的长度为平行四边形的面积,这说明 (x, y, z) 在 p 上的投影长度为 平行六面体的高,也就是说 p 是垂直于 v 和 的!!!

这就是叉积计算过程和几何解释有关的根本原因!

这也解释了为什么教科书上 三个向量叉积结果会通过三者构成的行列式来计算。

九、基变换

对于同一个向量,我们在不同坐标系下的表示是不同的,因为基向量不同:

虽然不同坐标系基向量不同,但是原点相同。

问题是:如何在不同坐标系之间进行转化?

比如在基向量为: b 1 = [ − 1 , 2 ] T b_1 = [-1, 2]^{T} b1=[1,2]T, b 2 = [ − 4 , 1 ] T b_2 = [-4, 1]^{T} b2=[4,1]T的空间下我们对向量 [ − 1 , 1 ] T [-1, 1]^T [1,1]T进行线性变换

那么我们在基向量为 b 3 = [ 1 , 0 ] T b_3 = [1, 0]^{T} b3=[1,0]T, b 4 = [ 0 , 1 ] T b_4 = [0, 1]^{T} b4=[0,1]T的空间下如何描述那个向量?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其实就是想要找到一个线性变换,使得在 第二个空间下能够把 [ − 1 , 1 ] T [-1, 1]^T [1,1]T 变换到相应位置

我们不妨想到,我们可以先施加一个第一个空间的逆变换,将其变换到第二个空间,然后再施加对应变换,然后再施加第一个空间的变换给其变换回去,这样就能达到我们的目的了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在图形学中我们那些复杂的旋转,平移,各种变换其实都是类似思想。

我们在自然坐标系中很容易写出逆时针旋转90°的旋转矩阵,但是换了个其他坐标系就不会了,那么我们当然可以先逆变换到自然坐标系,做完旋转,再变换回去,效果是一样的。

当然,要注意线性变换的施加顺序

在大多数教科书上都会讲解相似矩阵,其实所谓的 A − 1 M A = B A^{-1}MA = B A1MA=B的含义就是先逆变换,然后施加我们想要的变换,然后再把视角变换回去。

十、特征向量与特征值

已知矩阵就是一种线性变换,如果我们关注线性变换对某一向量的作用,我们发现对于一个线性变换而言,它使得空间中大部分向量偏离其原有的方向。

但我们大多数时候,都能发现有些向量不会偏离方向,而仅仅是长度发生了变化。

上图中的线性变换使得 [ − 1 , 1 ] T [-1, 1]^T [1,1]T 和 x 轴上的向量长度分别变为原来的 2倍 和 3倍。

这些特殊向量被称为变换的**“特征向量(eigenvector)”,缩放倍数称为特征向量的特征值(eigenvalue)**

特征向量有何用途?

比如三维空间中,我们施加旋转变换,那么特征向量就是旋转轴,这比思考相应的3*3矩阵要直观的多。

值得一提的是,作为旋转轴的特征向量的特征值为1,因为旋转本身不发生缩放。

简单介绍下特征值和特征向量的计算思想,具体过程各教科书上都有。
A v → = λ v → A v → − ( λ I ) v → = 0 → ( A − λ I ) v → = 0 → \begin{align} A\overset{\rightarrow}{v} &= \lambda \overset{\rightarrow}{v} \\ A\overset{\rightarrow}{v} - (\lambda I) \overset{\rightarrow}{v}&=\overset{\rightarrow}0 \\ (A - \lambda I) \overset{\rightarrow}{v} &= \overset{\rightarrow}0 \end{align} AvAv(λI)v(AλI)v=λv=0=0
上式 I 为单位矩阵

我们根据行列式为 0 便可得到关于 λ 的方程,解方程求解 λ 即可

随着λ的变化,行列式的几何意义(面积),也在连续变化,当这个变量使得面积=0的时候,这个变量就是特征值。显然有多个零点,n阶矩阵最多有n个特征值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有时候也会出现关于λ的方程无解或者不存在实数解的情况。

没有实数解说明不存在特征向量。不过特征值出现复数的情况一般对应于变换中的某种旋转。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

也会出现只有一个特征值,但是特征向量不止在一条直线上的情况。

(下图中唯一的特征值是2,但是空间中每一个向量都是特征向量)

最后介绍一下特征基,这将揭示相似对角化的原理。

对于一个对角矩阵,它的解读方式:所有基向量都是该变换的特征向量,特征值就是就是矩阵的对角元。

当特征向量为基底的时候,会有什么好处?

复杂的线性变换可以看成对于特征向量的伸缩。

结合前面基变换的知识,对于一个复杂线性变换,如果我们能够找到足够多(其张成为整个空间)的特征向量,那么我们利用这些特征向量构成的基变换矩阵以及其逆,可以将复杂线性变换简化。

假如我们要求三维矩阵 A 100 A^{100} A100,我们有其特征向量构成的基变换矩阵,特征值分别为 λ 1 , λ 2 , λ 3 \lambda_1, \lambda_2, \lambda_3 λ1,λ2,λ3

那么一定可以得到如下等价变换:
P − 1 A P = [ λ 1 0 0 0 λ 2 0 0 0 λ 3 ] \begin{align} P^{-1} A P = \begin{bmatrix} \lambda1 & 0 & 0 \\ 0 & \lambda2 & 0 \\ 0 & 0 & \lambda3 \end{bmatrix} \end{align} P1AP= λ1000λ2000λ3
为什么?

因为我们先施加P,然后再施加A,A只会把特征向量拉伸相应倍数,然后再还原,等价于只对特征向量进行拉伸, 等价为对角元为特征向量的对角阵。

当然,前提是我们能找到**”足够多“**的特征向量。

a n = 1 5 [ ( 5 + 1 2 ) n − ( 5 − 1 2 ) n ] a_n=\frac{1}{\sqrt{5}}[\frac{(\sqrt5+1}{2})^n−\frac{(\sqrt5-1}{2})^n] an=5 1[2(5 +1)n2(5 1)n]
这是斐波那契数列的另一种通项写法,我们从特征向量的角度求解:

如果了解过斐波那契数列,应该都会写下面这个递推:
$$
\begin{bmatrix}
0 & 1 \
1 & 1 \

\end{bmatrix}

\begin{bmatrix}
f_{n - 1} \
f_n \
\end{bmatrix}

=

\begin{bmatrix}
f_{n} \
f_{n + 1} \
\end{bmatrix}
事实上,递推矩阵的特征向量如下: 事实上,递推矩阵的特征向量如下: 事实上,递推矩阵的特征向量如下:
\overset{\rightarrow}{v_1}

=

\begin{bmatrix}
2 \
1+\sqrt{5} \

\end{bmatrix}
\
\overset{\rightarrow}{v_2}

=

\begin{bmatrix}
2 \
1-\sqrt{5} \

\end{bmatrix}
$$

我们会这样求解f(n):
$$
\begin{bmatrix}
0 & 1 \
1 & 1 \

\end{bmatrix}
^n
\begin{bmatrix}
f_{0} \
f_1 \
\end{bmatrix}

=

\begin{bmatrix}
f_{n} \
f_{n + 1} \
\end{bmatrix}
$$
但是了解了特征基之后,我们可以通过 基变换的方式求解,然后就能够推出上面那个复杂的式子(敲latex太累了,不敲了)。

十一、抽象向量空间

我们前面理解向量,可以把向量当作空间中的箭头,然后用实数坐标来描述。也可以把实数坐标当作向量,用空间中的向量来形象地描述它们。

事实上,线性代数中的各种运算其实和基向量或者说坐标系的选取无关:

  • 行列式和特征向量
  • 可加性(additivity):先加在变换=先变换再加
  • 成比例(scaling):先乘再变换=先变换再乘

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们一直一来用实数坐标来描述向量,如果我们用其他东西来描述向量,又该如何理解**空间(space) / 空间性(spatial)**呢?

我们以函数(function)为例:

仍然满足可加性和成比例

因为我们对向量所能进行的操作无非相加和数乘两种。

那么函数意义下的向量,又该如何理解线性变换呢?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

求导就是一种线性变换,因为它从一个函数(向量)变化到了另一个函数(向量)

当然,在微积分中,我们称之为算子(operator),而非变换。

“一个函数变换时线性的” 的含义:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线性变换**保持(preserve)**向量加法运算和数乘运算。

求导就是一种线性运算:

我们也可以用矩阵来描述求导:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线性代数中的概念和函数中的概念的类比:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

数学中有很多类似向量的事物,只要处理的对象具有合理的数乘和相加概念,不管是空间中的箭头、一组数、函数的集合、还是定义的其他东西,线性代数中所有关于向量、线性变换和其他概念都适用于它。

类似向量的事物,比如箭头、一组数、函数等,它们构成的集合被称为**“向量空间"**。

十二、克莱姆法则几何解释

以二维平面为例,行列式的值代表平行四边形面积变换后的变化比例。

以下面这个方程组为例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

变换前, [ x , y ] T [x, y]^T [x,y]T [ 1 , 0 ] T [1, 0]^T [1,0]T 围成的平行四边形的面积为y

变换后, [ x , y ] T [x, y]^T [x,y]T 变换为 [ 4 , 2 ] T [4, 2]^T [4,2]T ,显然变换后 [ 4 , 2 ] T [4, 2]^T [4,2]T [ 2 , 0 ] T [2, 0]^T [2,0]T围成的平行四边形的面积已知:用 [ x , y ] [x, y] [x,y]替换 [ 0 , 1 ] T [0, 1]^T [0,1]T得到的行列式的值

又因为,变换后面积和变换前面积比例为行列式的值

那么 y = 变换后的面积 变换矩阵的行列式值 y = \frac{变换后的面积}{变换矩阵的行列式值} y=变换矩阵的行列式值变换后的面积

这就是克莱姆法则的几何解释。

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

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

相关文章

Consul持久化配置报错1067---consul_start

报错都是文件写的有问题或者格式问题,直接复制我的这个改改地址就行 先创建文本文件consul_start.txt--->再复制代码保存---->再把.txt改成.bat 持久化存储的地址在:mydata 注:D:\consul\consul_1.20.2_windows_386改成自己consul的…

linux中关闭服务的开机自启动

引言 systemctl 是 Linux 系统中用于管理 systemd 服务的命令行工具。它可以用来启动、停止、重启服务,管理服务的开机自启动,以及查看服务的状态等。 什么是 systemd? systemd 是现代 Linux 发行版中默认的 初始化系统(init sys…

【Unity3D】Unity混淆工具Obfuscator使用

目录 一、导入工具 二、各种混淆形式介绍 2.1 程序集混淆 2.2 命名空间混淆 2.3 类混淆 2.4 函数混淆 2.5 参数混淆 2.6 字段混淆 2.7 属性混淆 2.8 事件混淆 三、安全混淆 四、兼容性处理 4.1 动画方法兼容 4.2 GUI方法兼容 4.3 协程方法兼容 五、选项 5.1 调…

tp8读取mysql导出excel

环境:php8.3, thinkphp8.0, mysql8.0 use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xlsx; use PhpOffice\PhpSpreadsheet\Style\Alignment; use think\facade\Db; use think\response\Json;class Index {public function index…

JavaScript学习笔记(3)

一.BOM对象 BOM的全称是Browser Object Model,翻译过来是浏览器对象模型。也就 是JavaScript将浏览器的各个组成部分封装成了对象。我们要操作浏览器的部分功能,可以通过操作 BOM对象的相关属性或者函数来完成。例如:我们想要将浏览器的地址改为 http:/…

Hive之加载csv格式数据到hive

场景: 今天接了一个需求,将测试环境的hive数据导入到正式环境中。但是不需要整个流程的迁移,只需要迁移ads表 解决方案: 拿到这个需求首先想到两个方案: 1、将数据通过insert into语句导出,然后运行脚本 …

Python OrderedDict 实现 Least Recently used(LRU)缓存

OrderedDict 实现 Least Recently used(LRU)缓存 引言正文 引言 LRU 缓存是一种缓存替换策略,当缓存空间不足时,会移除最久未使用的数据以腾出空间存放新的数据。LRU 缓存的特点: 有限容量:缓存拥有固定的…

如何在 Spring Boot 中实现自定义属性

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 Spring Boot 自定义属性配置指南一、引言二、使用 Value 注解读取单个配置项代码示例设置默认值 三、使用 ConfigurationPropertie…

stm32f103 单片机(一)第一个工程

先看一个简单的 系统上已经安装好了keil5 与ARM包,也下载好了STM32固件库 新建一个工程,添加三个组 加入如下文件 在options 里作如下配置 准备在main.c 中写下第一个实验,点亮一个小灯。 像51单片机一样直接对引脚赋值是行不通的 在…

ChromeOS 132 版本更新

ChromeOS 132 版本更新 1. 企业定制化 Chrome Web Store 管理员现在可以使用新设置定制 Chrome Web Store 以适应他们管理的用户,包括以下功能: 添加公司标志添加首页横幅和自定义公告策划扩展集合实施基于类别的控制 这些设置可以通过管理员控制台进…

绘制决策树的尝试1

代码复制 import pydotplus 复制 - 这一行代码用于导入pydotplus模块,这是一个用来在Python中创建图形的工具。2. python from IPython.display import Image 这一行代码用于从IPython显示模块中导入Image类,它允许我们在Jupyter笔记本中显示图像。…

结构化布线系统分为六个子系统

文章目录 前言系统介绍1. 工作区子系统 (Work Area Subsystem)2. 水平布线子系统 (Horizontal Cabling Subsystem)3. 管理子系统 (Administration Subsystem)4. 干线(垂直)子系统 (Backbone Cabling Subsystem)5. 设备间子系统 (Equipment Room Subsyste…

知识图谱结合大模型用于聊天分析

知识图谱结合大模型在聊天分析中的应用主要体现在以下几个方面: 1. 提升对话理解和生成能力 知识图谱(KG)与大模型(LLM)的结合能够显著增强对话系统的语义理解能力和生成能力。例如,通过知识图谱的结构化…

堆的补充--Top-K问题

我们今天来学习二叉树的链式存储,但是在我们学习之前我们先来看一下我们昨天学习的顺序存储:二叉树; 我们之前说堆有两种方法: 1.向下调整建堆: 我们找到最后一个非叶子结点,把他作为起始下标&#xff1…

放大器版图绘制全流程

版图的构成主要分为四部分。对于一般的电路来说,重点关注前三部分第一部分是电路中所对应的mos管电容电阻这些基本器件,一般都是由工艺产商提供标准的元件版图,这部分是我们不需要太关心的。第二部分是对器件进行连线第三部分是衬底的连接&am…

我谈概率论与数理统计的知识体系

学习概率统计二十多年后,在廖老师的指导下,厘清了各章之间的关系。本来就是一条线两个分支,脉络很清晰。 分支一:从随机现象到样本空间到随机事件再到概率。 从随机事件到随机变量:为了进行定量的数学处理&#xff0…

群晖Cloud Sync如何实现一键同步备份让数据更安全高效

文章目录 前言1. 群晖NAS安装Cloud Sync1.1 安装和配置 Cloud Sync 2. 功能演示3. 群晖安装cpolar内网穿透3.1 配置Cloud Sync公网访问地址 4. 配置固定公网地址 前言 在数字化时代,数据的管理和备份成为了我们日常生活中的一个关键任务。无论是个人还是企业&#…

探索Linux中的进程控制:从启动到退出的背后原理

个人主页:chian-ocean 文章专栏-Linux 前言: 进程控制是操作系统对进程的创建、运行、调度、中止等活动进行管理和协调的行为。它是操作系统中至关重要的一部分,保证多任务处理环境下的资源分配和系统稳定性。 进程创建 fork( ) fork() 调…

密码无关认证:金融机构如何解决密码问题

密码安全问题,依然是金融行业面临的重大挑战。尽管密码简单易用,但许多金融机构仍然依赖这种方式进行身份认证。幸运的是,随着技术的发展,密码无关认证已经成为一种更加安全、便捷的选择,它能够为数字银行带来更好的用…

HarmonyOS基于ArkTS卡片服务

卡片服务 前言 Form Kit(卡片开发框架)提供了一种在桌面、锁屏等系统入口嵌入显示应用信息的开发框架和API,可以将应用内用户关注的重要信息或常用操作抽取到服务卡片(以下简称“卡片”)上,通过将卡片添加…