网络原理(应用层)->HTTP

前言
大家好我是小帅,今天我们来了解应用层协议HTTP


文章目录

  • 1. HTTP 请求响应格式(重点)
    • 1.1 HTTP 协议的⼯作过程
    • 1.2 HTTP请求格式
    • 1. 3HTTP响应格式
  • 2. HTTP 请求 (Request)
    • 2.1 使⽤ ping 命令查看域名对应的 IP 地址
    • 2.2 URL encode
    • 2.3 认识方法
      • 2.3.1 GET ⽅法
      • 2.3.2 POST ⽅法
    • 2.4认识请求 "报头" (header)
    • 2.5 认识请求 "正⽂" (body)
  • 3. HTTP 响应(response)
    • 3.1 认识 "状态码" (status code)
    • 3.2 认识响应 "报头" (header)


1. HTTP 请求响应格式(重点)

HTTP (全称为 “超⽂本传输协议”) 是⼀种应⽤⾮常⼴泛的 应⽤层协议.
在这里插入图片描述

HTTP 诞⽣与1991年. ⽬前已经发展为最主流使⽤的⼀种应⽤层协议.

HTTP 往往是基于传输层的 TCP 协议实现的. (HTTP1.0, HTTP1.1, HTTP2.0 均为TCP, HTTP3 基于UDP 实现)
⽬前我们主要使⽤的还是 HTTP1.1 和 HTTP2.0 . 当前课堂上讨论的 HTTP 以 1.1 版本为主.

所谓 “超⽂本” 的含义, 就是传输的内容不仅仅是⽂本(⽐如 html, css 这个就是⽂本), 还可以是⼀些其他的资源, ⽐如图⽚, 视频, ⾳频等⼆进制的数据


1.1 HTTP 协议的⼯作过程

当我们在浏览器中输⼊⼀个 “⽹址”, 此时浏览器就会给对应的服务器发送⼀个 HTTP 请求. 对⽅服务器收到这个请求之后, 经过计算处理, 就会返回⼀个 HTTP 响应.
在这里插入图片描述
事实上, 当我们访问⼀个⽹站的时候, 可能涉及不⽌⼀次的 HTTP 请求/响应 的交互过程.

HTTP 协议格式

HTTP 是⼀个⽂本格式的协议. 可以通过 Chrome 开发者⼯具或者 Fiddler 抓包, 分析 HTTP 请求/响应的细节.
在这里插入图片描述

  1. 左侧窗⼝显⽰了所有的 HTTP请求/响应, 可以选中某个请求查看详情.
  2. 右侧上⽅显⽰了 HTTP 请求的报⽂内容. (切换到 Raw 标签⻚可以看到详细的数据格式)
  3. 右侧下⽅显⽰了 HTTP 响应的报⽂内容. (切换到 Raw 标签⻚可以看到详细的数据格式)
  4. 请求和响应的详细数据, 可以通过右下⻆的 View in Notepad 通过记事本打开

我们后面会详细讲fidder的使用。


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

1.2 HTTP请求格式

在这里插入图片描述

  1. ⾸⾏: [⽅法] + [url] + [版本]
    解释:
    在这里插入图片描述
    后面会讲更多的方法。

  2. Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\n分隔;遇到空⾏表⽰Header部分结束。
    在这里插入图片描述

  3. Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有⼀个Content-Length属性来标识Body的⻓度;
    在这里插入图片描述


1. 3HTTP响应格式

案例:
在这里插入图片描述

  1. ⾸⾏: [版本号] + [状态码] + [状态码解释]
    在这里插入图片描述
    后面会讲解更多的状态码。

  2. Header: 请求的属性, 冒号分割的键值对;每组属性之间使⽤\n分隔;遇到空⾏表⽰Header部分结束。
    在这里插入图片描述

  3. Body: 空⾏后⾯的内容都是Body. Body允许为空字符串. 如果Body存在, 则在Header中会有⼀个Content-Length属性来标识Body的⻓度;== 如果服务器返回了⼀个html⻚⾯, 那么html⻚⾯内容就是在body中.==
    在这里插入图片描述
    协议格式总结
    在这里插入图片描述
    为什么 HTTP 报⽂中要存在 “空⾏”?

