机器学习笔记之降维——样本均值与样本方差的矩阵表示

  • 引言
    • 场景介绍
    • 样本均值与样本方差
    • 样本均值与样本方差的矩阵表示
      • 样本均值的矩阵表达
      • 样本方差的矩阵表达
    • 中心矩阵的性质

引言

上一节介绍了维数灾难,随着维数增加对计算量样本稀疏性造成的影响。本节将介绍降维的预备知识——对样本均值和样本方差进行矩阵表示

场景介绍

已知数据集合X\mathcal XX由NNN个样本构成:
X={x(1),x(2),⋯,x(N)}\mathcal X = \{x^{(1)},x^{(2)},\cdots,x^{(N)}\}X={x(1),x(2),⋯,x(N)}
任意样本x(i)(i=1,2,⋯,N)x^{(i)}(i=1,2,\cdots,N)x(i)(i=1,2,⋯,N)均包含ppp维特征:
x(i)=(x1(i)x2(i)⋮xp(i))x(i)∈Rp,i=1,2,⋯,Nx^{(i)} = \begin{pmatrix}x_1^{(i)} \\ x_2^{(i)} \\ \vdots \\ x_p^{(i)}\end{pmatrix} \quad x^{(i)} \in \mathbb R^p,i=1,2,\cdots,N x(i)=⎝⎛​x1(i)​x2(i)​⋮xp(i)​​⎠⎞​x(i)∈Rp,i=1,2,⋯,N
至此,数据集合X\mathcal XX可表示为N×pN \times pN×p的矩阵形式:
X=(x(1),x(2),⋯,x(N))T=(x1(1),x2(1),⋯,xp(1)x1(2),x2(2),⋯,xp(2)⋮x1(N),x2(N),⋯,xp(N))N×p\mathcal X = \begin{pmatrix}x^{(1)},x^{(2)},\cdots,x^{(N)}\end{pmatrix}^{T} = \begin{pmatrix} x_1^{(1)},x_2^{(1)},\cdots,x_p^{(1)} \\ x_1^{(2)},x_2^{(2)},\cdots,x_p^{(2)} \\ \vdots \\ x_1^{(N)},x_2^{(N)},\cdots,x_p^{(N)}\end{pmatrix}_{N \times p}X=(x(1),x(2),⋯,x(N)​)T=⎝⎛​x1(1)​,x2(1)​,⋯,xp(1)​x1(2)​,x2(2)​,⋯,xp(2)​⋮x1(N)​,x2(N)​,⋯,xp(N)​​⎠⎞​N×p​

样本均值与样本方差

假设数据集合X\mathcal XX是 一维数据集合

  • 样本均值(Sample Mean)Xˉ\bar {\mathcal X}Xˉ表示具体如下:
    Xˉ=1N∑i=1Nx(i)\bar {\mathcal X} = \frac{1}{N} \sum_{i=1}^{N} x^{(i)}Xˉ=N1​i=1∑N​x(i)
  • 样本方差(Sample Convariance)S\mathcal SS具体表示如下:
    S=1N∑i=1N(x(i)−Xˉ)2\mathcal S = \frac{1}{N} \sum_{i=1}^N (x^{(i)} - \bar{\mathcal X})^2S=N1​i=1∑N​(x(i)−Xˉ)2

对应地,如果数据集合X\mathcal XX中的样本x(i)(i=1,2,⋯,N)x^{(i)}(i=1,2,\cdots,N)x(i)(i=1,2,⋯,N)是ppp维向量。这样一个集合,它的 样本均值和样本方差如何表示呢

  • 样本均值
    Xˉ=1N∑i=1Nx(i)\bar {\mathcal X} = \frac{1}{N} \sum_{i=1}^{N} x^{(i)}Xˉ=N1​i=1∑N​x(i)

  • 样本方差
    S=1N∑i=1N(x(i)−Xˉ)(x(i)−Xˉ)T\mathcal S = \frac{1}{N} \sum_{i=1}^N (x^{(i)} - \bar {\mathcal X})(x^{(i)} - \bar {\mathcal X})^{T}S=N1​i=1∑N​(x(i)−Xˉ)(x(i)−Xˉ)T

