当前位置: 首页 > news >正文

对传统加密算法降维打击?!——量子计算

量子计算

声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

一、学习方向

1.量子物理学基础

了解量子力学的基本原理,如量子态、叠加态、纠缠等概念,这是理解量子计算

的基础。学习量子力学的数学表达,包括波函数、算符等,以便更好地分析量子计算系统的特性。

2.量子计算原理与技术

掌握量子比特、量子门、量子电路等量子计算的核心概念。

研究不同的量子计算模型,如量子线路模型、绝热量学计算等。

了解量子算法,特别是对传统密码学构成威胁的算法,如 Shor 算法。

3.传统网络安全知识

巩固传统加密算法、哈希函数、数字签名等网络安全技术。

熟悉网络安全架构、访问控制、漏洞管理等方面的知识,以便对比量子计算对传

统安全的影响。

4.量子密码学

学习量子密钥分发(QKD)的原理和技术,掌握其优势和局限性。研究抗量子密码算法,如基于格的密码、基于哈希的密码等。

QKD,即量子密钥分发(Quantum Key Distribution),是一种利用量子力学原理来保证通信安全性的技术。其原理和分发过程可以详细解释如下:

QKD,即量子密钥分发(Quantum Key Distribution),是一种利用量子力学原理来保证通信安全性的技术。其原理和分发过程可以详细解释如下:

QKD的原理

QKD的安全性基于量子力学的基本原理,主要包括海森堡不确定性原理、量子态的叠加性、测量坍缩性以及不可克隆定理等。

  1. 海森堡不确定性原理:该原理指出,无法同时精确测量粒子的位置和动量。在QKD中,这意味着任何试图拦截或窃听量子密钥的企图都会不可避免地扰乱量子态,从而被通信双方检测到。
  2. 量子态的叠加性:量子比特(qubit)可以存在于多种状态的叠加中,与只能为0或1的传统比特不同。这一特性使得QKD能够创建高度随机的密钥,难以被预测或破解。
  3. 测量坍缩性:对量子态进行测量会使其坍缩到某个确定的状态。在QKD中,测量过程不仅揭示了量子态的信息,还改变了它,从而确保了密钥的安全性。
  4. 不可克隆定理:该定理指出,无法创建任意未知量子态的完全相同的副本。这意味着任何试图复制量子密钥的企图都会失败,进一步保证了密钥的安全性。

QKD的分发过程

QKD的分发过程通常涉及以下几个步骤:

  1. 量子态的制备和传输:通信的一方(通常称为发送者Alice)制备一系列量子态,并通过量子信道(如光纤电缆或自由空间)将它们传输给另一方(通常称为接收者Bob)。这些量子态可以代表密钥的各个比特。
  2. 量子态的测量:Bob接收到量子态后,使用随机选择的测量基对其进行测量。测量基的选择应与Alice制备量子态时使用的基相匹配或相关。如果Bob选择了正确的测量基,他将能够准确地测量出量子态所代表的比特值。
  3. 基数的比较和筛选:在传输完所有量子态后,Alice和Bob通过公共经典信道(如无线电或因特网)公开比较他们用于每个量子态的测量基。他们丢弃使用不同基数的测量结果,仅保留使用相同基数的比特作为原始密钥的一部分。
  4. 密钥的生成和处理:经过筛选后,Alice和Bob将剩余的比特组合成原始密钥。然后,他们进一步处理该密钥以消除错误并增强安全性,例如通过错误校正和隐私放大等过程,最终得到可用于安全通信的最终密钥。

QKD的协议

QKD协议是实现QKD分发过程的具体方案,其中最著名的包括BB84协议和E91协议等。

  1. BB84协议:由Bennett和Brassard于1984年提出,是最早描述如何利用光子的偏振态来传输消息的协议之一。在BB84协议中,Alice使用四种可能的极化状态之一的光子来表示密钥的比特值,而Bob则随机选择两种可能的测量基来测量每个光子。通过比较测量基和筛选结果,Alice和Bob能够生成一个安全的密钥。
  2. E91协议:由Artur Ekert于1991年提出,该协议使用纠缠光子对而不是单个光子来生成密钥。在E91协议中,Alice和Bob各自随机测量一对纠缠光子中的一个光子,并利用量子力学预测的测量值之间的相关性来建立共享密钥。此外,E91协议还测试了贝尔不等式以检测窃听者的存在。

综上所述,QKD利用量子力学原理实现了密钥的安全分发和加密通信,为未来的通信安全提供了一种几乎无法破解的方式。随着量子技术的不断发展,QKD有望在更多领域得到广泛应用和推广。

5.量子计算安全政策与法规

了解国内外关干量子计算安全的政策法规,以及行业标准的发展动态。

关注量子计算安全领域的伦理和法律问题。

二、漏洞风险

1.加密算法被破解风险

传统非对称加密算法(如 RSA、ECC)可能被量子计算机上的 Shor 算法快速破解。

RSA加密算法的原理

RSA加密算法是一种公钥加密算法,其原理基于数论中的大整数分解难题,具体涉及欧拉函数、模运算和模反元素等数学概念。以下是RSA加密算法原理的详细解释:

一、密钥生成

  1. 选择大素数:随机选择两个不同的大素数p和q,这两个素数的位数越大,RSA算法的安全性就越高。常用的密钥长度为1024位、2048位和3072位等。
  2. 计算n和φ(n):计算n=p×q,这是公钥和私钥的共同部分。接着计算φ(n)=(p-1)×(q-1),φ(n)是n的欧拉函数值,它表示小于n且与n互质的正整数的个数。
  3. 选择加密指数e:选择一个整数e,满足1<e<φ(n),且e与φ(n)互质。e通常用作公钥的一部分,用于加密数据。
  4. 计算解密指数d:计算一个整数d,使得e×d=1 mod φ(n)。d是私钥的一部分,用于解密数据。由于φ(n)难以计算,因此在已知n和e的情况下,计算d是困难的,这就保证了RSA算法的安全性。

二、加密过程

  1. 明文转换:将明文转换为整数M,且M必须小于n。
  2. 加密计算:使用公钥(n, e)对明文M进行加密,计算密文C=M^e mod n。

三、解密过程

  1. 密文转换:将密文C转换为整数。
  2. 解密计算:使用私钥(n, d)对密文C进行解密,计算明文M=C^d mod n。

四、安全性分析

  1. 大整数分解难度:RSA算法的安全性依赖于大整数因数分解的难度。目前,尽管人们已经能够分解一定位数的大素数,但对于更大的素数,分解仍然非常困难。因此,只要选择合适的素数p和q,RSA算法就可以提供很高的安全性。
  2. 密钥长度:密钥长度越长,RSA算法的安全性越高。但同时,密钥长度也会增加加密和解密的速度和时间。因此,在实际应用中,需要根据所保护信息的敏感程度和攻击者破解所要花费的代价来综合考虑选择合适的密钥长度。

五、应用场景

RSA加密算法广泛应用于网络通信、电子商务、身份认证等领域。例如,在HTTPS、SSH等协议中,RSA算法被用来加密通信过程中的数据;在电子商务中,商家可以使用RSA算法对订单进行数字签名,确保订单的真实性和完整性;在网银等场景中,用户可以使用RSA算法生成一对公私钥,将公钥发送给银行进行数据加密和身份认证。

综上所述,RSA加密算法的原理基于大整数分解难题和欧拉函数等数学概念,通过生成公钥和私钥来实现数据的加密和解密。其安全性依赖于大整数因数分解的难度和密钥长度的选择。在实际应用中,RSA加密算法具有广泛的应用场景和重要的价值。

ECC加密算法的原理

ECC(Elliptic Curve Cryptography)加密算法,即椭圆曲线密码算法,是一种基于椭圆曲线数学理论的公钥加密算法。以下是ECC加密算法的原理详解:

一、椭圆曲线基础

  1. 椭圆曲线定义:椭圆曲线是在一个平面上满足特定方程(如威尔斯特拉斯方程y²=x³+ax+b)的所有点的集合。在密码学中,通常使用的是一个有限域上的椭圆曲线,即曲线上的点数量是有限的。
  2. 椭圆曲线上的点运算:椭圆曲线上的点可以进行加法和倍乘运算,这些运算遵循特定的群法则,包括封闭性、结合律、存在单位元以及每个点有一个逆元等。

二、密钥生成

  1. 选择椭圆曲线:首先,选择一个满足特定数学性质的椭圆曲线作为加密算法的基础,以确保加密算法的安全性。
  2. 选择基点:在椭圆曲线上选择一个基点G,作为生成点。
  3. 生成私钥:选择一个随机数k作为私钥,用于加密和解密数据。
  4. 计算公钥:使用私钥k和基点G,计算公钥P=kG。这里的P是椭圆曲线上的一个点,即公钥。

三、加密过程

  1. 选择随机数:要加密的明文为M,发送方选择一个随机数r。
  2. 计算点R和S:计算点R=rG和S=rP+M,其中+表示椭圆曲线上的点加法。这里的R和S构成了加密后的密文。

四、解密过程

  1. 计算点T:接收方收到加密信息后,使用自己的私钥k计算点T=kR。
  2. 恢复明文:计算M=S-T,即可得到明文。

五、安全性分析

  1. 离散对数问题:ECC的安全性基于椭圆曲线上的离散对数问题,即在有限域上找到一个点的倍数。这个问题相对于整数分解问题更难以攻破,因此ECC在相同安全水平下可以使用更短的密钥长度。
  2. 高效性:ECC算法比传统的RSA算法更为高效,可以使用更短的密钥长度达到相同的加密强度。这使得ECC在资源受限的环境(如移动设备和物联网)中表现出色。

六、应用场景

ECC加密算法在多个领域有广泛应用,包括但不限于:

  1. 移动设备:由于移动设备的资源有限,需要采用密钥长度短、计算量小、加密速度快的加密算法。ECC算法正是满足这些需求的理想选择。
  2. 物联网:物联网设备通常也面临资源受限的问题,ECC算法同样适用于这些场景。
  3. 金融交易:ECC算法在金融交易的安全传输和数字签名方面发挥着重要作用,可以确保交易的真实性和完整性,防止信息被篡改或伪造。
  4. 数字版权管理:ECC算法还可以用于数字版权管理,保护知识产权,防止盗版和侵权。