1 . 因为 HTTP 协议并没有规定报头部分的键值对有多少个. 空⾏就相当于是 “报头的结束标记”, 或者是"报头和正⽂之间的分隔符".

2 . HTTP 在传输层依赖 TCP 协议, TCP 是⾯向字节流的. 如果没有这个空⾏, 就会出现 “粘包问题”.


2. HTTP 请求 (Request)

认识 URL

URL 基本格式

平时我们俗称的 “⽹址” 其实就是说的 URL (Uniform Resource Locator 统⼀资源定位符).
互联⽹上的每个⽂件都有⼀个唯⼀的URL,它包含的信息指出⽂件的位置以及浏览器应该怎么处理它.
URL 的详细规则由 因特⽹标准RFC1738 进⾏了约定:
在这里插入图片描述
⼀个具体的 URL:

https://v.bitedu.vip/personInf/student?userId=10000&classId=100

可以看到, 在这个 URL 中有些信息被省略了

  1. 协议方案名

https : 协议⽅案名. 常⻅的有 http 和 https, 也有其他的类型. (例如访问 mysql 时⽤的jdbc:mysql )

  1. 登录信息

user:pass : 登陆信息. 现在的⽹站进⾏⾝份认证⼀般不再通过 URL 进⾏了. ⼀般都会省略

  1. 服务器地址

v.bitedu.vip : 服务器地址. 此处是⼀个 “域名”, 域名会通过 DNS 系统解析成⼀个具体的 IP 地址. (通过 ping 命令可以看到源IP地址 )

  1. 端口号

端⼝号: 上⾯的 URL 中端⼝号被省略了. 当端⼝号省略的时候, 浏览器会根据协议类型⾃动决定使⽤哪个端⼝. 例如 http 协议默认使⽤ 80 端⼝, https 协议默认使⽤ 443 端⼝.

  1. 带层次的⽂件路径

/personInf/student就是一个文件路径

  1. 查询字符串(query string)

本质是⼀个键值对结构. 键值对之间使⽤ & 分隔. 键和值之间使⽤ = 分隔
query string 中的内容是键值对结构. 其中的 key 和 value 的取值和个数, 完全都是程序猿⾃⼰约定的. 我们可以通过这样的⽅式来⾃定制传输我们需要的信息给服务器.

  1. ⽚段标识

