HTTPHTTPS协议详解

news2024/11/26 3:30:30

目录

一、HTTP是什么?

理解 "应用层协议"

理解 HTTP 协议的工作过程

二、HTTP 协议格式

抓包工具的使用

抓包工具的原理

抓包结果

协议格式总结

三、HTTP 请求 (Request)

认识 URL

URL 基本格式

 认识 "方法" (method)

认识请求 "报头" (header)

Host

Content-Length

Content-Type

 四、HTTPS是什么?

# SSL 和 TLS

# IETF

# HTTPS VS HTTP

# 小结

五、HTTPS执行流程

# 常见加密

# 为什么HTTPS同时使用两种加密?


一、HTTP是什么?

HTTP ( 全称为 " 超文本传输协议 ") 是一种应用非常广泛的 应用层协议 .
再次拿出前文网络原理的首图

 HTTP 诞生与1991. 目前已经发展为最主流使用的一种应用层协议.

最新的 HTTP 3 版本也正在完善中, 目前 Google / Facebook 等公司的产品已经支持了.

HTTP 往往是基于传输层的 TCP 协议实现的 . (HTTP1.0, HTTP1.1, HTTP2.0 均为 TCP, HTTP3 基于 UDP实现)
目前我们主要使用的还是 HTTP1.1 HTTP2.0 . 当前课堂上讨论的 HTTP 1.1 版本为主 .
我们平时打开一个网站 , 就是通过 HTTP 协议来传输数据的 .

当我们在浏览器中输入一个 搜狗搜索的 " 网址 " (URL) , 浏览器就给搜狗的服务器发送了一个 HTTP 请求, 搜狗的服务器返回了一个 HTTP 响应 .
这个响应结果被浏览器解析之后 , 就展示成我们看到的页面内容 . ( 这个过程中浏览器可能会给服务器发送多个 HTTP 请求 , 服务器会对应返回多个响应 , 这些响应里就包含了页面 HTML, CSS, JavaScript, 图片 ,字体等信息).、
所谓 "超文本" 的含义, 就是传输的内容不仅仅是文本(比如 html, css 这个就是文本), 还可以是一些 其他的资源, 比如图片, 视频, 音频等二进制的数据。

理解 "应用层协议"

我们已经学过 TCP/IP , 已经知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程 [ IP+Port ].
可是,仅仅把数据从 A 点传送到 B 点就完了吗?
这就好比,在淘宝上买了一部手机,卖家 [ 客户端 ] 把手机通过顺丰 [ 传送 + 路径选择 ] 送到买家 [服务器 ] 手里就完了吗?
当然不是,买家还要使用这款产品,还要在使用之后,给卖家打分评论。
所以,我们把数据从 A 端传送到 B 端, TCP/IP 解决的是顺丰的功能,而两端还要对数据进行加工处理或者使用,所以我们还需要一层协议,不关心通信细节,关心应用细节!
这层协议叫做应用层协议。而应用是有不同的场景的,所以应用层协议是有不同种类的,其中经典协议之一的HTTP就是其中的佼佼者 .
再回到我们刚刚说的买手机的例子,顺丰相当于 TCP/IP 的功能,那么买回来的手机都附带了说明书【产品介绍,使用介绍,注意事项等】,而该说明书指导用户该如何使用手机【虽然我们都不看,但是父母辈有部分是有看说明书的习惯的:)】,此时的说明书可以理解为用户层协议

理解 HTTP 协议的工作过程

当我们在浏览器中输入一个 "网址", 此时浏览器就会给对应的服务器发送一个 HTTP 请求. 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个 HTTP 响应.

事实上 , 当我们访问一个网站的时候 , 可能涉及不止一次的 HTTP 请求 / 响应 的交互过程 .
可以通过 chrome 的开发者工具观察到这个详细的过程 .
通过 F12 打开 chrome 的开发者工具 , 切换到 Network 标签页 . 然后刷新页面即可看到如下图效果. 每一条记录都是一次 HTTP 请求 / 响应

 

注意 : 当前 搜狗主页 是通过 https 来进行通信的 . https 是在 http 基础之上做了一个加密解密的工作 , 后面再介绍.

二、HTTP 协议格式

