【网络】HTTPS讲解(侧重于加密、秘钥、证书的讲解)

HTTPS讲解

  • 前言
  • 正式开始
    • 安全
    • HTTP和HTTPS的关系
    • 什么是加密和解密
    • 为什么要加密
      • 运营商劫持
      • 中间人
    • 常⻅的加密⽅式
      • 对称加密
      • ⾮对称加密
    • 数据摘要
    • 数字签名
    • HTTPS 的⼯作过程
      • ⽅案 1 - 只使⽤对称加密(不可靠)
      • ⽅案 2 - 只使⽤⾮对称加密(不可靠)
      • ⽅案 3 - 双⽅都使⽤⾮对称加密(不可靠)
      • ⽅案 4 - ⾮对称加密 + 对称加密(不可靠)
    • 引⼊证书
      • CA认证
      • 数据签名
      • 完整流程

在这里插入图片描述

前言

前面一篇博客讲的是HTTP,HTTP 协议内容都是按照⽂本的⽅式明⽂传输的,这就导致在传输过程中容易出现⼀些被篡改的情况。

HTTPS 也是⼀个应⽤层协议. 在 HTTP 协议的基础上引⼊了⼀个加密层,所以HTTPS是一种保证数据安全的协议。

如果屏幕前的你还不了解HTTP,可以先看看我前一篇的HTTP协议:【网络】用代码讲解HTTP协议

正式开始

安全

HTTP中用POST方法上传数据时只会保证私密性,而安全并没有得到很好的保障,数据还是明文的在发送。

真正的安全是要对数据做加密的,那么有加密也必定要解密,二者是同时存在的。

那么如何理解安全呢?
网络通信的时候,真正考虑的安全是数据在网络转发过程中是否安全,也就是网络安全。

这里给安全一个定义:破解成本远大于破解收益时,就是安全的。比如说破解一个数据需要花费1000元,但是获取到的收益只有两三毛,那么这种数据破解起来收益太少了,成本过高。或者说对一个数据加密只需要几号秒,但是破解出来需要几十年,也是时间耗费太高了。

不过目前主流的通信方式都是安全的。

HTTP和HTTPS的关系

网络协议栈分四层(不考虑物理层):
在这里插入图片描述

其中Socket接口时处于应用层和传输层之间的,所以上一篇中能够对http进行简单封装,让浏览器帮我们进行解析并显示到浏览器中。

再把各个层经典的协议给出来:
在这里插入图片描述

其中HTTP所在的应用层还可以添加一个小的模块:

在这里插入图片描述

其中这个TLS/SSL是可选的。

如果HTTP直接往传输层走就是上一篇中的HTTP,但如果HTTP 和 TLS/SSL一块的话就是本篇中的HTTPS:
在这里插入图片描述

那么二者传输数据的时候就是这样:
在这里插入图片描述

HTTPS传输和发送都要经过那一小块加密和解密,相当于是又在应用层和传输层又加了一层安全层,所以在网络中传输的数据是一定经过加密的,当有恶意分子拿到数据后也干不了什么操作,除非是进行破解。这就是HTTPS的一个概况。

什么是加密和解密

加密就是把 明⽂ (要传输的信息)进⾏⼀系列变换,⽣成 密⽂。
解密就是把 密⽂ 再进⾏⼀系列变换, 还原成 明⽂。

在这个加密和解密的过程中, 往往需要⼀个或者多个中间的数据, 辅助进⾏这个过程, 这样的数据称为 密钥,就是帮助加密/解密的东西。

来个例子。

下面这两张图是一部电影中的,83 版 <<⽕烧圆明园>> , 有⼈要谋反⼲掉慈禧太后. 恭亲王奕䜣给慈禧递的折⼦. 折⼦内容只是扯⼀扯家常, 套上⼀张挖了洞的纸就能看到真实要表达的意思。

在这里插入图片描述

这里:
明⽂: “当⼼肃顺, 端华, 戴恒” (这⼏个⼈都是当时的权⾂, 后来被慈禧⼀锅端).

密⽂: 奏折全⽂

密钥: 挖了洞的纸

明文就那么几个字,加密之后就变成了信,解密的就是挖洞的纸(秘钥)。

加密解密到如今已经发展成⼀个独⽴的学科: 密码学.
⽽密码学的奠基⼈, 也正是计算机科学的祖师爷之⼀, 艾伦·⻨席森·图灵
在这里插入图片描述

