全同态加密:GSW

news2024/11/28 8:33:29

参考文献:

  1. Micciancio D, Peikert C. Trapdoors for lattices: Simpler, tighter, faster, smaller[C]//Annual International Conference on the Theory and Applications of Cryptographic Techniques. Springer, Berlin, Heidelberg, 2012: 700-718.
  2. Gentry C, Sahai A, Waters B. Homomorphic encryption from learning with errors: Conceptually-simpler, asymptotically-faster, attribute-based[C]//Annual Cryptology Conference. Springer, Berlin, Heidelberg, 2013: 75-92.

文章目录

  • Gadget
  • GSW
    • Approximate Eigenvector
    • Flattening
    • LHE
    • IBHE & ABHE

Gadget

2012年 Micciancio 和 Peikert 介绍了一种不是格基的陷门。首先构造了一类特殊的格族(family of lattices)Primitive Lattices,它们拥有快速、可并行的解码算法。令 primitive matrix G ∈ Z q n × w G \in \mathbb Z_q^{n \times w} GZqn×w,它满足 G ⋅ Z w = Z q n G \cdot \mathbb Z^w = \mathbb Z_q^n GZw=Zqn,其中 k = ⌈ log ⁡ 2 q ⌉ k=\lceil \log_2 q \rceil k=log2q w = n k w=nk w=nk

  1. 在格 Λ ⊥ ( G ) \Lambda^\perp(G) Λ(G) 上,有一个已知的短格基 S ∈ Z w × w S \in \mathbb Z^{w \times w} SZw×w,满足 ∥ S ~ ∥ ≤ 5 \|\tilde S\| \le \sqrt 5 S~5 ∥ S ∥ ≤ max ⁡ { 5 , k } \|S\| \le \max\{\sqrt 5,\sqrt k\} Smax{5 ,k }。如果 q = 2 k q=2^k q=2k,那么 S ~ = 2 I \tilde S = 2I S~=2I,从而 ∥ S ~ ∥ = 2 \|\tilde S\| = 2 S~=2 以及 ∥ S ∥ = 5 \|S\| = \sqrt 5 S=5

  2. 函数
    f G ( x ) : = G x ( m o d q ) f_G(x) := Gx \pmod{q} fG(x):=Gx(modq)

    的原像采样(preimage sampling)算法,只需要 O ( n ⋅ log ⁡ c n ) O(n \cdot \log^c{n}) O(nlogcn) 的时间

  3. 函数
    g G ( s , e ) : = s t G + e t ( m o d q ) g_G(s,e) := s^tG + e^t \pmod{q} gG(s,e):=stG+et(modq)

    的陷门求逆(trapdoor inversion)算法,只需要 O ( n ⋅ log ⁡ c n ) O(n \cdot \log^c{n}) O(nlogcn) 的时间。

  4. 并且,这两个算法都可以 n n n 路并行,进一步降低为 O ( log ⁡ c n ) O(\log^c{n}) O(logcn) 的时间。如果 q = 2 k q=2^k q=2k,那么这 O ( log ⁡ c n ) O(\log^c n) O(logcn) 的运算就仅仅是 k k k 比特整数的加法和位移。

如果令 A ′ = [ A ‾ ∣ G ] A'=\left[\overline A \mid G\right] A=[AG] T = [ I − R 0 I ] T = \begin{bmatrix}I&-R\\0&I\end{bmatrix} T=[I0RI],设置 A = A ′ ⋅ T = [ A ‾ ∣ G − A ‾ R ] A = A' \cdot T = \left[\overline A \mid G-\overline A R\right] A=AT=[AGAR],那么

  1. 易知 T − 1 = [ I R 0 I ] T^{-1} = \begin{bmatrix}I&R\\0&I\end{bmatrix} T1=[I0RI],因此 A A A A ′ A' A 之间的双向转换是容易的,花费是与 R R R 的矩阵乘。
  2. 函数 f A ( x ) : = A x ( m o d q ) f_A(x) := Ax \pmod{q} fA(x):=Ax(modq) g A ( s , e ) : = s t A + e t ( m o d q ) g_A(s,e) := s^tA+e^t \pmod{q} gA(s,e):=stA+et(modq) 都可以归约到 f G f_G fG g G g_G gG 上,归约的花费仅仅是与 R R R 的矩阵向量乘积。