综上所述,ECC加密算法以其独特的数学原理和高效的性能,在安全性、效率和带宽利用方面提供了显著的优势,并在多个领域得到了广泛应用。

哈希函数可能受到量子计算的攻击,导致碰撞攻击更容易实施。

什么是shor算法

Shor算法是由数学家彼得·肖尔(Peter Shor)在1994年提出的一种量子算法,它主要用于解决整数分解问题,即给定一个整数N,找出它的质因数。这一算法在量子计算机上运作,具有多项式时间复杂度,相较于传统计算机上的因数分解算法(如普通数域筛选法),其速度有了指数级的提升。

算法原理

Shor算法的关键思想是将整数分解问题转化为对函数周期性的测量问题。对于一个需要分解的整数N,算法选择一个随机数a,并计算a的指数模N的函数值,即f(x) = a^x mod N。通过找到f(x)的周期,我们可以得到N的因子。在经典计算机上,要找到函数f(x)的周期通常需要指数时间复杂度,而在量子计算机上,Shor算法可以在多项式时间内找到周期。

算法步骤

  1. 选择需要分解的大整数N,并确定一个在1和N之间的随机数a。
  2. 构建一个量子电路,使用量子寄存器和经典寄存器。量子寄存器用于存储量子态,经典寄存器用于存储测量结果。
  3. 在量子寄存器上初始化两个量子态,一个用于存储控制反射算子的输入,另一个用于存储函数f(x)的输出。
  4. 应用Hadamard变换到输入量子态上,将其变为均匀分布的量子态。
  5. 进行一系列的控制U操作,其中U是函数f(x)的模幂运算算子。每个控制U操作的目的是将输入量子态转化为对应的函数值。
  6. 应用量子傅里叶变换到输入量子态上,获得函数周期的估计值。
  7. 在经典寄存器上测量量子寄存器中的量子态,得到估计的函数周期。
  8. 根据估计的函数周期,进行经典计算来找到N的因子。

算法意义

Shor算法的出现对现有的密码体系产生了深远的影响。由于它能够高效地分解大整数,因此可以破解基于整数分解问题的公开密钥加密方法,如RSA加密算法。这使得量子计算机在密码学领域具有巨大的潜力,同时也对现有密码体系的安全性提出了挑战。

算法挑战

尽管Shor算法在理论上具有重要的意义,但在当前的量子计算机技术下,实现Shor算法仍然面临很大的挑战。由于需要进行大量的量子门操作和测量,对大规模量子系统的要求非常高。此外,当前的量子计算机还面临着误差校正和量子比特的保持时间等问题。因此,尽管Shor算法在理论上是有效的,但在实践中目前还无法得到充分利用。

综上所述,Shor算法是一种具有革命性意义的量子算法,它解决了整数分解这一经典难题,并对现有的密码体系产生了深远的影响。然而,要实现这一算法并充分发挥其潜力,还需要在量子计算机技术方面进行更多的研究和突破。

为什么shor算法会对传统加密算法产生威胁(比如ECC和RSA机密算法)

Shor算法对ECC和RSA的威胁

  1. ECC(椭圆曲线密码算法)
    • ECC的安全性基于椭圆曲线上的离散对数问题。Shor算法能够高效地解决这一问题,从而可能破解ECC加密算法。
    • ECC算法以其较短的密钥长度达到较高的加密强度而著称。然而,在量子计算机面前,这一优势可能不复存在。
  2. RSA(Rivest-Shamir-Adleman加密算法)
    • RSA的安全性基于大整数分解难题。Shor算法同样能够高效地解决这一问题,从而可能破解RSA加密算法。
    • RSA算法在加密和解密过程中需要进行大量的数学运算,因此速度较慢。在量子计算机面前,其安全性将受到严重威胁。

破解难度与量子计算能力

  1. 破解难度:虽然Shor算法能够破解ECC和RSA,但并不意味着这些算法可以轻易地被破解。破解难度取决于量子计算机的计算能力,以及算法所使用的密钥长度。
  2. 量子计算能力:目前,量子计算机的发展仍处于初级阶段,其计算能力还不足以在短时间内破解现有的ECC和RSA加密算法。然而,随着量子计算技术的不断进步,这一威胁将逐渐增大。

应对措施

  1. 研究抗量子加密算法:为了应对量子计算的威胁,人们正在研究新兴的抗量子加密算法,如基于格的加密等。这些算法在量子计算机面前具有更高的安全性。
  2. 加强密钥管理:在现有的加密体系中,加强密钥管理也是提高安全性的重要手段。通过采用更复杂的密钥生成、分发和更新机制,可以降低密钥被破解的风险。
  3. 关注量子计算技术的发展:随着量子计算技术的不断进步,其对于加密算法的威胁将逐渐增大。因此,需要密切关注量子计算技术的发展动态,以便及时采取相应的应对措施。