对⽐我们另⼀位祖师爷冯诺依曼
在这里插入图片描述

图灵的头发有点多。

可惜图灵⼤佬年少有为,但是因为⼀些原因遭到英国皇室的迫害, 41岁就英年早逝了。

计算机领域中的最⾼荣誉就是以他名字命名的 “图灵奖”。

为什么要加密

我记得我小时候上网下载东西的时候,那时候啥都不懂,想下载什么就随便搜一下进一个野鸡网站,看见有下载就点,但是总是偶尔下载出来全家桶,非常恶心,后来慢慢了解了点,下载的时候长了点心眼,那种全家桶就没再见过了。

不过有一次我爸下载啥东西的时候下了一堆游戏的全家桶,什么传奇啥的,还是开机自动启动的,重启都没用,那会电脑直接卡的鼠标挪半天挪不动,还好电脑打开稍微缓一段时间鼠标能动了,然后我直接用任务管理器把那些游戏先全关掉再卸载,只能说非常费劲。这种搞全家桶的行为真的非常的恶心。

运营商劫持

来个例子。

这里没有被劫持的状态,点击下载,弹出正确的下载链接:
在这里插入图片描述

如果被劫持了:
在这里插入图片描述

看见没,就变成了QQ浏览器。

由于我们通过⽹络传输的任何的数据包都会经过运营商(电信、移动、联通等)的⽹络设备(路由器, 交换机等), 那么运营商的⽹络设备就可以解析出你传输的数据内容, 并进⾏篡改。

点击 “下载按钮”, 其实就是给服务器发送了⼀个 HTTP 请求, 获取到的 HTTP 响应其实就包含了该APP 的下载链接. 运营商劫持之后, 就发现这个请求是要下载天天动听, 那么就⾃动的把交给⽤⼾的响应给篡改成 “QQ浏览器” 的下载地址了。

在这里插入图片描述

所以:因为http的内容是明⽂传输的,明⽂数据会经过路由器、wifi热点、通信服务运营商、代理服务
器等多个物理节点,如果信息在传输过程中被劫持,传输的内容就完全暴露了。劫持者还可以篡改传
输的信息且不被双⽅察觉,这就是 中间⼈攻击 ,所以我们才需要对信息进⾏加密。

中国互联网发展早期,用的协议都是HTTP协议,因为方便快速,所以就容易出现上方的情况。现在应该很少了。

但是现在还有什么安全下载,又给你下什么360浏览器、安全卫士啥的,很恶心。

导致我现在看到这种图就烦:
在这里插入图片描述

思考下, 为啥运营商要进⾏劫持?
因为到了儿,有钱能使鬼推磨嘛。

不⽌运营商可以劫持, 其他的 ⿊客 也可以⽤类似的⼿段进⾏劫持, 来窃取用户隐私信息, 或者篡改内容。

中间人

客户端和服务端发送的数据要经过谁,谁就是中间人。

关于数据泄漏的问题95%以上都是中间人攻击造成的。

你的手机打开热点,此时你的手机就相当于一个路由器,连上热点的人传输的数据一定会经过你的手机,如果你手机上有抓包的软件且连接你手机的人传输数据时采用的协议是HTTP,那么你就能拿到TA所发送的数据,此时你就是一个中间人,不过没有进行攻击。

所以一些地方的免费WiFi连的时候要谨慎,能不连就不连,人家一抓一个准。

所以在互联⽹上, 明⽂传输是⽐较危险的事情!!!
HTTPS 就是在 HTTP 的基础上进⾏了加密, 进⼀步的来保证用户的信息安全~

常⻅的加密⽅式

对称加密

  • 采⽤单钥密码系统的加密⽅法,同⼀个密钥可以同时⽤作信息的加密和解密,这种加密⽅法称为对称加密,也称为单密钥加密,特征:加密和解密所⽤的密钥是相同的

  • 常⻅对称加密算法(了解):DES、3DES、AES、TDEA、Blowfish、RC2等

  • 特点:算法公开、计算量⼩、加密速度快、加密效率⾼

对称加密其实就是通过同⼀个 “密钥” , 把明⽂加密成密⽂, 并且也能把密⽂解密成明⽂.