由于x(i)x^{(i)}x(i)是一个ppp维向量,因而样本均值Xˉ\bar {\mathcal X}Xˉ同样是一个ppp维向量形式
Xˉ=(1N∑i=1Nx1(i)1N∑i=1Nx2(i)⋮1N∑i=1Nxp(i))p×1\bar {\mathcal X} = \begin{pmatrix} \frac{1}{N} \sum_{i=1}^{N} x_1^{(i)} \\ \frac{1}{N} \sum_{i=1}^{N} x_2^{(i)} \\ \vdots \\ \frac{1}{N} \sum_{i=1}^{N} x_p^{(i)}\end{pmatrix}_{p \times 1}Xˉ=⎝⎛​N1​∑i=1N​x1(i)​N1​∑i=1N​x2(i)​⋮N1​∑i=1N​xp(i)​​⎠⎞​p×1​

对应的样本方差是一个p×pp\times pp×p的方阵形式:
Sp×p=1N∑i=1N(x(i)−Xˉ)p×1⋅(x(i)−Xˉ)1×pT\mathcal S_{p \times p} = \frac{1}{N} \sum_{i=1}^N (x^{(i)} - \bar {\mathcal X})_{p \times 1} \cdot (x^{(i)} - \bar {\mathcal X})_{1 \times p}^{T}Sp×p​=N1​i=1∑N​(x(i)−Xˉ)p×1​⋅(x(i)−Xˉ)1×pT​

样本均值与样本方差的矩阵表示

样本均值的矩阵表达

样本均值公式展开,写成如下向量乘法形式
Xˉ=1N∑i=1Nx(i)=1N(x(1),x(2),⋯,x(N))p×N⋅(11⋮1)N×1\bar {\mathcal X} = \frac{1}{N} \sum_{i=1}^N x^{(i)} = \frac{1}{N}\begin{pmatrix}x^{(1)},x^{(2)},\cdots,x^{(N)}\end{pmatrix}_{p \times N} \cdot \begin{pmatrix}1 \\ 1\\ \vdots \\1\end{pmatrix}_{N \times 1}Xˉ=N1​i=1∑N​x(i)=N1​(x(1),x(2),⋯,x(N)​)p×N​⋅⎝⎛​11⋮1​⎠⎞​N×1​
定义如下符号:
元素均为1的NNN维列向量。
(11⋮1)N×1=IN\begin{pmatrix}1 \\ 1\\ \vdots \\1\end{pmatrix}_{N \times 1} = \mathcal I_N⎝⎛​11⋮1​⎠⎞​N×1​=IN​
样本均值Xˉ\bar {\mathcal X}Xˉ可表示为如下形式:
Xˉ=1N(x(1),x(2),⋯,x(N))⋅IN=1NXT⋅IN\begin{aligned} \bar{\mathcal X} & = \frac{1}{N} \begin{pmatrix}x^{(1)},x^{(2)},\cdots,x^{(N)}\end{pmatrix} \cdot \mathcal I_N \\ & = \frac{1}{N} \mathcal X^{T} \cdot \mathcal I_N \end{aligned}Xˉ​=N1​(x(1),x(2),⋯,x(N)​)⋅IN​=N1​XT⋅IN​​

样本方差的矩阵表达