综上所述,虽然Shor算法对ECC和RSA加密算法构成了潜在的威胁,但并不意味着这些算法可以轻易地被破解。通过加强密钥管理、研究抗量子加密算法以及关注量子计算技术的发展动态等措施,可以有效地应对这一威胁。

2.“现在收获,以后解密”风险

攻重者可能在当前收集加密数据,等待量子计算技术成熟后进行解密。

3.区块链安全风险

量子计算可能破解区块链用户的私钥,威胁加密货币的安全。

4.量子密钥分发风险

量子信道可能受到干扰,影响密钥的生成和传输。

设惫和系统可能存在安全漏洞,被攻击者利用。

5.量子计算系统自身风险

量子计算系统存在错误和噪声问题,可能被攻击者利用来破坏计算过程或获取敏

感信息。

供应链安全风险,硬件设备或软件可能被植入恶意代码。

三、测试方法

1.加密算法测试

使用量子计算模拟器或量子硬件,尝试运行 Shor 算法对传统加密算法进行破解。(现在shor算法对传统加密属于降维打击)

分析不同加密算法在量子计算环境下的安全性,评估其被破解的难度和时间。

2.“现在收获,以后解密”测试

模拟攻击者收集加密数据的场景,分析在未来量子计算技术发展后,这些数据被解密的可能性,研究数据在储和保护策略,以降低“现在收获,以后解密”的风险。

3.区块链安全测试

分析量子计算对区块链的影响,特别是对私钥安全性的威胁。

测试抗量子密码算法在区块链中的应用效果。

4.量子密钥分发测试

对量子信道进行干扰测试,评估其对密钥分发的影响。

检查量子设备和系统的安全性,包括硬件漏洞、软件漏洞等。

5.量子计算系统自身测试

进行错误注入测试,观察量子计算系统在错误和噪声环境下的性能和安全性。

审查量子讦算系统的供应链,确保硬件设备和软件的安全性。

小结

量子计算安全是一个复杂的领域,需要综合运用物理学、计算机科学、密码学等多学科知识进行学习和研究。通过了解漏洞风险并采用适当的测试方法,可以更好的保障量子计算系统的安全。

安全

1.信息收集阶段

目标背景调研:了解目标量子系统所属的机构、其在量子领域或应用中的角色、相关的项目信息等。例如,确定该量子系统适用于科研实验、量子通信网络建设,还是量子计算服务等,以便更好地理解其潜在的价值和可能存在的安全重点。

技术架构分析:研究目标量子系统的技术架构,包括所使用的量子设备类型(如量子计算机的型号、量子通信设备的技术标准等)、系统的拓扑结构、与传统网络的连接方式等。这可以通过查阅相关的技术文档、学术论文,或者与熟悉该系统的人员进行交流来获取信息。

公开信息搜集:利用互联网引擎、学术数据库、专业论坛等渠道,收集与目标量子系统相关的公开信息。可能包括系统的开发者或供应商发布的技术资料、研究团队的学术报告、相关的新闻报道等。这些信息可以帮助渗透测试人员了解系统的基本特性、已公开的漏洞或安全事件,以及可能存在的安全隐患。

2.威胁建模阶段:

识别潜在威胁源:分析可能对量子系统构成威胁的主体,包括外部的黑客组织、竞争对手、恶意研究人员等,以及内部的系统管理员、研发人员等可能存在的误操作或恶意行为。同时,考虑量子计算技术本身可能带来的新的威胁,比如量子算法对传统加密的挑战。

确定攻击路径:根据收集到的信息和对威胁源的分析,确定可能的攻击路径。例如,对于量子通信系统,攻击路径可能包括对量子信道的干扰、对通信设备的物理攻击或软件漏洞利用;对于量子计算系统,可能的攻击路径包括对量子算法的攻击、对控制系统的入侵等。

评估影响程度:对每种可能的攻击路径进行影响评估,确定如果攻击成功,可能对目标量子系统造成的影响,如数据泄露、系统瘫痪、量子密钥被破解等。这将有助于确定渗透测试的重点和优先级。

3.漏洞分析阶段:

设备漏洞扫描:使用专业的漏洞扫描工具,对量子系统中的硬件设备进行扫描,查找可能存在的冬金师洞。例如:检查量子计算机的控制系统、量子通信设备的接口等是否存在已知的漏洞或配置不当的问题。

软件漏洞检测:对于量子系统中运行的软件,包括操作系统、控制软件、通信协议等,进行漏洞检测。可以使用静态代码分析工具、动态漏洞扫描工具等,查找可能存在的代码漏洞、缓冲区溢出、权限管理不当等问题。

量子算法分析:针对量子系统所使用的量子算法,分析基安金性。例如,对于量子密钥分发算法,检查基是否存在被窃听或破解的风险;对于量子计算算法,研究是否存在可能被利用来攻击系统的漏洞。

4.渗透攻击阶段:

漏洞利用尝试:根据发现的漏洞,尝试利用漏洞获取对量子系统的访问权限。例如,如果发现啦一个远程代码执行漏洞,尝试通过发送精心构造的数据包来执行恶意代码,获取系统的控制权。