⼀个简单的对称加密, 按位异或:
假设 明⽂ a = 1234, 密钥 key = 8888
则加密 a ^ key 得到的密⽂ b 为 9834.
然后针对密⽂ 9834 再次进⾏运算 b ^ key, 得到的就是原来的明⽂ 1234.
(对于字符串的对称加密也是同理, 每⼀个字符都可以表⽰成⼀个数字)
当然, 按位异或只是最简单的对称加密. HTTPS 中并不是使⽤按位异或.

⾮对称加密

  • 需要两个密钥来进⾏加密和解密,这两个密钥是公开密钥(public key,简称公钥)和私有密钥(private key,简称私钥)。

  • 常⻅⾮对称加密算法(了解):RSA,DSA,ECDSA

  • 特点:算法强度复杂、安全性依赖于算法与密钥但是由于其算法复杂,⽽使得加密解密速度没有对称加密解密的速度快。

⾮对称加密要⽤到两个密钥, ⼀个叫做 “公钥”, ⼀个叫做 “私钥”。

公钥和私钥是配对的. 最⼤的缺点就是运算速度⾮常慢,⽐对称加密要慢很多.
• 通过公钥对明⽂加密, 变成密⽂
• 通过私钥对密⽂解密, 变成明⽂

也可以反着⽤
• 通过私钥对明⽂加密, 变成密⽂
• 通过公钥对密⽂解密, 变成明⽂

这里不会讲非对称加密的相关计算细节,这里涉及到数学方面的知识,博主能力有限,不详谈加密的计算细节,对于我们普通程序员来讲,不懂怎么加密计算是没有关系的,以后真正工作的时候可以说是碰不到HTTPS的。

这里只要记住非对称加密需要两个秘钥就行,一个公钥一个私钥,公钥对外,私钥不对外,公钥私钥都可进行加密,也都可进行解密,但是公钥加密就要用私钥解密,私钥加密就要用公钥解密。

数据摘要

数据摘要,也叫做数据指纹。是指将原始发送的文本经过hash算法,得到的一段固定长度的字符串,这个字符串就是数据摘要。

摘要常⻅算法:有MD5、SHA1、SHA256、SHA512等,算法把⽆限的映射成有限,因此可能会有碰撞(两个不同的信息,算出的摘要相同,但是概率⾮常低)。可以认为不同的原始文本经过hash后得到的摘要都是不一样的,就算是改一个标点结果都会差很多。

得到的摘要无法逆向成原始数据,想变回原始数据的话也非常困难。

这里说一个生活中的例子。
百度网盘应该都用过,其中有一个秒传的功能,就是你上传数据的时候根本不需要进行等待,直接就能传上去。这里就用到了摘要,看图:

在这里插入图片描述

你在上传数据前,会先对你的数据hash形成摘要:
在这里插入图片描述
用百度网盘的人非常多,每个人都可以向服务器上传资源,可能你今天想要上传的数据在以前已经被别人上传过了,而且是一模一样的数据,网盘的服务器中会有不同数据hash后形成的摘要放到一块。所以在传输数据前会先将摘要传给服务器,把你的数据形成的摘要在服务器中查找一下,如果找到了,那么就直接在你所对应的服务器路径下搞一个软链接指向之前已经上传过的数据(大多数公司的服务器也是用Linux搞的),这就是秒传,创建一个软连接就是简单的创建一个文件,所以会非常快。如果说你的数据形成的摘要没找到,那么就会按照每秒几MB慢慢传。
在这里插入图片描述

再来个例子,一般公司里面注册用户,用户的密码在公司中是一定不能被他人看到的,所以公司的数据库中一般不会直接保存用户的密码,而是保存密码摘要,登录的时候对密码采用hash算法形成摘要,然后再拿着用户名和密码摘要到数据库中查找。

数字签名

摘要经过加密,就得到数字签名(后⾯细说)。

数据摘要严格意义上讲不叫加密,因为能加密就得要能解密,但是摘要后无法解密,无法逆向退出原始数据。

数据摘要和加密算法的区别是,摘要严格意义不是加密,因为没有解密,因为从摘要很难反推原信息,所以摘要通常⽤来进⾏数据对⽐。

HTTPS 的⼯作过程

既然要保证数据安全, 就需要进⾏ “加密”.

⽹络传输中不再直接传输明⽂了, ⽽是加密之后的 “密⽂”.

加密的⽅式有很多, 但是整体可以分成刚刚说过的两⼤类: 对称加密 和 ⾮对称加密

⽅案 1 - 只使⽤对称加密(不可靠)

如果通信双⽅都各⾃持有同⼀个密钥X。

