网络原理3-应用层(HTTP/HTTPS)

目录

  • DNS
  • HTTP/HTTPS
    • HTTP协议报文
    • HTTP的方法
    • 请求报头、响应报头(header)
    • 状态码
    • 构造HTTP请求
    • HTTPS

应用层是我们日常开发中最常用的一层,因为其他层:传输层、网络层、数据链路层、物理层这些都是操作系统和硬件、驱动已经实现好的,我们只能使用人家的。应用层我们可以使用别人已经创建好的协议(HTTP等),也可以自己定义应用层协议

自定义应用层协议要做的事情:

1、明确前后端交互的过程中,需要传递哪些信息

2、明确组织这些信息的格式,前后端要是同一种方式

网络通信常见的数据格式有:xml、JSON、yml

1、xml

采用成对的标签,类似于HTML,但是xml的标签可以自定义,例如 < userID > 1011< userID/>

2、JSON

采用键值对的形式,键和值使用冒号分开,例如 {“userID”:1011,“username”:“zhangsan”}

3、yml

强制了数据组织的格式,要求键值对必须占据一行

DNS

DNS是一个应用层协议,DNS就是域名解析系统。域名对应一个或者多个IP地址,或者多个域名对应一个IP地址。由于IP地址不方便记忆并且不能显示地址组织的名称和性质,人们设计出了域名,并通过域名系统(DNS,Domain Name System)来将域名和IP地址相互映射,使人更方便地访问互联网,而不用去记住能够被机器直接读取的IP地址数串,把域名转换成IP地址,这样的系统就叫域名解析系统。

当某个电脑需要进行域名解析,直接会访问DNS服务器。全世界有非常多设备上网,一个服务器是顶不住的,所以有了镜像服务器。当服务器数据有变更,只需要修改基准的服务器(也叫根服务器),其他镜像服务器从根服务器中同步数据。

HTTP/HTTPS

HTTP全称:HyperTransferProtocol,超文本传输协议,这里的文本指的是字符串,而超文本是在文本的基础上的扩展,也就是说,HTTP不仅可以传输文本,也可以传输图片、音频等其他数据,HTTP是最广泛使用的应用层协议。HTTPS可以认为是HTTP的升级版,安全性比HTTP高。除了安全性外,其他部分都是一样的。HTTP是一问一答模型的协议,客户端发一个请求,服务器就返回一个响应。

HTTP应用场景:

1、使用浏览器,打开网页

2、打开手机App,加载相关的信息

3、服务器之间的调用,大概率也是使用的HTTP

现在HTTP已经更新至3.0版本,3.0基于UDP,但是我们最常使用的还是HTTP/1.1(基于TCP)

HTTP协议报文

在学习HTTP协议报文格式前,我们可以借助抓包工具,来了解HTTP请求响应的详细情况。

选择Fiddler进行抓包

下载网址

选择Fiddler Classic

在这里插入图片描述

选择Try For Free
在这里插入图片描述

邮箱随便填一个,国家随便填一个,然后点击Download For Windows

在这里插入图片描述

打开软件后
在这里插入图片描述

点击Tools,然后点击Options

在这里插入图片描述

点击HTTPS,以上4个选项全部勾选,

工具的使用:

在使用前,先选中左边,ctrl+a+delete清除列表

在这里插入图片描述

然后再随便打开一个网页,在网页中点击刷新,这里拿CSDN网页举例
在这里插入图片描述

此时,会显示抓取到的数据报列表,双击CSDN的数据报列表
在这里插入图片描述

右上方部分是请求,右下方部分是响应
在这里插入图片描述

选择Raw,此时列出的是原始的HTTP请求

如果想要更清楚的观察,可以点击View in Notepad,在记事本中打开

在这里插入图片描述

但是响应的文本显示的是乱码,因为这里的数据是压缩后的二进制数据

在这里插入图片描述

此时点击如下按钮即可
在这里插入图片描述

很容易发现,响应其实就是HTML
在这里插入图片描述

HTTP协议的请求:
在这里插入图片描述

1)首行

GET https://www.csdn.net/ HTTP/1.1

GET表示HTTP请求的方法(method) ,中间部分是URL,表示访问的资源,HTTP/1.1指的是HTTP的版本是1.1版本

2)请求头(红框框)部分
在这里插入图片描述

请求头的每一行都是一个键值对,键和值用冒号分割。