量子信道干扰:对于量子通信系统,尝试通过干扰量子信道来影响通信的安全性。这可能包括使用的强磁场、强光等方式干扰量子态的传输,或者尝试窃听量子信道中的信息。

社会工程学攻击(也就是社工):利用社会工程学方法,尝试获取量子系统相关人员的信任,获取敏感信息或访问权限。例如,通过发送钓鱼邮件、伪装成技术支持人员等方式,诱使目标人员透露账号密码、系统配置等信息。

5.后渗透攻击阶段:

内部网络探测:在成功获取量子系统的访问权限后,进一步探测系统内部的网络结构,了解系统中其他设备的连接情况和访问权限,以便发现更多的潜在目标。

数据窃取与分析:尝试窃取量子系统中的敏感数据,如量子密钥、实验数据、用户信思等,井对窃取的数据进行岔析,以获取更多的信息和潜在的漏洞。

权限提升与持久化:尝试提升息只在量子系统中的权限,以便获取更高的访问级别和更多的操作权限。同时,采取措施使自己的访问权限持久化,以便在后续的测试中能够继续访问系统。

6.报告阶段:

结果整理与分析:将渗透测试过程中发现的漏洞、攻击路径、获取的信息等进行整理和分析,总结出量子系统存在的安全问题和潜在的风险。

报告撰写:编写详细的渗透测试报告,报告中应包括测试的目标、范围、方法、过程,发现的问题、风险评传以及建议的修复措施等。报告应具有清晰的结构和准确的表述,以便目标机构的管理人员和技术人员能够理解和采取相应的措施

相关文章:

对传统加密算法降维打击?!——量子计算

量子计算 声明&#xff01; 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无…...

什么是Lodash,有什么特点

什么是 Lodash&#xff1f; Lodash 是一个 JavaScript 工具库&#xff0c;提供了一系列实用的函数来处理常见的编程任务&#xff0c;如数组操作、对象操作、字符串处理等。Lodash 由 John-David Dalton 创建&#xff0c;旨在提供一个更全面、更高效的替代方案&#xff0c;以弥…...

Simulink中Model模块的模型保护功能

在开发工作过程中&#xff0c;用户为想要知道供应商的开发能力&#xff0c;想要供应商的模型进行测试。面对如此要求&#xff0c;为了能够尽快拿到定点项目&#xff0c;供应商会选择一小块算法或是模型以黑盒的形式供客户测试。Simulink的Model模块除了具有模块引用的功能之外&…...

【电子通识】LED的一些基础知识

什么是LED LED是被称为"发光二极管"的半导体&#xff0c;名称取至 "Light Emitting Diode" 的首字母。 从爱迪生1879年发明白炽灯后&#xff0c;白炽灯统治了照明一百多年&#xff0c;为世界带来光明。而在21世纪&#xff0c;白炽灯却早已被取代&#xff0…...

React Native 基础

React 的核心概念 定义函数式组件 import组件 要定义一个Cat组件,第一步要使用 import 语句来引入React以及React Native的 Text 组件: import React from react; import { Text } from react-native; 定义函数作为组件 const CatApp = () => {}; 渲染Text组件...

C语言 蓝桥杯某例题解决方案(查找完数)

蓝桥杯原题&#xff1a; 一个数如果恰好等于它的因子之和&#xff0c;这个数就称为“完数”。例如6 1 2 3.编程找出1000以内的所有完数。 这个题没有很大的难点&#xff0c;与我们上一个解决的问题“质因数分解”不同&#xff0c;它不需要判断因数是否是质数&#xff0c;因此…...

【shodan】(三)vnc漏洞利用

shodan基础&#xff08;三&#xff09; 声明&#xff1a;该笔记为up主 泷羽的课程笔记&#xff0c;本节链接指路。 警告&#xff1a;本教程仅作学习用途&#xff0c;若有用于非法行为的&#xff0c;概不负责。 count count命令起到一个统计计数的作用。 用上节的漏洞指纹来试…...

蚁群算法(Ant Colony Optimization, ACO)

简介 蚁群算法&#xff08;Ant Colony Optimization, ACO&#xff09;是一种基于自然启发的优化算法&#xff0c;由意大利学者马可多里戈&#xff08;Marco Dorigo&#xff09;在1992年首次提出。它受自然界中蚂蚁觅食行为的启发&#xff0c;用于解决离散优化问题。 在自然界…...

python可视化将多张图整合到一起(画布)

这周有点事忙着&#xff0c;没时间重温刚结束的Mathurcup数学建模&#xff0c;这两天也是再看了下&#xff0c;论文还是赶紧挺烂的&#xff0c;但比国赛又有进步&#xff08;说起国赛又不得不抱怨了&#xff0c;基本其余省份都发了&#xff0c;但江西......哎&#xff09;。哎&…...

计算机网络socket编程(5)_TCP网络编程实现echo_server

个人主页&#xff1a;C忠实粉丝 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 C忠实粉丝 原创 计算机网络socket编程(5)_TCP网络编程实现echo_server 收录于专栏【计算机网络】 本专栏旨在分享学习计算机网络的一点学习笔记&#xff0c;欢迎大家在评论区交…...

