【计算机网络】HTTPS协议原理
文章目录
- 一、认识HTTPS协议
- 二、为什么要发明HTTPS
- 三、HTTP与HTTPS的区别
- 四、常见的加密方式
- 1. 对称加密
- 2. 非对称加密
- 3. 数据摘要
- 4. 数字签名
- 五、HTTPS的原理探究
- 方案1:只使用对称加密
- 方案2:只使用非对称加密
- 方案3:双方都使用非对称加密
- 方案4:非对称加密 + 对称加密
- 引入证书
- 方案5:非对称加密 + 对称加密 + 证书认证
- 总结
一、认识HTTPS协议
HTTPS背景:
HTTPS是由网景公司(Netscape)于1994年发明的。在当时,网络刚刚兴起,人们开始使用互联网进行各种通信和交易,但是网络安全问题也随之成为人们关注的焦点。网景公司的工程师们在HTTP协议的基础上开发了SSL(Secure Sockets Layer)协议,通过在传输层对数据进行加密,从而保障网络传输的安全性。
后来,SSL协议逐渐得到了广泛的应用和推广,并在1999年被标准化为TLS(Transport Layer Security)协议。TLS协议是SSL的升级版,具有更高的安全性和可扩展性,被广泛应用于Web浏览器和Web服务器之间的数据传输,以确保网络通信的安全和隐私。
尽管网景公司在1998年被AOL收购,但HTTPS协议仍然被广泛应用于现代互联网中,成为了保护网络通信安全的标准协议。
HTTPS协议:
HTTPS是一种用于保护互联网通信安全的协议,全称为超文本传输安全协议(Hypertext Transfer Protocol Secure)。它是基于HTTP协议的加密传输协议,通过在传输数据之前使用加密算法(利用 SSL/TLS
来加密数据包)对数据进行加密,以确保通信的安全性。
HTTPS协议的加密过程主要分为三个步骤:握手、加密和身份验证。具体步骤如下:
-
握手阶段:客户端向服务器发起HTTPS连接请求,服务器会向客户端发送数字证书和公钥,客户端会验证证书的有效性,如果证书通过验证,客户端就生成一个随机数,使用服务器的公钥对其进行加密,然后将加密后的随机数发送给服务器。
-
加密阶段:服务器使用私钥解密客户端发送过来的随机数,然后使用这个随机数生成对称密钥,再将对称密钥用客户端的公钥进行加密,发送给客户端。客户端使用私钥解密服务器发送过来的对称密钥,然后使用这个密钥对所有传输的数据进行加密。
-
身份验证阶段:在握手阶段,客户端会验证服务器的数字证书,以确认连接的安全性。而服务器也可以要求客户端进行身份验证,以确认客户端的身份。
使用HTTPS协议可以有效地保护网站的访问安全性,防止数据被窃听、篡改、伪造等问题。对于一些需要保密性的数据交互,例如金融交易、个人账户信息等,使用HTTPS协议进行加密传输是非常必要的。
二、为什么要发明HTTPS
HTTPS的发明主要是为了解决HTTP协议的安全问题。
因为HTTP协议是一种基于文本的协议,所有传输的数据都是明文传输,因此容易被黑客截获并窃取敏感信息。例如,当用户在浏览器中输
入用户名和密码时,这些信息就以明文形式在网络上传输,黑客可以通过截获这些数据来获取用户的敏感信息。
HTTPS通过在HTTP协议的基础上增加了加密传输的功能,将传输的数据进行加密,从而保证通信的安全性。这使得HTTPS协议可以有效地保护网站的访问安全性,防止数据被窃听、篡改、伪造等问题。
此外,随着网络的发展和应用场景的不断拓展,越来越多的网站需要进行身份验证和身份认证。HTTPS协议通过数字证书的方式,可以对服务器和客户端进行身份验证,防止恶意用户伪造网站,从而保护用户的隐私和财产安全。
因此,HTTPS协议的发明是为了保障网络通信的安全和隐私,保护用户敏感信息不被窃取、篡改和伪造,使用户能够更加安全地浏览网页和进行网上交易。
三、HTTP与HTTPS的区别
HTTP(HyperText Transfer Protocol)是一种基于文本的协议,用于在Web浏览器和Web服务器之间传输数据,它的数据传输是明文传输,不提供加密和安全保障。而HTTPS(HyperText Transfer Protocol Secure)是HTTP协议的安全版本,提供了加密和身份认证的功能。
以下是HTTP和HTTPS之间的主要区别:
-
数据传输安全性
HTTP传输的数据是明文传输的,容易被黑客截获并窃取敏感信息。而HTTPS在HTTP的基础上增加了加密传输的功能,将传输的数据进行加密,从而保证通信的安全性。 -
传输协议
HTTP是基于TCP/IP协议进行通信的,而HTTPS在HTTP的基础上加入了SSL/TLS协议进行加密,以保证数据传输的安全性。 -
端口号
HTTP默认使用80端口进行传输,而HTTPS默认使用443端口进行传输。 -
证书和身份认证
HTTPS使用数字证书进行身份验证和身份认证,确保客户端和服务器的安全连接。而HTTP不需要进行身份验证和身份认证,容易被攻击者伪装。 -
性能
由于加密和身份验证的额外开销,HTTPS相对于HTTP会增加一些网络负载和延迟,因此会有一定的性能损失。
综上所述,HTTPS相比于HTTP具有更高的安全性和可信度,但会增加一定的性能开销。因此,对于需要保护用户隐私和数据安全的网站,应该采用HTTPS协议来确保通信的安全性。
四、常见的加密方式
1. 对称加密
采⽤单钥密码系统的加密⽅法,同⼀个密钥可以同时⽤作信息的加密和解密,这种加密⽅法称为对称加密,也称为单密钥加密。其特征是:加密和解密所⽤的密钥是相同的。
最常见的对称算法包括AES(Advanced Encryption Standard)、DES(Data Encryption Standard)和3DES(Triple Data Encryption Algorithm)。
对称加密的特点:
- 算法公开、计算量⼩、加密速度快、加密效率⾼。
对称加密其实就是通过同⼀个 “密钥”,把明文加密成密文,并且也能把密文解密成明文。例如一个简单的对称加密:按位异或。
假设明文:a = 1234,密钥:key = 8888。
则加密 a ^ key 得到的密文b为9834。
然后针对密文 9834 再次进行运算 b ^ key,得到的就是原来的明文 1234。
对于字符串的对称加密也是同理,每⼀个字符都可以表示成⼀个数字。
当然,按位异或只是最简单的对称加密,而HTTPS中并不是使用按位异或来进行加密。
2. 非对称加密
非对称加密需要两个密钥来进⾏加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。
常见的非对称加密算法包括RSA(Rivest-Shamir-Adleman)、DSA(Digital Signature Algorithm)和ECC(Elliptic Curve Cryptography)。
非对称加密的特点:
- 算法强度复杂、安全性依赖于算法与密钥。但是由于其算法复杂,使得加密解密速度没有对称加密解密的速度快。
公钥和私钥是配对的,最大的缺点就是运算速度非常慢,比对称加密要慢很多。一般加密和解密方式如下:
- 通过公钥对明文加密,变成密文
- 通过私钥对密文解密,变成明文
也可以反着使用:
- 通过私钥对明文加密,变成密文
- 通过公钥对密文解密,变成明文
3. 数据摘要
数据摘要(Data digest),也称为哈希值(Hash),是指将任意长度的数据通过一个特定的算法,转化成固定长度的数字或字母序列。摘要值通常具有以下特点:
-
输入数据的任意微小变化都会导致输出结果的明显差异。
-
输入数据相同,生成的摘要值也必定相同。
-
摘要值是不可逆的,无法通过摘要值推算出原始数据,通常用来进行数据对比判断数据有没有被窜改。
摘要常见算法包括MD5、SHA-1、SHA-2等。需要注意的是,由于摘要值是固定长度的,因此无论输入数据有多长,摘要值的长度总是相同的。这意味着在输入数据较大时,可能会发生哈希碰撞(Hash collision),即两个不同的输入数据生成了相同的摘要值,因此在使用哈希算法时需要注意这种风险。
4. 数字签名
数字签名(Digital Signature)是指利用公钥密码学技术对数字信息进行签名,以证明信息的完整性、来源和不可抵赖性。数字签名通常包括两个过程:签名和验证。
在签名过程中,发送方使用私钥对原始数据进行加密,生成数字签名。数字签名可以证明发送方对原始数据进行了签名,并且保证数据的完整性和不可抵赖性。在验证过程中,接收方使用发送方的公钥对数字签名进行解密,以验证数字签名的真实性和完整性。
数字签名的主要作用是确保数字信息的可靠性和安全性。它可以防止信息被篡改、冒充和否认,同时也能确保信息的来源和完整性。数字签名技术在电子商务、电子政务、网络支付和数字版权保护等领域得到了广泛的应用。
常用的数字签名算法包括RSA、DSA、ECDSA等。其中,RSA是最常用的数字签名算法之一,它使用公钥加密、私钥解密的方式对数字信息进行签名和验证。DSA和ECDSA则是基于椭圆曲线密码学的数字签名算法,具有更高的安全性和更短的密钥长度。
五、HTTPS的原理探究
方案1:只使用对称加密
如果通信双方都各自持有同⼀个密钥X,且没有别人知道,这两方的通信安全当然是可以被保证的(除非密钥被破解)。
引入对称加密之后,即使数据被截获,由于黑客不知道密钥是啥,因此就无法进行解密,也就不知道请求的真实内容。
但事情没这么简单。服务器同一时刻其实是给很多客户端提供服务的。这么多客户端,每个的秘钥都必须是不同的(如果是相同那密钥就太容易扩散了,黑客就也能轻易拿到)。因此服务器就需要维护每个客户端和每个密钥之间的关联关系,这也是个很麻烦的事情。
比较理想的做法就是能在客户端和服务器建立连接的时候,双方协商确定这次的密钥:
但是如果直接把密钥明文传输,那么⿊客也就能获得密钥了,此时后续的加密操作就形同虚设。因此密钥的传输也必须加密传输,但是要想对密钥进行对称加密,就仍然需要先协商确定⼀个 “密钥的密钥”,这就成了 “先有鸡还是先有蛋” 的问题了。此时密钥的传输再用对称加密就行不通了。
方案2:只使用非对称加密
鉴于非对称加密的机制,如果服务器先把公钥以明文方式传输给浏览器,之后浏览器向服务器传数据前都先用这个公钥加密好再传,从客户端到服务器信道似乎是安全的,因为只有服务器有相应的私钥能解开公钥加密的数据。
但是服务器到浏览器的这条路怎么保障安全?
如果服务器用它的私钥加密数据传给浏览器,那么浏览器用公钥可以解密它,而这个公钥是⼀开始通过明文传输给浏览器的,若这个公钥被中间人劫持到了,那他也能用该公钥解密服务器传来的信息了,因此只使用非对称加密也是行不通的。
方案3:双方都使用非对称加密
例如:
- 服务端拥有公钥S与对应的私钥S’,客户端拥有公钥C与对应的私钥C’ 。
- 然后客户端和服务端交换公钥。
- 客户端给服务端发信息:先用S对数据加密,再发送,此数据只能由服务器解密,因为只有服务器有私钥S’ 。
- 服务端给客⼾端发信息:先用C对数据加密,在发送,此数据只能由客户端解密,因为只有客户端有私钥C’ 。
这样的加密方式看似行得通,但是别忘了非对称加密最大的缺点就是运算速度非常慢,因此效率会非常低,并且也会存在安全问题。
例如中间人在双方建立连接一开始就截取了服务端发送给客户端的公钥,然后替换成自己的公钥,因此客户端就会误以为是服务端的公钥,导致此后双方通信的数据被破解。
方案4:非对称加密 + 对称加密
这样的加密方式可以解决效率问题:
- 服务端具有非对称公钥S和私钥S’ 。
- 客户端发起HTTPS请求,获取服务端公钥S。
- 客户端在本地生成对称密钥C,通过公钥S加密,发送给服务器。
- 由于中间的网络设备没有私钥,即使截获了数据,也无法还原出内部的原文,也就无法获取到对称密钥(理论上如此)。
- 服务器通过私钥S’解密,还原出客户端发送的对称密钥C,并且使用这个对称密钥加密给客户端返回的响应数据。
- 后续客户端和服务器的通信都只用对称加密即可。由于该密钥只有客户端和服务器两个主机知道,其他主机不知道密钥即使截获数据也没有意义。
由于对称加密的效率比非对称加密高很多,因此只是在开始阶段协商密钥的时候使用非对称加密,后续的传输仍然使用对称加密。
虽然上面的加密方式已经比较接近实际原理了,但是依旧有安全问题。因为方案2、方案3、方案4都存在⼀个共同的问题:那就是如果最开始建立连接的时候,中间人(Man-in-the-MiddleAttack,简称“MITM攻击”。)就已经开始攻击了呢?
中间人攻击:针对上面的场景:
在方案 2/3/4 中,客户端获取到公钥S之后,对客户端形成的对称秘钥X用服务端给客户端的公钥S进行加密,中间⼈即使窃取到了数据,此时中间⼈确实无法解出客⼾端形成的密钥X,因为只有服务器有私钥S’。但是中间人的攻击,如果在最开始握手协商的时候就进行了,那就不⼀定了,假设hacker已经成功成为中间人:
- 服务器具有非对称加密算法的公钥S,私钥S’。
- 中间人具有非对称加密算法的公钥M,私钥M’。
- 客户端向服务器发起请求,服务器明文传送公钥S给客户端。
- 中间人劫持数据报文,提取公钥S并保存好,然后将被劫持报文中的公钥S替换成为自己的公钥M,并将伪造报文发给客户端。
- 客户端收到报文,提取公钥M(自己当然不知道公钥被更换过了),形成对称秘钥X,用公钥M加密X,形成报文发送给服务器。
- 中间人劫持后,直接用自己的私钥M’进行解密,得到通信秘钥X,再用曾经保存的服务端公钥S加密后,将报文推送给服务器。
- 服务器拿到报文,用自己的私钥S’解密,得到通信秘钥X。
- 双方开始采用X进行对称加密,进⾏通信。但是⼀切都在中间⼈的掌握中,劫持数据,进行窃听甚至修改数据,都是可以的。
上⾯的攻击方案,同样适用于方案2和方案3。其问题的本质就是:客户端无法确定收到的含有公钥的数据报⽂,就是目标服务器发送过来的!
引入证书
CA认证:
CA证书(Certificate Authority Certificate)是一种数字证书,由认证机构(Certificate Authority,简称CA)颁发给其它数字证书。它是一种用于身份验证和加密通信的工具,用于确保网络通信的机密性、完整性和可信性。
CA是一个第三方机构,其任务是验证证书申请人的身份,并为该申请人颁发数字证书。数字证书中包含了证书申请人的公钥、CA的公钥以及其他相关信息,包括证书有效期和用途等。
当一个用户在浏览器中访问一个使用了数字证书保护的网站时,浏览器会验证该网站的数字证书是否由已知和可信任的CA颁发,并且证书是否已被撤销。如果验证成功,浏览器将建立一个安全的加密连接,确保所有通信都是加密的、完整的和安全的。
这个 证书 可以理解成是⼀个结构化的字符串,里面包含了以下信息:
- 证书发布机构
- 证书有效期
- 公钥
- 证书所有者
- 签名
- 服务器的基本信息
- …
需要注意的是:申请证书的时候,需要在特定平台生成,才会同时生成一对公钥和私钥。这对密钥就是用来在网络通信中进行明文加密以及数据签名的。其中公钥会随着CSR文件,⼀起发给CA进行权威认证,私钥服务端自己保留,用来后续进行通信(其实主要就是用来交换对称秘钥)。
例如下列流程:
当服务端申请CA证书的时候,CA机构会对该服务端进行审核,并专门为该网站形成数字签名,过程如下:
- CA机构拥有非对称加密的私钥A和公钥A’。
- CA机构对服务端申请的证书明文数据进行Hash,形成数据摘要。
- 然后对数据摘要用CA私钥A’加密,得到数字签名。
服务端申请的证书明文和数字签名S,共同组成了数字证书,这样一份数字证书就可以颁发给服务器了。
方案5:非对称加密 + 对称加密 + 证书认证
在客户端和服务器刚⼀建⽴连接的时候,服务器给客户端返回⼀个证书,其中包含了之前服务端的公
钥,也包含了网站的身份信息。
客户端进行认证:
当客户端获取到这个证书之后,会对证书进行以下校验,以防止证书是伪造的。
- 判定证书的有效期是否过期。
- 判定证书的发布机构是否受信任,现在操作系统中已内置的受信任的证书发布机构。
- 验证证书是否被篡改:从系统中拿到该证书发布机构的公钥,对签名解密,得到⼀个hash值(称为数据摘要),设为hash1。然后计算整个证书的hash值,设为hash2。对比hash1和hash2是否相等。如果相等,则说明证书是没有被篡改过的。
中间人有没有可能篡改该证书?
- 假如中间人篡改了证书的明文。
- 由于他没有CA机构的私钥,所以⽆法hash之后⽤私钥加密形成签名,那么也就没法办法对篡改后
的证书形成匹配的签名 - 如果强行篡改,客户端收到该证书后会发现明文和签名解密后的值不一致,则说明证书已被篡改,证书不可信,从而终止向服务器传输信息,防止信息泄露给中间人。
如果中间整个掉包证书?
- 因为中间人没有CA私钥,所以无法制作假的证书。
- 所以中间人只能向CA申请真证书,然后用自己申请的证书进行掉包。
- 这个确实能做到证书的整体掉包,但是别忘记,证书明文中包含了域名等服务端认证信息,如果整体掉包,客户端依旧能够识别出来。
- 因为中间人没有CA私钥,所以对任何证书都无法进行合法修改,包括自己的证书。
使用HTTPS进行通信的完整流程:
总结
HTTPS工作过程中涉及到的密钥有三组:
- 第一组(非对称加密):用于校验证书是否被篡改。服务器持有私钥(私钥在形成CSR文件与申请证书时获得),客⼾端持有公钥(操作系统包含了可信任的CA认证机构有哪些,同时持有对应的公钥)。服务器在客户端请求是,返回携带签名的证书。客户端通过这个公钥进行证书验证,保证证书的合法性,进⼀步保证证书中携带的服务端公钥权威性。
- 第二组(非对称加密):用于协商⽣成对称加密的密钥。客户端用收到的CA证书中的公钥(是可被信任的)给随机生成的对称加密的密钥加密,传输给服务器,服务器通过私钥解密获取到对称加密密钥。
- 第三组(对称加密):客户端和服务器后续传输的数据都通过这个对称密钥加密解密。
其实⼀切的关键都是围绕这个对称加密的密钥,其他的机制也都是辅助这个密钥进行工作的。
- 第二组非对称加密的密钥是为了让客户端把这个对称密钥传给服务器。
- 第一组非对称加密的密钥是为了让客户端拿到第二组非对称加密的公钥。
相关文章:
【计算机网络】HTTPS协议原理
文章目录一、认识HTTPS协议二、为什么要发明HTTPS三、HTTP与HTTPS的区别四、常见的加密方式1. 对称加密2. 非对称加密3. 数据摘要4. 数字签名五、HTTPS的原理探究方案1:只使用对称加密方案2:只使用非对称加密方案3:双方都使用非对称加密方案4…...
21岁,华科博士在读,我的赛事Top经验
Datawhale干货 作者:vaew,华中科技大学,博士二年级在读简介笔者vaew,21岁,现为华中科技大学机械科学与工程学院陶波教授课题组博士二年级学生。主要研究方向是基于视触融合的机器人灵巧操作。学业之余的研究兴趣包括图…...
基于ThinkPHP6.0+Vue+uni-app的多商户商城系统好用吗?
likeshop多商户商城系统适用于B2B2C、多商户、商家入驻、平台商城场景。完美契合平台自营联营加盟等多种经营方式使用,系统拥有丰富的营销玩法,强大的分销能力,支持官方旗舰店,商家入驻,平台抽佣商家独立结算ÿ…...
Linux中断
文章目录 前言一、Linux 中断介绍二、中断上文和中断下文三、中断相关函数1 获取中断号相关函数2.申请中断3.释放中断4.中断处理函数四.中断下文之 tasklet1.概念2.Linux 内核中的 tasklet 结构体:3.使用步骤4.相关函数a.初始化 tasklet结构体b.调度 taskletc.杀死 tasklet总结…...
Excel+SQL实战项目 - 餐饮业日销售情况分析仪
目录1、要完成的任务2、认识数据3、SQL数据加工4、excel形成分析仪1、要完成的任务 目标:结合SQL和excel实现餐饮业日销售情况分析仪,如下表: 认识分析仪: 切片器:店面 分为四部分:KPI 、组合图、饼图、数…...
电商导购CPS,京东联盟如何跟单实现用户和订单绑定
前言 大家好,我是小悟 做过自媒体的小伙伴都知道,不管是发图文还是发短视频,直播也好,可以带货。在你的内容里面挂上商品,你自己都不需要囤货,如果用户通过这个商品下单成交了,自媒体平台就会…...
Redis学习【6】之BitMap、HyperLogLog、Geospatial操作命令 (1)
文章目录前言BitMap 操作命令1.1 BitMap 简介1.2 setbit1.3 getbit1.4 bitcount1.5 bitpos[pos:position]1.6 bitop1.7 应用场景二 HyperLogLog 操作命令2.1 HyperLogLog 简介2.2 pfadd2.3 pfcount2.4 pfmerge2.5 应用场景三 Geospatial【地理空间】操作命令3. 1 Geospatial 简…...
JAVA实现心跳检测【长连接】
文章目录1、心跳机制简介2、心跳机制实现方式3、客户端4 、服务端5、代码实现5.1 KeepAlive.java5.2 MyClient.java5.3 MyServer5.4 测试结果1、心跳机制简介 在分布式系统中,分布在不同主机上的节点需要检测其他节点的状态,如服务器节点需要检测从节点…...
python3.9安装和pandas安装踩坑处理
0、先决条件:系统内最好先安装有gcc、libffi-devel等 1、安装包下载 https://www.python.org/downloads/source/ 2、解压安装包并上传到/usr/local/python3.9 3、打开shell cd /usr/local/python3.9要先把python3.9的所有文件复制到/usr/local/python3.9才会成功…...
2023.2.15每日一题——867. 转置矩阵
每日一题题目描述解题核心解法一:二维表示 模拟解法二:一维表示 模拟题目描述 题目链接:867. 转置矩阵 给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。 矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵…...
【人脸识别】Partial-FC:让你在一台机器上训练1000万个id人脸数据集成为可能!
论文题目:”Killing Two Birds with One Stone: Efficient and Robust Training of Face Recognition CNNs by Partial FC“ -CVPR 2022 代码地址:https://arxiv.org/pdf/2203.15565.pdf 代码地址:https://github.com/deepinsight/insightfac…...
递归方法读取任意深度的 JSON 对象的键值
有以下json字符串 {"name":"John","age":30,"address":{"city":"New York","state":"NY","zip":"10001","coordinates":{"latitude":40.712776,&q…...
黑马redis学习记录:分布式锁
一、基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。 分布式锁的核心思想就是让大家都使用同一把锁,只要大家使用的是同一把锁,那么我们就能锁住线程,不让线程进行,让程序串行…...
对React-Fiber的理解,它解决了什么问题?
对React-Fiber的理解,它解决了什么问题?Fiber用来解决什么问题?Fiber是什么?Fiber是如何解决问题的?Fiber用来解决什么问题? JavaScript引擎和页面渲染引擎两个线程是互斥的,当其中一个线程执行…...
【Linux】初学Linux你需要掌握这些基本指令(二)
目录 1.man指令 2.cp指令 3.mv指令 4.tree指令 5.echo指令 6.more指令 7.less指令(重要) 8.head与tail指令 9.date指令 显示时间常用参数: 设置时间常用参数: 10.cal指令 11.find & whereis & which指令 …...
Linux中VI/VIM 编辑器
1、概述所有Linux系统都会内置vi文本编辑器vim是vi的升级版,可以主动以字体颜色分辨语法的正确性,代码补完和编译,错误跳转等功能。2、vi和vim的三种模式基本上 vi/vim 共分为三种模式,分别是一般模式、编辑模式、命令模式2.1、一…...
PDF怎么转换成Word?两种PDF免费转Word方法推荐
不知道你们有没有发现,我们在网上下载的很多资料都是PDF格式的,尽管PDF文件也可以通过专门的PDF编辑器来编辑,但是PDF文档作为版式文档,编辑起来还是存在很多局限性,所有当我们需要大量编辑修改文档的时候,…...
极兔一面:Dockerfile如何优化?注意:千万不要只说减少层数
说在前面 在40岁老架构师 尼恩的读者交流群(50)中,面试题是一个非常、非常高频的交流话题。 最近,有小伙伴面试极兔时,遇到一个面试题: 如果优化 Dockerfile? 小伙伴没有回答好,只是提到了减少镜像层数。…...
SpringBoot+Vue实现酒店客房管理系统
文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7/8.0 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包:Maven3.3.9 浏…...
自适应多因素认证:构建不可破解的企业安全防线|身份云研究院
打开本文意味着你理解信息安全的重要性,并且希望获取行业最佳实践来保护你所在组织的信息安全。本文将带你了解多因素认证(MFA:Multi-Factor-Authentication)对于企业信息安全的重要性以及实施方法。 多因素认证(MFA&…...
阶段二8_集合ArrayList_学生管理系统_详细步骤
一.学生管理系统案例 1.需求: 针对目前我们的所学内容,完成一个综合案例:学生管理系统! 该系统主要功能如下: 1.添加学生:通过键盘录入学生信息,添加到集合中 2.删除学生:通过键盘录…...
一篇解决Linux 中的负载高低和 CPU 开销并不完全对应
负载是查看 Linux 服务器运行状态时很常用的一个性能指标。在观察线上服务器运行状况的时候,我们也是经常把负载找出来看一看。在线上请求压力过大的时候,经常是也伴随着负载的飙高。 但是负载的原理你真的理解了吗?我来列举几个问题&#x…...
关于IDM下载器,提示:一个假冒的序列号被用来注册……idea项目文件路径报红
关于IDM下载器,提示:一个假冒的序列号被用来注册……到C:\Windows\System32\drivers\etc 修改目录下面的hosts文件(如果没有修改的权限就右键属性hosts文件修改user的权限为完全控制),在hosts里面增加以下内容…...
JVM - 高效并发
目录 Java内存模型和内存间的交互操作 Java内存模型 内存间的交互操作 内存间交互操作的规则 volatile特性 多线程中的可见性 volatile 指令重排原理和规则 指令重排 指令重排的基本规则 多线程中的有序性 线程安全处理 锁优化 锁优化之自旋锁与自适应自旋 锁优…...
中小学智慧校园电子班牌系统源码 Saas云平台模式
智慧电子班牌区别于传统电子班牌,智慧校园电子班牌系统更加注重老师和学生的沟通交流和及时数据交互。学校为每个教室配置一台智能电子班牌,一般安装于教室门口,用来实时显示学校通知、班级通知,可设置集中分布式管理,…...
记录一次服务器被攻击的经历
突然收到阿里云发过来的异常登陆的信息: 于是,急忙打开电脑查看对应的ECS服务器的记录: 发现服务器的cpu占用率异常飙升,所以可以大概断定服务器已经被非法入侵了。 通过自己的账号登陆后,发现sshd服务有异常的链接存…...
Python解题 - CSDN周赛第29期 - 争抢糖豆
本期问哥是志在必得,这本算法书我已经觊觎许久,而之前两次因为种种原因未能如愿。因此,问哥这几天花了不少时间,把所有之前在每日一练做过的题目重新梳理了一遍。苦心人,天不负,感谢官方大大! 第…...
C代码中访问链接脚本中的符号
一、目的在之前的《GNU LD脚本命令语言(一)》、《GNU LD脚本命令语言(二)》我们介绍了GNU链接脚本的知识点,基本上对链接脚本中的SECTION、REGION、以及加载地址与执行地址的关系等内容有了一定的了解。本篇主要讲解链…...
MySQL 8:MySQL索引
索引就是通过一定的算法建立数据模型,用于快速查找某一列中具有特定值的行。如果没有索引,MySQL 必须从第一条记录开始读取整个表,直到找到相关的表。表越大,查询数据所花费的时间就越多。如果表中查询的列有索引,MySQ…...
JVM详解
一,JVM 1,JVM区域划分 类装载器,运行时数据区,字节码执行引擎 2,JVM内存模型(运行时数据区) 由本地方法栈,虚拟机栈,堆,方法区,和程序计数器组成。…...
广东网页空间网站平台/什么平台可以免费打广告
如果想跟我一起讨论的话,就快加入我的知识星球吧。星球里有一千多位同样爱好安全技术的小伙伴一起交流! 常用工具: Nmap使用详解Sqlmap使用详解Metasploit Framework(MSF)的使用MSF中kiwi模块的使用MSF中mimikatz模块的使用Msfvenonm生成后门木马...
安徽建设委员会网站/百度学术搜索
文章目录一、第一阶段:前三年二、第二阶段:第五年三、第三阶段:第十年总结如果你还没有自己清晰的职业规划,他的建议可以帮助你思考一下自己的将来。 程序员的职业未来分为三个阶段,每个阶段都会遇到一个区分门槛。 程…...
哪些网站做的好看/万网官网
一、无法动态更新数据的实例 1. 如下,数据库中创建了班级表和教师表,两张表的对应关系为“多对多” 1 from django.db import models2 3 4 class Classes(models.Model):5 title models.CharField(max_length32)6 7 8 class Teacher(models.Model):…...
天津制作网页/杭州网站优化方案
R Markdown是一种用于在R中生成可重复生成的报告的开源工具。它可以帮助您将所有代码,结果和编写都放在一个地方,并以一种有吸引力且易于消化的方式格式化所有内容。它也是将您的数据工作展示给其他人的宝贵工具。使用R Markdown,您可以选择将…...
网站页面框架设计/百度电脑版登录网站
在vscode中,添加npm脚本扩展;其中有package.json里的build打包快捷键,点击后会生成一个dist文件,这个文件就是打包后的文件 或者配置过npm后,找到项目所在的目录,cmd;输入npm run build&#x…...
wordpress出站链接/谷歌商店官网
abstract abstract: 抽象的 1.可以用来修饰:类、方法 2.具体的: abstract修饰类:抽象类 > 此类不能实例化 > 抽象类中一定有构造器,便于子类实例化时调用(涉及:子类对象实例化的全过程) > 开发中,都会提供抽象类的子类,让子类对象实例化,完成相关的操作 --…...