机器学习之:LLE (locally linear embedding) 局部线性嵌入降维算法

article/2025/10/14 7:08:18

文章目录

LLE

1. LLE 是什么

Locally linear embedding(LLE)[1] 是一种非线性降维算法,它能够使降维后的数据较好地保持原有 流形结构 。LLE可以说是流形学习方法最经典的工作之一。很多后续的流形学习、降维方法都与LLE有密切联系

一个形象的流形降维过程如下图。我们有一块卷起来的布,我们希望将其展开到一个二维平面,我们希望展开后的布能够在局部保持布结构的特征,其实也就是将其展开的过程,就想两个人将其拉开一样
在这里插入图片描述

2. LLE 的主要思想

LLE首先假设数据在较小的局部是线性的,也就是说,某一个数据可以由它邻域中的几个样本来线性表示

  • 比如我们有一个样本 x 1 x_1 x1,我们在它的原始高维邻域里用 K-近邻思想 找到和它最近的三个样本 x 2 x_2 x2, x 3 x_3 x3, x 4 x_4 x4. 然后我们假设 x 1 x_1 x1 可以由 x 2 x_2 x2, x 3 x_3 x3, x 4 x_4 x4 线性表示,即:

    在这里插入图片描述

    • 其中, w 12 w_{12} w12 w 13 w_{13} w13 w 14 w_{14} w14 为权重系数。
      在这里插入图片描述
  • 在我们通过LLE降维后,我们希望 x 1 x_1 x1 在低维空间对应的投影 x 1 ′ x^′_1 x1 x 2 x_2 x2, x 3 x_3 x3, x 4 x_4 x4 对应的投影 x 2 ′ x^′_2 x2, x 3 ′ x^′_3 x3, x 4 ′ x^′_4 x4 也尽量保持同样的线性关系,即:
    在这里插入图片描述

  • 也就是说,投影前后线性关系的权重系数 w 12 w_{12} w12 w 13 w_{13} w13 w 14 w_{14} w14 是尽量不变或者最小改变的。

  • 从上面可以看出,线性关系只在样本的附近起作用,离样本远的样本对局部的线性关系没有影响,因此降维的复杂度降低了很多。这句话的意思是: 如果表示原来高维空间中的点(假设高维空间中一共有 D D D 个点),他们和每一个其他的点之间(其他 D − 1 D-1 D1 个点)都存在 w i j w_{ij} wij 的表示关系,通过 LLE 降维的方法之后,使每个点只与周围的最近的 k k k 个点之间存在线性表示关系,只能被周围的 k k k 个点通过 w i j w_{ij} wij 来表示,这样的话,相当于计算量和维度都减少了很多。

3. LLE 算法推导过程

3.1 如何找到 k 个近邻

假设空间中一共有 D D D 个点,现有一个点 x i x_i xi,对于整个空间中其他所有的点( D − 1 D-1 D1个)都进行距离运算;这里使用的距离是欧氏距离。然后,我们将这 D − 1 D-1 D1 个点与 x i x_i xi 距离最小的 k k k 个点选出来,这就是 k k k 近邻的思想

3.2 找 x i x_i xi 与这 k 个近邻的线性关系

在前面我们说到了,我们如何将原来的高维数据降维到低维空间?或者说,“维度” 这个概念,指的到底是什么?

维度在这里就是由 w i j w_{ij} wij 的权重矩阵决定的,如果什么处理也不做,这个时候,一个 x i x_i xi 就和整个空间中所有的点有关,要通过其他的每一个点来决定这个 x i x_i xi 但是,假设我们只用最近的 k k k 个点,就相当于我们只计算 k k k w i j w_{ij} wij,然后利用求得的权重矩阵来对新的维度的数据进行生成,由于权重矩阵减小了,所以新的数据的维度也减小了。


现在来实际的推导步骤:

  • 假设我们有 m m m n n n 维样本 X = { x 1 , x 2 , . . . , x m } X=\{x_1,x_2,...,x_m\} X={x1,x2,...,xm}(每个样本都有 n n n 行),代表了整个高维空间中所有的样本点。
  • 我们要找到 x i x_i xi k k k 个近邻之间的线性关系,这显然是个回归问题,所以我们用回归问题常用的 均方误差 来作为损失函数 :
    在这里插入图片描述
    • 其中, Q ( i ) Q(i) Q(i) 表示i的 k k k 个近邻样本集合
    • 一般我们也会对权重系数 w i j w_{ij} wij 做归一化的限制,即权重系数需要满足所有系数相加为 1 1 1
      在这里插入图片描述
    • 根据上面说的,我们只用最近 k k k 个点来描述 x i x_i xi,即:所有不属于 Q ( i ) Q(i) Q(i) 的点的 w i j = 0 w_{ij}=0 wij=0