首先得让服务器和客户端都能确定同一个秘钥。

来画画图:
在这里插入图片描述

先让一方定下来一个对称秘钥x,就让服务端确定,客户端来获取。

在这里插入图片描述

但是这种方法没用。

因为黑客可以在中间截取到服务端发给客户端包含秘钥的报文,并在报文中提取到秘钥x。
在这里插入图片描述

所以这种方式不可靠。

⽅案 2 - 只使⽤⾮对称加密(不可靠)

还是让服务端确定一对公钥和私钥:

在这里插入图片描述

然后让客户端获取:
在这里插入图片描述

后续通信就通过这一对公钥和私钥加密解密:
在这里插入图片描述

但是不行,黑客可以在开头获取公钥S。这样服务端的数据就不保了。

在这里插入图片描述

所以不可靠。

⽅案 3 - 双⽅都使⽤⾮对称加密(不可靠)

服务端和客户端都产生一对公钥和私钥。

服务端和客户端都公开其公钥。

在这里插入图片描述

获取对方公钥:
在这里插入图片描述

此时客户端有: C, C’, S;服务端有: S, S’, C。若后续用私钥进行加密,那么自身的公钥也就没什么用了,除掉自身公钥。

客户端:C’, S
服务端:S’, C

那么后续通信时,客户端发送数据通过C’加密,服务端接收后用C解密。服务端发送数据时用S’加密,客户端接受后用S解密。如图:
在这里插入图片描述

但是这样也不行,黑客还是能在最开始的时候获取到所有的公钥。

在这里插入图片描述

所以也不可靠。

而且双方都用非对称加密,效率会很低。

⽐较理想的做法, 就是能在客户端和服务器建⽴连接的时候, 双⽅协商确定这次的密钥是啥。
在这里插入图片描述
但是如果直接把密钥明⽂传输, 那么⿊客也就能获得密钥了~~ 此时后续的加密操作就形同虚设了.
因此密钥的传输也必须加密传输!

但是要想对密钥进⾏对称加密, 就仍然需要先协商确定⼀个 “密钥的密钥”. 这就成了 “先有鸡还是先有
蛋” 的问题了. 此时密钥的传输再⽤对称加密就⾏不通了。

⽅案 4 - ⾮对称加密 + 对称加密(不可靠)

• 服务端具有⾮对称公钥S和私钥S’
• 客户端发起https请求,获取服务端公钥S
• 客户端在本地⽣成对称密钥C, 通过公钥S加密, 发送给服务器.
• 由于中间的⽹络设备没有私钥, 即使截获了数据, 也⽆法还原出内部的原⽂, 也就⽆法获取到对称密

• 服务器通过私钥S’解密, 还原出客户端发送的对称密钥C. 并且使⽤这个对称密钥加密给客户端返回
的响应数据.

在这里插入图片描述

上面的这个阶段就叫做秘钥协商阶段。

那么此时客户端和服务端都确定了对称秘钥X。

在这里插入图片描述

后面这里就是通信阶段。

后续通信时即使黑客获取到了公钥S,也没法用S对SX进行解密,那就获取不到X了,这样就安全了吗?

并没有,黑客能获取到服务端的公钥S,获取到之后,黑客还可以自己搞一套公钥K和私钥K’,然后
将报文中的S改为K,再将发送给客户端,这样客户端以为自己得到了服务端的公钥S,但其实是黑客的公钥K。
在这里插入图片描述
所以说还是不安全。

虽然上⾯已经⽐较接近答案了,但是依旧有安全问题。

只要已经交换了秘钥,中间人来了就完了,此时就可正常通信。

但是只要中间人在最开始的时候就可以篡改替换,就没法通信了。

上面的四种方法都不行,这种中间人攻击能够成功,本质上是中间人能对数据做篡改并且client端无法验证收到的公钥是目标服务器的公钥还是黑客的公钥。

那么必须得解决这两个问题:

  1. 不要让中间人篡改
  2. 客户端能够验证服务端的公钥是否有效。

引⼊证书

啥是证书?
说说日常生活。

某天,大街上,有警察巡逻。

此时街上有一个长得贼眉鼠眼的,走路很猥琐,此时经常快步上前盘问此人,警察第一句有效的话术是什么?

应该是请出示你的证件。也就是身份证。

那么如果此人拿了一张身份证,警察就会对比对比长相,验证一下身份证。

如果核验通过了,那么就可以放此人离开;但是如果核验没通过,此人就走不了喽。