博主只粗略浏览了论文的前两节(已在格密码综述里看过),旧内容见 格密码:陷门OWF(Short Basis、Gadget)。

GSW

2013年 Gentry, Sahai, Waters 三位大牛提出了一种不需要 evaluation key 的全同态加密方案,拉开了第三代全同态加密的帷幕。

Approximate Eigenvector

之前的 FHE 方案(BGV-type、FV-type)的乘法同态运算都“不自然”,需要密文的张量积、多项式乘积。那么,是否可以设计一种密码算法,它的同态运算就直接是环上的加法和乘法呢?GSW 提出了近似特征向量技术,将明文整数作为密文矩阵特征值,而私钥特征向量

GSW 基于 LWE 问题,它在平均情况下的困难程度,至少最坏情况下的一些格问题的困难程度。

在这里插入图片描述

整数环 Z q \mathbb Z_q Zq,明文 μ ∈ Z q \mu \in \mathbb Z_q μZq 是 “small integer”,密文 C ∈ Z q N × N C \in \mathbb Z_q^{N \times N} CZqN×N 是 “small entries” 的方阵,私钥 v ∈ Z q N v \in \mathbb Z_q^N vZqN 是至少有一个 “big coefficient” 的向量。

我们说 C C C 加密了 μ \mu μ,如果:
C ⋅ v = μ ⋅ v + e C \cdot v = \mu \cdot v + e Cv=μv+e

其中 e e e 是 “small error” 的向量。令 v i v_i vi v v v 中足够大的一项,令 C i C_i Ci 是第 i i i 行向量(因为 C i ⋅ v = μ ⋅ v i + e i C_i \cdot v = \mu \cdot v_i + e_i Civ=μvi+ei 包含的整数 μ \mu μ 精度最高, 仅当 ∣ e i / v i ∣ > 0.5 |e_i/v_i|>0.5 ei/vi>0.5 时才会出错),那么:
μ = ⌊ ⟨ C i , v ⟩ v i ⌉ \mu = \left\lfloor \frac{\langle C_i,v \rangle}{v_i} \right\rceil μ=viCi,v

假设 μ 1 \mu_1 μ1 的密文是 C 1 C_1 C1 μ 2 \mu_2 μ2 的密文是 C 2 C_2 C2,那么有

  • 同态加法就是环加法: C + = C 1 + C 2 C^+ = C_1+C_2 C+=C1+C2
    C + ⋅ v = C 1 ⋅ v + C 2 ⋅ v = ( μ 1 + μ 2 ) ⋅ v + ( e 1 + e 2 ) \begin{aligned} C^+ \cdot v &= C_1 \cdot v + C_2 \cdot v \\ &= (\mu_1+\mu_2) \cdot v + (e_1+e_2)\\ \end{aligned} C+v=C1v+C2v=(μ1+μ2)v+(e1+e2)

  • 同态乘法就是环乘法: C × = C 1 ⋅ C 2 C^\times = C_1 \cdot C_2 C×=C1C2
    C × ⋅ v = C 1 ⋅ ( C 2 ⋅ v ) = C 1 ⋅ ( μ 2 ⋅ v + e 2 ) = μ 2 ⋅ ( C 1 ⋅ v ) + C 1 ⋅ e 2 = ( μ 1 ⋅ μ 2 ) ⋅ v + ( C 1 ⋅ e 2 + μ 2 ⋅ e 1 ) \begin{aligned} C^\times \cdot v &= C_1 \cdot (C_2 \cdot v)\\ &= C_1 \cdot (\mu_2 \cdot v + e_2)\\ &= \mu_2 \cdot (C_1 \cdot v) + C_1 \cdot e_2\\ &= (\mu_1 \cdot \mu_2) \cdot v + (C_1 \cdot e_2 + \mu_2 \cdot e_1)\\ \end{aligned} C×v=C1(C2v)=C1(μ2v+e2)=μ2(C1v)+C1e2=(μ1μ2)v+(C1e2+μ2e1)

