New Work-flow of Circuit Bootstrapping

参考文献:

  1. [CGGI17] Chillotti I, Gama N, Georgieva M, et al. Faster packed homomorphic operations and efficient circuit bootstrapping for TFHE. ASIACRYPT 2017 (1): 377-408.
  2. [CDKS21] Chen H, Dai W, Kim M, et al. Efficient homomorphic conversion between (ring) LWE ciphertexts. ACNS 2021 (1): 460-479.
  3. [KLD+23] Kim A, Lee Y, Deryabin M, et al. LFHE: Fully homomorphic encryption with bootstrapping key size less than a megabyte[J]. Cryptology ePrint Archive, 2023.
  4. [DKMS24] De Micheli G, Kim D, Micciancio D, et al. Faster amortized FHEW bootstrapping using ring automorphisms. Public Key Cryptography 2024 (4): 322-353.
  5. [WWL+24] Wang R, Wen Y, Li Z, et al. Circuit Bootstrapping: Faster and Smaller. EUROCRYPT 2024 (2): 342-372.
  6. Leveled mode of TFHE
  7. Conversion Between ®LWE
  8. 加权自动机:在 Semirings 上建模

文章目录

  • LHE Mode
    • Original TFHE
    • Novel Work Flow
  • Automorphism-Based PBS
    • Using Sparse Isomorphism
    • MV-PBS
  • Analysis & Parameters

LHE Mode

TFHE 除了有 FHE mode,还有 [CGGI17] 提出的 LHE mode:

  • 前者每个 Gate 都需要自举,利用 LinPoly + PBS 实现布尔运算;
  • 后者仅在噪声过大或者类型不符时才自举,利用 det-WFA + CMux-based OBDD + BRS 实现布尔运算。由于 RLWE 和 RGSW 外积的噪声增长不对称性,只要 RGSW 加密消息的范数很小(比如:布尔值、单项式),那么 LHE 的容许 CMux 深度就会很大。

自动机的运算:

在这里插入图片描述

决策树的运算:

在这里插入图片描述

比特序列表示的运算:

在这里插入图片描述

但是,它们都是用 CMux Gate 搭建的,控制位是 RGSW 密文(布尔值/单项式的 Powers-of-Base),数据位是 RLWE/LWE 密文(系数编码)。如果想要把数据位提升到控制位,就需要 LWE-to-RGSW 的密文转换,也就是 “电路自举”。

Original TFHE

[CGGI17] 的电路自举的工作流如下:

在这里插入图片描述

他们使用三组参数:

  • ( q ‾ , n ‾ ) (\underline{q}, \underline{n}) (q,n) 是 Level 0 的 LWE 参数集,存储数据,具有最高的噪声。模数和维度都尽可能小,使得自举更高效。
  • ( q , N ) (q,N) (q,N) 是 Level 1 的 RGSW 参数集,存储控制位。模数和维度的规模,决定了外积的效率和深度。
  • ( Q ‾ , N ‾ ) (\overline{Q}, \overline{N}) (Q,N) 是 Level 2 的 RLWE 参数集,用于 PBS 自举,具有最小的噪声。选取足够大的模数,获得所需的深度。