我们需要通过上面两个式子求出我们的 权重系数 w i j w_{ij} wij。一般我们可以通过矩阵和拉格朗日子乘法来求解这个最优化问题。

3.3 x i x_i xi 与 k 个近邻点的线性关系求解过程

首先对于 3.2 中第一个公式进行求解:

  • 首先矩阵化并解析第一个公式:在这里插入图片描述
    • ( 1 ) (1) (1)
      在这里插入图片描述
    • ( 2 ) (2) (2) 中:
      在这里插入图片描述
      • 注意,这里的 ( x i − x j ) (x_i-x_j) (xixj) 表示的是最后的矩阵
      • W i = ( w i 1 , w i 2 , . . . w i k ) T W_i=(w_{i1}, w_{i2},...w_{ik})^T Wi=(wi1,wi2,...wik)T,维度是 k × 1 k×1 k×1
    • ( 3 ) (3) (3) 中:
      在这里插入图片描述
      • ( x i − x j ) W i (x_i-x_j)W_i (xixj)Wi 看作 A A A 矩阵的整体
      • 对一个矩阵求范数,其本质是求这个矩阵特征值的最大值, ∣ ∣ A ∣ ∣ 2 = λ m a x ( A T A ) → ∣ ∣ A ∣ ∣ 2 2 = λ m a x ( A T A ) ||A||_2=\sqrt{λ_{max}(A^TA)}→||A||_2^2=λ_{max}(A^TA) A2=λmax(ATA) A22=λmax(ATA)
      • 因此整个公式就变成了对图中紫色波浪线的公式进行特征值分解然后求特征值的最大值;下面引入如何对一个矩阵进行特征值分解

这里打个断点 ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ***********************

3.3.1 奇异值分解

3.3.1.1 特征值分解 (EVD)

在理角奇异值分解之前,需要先回顾一下特征值分解,如果矩阵 A A A 是一个 m × m m×m m×m 的实对称矩阵(即 A = A T A=A^T A=AT),那么它可以根据 A q i = λ i q i Aq_i=λ_iq_i Aqi=λiqi, q i T q j = 0 ( i ≠ j ) q^T_iq_j=0(i≠j) qiTqj=0(i=j) 被分解成如下的形式:
在这里插入图片描述

  • 其中 Q Q Q 为标准正交阵,即有 Q Q T = I QQ^T= I QQT=I
  • Σ Σ Σ 为对角矩阵,且上面的矩阵的维度均为 m × m m×m m×m
  • λ i λ_i λi 称为特征值,
  • q i q_i qi Q Q Q(特征矩阵)中的列向量,称为特征向量。
  • I I I 在这里表示单位阵,有时候也用 E E E 表示单位阵

上面的特征值分解,对矩阵有着较高的要求,它需要被分解的矩阵 A A A实对称矩阵,但是现实中,我们所遇到的问题一般不是实对称矩阵。那么当我们碰到一般性的矩阵,即有一个 m × n m×n m×n 的矩阵 A A A ,它是否能被分解成上面的形式呢?当然是可以的,这就是我们下面要讨论的内容。

3.3.1.2 奇异值分解(SVD)

有一个 m × n m×n m×n 的实数矩阵 A A A ,我们想要把它分解成如下的形式:
在这里插入图片描述

  • 其中 U U U V V V 均为单位正交阵,即有 U U T = I UU^T=I UUT=I V V T = I VV^T=I VVT=I
  • U U U 称为左奇异矩阵 V V V 称为右奇异矩阵,
  • Σ Σ Σ 仅在主对角线上有值,我们称它为奇异值其它元素均为0
  • 上面矩阵的维度分别为 U ∈ R m × m U∈R^{m×m} URm×m, Σ ∈ R m × n Σ∈R^{m×n} ΣRm×n, V ∈ R n × n V∈R^{n×n} VRn×n
  • 一般 Σ Σ Σ 有如下形式:
    在这里插入图片描述

奇异值分解的各个矩阵形式如下:
在这里插入图片描述

  • 对于奇异值分解,我们可以利用上面的图形象表示,图中方块的颜色表示值的大小,颜色越浅,值越大。对于奇异值矩阵 Σ Σ Σ,只有其主对角线有奇异值,其余均为 0 0 0