3)空行(请求头的结束标记)

4)正文(body)

有的请求是没有body的,有的有body

如抓取gitee

在这里插入图片描述

HTTP请求的基本格式
在这里插入图片描述

HTTP协议的响应

在这里插入图片描述

1)首行

HTTP/1.1 200 OK

HTTP/1.1表示版本,200表示状态码,OK是状态码的描述

2)响应头

响应头的每一行也是一个键值对,键值对之间用冒号分割

3)空行

4)正文(body)

响应的正文通常是HTML、CSS、JS等

HTTP响应的基本格式:
在这里插入图片描述

URL

URL是唯一资源定位符,网络上的资源可以是一个网页、一个图片、一个文件

协议名://ip地址:端口号/带层次的路径/资源名称?查询字符串#片段标识符

在这里插入图片描述

协议方案名:指使用的是哪种协议

登录信息:进行身份认证,现在已经见不到了

服务器地址:要访问的资源的服务器地址,可以是IP也可以是域名

服务器端口号:IP是确定唯一的主机,端口号是确定主机上的程序,如果不写端口号,浏览器会根据协议类型,自动分配端口,如果是HTTP,端口号是80,如果是HTTPS,端口号是443

带层次的文件路径:确定服务器上的具体资源,

查询字符串:查询字符串是程序猿自定义的键值对结构,是针对访问的资源进行补充说明,键值对之间使用&分割,键和值之间使用=分割,等号两边不能有空格

片段标识符:标识页面中的某个部分,常见于文档类文件。例如某个文档网站中,点开目录,每个章节会对应一个片段标识符

URL encode:

查询字符串是键值对结果,但是它的值里面可能包含特殊符号,而URL中有的特殊符号是有重要意义的,如果值出现了特殊符号,在解析的时候可能会出现问题,所以需要转义,URL encode的作用就是把这些特殊意义的字符进行转义。

例如,在浏览器搜索c++,

在这里插入图片描述

此处把 + 字符转义成 %2B

转义规则:把要转义的字符或者汉字,每个字节以16进制的形式表示出来,然后给每个字节前面加上%

例如,在浏览器中搜索 你好,复制地址栏的URL
在这里插入图片描述

得到如下内容

https://cn.bing.com/search?q=%E4%BD%A0%E5%A5%BD&qs=n&form=QBRE&sp=-1&lq=0&pq=%E4%BD%A0%E5%A5%BD&sc=10-2&sk=&cvid=A7357277519D4F10A61D2542BB754587&ghsh=0&ghacc=0&ghpl=

根据utf编码查得你好这两个字的16进制编码

在这里插入图片描述

HTTP的方法

方法描述了HTTP请求的动作想要干什么,HTTP的方法如下

方法说明支持的HTTP协议版本
GET获取资源1.0 、1.1
POST传输实体主体1.0 、1.1
PUT传输文件1.0 、1.1
HEAD获取报文首部1.0 、1.1
DELETE删除文件1.0 、1.1
OPTIONS询问支持的方法1.1
TRACE追踪路径1.1
CONNECT要求用隧道协议连接代理1.1
LINK建立和资源之间的联系1.0
UNLINK断开连接关系1.0

常用的方法有GET、POST,重点掌握这两个

**GET:**直接在浏览器中输入一个URL,就会触发GET请求

打开Fiddler,在CSDN主页,按住Ctrl点击刷新,Fiddler会获取到如下的内容
在这里插入图片描述

这里说明了,访问一个网页并不是一个HTTP请求就能完成的,而是需要多个HTTP请求得到的结果。

上述带有csdn的都是这个页面触发的请求,其实就是css文件、JavaScript文件、图片文件、字体文件等,在你的浏览器第一次访问这个网页时,会把这些资源保存到你的电脑上,以后再访问的时候就不需要再次获取这些内容了,这个机制就叫浏览器缓存,这样的机制加快了页面展示速度,节省服务器宽度。直接点击刷新,是从缓存中读取数据,按住Ctrl再点刷新可以强制忽略缓存,重新从服务器读取数据。

POST

通常出现在登录、注册以及上传文件的场景

例如,登录Gitee的请求:
在这里插入图片描述

POST和GET的区别:

首先,这两个方法没有本质区别,POST能用的GET也能用,但是在使用习惯上有区别

1、语义不同:一般来说,GET用于表示从服务器获取数据,POST表示提交数据给服务器。