电路自举包含两个步骤:令 v = ( v 0 , v 1 , ⋯ , v l − 1 ) v=(v_0,v_1,\cdots,v_{l-1}) v=(v0,v1,,vl1) 是 RGSW 使用的 Gadget Vector,令 s k ‾ , s k , s k ‾ \underline{sk},sk,\overline{sk} sk,sk,sk 分别是三层的私钥。

  1. Functional Bootstrapping Step

    • 输入单个 Level-0 LWE 密文 L W E s k ‾ ( m ) LWE_{\underline{sk}}(m) LWEsk(m),使用 l l l 次 PBS 计算出 L W E s k ‾ ( m v i ) LWE_{\overline{sk}}(mv_i) LWEsk(mvi)
    • 这里可以使用 [CLOT21] 的 PBSmanyLUT 加速。
  2. Ciphertext Conversion Step

    • RGSW 密文的第一部分:使用 LWE-to-RLWE PubKS 过程,把 ( b , a ) = L W E s k ‾ ( m v i ) (b,a)=LWE_{\overline{sk}}(mv_i) (b,a)=LWEsk(mvi) 切换到 R L W E s k ( m v i ) RLWE_{sk}(mv_i) RLWEsk(mvi)

      使用的 KSK 是 R L W E s k ′ ( s k j ‾ ) RLWE'_{sk}(\overline{sk_j}) RLWEsk(skj),计算过程是
      ( b , 0 ) + ∑ j a j ⊙ R L W E s k ′ ( s k j ‾ ) (b,0) + \sum_j a_j \odot RLWE'_{sk}(\overline{sk_j}) (b,0)+jajRLWEsk(skj)

    • RGSW 密文的第二部分:使用 LWE-to-RLWE PriKS 过程,把 ( b , a ) = L W E s k ‾ ( m v i ) (b,a) = LWE_{\overline{sk}}(mv_i) (b,a)=LWEsk(mvi) 切换到 R L W E s k ( s k ⋅ m v i ) RLWE_{sk}(sk \cdot mv_i) RLWEsk(skmvi)

      使用的 KSK 是 R L W E s k ′ ( s k ⋅ s k j ‾ ) RLWE'_{sk}(sk \cdot \overline{sk_j}) RLWEsk(skskj) 以及 R L W E s k ′ ( s k ) RLWE'_{sk}(sk) RLWEsk(sk),计算过程是
      b ⊙ R L W E s k ′ ( s k ) + ∑ j a j ⊙ R L W E s k ′ ( s k ⋅ s k j ‾ ) b \odot RLWE'_{sk}(sk) + \sum_j a_j \odot RLWE'_{sk}(sk \cdot \overline{sk_j}) bRLWEsk(sk)+jajRLWEsk(skskj)

    • 最后把 R L W E s k ( m v i ) RLWE_{sk}(mv_i) RLWEsk(mvi) R L W E s k ( s k ⋅ m v i ) RLWE_{sk}(sk \cdot mv_i) RLWEsk(skmvi) 组装成 R G S W s k ( m ) RGSW_{sk}(m) RGSWsk(m) 密文即可。上述的 PubKS 和 PriKS 也可以采用 pre-computed variant,提高效率、降低噪声,代价是更大的 KSK 规模。

对于计算开销:使用 MV-PBS 之后,实际上 Ciphertext Conversion Step 占据了大部分。对于存储开销:也是 Ciphertext Conversion Step 中的 KSK 占据了大部分。

疑问:为何不使用 [CDKS21] 的基于自同构的 LWE-to-RLWE 呢?

  • [CGGI17] 的 PubKS 或 PriKS,需要 N ‾ \overline{N} N 次和标量 a j ∈ Z Q ‾ a_j \in \mathbb Z_{\overline Q} ajZQ(系数表示下分解和数乘)的外积运算,每次都需要 2 l N 2lN 2lN 次模乘,共计 2 l N ‾ N 2l\overline NN 2lNN
  • 基于自同构的 LWE-to-RLWE,需要 N ‾ / N ⋅ log ⁡ n \overline{N}/N \cdot\log n N/Nlogn 次和多项式 a ∈ R Q ‾ , n a \in R_{\overline Q,n} aRQ,n(系数表示下分解,再转化为 NTT 表示)的外积运算(长度 N ‾ \overline{N} N 的内积表示为 N ‾ / N \overline{N}/N N/N 个长度 N N N 的卷积),每次都需要 2 ( l + 1 ) N log ⁡ N + 2 l N 2(l+1)N\log N + 2lN 2(l+1)NlogN+2lN 次模乘,共计 2 ( l + 1 ) N ‾ log ⁡ 2 N + 2 l N ‾ log ⁡ N 2(l+1)\overline{N}\log^2 N + 2l\overline{N}\log N 2(l+1)Nlog2N+2lNlogN
  • 假如 N = 1024 N = 1024 N=1024,那么 log ⁡ 2 N = 100 ≪ N \log^2 N = 100 \ll N log2N=100N,效率提升应当十分显著,密钥规模也小得多,噪声方差会偏大 N ‾ log ⁡ N \overline{N}\log N NlogN 因子。