w055基于web的服装生产管理的设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…...

hadoop集群搭建

一、环境准备⼯作&#xff1a; 确保已经按照以下文档安装完毕&#xff1a;虚拟机和远程工具的安装&#xff08;hadoop集群安装01&#xff09;-CSDN博客 Linux设置以及软件的安装(hadoop集群安装02)-CSDN博客 虚拟机的克隆和免密&#xff08;hadoop集群03&#xff09;-CSDN博…...

JVM中TLAB(线程本地分配缓存区)是什么

JVM中TLAB&#xff08;线程本地分配缓存区&#xff09;是什么 简单来说 TLAB&#xff0c;线程本地分配缓存区&#xff0c;是在 Java 堆内存中的一块线程专属的内存区域&#xff0c;每个线程在创建对象时&#xff0c;首先会尝试在自己的 TLAB 区域内分配内存&#xff0c;这样多…...

如何使用 MMPreTrain 框架

如何使用 MMPreTrain 框架进行预训练模型的微调和推理 MMPreTrain 是一个基于 PyTorch 的开源框架&#xff0c;专注于图像分类和其他视觉任务的预训练模型。它提供了丰富的预训练模型和便捷的接口&#xff0c;使得研究人员和开发者可以轻松地进行模型微调和推理。本文将详细介…...

Python的tkinter如何把日志弄进文本框(Text)

当我们用python的Tkinter包给程序设计界面时&#xff0c;在有些时候&#xff0c;我们是希望程序的日志显示在界面上的&#xff0c;因为用户也需要知道程序目前运行到哪一步了&#xff0c;以及程序当前的运行状态是否良好。python的通过print函数打印出来的日志通常显示在后台&a…...

bash笔记

0 $0 是脚本的名称&#xff0c;$# 是传入的参数数量&#xff0c;$1 是第一个参数&#xff0c;$BOOK_ID 是变量BOOK_ID的内容 1 -echo用于在命令窗口输出信息 -$()&#xff1a;是命令替换的语法。$(...) 会执行括号内的命令&#xff0c;并将其输出捕获为一个字符串&#xff…...

嵌入式工程师面试题 - 2024/11/19

欢迎找我进行职业规划&#xff0c;超值的自我投资 -> 嵌入式软件工程师一对一指导 转载请注明来源 1.以下叙述中正确的是&#xff08;&#xff09; A 程序必须包含所有三种基本结构才能成为一种算法 B 我们所写的每条C语句&#xff0c;经过编译最终都将转换成二进制的机器…...

springboot配置https,并使用wss

学习链接 springboot如何将http转https SpringBoot配置HTTPS及开发调试 可借鉴的参考&#xff1a; springboot如何配置ssl支持httpsSpringBoot配置HTTPS及开发调试的操作方法springboot实现的https单向认证和双向认证(java生成证书)SpringBoot配置Https访问的详细步骤Sprin…...

【C语言】连接陷阱探秘(3):形参、实参与返回值

目录 一、形参的 “迷障” 1.1. 定义与功能 1.2. 类型不匹配 1.3. 数量不一致 1.4. 顺序不一致 1.5. 数组形参退化 二、实参的 “暗礁” 2.1. 定义与功能 2.2. 求值顺序 “谜题” 2.3. 悬空指针 “深渊” 三、返回值的 “陷阱” 3.1. 定义与功能 3.2. 陷阱与缺陷 …...

学习笔记030——若依框架中定时任务的使用

定时任务是软件开发中经常使用一个功能。 Java定时任务广泛应用于各种需要定时执行或周期性执行任务的场景&#xff0c;如&#xff1a; 数据备份&#xff1a;定期备份数据库中的数据&#xff0c;确保数据的安全性和可靠性。数据同步&#xff1a;如果有多个数据源需要同步数据…...