此 URL 中省略了⽚段标识. ⽚段标识主要⽤于⻚⾯内跳转. (例如 Vue 官⽅⽂:https://cn.vuejs.org/v2/guide/#%E8%B5%B7%E6%AD%A5, 通过不同的⽚段标识跳转到⽂档的不同章节)


2.1 使⽤ ping 命令查看域名对应的 IP 地址

  1. 在开始菜单中输⼊ cmd , 打开 命令提⽰符
  2. 在 cmd 中输⼊ ping www.baidu.com , 即可看到域名解析的结果.
    在这里插入图片描述

2.2 URL encode

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现

⽐如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进⾏转义.
在这里插入图片描述
“+” 被转义成了 “%2B”


2.3 认识方法

在这里插入图片描述


2.3.1 GET ⽅法

GET 是最常⽤的 HTTP ⽅法. 常⽤于获取服务器上的某个资源.
在浏览器中直接输⼊ URL, 此时浏览器就会发送出⼀个 GET 请求.
另外, HTML 中的 link, img, script 等标签, 也会触发 GET 请求。
因为HTML里面连接了其他的连接,比如说前端三件套HTML,CSS,JavaScript.

使⽤ Fiddler 观察 GET 请求
打开 Fiddler, 访问 搜狗主⻚, 观察抓包结果.

  1. 是通过浏览器地址栏发送的 GET 请求。
    在这里插入图片描述
  2. 下⾯的和 sogou 域名相关的请求, 有些是通过 html 中的 link/script/img 标签产⽣的, 例如
    在这里插入图片描述
    选中第⼀条
    在这里插入图片描述
    观察请求的详细结果:
GET https://www.sogou.com/ HTTP/1.1
Host: www.sogou.com
Connection: keep-alive
Cache-Control: max-age=0
sec-ch-ua: "Chromium";v="130", "Microsoft Edge";v="130", "Not?A_Brand";v="99"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36 Edg/130.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Sec-Fetch-Site: cross-site
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Referer: https://cn.bing.com/
Accept-Encoding: gzip, deflate, br, zstd
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
Cookie: ABTEST=0|1729997827|v17; IPLOC=CN4401; SUID=4D8CE67859A5A20B00000000671DAC03; cuid=AAGM34WCTwAAAAuipcD0mAEANgg=; SUV=1729997829710527

GET 请求的特点

  1. ⾸⾏的第⼀部分为 GET
  2. URL 的 query string 可以为空, 也可以不为空
  3. header 部分有若⼲个键值对结构.
  4. body 部分为空.

关于 GET 请求的 URL ⻓度问题
HTTP 协议由 RFC 2616 标准定义, 标准原⽂中明确说明: “Hypertext Transfer Protocol – HTTP/1.1,”
does not specify any requirement for URL length.
没有对 URL 的⻓度有任何的限制.
实际 URL 的⻓度取决于浏览器的实现和 HTTP 服务器端的实现. 在浏览器端, 不同的浏览器最⼤⻓度
是不同的, 但是现代浏览器⽀持的⻓度⼀般都很⻓; 在服务器端, ⼀般这个⻓度是可以配置的.


2.3.2 POST ⽅法

POST ⽅法也是⼀种常⻅的⽅法. 多⽤于提交⽤⼾输⼊的数据给服务器(例如登陆⻚⾯).
通过 HTML 中的 form 标签可以构造 POST 请求, 或者使⽤ JavaScript 的 ajax 也可以构造 POST 请求.

使⽤ Fiddler 观察 POST ⽅法
在登陆⻚⾯, 输⼊⽤⼾名, 密码, 验证码之后, 点击登陆, 就可以看到 POST 请求.
在这里插入图片描述
点击这个请求, 查看请求详情

POST https://edu.bitejiuyeke.com/auth/login HTTP/1.1
Host: edu.bitejiuyeke.com
Connection: keep-alive
Content-Length: 117
Access-Control-Allow-Origin: *
Accept: application/json, text/plain, /
Access-Control-Allow-Headers: Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 NetType/WIFI MicroMessenger/7.0.20.1781(0x6700143B) WindowsWechat(0x63090c11) XWEB/11275 Flue
Access-Control-Allow-Methods: PUT,POST,GET,DELETE,OPTIONS
Content-Type: application/json;charset=UTF-8
Origin: https://edu.bitejiuyeke.com
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: https://edu.bitejiuyeke.com/login
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: sidebarStatus=0
{“username”:“asjkslasjak”,“password”:“swPpcXg5PkeA1uL4wGdhkw==”,“uuid”:“6c41dddca30f410abe41db69ade414f3”,“status”:0}

POST 请求的特点:

  1. ⾸⾏的第⼀部分为 POST
  2. URL 的 query string ⼀般为空 (也可以不为空)
  3. header 部分有若⼲个键值对结构
  4. body 部分⼀般不为空. body 内的数据格式通过 header 中的 Content-Type 指定. body 的⻓度
    由 header 中的 Content-Length 指定。

总结:
经典⾯试题: 谈谈 GET 和 POST 的区别:

  1. 语义不同: GET ⼀般⽤于获取数据(比如说:搜索请求获取一个界面), POST ⼀般⽤于提交数据(比如说:登录输入账号密码,获取主页界面).

  2. GET 的 body ⼀般为空, 需要传递的数据通过 query string 传递, POST 的 query string ⼀般为空, 需
    要传递的数据通过 body 传递

  3. GET 请求⼀般是幂等的, POST 请求⼀般是不幂等的. (如果多次请求得到的结果⼀样, 就视为请求是 幂等的).

  4. GET 可以被缓存, POST 不能被缓存. (这⼀点也是承接幂等性)

其他的方法后面我们讲抓包工具在讲。


2.4认识请求 “报头” (header)

header 的整体的格式也是 “键值对” 结构.
每个键值对占⼀⾏. 键和值之间使⽤分号分割.

我们来了解里面的具体内容:

  1. Host

表⽰服务器主机的地址和端⼝.
在这里插入图片描述

  1. Content-Length

表⽰ body 中的数据⻓度.

  1. Content-Type

表⽰请求的 body 中的数据格式

  1. User-Agent (简称 UA)

包含:本机操作系统信息和浏览器信息

在这里插入图片描述

  1. Referer

表⽰这个⻚⾯是从哪个⻚⾯跳转过来的.
比如说:我从搜狗浏览器搜索bilbil到这个界面:
在这里插入图片描述

在这里插入图片描述
表⽰这个⻚⾯是从哪个⻚⾯跳转过来的. 还有登录进入界面时:

https://v.bitedu.vip/login

  1. Cookie
    Cookie 中存储了⼀个字符串, 这个数据可能是客⼾端(⽹⻚)⾃⾏通过 JS 写⼊的, 也可能来⾃于服务器(服务器在 HTTP 响应的 header 中通过 Set-Cookie 字段给浏览器返回数据)
    往往可以通过这个字段实现 “⾝份标识” 的功能.

每个不同的域名下都可以有不同的 Cookie, 不同⽹站之间的 Cookie 并不冲突.

可以通过抓包观察⻚⾯登陆的过程:

1) 清除之前的 cookie