正常求上面的 U , V , Σ U,V,Σ U,V,Σ 不便于求,我们可以利用如下性质

在这里插入图片描述

  • PS: 需要指出的是,这里 Σ Σ T ΣΣ^T ΣΣT Σ T Σ Σ^TΣ ΣTΣ 在矩阵的角度上来讲,它们是不相等的,因为它们的维数不同 Σ Σ T ∈ R m × m ΣΣ^T∈R^{m×m} ΣΣTRm×m,而 Σ T Σ ∈ R n × n Σ^TΣ∈R^{n×n} ΣTΣRn×n但是它们在主对角线的奇异值是相等的,即有
    在这里插入图片描述
    因为主对角线上的值的个数永远都是 m m m n n n 中较小的一个(奇异值矩阵非对称)

  • 由于 A A T AA^T AAT A T A A^TA ATA 也是对称矩阵(性质:一个矩阵乘以他的转置矩阵,得到的矩阵是对称矩阵),那么可以利用式(1-1)做特征值分解。

  • 利用式(2-2)对 A A A 做特征值分解,得到的特征矩阵即为 U U U;利用式(2-3)对 A A A 特征值分解,得到的特征矩阵即为 V V V ;对 Σ Σ T ΣΣ^T ΣΣT Σ T Σ Σ^TΣ ΣTΣ 中的特征值开方,可以得到所有的奇异值。

让我们回到 3.3 开头的第 ( 4 ) (4) (4) ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ *************************************
在这里插入图片描述

  • Z i = ( x i − x j ) ( x i − x j ) T , j ∈ Q ( i ) Z_i=(x_i−x_j)(x_i−x_j)^T,j∈Q(i) Zi=(xixj)(xixj)T,jQ(i) 进一步简化上述公式:
    在这里插入图片描述
  • 对于我们最早提出的权重的约束公式也进行矩阵化:
    在这里插入图片描述
    • 其中 W i T = w i 1 , w i 2 , . . . w i k W_i^T=w_{i1}, w_{i2},...w_{ik} WiT=wi1,wi2,...wik,维度是 1 × k 1×k 1×k 1 k 1_k 1k 是维度为 k × 1 k×1 k×1 的全 1 1 1 矩阵 [ 1 , 1 , 1 , . . . 1 ] T [1,1,1,...1]^T [1,1,1,...1]T(k个1)

现在我们将矩阵化的两个式子用拉格朗日子乘法合为一个优化目标:
在这里插入图片描述

  • W i W_i Wi 求导并且令其值为 0 0 0 可得到下面公式:
    在这里插入图片描述
  • 即:
    在这里插入图片描述
    • 其中 λ ′ = − 1 2 λ λ^′=−\frac{1}{2λ} λ=2λ1为一个常数。利用 W i T 1 k = 1 W^T_i1_k=1 WiT1k=1,对 W i W_i Wi 归一化,那么最终我们的权重系数 W i W_i Wi 为:
      在这里插入图片描述

3.4 根据求得的先行参数 W W W 求解低维点集 Y = { y 1 , y 2 , . . . , y m } Y=\{y_1,y_2,...,y_m\} Y={y1,y2,...,ym}

现在我们得到了高维的权重系数 W i W_i Wi,那么我们希望这些权重系数对应的线性关系在降维后的低维一样得到保持。假设我们的 n n n 维样本集 { x 1 , x 2 , . . . , x m } \{x_1,x_2,...,x_m\} {x1,x2,...,xm} 在低维的 d d d 维度对应投影为 { y 1 , y 2 , . . . , y m } \{y_1,y_2,...,y_m\} {y1,y2,...,ym}, 则我们希望保持线性关系,也就是希望对应的均方差损失函数最小,即最小化损失函数 J ( Y ) J(Y) J(Y) 如下:
在这里插入图片描述

  • 可以看到这个式子和我们在高维的损失函数几乎相同,唯一的区别是高维的式子中,高维数据已知,目标是求最小值对应的权重系数W,而我们在低维是权重系数 W W W 已知,求对应的低维数据。

  • 注意,这里的 W W W 已经是 m × m m×m m×m 维度,之前的 W i W_i Wi k × 1 k×1 k×1 维度,对整个 m m m 数据集求和之后: ∑ i = 1 m \sum_{i=1}^m i=1m变成了 k × m k×m k×m ,即:对于整个数据集 X = { x 1 , x 2 , . . . , x m } X=\{x_1,x_2,...,x_m\} X={x1,x2,...,xm}上的所有 m m m 个点,每个点都有 k k k 个近邻,和每个近邻之间都有 1 1 1 个参数,所以参数的维度总共为 W W W k × m k×m k×m;又因为,在整个数据集上其实每两个点之间都有参数,但是我们 k × m k×m k×m 个参数只能表示每个点与近邻之间的关系,我们进一步扩展将参数的数量增加,使得每两个点之间都有参数,只不过,除了这 k × m k×m k×m 个参数之外,其他的参数都为 0 0 0,代表非近邻点与 x i x_i xi 没有关系,通过这种操作,我们将整个参数的数量扩展到 m × m m×m m×m 维,其中有效的参数个数只有 k × m k×m k×m 个,其余的都是 0 0 0

  • 为了得到标准化的低维数据,一般我们也会加入约束条件如下:
    在这里插入图片描述

    • ∑ i = 1 m y i = 0 \sum_{i=1}^my_i=0 i=1myi=0 将矩阵进行中心化
    • 1 m ∑ i = 1 m y i y i T = I \frac{1}{m}\sum_{i=1}^my_iy_i^T=I m1i=1myiyiT=I (单位协方差)