因此 GSW 的同态运算,就简单是矩阵加法和矩阵乘法,这是 “natural” 运算。

对于矩阵乘来说,在 Strassen 算法下的复杂度为 n 2.807 n^{2.807} n2.807,在 Schonhage 的 Laser Method 下的复杂度目前为 O ( n 2.3727 ) O(n^{2.3727}) O(n2.3727)(Williams 2012)。不过,似乎只有 Strassen 算法是实用的,任何渐进复杂度更低的矩阵乘算法都只适合 n n n 特别大的(现代计算机无法承受的地步)矩阵。而且这些算法由于浮点数精度问题,超大矩阵的计算误差也是大问题。还是分块、并行的 GEMM 更具实用性。

Flattening

我们说密文 C C C B B B - bounded,如果 μ i \mu_i μi C i C_i Ci e i e_i ei 的数量级都至多是 B B B

C 1 , C 2 C_1,C_2 C1,C2 B B B - bounded,那么

  1. C + C^+ C+ 2 B 2B 2B - bounded,深度为 L L L 的加法电路,得到的密文的噪音大小为 2 L B 2^L B 2LB
  2. C × C^\times C× ( N + 1 ) B 2 (N+1)B^2 (N+1)B2 - bounded,深度为 L L L 的乘法电路,得到的密文的噪音大小为 ( N + 1 ) 2 L − 1 B 2 L (N+1)^{2^L-1} B^{2^L} (N+1)2L1B2L

由于 q / B q/B q/B 至多是关于 N N N 的亚指数的(安全性),因此上述同态运算只能支持对数深度(log-depth)的电路。那么怎么才能限制噪声的增长呢?

我们说密文 C C C B B B - strongly - bounded,如果 μ \mu μ C C C 的数量级都至多是 1 1 1 e e e 的数量级至多是 B B B

假如 C 1 , C 2 C_1,C_2 C1,C2 B B B - strongly - bounded,那么 C × C^\times C× 将是 ( N + 1 ) B (N+1)B (N+1)B - bounded,但 C × C^\times C× 的系数的数量级将成为 N N N。要是可以使得 C × C^\times C× 成为 ( N + 1 ) B (N+1)B (N+1)B - strongly - bounded,那么深度为 L L L 的乘法电路后的噪声大小为 ( N + 1 ) L B (N+1)^L B (N+1)LB,于是 q / B q/B q/B 就可以支持多项式深度(poly-depth)的电路了!