以码云为例
1)为了⽅便观察, 先清除掉之前登陆的 cookie
在这里插入图片描述

2)移除已经存在的 Cookie
在这里插入图片描述
登陆操作
请求:
在这里插入图片描述

响应:
在这里插入图片描述

可以看到, 响应中包含了 2个 Set-Cookie 属性.
其中我们重点关注第二个. ⾥⾯包含了⼀个 gitee-session-n 这样的属性, 属性值是⼀串很⻓的加密之后的信息. 这个信息就是⽤⼾当前登陆的⾝份标识. 也称为 "令牌(token)

3)关闭浏览器再次出现进入码云
第二进入不用输入账号密码,就是浏览器本地存储了
第二次不用账号密码进入码云响应:
在这里插入图片描述
没有了Set-Cookie因为第一次登录响应设置了,第二次登录时请求会把cookie值一起发送个服务器,从而快速找到客户端个人信息。

怎么理解这种机制?

可以这样理解
1)第一次把登录时,把账号密码给服务器,服务器存储这个客服端的个人信息,喜好(主页壁纸),服务器给客户端返回一个(set-cookei)类似于哈希值(也可以理解为令牌),用于下次登录发送请求时,给服务器发送这个值(令牌)服务器快速找到用户的信息(个性化,账号密码等),从而短时间不用登陆。

在这里插入图片描述


2.5 认识请求 “正⽂” (body)

正⽂中的内容格式和 header 中的 Content-Type 密切相关.

上面讲解登录码云就是这样的过程。

这里不多讲,多点去抓包。


3. HTTP 响应(response)

大概是这样的
在这里插入图片描述


3.1 认识 “状态码” (status code)

1)200 OK
这是⼀个最常⻅的状态码, 表⽰访问成功.
在这里插入图片描述

注意: 在抓包观察响应数据的时候, 可能会看到压缩之后的数据, 形如:
在这里插入图片描述
⽹络传输中 "带宽" 是⼀个稀缺资源, 为了传输效率更⾼往往会对数据进⾏压缩

2)404 Not Found

没有找到资源

浏览器输⼊⼀个 URL, ⽬的就是为了访问对⽅服务器上的⼀个资源. 如果这个 URL 标识的资源不存在,
那么就会出现 404
在这里插入图片描述

3)403 Forbidden
表⽰访问被拒绝. 有的⻚⾯通常需要⽤⼾具有⼀定的权限才能访问(登陆后才能访问). 如果⽤⼾没有登陆
直接访问, 就容易⻅到 403.
例如: 查看码云的私有仓库, 如果不登陆, 就会出现 403. 参考链接:https://gitee.com/HGtz2222/blog_python
在这里插入图片描述
4)302 Move temporarily

临时重定向
理解 “重定向”

就相当于⼿机号码中的 “呼叫转移” 功能.
⽐如我本来的⼿机号是 186-1234-5678, 后来换了个新号码 135-1234-5678, 那么不需要让我的朋友知
道新号码,只要我去办理⼀个呼叫转移业务, 其他⼈拨打 186-1234-5678 , 就会⾃动转移到 135-1234-5678 上.

在登陆⻚⾯中经常会⻅到 302. ⽤于实现登陆成功后⾃动跳转到主⻚.响应报⽂的 header 部分会包含⼀个 Location 字段, 表⽰要跳转到哪个⻚⾯.