为什么有效证件是身份证?不是其他的驾照啥的,医保卡啥的?
因为身份证是用于证明居住在中华人民共和国境内的公民身份证明文件。要是政府都没法相信的话,那就没啥可信的了。

警察相信身份证,本质上是相信颁发身份证的机构。

所以颁发一个证书,需要一个权威机构,而这里要说的权威机构就是CA机构,是一个全球性的机构。

CA认证

CA机构会为需要HTTPS的企业/公司/组织/个人颁发CA证书。

服务端在使⽤HTTPS前,需要向CA机构申领⼀份数字证书,数字证书⾥含有证书申请者信息、公钥信息等。证书就如⾝份证,证明服务端公钥的权威性。

在这里插入图片描述

当服务端申请CA证书的时候,CA机构会对该服务端进⾏审核,并专⻔为该⽹站形成数字签名,过程如下:

  1. CA机构拥有自己的⾮对称加密的私钥A和公钥A’
  2. CA机构对服务端申请的证书明⽂数据进⾏hash,形成数据摘要
  3. 然后对数据摘要⽤CA私钥A’加密,得到数字签名S

服务端申请的证书明⽂和数字签名S共同组成了数字证书,这样⼀份数字证书就可以颁发给服务端了。

而客户端操作系统和浏览器中已内置了受信任的证书发布机构,其中就包含了CA机构的公钥。
我们的浏览器中也是可以查看证书在哪的:
在这里插入图片描述

然后:
在这里插入图片描述

进入安全后再一直往下滑:
在这里插入图片描述

这里就能看到证书,这里就是带大家了解一下。

服务端要向CA机构申请证书。说明什么,一个公司,要向CA机构申请证书,像普通的程序员是不可能接触到的,像大公司,人家早期就搞好了HTTPS,我们后面进去根本就不用管这,像小公司,如果你是一个leader,那有可能会让你负责搞这个申请。反正正常程序员一般不会接触到HTTPS的。

数据签名

刚刚简单提了一嘴数据签名。

原始的数据通过散列获取摘要,摘要再通过加密就是签名。

如图:
在这里插入图片描述

再来添加一点东西:
在这里插入图片描述

这里带签名的数据就是服务器要向客户端发送的东西。其中包含了服务器的公钥。

客户端接收到后会进行以下操作:
在这里插入图片描述

注意两点,浏览器中内置了CA机构的公钥,上图数据中包含了服务器的公钥。

所以整个流程就是这样:
在这里插入图片描述

其中就算黑客最开始劫持到了证书,TA也没法修改。如果改了正文不改签名,或者是改了签名不改正文,那么传到客户端后证书就没法验证成功。

就算中黑客自己定义了公钥和私钥k, k’,并将正文中服务端的公钥改为自己的公钥K,但TA改不了签名,因为TA没有CA机构的私钥,客户端在解密签名的时候用的是CA的公钥,就算TA把签名改成了用TA的私钥k’加密的也是没用的,客户端不会用TA的公钥k,而是用CA的公钥解k’加密的签名,那么签名解密后的摘要和TAhash后的摘要是不一样的。

再者说,如果中间人自己开了家公司并且还申请了证书,中间把整个证书替换掉,也没用,因为证书中是有其域名的(前面介绍证书的图中有),全部替换,域名就改了,意思就是客户本来想访问腾讯的官网,但是中间人将整个证书替换,换成了一个长得很像的名字为腾迅的官网,但是根本就不是一个,眼见的同学就发现了,那么就不会被骗。

所以说这里就非常安全了,因为中间人不会得到CA机构的私钥,那么TA就改不了证书。

完整流程

左侧是客户端,右侧是服务端:

在这里插入图片描述

第⼀组(⾮对称加密): ⽤于校验证书是否被篡改. 服务器持有私钥(私钥在形成CSR⽂件与申请证书时获得), 客户端持有公钥(操作系统包含了可信任的 CA 认证机构有哪些, 同时持有对应的公钥). 服务器客户端请求时,返回携带签名的证书. 客户端通过这个公钥进⾏证书验证, 保证证书的合法性,进⼀步保
证证书中携带的服务端公钥权威性。

第⼆组(⾮对称加密): ⽤于协商⽣成对称加密的密钥. 客户端⽤收到的CA证书中服务器的公钥(是可被信任的)给随机⽣成的对称加密的密钥加密, 传输给服务器, 服务器通过私钥解密获取到对称加密密钥.