首先我们将目标损失函数矩阵化:
在这里插入图片描述

  • 现在已经知道 W W W 维度为 m × m m×m m×m
  • 现在的目的是通过 W W W 来求算经过降维之后的点的集合 Y = { y 1 , y 2 , . . y m } Y=\{y_1,y_2,..y_m\} Y={y1,y2,..ym}
  • Y Y Y 中所有的点维度是 d d d, d < n d<n d<n
  • 因为前面对 X X X 求权重矩阵 W W W 的时候我们一共涉及了三个量 w i j w_{ij} wij, W i W_i Wi W W W,这里我们再回顾一下:
    • w i j w_{ij} wij 是点 x i x_i xi 周围的 k个近邻分别到 x i x_i xi 的权重,
    • W i W_i Wi 是对于一个 x i x_i xi 周围 k个近邻的参数的矩阵,维度为: k × 1 k×1 k×1
    • W W W 是对于整个 X X X 集合所有 m m m 个点的 k 近邻的参数的综合矩阵,维度为: k × m k×m k×m
    • 而后我们为了将这个权重矩阵 W W W 的参数扩展成 m × m m×m m×m 维,我们就设定 k × m k×m k×m 个数据意外的那些权重都为 0 0 0
    • 所以最后 W W W 的维度是 m × m m×m m×m 但是里面的每一个列向量只有 k k k 个值不为 0 0 0
  • 我们现在拿着 W W W 来对 J ( y ) J(y) J(y) 进行操作来得到我们想要求的 Y = { y 1 , y 2 , . . y m } Y=\{y_1,y_2,..y_m\} Y={y1,y2,..ym}

这个时候可能有一个问题:为什么在下图第一个公式中求和的范围是 i = 1 → k i=1→k i=1k,求解 Y Y Y 的时候,第二个式子的部分的求和范围就变成 i = 1 → m i=1→m i=1m
在这里插入图片描述

  • 其实这个问题也容易理解,我们在第一次求解的时候关注的是周围 k k k 个近邻,而后我们将整个 W W W 扩展到除了 k k k 近邻以外的点,也就是整个数据集 m m m 个点,但是这个时候仍然只有 k k k 个参数值是有效的,因为就像我们上面说的,其他的点在与当前点 y i y_i yi 做矩阵运算的时候乘到的参数 w i j w_{ij} wij 都是 0 0 0,所以并不冲突。

【现在开始正式推导 J ( Y ) J(Y) J(Y)】的求解过程
在这里插入图片描述
在这里插入图片描述

  • t r tr tr 是迹函数,对一个矩阵进行 l 2 l2 l2 范数运算可以与迹函数之间进行转化
  • W W W 维度是: m × m m×m m×m W i W_i Wi 维度是: m × 1 m×1 m×1
  • I I I 的维度是: m × m m×m m×m I i I_i Ii 的维度是: m × 1 m×1 m×1
  • Y Y Y 的维度: d × m d×m d×m
  • 约束函数矩阵化为: Y Y T YY^T YYT= m I mI mI
  • 所以总的 优化目标函数为:
    在这里插入图片描述

在这里插入图片描述

