基于量子同态加密的安全多方凸包协议
摘要 |
---|
安全多方计算几何(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方案由四种算法组成(密钥生成,加密算法,评估算法,解密算法)。
- 密钥生成算法将随机生成一个加密密钥ek和一个解密密钥dk。根据给定的ek算法计算dk
- 加密算法ε对量子态σ进行加密并输出加密后的量子态 E ε ( e k , δ ) E_ε(ek,δ) Eε(ek,δ)
- 评估算法是对加密数据 ε ( e k , δ ) ε(ek, δ) ε(ek,δ)进行量子计算U,执行后得到最终的密文 E ε ( e k , δ ) E_ε(ek, δ) Eε(ek,δ)
- 解密算法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,2…k,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 TXx⊕zSxZz∣ψ⟩=Xx⊕raZx⊕z⊕rbT∣ψ⟩。
假设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所示,具体步骤如下:
- 密钥中心随机生成一个长度为2n的密钥ek = (x0,z0),其中x0,z0属于{0,1}n。然后通过BB84量子密钥分发协议将ek发送给Alice和Bob。
- 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∣ψA1⟩⊗Xx2Zz2∣ψ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∣ψB1⟩⊗Xx2Zz2∣ψB2⟩⋅⋅⋅⊗XxnZzn∣ψBn⟩。这些密文序列是需要发到计算中心去执行而提前制备的。为了防止第三方窃听,Alice和Bob准备了一些诱饵光子,每个光子从 ∣ 10 ⟩ ∣ 11 ⟩ ∣ + ⟩ ∣ − ⟩ |10\rangle|11\rangle |+\rangle |-\rangle ∣10⟩∣11⟩∣+⟩∣−⟩中选择。这些诱饵光子将被随机插入。完成这个操作之后,新序列才会被发送到计算中心。
- 计算中心接收到Alice和Bob发送的加密序列后,Alice和Bob公布诱饵光子的插入位置和对应的测量基,若插入的诱饵为|0>或者|1>,则测量基为|0>或者|1>,[1}};若插入的诱饵为|+>或者|->,则测量基为|+>或者|->。计算中心根据所提供的信息进行排序。如果测量结果没有达到Alice和Bob设定的阈值,协议将终止。否则,计算中心丢弃诱饵光子,获得原始加密序列 ∣ ψ A ′ ⟩ |\psi'_A\rangle ∣ψA′⟩和 ∣ ψ B ′ ⟩ |\psi'_B\rangle ∣ψB′⟩。为了使输入计算的位长一致,计算中心在计算前在序列长度较短的加密序列前面加上I0 >,使两个序列的长度一致。
- 计算中心构建量子减法电路,取两个加密序列作为电路输入。同时,密钥中心根据计算中心执行的量子逻辑门对原密钥周进行更新。假设我们将电路中的量子逻辑门每次执行设置为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(Gk−1(⋅⋅⋅(G2(G1(∣ψA′⟩,∣ψB′⟩)))⋅⋅⋅))。解密密钥为 d k = ( x k , z k ) dk = (xk, zk) dk=(xk,zk),稍后将解释密钥更新规则。最后,计算中心将计算结果发送到密钥中心。
- 密钥中心收到结果后,使用解密密钥dk对其进行解密和测量,最终得到Alice和Bob减去的信息(计算结果)。
- 密钥中心向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} vi−1vi(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} vi−1vi,然后选择其最大余弦值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,vi−1vi>)和 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,vi−1vi>)的大小。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个不诚实的参与者想要窃取其他人的信息,我们的协议也是完全安全的。由于半可信的密钥中心和计算中心必须忠实于实现过程,不能与其他参与者或第三方合作,因此它们只能从自己获得的信息中推断出其他人的信息。我们在上节中描述了用户数据的安全性。因此,密钥中心和计算中心无法获取其他用户的真实信息。另一方面,由于关键中心公布的最终结果没有公布具体的差异,用户无法通过差异数据获取其他各方的信息,也无法与其他参与者合作获取用户的真实数据。所以我们的协议可以抵抗参与者的攻击。
相关文章:

基于量子同态加密的安全多方凸包协议
摘要安全多方计算几何(SMCG)是安全多方计算的一个分支。该协议是为SMCG中安全的多方凸包计算而设计的。首先,提出了一种基于量子同态加密的安全双方值比较协议。由于量子同态加密的性质,该协议可以很好地保护量子电路执行过程中数据的安全性和各方之间的…...

MySQL案例——多表查询以及嵌套查询
系列文章目录 MySQL笔记——表的修改查询相关的命令操作 MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明 文章目录 系列文章目录 前言 一 创建数据库 1.1 创建一个部门表 1.…...

AI 视频清晰化CodeFormer-Deepfacelab
CodeFormer 概述 (a) 我们首先学习一个离散码本和一个解码器,通过自重建学习来存储人脸图像的高质量视觉部分。(b) 使用固定的码本和解码器,我们引入了一个用于代码序列预测的 Transformer 模块,对低质量输入的全局人脸组成进行建模。此外&a…...