Novel Work Flow

[WWL+24] 提出了新的工作流,移除了 ACC to LWE 步骤,直接把 ACC 重构为 RGSW(实际上就是把 Extract 和基于自同构的 LWE-to-RLWE 合并了),从而消除了开销最大的 PubKS 和 PriKS 过程。

在这里插入图片描述

仅使用 Level 0 和 Level 2 两组参数集,新的电路自举流程是:

  1. PBS Without Sample Extraction

    • 输入单个 Level-0 LWE 密文 L W E s k ‾ ( m ) LWE_{\underline{sk}}(m) LWEsk(m),使用 l l l 次 PBS 计算出
      R L W E s k ‾ ( N ‾ − 1 m v i + ∑ k = 1 N ‾ − 1 y k X k ) RLWE_{\overline{sk}}(\overline{N}^{-1}mv_i+\sum_{k=1}^{\overline{N}-1}y_k X^k) RLWEsk(N1mvi+k=1N1ykXk)
      预期的明文在常数项(缩放 N ‾ − 1 \overline{N}^{-1} N1 抵消后续自同构的影响),其余的系数是冗余的。

    • 这里使用了 [WWL+24] 优化的 Automorphism-Based MV-PBS 算法。

  2. Ciphertext Conversion

  • RGSW 密文的第一部分:使用 [CDKS21] 提出的 Trace 稀疏分解算法(分圆塔),使用 Galois自同构 τ 2 k + 1 , k = log ⁡ N ‾ , ⋯ , 2 , 1 \tau_{2^k+1}, k=\log \overline{N},\cdots,2,1 τ2k+1,k=logN,,2,1 对应的 KSK,计算出 ( b , a ) = R L W E s k ‾ ( m v i ) (b,a) = RLWE_{\overline{sk}}(mv_i) (b,a)=RLWEsk(mvi)

  • RGSW 密文的第二部分:使用 [DKMS24] 提出的 RLWE’-to-RGSW 技术, 给定 S S K = R L W E s k ‾ ′ ( s k ‾ 2 ) SSK = RLWE'_{\overline{sk}}(\overline{sk}^2) SSK=RLWEsk(sk2),计算
    ( 0 , b ) + a ⊙ R L W E s k ‾ ′ ( s k ‾ 2 ) = R L W E s k ‾ ( s k ‾ ⋅ m v i + s k ‾ ⋅ e ) (0,b) + a \odot RLWE'_{\overline{sk}}(\overline{sk}^2) = RLWE_{\overline{sk}}(\overline{sk} \cdot mv_i + \overline{sk} \cdot e) (0,b)+aRLWEsk(sk2)=RLWEsk(skmvi+ske)
    其中 e ∈ R Q ‾ , N ‾ e \in R_{\overline{Q},\overline{N}} eRQ,N R L W E s k ‾ ( m v i ) RLWE_{\overline{sk}}(mv_i) RLWEsk(mvi) 的噪声。

  • 最后把 R L W E s k ‾ ( m v i ) RLWE_{\overline{sk}}(mv_i) RLWEsk(mvi) R L W E s k ‾ ( s k ‾ ⋅ m v i ) RLWE_{\overline{sk}}(\overline{sk} \cdot mv_i) RLWEsk(skmvi) 组装成 R G S W s k ‾ ( m ) RGSW_{\overline{sk}}(m) RGSWsk(m) 密文即可。

Ciphertext Conversion 的算法是:

在这里插入图片描述

总体的复杂度是:

在这里插入图片描述

疑问:文章说由于 step 2 无法切换维度,因此就把 RGSW 留在 Level 2 参数集。但是,这会导数 LHE 的计算开销较大(自举噪声和密钥切换噪声都累积在 KaTeX parse error: Got function '\overline' with no arguments as subscript at position 11: \mathbb Z_\̲o̲v̲e̲r̲l̲i̲n̲e̲{Q} 的低位,没必要保留)。可以依然使用中等规模的参数 ( q , N ) (q,N) (q,N),可修改为:

  1. 使用 Ring-Swich 技术,额外要求 s k ‾ ∈ R N ≤ R N ‾ \overline{sk} \in R_{N} \le R_{\overline{N}} skRNRN,首先把 ACC 模切换到安全的模数 q q q,然后直接提取出维度 N N N 子环(含有所需的常数项),这几乎是免费的
  2. 现在 ACC 是参数 ( q , N ) (q,N) (q,N) 下的 RLWE 密文,执行 Trace 消除冗余系数,然后做成 RGSW 密文,执行 LHE 运算
  3. 这样做,step 1 完全不变(稀疏私钥的安全性),step 2 速度更快、存储更小

如果不想要稀疏私钥,也可以这么做:依旧提取出维度 N ‾ \overline{N} N 的 LWE 密文,然后分成 N ‾ / N \overline{N}/N N/N 个区间(内积 = 卷积),使用 [CDKS21] 的基于自同构的 LWE-to-RLWE 算法,仅需 N ‾ / N \overline{N}/N N/N 次调用,效率损失也很小。

Automorphism-Based PBS

[WWL+24] 使用了两种 PBS Without Sample Extraction 算法,其一是 CMux-based Blind Rotation,其二是 Automorphism-Based Blind Rotation。

[WWL+24] 对前者的 Level 0 使用二元秘密( ∥ s ∥ 2 2 = n ‾ / 2 \|s\|_2^2 = \underline{n}/2 s22=n/2),对后者的 Level 0 使用 σ = 3.2 \sigma=3.2 σ=3.2 的高斯秘密( ∥ s ∥ 2 2 = n ‾ σ 2 \|s\|_2^2 = \underline{n}\sigma^2 s22=nσ2)。为了降低模切换噪声(大约是 σ m s 2 = ( ∥ s ∥ 2 2 + 1 ) / 12 \sigma_{ms}^2 = (\|s\|_2^2+1)/12 σms2=(s22+1)/12),[WWL+24] 两者的 Level 2 都使用二元秘密。

Using Sparse Isomorphism

[LMK+23] 的基于自同构的自举,关键是使用了同构 Z 2 N ∗ ≅ Z N / 2 × Z 2 \mathbb Z_{2N}^* \cong \mathbb Z_{N/2} \times \mathbb Z_2 Z2NZN/2×Z2,生成元是 { g , − 1 } \{g,-1\} {g,1}。要求系数形如 2 k + 1 ∈ Z 2 N 2k+1 \in \mathbb Z_{2N} 2k+1Z2N,从而可以表示为 ± g j \pm g^{j} ±gj 形式,只需要准备 2 2 2 个 KSK,使用 Galois 自同构计算指数上的数乘 X a i ⋅ s i = τ ± g j ( X s i ) X^{a_i \cdot s_i} = \tau_{\pm g^j}(X^{s_i}) Xaisi=τ±gj(Xsi)

为了进一步提高自举效率(和 a i a_i ai 不同取值的数量有关),[WWL+24] 使用了更加稀疏的系数,形如 k ⋅ 2 ν + 1 ∈ Z 2 N k \cdot 2^\nu +1 \in \mathbb Z_{2N} k2ν+1Z2N,只要 N ≥ 8 N \ge 8 N8 并且 ν ≥ 2 \nu \ge 2 ν2,则它们构成了某个元素 g ∈ Z 2 N g \in \mathbb Z_{2N} gZ2N 生成的乘法循环群,只需要准备 1 1 1 个 KSK 即可。易知 o r d ( 5 m o d 2 N ) = N / 2 ord(5 \bmod 2N)=N/2 ord(5mod2N)=N/2,因此可以选取 g = 5 2 ν − 2 g=5^{2^{\nu-2}} g=52ν2