样本均值,将样本方差公式进行展开
S=1N∑i=1N(x(i)−Xˉ)(x(i)−Xˉ)T=1N[(x(1)−Xˉ)(x(1)−Xˉ)T+⋯+(x(N)−Xˉ)(x(N)−Xˉ)T]\begin{aligned} \mathcal S & = \frac{1}{N} \sum_{i=1}^N (x^{(i)} - \bar {\mathcal X})(x^{(i)} - \bar {\mathcal X})^{T} \\ & = \frac{1}{N} \left[ (x^{(1)} - \bar{\mathcal X})(x^{(1)} - \bar{\mathcal X})^{T} + \cdots + (x^{(N)} - \bar{\mathcal X})(x^{(N)} - \bar{\mathcal X})^{T}\right] \end{aligned}S​=N1​i=1∑N​(x(i)−Xˉ)(x(i)−Xˉ)T=N1​[(x(1)−Xˉ)(x(1)−Xˉ)T+⋯+(x(N)−Xˉ)(x(N)−Xˉ)T]​
将上述中括号中的元素表示为向量乘积的形式:
S=1N(x(1)−Xˉ,⋯,x(N)−Xˉ)⋅[(x(1)−Xˉ)T(x(2)−Xˉ)T⋮(x(N)−Xˉ)T]\mathcal S = \frac{1}{N} \left(x^{(1)} - \bar {\mathcal X} , \cdots, x^{(N)} - \bar{\mathcal X}\right) \cdot \begin{bmatrix} \left(x^{(1)} - \bar {\mathcal X}\right)^{T} \\ \left(x^{(2)} - \bar {\mathcal X}\right)^{T} \\ \vdots \\ \left(x^{(N)} - \bar {\mathcal X}\right)^{T}\end{bmatrix}S=N1​(x(1)−Xˉ,⋯,x(N)−Xˉ)⋅⎣⎡​(x(1)−Xˉ)T(x(2)−Xˉ)T⋮(x(N)−Xˉ)T​⎦⎤​
其中,(x(1)−Xˉ,⋯,x(N)−Xˉ)\left(x^{(1)} - \bar {\mathcal X} , \cdots, x^{(N)} - \bar{\mathcal X}\right)(x(1)−Xˉ,⋯,x(N)−Xˉ)可拆成两个行向量的差值
(x(1)−Xˉ,⋯,x(N)−Xˉ)=(x(1),⋯,x(N))−(Xˉ,⋯,Xˉ)=XT−Xˉ⋅(1,1,⋯,1)1×N=XT−Xˉ⋅INT\begin{aligned} \left(x^{(1)} - \bar {\mathcal X} , \cdots, x^{(N)} - \bar{\mathcal X}\right) & = \left(x^{(1)}, \cdots ,x^{(N)}\right) - \left(\bar {\mathcal X},\cdots, \bar {\mathcal X}\right) \\ & = \mathcal X^{T} - \bar {\mathcal X} \cdot (1,1, \cdots,1)_{1 \times N} \\ & = \mathcal X^{T} - \bar {\mathcal X} \cdot \mathcal I_N^{T} \end{aligned}(x(1)−Xˉ,⋯,x(N)−Xˉ)​=(x(1),⋯,x(N))−(Xˉ,⋯,Xˉ)=XT−Xˉ⋅(1,1,⋯,1)1×N​=XT−Xˉ⋅INT​​
样本均值Xˉ\bar {\mathcal X}Xˉ的矩阵表示结果代入上式,并将XT\mathcal X^{T}XT提出来:
注意该位置提取公因式的时候,XT\mathcal X^{T}XT对应的公因式结果是EN\mathcal E_NEN​而不是单纯的1。其中EN\mathcal E_NEN​是N维单位矩阵。即:XTEN=XT\mathcal X^{T}\mathcal E_N = \mathcal X^{T}XTEN​=XT

XT−1NXT⋅IN⋅INT=XT(EN−1NININT)\mathcal X^{T} - \frac{1}{N} \mathcal X^{T}\cdot \mathcal I_N \cdot \mathcal I_N^{T} = \mathcal X^{T} \left(\mathcal E_N - \frac{1}{N} \mathcal I_N\mathcal I_N^{T}\right)XT−N1​XT⋅IN​⋅INT​=XT(EN​−N1​IN​INT​)

由于[(x(1)−Xˉ)T(x(2)−Xˉ)T⋮(x(N)−Xˉ)T]\begin{bmatrix} \left(x^{(1)} - \bar {\mathcal X}\right)^{T} \\ \left(x^{(2)} - \bar {\mathcal X}\right)^{T} \\ \vdots \\ \left(x^{(N)} - \bar {\mathcal X}\right)^{T}\end{bmatrix}⎣⎡​(x(1)−Xˉ)T(x(2)−Xˉ)T⋮(x(N)−Xˉ)T​⎦⎤​是(x(1)−Xˉ,⋯,x(N)−Xˉ)\left(x^{(1)} - \bar {\mathcal X} , \cdots, x^{(N)} - \bar{\mathcal X}\right)(x(1)−Xˉ,⋯,x(N)−Xˉ)的转置形式,则有:
[(x(1)−Xˉ)T(x(2)−Xˉ)T⋮(x(N)−Xˉ)T]=[XT(EN−1NININT)]T=(EN−1NININT)T⋅X\begin{bmatrix} \left(x^{(1)} - \bar {\mathcal X}\right)^{T} \\ \left(x^{(2)} - \bar {\mathcal X}\right)^{T} \\ \vdots \\ \left(x^{(N)} - \bar {\mathcal X}\right)^{T}\end{bmatrix} = \left[\mathcal X^{T} \left(\mathcal E_N - \frac{1}{N} \mathcal I_N\mathcal I_N^{T}\right)\right]^{T} = \left(\mathcal E_N - \frac{1}{N} \mathcal I_N\mathcal I_N^{T}\right)^{T} \cdot \mathcal X⎣⎡​(x(1)−Xˉ)T(x(2)−Xˉ)T⋮(x(N)−Xˉ)T​⎦⎤​=[XT(EN​−N1​IN​INT​)]T=(EN​−N1​IN​INT​)T⋅X

