本文中,用RR表示实数,RnR^n表示实nn元x=(ξ1,…,ξn)x=(\xi_1,\ldots,\xi_n)的向量空间,除非特别指明,否则都是在RnR^n中讨论。在RnR^n中两个向量x,x∗x,x^*的内积表示成

⟨x,x∗⟩=ξ1ξ∗1+⋯+ξnξ∗n

\langle x,x^*\rangle=\xi_1\xi_1^*+\cdots+\xi_n\xi_n^*

符号AA既可以表示m×nm\times n的实矩阵AA,也可以表示从RnR^n到RmR^m相应的线性变换x→Axx\to Ax。转置矩阵以及从RmR^m到RnR^n相应的伴随线性变换都用A∗A^*表示,所以大家需要知道下式的含义

⟨Ax,y∗⟩=⟨x,A∗y∗⟩

\langle Ax,y^*\rangle=\langle x,A^*y^*\rangle

(在表示向量的符号中,*不进行任何操作;考虑到矩阵乘法,所有向量都看做列向量。我们不断的使用向量符号是为了让大家熟悉它的二元性,也就说说,既可以将向量看做点,也可以将向量看成线性函数的nn元系数)所有证明过程都会用符号|||| 表示证明结束。

如果x,yx,y是RnR^n中不同的点,那么形如下面的点集就叫做通过x,yx,y的直线

(1−λ)x+λy=x+λ(y−x),λ∈R

(1-\lambda)x+\lambda y=x+\lambda(y-x),\quad \lambda\in R

MM是RnR^n的一个子集,如果对于每一个x∈M,y∈M,λ∈Rx\in M,y\in M,\lambda\in R,可得(1−λ)x+λy∈M(1-\lambda)x+\lambda y\in M,那么我们称这个子集为仿射集(affine set)。

空集∅\emptyset和空间RnR^n本身就是仿射集的极端例子,另外MM仅有一个孤立点的情况也满足定义。一般来讲,仿射集必须包含通过任意两个点的整条直线,直观印象是不存在弯曲的部分,就像空间中的一条直线或者一个平面。

仿射集正式的几何意义可能是从线性代数中RnR^n子空间的定理发展来的,仿射集和子空间之间准确的对应关系可以用下面两个定理描述。

定理1.1 RnR^n的子空间是包含原点的仿射集。

证明:每个子空间包含0并且对于加法和标量乘法封闭,所以它是一个仿射集。

反过来,假设MM是一个包含0的仿射集。对于所有的x∈M,λ∈Rx\in M,\lambda\in R,我们有

λx=(1−λ)0+λx∈M

\lambda x=(1-\lambda)0+\lambda x\in M

所以MM对标量乘法封闭。接下来,如果x∈M,y∈Mx\in M,y\in M,我们有

12(x+y)=12x+(1−12)y∈M

\frac{1}{2}(x+y)=\frac{1}{2}x+(1-\frac{1}{2})y\in M

因此

x+y=2(12(x+y))∈M

x+y=2(\frac{1}{2}(x+y))\in M

所以MM也对加法封闭,故它是一个子空间。||||

对于M⊂Rn,a∈RnM\subset R^n,a\in R^n,将MM平移aa定义为集合

M+a={x+a|x∈M}

M+a=\{x+a|x\in M\}

仿射集平移后依然是仿射集,很容易验证这个结论。

对于仿射集MM,如果对于某个a,M=L+aa,M=L+a,那么我们说MM平行于仿射集LL。很明显,“MM与LL平行”是RnR^n中仿射子集集类的一个等价关系,需要注意的是,这个平行定义和我们平常的平行定义是不同的,例如我们不能说一条线平行于一个平面,但可以说一条线平行于给定平面中的一条线,反之亦然。

定理1.2 每个非空仿射集MM平行于唯一的子空间LL,LL由下式给出

L=M−M={x−y|x∈M,y∈M}