类似于 [LMK+23],只要系数 a i a_i ai 都具有 k ⋅ 2 ν + 1 k \cdot 2^\nu+1 k2ν+1 形式,那么就可以把内积写成关于 g g g 的多项式,再使用 Horner 法则整理为:
∑ i a i s i = P s ( g ) : = ∑ j ∈ I 0 s j + g ( ⋯ + g ( ∑ j ∈ I 2 N / 2 ν − 1 s j ) ) ( m o d 2 N ) \sum_i a_i s_i = P_s(g) := \sum_{j \in I_0} s_j + g\left(\cdots+g\left(\sum_{j \in I_{2N/2^\nu}-1}s_j\right)\right) \pmod{2N} iaisi=Ps(g):=jI0sj+g +g jI2N/2ν1sj (mod2N)
其中 I j = { i : a i = g j } , j = 0 , 1 , ⋯ , 2 N / 2 ν − 1 I_j = \{i: a_i = g^j\}, j=0,1,\cdots,2N/2^\nu-1 Ij={i:ai=gj},j=0,1,,2N/2ν1

由于 o r d ( g ) = 2 N / 2 ν ord(g) = 2N/2^\nu ord(g)=2N/2ν,盲旋转总共执行了 2 N / 2 ν − 1 2N/2^\nu-1 2N/2ν1 次串行的 τ g \tau_g τg 自同构,因此初始 ACC 加密 T V ( X ) TV(X) TV(X),则最终计算出 T V ( X g − 1 ) ⋅ X ∑ i a i s i TV(X^{g^{-1}}) \cdot X^{\sum_i a_i s_i} TV(Xg1)Xiaisi,因此需要预先把 test vector 扭曲 X → X g X \to X^g XXg,保证计算结果的正确性。

在执行盲旋转之前,使用 ⌊ x ⌉ k ⋅ 2 ν + 1 \lfloor x \rceil_{k \cdot 2^\nu+1} xk2ν+1 把 LWE 系数都舍入到合适的形式,这里的舍入噪声会比 [LMK+23] 更大。

在这里插入图片描述

也采用了 [LMK+23] 的窗口技术,进一步降低自同构的数量。

在这里插入图片描述

由于期望值难以计算,为了确定最优的窗口大小,他们使用 Monte Carlo simulation 统计出不同 w w w 对应的自同构数量。对于不同维度 N ′ = 2 N / 2 ν N' = 2N/2^\nu N=2N/2ν,试验出的最佳 w w w 是:

在这里插入图片描述

完整的 PBS 算法是:

在这里插入图片描述

MV-PBS

由于 LWE 密文舍入到的 ( b , a ) (b,a) (b,a) 都是 k ⋅ 2 ν + 1 k \cdot 2^\nu+1 k2ν+1 形式的整数,而非 2 ν 2^\nu 2ν 倍数,因此无法直接成为 Multi-Value PBS。可以采取很简单的技巧:
X b + ∑ i a i s i = X b + ∑ i ( a i + 1 ) s i − ∑ i s i X^{b+\sum_i a_is_i} = X^{b+\sum_i(a_i+1)s_i - \sum_i s_i} Xb+iaisi=Xb+i(ai+1)siisi
其中的 ( b , a ) (b,a) (b,a) 都是 2 ν 2^\nu 2ν 的倍数,从而 b + ∑ i a i s i b+\sum_i a_is_i b+iaisi 也都是 2 ν 2^\nu 2ν 的倍数。这额外需要 A U X = R G S W s k ‾ ( X − ∑ i s k ‾ i ) AUX = RGSW_{\overline{sk}}(X^{- \sum_i \underline{sk}_i}) AUX=RGSWsk(Xiski) 作为辅助信息。

