基于量子同态加密的安全多方凸包协议

摘要
安全多方计算几何(SMCG)是安全多方计算的一个分支。该协议是为SMCG中安全的多方凸包计算而设计的。首先,提出了一种基于量子同态加密的安全双方值比较协议。由于量子同态加密的性质,该协议可以很好地保护量子电路执行过程中数据的安全性和各方之间的交互。结果由一个半可信的第三方宣布。利用上述设计的值比较协议,提出了一种安全的多方凸包协议,可以安全地解决多个用户点集的公共凸包问题。然后进行了正确性和安全性分析,证明了该协议是安全可靠的。

背景

随着信息技术的发展,安全问题一直是学术界关注的热点问题。安全多方计算(SMC)旨在解决多个相互不信任的参与者共同计算某一类型任务的问题,同时保护他们的信息不被泄露。SMC起源于姚在1982年提出的百万富翁问题,两个百万富翁在不知道彼此财富的情况下比较财富。它涉及到经典计算中的各种问题,其中安全多方计算几何(SMCG)也是一个值得研究的方向。2001年,Atallah首次给出了数的安全计算几何问题的定义研究,包括点包含问题、交点问题和凸包问题,并对其中一些问题提出了解决方案。后续学者也对这些SMCG问题进行了研究,如点包含问题、几何相交问题、最近点或点对问题、求解凸包问题等。
然而,上述问题的解决方案受到计算复杂性的限制。由于量子算法的出现,如Shor算法和Grover算法,这些基于计算复杂度的安全算法将面临威胁。因此,有必要研究基于量子力学的安全多方计算几何。Shi等于2016年提出了一种基于相位编码量子私有查询的任意区域隐私保护点包含协议。2017年,Peng等也使用相位编码的量子隐私查询解决了双方距离解决问题。不久之后,Chen等人发表了一篇论文,指出了Peng方案在安全性上的不足,分析了原方案存在不足的原因,并提出了新的解决方案。2018年,Peng等人提出了一种使用基于QKD的量子私有查询进行安全的双方距离计算的量子协议。Liu等人在2019年发表的文章中提出了一种基于oracle和量子计数算法的协议来处理两方几何相交问题,但该方法仅限于两方的参与,不能很好地扩展到多方的情况下。
在本文中,作者率先使用量子同态加密来解决多方凸包问题。两个或多个用户有自己的点集。作者协议的目的是如何在不泄露用户自身信息的情况下找出所有用户点集的共同凸包,凸包点的信息是所有人都知道的。提出了一种基于量子同态加密的值比较协议,保证了数据值的安全性。然后将该协议应用于凸包计算协议中,最后得到了该协议的解。

基础知识

量子同态加密