L=M-M=\{x-y|x\in M,y\in M\}

证明:我们首先说明MM不能与两个不同的子空间平行。平行于MM的子空间L1,L2L_1,L_2互相是平行的,那么存在某个aa使得L2=L1+aL_2=L_1+a。因为0∈L20\in L_2,所以−a∈L1-a\in L_1,因此a∈L1a\in L_1。但是这样的话L1⊃L1+a=L2L_1\supset L_1+a=L_2,同理我们可以得到L2⊃L1L_2\supset L_1,所以L1=L2L_1=L_2,这就建立了唯一性。接下来通过观察得到,对于所有y∈M,M−y=M+(−y)y\in M,M-y=M+(-y) 是MM的一个平移操作,并且包含0,根据定理1.1以及刚刚的证明,这个仿射集肯定有唯一一个平行于MM的子空间LL,因为无论选择哪个y∈My\in M,L=M−yL=M-y恒成立,所以我们得出L=M−ML=M-M。||||

我们将非空仿射集的维数定义为与它平行的子空间的维数,(按照惯例,将空集∅\emptyset的维数定义为-1)那么维数为0,1 和2的仿射集自然就称为点,线和面。RnR^n中(n−1)(n-1)维的仿射集叫做超平面,超平面非常重要,因为他们不仅表示nn维几何中的点,还具有其他含义。

超平面和其他仿射集也许能用线性函数和线性方程表示,我们可以从RnR^n的正交理论来推断这种形式。回忆一下,根据定义,x⊥yx\perp y意味着⟨x,y⟩=0\langle x,y\rangle=0,给定RnR^n的一个子空间LL,使得x⊥Lx\perp L(即对于每一个y∈Ly\in L,x⊥yx\perp y恒成立)的向量xx 的集合叫做LL的正交补,用L⊥L^{\perp} 表示。当然,这是另一个子空间,并且

dimL+dimL⊥=n

\dim L+\dim L^{\perp}=n

L⊥L^\perp的正交补(L⊥)⊥(L^\perp)^\perp是LL。如果b1,…,bmb_1,\ldots,b_m是LL的一个基,那么x⊥Lx\perp L等价于x⊥b1,…,x⊥bmx\perp b_1,\ldots,x\perp b_m。特别地,RnR^n的(n−1)(n-1) 维子空间是一维子空间的正交补,一维子空间的基由一个非零向量bb构成,因此(n−1)(n-1)维子空间就是形如{x|x⊥b}\{x|x\perp b\} 的集合,其中b≠0b\neq0。超平面就是集合平移后的结果。但是

{x|x⊥b}+a={x+a|⟨x,b⟩=0}={y|⟨y−a,b⟩=0}={y|⟨y,b⟩=β}

\begin{align*} \{x|x\perp b\}+a &=\{x+a|\langle x,b\rangle=0\}\\ &=\{y|\langle y-a,b\rangle=0\}=\{y|\langle y,b\rangle=\beta\} \end{align*}

其中β=⟨a,b⟩\beta=\langle a,b\rangle,由此得到超平面的一个特征,即定理1.3。

定理1.3 给定β∈R\beta\in R和一个非零向量b∈Rnb\in R^n,集合

H={x|⟨x,b⟩=β}

H=\{x|\langle x,b\rangle=\beta\}

是RnR^n中的一个超平面,而且每个超平面可能用这种方式表示。

在定理1.3中,向量bb叫做超平面HH的法向量,HH的每个法向量要么是bb的正倍数,要么是负倍数。也就是说每个超平面有两边,就像R2R^2中的一条直线或者R3R^3中的一个平面,注意R4R^4中的一个平面没有两边。

下一个定理将RnR^n的仿射子集表示为含有nn个变量的联立线性方程组的解集。

定理1.4 给定b∈Rmb\in R^m和m×nm\times n的实矩阵BB,集合

M={x∈Rn|Bx=b}