2、传递数据的方式不同:一般来说,GET传递数据,通过是通过query string,把自定义的数据提交给服务器;POST是通过body把自定义数据交给服务器。

3、GET方法对应的请求,通常设计成幂等的,POST方法对幂等性没有要求。幂等: 是其任意多次执行所产生的影响均与一次执行的影响相同,(牛今天吃草,今天挤出来的是奶,明天吃草明天挤出来的也是奶,结果非常稳定,就是幂等的,如果今天吃草今天挤出来的是史,那就是不幂等)。这个区别在今天不是非常合适了,实际开发中还是需要看具体的业务要求,但是http标准文档中建议这么做

4、GET如果设计成幂等性,此时GET的结果可以缓存,POST不设计成幂等性一般不会缓存

请求报头、响应报头(header)

header是键值对格式的,常见的报头:

1、Host:

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

2、Content-Length、Content-Type:

Length表示body中数据的长度,单位字节,Type表示body中数据的格式。如果请求、响应中没有body,也就没有这两个字段。HTTP是基于TCP的(1.1版本),TCP是面向字节流,存在粘包问题,有了Length、Type就能知道HTTP数据包从哪开始从哪结束。Content-Length和Content-Type在响应和请求中都会存在

常见的Content-Type的取值:

Content-Type:text/html;charset=utf8
Content-Type:text/css
Content-Type: application/javascript;charset=utf8
Content-Type: application/jason

3、User-Agent

例如:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0

主要包含了操作系统信息(版本)和浏览器信息(版本),表述了你用的什么设备上网

4、Referer

描述了当前页面是从哪个页面跳转过来的,例如,在搜狗搜索主页中搜索哔哩哔哩,打开哔哩哔哩的主页

在这里插入图片描述

5、Cookie

Cookie也是键值对结构的,使用;分割键值对,使用=分割键和值,键值对的含义是程序员自定义的

在这里插入图片描述

Cookie是浏览器给网站提供的一种“客户端存储数据”的机制

浏览器禁止网页直接访问咱们的硬盘,但是浏览器允许网页通过键值对的方式存储数据,这样的键值对数据是浏览器负责存储到咱们的硬盘中,网页不能干涉。

浏览器在第一次访问某个网站时,浏览器中可能没有Cookie,服务器返回的响应会带有Set-Cookie,Cookie中的键值对就会写到浏览器中,浏览器收到Cookie就会存储到本地硬盘中。接下来浏览器访问网站时,就会带有Cookie

如何查看Cookie?

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

可以选择删除Cookie,删除之后本地存储的Cookie也会删除掉,在下一次访问这个网站时,服务器返回的响应会带有Set-Cookie,浏览器会根据这个重新存储Cookie。

总结:

Cookie是什么?

浏览器本地持久化存储数据的机制,按照键值对方式存储,键值对内容程序员可以自定义,按照域名为维度分别进行存储,每个网站都有自己的Cookie,互不影响。

Cookie从哪里来?

服务器返回的响应数据中会包含Set-Cookie字段。

Cookie到哪里去?

Cookie虽然会存储到本地,但是目的并不如此,存储好之后,后续浏览器再次访问同一个网站的服务器时,会把之前存储的Cookie带上,发送给服务器。为什么发回来还要再发回去?Cookie中的数据在客户端中需要使用到,在服务器这边也要使用到。

Cookie中存储的键值对是程序员自己定义的

Cookie经典使用场景:
在这里插入图片描述

总结:

常见的HTTP响应头属性:

  1. Content-Type: 指定返回的资源的MIME类型。
  2. Content-Length: 指定返回的资源的长度,单位是字节。
  3. Cache-Control: 控制响应的缓存行为。
  4. Connection: 控制持久连接。
  5. Date: 消息发出的时间。
  6. ETag: 资源的版本/修订号。
  7. Expires: 资源的过期时间。
  8. Last-Modified: 资源最后被修改的时间。
  9. Server: 服务器软件名称。
  10. Set-Cookie: 设置客户端的cookie。
  11. WWW-Authenticate: 用于HTTP认证。
  12. Access-Control-Allow-Origin: 跨域资源共享(CORS)策略。
  13. X-Frame-Options: 控制资源是否可以在iframe中显示。
  14. Content-Disposition: 控制内容的下载方式。
  15. Content-Encoding: 指定内容的编码格式。
  16. Content-Language: 指定内容的语言。
  17. Content-Security-Policy: 定义了网页的资源加载策略。
  18. Strict-Transport-Security: 告诉浏览器仅通过HTTPS连接。
  19. X-Content-Type-Options: 防止MIME类型混淆攻击。
  20. X-XSS-Protection: 启用浏览器的XSS过滤和阻断功能。
  21. Location: 用于重定向的URL。
  22. Retry-After: 告诉客户端在多长时间后再次发起请求。
  23. Vary: 告诉缓存服务器何时需要重新请求。
  24. Accept-Ranges: 指定服务器是否支持范围请求。
  25. Allow: 指定允许的HTTP方法。
  26. Cross-Origin-Embedder-Policy: 控制跨源嵌入策略。
  27. Cross-Origin-Opener-Policy: 控制跨源窗口行为。
  28. Cross-Origin-Resource-Policy: 控制跨源资源的加载策略。

常见的HTTP请求属性:

  1. Accept: 客户端能够处理的媒体类型。
  2. Accept-Language: 客户端能够接受的语言。
  3. Accept-Encoding: 客户端能够接受的编码格式。
  4. Authorization: 客户端发送的认证信息。
  5. Cache-Control: 客户端的缓存指令。
  6. Connection: 控制持久连接。
  7. Content-Length: 请求体的长度。
  8. Content-Type: 请求体的媒体类型。
  9. Cookie: 客户端发送的cookie信息。
  10. Host: 请求的服务器域名和端口。
  11. Origin: 请求的源。
  12. Referer: 请求的来源URL。
  13. User-Agent: 客户端的用户代理信息。
  14. X-Requested-With: 通常用于标识Ajax请求。

请求头用于向服务器提供额外的信息,以帮助服务器正确处理请求。

状态码

状态码表示访问一个页面请求是否成功,以及请求失败的原因

常见的状态码:

200 OK : 表示成功

404 Not Found :表示浏览器根据url访问的资源在服务器上没有找到,url的路径不对

403 Forbidden :访问被拒绝(没有权限)

405 Method Not Allowed :方法不支持

500 Internal Server Error :服务器内部错误,一般是服务器端代码出bug,抛出异常但是没有catch

504 Gateway Timeout :超时,响应没有在规定时间内返回

302 Found :重定向,访问A网站时会自动跳转到B网站,此时响应中返回的状态码就是302,并且在响应头中Location属性(包含B网站的地址)。浏览器收到302状态码后会自动跳转到Location中的网站。

构造HTTP请求

使用工具Postman,下载链接
在这里插入图片描述
点击next
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样就可以自己构造HTTP请求了

HTTPS

HTTP协议内容是以文本的形式明文传输,传输的数据容易被黑客、运营商劫持和篡改,HTTPS在HTTP的基础上,引入了加密机制,解决了上述的问题。

明文:传输的原始数据

密文:对明文进行加密后的数据

加密:明文–>密文

解密:密文–>明文

密钥:进行加密、解密的工具

对称加密:加密和解密都使用同一个密钥

非对称加密:使用一对密钥,使用A加密就使用B解密,使用B加密则使用A解密。这两个密钥一个公开一个私藏,公开的叫公钥,私藏的叫私钥。

关于HTTPS的工作过程:

这里只介绍加密过程,因为HTTPS是在HTTP基础上引入了加密机制,其他内容都是一样的。
在这里插入图片描述

未加密:客户端明文传输数据,很容易被黑客入侵,获取到请求的内容,并进行篡改

1、引入对称加密

在这里插入图片描述

一个服务器对应多个客户端,每个客户端的密钥都不同,要求每个客户端连上服务器的时候自己随机生成一个对称密钥,服务器拿到这个密钥才能进行解密,因此密钥也需要进行传输。
在这里插入图片描述

但是,密钥是明文传输的,黑客很容易获取到密钥。

2)引入非对称加密:

通过非对称加密,对要传输的密钥进行加密,而传输的数据还是使用对称加密。

在这里插入图片描述

上述流程看似安全,实则存在缺陷
在这里插入图片描述

3)引入证书

问题的关键是,能让客户端辨别出拿到的公钥是不是正确的。如何证明公钥是正确的?引入第三方公证机构,想搭建服务器,使用HTTPS,就需要在公证机构申请证书。申请证书时就要向机构提供信息:网站的域名,备案号,公钥等,公证机构根据这些信息生成一个证书(电子版),证书的内容包含了证书发布机构、证书有效期、公钥、证书所有者、签名等。签名则是保证证书合法性的重要内容。