第三组(对称加密): 客户端和服务器后续传输的数据都通过这个对称密钥加密解密.

其实⼀切的关键都是围绕这个对称加密的密钥. 其他的机制都是辅助这个密钥⼯作的.

  • 第⼆组⾮对称加密的密钥是为了让客户端把这个对称密钥传给服务器.
  • 第⼀组⾮对称加密的密钥是为了让客户端拿到第⼆组⾮对称加密的公钥

到此结束。。。

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

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

相关文章

Node编写用户登录接口

目录 前言 服务器 编写登录接口API 使用sql语句查询数据库中是否有该用户 判断密码是否正确 生成JWT的Token字符串 配置解析token的中间件 配置捕获错误中间件 完整的登录接口代码 前言 本文介绍如何使用node编写登录接口以及解密生成token&#xff0c;如何编写注册接…

【Qt】消息机制和事件

文章目录 事件event()事件过滤器案例&#xff1a;检测鼠标事件案例&#xff1a;定时器 事件 事件&#xff08;event&#xff09;是由系统或者 Qt 本身在不同的时刻发出的。当用户按下鼠标、敲下键盘&#xff0c;或者是窗口需要重新绘制的时候&#xff0c;都会发出一个相应的事…

Docker Swarm 集群搭建

Docker Swarm Mode Docker Swarm 集群搭建 Docker Swarm 节点维护 Docker Service 创建 1.准备主机 搭建一个 docker swarm 集群&#xff0c;包含 5 个 swarm 节点。这 5 个 swarm 节点的 IP 与暂 时的角色分配如下&#xff08;注意&#xff0c;搭建完成后会切换角色&#xff…

Linux绝对路径和相对路径

在 Linux 中&#xff0c;简单的理解一个文件的路径&#xff0c;指的就是该文件存放的位置。 只要我们告诉 Linux 系统某个文件存放的准确位置&#xff0c;那么它就可以找到这个文件。指明一个文件存放的位置&#xff0c;有 2 种方法&#xff0c;分别是使用绝对路径和相对路径。…

​​​​​​​Python---练习:打印直角三角形(利用wihle循环嵌套)

案例&#xff1a; 打印直角三角形&#xff0c;特征&#xff1a;一共有5行&#xff0c;第1行&#xff0c;有1列。第2行&#xff0c;有2列&#xff0c;第3&#xff0c;有3列。 思考&#xff1a; pycharm里面&#xff0c;输出三角形&#xff0c;因为本来控制台就是长方形&#…

Python桌面应用之XX学院水卡报表查询系统(Tkinter+cx_Oracle)

一、功能样式 Python桌面应用之XX学院水卡报表查询系统功能&#xff1a; 连接Oracle数据库&#xff0c;查询XX学院水卡操作总明细报表&#xff0c;汇总数据报表&#xff0c;个人明细报表&#xff0c;进行预览并且支持导出报表 1.总明细报表样式 2.汇总明细样式 3.个人明细…

硬件信息查看工具 EtreCheckpro mac中文版功能介绍

etrecheckpro mac中文版是一款专业的硬件信息查看工具&#xff0c;它能够快速的检测Mac电脑的软硬件信息&#xff0c;加强用户对自己计算机的了解&#xff0c;EtreCheckPro for Mac下载首先会对电脑的软硬件信息进行扫描收集&#xff0c;之后才会显示出来。EtreCheck Mac版报告…

Python深度学习进阶与应用丨注意力(Attention)机制、Transformer模型、生成式模型、目标检测算法、图神经网络、强化学习详解等

目录 第一章 注意力&#xff08;Attention&#xff09;机制详解 第二章 Transformer模型详解 第三章 生成式模型详解 第四章 目标检测算法详解 第五章 图神经网络详解 第六章 强化学习详解 第七章 深度学习模型可解释性与可视化方法详解 更多应用 近年来&#xff0c;伴…

mac安装+配置python3环境

一、python3下载 官网下载 https://www.python.org/ 二、python3安装 打开下载好的.pkg文件一直继续确认即可。 三、验证是否安装成功 打开终端&#xff0c;输入python3&#xff0c;如果返回python对应的版本信息&#xff0c;则安装成功。 四、python配置 如果需要输入…

`SQL`编写判断是否为工作日函数编写