用于电路自举的 MV-PBS 算法如下:计算符号函数、不做密文提取。

在这里插入图片描述

完整的 PBS 算法是:

在这里插入图片描述

Analysis & Parameters

为了减少 Gadget Vector 的长度,[WWL+24] 对于所有的外积都使用了 [KLD+23] 的 Approximate Gadget Decomposition,选取 B l < q B^l < q Bl<q,那么 v = ( δ , δ B , ⋯ , δ B l − 1 ) v = (\delta,\delta B,\cdots,\delta B^{l-1}) v=(δ,δB,,δBl1),其中 δ = ⌈ q / B l ⌉ \delta = \lceil q/B^l \rceil δ=q/Bl,近似误差 ϵ ≤ δ / 2 \epsilon \le \delta/2 ϵδ/2,环元素和 R L W E ′ ( m ) RLWE'(m) RLWE(m) 的外积噪声是 σ 2 ≤ l N B 2 σ f r e s h 2 / 12 + V a r ( m ) ⋅ ϵ 2 / 3 \sigma^2 \le lNB^2\sigma_{fresh}^2/12 + Var(m)\cdot\epsilon^2/3 σ2lNB2σfresh2/12+Var(m)ϵ2/3(减少了前者,增加了后者,做个平衡),其中 V a r ( m ) ≤ ∥ m ∥ 2 2 Var(m) \le \|m\|_2^2 Var(m)m22。如果是 R L W E RLWE RLWE R G S W RGSW RGSW 的外积,则还有 ∥ m ∥ 2 2 ⋅ σ R L W E 2 \|m\|_2^2 \cdot \sigma_{RLWE}^2 m22σRLWE2 的影响。

有五个不同的 Gadget Vector,它们的 R L W E ′ RLWE' RLWE 的消息格式为

  1. 执行 LHE mode 运算:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,控制位形如 m = b X i , b ∈ { 0 , 1 } m=bX^i, b \in \{0,1\} m=bXi,b{0,1},因此 ∥ m ∥ 2 2 ≤ 1 \|m\|_2^2 \le 1 m221
  2. PBS 中的外积:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,CMux-based 形如 m = s k ‾ i m=\underline{sk}_i m=ski(二元),Auto-based 形如 m = X s k ‾ i m=X^{\underline{sk}_i} m=Xski(高斯),都是 ∥ m ∥ 2 2 ≤ 1 \|m\|_2^2 \le 1 m221
  3. PBS 中的自同构:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,CMux-based 中不存在,Auto-based 形如 m = s k ‾ ( X g j ) m=\overline{sk}(X^{g^j}) m=sk(Xgj),满足 ∥ m ∥ 2 2 ≤ N ‾ / 2 \|m\|_2^2 \le \overline{N}/2 m22N/2
  4. 密文转换中的迹映射:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,形如 m = s k ‾ ( X g u ) m=\overline{sk}(X^{g^u}) m=sk(Xgu),满足 ∥ m ∥ 2 2 ≤ N ‾ / 2 \|m\|_2^2 \le \overline{N}/2 m22N/2
  5. 密文转换中的乘以私钥:维度 N ‾ \overline{N} N,模数 Q ‾ \overline{Q} Q,形如 m = s k ‾ 2 m=\overline{sk}^2 m=sk2(二元),满足 ∥ m ∥ 2 2 ≤ N ‾ 2 / 4 \|m\|_2^2 \le \overline{N}^2/4 m22N2/4

[WWL+24] 首先选取了 Level 0 和 Level 2 的维度和模数,然后固定 ν = 2 \nu=2 ν=2,对应的 PBS 输入密文的最大容许噪声是 σ i n 2 = 2 10 \sigma_{in}^2 = 2^{10} σin2=210,最后选取不同的 Gadget Vector 参数。