QHE方案解决的问题是,当数据被加密后,经过同态求值,最终的解密结果与原始明文的相同计算结果相同,可以解决安全计算问题。QHE方案由四种算法组成(密钥生成,加密算法,评估算法,解密算法)。

  1. 密钥生成算法将随机生成一个加密密钥ek和一个解密密钥dk。根据给定的ek算法计算dk
  2. 加密算法ε对量子态σ进行加密并输出加密后的量子态 E ε ( e k , δ ) E_ε(ek,δ) Eε(ek,δ)
  3. 评估算法是对加密数据 ε ( e k , δ ) ε(ek, δ) ε(ekδ)进行量子计算U,执行后得到最终的密文 E ε ( e k , δ ) E_ε(ek, δ) Eε(ekδ)
  4. 解密算法D对 E ε ′ ( e k , δ ) E'_ε(ek, δ) Eε(ekδ)进行解密,输出明文 σ ′ = D ( d k , E e ′ ( e k , σ ) ) σ' = D(dk, E'_e(ek, σ)) σ=D(dk,Ee(ekσ)) σ ′ = U σ U † σ' = UσU^† σ=UσU
    在本文中,我们使用X门和Z门对明文量子比特 σ σ σ进行加密,并被Boykin等人证明是完全安全的。
    在密钥生成中,可以对原始密文进行量子门操作,而原始密钥ek根据密钥更新算法生成最终解密密钥dk。量子门的每次执行称为 G i ( i = 1 , 2 … k , k 是执行的总次数 ) G_i (i = 1,2…k, k是执行的总次数) Gi(i=1,2k,k是执行的总次数),每个量子门是集合 S = S = S={ X , Y , Z , H , S , T , C N O T X, Y, Z, H, S, T,CNOT X,Y,Z,H,S,T,CNOT}的一个元素。密钥更新算法有以下几种情况:如果Gi = X或Y或Z,假设它作用于ek的第m位,则密钥更新算法第i步的密钥值不变。如式(1)所示
    在这里插入图片描述
    如果Gi = H,假设它作用于ek的第m位,则密钥更新算法第i步的密钥值遵循式(2)。
    在这里插入图片描述
    如果Gi = S,假设它作用于ek的第m位,则密钥更新算法第i步的密钥值遵循式(3)
    在这里插入图片描述
    如果Gi = S,假设它作用于ek的第m位和第l位,则密钥更新算法第i步的密钥值遵循式(4)。
    在这里插入图片描述
    如果Gi = T,则由于执行T门进行求值而发生s错误。则有s错误为 T X x Z z ∣ ψ ⟩ = X x Z x S x T ∣ ψ ⟩ TX^xZ^z|\psi\rangle=X^xZ^xS^xT|\psi\rangle TXxZzψ=XxZxSxTψ。为了消除s误差,Gao等设计了一种基于Sx旋转贝尔测量的T门过程量子电路,如图1所示。执行此电路后,可以得到ra和rb,然后 T X x ⊕ z S x Z z ∣ ψ ⟩ = X x ⊕ r a Z x ⊕ z ⊕ r b T ∣ ψ ⟩ TX^{x\oplus z}S^xZ^z|\psi\rangle=X^{x\oplus r_a}Z^{x\oplus z\oplus r_b}T|\psi\rangle TXxzSxZzψ=XxraZxzrbTψ
    在这里插入图片描述
    假设Gi = T作用于ek的第m位,则密钥更新算法第i步的密钥值遵循式(5)。
    在这里插入图片描述

量子逻辑门与量子减法电路

逻辑门电路是量子计算的基础。单量子比特门包括泡利操作X、Y、Z、Hadamard门H和相位门T、S。量子减法器的设计是为了从n两个二进制数a和b中获取减法信息。本文中我们使用Yuan设计的量子减法器,其具体思想是:首先从最低位开始减法,然后考虑是否需要从上面的位借用,然后减去第二个位直到最后一位。为了重用常数输入,使用复位操作将常数输入设置为0,可以显著减少常数输入的数量。量子位输入减法电路如图所示。
在这里插入图片描述

基于同态加密的值比较协议(VCP_QHE)

本节介绍了一个基于量子同态加密的私有比较协议,可以安全地保护双方之间的值比较。参与者包括Alice、Bob(两个信息所有者)和半信任的第三方。我们可以将半可信的第三方划分为计算中心和密钥分发中心,其中计算中心只负责消息的计算,而半可信的密钥中心负责密钥的分发。在我们的协议中,我们使用水平偏振和垂直偏振来表示点信息,水平偏振光子|1>表示二进制消息1,垂直偏振光子|0>表示二进制消息0。Alice和Bob分别将加密后的信息发送到计算中心的量子电路U进行计算。量子电路U包含多个逻辑门,它们属于集合S = {X, Y, Z, H, S, T, CNOT}。协议流程图如图4所示,具体步骤如下:
在这里插入图片描述

  1. 密钥中心随机生成一个长度为2n的密钥ek = (x0,z0),其中x0,z0属于{0,1}n。然后通过BB84量子密钥分发协议将ek发送给Alice和Bob。
  2. Alice和Bob分别对他们的信息进行编码,Alice和Bob分别用ek对其编码的光子序列 ∣ ψ A ⟩ = ∣ ψ A 1 ψ A 2 ψ A 3 ⋅ ⋅ ⋅ ψ A n ⟩ |\psi_A\rangle=|\psi_A^1\psi_A^2\psi_A^3···\psi_A^n\rangle ψA=ψA1ψA2ψA3⋅⋅⋅ψAn, ∣ ψ B ⟩ = ∣ ψ B 1 ψ B 2 ψ B 3 ⋅ ⋅ ⋅ ψ B n ⟩ |\psi_B\rangle=|\psi_B^1\psi_B^2\psi_B^3···\psi_B^n\rangle ψB=ψB1ψB2ψB3⋅⋅⋅ψBn进行加密,得到密文序列 ∣ ψ A ′ ⟩ = X x 1 Z z 1 ∣ ψ A 1 ⟩ ⊗ X x 2 Z z 2 ∣ ψ A 2 ⟩ ⋅ ⋅ ⋅ ⊗ X x n Z z n ∣ ψ A n ⟩ |\psi_A'\rangle=X^{x_1}Z^{z_1}|\psi_A^1\rangle \otimes X^{x_2}Z^{z_2}|\psi_A^2\rangle ···\otimes X^{x_n}Z^{z_n}|\psi_A^n\rangle ψA=Xx1Zz1ψA1Xx2Zz2ψA2⋅⋅⋅XxnZznψAn, ∣ ψ B ′ ⟩ = X x 1 Z z 1 ∣ ψ B 1 ⟩ ⊗ X x 2 Z z 2 ∣ ψ B 2 ⟩ ⋅ ⋅ ⋅ ⊗ X x n Z z n ∣ ψ B n ⟩ |\psi_B'\rangle=X^{x_1}Z^{z_1}|\psi_B^1\rangle \otimes X^{x_2}Z^{z_2}|\psi_B^2\rangle ···\otimes X^{x_n}Z^{z_n}|\psi_B^n\rangle ψB=Xx1Zz1ψB1Xx2Zz2ψB2⋅⋅⋅XxnZznψBn。这些密文序列是需要发到计算中心去执行而提前制备的。为了防止第三方窃听,Alice和Bob准备了一些诱饵光子,每个光子从 ∣ 10 ⟩ ∣ 11 ⟩ ∣ + ⟩ ∣ − ⟩ |10\rangle|11\rangle |+\rangle |-\rangle ∣10∣11+中选择。这些诱饵光子将被随机插入。完成这个操作之后,新序列才会被发送到计算中心。
  3. 计算中心接收到Alice和Bob发送的加密序列后,Alice和Bob公布诱饵光子的插入位置和对应的测量基,若插入的诱饵为|0>或者|1>,则测量基为|0>或者|1>,[1}};若插入的诱饵为|+>或者|->,则测量基为|+>或者|->。计算中心根据所提供的信息进行排序。如果测量结果没有达到Alice和Bob设定的阈值,协议将终止。否则,计算中心丢弃诱饵光子,获得原始加密序列 ∣ ψ A ′ ⟩ |\psi'_A\rangle ψA ∣ ψ B ′ ⟩ |\psi'_B\rangle ψB。为了使输入计算的位长一致,计算中心在计算前在序列长度较短的加密序列前面加上I0 >,使两个序列的长度一致。
  4. 计算中心构建量子减法电路,取两个加密序列作为电路输入。同时,密钥中心根据计算中心执行的量子逻辑门对原密钥周进行更新。假设我们将电路中的量子逻辑门每次执行设置为Gi,总共执行K次,那么最终的密文结果可以表示为 G k ( G k − 1 ( ⋅ ⋅ ⋅ ( G 2 ( G 1 ( ∣ ψ A ′ ⟩ , ∣ ψ B ′ ⟩ ) ) ) ⋅ ⋅ ⋅ ) ) G_k(G_{k-1}(···(G2(G1(|\psi'_A\rangle,|\psi'_B\rangle)))···)) Gk(Gk1(⋅⋅⋅(G2(G1(ψA,ψB⟩)))⋅⋅⋅))。解密密钥为 d k = ( x k , z k ) dk = (xk, zk) dk=(xk,zk),稍后将解释密钥更新规则。最后,计算中心将计算结果发送到密钥中心。
  5. 密钥中心收到结果后,使用解密密钥dk对其进行解密和测量,最终得到Alice和Bob减去的信息(计算结果)。
  6. 密钥中心向Alice和Bob宣布最终结果,协议结束。