M=\{x\in R^n|Bx=b\}

是RnR^n中的仿射集,而且每个仿射集可能用这种方式表示。

证明:如果x∈M,y∈M,λ∈Rx\in M,y\in M,\lambda\in R,那么对z=(1−λ)x+λyz=(1-\lambda)x+\lambda y,我们有

Bz=(1−λ)Bx+λBy=(1−λ)b+λb=b

Bz=(1-\lambda)Bx+\lambda By=(1-\lambda)b+\lambda b=b

所以z∈Mz\in M,因此给定的MM是仿射集。

另一方面,考虑任意一个非空仿射集MM而不是RnR^n本身,让LL是平行于MM的子空间,令b1,…,bmb_1,\ldots,b_m是L⊥L^\perp的一组基,那么

L=(L⊥)⊥={x|x⊥b1,…,x⊥bm}={x|⟨x,bi⟩=0,i=1,…,m}={x|Bx=0}

\begin{align*} L &=(L^\perp)^\perp=\{x|x\perp b_1,\ldots,x\perp b_m\}\\ &=\{x|\langle x,b_i\rangle=0,\quad i=1,\ldots,m\}=\{x|Bx=0\} \end{align*}

其中BB是m×nm\times n矩阵,它的行是b1,…,bmb_1,\ldots,b_m。因为MM平行于LL,所以存在一个a∈Rna\in R^n使得

M=L+a={x|B(x−a)=0}={x|Bx=b}

M=L+a=\{x|B(x-a)=0\}=\{x|Bx=b\}

其中b=Bab=Ba。(仿射集RnR^n和∅\emptyset可以用定理中的形式表示,都令BB是m×nm\times n的零矩阵,在RnR^n的情况下b=0b=0,在∅\emptyset的情况下b≠0b\neq0)||||

观察定理1.4我们还可以得出

M={x|⟨x,bi⟩=βi,i=1,…,m}=∩mi=1Hi

M=\{x|\langle x,b_i\rangle=\beta_i,i=1,\ldots,m\}=\cap_{i=1}^mH_i

其中bib_i是BB的第ii行,βi\beta_i是bb的第ii个元素,

Hi={x|⟨x,bi⟩=βi}

H_i=\{x|\langle x,b_i\rangle=\beta_i\}

每个HiH_i都是一个超平面(bi≠0b_i\neq0),或者空集(bi=0,βi≠0b_i=0,\beta_i\neq0),或者RnR^n(bi=0,βi=0b_i=0,\beta_i=0)。 空集本身可能是两个不同平行超平面的交集,而RnR^n可能是RnR^n中空个超平面的交集,因此:

推论1.4.1 RnR^n中每个仿射子集是有限个超平面的交集。

定理1.4中的仿射集MM可以用向量b′1,…,b′nb_1^{'},\ldots,b_n^{'}(他们组成BB的列) 表示,

M={x=(ξ1,…,ξn)|ξ1b′1+⋯+ξnb′n=b}

M=\{x=(\xi_1,\ldots,\xi_n)|\xi_1b_1^{'}+\cdots+\xi_nb_n^{'}=b\}

很明显,任意个仿射集的交集依然是仿射集,因此,给定任意S⊂RnS\subset R^n,存在一个唯一的包含SS的最小仿射集(即,仿射集MM的交集,其满足M⊃SM\supset S),这个集合叫做SS 的仿射包并用aff S\ S表示。通过证明可以得出aff S\ S由所有形如λ1x1+⋯+λmxm\lambda_1x_1+\cdots+\lambda_mx_m的向量组成,其中xi∈S,λ1+⋯+λm=1x_i\in S,\lambda_1+\cdots+\lambda_m=1。

对于m+1m+1个点b0,b1,…,bmb_0,b_1,\ldots,b_m的集合,如果aff {b0,b1,…,bm}\ \{b_0,b_1,\ldots,b_m\}是mm维的,那么这些点就是仿射无关(affinely independent)。当然