在这里插入图片描述

由于对 step 2 的优化,新电路自举算法的规模和效率都有很大的提升:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

爬取基金收盘价并用pyecharts进行展现

爬取基金收盘价并用pyecharts进行展现 一、用到的第三方包 因为使用到了一些第三方的包&#xff0c;包还是比较大的如果直接从社区下载比较费劲&#xff0c;所以建议配置国内镜像源&#xff0c;这里以清华的镜像源为例。 pip config set global.index-url https://pypi.tuna…

uni微信小程序editor富文本组件如何插入图片

需求 在editor中插入图片&#xff0c;并对图片进行编辑&#xff0c;简略看一下组件的属性&#xff0c;官网editor 组件 | uni-app官网 解决方案 首先要使用到ready这个属性&#xff0c;然后官网有给代码粘过来&#xff0c;简单解释一下这段代码的意思&#xff08;作用是在不同…

坐实了!“神坛企业”也是草台班子

越接近真相&#xff0c;越觉得荒诞&#xff01;这次就算删稿也得说两句&#xff0c;KP基于BMC的“可信计算”&#xff0c;正在沦为业内笑柄。戳破那层保护色&#xff0c;施施然端坐神坛的某厂&#xff0c;内里可能也是个草台班子。 近期&#xff0c;网上流传着几页HW给客户洗脑…

k8s-pod参数详解

目录 概述创建Pod编写一个简单的Pod添加常用参数为Pod的容器分配资源网络相关Pod健康检查启动探针存活探针就绪探针 作用整个Pod参数配置创建docker-registry 卷挂载 结束 概述 k8s中的pod参数详解。官方文档   版本 k8s 1.27.x 、busybox:stable-musl、nginx:stable-alpine3…

EXCEL多sheet添加目录跳转

EXCEL多sheet添加目录跳转 背景 excel中有几十个sheet&#xff0c;点下方左右切换sheet太耗时&#xff0c;希望可以有根据sheet名超链接跳转相应sheet&#xff0c;处理完后再跳回原sheet。 方案一 新建目录sheet&#xff0c;在A1写sheet名&#xff0c;右键选择最下方超链接…

【免费】2021年数学建模国赛C题问题一--基于熵权法和TOPSIS法详细版附Word加代码

各位大佬好 &#xff0c;这里是阿川的博客&#xff0c;祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

Linux进程间通信之管道

进程间通信介绍&#xff1a; 进程间通信的概念&#xff1a; 进程间通信简称IPC&#xff08;Interprocess communication&#xff09;&#xff0c;进程间通信就是在不同进程之间传播或交换信息。 进程间通信的目的&#xff1a; 数据传输&#xff1a; 一个进程需要将它的数据…

血清素是怎么产生的,其过高和过低与我们情绪和胃肠健康有哪些关联?

谷禾健康 血清素&#xff0c;5-羟色氨(5-HT)不仅充当体内系统的神经递质和激素&#xff0c;而且还是胃肠系统中的旁分泌信使。 5-HT神经元系统起源于中脑中缝核&#xff0c;下面示意图强调了血清素(5-HT)神经元与释放不同神经递质的其他神经元以及神经胶质细胞之间的解剖相互作…

pxe自动装机

概念 pxe是c/s模式。允许客户端通过网络从远程服务器&#xff08;服务端&#xff09;下载引导镜像&#xff0c;加载安装文件&#xff0c;实现自动化安装操作系统。 无人值守&#xff1a;安装选项不需要人为干预&#xff0c;可以自动化实现。 pxe的优点&#xff1a;1.规模化&…

TqdmWarning: IProgress not found. Please update jupyter and ipywidgets.

jupyter notebook报错 在pycharm的terminal中 安装完成后就不会再报错了

经典神经网络(10)PixelCNN模型、Gated PixelCNN模型及其在MNIST数据集上的应用