至此,样本方差S\mathcal SS的矩阵结果表示如下:
S=1NXT(EN−1NININT)⋅(EN−1NININT)T⋅X\mathcal S = \frac{1}{N} \mathcal X^{T} (\mathcal E_N - \frac{1}{N} \mathcal I_N \mathcal I_N^{T}) \cdot (\mathcal E_N - \frac{1}{N} \mathcal I_N \mathcal I_N^{T})^{T} \cdot \mathcal XS=N1​XT(EN​−N1​IN​INT​)⋅(EN​−N1​IN​INT​)T⋅X

我们将EN−1NININT\mathcal E_N - \frac{1}{N} \mathcal I_N \mathcal I_N^{T}EN​−N1​IN​INT​称作中心矩阵(Centering Matrix),用HN\mathcal H_NHN​表示。至此,样本方差S\mathcal SS的矩阵表示可化简为:
S=1NXTH⋅HTX\mathcal S = \frac{1}{N} \mathcal X^{T} \mathcal H \cdot \mathcal H^{T} \mathcal XS=N1​XTH⋅HTX

中心矩阵的性质

中心矩阵的物理意义相当于对样本空间中的样本点进行平移,平移至样本空间的原点位置

示例:
已知K\mathcal KK是由两个2维样本组成的样本集合,具体表示如下:
K=(1234)\mathcal K = \begin{pmatrix} 1 \quad 2 \\ 3 \quad 4 \end{pmatrix}K=(1234​)
此时,数据集合中仅包含两个样本:A:(1,3)\mathcal A:(1,3)A:(1,3),B:(2,4)\mathcal B:(2,4)B:(2,4)。其对应的中心矩阵H2\mathcal H_2H2​表示如下:
H2=E2−12I2⋅I2T=(1001)−12(1111)=(12−12−1212)\begin{aligned} \mathcal H_2 & = \mathcal E_2 - \frac{1}{2} \mathcal I_2 \cdot \mathcal I_2^{T} \\ & = \begin{pmatrix}1 \quad 0 \\ 0 \quad 1\end{pmatrix} - \frac{1}{2}\begin{pmatrix}1 \quad 1 \\ 1 \quad 1\end{pmatrix} \\ & = \begin{pmatrix}\frac{1}{2} \quad -\frac{1}{2} \\ -\frac{1}{2} \quad \frac{1}{2}\end{pmatrix} \end{aligned}H2​​=E2​−21​I2​⋅I2T​=(1001​)−21​(1111​)=(21​−21​−21​21​​)​
此时,样本K\mathcal KK左乘中心矩阵H2\mathcal H_2H2​,具体结果如下:
K⋅H2=(−1212−1212)\mathcal K \cdot \mathcal H_2 = \begin{pmatrix}-\frac{1}{2} \quad \frac{1}{2} \\ -\frac{1}{2} \quad \frac{1}{2}\end{pmatrix}K⋅H2​=(−21​21​−21​21​​)
此时得到两个新的样本点:A′:(−12,−12)\mathcal A':(-\frac{1}{2},-\frac{1}{2})A′:(−21​,−21​),B′:(12,12)\mathcal B':(\frac{1}{2},\frac{1}{2})B′:(21​,21​)。原始样本点新样本点在样本空间中的表示如下:

其中橙色点是原始样本点;蓝色点是左乘中心矩阵后的新样本点。可以观察得到相比于原始样本点,新样本点向原点位置偏移,但样本点之间的相对位置没有变化。