TCP协议如何实现可靠传输
TCP最主要的特点 TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。 TCP最主要的特点: TCP是面向连接的输出层协议 每一条…...
万恶的Eclipse的使用
恨啊!公司用eclipse,这种千年老古董又被翻出来了,我的idea,我的宝,我想你! 下面是总结的各种eclipse的使用技巧: 让eclipse像idea一样使用 .sout eclipse设置自动保存代码(图文&…...

文件上传--题目
之前有在技能树中学过文件上传,正好借这次进行一个整合: 技能树中所包含的题目类型有 无限制绕过 1.上传一句话木马 2.链接中国蚁剑 前端验证 1.会发现这个网站不让提交php,改后缀为jpg格式,再用burp抓包 2.在用中国蚁剑连接 .…...

小程序创建
1,下载HBuilder X ;(3.8.7) HBuilderX-高效极客技巧 2,下载模板(不选云服务的); 3,运行-运行到小程序模拟器; 4,安装小程序开发工具; 5,选择稳定版-windows64版&…...

stable diffusion如何确保每张图的面部一致?
可以使用roop插件,确定好脸部图片后,使用roop固定,然后生成的所有图片都使用同一张脸。 这款插件的功能简单粗暴:一键换脸。 如图所示: 任意上传一张脸部清晰的图片,点击启用。 在其他提示词不变的情况下…...

保存Windows锁屏壁纸
原链接 1. 点击爱心 我保存过了,所以没有爱心了. 2. 打开本地文件夹 用户改成自己的 C:\Users\86186\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_cw5n1h2txyewy\LocalState\Assets 3. 复制这些文件到其他目录 我这个不知道咋的,操作完文件夹过1会就被…...

面向对象编程:深入理解内部类与抽象类的使用
文章目录 一、内部类使用:1.1 成员内部类:1.1.1 成员内部类的主要特点是: 1.2 局部内部类:1.2.1 局部内部类的主要特点是:1.2.2 局部内部类通常用于以下情况: 1.3 静态内部类:1.3.1 静态内部类的…...
linux安装oracle
oracle安装 基于linux系统安装 Linux安装oracle12C Centos7.6 内存8GB 硬盘:50GB 可视化图形界面 yum groupinstall "GNOME Desktop" -y 可视化后续安装命令 1、软件环境包安装 yum -y install binutils compat-libcap1 compat-libstdc-33 gcc-c glib…...
切面 基于Aspect注解自动切面, 省下注解判断逻辑 handler
父文章 spring aop 切面配置_aop 切面设置.**_个人渣记录仅为自己搜索用的博客-CSDN博客 【Spring AOP】Aspect结合案例详解(一): Pointcut使用annotation 五种通知Advice注解(已附源码)_pointcut annotation_天罡gg的博客-CSDN博…...

golang,gin框架的请求参数(一)--推荐
golang,gin框架的请求参数(一) gin框架的重要性不过多的强调,重点就gin使用中的参数传递,获取进行梳理文件,满足使用需求。 获取前端请求参数的几种方法: 一、获取参数【浏览器地址获取参数】…...

ardupilot 遥控的输入控制模式
目录 本节主要记录自己整理ardupilot的遥控器的输入控制模式:正常模式、简单模式、超简单模式的理解。 1.正常模式(有头模式) 在不用简单和超简单的模式的情况下,无人机操作员操作的控制输入是对应着不断旋转着的飞行器进行操作的。如上方图所示举例,当无人机操作员进行…...
Unity UGUI的StandaloneInputModule (标准输入模块)组件的介绍及使用
Unity UGUI的StandaloneInputModule (标准输入模块)组件的介绍及使用 1. 什么是StandaloneInputModule组件? StandaloneInputModule是Unity UGUI系统中的一个标准输入模块组件,用于处理鼠标和键盘的输入事件。它可以将鼠标和键盘的输入转化为UGUI系统中…...

惠普HP Color Laser 150a开机红色感叹号闪烁不打印故障解决方法
故障描述: 惠普HP Color Laser 150a开机红色感叹号闪烁,不能打印,电脑提示C3-6140。 检测分析: 在解决C3-6140错误代码之前,我们需要先检查打印机是否连接正常。如果打印机连接不正常,也可能会出现这个错误…...

CVE-2023-1454注入分析复现
简介 JeecgBoot的代码生成器是一种可以帮助开发者快速构建企业级应用的工具,它可以通过一键生成前后端代码,无需写任何代码,让开发者更多关注业务逻辑。 影响版本 Jeecg-Boot<3.5.1 环境搭建 idea 后端源码: https://git…...
MFC使用png做背景图片
在MFC中使用png图片作为背景,你需要使用GDI库。以下是一个简单的示例: 首先,你需要在你的项目中包含GDI头文件和库。在你的stdafx.h(或者你的项目预编译头文件)中添加以下代码: #include <GdiPlus.h&g…...
Java开发的基石:JDK
Java开发的基石:JDK 前言一、引入二、JDK的发展历程三、JDK主要目录结构解析四、JDK的使用 前言 本博主将用CSDN记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快&…...

使用langchain与你自己的数据对话(三):检索(Retrieval)
之前我已经完成了使用langchain与你自己的数据对话的前两篇博客,还没有阅读这两篇博客的朋友可以先阅读一下: 使用langchain与你自己的数据对话(一):文档加载与切割使用langchain与你自己的数据对话(二):向量存储与嵌入 今天我们…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
学习一下用鸿蒙DevEco Studio HarmonyOS5实现百度地图
在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 1. 鸿蒙环境准备 开发工具:下载安装 De…...