案例:搜索不孕不育点击广告,服务器从百度跳转到广告主的服务器,这个就是重定向
在这里插入图片描述
5)500 Internal Server Error

服务器出现内部错误. ⼀般是服务器的代码执⾏过程中遇到了⼀些特殊情况(服务器异常崩溃)会产⽣这
个状态码.
咱们平时常⽤的⽹站很少会出现 500 (但是偶尔也能看到)

6)504 Gateway Timeout

当服务器负载⽐较⼤的时候, 服务器处理单条请求的时候消耗的时间就会很⻓, 就可能会导致出现超时
的情况.
这种情况在双⼗⼀等 “秒杀” 场景中容易出现, 平时不太容易⻅到.

总结:
在这里插入图片描述

3.2 认识响应 “报头” (header)

响应报头的基本格式和请求报头的格式基本⼀致.
类似于 Content-Type , Content-Length 等属性的含义也和请求中的含义⼀致.

1)Content-Type

响应中的 Content-Type 常⻅取值有以下⼏种:

1. text/html : body 数据格式是 HTML
2. text/css : body 数据格式是 CSS
3. application/javascript : body 数据格式是 JavaScript
4. application/json : body 数据格式是 JSON

2)认识响应 “正⽂” (body)
正⽂的具体格式取决于 Content-Type. 这个前端会讲,我们把主要的列举出来。

  1. text/html
  2. text/css
  3. application/javascript

后面我们到服务器的时候会讲,请求的生成工具的使用。
好了,今天就到这里了。

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

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

相关文章

JavaScript中执行上下文和执行栈是什么?

一、执行上下文 简单的来说,执行上下文是一种对Javascript代码执行环境的抽象概念,也就是说只要有Javascript代码运行,那么它就一定是运行在执行上下文中 执行上下文的类型分为三种: 全局执行上下文:只有一个&#…

2023上半年下午1,2

问题1不要看图1-1父图,直接看图1-2子图去找 用户就是农户和租户 按数据流输入的词语后面加表字即D的名称,流向D的 信息有包含,子图加了,父图就不平衡了 添加图一般不加实体,加联系(菱形)&#x…

Linux基础(2)

学习地点(泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频 (bilibili.com)) LInux目录介绍 Linux常见目录及作用 /:操作系统的根路径 /bin:存储二进制可执行目录,普通用户和管理员都可以执行的命令 /etc:…

算法简介:动态规划

动态规划 1. 动态规划2. 案例2.1 旅游行程最优化2.2 最长公共子串 1. 动态规划 背包问题:背包可以容纳的重量是4磅,吉他为1磅,价值1500元;音响为4磅,价值3000元;笔记本电脑为3磅,价值为2000元。…

解释区块链技术的应用场景和优势。

区块链技术的应用场景包括但不限于以下几个方面: 1. 金融领域:区块链技术可以用于跨境支付、智能合约、数字货币和资产管理等方面,提供更安全、快速和可追溯的交易体验。 2. 物联网领域:区块链技术可以为物联网设备提供身份验证…

【EMNLP2024】基于多轮课程学习的大语言模型蒸馏算法 TAPIR

近日,阿里云人工智能平台PAI与复旦大学王鹏教授团队合作,在自然语言处理顶级会议EMNLP 2024 上发表论文《Distilling Instruction-following Abilities of Large Language Models with Task-aware Curriculum Planning》。文章提出了一个名为 TAPIR 的知…

棱镜七彩参加“融易行”产融对接南京站项目路演活动 展示供应链安全创新成果

近日,江苏省软件强链“融易行”产融对接南京站活动圆满举行,棱镜七彩作为江苏省重点软件企业受邀参加活动,并展示了公司在供应链安全与开源治理方面的创新成就。 本次活动由江苏省工业和信息化厅、南京市工业和信息化局主办,关键软…

5_api_intro_imagerecognition_html2word

HTML 转 Word API 接口 支持网页转 Word,高效转换为 Word,提供永久链接。 1. 产品功能 超高性能转换效率;支持将传递的 HTML 转换为 Word,支持 HTML 中的 CSS 格式在 Word 文档中的呈现;支持传递网站的 URL&#xff0c…

软件工程 软考