观察中心矩阵H\mathcal HH:
HN×N=EN−1NININT\mathcal H_{N \times N} = \mathcal E_N - \frac{1}{N} \mathcal I_N\mathcal I_N^{T}HN×N​=EN​−N1​IN​INT​

  • 中心矩阵的转置HT\mathcal H^{T}HT:
    由于E\mathcal EE是单位矩阵,因此有:ET=E\mathcal E^{T} = \mathcal EET=E
    HT=(EN−1NININT)T=(EN)T−1N⋅(INT)T⋅INT=EN−1NININT=H\begin{aligned} \mathcal H^{T} & = (\mathcal E_N - \frac{1}{N} \mathcal I_N \mathcal I_N^{T})^{T} \\ & = (\mathcal E_N)^{T} - \frac{1}{N} \cdot (\mathcal I_N^{T})^{T} \cdot \mathcal I_N^{T} \\ & = \mathcal E_N - \frac{1}{N} \mathcal I_N \mathcal I_N^{T} \\ & = \mathcal H \end{aligned}HT​=(EN​−N1​IN​INT​)T=(EN​)T−N1​⋅(INT​)T⋅INT​=EN​−N1​IN​INT​=H​
    由此可知,中心矩阵H\mathcal HH是一个对称矩阵

  • 中心矩阵的平方H2\mathcal H^2H2:
    H2=H⋅H=(EN−1NININT)⋅(EN−1NININT)=EN−2NININT+1N2ININT⋅ININT\begin{aligned} \mathcal H^2 & = \mathcal H \cdot \mathcal H \\ & = (\mathcal E_N - \frac{1}{N} \mathcal I_N \mathcal I_N^{T})\cdot (\mathcal E_N - \frac{1}{N} \mathcal I_N \mathcal I_N^{T}) \\ & = \mathcal E_N - \frac{2}{N}\mathcal I_N\mathcal I_N^{T} + \frac{1}{N^2} \mathcal I_N\mathcal I_N^{T}\cdot \mathcal I_N\mathcal I_N^{T} \end{aligned}H2​=H⋅H=(EN​−N1​IN​INT​)⋅(EN​−N1​IN​INT​)=EN​−N2​IN​INT​+N21​IN​INT​⋅IN​INT​​
    因为ININT\mathcal I_N\mathcal I_N^{T}IN​INT​它的结果是一个各元素均为1的N×NN\times NN×N的方阵,因而ININT⋅ININT\mathcal I_N\mathcal I_N^{T}\cdot \mathcal I_N\mathcal I_N^{T}IN​INT​⋅IN​INT​结果是一个各元素均为NNN的N×NN \times NN×N的方阵。即:
    ININT⋅ININT=N⋅ININT\mathcal I_N\mathcal I_N^{T}\cdot \mathcal I_N\mathcal I_N^{T} = N \cdot \mathcal I_N\mathcal I_N^{T}IN​INT​⋅IN​INT​=N⋅IN​INT​
    将该结果带入上式:
    H2=EN−2NININT+1NININT=EN−1NININT=H\begin{aligned} \mathcal H^2 & = \mathcal E_N - \frac{2}{N}\mathcal I_N\mathcal I_N^{T} + \frac{1}{N}\mathcal I_N\mathcal I_N^{T} \\ & = \mathcal E_N - \frac{1}{N} \mathcal I_N \mathcal I_N^{T} \\ & = \mathcal H \end{aligned}H2​=EN​−N2​IN​INT​+N1​IN​INT​=EN​−N1​IN​INT​=H​

综上,因而有:
H2=H⋅H=HT⋅H=H⋅HT=H\mathcal H^2 = \mathcal H \cdot \mathcal H = \mathcal H^{T} \cdot \mathcal H = \mathcal H \cdot \mathcal H^{T} = \mathcal HH2=H⋅H=HT⋅H=H⋅HT=H

回顾样本方差的矩阵表示,可以继续化简为如下形式:
S=1NXTH⋅HTX=1NXTH⋅X\begin{aligned} \mathcal S & = \frac{1}{N} \mathcal X^{T} \mathcal H \cdot \mathcal H^{T}\mathcal X \\ & = \frac{1}{N} \mathcal X^{T} \mathcal H \cdot \mathcal X \end{aligned}S​=N1​XTH⋅HTX=N1​XTH⋅X​

至此,我们介绍了样本均值样本方差的矩阵表达,以及中心矩阵的相关性质。下一节将介绍PCA降维。

相关参考:
机器学习-降维2-样本均值&样本方差的矩阵表示