aff{b0,b1,…,bm}=L+b0

\text{aff}\{b_0,b_1,\ldots,b_m\}=L+b_0

其中

L=aff{0,b1−b0,…,bm−b0}

L=\text{aff}\{0,b_1-b_0,\ldots,b_m-b_0\}

利用定理1.1,LL与包含b1−b0,…,bm−b0b_1-b_0,\ldots,b_m-b_0的子空间是一样的,当且仅当这些向量是线性无关时它的维数是mm,所以当且仅当b1−b0,…,bm−b0b_1-b_0,\ldots,b_m-b_0线性无关时b0,b1,…,bmb_0,b_1,\ldots,b_m是仿射无关。

所有关于线性无关的事实都可以应用到仿射无关上。例如,RnR^n中m+1m+1个点仿射无关可以扩充到n+1n+1个点,一个mm维仿射集MM可以表示成m+1m+1个点的仿射包(将平行于MM子空间的基相应的点进行平移)

注意,如果M=aff{b0,b1,…,bm}M=\text{aff}\{b_0,b_1,\ldots,b_m\},与MM 平行的子空间LL中的向量是b1−b0,…,bm−b0b_1-b_0,\ldots,b_m-b_0的线性组合,因此MM中的向量可以表示成如下形式

x=λ1(b1−b0)+⋯+λm(bm−b0)+b0

x=\lambda_1(b_1-b_0)+\cdots+\lambda_m(b_m-b_0)+b_0

x=λ0b0+λ1b1+⋯+λmbm,λ0+λ1+⋯+λm=1

x=\lambda_0b_0+\lambda_1b_1+\cdots+\lambda_mb_m,\quad \lambda_0+\lambda_1+\cdots+\lambda_m=1

上面的表达式中,当且仅当b0,b1,…,bmb_0,b_1,\ldots,b_m仿射无关时,xx的系数是唯一的。这时候,作为参数的λ0,λ1,…,λm\lambda_0,\lambda_1,\ldots,\lambda_m是MM的重心坐标。

从RnR^n到RmR^m的单值映射T:x→TxT:x\to Tx,如果对于RnR^n中的每一个x,yx,y,λ∈R\lambda\in R,下式成立

T((1−λ)x+λy)=(1−λ)Tx+λTy

T((1-\lambda)x+\lambda y)=(1-\lambda)Tx+\lambda Ty

那么这个映射就称为仿射变换。

定理1.5 从RnR^n到RmR^m的仿射变换就是形如Tx=Ax+aTx=Ax+a的映射TT,其中AA是一个线性变换并且a∈Rma\in R^m。

证明:如果TT是仿射的,令a=T0,Ax=Tx−aa=T0,Ax=Tx-a,那么AA是一个仿射变换,并且A0=0A0=0。类似于定理1.1,这个简单的论据说明AA实际是线性的。

反过来,如果Tx=Ax+aTx=Ax+a,其中AA是线性的,我们可以得出

T((1−λ)x+λy)=(1−λ)Ax+λAy+a=(1−λ)Tx+λTy

T((1-\lambda)x+\lambda y)=(1-\lambda)Ax+\lambda Ay+a=(1-\lambda)Tx+\lambda Ty

因此TT是仿射的。||||

仿射变换的逆(如果存在的话)还是仿射的。

如果从RnR^n到RmR^m的映射TT是一个仿射变换,那么对于RnR^n中的每个仿射集MM,像集TM={Tx|x∈M}TM=\{Tx|x\in M\}在RmR^m 中是仿射的。特别地,仿射变换保留仿射包:

aff(TS)=T(aff S)

\text{aff}(TS)=T(\text{aff}\ S)

