Locally Differential for Frequency Estimation
Frequency Estimation LDP
参考文献:
- Wang T, Blocki J, Li N, et al., 2017. Locally Differentially Private Protocols for Frequency Estimation[C/OL]//26th USENIX Security Symposium (USENIX Security 17).
- Bassily R, Smith A, 2015. Local, Private, Efficient Protocols for Succinct Histograms
- Cormode G, Maddock S, Maple C, 2021. Frequency Estimation under Local Differential Privacy [Experiments, Analysis and Benchmarks][J]
针对频率估计的本地差分隐私机制
- Frequency Estimation LDP
- 1. Preliminary
- 1.1 LDP & CDP 本地差分隐私机制&中心化差分隐私机制
- 1.1.1 Central model 中心化模型
- 1.1.2 Local Model 本地化模型
- 1.2 频率估计
- 1.3 针对频率估计的本地差分隐私机制的基本步骤
- 1.4 重要研究
- 2. Frequency Estimation Protocols
- 2.1 DE——randomized response 随机响应机制
- 实现
- 属性
- 2.2 UE
- 2.2.1 Basic RAPPOR
- 实现
- 属性
- 2.2.2 RAPPOR
- 2.3 Histogram Encoding(HE) 直方图编码
- 2.3 LH
- 2.3.1 Binary Local Hashing
- 解决HE、UE编码需要O(d)通信成本的问题
- 实现
- 2.3.2 Random Matrix Projection
1. Preliminary
1.1 LDP & CDP 本地差分隐私机制&中心化差分隐私机制
1.1.1 Central model 中心化模型
每个客户端发送原始数据到可信任的第三方服务器,第三方服务器进行DP计算
先运算,再加噪(计算查询结果,再进行DP计算)
高准确率,低隐私性
Differential privacy 定义
一个满足ε-DP的算法M(ε ≥ 0),当且仅当对于任何相差一个元素的数据库D和D′ ,我们有:
∀ y ∈ R a n g e ( M ) : P r [ M ( D ) = y ] ≤ e ε P r [ M ( D ′ ) = y ] \forall y\in Range(M) : Pr[M(D) =y] ≤ e^{\varepsilon}Pr[M(D^′) =y] ∀y∈Range(M):Pr[M(D)=y]≤eεPr[M(D′)=y]
其中 Range(M) 表示算法M的所有可能输出的集合
1.1.2 Local Model 本地化模型
在与中心化服务器分享数据前,每个客户端先在本地执行DP运算
先加噪,再运算(先对每个数据进行DP计算,再计算查询结果)
高隐私性,低准确率
满足本地差分隐私 (LDP) 的协议使各方能够在保护每个用户隐私的同时收集有关人口的汇总信息,无需依赖受信任的第三方。
Local Differential Privacy 定义
一个满足 ε-local differential privacy (ε-LDP) (ε ≥ 0)的算法M,当且仅当对于任意输入 x1 and x2,我们有:
∀ y ∈ R a n g e ( M ) : P r [ M ( x 1 ) = y ] ≤ e ε P r [ M ( x 2 ) = y ] \forall y \in Range(M) : Pr[M(x_1) = y] ≤ e^{\varepsilon}Pr[M(x_2) = y] ∀y∈Range(M):Pr[M(x1)=y]≤eεPr[M(x2)=y]
其中 Range(M) 表示算法M的所有可能输出的集合
1.2 频率估计
联系:在本地差分隐私机制中一个基本的目标是频率估计
定义
有 n 个用户。 每个用户 j 有一个值 vj 。 我们使用 d 表示用户拥有的值域的大小,使用 [d] 表示 set {1,2, . . . ,d}。 即输入域是*[d]*。
频率估计:计算对于给定的 值 i ∈ [d],有多少用户拥有 值 i.
1.3 针对频率估计的本地差分隐私机制的基本步骤
- 编码: 该算法获取输入值input value v 并输出编码值 encoded value x。
- 扰动: 采用编码值 x 并输出report value y。 y = Perturb(Encode(v)). 为了简明表示,PE(·) =Perturb(Encode(·)). 即y = PE(v). 有时扰动机制Perturb使用符号R表示
- 聚合: 收集所有的reported values y,并输出聚合结果
1.4 重要研究
2. Frequency Estimation Protocols
通过编码方式分类
直接编码 Direct Encoding(DE)、 一元编码Unary Encoding(UE)、本地哈希编码 Local Hash Encoding(LH)
2.1 DE——randomized response 随机响应机制
实现
编码
x=v, x ∈[d], 按照原样对x值进行编码
扰动
**核心思想:**抛一个带有偏差为 p 的硬币,如果是正面,报告真值 y=x。 否则,以概率 q=(1-p)/(d-1)(均匀随机)报告任何除x外其他值
P r [ R ( x ) = x ] = p P r [ R ( x ) = y ] = q = 1 − p d − 1 ∀ y ≠ x Pr[\mathcal{R}(x)=x]=p\\ Pr[\mathcal{R}(x)=y]=q=\frac{1-p}{d-1}\ \ \ \ \forall y\ne x Pr[R(x)=x]=pPr[R(x)=y]=q=d−11−p ∀y=x
在LDP中有:
p / q = p / ( 1 − p d − 1 ) ≤ e ε p/q = p/(\frac{1-p}{d-1}) \le e^{\varepsilon} p/q=p/(d−11−p)≤eε
常见p设置: p = e ε e ε + d − 1 , q = 1 e ε + d − 1 p = \frac{e^{\varepsilon}}{e^{\varepsilon}+d-1},\ q = \frac{1}{e^{\varepsilon}+d-1} p=eε+d−1eε, q=eε+d−11聚合
- 假设nv(真值)个用户拥有值v, Iv(扰动后的估计值)是对*v.*的报告数量
- E [ I v ] = n v ⋅ p + ( n − n v ) ⋅ q E[I_v]=n_v⋅p+(n-n_v )⋅q E[Iv]=nv⋅p+(n−nv)⋅q
- 无偏估计-校正: $c(v)=(I_v-n⋅q)/(p-q) $
属性
- p越高,越准确
- d大时,p变小
2.2 UE
2.2.1 Basic RAPPOR
实现
编码
Unary encoding 一元编码方式依照one-hot独热码编码方式将用户输入 v, v∈[d],编码为长度-d的输出二元向量x
x [ v ] = 1 , ( e q u a l t o x = v ) x [ i ] = 0 , v ≠ i x[v]=1,(equal\ to\ x=v)\\ x[i]=0,\ \ v \ne i x[v]=1,(equal to x=v)x[i]=0, v=i举例
[d]={1,2,3,4}, v= 3, then x= [0,0,1,0]
扰动
中心思想: 对每一位进行独立扰动. Y = {0,1}d
P r [ R ( x [ i ] ) = 1 ] = 1 − f 2 , i f x [ i ] = 1 P r [ R ( x [ i ] ) = 1 ] = f 2 , i f x [ i ] = 0 Pr[\mathcal{R}(x[i])=1] =1-\frac{f}{2},\ if\ x[i]=1\\ Pr[\mathcal{R}(x[i])=1] =\frac{f}{2},\ if\ x[i]=0\\ Pr[R(x[i])=1]=1−2f, if x[i]=1Pr[R(x[i])=1]=2f, if x[i]=0
在 LDP 中有:
P r [ P E ( v ) = y ] P r [ P E ( v , ) = y ] = ∏ i P r [ y [ i ] ∣ v ] ∏ i P r [ y [ i ] ∣ v , ] = P r [ y [ v ] = 1 ∣ v ] ∗ P r [ y [ v , = 0 ] ∣ v ] P r [ y [ v ] = 1 ∣ v , ] ∗ P r [ y [ v , = 0 ] ∣ v , ] = p 1 → 1 ∗ p 0 → 0 p 0 → 1 ∗ p 1 → 0 = p ∗ p q ∗ q ≤ e ε \frac{Pr[PE(v)=y]}{Pr[PE(v^,)=y]} =\frac{\prod_i Pr[y[i]|v]}{\prod_i Pr[y[i]|v^,]}\\ =\frac{Pr[y[v]=1|v]*Pr[y[v^,=0]|v]}{Pr[y[v]=1|v^,]*Pr[y[v^,=0]|v^,]}\\ =\frac{p_{1 \to 1}*p_{0\to0}}{p_{0\to1}*p_{1\to0}}\\ =\frac{p*p}{q*q} \le e^{\varepsilon} Pr[PE(v,)=y]Pr[PE(v)=y]=∏iPr[y[i]∣v,]∏iPr[y[i]∣v]=Pr[y[v]=1∣v,]∗Pr[y[v,=0]∣v,]Pr[y[v]=1∣v]∗Pr[y[v,=0]∣v]=p0→1∗p1→0p1→1∗p0→0=q∗qp∗p≤eε
常见p设置: p = e ε / 2 1 + e ε / 2 , q = 1 1 + e ε / 2 p=\frac{e^{\varepsilon/2}}{1+e^{\varepsilon/2}},\ \ \ q=\frac{1}{1+e^{\varepsilon/2}} p=1+eε/2eε/2, q=1+eε/21通常基本 RAPPOR 的扰动包含永久随机响应 (1) 和瞬时响应 (2)
上面的描述是永久随机响应(1)
瞬时响应(2)
让 B 0 = x = E ( v ) , B 1 = R ( x [ i ] ) B_0=x=E(v),\ B_1=\mathcal{R}(x[i]) B0=x=E(v), B1=R(x[i])
P r [ B 2 [ i ] = 1 ] = p , i f B 1 [ 1 ] = 1 Pr[B_2[i]=1]=p,\ if\ B_1[1]=1 Pr[B2[i]=1]=p, if B1[1]=1
P r [ B 2 [ i ] = 1 ] = q , i f B 1 [ 1 ] = 0 Pr[B_2[i]=1]=q,\ if\ B_1[1]=0 Pr[B2[i]=1]=q, if B1[1]=0
但通常我们在尝试确定有效方案时只考虑永久随机响应。
聚合
无视瞬时随机响应步骤
Suppose nv (true value)users possess value v, Iv (estimate perturbed value) is the number of reports on the i’th bit being 1
x为d-维二元向量,对每v维进行独立聚合得到即得到关于值v的统计值
假设nv(真实值)个用户拥有值v, Iv(估计值)是对*v.*的报告数量
E [ I v ] = n v ⋅ p + ( n − n v ) ⋅ q E[I_v]=n_v⋅p+(n-n_v )⋅q E[Iv]=nv⋅p+(n−nv)⋅q
无偏估计: c ( v ) = ( I v − n q ) / ( p − q ) = ( I v − f n 2 ) / ( 1 − f ) c(v)=(I_v-nq)/(p-q)=(I_v-\frac{fn}{2})/(1-f) c(v)=(Iv−nq)/(p−q)=(Iv−2fn)/(1−f)
属性
请注意,这种随机化是对称的,因为
P r [ R ( x [ i ] ) = 1 ∣ x [ i ] = 1 ] = P r [ R ( x [ i ] ) = 0 ∣ x [ i ] = 0 ] = p = 1 − f 2 P r [ R ( x [ i ] ) = 0 ∣ x [ i ] = 1 ] = P r [ R ( x [ i ] ) = 1 ∣ x [ i ] = 0 ] = q = f 2 Pr[\mathcal{R}(x[i])=1\ |\ x[i]=1]\ =\ Pr[\mathcal{R}(x[i])=0\ |\ x[i]=0]=\ p\ =\ 1-\frac{f}{2}\\ Pr[\mathcal{R}(x[i])=0\ |\ x[i]=1]\ =\ Pr[\mathcal{R}(x[i])=1\ |\ x[i]=0]\ =\ q=\ \frac{f}{2} Pr[R(x[i])=1 ∣ x[i]=1] = Pr[R(x[i])=0 ∣ x[i]=0]= p = 1−2fPr[R(x[i])=0 ∣ x[i]=1] = Pr[R(x[i])=1 ∣ x[i]=0] = q= 2f
即,保留位数为1的概率等于保留位数为0的通过一元编码,每一位只能取0或1,有效的d维输入域下降到2维,因此,d越大,UE的效果越好
2.2.2 RAPPOR
与 Basic RAPPOR 相比,当 d 很大时它会使用Bloom过滤器进行缩放
编码
通过使用一组函数 H = {H1,H2, . . . ,Hk}进行编码,每一个哈希函数输出一个长度-m的输出二元向量
Encode(v) = B0, B0 是一个 m-位 二元向量,因此有
与Basic RAPPOR的区别
- 输入域为*[d]的数组,经Basic Rappor 编码得d-位二元向量 ,经Rappor编码得m-位二元向量*
x [ i ] = 1 , i f ∃ H ∈ H ⃗ , H ( v ) = i x [ i ] = 0 , o t h e r w i s e x[i]=1,\ \ \ if\ \exists H\in\vec{H},\ H(v)=i\\ x[i]=0,otherwise x[i]=1, if ∃H∈H , H(v)=ix[i]=0,otherwise
可得:d>>m>k可以将Basic RAPPOR理解为只有一个哈希函数得Basic RAPPOR
扰动
扰动步骤同Basic RAPPOR相同
聚合
问题:散列冲突
由于潜在的冲突,共享散列的使用会带来挑战。 如果两个值碰巧被散列到同一组索引中,就不可能区分它们。
解决方案:RAPPOR 引入了群组的概念。
用户被分成多个群组。 每个群组使用一组不同的散列函数,因此冲突的影响仅限于一个群组内。
估计频率:使用 LASSO 和线性回归
2.3 Histogram Encoding(HE) 直方图编码
编码
编码过程同UE大致相同输入值v∈[d],经编码得d位的直方图
EncodeHE(v) = [0.0, 0.0, …, 1.0, …, 0.0],只有第v位的值为1.0
扰动
PerturbHE(v)输出得到y’, y ′ [ i ] = x [ i ] + L a b ( 2 ε ) y'[i]= x[i] +Lab(\frac{2}{\varepsilon}) y′[i]=x[i]+Lab(ε2)
拉普拉斯公式: P ( L a b ( β ) = x ) = 1 2 β ∗ e − ∣ x ∣ β , ( β = 2 ε ) P(Lab(\beta)=x) = \frac{1}{2 \beta} * e^{\frac{-|x|}{\beta}}, \ \ (\beta = \frac{2}{\varepsilon}) P(Lab(β)=x)=2β1∗eβ−∣x∣, (β=ε2)
则 P ( y ′ [ i ] = 1.0 ∣ x [ i ] = 1.0 ) = P ( L a b ( β ) = 0 ) = 1 2 β = ε 4 P(y'[i]=1.0| x[i]=1.0)=P(Lab(\beta)=0)=\frac{1}{2\beta} =\frac{\varepsilon}{4} P(y′[i]=1.0∣x[i]=1.0)=P(Lab(β)=0)=2β1=4ε
P ( y ′ [ i ] = 1.0 ∣ x [ i ] = 0.0 ) = P ( L a b ( β ) = 1 ) = 1 2 β ∗ e − 1 β = ε 4 ∗ e − ε ∣ x ∣ 2 P(y'[i]=1.0| x[i]=0.0)=P(Lab(\beta)=1)=\frac{1}{2 \beta} * e^{\frac{-1}{\beta}}=\frac{\varepsilon}{4}*e^{\frac{-\varepsilon|x|}{2}} P(y′[i]=1.0∣x[i]=0.0)=P(Lab(β)=1)=2β1∗eβ−1=4ε∗e2−ε∣x∣
在LDP中满足:
P r [ P E ( v ) = x ] P r [ P E ( v , ) = x ] = ∏ i P r [ x [ i ] ∣ v ] ∏ i P r [ x [ i ] ∣ v , ] = P r [ ] q ( 1 − p ) ≤ e ε \frac{Pr[PE(v)=x]}{Pr[PE(v^,)=x]}\ =\ \frac{\prod_i Pr[x[i]|v]}{\prod_i Pr[x[i]|v^,]}=\ \frac{Pr[]}{q(1-p)} \le e^{\varepsilon} Pr[PE(v,)=x]Pr[PE(v)=x] = ∏iPr[x[i]∣v,]∏iPr[x[i]∣v]= q(1−p)Pr[]≤eεKaTeX parse error: Expected 'EOF', got '&' at position 36: …Pr[PE(v^,)=y]} &̲=&\frac{\prod_i…
聚合
所加拉普拉斯噪声为均值为0的概率分布
故无需进行结果校正 c ( v ) = ∑ y [ v ] c(v)= \sum y[v] c(v)=∑y[v]
2.3 LH
2.3.1 Binary Local Hashing
解决HE、UE编码需要O(d)通信成本的问题
Rappor方法
- 将输入的值通过hash映射到一个大小为k的域(k<d),然后再进行扰动
- 缺点: 两个值可能被散列到同一个输出,使得解码过程无法区分
- 解决方案:(1)使用多个hash function(2)使用队列,但还不能完全避免碰撞
实现
预备
H \mathcal{H} H是一个hash 函数簇,对于 ∀ H ∈ H \forall H \in \mathcal{H} ∀H∈H都能将[d]维输入映射到一个bit位,并有如下性质要求:
∀ x , y ∈ [ d ] , x ≠ y : P r H ∈ H [ H ( x ) = H ( y ) ] ≤ 1 / 2 \forall x,y \in [d], x\neq y : Pr_{H \in \mathcal{H}}[H(x)=H(y)] \le 1/2 ∀x,y∈[d],x=y:PrH∈H[H(x)=H(y)]≤1/2编码
E n c o d e ( v ) = < H , x > Encode(v)=<H,x> Encode(v)=<H,x>
扰动
P e r t u r b < < H , x > > = < H , y > Perturb<<H,x>>=<H,y> Perturb<<H,x>>=<H,y>
KaTeX parse error: Expected 'EOF', got '&' at position 10: Pr[y=1]=&̲ \left\{ …聚合
由于经H映射得x的输入值占所有输入域[d]的一半,所以有:
- 假设nv(真值)个用户拥有值v, Iv(扰动后的估计值)是对*v.*的报告数量
- E [ I v ] = n v ∗ p + ( n − n v ) ∗ ( 1 / 2 p + 1 / 2 q ) E[I_v]=n_v*p+(n-n_v)*(1/2p+1/2q) E[Iv]=nv∗p+(n−nv)∗(1/2p+1/2q)
- c [ I v ] = I v − 1 / 2 n p − 1 / 2 c[I_v]= \frac{I_v-1/2n}{p-1/2} c[Iv]=p−1/2Iv−1/2n
2.3.2 Random Matrix Projection
随机矩阵映射本质上使用了local hashing encoding,将输入值映射到单位bit,再使用随机响应传输该bit
预备
生成器生成一个公共矩阵 Φ ∈ { − 1 m , 1 m } m ∗ d \Phi \in \{-\frac{1}{\sqrt{m}},\frac{1}{\sqrt{m}}\}^{m*d} Φ∈{−m 1,m 1}m∗d
编码
E n c o d e ( v ) = < r , x > Encode(v) = <r,x> Encode(v)=<r,x>
r r r是从 [ m ] [m] [m]中均匀随机选取的, x x x为编码后得到得值, x = Φ [ r , v ] x=\Phi[r,v] x=Φ[r,v],公共矩阵 Φ \Phi Φ取第 r r r行 v v v列的值
扰动
P e r t u r b < < r , x > > = < r , y > Perturb<<r,x>>=<r,y> Perturb<<r,x>>=<r,y>
y = { ε m x , w . p . e ε e ε + 1 − c ε m x . w . p . 1 e ε + 1 c = e ε + 1 e ε − 1 y= \left\{ \begin{array} c_\varepsilon mx,\ \ \ w.p.\ \frac{e^\varepsilon}{e^\varepsilon+1} \\ -c_\varepsilon mx.\ \ \ w.p. \frac{1}{e^\varepsilon+1} \\ \end{array} \right. \\ \\ c= \frac{e^\varepsilon+1}{e^\varepsilon-1} y={εmx, w.p. eε+1eε−cεmx. w.p.eε+11c=eε−1eε+1
输 出 y ⃗ = ( 0 , . . . , 0 , y v , 0 , . . . , 0 ) ∈ { − c ε m , c ε m } 输出 \vec{y}=(0,...,0,y_v,0,...,0) \in \{-c_\varepsilon\sqrt{m},c_\varepsilon\sqrt{m}\} 输出y =(0,...,0,yv,0,...,0)∈{−cεm ,cεm }
聚合
- 假设nv(真值)个用户拥有值v, Iv(扰动后的估计值)是对*v.*的报告数量
- E [ y v ] = e ε e ε + 1 ⋅ e ε + 1 e ε − 1 ⋅ m ⋅ x + 1 e ε + 1 ⋅ − e ε + 1 e ε − 1 ⋅ m ⋅ x = m ⋅ x = m ⋅ Φ [ r , v ] E[y_v]= \frac{e^\varepsilon}{e^\varepsilon+1} · \frac{e^\varepsilon+1}{e^\varepsilon-1}· m·x+\frac{1}{e^\varepsilon+1}· -\frac{e^\varepsilon+1}{e^\varepsilon-1}· m·x\\ =m·x=m·\Phi[r,v] E[yv]=eε+1eε⋅eε−1eε+1⋅m⋅x+eε+11⋅−eε−1eε+1⋅m⋅x=m⋅x=m⋅Φ[r,v]
- 无偏估计-校正: c ( v ) = ∑ j y j ⋅ Φ [ r j , v ] c(v)=\sum_j y^j · \Phi[r^j,v] c(v)=∑jyj⋅Φ[rj,v]
聚合
- 假设nv(真值)个用户拥有值v, Iv(扰动后的估计值)是对*v.*的报告数量
- E [ y v ] = e ε e ε + 1 ⋅ e ε + 1 e ε − 1 ⋅ m ⋅ x + 1 e ε + 1 ⋅ − e ε + 1 e ε − 1 ⋅ m ⋅ x = m ⋅ x = m ⋅ Φ [ r , v ] E[y_v]= \frac{e^\varepsilon}{e^\varepsilon+1} · \frac{e^\varepsilon+1}{e^\varepsilon-1}· m·x+\frac{1}{e^\varepsilon+1}· -\frac{e^\varepsilon+1}{e^\varepsilon-1}· m·x\\ =m·x=m·\Phi[r,v] E[yv]=eε+1eε⋅eε−1eε+1⋅m⋅x+eε+11⋅−eε−1eε+1⋅m⋅x=m⋅x=m⋅Φ[r,v]
- 无偏估计-校正: c ( v ) = ∑ j y j ⋅ Φ [ r j , v ] c(v)=\sum_j y^j · \Phi[r^j,v] c(v)=∑jyj⋅Φ[rj,v]
Locally Differentially Private Protocols for Frequency Estimation
Locally Differential for Frequency Estimation相关推荐
- Locally Differential Private Frequency Estimation with Consistency: LDP的主流后处理算法
Locally Differential Private Frequency Estimation with Consistency 目录 Locally Differential Private F ...
- Frequency Estimation Heavy Hitter under Local Differential Privacy的一些重要组件
Frequency Estimation under Local Differential Privacy 该论文是一个综述类(survey)文章,主要介绍了一个 公共框架--将各种不同的LDP协议放 ...
- Frequency Estimation in Local and Multiparty Differential Privacy
Frequency Estimation in Local and Multiparty Differential Privacy 此为Graham Cormode在ICLR2021上的讲座笔记,由于 ...
- 论文解读2019INFOCOM_Calibrate: Frequency Estimation and Heavy Hitter Identification with LDP
以下是本人对该论文的解读,如有不当,欢迎批评指正 INTRODUCTION 频数估计(frequency estimation)是高级数据分析的基础,有非常广泛的应用.比如每个网页作为一个item,谷 ...
- Frequency Estimation
文章目录 前言 算法 流程 精度 实现及改进 实现 改进 前言 大数据统计中的频率估计问题,即求一个元素出现的次数.和Cardinality Estimation场景相似,面临着内存开销大的问题,不适 ...
- 网络安全学术顶会——SP 2023 议题清单、摘要与总结(中)
注:本文由ChatGPT与Claude联合生成 51.Effective ReDoS Detection by Principled Vulnerability Modeling and Exploi ...
- Differential of a function
In calculus, the differential represents the principal part of the change in a function y = f(x) wit ...
- 【ICLR2019】Poster 论文汇总
ICLR2019 Poster 文章汇总, 共478 papers Convolutional Neural Networks on Non-uniform Geometrical Signals U ...
- 2020年 ICLR 国际会议最终接受论文(poster-paper)列表(三)
来源:AINLPer微信公众号(点击了解一下吧) 编辑: ShuYini 校稿: ShuYini 时间: 2020-02-21 2020年的ICLR会议将于今年的4月26日-4月30日在Mil ...
最新文章
- LocalDB连接失败
- C# 委托链、多路广播委托
- 这道题号称无人能解!300多年来无一人答对,却让这群人这么简单就解出来了?...
- NSOperationQueue简介
- C++学习笔记系列四
- C++字符操作函数cctype库
- uni app input添加获取验证码按钮_FILEX | 如何在UniSwap挖到UNI?
- Ubuntu常用命令大全
- 2018 ps常用字体打包下载
- ftl生成word文档
- Mac - 输入法卡顿
- 什么是青藤零域·微隔离安全平台?
- 实习--广东电信有限公司汕头市分公司讲座
- 泛函分析和他的基础概念
- for循环遍历字符串
- java程序编译错误属于异常吗_“Cannot find symbol”编译错误是什么意思?
- IT 行业的创新 - 创新的迷思
- mysql如何导出数据
- 淘宝、天猫获得商品类目API调用
- Android汽车违章查询系统
热门文章
- 一些IGBT驱动芯片对比
- SSD时代,你的固态硬盘选哪款?
- 【数学分析】数列的上极限与下极限
- 计算机金融专业美国学校排名,美国金融专业都有哪些种类?
- day55 虚拟机 centos linux命令 搭建linux架构师必背命令
- 网络视频和移动营销 一根绳子上的蚂蚱
- 台式机显示 “未连接到互联网“解决办法
- 进程和线程之面试须知
- 2017最新淘宝高转化详情页排版技巧(转载)
- [线段树or笛卡尔树+简单KMP]poj4005 or hdu4125 Moles