开发大型软件系统适用螺旋模型或者RUP模型 螺旋模型强调了风险分析,特别适用于庞大而复杂的、高风险的管理信息系统的开发。喷泉模型是一种以用户需求为动力,以对象为为驱动的模型,主要用于描述面向对象的软件开发过程。该模型的各个阶段没有…

蓝桥杯 懒洋洋字符串--字符串读入

题目 代码 #include <iostream>using namespace std;int main(){int n;cin>>n;char s[210][4];int ans0;for(int i0;i<n;i){scanf("%s",s[i]);}for(int i0;i<n;i){char as[i][0];char bs[i][1];char cs[i][2];// cout<<a<< <<b…

GS-Blur数据集:首个基于3D场景合成的156,209对多样化真实感模糊图像数据集。

2024-10-31&#xff0c;由韩国首尔国立大学的研究团队创建的GS-Blur数据集&#xff0c;通过3D场景重建和相机视角移动合成了多样化的真实感模糊图像&#xff0c;为图像去模糊领域提供了一个大规模、高覆盖度的新工具&#xff0c;显著提升了去模糊算法在真实世界场景中的泛化能力…

【Python】实战:定义一个圆的类并计算面积和周长

class Circle: # Circle类def __init__(self, r):self._r r # 将半径r赋值给实例属性self._rdef get_area(self): # 计算面积;前后双下划线通常用于特殊方法&#xff0c;而常规方法应使用普通命名pi 3.1415926area pi * self._r * self._rreturn areadef get_perimeter(s…

基于vue框架的的热点推荐个性化新闻系统的设计与实现ka0x6(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;用户,新闻类型,省份,时事新闻,视频新闻 开题报告内容 基于Vue框架的热点推荐个性化新闻系统的设计与实现开题报告 一、项目背景 随着互联网技术的飞速发展和信息量的爆炸式增长&#xff0c;新闻资讯已成为人们日常生活中不可或缺的一…

.NET 10月红队武器库18款工具汇总

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等&#xff08;包括但不限于&#xff09;进行检测或维护参考&#xff0c;未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

计算机毕业设计 | SpringBoot慈善公益平台 爱心互助活动发布管理系统(附源码)

1&#xff0c;项目介绍 爱慈善公益平台&#xff08;love-charity&#xff09;是一个基于 SpringBoot 开发的标准 Java Web 项目。整体页面非常的简约大气&#xff0c;项目的完整度较高&#xff0c;是一个偏向公益论坛的系统。非常适合刚刚接触学习 SpringBoot 的技术小白学习&…

使用Python实现音频降噪

在音频处理领域&#xff0c;背景噪声是一个常见的问题。为了提高音频的质量&#xff0c;我们需要对音频进行降噪处理。本文将介绍如何使用 Python 实现音频降噪。 依赖库安装 在开始之前&#xff0c;我们需要安装以下依赖库&#xff1a; pydub&#xff1a;用于音频文件的读取…

科大讯飞面经,蛮简单的

先来看面经&#xff1a; 下面我来简单聊聊这些问题。 自我介绍 关于如何自我介绍&#xff0c;这个如果还不会或者还没有准备&#xff0c;请先准备好你要如何向面试官介绍自己。 面试本来就是一个自我推销的方式之一&#xff0c;如果自我介绍都不会说&#xff0c;你如何卖个好价…

ARM64汇编寻址、汇编指令、指令编码方式

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ ARM64汇编寻址 1. 立即数寻址&#xff08;Immediate Addressing&#xff09; 这种方式直接将立即数作为操作数&#xff0c;适合小数据或常量。ARM64的立即数…

创建者模式之【建造者模式】

建造者模式 概述 将一个复杂对象的构建与表示分离&#xff0c;使得同样的构建过程可以创建不同的表示。 分离了部件的构造(由Builder来负责)和装配(由Director负责)。 从而可以构造出复杂的对象。这个模式适用于&#xff1a;某个对象的构建过程复杂的情况。由于实现了构建和…

什么是CANN和Ascend C

1 CANN是什么 异构计算架构CANN&#xff08;Compute Architecture for Neural Networks&#xff09;是华为针对AI场景推出的异构计算架构&#xff0c;向上支持多种AI框架&#xff0c;包括MindSpore、PyTorch、TensorFlow等&#xff0c;向下服务AI处理器与编程&#xff0c;发挥…