定理1.6 令{b0,b1,…,bm}\{b_0,b_1,\ldots,b_m\}和{b′0,b′1,…,b′m}\{b_0^{'},b_1^{'},\ldots,b_m^{'}\}是RnR^n中仿射无关集,那么存在一个RnR^n到自身的一一对应仿射变换TT,使得对于i=0,…,m,Tbi=b′ii=0,\ldots,m,Tb_i=b_i^{'}。如果m=nm=n,那么TT是唯一的。

证明:如果需要的话,扩展给定的仿射无关集,我们可以将问题简化为m=nm=n的情况,然后,正如线性代数中的那样,存在一个RnR^n到自身的一对一线性变换AA,将RnR^n中的基b1−b0,…,bn−b0b_1-b_0,\ldots,b_n-b_0变成另一组基b′1−b′0,…,b′n−b′0b_1^{'}-b_0^{'},\ldots,b_n^{'}-b_0^{'},这就得到了我们需要的仿射变换Tx=Ax+aTx=Ax+a,其中a=b′0−Ab0a=b_0^{'}-Ab_0。||||

推论 1.6.1 令M1,M2M_1,M_2是RnR^n中任意两个维数相同的仿射集,那么存在一个RnR^n到自身的一一对应的仿射变换TT,使得TM1=M2TM_1=M_2。

证明:任何mm维仿射集可以表示成m+1m+1个仿射无关集的仿射包,并且在仿射变换下保留仿射包。||||

从RnR^n到RmR^m的仿射变换TT的图像是Rn+mR^{n+m}中的一个仿射子集,因为根据定理1.4,如果Tx=Ax+aTx=Ax+a,TT的图像由向量z=(x,y)z=(x,y)组成,其中x∈Rn,y∈Rmx\in R^n,y\in R^m,使得Bz=bBz=b,其中b=−ab=-a,BB是从Rn+mR^{n+m}到RmR^m的线性变换(x,y)→Ax−y(x,y)\to Ax-y。

特别地,从RnR^n到RmR^m的仿射变换x→Axx\to Ax图像时包含Rn+mR^{n+m}原点的仿射集,因此它是Rn+mR^{n+m}的某个子空间LL(定理1.1),LL的正交补如下

L⊥={(x∗,y∗)|x∗∈Rn,y∗∈Rm,x∗=−A∗y∗}

L^{\perp}=\{(x^*,y^*)|x^*\in R^n,y^*\in R^m,x^*=-A^*y^*\}

即L⊥L^{\perp}是−A∗-A^*的图像。事实上,当且仅当对每个z=(x,y),y=Axz=(x,y),y=Ax,下式

0=⟨z,z∗⟩=⟨x,x∗⟩+⟨y,y∗⟩

0=\langle z,z^*\rangle=\langle x,x^*\rangle+\langle y,y^*\rangle

成立,那么z∗=(x∗,y∗)z^*=(x^*,y^*)属于L⊥L^{\perp}。换句话说,当且仅当对于每个x∈Rnx\in R^n,下式

0=⟨x,x∗⟩+⟨Ax,y∗⟩=⟨x,x∗⟩+⟨x,A∗y∗⟩=⟨x,x∗+A∗y∗⟩

0=\langle x,x^*\rangle+\langle Ax,y^*\rangle=\langle x,x^*\rangle+\langle x,A^*y^*\rangle=\langle x,x^*+A^*y^*\rangle

成立,(x∗,y∗)∈L⊥(x^*,y^*)\in L^{\perp}。这就意味着x∗+A∗y∗=0x^*+A^*y^*=0,即x∗=−A∗y∗x^*=-A^*y^*

任何非平凡仿射集可以用多种方式表示成仿射变换的图像,令MM是RNR^N中nn维仿射集,其中0<n<N0。首先,我们可以将MM表示成向量x=(ξ1,…,ξN)x=(\xi_1,\ldots,\xi_N)的集合,并且坐标满足某个线性方程组

βi1ξ1+⋯+βiNξN=βi,i=1,…,k.

\beta_{i1}\xi_1+\cdots+\beta_{iN}\xi_N=\beta_i,\quad i=1,\ldots,k.

根据定理1.4可知,这总是可能的。MM的维度为nn意味着系数矩阵B=(βij)B=(\beta_{ij})零度为nn并且秩为m=N−nm=N-n,因此我们可以用ξ1¯,…,ξn¯\xi_{\bar 1},\ldots,\xi_{\bar n}的形式求出ξn+1¯¯¯¯¯,…,ξN¯\xi_{\overline{n+1}},\ldots,\xi_{\bar N}的线性方程组,其中1¯,…,N¯\bar 1,\ldots,\bar N是1,…,N1,\ldots,N的某个排列,接下来就得到特定形式的方程组

ξn+i¯¯¯¯=αi1ξ1¯+⋯+αinξn¯+αi,i=1,…,m.

\xi_{\overline{n+i}}=\alpha_{i1}\xi_{\bar 1}+\cdots+\alpha_{in}\xi_{\bar n}+\alpha_i,\quad i=1,\ldots,m.

再次给出了向量x=(ξ1,…,ξN)x=(\xi_1,\ldots,\xi_N)属于MM的充分必要条件,这个方程组称为给定仿射集的Tucker表示。它将MM 表示成某个从RnR^n到RmR^m仿射变换的图像,对于某个MM,只有有限多个Tucker表示(最多N!N!个,低于MM 中向量的mm 个坐标变量ξi\xi_i可以用另外nn个坐标向量按某种顺序进行表示)。

涉及到仿射集的定理通常可以解释成线性方程的定理,这时候,可能给出仿射集的一个Tucker表示,这种表示非常重要,例如线性不等式中的某些结论(定理22.6,22.7)和Fenchel’s对偶定理的某些应用(推论31.4.2)

当然,子空间LL的Tucker表示齐次形式为

ξn+i¯¯¯¯=αi1ξ1¯+⋯+αinξn¯,i=1,…,m.

\xi_{\overline{n+i}}=\alpha_{i1}\xi_{\bar 1}+\cdots+\alpha_{in}\xi_{\bar n},\quad i=1,\ldots,m.

给定LL的这种表示作为线性变换的图像,那么正如上面提到的,L⊥L^{\perp}对应于负伴随变换的图像,因此,当且仅当

−ξ∗j¯=ξ∗n+i¯¯¯¯α1j+⋯+ξ∗n+m¯¯¯¯¯αmj,j=1,…,n

-\xi_{\bar j}^*=\xi_{\overline{n+i}}^*\alpha_{1j}+\cdots+\xi_{\overline{n+m}}^*\alpha_{mj},\quad j=1,\ldots,n

时,x∗=(ξ∗1,…,ξ∗N)x^*=(\xi_1^*,\ldots,\xi_N^*)属于L⊥L^{\perp}。这就给出了L⊥L^{\perp}的Tucker表示,因此给定一个子空间,它的Tucker表示与其正交补的Tucker表示之间有一个简单且有用的一一对应关系。

漫步凸分析一——仿射集相关推荐

  1. 漫步凸分析十一——分离定理

    令C1,C2C_1,C_2是RnR^n中的非空集合,有一个超平面HH,如果C1C_1含于其中的一个闭半空间而C2C_2含于相对立的闭半空间,那么我们称HH分离(separate)C1,C2C_1,C_ ...

  2. 漫步凸分析八——回收锥与无界

    RnR^n中的有界闭子集通常比无界的更容易处理,然而,当集合为凸时,无界的困难度就下降很多,这实在是一大幸事,因为我们考虑的许多集合像上境图从他们的性质可知是无界的. 根据我们的直观理解,无界闭凸集在 ...

  3. 漫步凸分析七——凸函数闭包

    线性函数的凸性是代数性质(线性)的结果,而对于凸函数,事情就没那么简单了,但是凸函数本身依然有许多拓扑性质,通过将凸集的闭包和相对内点理论应用到凸函数的上境图或水平集上可以推出这些结论.有一个基本的结 ...

  4. 漫步凸分析六——凸集的相对内点

    根据定义,RnR^n中点x,yx,y之间的欧几里得距离是 d(x,y)=|x−y|=⟨x−y,x−y⟩1/2 d(x,y)=|x-y|=\langle x-y,x-y\rangle^{1/2} 函数d ...

  5. 漫步凸分析二——凸集和锥

    对于RnR^n中的子集CC,当x∈C,y∈C,0<λ<1x\in C,y\in C,0 时,(1−λ)x+λy∈C(1-\lambda)x+\lambda y\in C,那么我们说集合CC ...

  6. 漫步凸分析五——函数运算

    对于已知的凸函数,我们如何对他们进行使得产生的函数依然是凸的呢?目前已经证明了许多运算是保留凸性的,某些运算与平常分析中的运算是类似的,像函数的逐点加法,还有一些运算出自几何动机,像取函数集的凸包.通 ...

  7. 漫步凸分析三——凸集代数

    有许多种代数运算可以保留凸性. 例如,如果CC是RnR^n中的凸集,那么所有平移操作C+aC+a和标量乘法λC\lambda C同样是凸集,其中 λC={λx|x∈C} \lambda C=\{\la ...

  8. python随机画散点图-python散点图实例之随机漫步

    随机漫步是这样行走得到的途径:每次行走都是完全随机的,没有明确的方向,结果是由一系列随机决策决定的. random_walk.py #random_walk.py from random import ...

  9. 搜索专题: HDU1428漫步校园

    漫步校园 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

最新文章

  1. linux学习治疗,这时代,医生都用VR帮你看病了!
  2. 使用scipy实现简单神经网络
  3. 【OJ8756】砝码称重V2,可达性多重背包
  4. 需要编写支持英特尔 x86 的 Android* 游戏应用? 此处的样本可为您提供帮助!
  5. python apk fr_Python fr包_程序模块 - PyPI - Python中文网
  6. 几个北大和南开学霸的公众号,值得学习
  7. 帆软图表切换接口和图标轮播接口
  8. 在线商城之购物车实现——(附完整代码)
  9. 深度解读旷视招股书:这557页带你看懂中国AI公司的生意经
  10. JSON转Map、List、某个对象
  11. windows NT到底是什么
  12. [Mysql] FIRST_VALUE()函数 | LAST_VALUE()函数 | NTH_VALUE()函数
  13. 条形码标签,实现产品追溯的最佳工具
  14. 如何解决Win10电脑网速慢的问题?
  15. php mysql 性能_php插入mysql方式性能分析
  16. [LaTeX] 调整参考文献的格式(References),包括作者名缩写,行距,字体,引用顺序等等
  17. 迷你图书管理器1.2 - 面向对象+集合
  18. 编写Python脚本调用企查查股东信息接口将数据导出为excel文件
  19. java uninstall tool_java卸载工具|java卸载工具(JavaUninstallTool)下载v1.1.0.0 - 欧普软件下载...
  20. WordCount 详解

热门文章

  1. 封装的一个http请求struct,包含:头、cookie、代理、超时、本地ip切换
  2. 《LINUX与UNIX SHELL编程指南》学习笔记
  3. 从BIOS自检报警声判断电脑故障
  4. 水滴石穿之页面遮罩层实现、向window.open()打开的窗口POST数据
  5. 面试官系统精讲Java源码及大厂真题 - 40 打动面试官:线程池流程编排中的运用实战
  6. Webhook入门教程:Webhook vs API 它们之间有什么区别?
  7. DreamFactory 第8章 保护您的DreamFactory环境
  8. 一份完整的 MySQL 开发规范,进大厂必看!
  9. Oracle修改SID(实例名)
  10. redis-Set集合操作SADD,SMEMBERS,scard,srem