与 BGV 和 BFV 一样,GSW 也使用二进制分解(或者说 Gadget 矩阵 G G G)来约束噪声的增长:

  • B i t D e c o m p ( a ) BitDecomp(a) BitDecomp(a):输入 a = ( a 1 , ⋯   , a k ) ∈ Z q k a=(a_1,\cdots,a_k) \in \mathbb Z_q^k a=(a1,,ak)Zqk,令 l = ⌊ log ⁡ 2 q ⌋ + 1 l = \lfloor \log_2 q \rfloor+1 l=log2q+1 N = k ⋅ l N = k \cdot l N=kl,设 a i = a i , 0 a i , 1 ⋯ a i , l − 1 a_i = a_{i,0}a_{i,1}\cdots a_{i,l-1} ai=ai,0ai,1ai,l1 是二进制分解,输出
    a ′ = G − 1 ( a ) = ( a 1 , 0 , ⋯   , a 1 , l − 1 , ⋯   , a k , 0 , ⋯   , a k , l − 1 ) ∈ { 0 , 1 } N a' = G^{-1}(a) =(a_{1,0},\cdots,a_{1,l-1},\cdots,a_{k,0},\cdots,a_{k,l-1}) \in \{0,1\}^{N} a=G1(a)=(a1,0,,a1,l1,,ak,0,,ak,l1){0,1}N

  • B i t D e c o m p − 1 ( a ′ ) BitDecomp^{-1}(a') BitDecomp1(a):输入 a ′ ∈ Z q N a' \in \mathbb Z_q^N aZqN(不必是 { 0 , 1 } N \{0,1\}^N {0,1}N),设 a i = ∑ j = 0 l − 1 2 j a i , j a_i = \sum_{j=0}^{l-1} 2^j a_{i,j} ai=j=0l12jai,j 是二进制合成,输出
    a = G ⋅ a ′ = ( a 1 , a 2 , ⋯   , a k ) ∈ Z q k a = G \cdot a' = (a_1,a_2,\cdots,a_k) \in \mathbb Z_q^k a=Ga=(a1,a2,,ak)Zqk

  • F l a t t e n ( a ′ ) Flatten(a') Flatten(a):输入 a ′ ∈ Z q N a' \in \mathbb Z_q^N aZqN(不必是 { 0 , 1 } N \{0,1\}^N {0,1}N),输出
    B i t D e c o m p ( B i t D e c o m p − 1 ( a ′ ) ) ∈ { 0 , 1 } N BitDecomp(BitDecomp^{-1}(a')) \in \{0,1\}^N BitDecomp(BitDecomp1(a)){0,1}N

  • F l a t t e n ( A ) Flatten(A) Flatten(A):输入 A ∈ Z q N × N A \in \mathbb Z_q^{N \times N} AZqN×N,设 A i A_i Ai 是行向量,输出
    ( F l a t t e n ( A 1 ) , ⋯   , F l a t t e n ( A N ) ) T \left(Flatten(A_1),\cdots,Flatten(A_N)\right)^T (Flatten(A1),,Flatten(AN))T

  • P o w e r s o f 2 ( b ) Powersof2(b) Powersof2(b):输入 b = ( b 1 , ⋯   , b k ) ∈ Z q k b=(b_1,\cdots,b_k) \in \mathbb Z_q^k b=(b1,,bk)Zqk,输出
    b ′ = G t ⋅ b = ( b 1 , 2 b 1 , ⋯   , 2 l − 1 b 1 , ⋯   , b k , 2 b k , ⋯   , 2 l − 1 b k ) ∈ Z q N b' = G^t \cdot b = (b_1,2b_1,\cdots,2^{l-1}b_1,\cdots,b_k,2b_k,\cdots,2^{l-1}b_k) \in \mathbb Z_q^N b=Gtb=(b1,2b1,,2l1b1,,bk,2bk,,2l1bk)ZqN

可以验证如下事实:

  1. 对于 a , b ∈ Z q k a,b \in \mathbb Z_q^k a,bZqk,有
    ⟨ B i t D e c o m p ( a ) , P o w e r s o f 2 ( b ) ⟩ = b t ⋅ G ⋅ G − 1 ( a ) = ⟨ a , b ⟩ \lang BitDecomp(a),Powersof2(b)\rang = b^t \cdot G \cdot G^{-1}(a) = \lang a,b\rang BitDecomp(a),Powersof2(b)=btGG1(a)=a,b

  2. 对于 a ′ ∈ Z q N a' \in \mathbb Z_q^N aZqN b ∈ Z q k b \in \mathbb Z_q^k bZqk,有
    ⟨ a ′ , P o w e r s o f 2 ( b ) ⟩ = b t ⋅ G ⋅ a ′ = ⟨ B i t D e c o m p − 1 ( a ′ ) , b ⟩ \lang a',Powersof2(b) \rang = b^t \cdot G \cdot a' = \lang BitDecomp^{-1}(a'),b \rang a,Powersof2(b)=btGa=BitDecomp1(a),b

  3. 明显, ⟨ a ′ , P o w e r s o f 2 ( b ) ⟩ = ⟨ F l a t t e n ( a ′ ) , P o w e r s o f 2 ( b ) ⟩ \lang a',Powersof2(b) \rang = \lang Flatten(a'),Powersof2(b) \rang a,Powersof2(b)=Flatten(a),Powersof2(b)

采用增广形式的 LWE 样本。对于随机矩阵 A ∈ Z q m × ( n + 1 ) A \in \mathbb Z_q^{m \times (n+1)} AZqm×(n+1),设秘密向量为 s ∈ Z q n + 1 s \in \mathbb Z_q^{n+1} sZqn+1,满足 A ⋅ s = e A \cdot s=e As=e B B B - bounded 噪声,令 v = P o w e r s o f ( s ) v = Powersof(s) v=Powersof(s),那么 v v v 确实至少有一个 “big coefficient”,并且 v v v 的随机性等同于 s s s 的随机性。

l = ⌊ log ⁡ 2 q ⌋ + 1 l = \lfloor \log_2 q \rfloor+1 l=log2q+1 N = ( n + 1 ) ⋅ l N = (n+1) \cdot l N=(n+1)l,容易看出
C ⋅ v = F l a t t e n ( C ) ⋅ v C \cdot v = Flatten(C) \cdot v Cv=Flatten(C)v

也就是说,把密文 ”拍平“ 并不会改变明文

对于明文 μ ∈ Z q \mu \in \mathbb Z_q μZq,随机选取 R ∈ { 0 , 1 } N × m R \in \{0,1\}^{N \times m} R{0,1}N×m,“拍平” 的密文为:
C = F l a t t e n ( μ ⋅ I N + B i t D e c o m p ( R ⋅ A ) ) ∈ Z q N × N C = Flatten(\mu \cdot I_N + BitDecomp(R \cdot A)) \in \mathbb Z_q^{N \times N} C=Flatten(μIN+BitDecomp(RA))ZqN×N

容易验证 C ⋅ v = ( μ ⋅ I N + B i t D e c o m p ( R ⋅ A ) ) ⋅ v = μ ⋅ v + R ⋅ A ⋅ s C \cdot v = (\mu \cdot I_N + BitDecomp(R \cdot A)) \cdot v = \mu \cdot v + R \cdot A\cdot s Cv=(μIN+BitDecomp(RA))v=μv+RAs,包含的噪音 R ⋅ e R \cdot e Re 很小。

如果 m = O ( n log ⁡ q ) m = O(n \log q) m=O(nlogq),那么根据剩余哈希引理(leftover hash lemma) R ⋅ A R \cdot A RA 是统计均匀的(statistically uniform)。因此 B i t D e c o m p − 1 ( C ) = B i t D e c o m p − 1 ( μ ⋅ I N ) + R ⋅ A BitDecomp^{-1}(C) = BitDecomp^{-1}(\mu \cdot I_N) + R \cdot A BitDecomp1(C)=BitDecomp1(μIN)+RA 也是统计均匀的矩阵。

LHE

GSW 的方案如下:

在这里插入图片描述

同态运算为:

  1. 加法 A d d ( C 1 , C 2 ) = F l a t t e n ( C 1 + C 2 ) Add(C_1,C_2) = Flatten(C_1+C_2) Add(C1,C2)=Flatten(C1+C2),噪音为 e 1 + e 2 e_1+e_2 e1+e2,增长因子为 2 2 2
  2. 乘法 M u l t ( C 1 , C 2 ) = F l a t t e n ( C 1 ⋅ C 2 ) Mult(C_1,C_2) = Flatten(C_1 \cdot C_2) Mult(C1,C2)=Flatten(C1C2),噪音为 μ 2 ⋅ e 1 + C 1 ⋅ e 2 \mu_2 \cdot e_1 + C_1 \cdot e_2 μ2e1+C1e2,增长因子为 μ 2 + N \mu_2+N μ2+N
  3. 乘常数 M u l t C o n s t ( C , α ) = F l a t t e n ( F l a t t e n ( α ⋅ I N ) ⋅ C ) MultConst(C,\alpha) = Flatten\left(Flatten(\alpha \cdot I_N) \cdot C\right) MultConst(C,α)=Flatten(Flatten(αIN)C),噪音为 F l a t t e n ( α ⋅ I N ) ⋅ e Flatten(\alpha \cdot I_N) \cdot e Flatten(αIN)e,增长因子为 N N N 而非 α \alpha α
  4. 与非门 N A N D ( C 1 , C 2 ) = F l a t t e n ( I N − C 1 ⋅ C 2 ) NAND(C_1,C_2) = Flatten(I_N - C_1 \cdot C_2) NAND(C1,C2)=Flatten(INC1C2),噪音为 − μ 2 ⋅ e 1 − C 1 ⋅ e 2 -\mu_2 \cdot e_1 - C_1 \cdot e_2 μ2e1C1e2,由于 u 2 ∈ { 0 , 1 } u_2 \in \{0,1\} u2{0,1},增长因子为 N + 1 N+1 N+1

在解密时 x i = C i ⋅ v = μ ⋅ v i + R i ⋅ e x_i = C_i \cdot v = \mu \cdot v_i + R_i \cdot e xi=Civ=μvi+Rie, 令错误为 e ′ = R i ⋅ e e' = R_i \cdot e e=Rie,那么 ∣ e ′ ∣ |e'| e 的数量级为 ∥ e ∥ 1 \|e\|_1 e1,仅当 ∣ e ′ / v i ∣ < 0.5 |e'/v_i| < 0.5 e/vi<0.5 时才不会出错。因为 v i ∈ ( q / 4 , q / 2 ] v_i \in (q/4,q/2] vi(q/4,q/2],所以只要 e ′ < q / 8 e' < q/8 e<q/8,那么解密就是正确的。

如果布尔电路仅由与非门组成,那么 L L L 层计算后的噪声大小为 ( N + 1 ) L B (N+1)^L B (N+1)LB - bounded,那么令 q / B > 8 ( N + 1 ) L q/B > 8(N+1)^L q/B>8(N+1)L 即可保证噪音是 q / 8 q/8 q/8 - bounded,从而解密正确。

给定安全参数 λ \lambda λ,维度 n n n 应随着 log ⁡ ( q / B ) \log(q/B) log(q/B) 线性增长。GSW 将 n n n 视作一个定值,选取不算太大的 B B B,记 κ = log ⁡ q \kappa = \log q κ=logq,设置 κ = O ( L log ⁡ N ) = O ( L log ⁡ n ) \kappa = O(L \log N) = O(L \log n) κ=O(LlogN)=O(Llogn)

由于 N = O ( n κ ) = O ~ ( n L ) N = O(n \kappa) = \tilde O(nL) N=O(nκ)=O~(nL),因此同态运算的渐进复杂度为 O ~ ( ( n L ) w ) \tilde O((nL)^w) O~((nL)w),其中 w < 2.3727 w < 2.3727 w<2.3727。这个渐进复杂度优于基于 LWE 的 BGV 和 BFV 的 O ~ ( n 3 L 2 ) \tilde O(n^3L^2) O~(n3L2),但是比基于 RLWE 的 BGV / BFV 慢一些对数因子。GSW 可以显著降低存储开销,从伪立方降低到了伪平方。

IBHE & ABHE

之前的 FHE 都无法转化为基于身份的加密(IBE)和基于属性的加密(ABE),主要是因为同态计算需要 evaluation key,这个密钥无法根据身份 ID 来生成。

GSW 的同态运算完全不需要 evaluation key,只需要知道公开参数即可。因此,只要管理员生成 M S K MSK MSK,公布 M P K MPK MPK,然后

  • 对于任意的 p k = ( M P K , I D ) pk=(MPK,ID) pk=(MPK,ID),管理员计算 s k I D ← K e y G e n ( M S K , I D ) sk_{ID} \leftarrow KeyGen(MSK,ID) skIDKeyGen(MSK,ID),那么就把 GSW 转化为了 IBHE。

  • 类似的,对于任意的属性 x x x,令公钥为 p k = ( M P K , x ) pk = (MPK,x) pk=(MPK,x),对于访问策略 y y y,管理员计算 s k y ← K e y G e n ( M S K , y ) sk_y \leftarrow KeyGen(MSK,y) skyKeyGen(MSK,y),那么仅当 R ( x , y ) = 1 R(x,y)=1 R(x,y)=1 时才可以正确解密。这就把 GSW 转化为了 ABHE。

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

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

相关文章

Mysql-解决Truncated incorrect DOUBLE value xxx

问题 出现这种问题一般来说就是多表操作的时候, 使用的字段类型不一致导致的(查询除外),我们来看下真实案例 在hd_user表中parentId是binint类型 而在hd_user_increment_copy1表中parentId是varchar类型, 如果只是查询的话那么是不会报错的,我把查询sql提出了运行是可以的 …

[附源码]计算机毕业设计springboot保护濒危动物公益网站

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Java 编程性能调优

把 Java 性能调优分成 5 个层级&#xff1a;Java 编程、多线程、JVM 性能检测、设计模式、数据库性能&#xff0c;每个层级下都覆盖了最常见的优化问题。下面分别给你梳理一下&#xff1a; 可参考地址&#xff1a;Java性能调优全攻略来了_着火点的博客-CSDN博客_java性能调优 …

软件设计与体系结构编程题汇总

现在需要开发一款游戏软件&#xff0c;请以单例模式来设计其中的 Boss 角色。角色的属性和动作可以任意设计。 要求&#xff1a;该 Boss 类可以在多线程中使用。&#xff08; 8 分&#xff09; Public class Boss{Private static Boss instance; //(2 分&#xff09;Private …

vivo大数据日志采集Agent设计实践

作者&#xff1a;vivo 互联网存储技术团队- Qiu Sidi 在企业大数据体系建设过程中&#xff0c;数据采集是其中的首要环节。然而&#xff0c;当前行业内的相关开源数据采集组件&#xff0c;并无法满足企业大规模数据采集的需求与有效的数据采集治理&#xff0c;所以大部分企业都…

车间工厂看板还搞不定,数据可视化包教包会

在智能工厂的建设过程中&#xff0c;为了让每条生产线的生产进度和状态更加清晰&#xff0c;经常需要将生产信息情况显示在电视看板上&#xff0c;称为智能工厂-车间数据可视化大屏方案。 根据工厂和车间的大小&#xff0c;可能会使用 10到100 台甚至更多的电视看板来显示数据…

Nexus3搭建maven私服

Nexus是一个强大的Maven仓库管理器&#xff0c;它极大地简化了自己内部仓库的维护和外部仓库的访问&#xff0c;也就是我们常说的私服 1、下载nexus3.x&#xff1a; Nexus官方下载地址 官方下载极其慢&#xff0c;这里提供网盘下载&#xff1a; 链接https://pan.baidu.com/s/…

Briefings in bioinformatics2021 | MolGNet+:基于分子全局表征的高效自监督框架,用于药物发现

原文标题&#xff1a;An effective self-supervised framework for learning expressive molecular global representations to drug discovery 代码&#xff1a;https://github.com/pyli0628/MPG.git 一、问题提出 &#xff08;分子性质预测的背景都是老生常谈的&#xff0…

loam 框架流程描述

前端流程(scanRegistration.cpp) 多线激光雷达即有多个激光发射器同时工作&#xff0c;如常见的 Velodyne16,就是共有 16 个激光发射器&#xff0c;一般这些发射器竖排排列&#xff0c;然后一起水平旋转。 激光雷达在一定的时间内旋转一圈&#xff0c;即一帧的点云数据。值得注…

Flutter教程之使用不同的方法维护 Flutter 应用程序状态

在开发应用程序时,主要关注的是当我们使用Tabs或Bottom Navigation Bar类的Widgets (Flutter 中几乎所有东西都是 widgets)时我们的应用程序将如何执行。 至于示例,让我们考虑一下我们有三个选项卡 UsersTab2Tab3在BottomNavBar和第一个索引上,我们有一个API 调用请求,它…

高效!启科量子线路模拟器 QuSprout 与 Amazon HPC 集成,赋能量子计算

KY1, Bertran Shao2, Adam Sun Amazon HERO&#xff1b;2.开发者生态负责人&#xff1b;3.Solutions Architect2022.11.17&#xff0c;启科量子正式开源其内部团队研发的量子线路模拟器&#xff1a;QuSprout 软件。结合早前其开源的启科量子编程框架 QuTrunk&#xff0c;开发者…

能源与经济面板数据集(中国能源统计年鉴面板数据+区域经济、人口与二氧化碳排放量面板数据)

一、中国能源统计年鉴面板数据 1、数据来源&#xff1a;中国能源统计年鉴 2、时间跨度&#xff1a;1991-2020 3、区域范围&#xff1a;全国 4、指标说明&#xff1a; 部分数据如下&#xff1a; 能源平衡表&#xff1a; 部分指标如下&#xff1a; 国内生产总值增长速度&am…

HTML网页设计制作——响应式网页影视动漫资讯bootstrap网页(9页)

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

地图轨迹跟踪系统设计与实现(Android+Eclipse+APP)

目 录 1 在线地图轨迹APP概述 1 1.1 本论文的背景及意义 1 1.2 本论文的主要方法和研究进展 1 1.3 本论文的主要内容 1 1.4 本论文的结构安排 1 2 系统分析 3 2.1 研究目标 3 2.2 可行性分析 3 2.2.1 经济可行性 3 2.2.2 技术的可行性 3 2.3 需求分析 3 2.4 性能分析 4 3 系统开…

TPAMI 2022 | 自动搜索文本识别网络的高性能特征提取器

©PaperWeekly 原创 作者 | 陈卓群单位 | 清华大学论文标题&#xff1a;Searching a High Performance Feature Extractor for Text Recognition Network收录情况&#xff1a;TPAMI论文链接&#xff1a;https://ieeexplore.ieee.org/document/9887897代码链接&#xff1a;…

HTTPS(对称加密+非对称加密+证书)

目录 1. 加密和解密 HTTPS工作过程 2. 对称加密 3. 对称加密 4. 既然都有非对称加密了,那为啥还要有对称加密 5. 中间人攻击 6. 引入证书 HTTPS 也是一个应用层协议. 是在 HTTP 协议的基础上引入了一个加密层. HTTP 协议内容都是按照文本的方式明文传输的. 这就导致在…

笔记本电脑恢复删除数据的5种方法

我们都知道笔记本电脑比台式电脑拥有方便携带的优势&#xff0c;但是不论是笔记本还是台式电脑&#xff0c;难免会出现数据丢失情况&#xff0c;如最近有位小伙伴&#xff0c;不小心将自己出差需要使用的工作资料误删了&#xff0c;那么问题来了&#xff0c;笔记本数据删除怎么…

Vuex的搭建与使用

Vuex 专门在Vue中实现集中式状态&#xff08;数据&#xff09;管理的插件 (Vue.use(Vuex))&#xff0c;对Vue应用中多个组件的共享状态进行集中式的管理&#xff08;读、写&#xff09;&#xff0c;也是一种组件间通信的方式&#xff0c;且适用于任意组件间通信。 如果多个组…

git的使用规范及技巧总结

一、什么是Git&#xff1f; Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速地处理从很小到非常大的项目版本管理。 也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 Git 与常用的版本控制工具 CVS, Subversion 等不同&#x…

聚观早报 | 黑五电子产品销售额飙升;谷歌不满微软收购动视暴雪

今日要闻&#xff1a;黑五电子产品销售额飙升&#xff1b;谷歌不满微软收购动视暴雪&#xff1b;特斯拉海外充电站价格下降&#xff1b;欧盟对微软发起反垄断调查&#xff1b;小米13渲染图曝光黑五电子产品销售额飙升 据消息&#xff0c;Adobe数据和分析部门Adobe Analytics发布…