SQL编写判断是否为工作日函数编写 最近的自己在写一些功能,遇到了对于工作日的判断,我就看了看sql,来吧!~(最近就是好疲惫) 我们一起看看(针对ORACLE) 1.声明: CREATE OR REPLACE PACKAGE GZYW_2109_1214.PKG_FUN_GETDAY_HDAY AS /** * 通过节假日代码获取指定的日期[查找基…

Synchronized同步锁

synchronized 一&#xff0c;介绍 Java中的synchronized关键字用于实现线程同步&#xff0c;可以修饰方法或代码块。 1. 修饰方法&#xff1a;当一个方法被synchronized修饰时&#xff0c;只有获得该方法的锁的线程才能执行该方法。其他线程需要等待锁的释放才能执行该方法。…

Python+requests+pytest+excel+allure 接口自动化测试实战

定义&#xff1a; Unittest是Python标准库中自带的单元测试框架&#xff0c;Unittest有时候也被称为PyUnit&#xff0c;就像JUnit是Java语言的标准单元测试框架一样&#xff0c;Unittest则是Python语言的标准单元测试框架。 Pytest是Python的另一个第三方单元测试库。它的目的…

Linux C语言开发-D2vi编辑器使用

三种模式基础 命令行模式、插入模式和底行模式 :! [命令]&#xff1a;可在命令行模式下执行命令 :w test1.cc可备份当前编辑的文件 :r head.h可为当前文件引入头文件 u&#xff1a;撤销 命令行进入插入模式&#xff1a; i&#xff1a;从当前光标位置之前开始插入 …

Mac 开机提示Google LLC 注册 无法登录进入系统

Google LLC 会在电脑启动时提示如下弹窗&#xff0c;并要求登录谷歌账户进行验证 此时很明显没有用来进行验证的账号&#xff0c;所以需要关掉这个验证程序 从日志里面可以看到LLC启动了一个Tiny.app的程序 只需要想办法把这个程序删掉即可 关机 按住 Command R 开机 进入R…

muduo异步日志库

文章目录 一、日志库模型1.前端 参考 一、日志库模型 组成部分 muduo日志库由前端和后端组成。 muduo日志库是异步高性能日志库&#xff0c;其性能开销大约是前端每写一条日志消息耗时1.0us~1.6us。 采用双缓冲区&#xff08;double buffering&#xff09;交互技术。基本思…

C语言文件操作(1)

C语言文件操作&#xff08;1&#xff09; 文章目录 C语言文件操作&#xff08;1&#xff09;一、理解文件1.概述2.分类①.正常角度②.文本文件和二进制文件 二、文件的打开和关闭1.流和标准流2.文件类型指针3.文件的打开和关闭以及使用类型 三、文件缓冲区 一、理解文件 1.概述…

【CSS】BFC 块级格式化上下文

1. 块级格式化上下文&#xff08;BFC&#xff09; 它是一块独立的渲染区域&#xff0c;规定该区域内&#xff0c;常规流块盒的布局。 先来说一下常规流块盒&#xff1a; 常规流块盒在水平方向上&#xff0c;必须盛满包含块常规流块盒在包含块的垂直方向上依次摆放常规流块盒…

GEO生信数据挖掘(九)肺结核数据-差异分析-WGCNA分析(900行代码整理注释更新版本)

第六节&#xff0c;我们使用结核病基因数据&#xff0c;做了一个数据预处理的实操案例。例子中结核类型&#xff0c;包括结核&#xff0c;潜隐进展&#xff0c;对照和潜隐&#xff0c;四个类别。第七节延续上个数据&#xff0c;进行了差异分析。 第八节对差异基因进行富集分析。…

yolov7改进优化之蒸馏(二)

续yolov7改进优化之蒸馏&#xff08;一&#xff09;-CSDN博客 上一篇已经基本写出来yolov7/v5蒸馏的整个过程&#xff0c;不过要真的训起来我们还需要进行一些修改。 Model修改 蒸馏需要对teacher和student网络的特征层进行loss计算&#xff0c;因此我们forward时要能够返回需…

PyTorch 与 TensorFlow:机器学习框架之战

深度学习框架是简化人工神经网络 (ANN) 开发的重要工具&#xff0c;并且其发展非常迅速。其中&#xff0c;TensorFlow 和 PyTorch 脱颖而出&#xff0c;各自在不同的机器学习领域占有一席之地。但如何为特定项目确定理想的工具呢&#xff1f;本综合指南[1]旨在阐明它们的优点和…