可见 Y Y Y 其实是 M M M 的特征向量构成的矩阵,为了将数据降到 d d d 维,我们只需取 M M M 的最小的 d d d 个非零特征值对应的特征向量,而一般第一个最小的特征值接近 0 0 0,我们将其舍弃,最终按从小到大取前 [ 2 , d + 1 ] [2, d+1] [2,d+1] 个特征值对应的特征向量 M = ( y 2 , y 3 , . . . y d + 1 ) M=(y_2,y_3,...y_{d+1}) M=(y2,y3,...yd+1) 来得到最终的 Y Y Y

为什么 M M M 的最小特征值为 0 0 0 呢?

这是因为 W T e = e W^Te=e WTe=e, 得到 ∣ W T − I ∣ e = 0 |W^T−I|e=0 WTIe=0,由于 e ≠ 0 e≠0 e=0 ,所以只有 W T − I = 0 W^T−I=0 WTI=0, 即 ( I − W ) T = 0 (I−W)^T=0 (IW)T=0 ,两边同时左乘 I − W I−W IW,即可得到 ( I − W ) ( I − W ) T e = 0 e (I−W)(I−W)^Te=0e (IW)(IW)Te=0e,即 M M M 的最小特征值为 0 0 0.



http://chatgpt.dhexx.cn/article/tyTrsSil.shtml

相关文章

安装HAXM

老师给的是在网上下载HAXM。但事实上打开这里你会发现Android 已经自动下载了HAXM 因此你要做的是找到HAXM路径&#xff0c;然后继续安装它。我的路径是 C:\Users\DELL\AppData\Local\Android\Sdk\extras\intel\Hardware_Accelerated_Execution_Manager

Intel x86 Emulator Accelerator(HAXM installer)无法安装

在sdk manager中Intel x86 Emulator Accelerator(HAXM installer)后面显示 NOT compatible with windows 这个时候可以尝试手动安装Intel x86 Emulator Accelerator(HAXM installer) 1、在网上下载后&#xff0c;https://software.intel.com/en-us/articles/intel-hardware-a…

haxm intel庐_Android Studio中Intel HAXM的那些坑

最近用过两台电脑折腾Android Studio&#xff0c;都是windows的系统&#xff0c;不知道为什么连着踩了两个坑。 第一台我结束了qemu-system-i386.exe这个倒霉的进程 导致我开启模拟器的时候一直提示我没有安装Intel HAXM&#xff0c;没办法咯&#xff0c;只好再安装一遍&#x…

AMD CPU无法安装Intel HAXM解决方法

步骤1. 步骤2. 找到安装目录&#xff08;我的安装目录&#xff1a;D:\Android\SDK\extras\google\Android_Emulator_Hypervisor_Driver&#xff09;下的这个文件&#xff1a;silent_install&#xff0c;右击该文件选择“以管理员运行”&#xff0c;即可。

Android Studio 如何 安装 HAXM

Android Studio 如何 安装 HAXM 打开 Android Stutio打开设置搜索 Android&#xff0c;定位到 Android SDK切换到 SKD Tools 标签&#xff0c;然后点选下面的 Intel x86 Emulator Eccelerator(HAXM installer)&#xff0c;之后 Apply 应用&#xff0c;编辑器就会自动下载这个东…

HAXM installation failed. To install HAXM follow the instructions found at

AMD处理器 在控制面板中打开虚拟机平台&#xff0c;重启电脑

Android Studio中 HAXM安装失败的问题(Intel HAXM installation failed. To install Intel HAXM follow the…)

我要喷人了&#xff0c;这破Android Studio也太难搞了&#xff0c;环境按了我半天各种问题都试了&#xff0c;友友们啊记得先看日志再去找问题&#xff0c;我就是只看报错没有找日志后面突然去看一下就找到问题了 日志就是报错信息上面的那一句&#xff0c;我这里日志说的是&a…

Android Studio启动虚拟机时一直提示安装Haxm

目录 问题描述 问题截图 原因猜测 解决方案 问题描述 Android Studio启动虚拟机时一直出现Install Haxm&#xff0c;但是按照他的安装步骤后还是不停的弹出提示安装Haxm 问题截图 原因猜测 为什么会出现这种情况那&#xff1f;我猜测应该是权限问题&#xff0c;也就是说…

“暴力”解决HAXM installation failed问题

废话不多说&#xff0c;当你遇到 “Intel HAXM安装失败。要安装Intel HAXM&#xff0c;请遵循以下说明&#xff1a;https://githubCom/intel/haxm/wiki/安装-Windows上的说明” 的情况时&#xff08;如下图所示&#xff09; 造成安装失败有多种可能原因&#xff0c;每个人的电脑…