基于VCP_QHE的安全多方凸包协议

假设有多个用户Ui(i>1),每个用户都有自己的点集seti,想要求解点集的公共凸包Σseti。但是他们不希望对方知道自己的信息,只能知道凸包上的信息。目前经典各方提出的安全协议是基于计算复杂度的,这类协议的问题受到量子计算的威胁。为了更清晰地描述这一过程,本文描述了双方安全凸包协议,最后扩展为安全多方凸包协议。在两方协议中,假设我们的参与者是Alice和Bob,以及一个半可信的第三方。Alice有一个私有的点集合SA= (p1, p2, p3…, pm), Bob有一个私有点集SB = (q1, q2,q3 …qn)。Alice和Bob需要在不泄露他们自己的点集信息的情况下计算m + n个点的凸包。具体步骤如下:

步骤1 Alice和Bob分别计算y轴坐标中最小的点pA min∈SA和qB min∈SB(注意这里也可以选择y轴上的最大值或x轴上的最小最大值,只要所需点是当前集合中的极值点即可)。
步骤2 Alice和Bob用VCP_QHE比较他们的极值点pA min和qB min的值大小。
如果pA min >qB min,那么qB min是m + n集合的一个极值点和凸包上的一个点。通过qB min生成x轴方向的水平单位矢量→v0v1 (v0是矢量上的一个点,v1 = qB min)。
如果pA min <pbmin,那么pA min是m + n集合的一个极值点也是凸包上的一个点。通过pA min生成x轴方向的水平单位矢量→v0v1 (v0是矢量上的一个点,v1 = pA min)。
若pA min = qB min,则pA min和qB min都是m + n集合的极值点和凸包上的两个点。通过pA min和qB min生成向量→v0v1,v0 = pA min, v1 = qB min。
步骤3 Alice计算余弦值 c o s l ( l = 1 , 2 , … , m ) cos_l(l = 1,2,…, m) cosl(l=1,2,m) v i p l → \overrightarrow {v_ip_l} vipl v i − 1 v i → \overrightarrow{v_{i-1}v_i} vi1vi (i表示第i个凸包点,l=1,2,3…m),并选择其最大余弦值cos A。同时,Bob计算余弦值cost(t =1,2,…), n)的 v i q t → \overrightarrow {v_iq_t} viqt v i − 1 v i → \overrightarrow {v_{i-1}v_i} vi1vi ,然后选择其最大余弦值cos B。
步骤4 Alice和Bob通过VCP_QHE比较了 c o s A ( c o s < v i p m a x → , v i − 1 v i → > ) cosA(cos<\overrightarrow {v_ip_{max}},\overrightarrow {v_{i-1}v_i}>) cosA(cos<vipmax ,vi1vi >) c o s B ( c o s < v i p m a x → , v i − 1 v i → > ) cosB(cos<\overrightarrow {v_ip_{max}},\overrightarrow {v_{i-1}v_i}>) cosB(cos<vipmax ,vi1vi >)的大小。p max和q max分别是Alice和Bob的点集中余弦值最大的点。比较结果将在三种情况下:
若cos A>cos B,则pmax为凸包点,设p max→vi+1。循环第3步和第4步,直到vi+1≡v1,其中最后一个凸点是第一个凸点,然后协议结束。若cos A<cos B,则q max为凸包点,设q max→vi+1。循环第3步和第4步,直到vi+1≡v1,其中最后一个凸点是第一个凸点,然后协议结束。如果cos A=cos B。
步骤5 Alice和Bob分别计算凸壳点vi到p max, q max的距离disA, disB,然后通过VCP_QHE比较这两个距离。如果没有的话。disB,则设置p max→vi+1,否则设置q max→vi+1。循环第3步和第4步,直到vi+1≡v1,其中最后一个凸点是第一个凸点,然后协议结束。