经典神经网络(10)PixelCNN模型、Gated PixelCNN模型及其在MNIST数据集上的应用 1 PixelCNN PixelCNN是DeepMind团队在论文Pixel Recurrent Neural Networks (16.01)提出的一种生成模型&#xff0c;实际上这篇论文共提出了两种架构&#xff1a;PixelRNN和PixelCNN&#xff0c;两…

【排序算法】快速排序

文章目录 1.什么是快速排序2.快速排序的步骤3.时间复杂度 1.什么是快速排序 快速排序算法是一种高效的排序方法&#xff0c;它的基本思想是“分而治之”&#xff0c;通过一趟排序将待排记录分隔成独立的两部分&#xff0c;其中一部分记录的关键字均比另一部分的关键字小&#x…

从零开始手把手Vue3+TypeScript+ElementPlus管理后台项目实战五(引入vue-router,并给注册功能加上美丽的外衣el-form)

安装vue-router pnpm install vue-router创建router src下新增router目录&#xff0c;ruoter目录中新增index.ts import { createRouter, createWebHashHistory } from "vue-router"; const routes [{path: "/",name: "Home",component: () …

个人笔记-python生成gif

使用文件的修改时间戳进行排序 import os import re import imageio# 设置图片所在的文件夹路径 folder_path /home/czy/ACode/AMAW_20240219/9.3.x(Discrete_time_marching&#xff09;/9.3.17.11.1(Disc_concessive_CH_ZJ)/current_figures # 文件夹路径&#xff1b;linux…

网络编程: 高级IO与多路转接select,poll,epoll的使用与介绍

网络编程: 高级IO与多路转接select,poll,epoll的使用与介绍 前言一.五种IO模型1.IO的本质2.五种IO模型1.五种IO模型2.同步IO与异步IO3.IO效率 二.非阻塞IO1.系统调用介绍2.验证代码 三.select多路转接1.系统调用接口2.写代码 : 基于select的TCP服务器1.封装的Socket接口2.开始写…

前端 CSS 经典:水波进度样式

前言&#xff1a;简单实现水波进度样式&#xff0c;简单好看。 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><meta http-equiv"X-UA-Compatible" cont…

《数学学习与研究》杂志是什么级别?知网收录吗?评职认可吗?

《数学学习与研究》杂志是什么级别&#xff1f;知网收录吗&#xff1f;评职认可吗&#xff1f; 《数学学习与研究》是由东北师范大学主管&#xff0c;吉林省数学会与东北师范大学出版社联合主办的省级优秀数学类期刊杂志。该杂志为半月刊&#xff0c;国际标准刊号为 ISSN1007-…

SkyWalking之P0业务场景输出调用链路应用

延伸扩展&#xff1a;XX业务场景 路由标签打标、传播、检索 链路标签染色与传播 SW: SkyWalking的简写 用户请求携带HTTP头信息X-sw8-correlation “X-sw8-correlation: key1value1,key2value2,key3value3” 网关侧读取解析HTTP头信息X-sw8-correlation&#xff0c;然后通过SW…

【Linux】系统优化:一键切换软件源与安装Docker

引言 在Linux系统安装完成后&#xff0c;进行一些必要的初始化设置是提升系统性能和用户体验的关键。本文将重点介绍两个实用的一键脚本&#xff1a;LinuxMirrors提供的软件源切换脚本和Docker安装脚本。这两个脚本将帮助我们简化配置安装过程。 一键切换软件源脚本 在Linux…

AI绘画如何打造高质量数据集?

遇到难题不要怕&#xff01;厚德提问大佬答&#xff01; 厚德提问大佬答11 你是否对AI绘画感兴趣却无从下手&#xff1f;是否有很多疑问却苦于没有大佬解答带你飞&#xff1f;从此刻开始这些问题都将迎刃而解&#xff01;你感兴趣的话题&#xff0c;厚德云替你问&#xff0c;你…