机器学习笔记之降维(二)样本均值与样本方差的矩阵表示相关推荐

  1. 机器学习笔记之降维(一)维数灾难

    机器学习笔记之降维--维数灾难 引言 回顾:过拟合 维度灾难 从数值角度观察维数灾难 从几何角度观察维度灾难 示例1 示例2 引言 本节将介绍降维算法,并介绍降维算法的相关背景. 回顾:过拟合 我们在 ...

  2. 机器学习笔记之——降维(二)主成分分析(PCA)

    目录 主成分分析(PCA) 1. 坐标投影 2. 最近重构性 3. 最大可分性 4. 求解 主成分分析(PCA) 1. 坐标投影 主成分分析(PCA, Principal Component Anal ...

  3. 机器学习笔记(十)降维和度量学习

    10.降维和度量学习 10.1k近邻学习 k近邻(k-NearestNeighbor,简称kNN)学习是一种常用的监督学习方法,其原理是:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练 ...

  4. [吴恩达机器学习笔记]14降维3-4PCA算法原理

    14.降维 觉得有用的话,欢迎一起讨论相互学习~Follow Me 14.3主成分分析原理Proncipal Component Analysis Problem Formulation 主成分分析( ...

  5. python如何处理spark上的数据_spark机器学习笔记:(二)用Spark Python进行数据处理和特征提取...

    下面用"|"字符来分隔各行数据.这将生成一个RDD,其中每一个记录对应一个Python列表,各列表由用户ID(user ID).年龄(age).性别(gender).职业(occu ...

  6. 吴恩达机器学习笔记:(二)代价函数

    代价函数 本例中如下图所示:代价函数实际目的是为了通过寻找 θ1, θ2两个参数实现拟合的直线最接近数据点. 本例中代价函数的定义 θ1, θ2 寻找θ1,θ2参数最优值 寻找 θ1的最优解 当θ1 ...

  7. 机器学习笔记(十二):聚类

    目录 1)Unsupervised learning introduction 2)K-means algorithm 3)Optimization objective 4)Random initia ...

  8. 机器学习笔记(十二)——马尔科夫模型

    马尔科夫模型是一种概率图模型,它描述了一类重要的随机过程(随机过程又称为随机函数,是随时间而随机变化的过程).我们常常需要考察一个随机变量序列,这些随机变量序列并不是相互独立的,每个随机变量的值都依赖 ...

  9. 机器学习笔记:Overview

    1)机器学习笔记(1):Introduction 2)机器学习笔记(2):单变量线性回归 3)机器学习笔记(3):线性代数回顾 4)机器学习笔记(4):多变量线性回归 5)机器学习笔记(五):逻辑回归 ...

最新文章

  1. 6174C语言编程,C语言验证6174数学问题
  2. COG、XR、X5R、Y5V电容器分类
  3. 手把手教你将pyqt程序打包成exe(2)
  4. 【uoj#139】[UER #4]被删除的黑白树 贪心
  5. 如何自己亲手制作一个防疫地图?
  6. 斑马Zebra驱动下载
  7. web api教程Java_WebApi项目创建CURD
  8. JAVA annotation入门
  9. git 查看、创建、切换、删除、重命名和推送分支
  10. 使用event.keyCode来判断是否为数字
  11. AngularJS 动态模板
  12. 把苦难装在心里--《赢在中国》(2008-05-27)
  13. XNA Game Studio 2.0安装问题,崩溃了
  14. 积分matlab实现
  15. 全国31省份实体经济发展水平数据 (2004-2017年)
  16. Java自学经验分享
  17. Java-c3p0原生写法
  18. linux自动识别车牌设计,车牌检测和识别的Python应用软件实现
  19. 微信版本android5.0,微信5.0官方下载-微信5.0 安卓版v8.0.3-PC6安卓网
  20. 详解 WebSocket 原理,附完整的聊天室实战 Demo

热门文章

  1. 【VMware】VM安装虚拟机
  2. 基于51单片机的全自动洗衣机仿真原理图程序方案设计
  3. AWS介绍(详细好理解)
  4. php中soap使用,SoapServer服务端编写,SoapClient客户端编写
  5. python time模块_Python time模块和datetime模块
  6. 领域驱动设计(DDD):分层架构的三种模式
  7. 社招国企八成是坑,都是关系户看不上的岗位!压力大,薪资低,考核严,程序员地位最低!...
  8. 海蜘蛛软路由 linux,海蜘蛛网络科技官方网站 :: 做最好的中文软路由 :: 软件路由器 :: 软路由 :: 软件路由 :: RouterOs...
  9. [海蜘蛛] 海蜘蛛 V8 全线无限试用版 免费发布破解教程
  10. 三刷CPA注册会计师之会计决胜之道