由于协议解的整个过程是根据前一个凸壳点得到下一个凸壳点,我们可以知道两个凸壳点可以形成一个凸壳的边,所以每得到两个凸壳点就会形成一个凸壳边,所有边的集合就是一个完整的凸壳。由此得到的点集合代表了整个点集合的凸壳(即,根据所得到的点的顺序由直线形成的闭环是凸壳)。
根据上述安全的双方凸包协议,我们还可以将其扩展到安全的多方凸包计算。多用户Ui(i = 1,2,3…,n)协议的过程与双方凸包协议的过程大致相同。在步骤1中,Ui分别得到自己的极值点,然后使用VCP_QHE协议最终得到一个极值点Σ Si(所有点的集合); VCP_QHE还用于求解步骤3中的最大余弦值和步骤5中的最大距离。由于我们设计的VCP_QHE是由双方来解决的,所以我们需要对多个用户的输入进行两两判断。最后,经过循环判断,每个用户Ui都可以得到所有点的凸包。

精确度分析

在本节中,我们对VCP_QHE和安全多方凸包协议进行了用例分析。首先,我们分析VCP_QHE协议,假设Alice有数据IA= 58, Bob有数据IB= 30,并将它们分别编码为二进制,得到IA =(1,1,1,0,1,0)和IB=(1,1,1,1,0)。由于IA和IB的长度不一致,我们在较小的I前面加上|0>,得到两者的长度一致的I’B=(0,1,1,1,1,0)。通过计算中心(即IA−IB)的计算和密钥中心(即Ires = (1,1,1,0,0) > 0的解密,我们可以知道IA >IB
在这里插入图片描述
通过VCP_QHE协议对cos A和cos B进行判断,得出cos A<cos B,因此新的凸包点为q3。然后以q3为基点,得到后续凸包点。流程为q1→q3→q2→p2→p1→q1,如上图所示。
对于安全多方凸包的正确性分析,我们假设Alice和Bob有点集SA= {(0,1), (1,6), (2,4)}, SB={(3,0),(4,8),(6,1)},如图所示。Alice和Bob计算了他们点集中的最小y轴坐标,分别标记为p1和q1。通过对p1和q1应用VCP_QHE协议可以看出,q1是整个集合中沿y轴方向的最小点,也是第一个凸包点。根据q1,分别得到Alice和Bob的最大余弦值如式6和式7所示。
在这里插入图片描述
在不失一般性的前提下,假设有n个用户U1 U2…,则每个用户包含各自的点信息。每个用户计算自己的点集Ei中的极值点,通过VCP_QHE协议比较Ei,得到第一个凸包点C1。Ui计算最小余弦值 c o s < C 1 , C 1 P k > i cos<C_1,C_1P_k>_i cos<C1,C1Pk>i由点C1的水平向量 C 1 P k C_1P_k C1Pk组成。然后比较通过VCP_QHE得到最小余弦值 c o s < C 1 , C 1 P k > i cos<C_1,C_1P_k>_i cos<C1,C1Pk>i和在整个点集中的 c o s < C 1 , C 1 P k > i cos<C_1,C_1P_k>_i cos<C1,C1Pk>i。即可以得到第二凸包点C2。因此,每个用户首先找到自己的点与凸包边Ci−2Ci−1形成的最小余弦值,然后通过安全VCP_QHE协议比较余弦值。当获得下一个凸包点Ci值时,第一个凸包点的信息相同。然后解出所有凸包点,所有凸包点C1C2…Cm。整个解决过程是完全正确的,并且安全性也得益于同态加密的保证。

安全性分析

由于我们是第一个使用量子同态加密来解决凸包问题的,因此没有其他协议可以与我们比较。我们只能从以下几个角度来分析所提议协议的安全性。

数据与密钥安全

由于初始加密密钥ek是由密钥中心使用安全密钥生成算法QOTP随机生成的,因此可以保证生成的初始密钥的安全性。在密钥更新算法中,当密钥中心与计算中心交互时,计算中心只提供每一步执行的量子逻辑门,因此(x,z)中间密钥和最终dk在密钥更新过程中是安全的。在数据安全方面,由于初始密钥和解密密钥由密钥中心所有,因此密钥中心窃听数据的可能性很大。但是,在我们的协议中,这是不可行的,因为用户通过密钥中心分发的初始密钥ek对数据进行加密,然后通过安全的量子通道直接传输到计算中心,计算中心只有在数据输入通过门电路完成后才会将得到的数据发送到密钥中心进行解密。因此,密钥中心只能获得操作后的数据信息,而无法获得原始的明文信息。所以数据是安全的。

外部攻击

外部攻击者可以在密钥分发、密文传输和同态评估过程中进行攻击。在密钥分发过程中,使用BB84协议分发密钥,因此外部攻击者无法获取密钥。在密文传输过程中,外部攻击者可能会攻击量子信道以获取数据。但是,在数据传输之前,用户会在加密的光子序列中随机添加诱饵光子。因此,即使攻击者拦截了密文信息,也无法知道原始信息是什么。在同态评估过程中,计算与关键中心之间的通信是通过量子信道进行的,并且在信息中插入诱饵光子以防止被窃听,因此也是安全的。

内部攻击

在这种情况下,如果N个不诚实的参与者想要窃取其他人的信息,我们的协议也是完全安全的。由于半可信的密钥中心和计算中心必须忠实于实现过程,不能与其他参与者或第三方合作,因此它们只能从自己获得的信息中推断出其他人的信息。我们在上节中描述了用户数据的安全性。因此,密钥中心和计算中心无法获取其他用户的真实信息。另一方面,由于关键中心公布的最终结果没有公布具体的差异,用户无法通过差异数据获取其他各方的信息,也无法与其他参与者合作获取用户的真实数据。所以我们的协议可以抵抗参与者的攻击。

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

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

相关文章

【广州华锐互动】AR智慧机房设备巡检系统

AR智慧机房设备巡检系统是一种新型的机房巡检方式&#xff0c;它通过使用增强现实技术将机房设备、环境等信息实时呈现在用户面前&#xff0c;让巡检人员可以更加高效地完成巡检任务。 首先&#xff0c;AR智慧机房设备巡检系统具有极高的智能化程度。该系统可以根据用户设定的…

WIZnet W5500-EVB-Pico树莓派入门教程(一)

概述 W5500-EVB-Pico是基于树莓派RP2040和完全硬连线TCP/IP控制器W5500的微控制器开发板-基本上与树莓派Pico板相同&#xff0c;但通过W5500芯片增加了以太网功能。 板载资源 RP2040是Raspberry Pi的首款微控制器。它将我们的高性能、低成本和易用性的标志性价值观带入微控制器…

抖音短视频seo源码矩阵系统开发

一、前言&#xff1a; 抖音SEO源码矩阵系统开发是一项专为抖音平台设计的SEO优化系统&#xff0c;能够帮助用户提升抖音视频的搜索排名和曝光度。为了确保系统运行正常&#xff0c;需要安装FFmpeg和FFprobe工具。FFmpeg是一个用于处理多媒体数据的开源工具集&#xff0c;而FFpr…

Redis三种模式——主从复制,哨兵模式,集群

目录 一、主从复制 1.1主从复制的概念 1.2Redis主从复制作用 1.2.1数据冗余 1.2.2故障恢复 1.2.3负载均衡 1.2.4高可用基石 1.3Redis主从复制流程 1.4部署Redis 主从复制 1.4.1.环境部署 1.4.2.所有服务器都先关闭防火墙 1.4.3.所有服务器都安装Redis 1.4.4修改Master主节点R…

在CSDN学Golang云原生(Kubernetes声明式资源管理Kustomize)

一&#xff0c;生成资源 在 Kubernetes 中&#xff0c;我们可以通过 YAML 或 JSON 文件来定义和创建各种资源对象&#xff0c;例如 Pod、Service、Deployment 等。下面是一个简单的 YAML 文件示例&#xff0c;用于创建一个 Nginx Pod&#xff1a; apiVersion: v1 kind: Pod m…

Linux下CMake开发

CMake编译和运行C文件 编写CMakeLists.txt # 声明要求的 cmake 最低版本 cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程 project( pro )# 设置编译模式 set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV库 #指定OpenCV版本&#xff0c;代码如下 #find…

jmeter-断言

断言作用&#xff1a;让脚本自动化执行过程中&#xff0c;能够自动判定执行结果是否正确&#xff0c;需要添加断言 响应断言 添加方式&#xff1a;测试计划–》线程组–》HTTP请求–》(右键添加)断言–》响应断言 案例 请求:https://www.baidu.com 检查&#xff1a;让程序检查…

TortoiseGit安装

1、TortoiseGit简介 TortoiseGit是基于TortoiseSVN的Git版本的Windows Shell界面。它是开源的&#xff0c;可以完全免费使用。 TortoiseGit 支持你执行常规任务&#xff0c;例如commit、显示日志、区分两个版本、创建分支和标签、创建补丁等。 2、TortoiseGit下载 (1)Tortois…

亚马逊云科技联合霞光社发布《2013~2023中国企业全球化发展报告》

中国企业正处于全球聚光灯下。当企业全球化成为时代发展下的必然趋势&#xff0c;出海也从“可选项”变为“必选项”。中国急速扩大的经济规模&#xff0c;不断升级的研发和制造能力&#xff0c;都在推动中国企业不断拓宽在全球各行业的疆域。 过去十年&#xff0c;是中国企业…

怎么在线制作证件?教你一键生成证件照

无论是申请身份证、护照、驾照还是学生证&#xff0c;都需要一张清晰、规范的证件照。但是&#xff0c;为了拍摄一张完美的证件照&#xff0c;需要付出不少时间和精力。而现在&#xff0c;我们可以使用压缩图网站提供的证件照制作工具&#xff0c;轻松制作出一张清晰、规范的证…

神经网络的初始化方法

文章目录 1、随机初始化2、Xavier初始化3、He初始化4、权重预训练初始化5、零初始化 对于神经网络的训练过程中&#xff0c;合适的参数初始化方法有助于更好的处理梯度消失和梯度爆炸问题。通常有以下几种初始化方法&#xff1a; 1、随机初始化 随机初始化&#xff08;Random…

飞行动力学-第15节-part2-松杆中性点 之 基础点摘要

飞行动力学-第15节-part2-松杆中性点 之 基础点摘要 1. 松杆中性点2. 松浮角2. 杆力梯度3. 参考资料 1. 松杆中性点 stick fixed&#xff1a; N 0 N_0 N0​&#xff0c;握杆&#xff0c;升降舵固定stick free&#xff1a; N 0 ′ N_0 N0′​&#xff0c;松杆&#xff0c;升降舵…

java static修饰的静态成员

静态成员 特点&#xff1a; 1.静态成员可以被本类所有对象共享2.静态成员可以通过类名调用也可以推荐对象调用&#xff0c;但是推荐使用类名调用&#xff01;3.静态成员随着类的加载而加载&#xff0c;优先于对象存在的静态方法的注意事项&#xff1a; 1.非静态方法可以访问任…

APP开发入门:了解主流的编程语言

在过去的几年里&#xff0c;有许多程序员开始学习和使用编程语言。这其中包括C、C、 Java和 Python。尽管有许多语言可供选择&#xff0c;但大多数程序员都会选择最容易学习的编程语言。 如今&#xff0c;有很多编程语言供选择。程序员们在学习这些语言时可以自由地选择他们喜…

Docker 镜像构建 搭建分布式LNMP论坛 实践

地址规划 nginx 172.18.0.10 mysql 172.18.0.20 php 172.18.0.30 宿主机准备 拉取镜像&#xff0c;下面以此镜像为基础 docker pull centos:7 创建自定义网段以便指定 IP 不变动 docker network create --subnet172.18.0.0/16 --opt "com.docker.network.bridge.na…

Spark Streaming流媒体引擎

Spark Streaming是Spark的上一代流媒体引擎。Spark Streaming不再有更新&#xff0c;它是一个遗留项目。Spark中有一个更新且更易于使用的流媒体引擎&#xff0c;称为结构化流媒体 概述 Spark Streaming是核心Spark API的扩展&#xff0c;支持实时数据流的可扩展、高吞吐量、…

条款38:对变化多端的线程句柄析构函数行为保持关注

条款37解释过&#xff0c;可联结的线程对应着一个底层系统执行线程&#xff0c;未推迟任务&#xff08;参见条款36&#xff09;的期值和系统线程有类似关系。这么一来&#xff0c;std::thread型别对象和期值对象都可以视作系统线程的句柄。 从这个视角来看&#xff0c;std::th…

Opencv的Mat内容学习

来源&#xff1a;Opencv的Mat内容小记 - 知乎 (zhihu.com) 1.Mat是一种图像容器&#xff0c;是二维向量。 灰度图的Mat一般存放<uchar>类型 RGB彩色图像一般存放<Vec3b>类型。 (1)单通道灰度图数据存放样式&#xff1a; (2)RGB三通道彩色图存放形式不同&#x…

Flutter 添加 example流程

一、已有Flutter工程&#xff08;命令&#xff09;添加 example 1、cd 工程(flutter_plugin ,是自己创建的)根目录 例: flutter create example 执行命令创建example PS&#xff1a;cd example 后执行flutter doctor 后就可以看到效果 2、如果需要指定iOS/Android 语言,请添加…

如何建立Docker私有仓库?

文章目录 docker私有仓库harborHarbor仓库部署Harbor仓库使用 docker私有仓库 Docker 私有仓库是一个用于存储和管理 Docker 镜像的私有存储库。它允许你在内部网络中创建和管理 Docker 镜像&#xff0c;并提供了更好的安全性和控制&#xff0c;因为你可以完全控制谁能够访问和…