haxm intel庐_在电脑上安装Intel HAXM(硬件加速执行管理器)

用Inter Atom模式的Android模拟器启动报一下错误&#xff1a; Starting emulator for AVD new emulator: ERROR: x86 emulation currently requires hardware acceleration! Please ensure Intel HAXM is properly installed and usable. CPU acceleration status: HAX kernel …

关于android studio 中安装intel haxm问题的解决

关于android studio 安装intel haxm问题的解决 遇到的问题解决问题总结遇到的问题 安装android studio 过程中intel haxm失败,导致后续笔记本运行模拟器过程中漫长等待让我痛不欲生。于是着手解决intel haxm安装失败问题。我的笔记本型号是thinkpad w510,处理器i7 Q720,操作…

intel android haxm,使用Intel HAXM为Android模拟器加速,媲美真机

Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualization Technology (VT) 的硬件加速&#xff0c; 因此需要 CPU 支持 VT &#xff0c; 而且仅限于 Intel CPU&#xff0c; 与 AMD CPU 无缘&#xff0c; Intel HAXM 的描述如下&#xff1a; 使用…

intel android haxm,使用Intel HAXM为 Android模拟器加速

Intel HAXM (Hardware Accelerated Execution Manager) 使用基于 Intel(R) Virtualization Technology (VT) 的硬件加速&#xff0c; 因此需要 CPU 支持 VT &#xff0c; 而且仅限于 Intel CPU&#xff0c; 与 AMD CPU 无缘&#xff0c; Intel HAXM 的描述如下&#xff1a;使用…

安装haxm时遇到的三种报错及解决措施

安装Android Studio时遇到这样的报错&#xff0c;花了一整天才解决掉&#xff0c;基本翻遍了CSDN上的所有相关文章&#xff0c;步骤如下: 检查错误原因参考文章1 这一步需要我们找到haxm的安装日志&#xff0c;路径在c盘里&#xff0c;具体如图&#xff0c;我的路径是C:\User…

Android Studio中启动模拟器时提示HAXM错误的解决方法

Android Studio中启动模拟器时&#xff0c;会提示HAXM错误&#xff0c;如图1所示。 图1 提示HAXM错误 以上错误的提示信息是需要在BIOS中打开“VT-x”设置&#xff0c;但是打开该设置后&#xff0c;依然会显示该错误信息。 相关链接1 VT-x&#xff0c;其中&#xff0c;VT是Vi…

《如何为Android Studio安装HAXM》

Preface&#xff1a; 1.Intel HAXM (Hardware Accelerated Execution Manager)&#xff0c;即英特尔硬件加速执行管理器(Intel HAXM)是一款硬件辅助虚拟引擎(管理程序) 使用基于 Intel(R) Virtualization Technology (VT) 的硬件加速&#xff0c; 因此需要 CPU 支持 VT &…

移动平台复习(wust)

标题# 移动平台复习 第二章 Andriod开发环境搭建 1、什么是 HAXM&#xff1f; HAXM 全称是 Hardware Accelerated Execution Manager&#xff0c;是 Intel 转门为 Android 模拟器提供的硬件加速&#xff0c;电脑的 CPU 必须支持 Intel VT 虚拟技术。 2、什么是 Android SDK&…

如何安装HAXM,如何解决HAXM installation failed问题

如何安装HAXM&#xff0c;如何解决HAXM installation failed问题 在安卓开发的过程中&#xff0c;大家都会需要用到安卓虚拟设备&#xff0c;在Android Studio中运行虚拟设备要求安装Intel硬件加速器&#xff08;HAXM&#xff09;&#xff0c;虽然说是推荐使用但实际上不安装就…

strdup函数

函数原型&#xff1a;extern char *strdup(char *str) 参数说明&#xff1a;str待复制的字符串。 所在库名&#xff1a;#include <string.h> 函数功能&#xff1a;实现复制字符串str。 返回说明&#xff1a;返回复制的新字符串的指针&#xff0c;复制失败…

微信小程序完整项目实战(前端+后端)

基于微信小程序的在线商城点单系统 前言&#xff1a;闲来无事&#xff0c;想以后自己开一个小超市或者小吃店&#xff0c;能够支持线上下单&#xff0c;既方便客户也方便自己。系统采用C#语言作为后端实现与小程序的交互&#xff0c;给用来学习或者想自己开个小店的朋友当个参考…