服务器申请到证书后,后续客户端从服务器拿公钥,就不是拿公钥,而是拿整个证书。客户端可以根据证书的签名来验证证书的合法性。

签名的生成:校验和+加密,把证书中的所有字段综合在一起计算校验和,然后公证机构生成一对公钥私钥,公证机构持有私钥,公钥分发给客户端,公证机构拿着私钥对校验和进行加密得到数字签名。数字签名其实就是加密后的校验和。

客户端验证数字签名:

1、客户端把证书中各个字段再计算一次校验和,得到checksum1

2、客户端使用公证机构发的公钥对数字签名进行解密得到checksum2

3、比较,如果checksum1==checksum2证明当前证书和服务器发出的证书是一样的,如果checksum1!=checksum2,说明证书的内容被黑客篡改过。

客户端手里的公证机构的公钥是操作系统内置的,而不是通过网络获取的,所以不存在公证机构的公钥是黑客伪造的。

另外黑客不能做到:篡改数据后,让数字签名解密出来的checksum1和篡改后的checksum2相等,因为黑客篡改数据后需要使用公证机构的私钥来加密。如果黑客自己生成一个私钥,这时客户端拿着公证机构的公钥,也解密不了。

总结:HTTPS工作流程

1、引入对称加密

2、传输对称密钥

3、对 对称密钥进行加密,引入非对称加密

4、中间人攻击

5、引入证书,解决中间人攻击

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

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

相关文章

matlab初学习记录

文章目录 内置函数与变量matlab 编辑器数组等间距向量数组函数数组索引提取多个元素 对向量执行数组计算查看文档 画图添加注释 实践导入数据关系运算符分支恒星运动 matlab 学习看入门之旅 先计算等号右边再计算等号左边。 工作区记录等号右边的变量。 ; 表示的是抑制输出。…

微服务SpringSession解析部署使用全流程

目录 1、SpringSession简介 2、实现session共享的三种方式 1、修改Tomcat配置文件 2、Nginx负载均衡策略 3、redis统一存储 0、准备工作 1、本地服务添加依赖 2、修改本地服务配置文件 3、添加application.properties文件 4、添加nacos - redis配置 5、修改本地项目…

【Android 14源码分析】WMS-窗口显示-第一步:addWindow

忽然有一天&#xff0c;我想要做一件事&#xff1a;去代码中去验证那些曾经被“灌输”的理论。                                                                                  – 服装…

kubeadm部署k8s集群,版本1.23.6;并设置calico网络BGP模式通信,版本v3.25--未完待续

1.集群环境创建 三台虚拟机&#xff0c;一台master节点&#xff0c;两台node节点 (根据官网我们知道k8s 1.24版本之后就需要额外地安装cri-dockerd作为桥接才能使用Docker Egine。经过尝试1.24后的版本麻烦事很多&#xff0c;所以此处我们选择1.23.6版本) 虚拟机环境创建参考…

Stream流的初步认识,Stream流的思想和获取Stream流