基于SpringBoot的数据结构系统设计与实现(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

利用 Python 和 Selenium 高效启动和管理 Chrome 浏览器

在自动化测试和网页抓取的过程中&#xff0c;Selenium 是最常用的工具之一。其强大的功能可以与浏览器无缝集成&#xff0c;实现复杂的操作。然而&#xff0c;为了提高效率和扩展性&#xff0c;尤其在处理大量任务时&#xff0c;我们可以通过定制化的方法启动 Chrome 浏览器并与…...

外卖系统开发实战:从架构设计到代码实现

开发一套外卖系统&#xff0c;需要在架构设计、技术选型以及核心功能开发等方面下功夫。这篇文章将通过代码实例&#xff0c;展示如何构建一个基础的外卖系统&#xff0c;从需求梳理到核心模块的实现&#xff0c;帮助你快速掌握开发要点。 一、系统架构设计 一个完整的外卖系…...

类和对象(上)--类、类的实例化(对象)、this指针

1.类 1.1定位&#xff1a; 和namespace一样&#xff0c;类也有类域。同样起到既保护又限制的功能。别人不能随意访问类里的东西&#xff0c;得通过特定的方式来访问&#xff08;访问方法和命名空间域一样&#xff0c;三种方法&#xff09;。 1.2作用 在C语言中&#xff0c;…...

使用ENSP实现浮动静态路由

一、项目拓扑 二、项目实现 1.路由器AR1配置 进入系统试图 sys将路由器命名为R1 sysname R1关闭信息中心 undo info-center enable 进入g0/0/0接口 int g0/0/0将g0/0/0接口IP地址配置为1.1.1.1/24 ip address 1.1.1.1 24进入g0/0/1接口 int g0/0/1将g0/0/1接口IP地址配置为2.…...

JavaEE 【知识改变命运】02 多线程(1)

文章目录 线程是什么&#xff1f;1.1概念1.1.1 线程是什么&#xff1f;1.1.2 为什么要有线程1.1.3 进程和线程的区别1.1.4 思考&#xff1a;执行一个任务&#xff0c;是不是创建的线程或者越多是不是越好&#xff1f;&#xff08;比如吃包子比赛&#xff09;1.1.5 ) Java 的线程…...

pytorch官方FasterRCNN代码详解

本博文转自捋一捋pytorch官方FasterRCNN代码 - 知乎 (zhihu.com)&#xff0c;增加了其中代码的更详细的解读&#xff0c;以帮助自己理解该代码。 代码理解的参考Faster-RCNN全面解读(手把手带你分析代码实现)---前向传播部分_手把手faster rcnn-CSDN博客 1. 代码结构 作为 to…...

【线程】Java多线程编程

【线程】Java多线程编程 一、前言一个最简单的多线程编程示例可以使用的工具 二、创建线程的方式三、Thread类中重要的属性和方法3.1 构造方法3.2 常见属性 一、前言 当有多个线程的时候&#xff0c;这些线程的执行顺序是不确定的。这一点&#xff0c;是我们之前提到的操作系统…...

4.2 MySQL存储过程

存储过程是MySQL中用于封装一组 SQL 语句的数据库对象&#xff0c;便于简化重复任务、增强性能和逻辑复用。本文将从多个角度详细解析存储过程的功能、语法和应用场景。 1. 存储过程概述 1.1 什么是存储过程 存储过程&#xff08;Stored Procedure&#xff09;是一段在数据库…...

archlinux安装waydroid

目录 参考资料 注意 第一步切换wayland 第二步安装binder核心模组 注意 开始安装 AUR安裝Waydroid 启动waydroid 设置网络&#xff08;正常的可以不看&#xff09; 注册谷歌设备 安装Arm转译器 重启即可 其他 参考资料 https://ivonblog.com/posts/archlinux-way…...

C语言数学函数库<math.h>的常用函数讲解

math函数 一. 基础数学函数1. fabs(double x) — 绝对值2. fmod(double x, double y) — 余数3. pow(double x, double y) — 幂运算4. sqrt(double x) — 平方根5. cbrt(double x) — 立方根6. hypot(double x, double y) — 计算斜边 二. 对数和指数函数1. exp(double x) — …...

Swift 实现判断链表是否存在环:快慢指针法

文章目录 前言摘要描述题解答案题解代码题解代码分析示例测试及结果时间复杂度空间复杂度总结关于我们 前言 本题由于没有合适答案为以往遗留问题&#xff0c;最近有时间将以往遗留问题一一完善。 LeetCode - #141 环形链表 不积跬步&#xff0c;无以至千里&#xff1b;不积小流…...

借助算力云跑模型

算力平台&#xff1a;FunHPC | 算力简单易用 AI乐趣丛生 该文章只讲述了最基本的使用步骤&#xff08;因为我也不熟练&#xff09;。 【注】&#xff1a;进入平台&#xff0c;注册登录账号后&#xff0c;才能租用。学生认证&#xff0b;实名认证会有免费的算力资源&#xff0…...

Python 版本的 2024详细代码

2048游戏的Python实现 概述&#xff1a; 2048是一款流行的单人益智游戏&#xff0c;玩家通过滑动数字瓷砖来合并相同的数字&#xff0c;目标是合成2048这个数字。本文将介绍如何使用Python和Pygame库实现2048游戏的基本功能&#xff0c;包括游戏逻辑、界面绘制和用户交互。 主…...

Homebrew切换成国内源

将 Homebrew 切换成国内的源可以显著提高软件包的下载速度。以下是详细步骤&#xff0c;帮助你将 Homebrew 的主仓库和核心仓库切换到国内镜像源。这里以中国科学技术大学&#xff08;USTC&#xff09;的镜像源为例&#xff0c;其他镜像源的切换方法类似。 切换 Homebrew 主仓…...

《Shader 入门精要》学习笔记 茵蒂克丝

渲染流水线 《UnityShader入门精要》学习1_cpu设置渲染状态是什么-CSDN博客 UnityShader 基础 《UnityShader入门精要》学习2_unityshader入门精要2-CSDN博客 学习Shader需要的数学基础 《UnityShader入门精要》学习3_透视投影到-1到1空间-CSDN博客 实现一个简单的顶点/…...

小苯吃糖果

一、题目 二、代码——解析 1、3种情况&#xff0c;第一种&#xff1a;他们都相等&#xff1b;第二种&#xff1a;前大后&#xff1b;第三种&#xff1a;后大前 2、转换成列表&#xff0c;使用列表方法进行升序 x,y,z map(int,input().split()) a [x,y,z] a.sort() if a[0…...

Docker+Nginx | Docker(Nginx) + Docker(fastapi)反向代理

在DockerHub搜 nginx&#xff0c;第一个就是官方镜像库&#xff0c;这里使用1.27.2版本演示 1.下载镜像 docker pull nginx:1.27.2 2.测试运行 docker run --name nginx -p 9090:80 -d nginx:1.27.2 这里绑定了宿主机的9090端口&#xff0c;只要访问宿主机的9090端口&#…...

开发工具 - VSCode 快捷键

以下是一些常用的 VS Code 快捷键&#xff08;Windows、macOS 和 Linux 均适用&#xff0c;略有不同&#xff09;&#xff1a; 常用快捷键 功能Windows/LinuxmacOS打开命令面板Ctrl Shift P 或 F1Cmd Shift P打开文件Ctrl OCmd O保存文件Ctrl SCmd S全部保存Ctrl K,…...

session理解

一、术语session   session&#xff1a;中文经常翻译为 ‘会话’&#xff0c;其本来的含义是指有始有终的一系列动作/消息&#xff0c;比如&#xff1a;打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称为一个session。在阅读技术书籍时我们可能会看到这样的话“在…...

linux服务器中tomcat应用使用root用户启动之后再使用普通用户启动后无法启动问题解决

参考一 参考二 修改用户名用户组为普通用户 在Linux中&#xff0c;您可以使用chown命令修改文件夹的所有者&#xff08;用户名&#xff09;&#xff0c;使用chgrp命令修改文件夹的所属组&#xff08;用户组&#xff09;。还可以使用chown命令同时修改所有者和所属组。 例如&…...

非线性控制器设计原理

非线性控制器设计原理 非线性控制器设计旨在解决非线性系统的控制问题&#xff0c;克服传统线性控制器在处理非线性现象&#xff08;如饱和、死区、耦合、时变性等&#xff09;时的不足。其核心在于利用非线性数学工具和设计方法&#xff0c;使控制系统在非线性条件下具备良好…...

【CSS3】Flex弹性布局

文章目录 前言一、基本概念1.容器和项目&#xff1a;2.主轴和交叉轴&#xff1a; 二、容器属性1.flex-direction&#xff1a;决定主轴的方向&#xff0c;即x轴还是y轴2.flex-wrap&#xff1a;定义项目的换行方式3.flex-flow&#xff1a;flex-direction属性和flex-wrap属性的简写…...

Ubuntu24.04LTS设置root用户可远程登录

Ubuntu24.04LTS设置root用户可远程登录 文章目录 Ubuntu24.04LTS设置root用户可远程登录1. 设置root密码2. 设置root用户可远程登录1. 查看ssh服务是否安装2. 安装ssh服务3. 再次查看ssh服务是否安装4. 配置ssh文件5. 重启ssh服务6. root远程登录 1. 设置root密码 Ubuntu安装后…...

【计算机网络】数据链路层

跨网络传输的本质&#xff1a;由许多局域网(子网)转发的结果 要彻底理解跨网络转发&#xff0c;首先要理解 -> 局域网中报文的转发原理&#xff01; ​​​​​​​ 一、以太网帧格式 1.报头的含义 源地址/目的地址&#xff1a;源MAC地址和目的MAC地址 帧协议类型&…...

SciPy库spatial.transform模块Rotation类的from_rotvec 函数介绍

SciPy 库的 spatial.transform 模块 Rotation 类 是一个工具类&#xff0c;用于在多种旋转表示形式&#xff08;例如旋转矩阵、四元数、旋转向量、欧拉角等&#xff09;之间进行转换&#xff0c;以及执行旋转操作。 示例代码 1. 构造旋转对象 from scipy.spatial.transform …...

递归-迭代

24. 两两交换链表中的节点 Leetcode 24 给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。 递归解法 // 注意&#xff1a;cpp …...

Arcpy 多线程批量重采样脚本

Arcpy 多线程批量重采样脚本 import arcpy import os import multiprocessingdef resample_tifs(input_folder, output_folder, cell_size0.05, resampling_type"BILINEAR"):"""将指定文件夹下的所有 TIFF 文件重采样到指定分辨率&#xff0c;并输出…...

使用bcc/memleak定位C/C++应用的内存泄露问题

C/C应用的内存泄露 在笔者之前的一篇文章中&#xff0c;提到了通过每隔一段时间抓取应用的/proc/XXX/maps文件对比得到进程的内存增长区域&#xff0c;然后调用gdb调试工具的dump binary memory命令将增长的内存&#xff08;即对应着泄露的内存数据&#xff09;导出到文件&…...

前端和后端

前端和后端 前端、后端的编程语言/服务器前端定义前端技术栈后端定义后端技术栈 web服务器数据库浏览器URL 前端、后端的编程语言/服务器 前端定义 前端指的是用户在使用软件时所看到的那部分&#xff0c;是与用户直接进行交互的部分。主要负责展示信息或数据&#xff0c;并将…...