HTTP 是一个文本格式的协议 . 可以通过 Chrome 开发者工具或者 Fiddler 抓包 , 分析 HTTP 请求 / 响应的细节.

抓包工具的使用

Fiddler 为例 . ( 下载地址 : https://www.telerik.com/fiddler/ )

  • 左侧窗口显示了所有的 HTTP请求/响应, 可以选中某个请求查看详情.
  • 右侧上方显示了 HTTP 请求的报文内容. (切换到 Raw 标签页可以看到详细的数据格式)
  • 右侧下方显示了 HTTP 响应的报文内容. (切换到 Raw 标签页可以看到详细的数据格式)
  • 请求和响应的详细数据, 可以通过右下角的 View in Notepad 通过记事本打开.
  • 可以使用 ctrl + a 全选左侧的抓包结果, delete 键清除所有被选中的结果.

抓包工具的原理

Fiddler 相当于一个 " 代理 ".
浏览器访问 sogou.com , 就会把 HTTP 请求先发给 Fiddler, Fiddler 再把请求转发给 sogou 的服务器 .
sogou 服务器返回数据时 , Fiddler 拿到返回数据 , 再把数据交给浏览器 .
因此 Fiddler 对于浏览器和 sogou 服务器之间交互的数据细节 , 都是非常清楚的 .

代理就可以简单理解为一个跑腿小弟 . 你想买罐冰阔落 , 又不想自己下楼去超市 , 那么就可以把钱给你的跑腿小弟, 跑腿小弟来到超市把钱给超市老板 , 再把冰阔落拿回来交到你手上 . 这个过程中 , 这个跑腿小弟对于 " " " 超市老板 " 之间的交易细节 , 是非常清楚的 .

抓包结果

以下是一个 HTTP 请求 / 响应 的抓包结果 .

HTTP请求

  • 首行: [方法] + [url] + [版本]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有
  • 一个Content-Length属性来标识Body的长度;
HTTP响应

  • 首行: [版本号] + [状态码] + [状态码解释]
  • Header: 请求的属性, 冒号分割的键值对;每组属性之间使用\n分隔;遇到空行表示Header分结束
  • Body: 空行后面的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有
  • 一个Content-Length属性来标识Body的长度; 如果服务器返回了一个html页面, 那么html面内容就是在body.

协议格式总结

 

 

思考问题 : 为什么 HTTP 报文中要存在 " 空行 "?
因为 HTTP 协议并没有规定报头部分的键值对有多少个 . 空行就相当于是 " 报头的结束标记 ", 或者是 " 报头和正文之间的分隔符 ".
HTTP 在传输层依赖 TCP 协议 , TCP 是面向字节流的 . 如果没有这个空行 , 就会出现 " 粘包问题 ".

三、HTTP 请求 (Request)

认识 URL

URL 基本格式

平时我们俗称的 " 网址 " 其实就是说的 URL (Uniform Resource Locator 统一资源定位符 ).
互联网上的每个文件都有一个唯一的 URL ,它包含的信息指出文件的位置以及浏览器应该怎么处理它 .
URL 的详细规则由 因特网标准 RFC1738 进行了约定 . ( https://datatracker.ietf.org/doc/html/rfc1738 )

 

一个具体的 URL:
https://v.bitedu.vip/personInf/student?userId=10000&classId=100
可以看到 , 在这个 URL 中有些信息被省略了 .
  • https : 协议方案名. 常见的有 http https, 也有其他的类型. (例如访问 mysql 时用的 jdbc:mysql )
  • user:pass : 登陆信息. 现在的网站进行身份认证一般不再通过 URL 进行了. 一般都会省略
  • v.bitedu.vip : 服务器地址. 此处是一个 "域名", 域名会通过 DNS 系统解析成一个具体的 IP 地址.
  • (通过 ping 命令可以看到, v.bitedu.vip 的真实 IP 地址为 118.24.113.28 )
  • 端口号: 上面的 URL 中端口号被省略了. 当端口号省略的时候, 浏览器会根据协议类型自动决定使用
  • 哪个端口. 例如 http 协议默认使用 80 端口, https 协议默认使用 443 端口.
  • /personInf/student : 带层次的文件路径.
  • userId=10000&classId=100 : 查询字符串(query string). 本质是一个键值对结构. 键值对之间使 & 分隔. 键和值之间使用 = 分隔.
  • 片段标识: URL 中省略了片段标识. 片段标识主要用于页面内跳转. (例如 Vue 官方文档: https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5, 通过不同的片段标识跳转到文档的不同章节)

使用 ping 命令查看域名对应的 IP 地址 .
1. 在开始菜单中输入 cmd , 打开 命令提示符
2. cmd 中输入 ping www.baidu.com  , 即可看到域名解析的结果 .

关于 query string
query string 中的内容是键值对结构 . 其中的 key value 的取值和个数 , 完全都是程序猿自己约定的. 我们可以通过这样的方式来自定制传输我们需要的信息给服务器 .
URL 中的可省略部分
  • 协议名: 可以省略, 省略后默认为 http://
  • ip 地址 / 域名: HTML 中可以省略(比如 img, link, script, a 标签的 src 或者 href 属性). 略后表示服务器的 ip / 域名与当前 HTML 所属的 ip / 域名一致.
  • 端口号: 可以省略. 省略后如果是 http 协议, 端口号自动设为 80; 如果是 https 协议, 端口号自动设为 443.
  • 带层次的文件路径: 可以省略. 省略后相当于 / . 有些服务器会在发现 / 路径的时候自动访问/index.html
  • 查询字符串: 可以省略
  • 片段标识: 可以省略

 认识 "方法" (method)

 最常用的:在查询时使用GET,在非查询时使用POST

1. GET 方法
GET 是最常用的 HTTP 方法 . 常用于获取服务器上的某个资源 .
在浏览器中直接输入 URL, 此时浏览器就会发送出一个 GET 请求 .
另外 , HTML 中的 link, img, script 等标签 , 也会触发 GET 请求 .
GET 请求的特点
  • 首行的第一部分为 GET
  • URL query string 可以为空, 也可以不为空.
  • header 部分有若干个键值对结构.
  • body 部分为空.
2. POST 方法
POST 方法也是一种常见的方法 . 多用于提交用户输入的数据给服务器 ( 例如登陆页面 ).
POST 请求的特点
  • 首行的第一部分为 POST
  • URL query string 一般为空 (也可以不为空)
  • header 部分有若干个键值对结构.
  • body 部分一般不为空. body 内的数据格式通过 header 中的 Content-Type 指定. body 的长度由header 中的 Content-Length 指定.
经典面试题 : 谈谈 GET POST 的区别
语义不同 : GET 一般用于获取数据 , POST 一般用于提交数据 .
GET body 一般为空, 需要传递的数据通过 query string 传递, POST query string 一般 为空, 需要传递的数据通过 body 传递
GET 请求一般是幂等的 , POST 请求一般是不幂等的 . ( 如果多次请求得到的结果一样 , 就视为
请求是幂等的).
GET 可以被缓存 , POST 不能被缓存 . ( 这一点也是承接幂等性 ).
3. 其他方法
  • PUT POST 相似,只是具有幂等特性,一般用于更新
  • DELETE 删除服务器指定资源
  • OPTIONS 返回服务器所支持的请求方法
  • HEAD 类似于GET,只不过响应体不返回,只返回响应头
  • TRACE 回显服务器端收到的请求,测试的时候会用到这个
  • CONNECT 预留,暂无使用

认识请求 "报头" (header)

header 的整体的格式也是 " 键值对 " 结构 .
每个键值对占一行 . 键和值之间使用分号分割 .
报头的种类有很多 , 此处仅介绍几个常见的 .

Host

表示服务器主机的地址和端口 .

Content-Length

表示 body 中的数据长度 .

Content-Type

表示请求的 body 中的数据格式 .
Cookie 中存储了一个字符串 , 这个数据可能是客户端 ( 网页 ) 自行通过 JS 写入的 , 也可能来自于服务器 ( 服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据 ).
往往可以通过这个字段实现 " 身份标识 " 的功能 .
每个不同的域名下都可以有不同的 Cookie, 不同网站之间的 Cookie 并不冲突 .
可以通过抓包观察页面登陆的过程 ( 以码云为例 ):
1) 清除之前的 cookie
为了方便观察 , 先清除掉之前登陆的 cookie
在码云页面上 , 点击 url 左侧的图标 , 选择 Cookie
然后移除已经存在的 Cookie

 

请求你中的 Cookie 字段也包含了一个 gitee - session - n 属性 , 里面的值和刚才服务器返回的值
相同 . 后续只要访问 gitee 这个网站 , 就会一直带着这个令牌 , 直到令牌过期 / 下次重新登陆

 这个过程和去医院看病很相似.

1. 到了医院先挂号 . 挂号时候需要提供身份证 , 同时得到了一张 " 就诊卡 ", 这个就诊卡就相当于患者的 " 令牌 ".
2. 后续去各个科室进行检查 , 诊断 , 开药等操作 , 都不必再出示身份证了 , 只要凭就诊卡即可识别出当前患者的身份.
3. 看完病了之后 , 不想要就诊卡了 , 就可以注销这个卡 . 此时患者的身份和就诊卡的关联就销毁了. ( 类似于网站的注销操作 )
4. 又来看病 , 可以办一张新的就诊卡 , 此时就得到了一个新的 " 令牌 "

 

四、HTTPS是什么?

HTTPS(Hyper Text Transfer Protocol Secure,安全的超文本传输协议)是一种基于 SSL/TLS 协议的 HTTP 协议,它是 HTTP 协议的安全版本。HTTPS 协议通过加密通信内容和身份验证来保证数据传输的安全性和完整性,从而可以有效地防止数据在传输过程中被窃取或篡改。

# SSL 和 TLS

SSL(Secure Socket Layer):安全套节层协议。 TLS(Transport Layer Security):传输层安全协议。 SSL(Secure Socket Layer)最早是由浏览器开发厂商网景公司开发的,此公司开发了 SSL 3.0 及 3.0 之前的版本,之后便将 SSL 交给了 IETF(Internet Engineering Task Force)Internet 工程任务组的手中,IETF 以 SSL 3.0 为基础开发了 TLS 1.0,所以可以认为 TLS 是 SSL 的“新版本”。

# IETF

IETF 是 Internet Engineering Task Force(互联网工程任务组)的缩写,是一个国际性的组织,由一群技术专家组成,致力于互联网标准的制定和推广。 IETF 成立于 1986 年,总部设在美国加利福尼亚州的圣何塞,是互联网标准化方面的权威组织之一。其成员来自于全球各地的技术专家和学者,他们通过邮件列表、工作组、研讨会等方式共同协作制定互联网标准。

IETF 的主要工作包括:

  1. 制定互联网标准协议,如 TCP/IP 协议、HTTP 协议、SMTP 协议、DNS 协议等;
  2. 解决互联网技术领域中的问题和挑战,如 IPv6 的推广、网络安全的加强、互联网新技术的研发等;
  3. 促进互联网技术的发展和创新,为互联网行业提供技术支持和标准参考。

IETF 的工作方式是开放、透明和民主的,所有工作均基于自愿和合作原则进行。IETF 组织成员可以自由地参与和贡献技术,共同推动互联网技术的进步和发展。

# HTTPS VS HTTP

HTTPS 协议与 HTTP 协议的区别在于,HTTPS 协议在数据传输过程中使用了 SSL/TLS 协议进行加密和身份验证,另外关于它们两个的默认端口号也是不同的,HTTP 的默认端口号是 80,而 HTTPS 的默认端口号是 443。

# 小结

一句话总结,HTTPS = HTTP + 加密 + 认证 + 完整性保护。


e

五、HTTPS执行流程

HTTPS 执行流程如下:

  1. 客户端使用 HTTPS 访问服务器端。
  2. 服务器端返回数字证书,以及使用非对称加密(概念见最下方),生成一个公钥给客户端(私钥服务器端自己保留)。
  3. 客户端验证数字证书是否有效,如果无效,终止访问,如果有效:
    1. 使用对称加密(概念见最下方)生成一个共享秘钥;
    2. 使用对称加密的共享秘钥加密数据;
    3. 使用非对称加密的公钥加密(对称加密生成的)共享秘钥。
    4. 发送加密后的秘钥和数据给服务器端。
  4. 服务器端使用私钥解密出客户端(使用对称加密生成的)共享秘钥,再使用共享秘钥解密出数据的具体内容。
  5. 之后客户端和服务器端就使用共享秘钥加密的内容内容进行交互了。

如下图所示:

 

# 常见加密

  • 对称加密:使用相同的密钥进行加密和解密的算法。发送方和接收方必须共享密钥才能进行通信,这使得对称加密算法在保密性和性能方面非常高效。常见的对称加密算法包括 AES(高级加密标准)和 DES(数据加密标准)。

  • 非对称加密:也称为公钥加密,使用一对密钥,即公钥和私钥。发送方使用接收方的公钥进行加密,而接收方使用其私钥进行解密。非对称加密算法可以实现加密和数字签名等功能。常见的非对称加密算法包括 RSA 和 ECC(椭圆曲线加密)。

  • 哈希函数:也称为散列函数,将任意长度的输入数据映射为固定长度的输出值(哈希值)。哈希函数通常用于验证数据的完整性,常见的哈希函数包括 MD5、SHA-1、SHA-256 等。哈希函数是不可逆的,即无法从哈希值还原出原始输入。

# 为什么HTTPS同时使用两种加密?

HTTPS 第一次使用的是非对称加密,之后使用对称加密,其原因是,第一次要保证通讯安全,所以非对称加密是最好的选择,而之后,因为已经建立了安全通讯,并且后面传输数据也要考虑通讯的效率问题,所以使用对称加密,及兼顾安全(对称加密秘钥使用非对称加密来保证)同时效率又高。

注;本文四、五部分搬运自什么是HTTPS? | Javaᶜⁿ 面试突击 (javacn.site)

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

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

相关文章

使用Java设计实现一个高效可伸缩的计算结果缓存

目录 概述1.缓存实现1.1 使用HashMapSynchronized实现缓存1.2 使用ConcurrentHashMap代替HashMap改进缓存的并发1.3 完成可伸缩性高效缓存的最终方案1.4 测试代码 2.并发技巧总结 概述 现在的软件开发中几乎所有的应用都会用到某种形式的缓存,重用之前的计算结果能…

回收站数据恢复方法有哪些?五招走起,趁早上手

回收站数据恢复方法是我们在日常操作电脑时不可避免需要面对的问题。本文将对几种常用的回收站数据恢复方法进行介绍,为大家解决恢复回收站数据的常见问题。 一、使用快捷键恢复回收站文件 在我们的电脑中,有很多实用的快捷键,其中有效地恢…

分享干货,多编程语言代码生成神器 CodeGeeX,编码效率提升十倍

CodeGeeX 是一个具有 130 亿参数的多编程语言代码生成预训练模型,采用华为 MindSpore 框架实现,在鹏城实验室“鹏城云脑 II”上使用 1536 个国产昇腾 910 AI 处理器训练而成。 CodeGeexX 支持十多种主流编程语言的高精度代码生成、跨语言代码翻译等功能&…

Django网络空间微博管理信息系统-计算机毕设 附源码85633

Django网络空间微博管理信息系统 摘 要 本论文主要论述了如何使用django框架开发一个网络空间微博管理信息系统,本系统将严格按照软件开发流程进行各个阶段的工作,面向对象编程思想进行项目开发。在引言中,作者将论述该系统的当前背景以及系统…

MidJourney使用教程:一 第一次怎么用Midjourney

实际我是先写的prompts提示这部分,觉得Midjurney使用的方式,市面上已经有一大把文章了,另一方面觉得也没什么可写的。注册一个discard账号写个prompts描述出图就可以了,但其实有很多点其实忽略掉。比如图出来了,这四幅…

cesium封装实现卫星视锥扫描效果

废话不多说,先看效果 先封装视锥效果函数 // 绘制卫星锥体const radarScanner = (position,height,radarId,bottomRadius,color) => {viewer.entities.add({

基于Springboot+vue的垃圾分类网站设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

学生速看!免费领取一台阿里云服务器申请全流程

阿里云学生服务器优惠活动:高效计划,可以免费领取一台阿里云服务器,如果你是一名高校学生,想搭建一个linux学习环境、git代码托管服务器,或者创建个人博客网站记录自己的学习成长历程,拥有一台云服务器是很…

MT4开户平台交易注意事项有哪些?

很多投资者都会选择MT4平台进行开户交易,毕竟MT4平台的起步时间比较早,对一些关注资金安全的投资者来说,MT4平台无疑是他们最佳的选择,那么,在MT4开户平台交易就一定不会发生失误吗?答案就是:不…

红帽考试常见问题解答

问:红帽考试结束后,何时可以收到成绩? 答:美国认证中心会在 3~5 个工作日内将成绩通知邮件发给考生,请注意提供正确的联系信息。例外情况:一些邮件服务器会错误地将结果电子邮件作为垃圾邮件处…

【Python 随练】相反顺序输出字符串

题目 利用递归函数调用方式,将所输入的 5 个字符,以相反顺序打印出来。 简介 在本篇博客中,我们将使用递归函数来解决一个字符打印的问题。我们将介绍递归的概念,并提供一个完整的代码示例来实现将输入的字符以相反顺序打印出来…

驱动开发:基于事件同步的反向通信

在之前的文章中LyShark一直都在教大家如何让驱动程序与应用层进行正向通信,而在某些时候我们不仅仅只需要正向通信,也需要反向通信,例如杀毒软件如果驱动程序拦截到恶意操作则必须将这个请求动态的转发到应用层以此来通知用户,而这…

Apache Superset 身份认证绕过漏洞(CVE-2023-27524)

漏洞简介 Apache Superset是一个开源的数据可视化和数据探测平台,它基于Python构建,使用了一些类似于Django和Flask的Python web框架。提供了一个用户友好的界面,可以轻松地创建和共享仪表板、查询和可视化数据,也可以集成到其他…

二进制搭建 Kubernetes v1.20

k8s集群master01:192.168.179.25 kube-apiserver kube-controller-manager kube-scheduler etcd k8s集群master02:192.168.179.26 k8s集群node01:192.168.179.23 kubelet kube-proxy docker k8s集群node02:192.168.179.22 …

.env 环境变量使用,React项目中使用 .env.*等文件使用

一、公共.env环境变量 二、.env.*环境变量(例如:.env.test 环境变量) 公共 .env 环境变量 在项目开发中,我们不可避免的会需要使用 .env 环境变量,例如在定义接口 api 的 baseURL 时,会根据不同的环境,配置不同的根…

偶数分频器电路设计

目录 偶数分频器电路设计 1、偶数分频器电路简介 2、实验任务 3、程序设计 方法1: 3.1、8分频电路代码如下: 3.2、仿真验证 3.2.1、编写 TB 文件 3.2.2、仿真验证 方法2: 4、计数器进行分频 4.1、仿真测试 偶数分频器电路设计 分…

软件设计原则与设计模式

设计中各各原则同时兼有或冲突,不存在包含所有原则的设计 一:单一职责原则又称单一功能原则 核心:解耦和增强内聚性(高内聚,低耦合) 描述:类被修改的几率很大,因此应该专注于单一的…

YOLOv5 vs YOLOv8

1 概述 YOLOv8 是 ultralytics 公司在 2023 年 1月 10 号开源的 YOLOv5 的下一个重大更新版本。 https://github.com/ultralytics/yolov5 https://github.com/ultralytics/ultralytics 2 网络结构 YOLOv5 N/S/M/L/X 骨干网络的通道数设置使用同一套缩放系数; YOLO…

Axure教程——滑动解锁

本文将教大家如何用AXURE中的动态面板制作滑动解锁 一 、效果 预览地址:https://6dnu91.axshare.com 二、功能 滑动滑块从左到右,提示验证成功 三、制作 拖入一个动态面板组件,如图: 点击动态面板进入,拖入一个矩形…

【生态经济学】R语言机器学习方法在生态经济学领域中的实践技术

查看原文>>>基于R语言机器学习方法在生态经济学领域中的实践技术 近年来,人工智能领域已经取得突破性进展,对经济社会各个领域都产生了重大影响,结合了统计学、数据科学和计算机科学的机器学习是人工智能的主流方向之一&#xff0c…