一.Stream流的作用 package com.njau.my_stream;import java.util.ArrayList;/*** 目标&#xff1a;认识Stream流* 案例&#xff1a;将以“张”开头的人名筛选出来到一个新的集合中去&#xff0c;再将其中三个字的名字的筛选出来到新集合中去*/ public class StreamDemo1 {pub…

智慧农业案例 (一)- 自动化机械

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案&#xff0c;帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、领域知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&…

【JavaSE】反射、枚举、lambda表达式

目录 反射反射相关类获取类中属性相关方法常用获得类相关的方法示例常用获得类中属性相关的方法示例获得类中注解相关的方法 反射优缺点 枚举常用方法优缺点 枚举与反射lambda表达式语法函数式接口简化规则使用示例变量捕获集合中的应用优缺点 反射 Java的反射&#xff08;refl…

【Python报错已解决】KeyError: ‘key‘

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 专栏介绍 在软件开发和日常使用中&#xff0c;BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…

师生健康信息管理:SpringBoot技术突破

第4章 系统设计 4.1 系统体系结构 师生健康信息管理系统的结构图4-1所示&#xff1a; 图4-1 系统结构 登录系统结构图&#xff0c;如图4-2所示&#xff1a; 图4-2 登录结构图 师生健康信息管理系统结构图&#xff0c;如图4-3所示。 图4-3 师生健康信息管理系统结构图 4.2…

若依从redis中获取用户列表

因为若依放入用户的时候&#xff0c;会在减值中添加随机串&#xff0c;所以用户的key会在redis中变成&#xff1a; login_tokens:6af07052-b76d-44dd-a296-1335af03b2a6 这样的样子。 如果用 Set<Object> items redisService.redisTemplate.keys("login_tokens&…

基于ROS的激光雷达点云物体检测

环境 RTX 2060&#xff08;后面关于算力&#xff09; ubuntu 18.04 ROS melodic &#xff08;ubuntu 18.04安装ROS melodic可以参看我这篇文章ubuntu 18.04安装ROS系统&#xff09; CUDA 10.0 cudnn 7.6.5 caffe cmake 3.18.0&#xff08;不能低于3.12.2&#xff09; opencv 3…

uniapp 常用高度状态栏,导航栏,tab栏,底部安全高度

实际效果 使用 //使用 let posConfig this.getPosConfig(); // 传false返回值为 px大小 console.log(posConfig.safeBottomH) // 入参 是否转换为rpxgetPosConfig(toRpx true) {const systemInfo uni.getSystemInfoSync();// #ifdef MPconst menuButtonInfo uni.getMenuBu…

Leecode热题100-48.旋转图像

给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,2,3],[4,5,6],[7,8,9]] 输出…

Docker 安装 Citus 单节点集群:全面指南与详细操作

Docker 安装 Citus 单节点集群&#xff1a;全面指南与详细操作 文章目录 Docker 安装 Citus 单节点集群&#xff1a;全面指南与详细操作一 服务器资源二 部署图三 安装部署1 创建网络2 运行脚本1&#xff09;docker-compose.cituscd1.yml2&#xff09;docker-compose.cituswk1.…

YOLOv8改进,YOLOv8改进主干网络为GhostNetV3(2024年华为的轻量化架构,全网首发),助力涨点

摘要 GhostNetV3 是由华为诺亚方舟实验室的团队发布的,于2024年4月发布。 摘要:紧凑型神经网络专为边缘设备上的应用设计,具备更快的推理速度,但性能相对适中。然而,紧凑型模型的训练策略目前借鉴自传统模型,这忽略了它们在模型容量上的差异,可能阻碍紧凑型模型的性能…

基于单片机语音智能导盲仪仿真设计

文章目录 前言资料获取设计介绍设计程序具体实现截图设计获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师&#xff0c;一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们…

发现一款适合所有用户小巧且强大的编辑器(完美替换Windows记事本)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 编辑器 📒📝 功能亮点📝 适用场景📝 安装使用📝 替换Windows记事本🎈 获取方式 🎈⚓️ 相关链接 ⚓️📖 介绍 📖 今天,发现一款小巧(仅1.26M)且功能强大的编辑器,适用于文本编辑,编程开发等,应该说是适…

负载均衡(Load Balancing)是一种计算机技术,用于在网络应用中分配工作负载,以优化资源使用、最大化吞吐量、减少响应时间以及避免过载。

负载均衡&#xff08;Load Balancing&#xff09;是一种计算机技术&#xff0c;用于在网络应用中分配工作负载&#xff0c;以优化资源使用、最大化吞吐量、减少响应时间以及避免过载。通过将任务均匀地分布在多个组件上&#xff0c;如服务器、网络链接、CPU、硬盘等&#xff0c…

Linux安装RabbitMQ安装

1. RabbitMQ介绍 1.1 RabbitMQ关键特性 异步消息传递&#xff1a;允许应用程序在不直接进行网络调用的情况下交换消息。 可靠性&#xff1a;支持消息持久化&#xff0c;确保消息不会在系统故障时丢失。 灵活的路由&#xff1a;支持多种路由选项&#xff0c;包括直接、主题、…

G502 鼠标自定义(配合 karabiner)

朋友送了我一个 G502 多功能鼠标&#xff0c;除了鼠标正常的左键、右键和滑轮外&#xff0c;额外提供了 6 个按键&#xff0c;并且滑轮可以向左、向右、向下按下&#xff0c;共计 9 个自定义的按键。 虽然是 karabiner 的老用户&#xff0c;但一直在使用 TrackPad&#xff0c;所…