【计算机网络笔记五】应用层(二)HTTP报文

news2024/12/23 8:34:45

在这里插入图片描述

HTTP 报文格式

在这里插入图片描述

HTTP 协议的请求报文和响应报文的结构基本相同,由四部分组成:

  • ① 起始行(start line):描述请求或响应的基本信息;
  • ② 头部字段集合(header):使用 key-value 形式更详细地说明报文;
  • ③ 空行 + CRLF回车换行
  • ④ 消息正文(body):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。

在这里插入图片描述

HTTP 是一个 “纯文本” 的协议,所以头数据都是 ASCII 码的文本,可以很容易地用肉眼阅读。

请求报文格式:

在这里插入图片描述

响应报文格式:

在这里插入图片描述

请求报文的请求行

请求行简要地描述了客户端想要如何操作服务器端的资源。

在这里插入图片描述

请求行由三部分组成:请求方法 + 空格 + URI + 空格 + 版本号 + CRLF回车换行

  • ① 请求方法:是一个动词,如 GETPOST,表示对资源的操作方式;
  • ② 请求目标:请求目标的路径 path,通常是一个 URI,标记了请求方法要操作的资源;
  • ③ 版本号:表示报文使用的 HTTP 协议版本,如 HTTP/1.1 。

这三个部分通常使用空格(space)来分隔:

在这里插入图片描述

URI:统一资源标识符(Uniform Resource Identifier)

响应报文的状态行

在这里它不叫“响应行”,而是叫“状态行”(status line),意思是服务器响应的状态。

在这里插入图片描述

状态行由三部分组成:版本号 + 空格 + 状态码 + 空格 + 原因 + CRLF回车换行

  • ① 版本号:表示报文使用的 HTTP 协议版本,如 HTTP/1.1;
  • ② 状态码:一个 3 位数字,表示处理的结果,比如 200-成功,500-服务器错误,404-资源不存在;
  • ③ 原因描述:作为数字状态码补充,是更详细的解释文字,帮助人理解原因。

头部字段

HTTP协议规定了非常多的头部字段,实现各种各样的功能,但基本上可以分为四大类:

  • ① 通用字段:在请求头和响应头里都可以出现;比如 DateConnection

  • ② 请求字段:仅能出现在请求头里,进一步说明请求信息或者额外的附加条件;比如 HostAccept

  • ③ 响应字段:仅能出现在响应头里,补充说明响应报文的信息;比如 Server

  • ④ 实体字段它实际上属于通用字段,但专门描述 body 的额外信息。比如 Content-Length

对 HTTP 报文的解析和处理实际上主要就是对头字段的处理,理解了头字段也就理解了 HTTP 报文。

常用头字段 - Host 字段

  • Host 是一个请求字段,只能出现在请求头里。

  • Host 同时也是唯一一个 HTTP/1.1 规范里要求必须出现的字段,也就是说,如果请求头里没有 Host,那这就是一个错误的报文

  • Host 字段其实是在告诉服务器这个请求应该由哪个主机来处理。

    在这里插入图片描述

常用头字段 - User-Agent 字段

  • User-Agent 是一个请求字段,只出现在请求头里

  • 它使用一个字符串来描述发起 HTTP 请求的客户端,服务器可以依据它来返回最合适此浏览器显示的页面。

    在这里插入图片描述

常用头字段 - Date 字段

  • Date 字段是一个通用字段,但通常出现在响应头里表示 HTTP 报文创建的时间,客户端可以使用这个时间再搭配其他字段决定缓存策略。

常用头字段 - Server 字段

  • Server 字段是一个响应字段,只能出现在响应头里。 它告诉客户端当前正在提供 Web 服务的软件名称 和 版本号。

  • Server 字段也不是必须要出现的,因为这会把服务器的一部分信息暴露给外界,如果这个版本恰好存在bug,那么黑客就有可能利用 bug 攻陷服务器。所以,有的网站响应头里要么没有这个字段,要么就给出一个完全无关的描述信息。

常用头字段 - Content-Length 字段

  • 实体字段里要说的一个是 Content-Length,它表示报文里 body 的长度,也就是请求头或响应头空行后面数据的长度。

  • 服务器看到这个字段,就知道了后续有多少数据,可以直接接收。如果没有这个字段,那么 body 就是不定长的,需要使用 chunked 方式分段传输。

body 相关的头部字段

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

  • Accept: 表示客户端可解析的数据类型,可以用逗号分隔列出多个类型

  • Accept-Encoding: 表示客户端支持的压缩格式,可省略(不压缩)

  • Accept-Language: 客户端支持的语言

  • Accept-Charset: 通常不发送,浏览器都支持多种字符集

  • Content-Type: 响应实体的真实类型,可以出现在请求头和响应头中

  • Content-Encoding: 服务端告诉客户端响应实体使用了哪种压缩算法,可省略(不压缩)

  • Content-Language: 服务端通常不发送,表示使用的语言,一般可以由 Content-Type 中的字符集推断出来,如 Content-Type:text/html; charset=utf-8

  • Transfer-Encoding: chunked:表示分块传输,每个块包含两部分:长度头和数据块,最后一个块长度为 0 表示结束,即"0\r\n\r\n"

    Transfer-Encoding: chunked 和 Content-Length 两个字段是互斥的,响应报文中这两个字段不能同时出现。

body 数据类型

HTTP 常用的四类数据包括:textimageaudio/videoapplication

每个大类下再细分出多个子类,形式是“type/subtype”的字符串

  • text: 文本格式的可读数据,如 text/html超文本,text/plain纯文本,text/css样式表等

  • image: 图像文件,如 image/gifimage/jpegimage/png

  • audio/video: 音频和视频数据,如audio/mpegvideo/mp4

  • application:格式不固定,可以是文本或二进制,必须由上层应用来解释,常见的有 application/jsonapplication/javascriptapplication/pdf

    如果不知道数据是什么类型就用 application/octet-stream 即不透明的二进制数据

body 数据压缩

在这里插入图片描述

压缩算法:

  • gzip: GUN zip 压缩格式,互联网上最流行的压缩算法
  • deflatezlib 压缩格式
  • br: 一种专门为 http 优化的新压缩算法

压缩对应的头部字段:

在这里插入图片描述

  • Accept 字段标记的是客户端可解析的数据类型,可以用,做分隔符列出多个类型,让服务器有更多的选择余地

    上图中的 Accept 字段含义是在告诉服务器:“我能够看懂 HTML、json 的文本,还有 webp 和 png的图片,请给我这四类格式的数据”

  • Accept-Encoding 字段标记的是客户端支持的压缩格式

  • Content-Encoding:服务器可以选择 Accept-Encoding 字段描述的压缩格式的其中一种来压缩数据,实际使用的压缩格式放在响应头的 Content-Encoding 字段里

    在这里插入图片描述

Accept-EncodingContent-Encoding 都可以省略,即不压缩。

body 语言类型/字符集编码

对应的头字段:

在这里插入图片描述

不过现在的浏览器都支持多种字符集,通常不会发送 Accept-Charset,而服务器也不会发送 Content-Language,因为使用的语言完全可以由字符集推断出来,所以请求头里一般只会有 Accept-Language 字段,响应头里只会有 Content-Type 字段。

body 内容协商的质量值

在 HTTP 协议里用 AcceptAccept-EncodingAccept-Language 等请求头字段进行内容协商的时候,还可以用一种特殊的 “q” 参数表示权重来设定优先级,这里的 “q” 是 “quality factor” 的意思。

权重的最大值是 1,最小值是0.01,默认值是1,如果值是0就表示拒绝。具体的形式是在数据类型或语言代码后面加一个 “;”,然后后面跟上 “q=value”。

在这里插入图片描述

它表示浏览器最希望使用的是 html 文件,权重是1,其次是xml文件,权重是0.9,最后是任意数据类型*/*,权重是0.8

服务器收到请求头后,就会计算权重,再根据自己的实际情况优先输出 HTML 或者 XML。

分块传输

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

“Transfer-Encoding: chunked” 意思是报文里的 body 部分不是一次性发过来的,而是分成了许多的块(chunk)逐个发送。

注意:“Transfer-Encoding: chunked” 和 “Content-Length” 两个字段是互斥的,响应报文中这两个字段不能同时出现,因为一个响应报文的长度要么是已知的,要么是未知的(chunked)。

按范围取数据

  • Accept-Range: bytes 响应报文中出现,表示服务器支持按字节来取范围数据
  • Range: bytes=<start>-<end> 请求报文中出现,表示要取哪段数据
  • Content-Range:<start>-<end>/total 响应报文中出现,表示发送的是哪段数据

主要用途:断点续传、多线程下载。

HTTP 请求方法

目前 HTTP/1.1 规定了八种请求方法,单词都必须是大写的形式:

  • GET:获取资源,可以理解为读取或者下载数据;
  • HEAD:获取资源的元信息;
  • POST:向资源提交数据,相当于写入或上传数据;
  • PUT:类似 POST;
  • DELETE:删除资源;
  • CONNECT:建立特殊的连接隧道;
  • OPTIONS:列出可对资源实行的方法;
  • TRACE:追踪请求 — 响应的传输路径。

GET 和 HEAD

  • GET 的含义是请求从服务器获取资源,这个资源既可以是静态的文本、页面、图片、视频,也可以是由 PHP、Java 动态生成的页面或者其他格式的数据。

  • HEAD 方法与 GET方法类似,也是请求从服务器获取资源,服务器的处理机制也是一样的,但服务器不会返回请求的实体数据,只会传回响应头,也就是资源的“元信息”。

比如,想要检查一个文件是否存在,只要发个 HEAD 请求就可以了,没有必要用 GET 把整个文件都取下来。再比如,要检查文件是否有最新版本,同样也应该用 HEAD,服务器会在响应头里把文件的修改时间传回来。

POST 和 PUT

  • POST 也是一个经常用到的请求方法,使用频率应该是仅次于 GET,应用的场景也非常多,只要向服务器发送数据,用的大多数都是 POST

  • PUT 的作用与 POST 类似,也可以向服务器提交数据,但与 POST 存在微妙的不同,通常 POST 表示的是“新建”“create”的含义,而 PUT 则是“修改”“update”的含义。

在实际应用中,PUT 用到的比较少。而且,因为它与 POST 的语义、功能太过近似,有的服务器甚至就直接禁止使用 PUT 方法,只用 POST 方法上传数据。

响应状态码

目前 RFC 标准里规定的状态码是三位数,所以取值范围就是[000~999]

RFC 标准把状态码分成了五类用数字的第一位表示分类,而0~99不用,这样状态码的实际可用范围就大大缩小了,由 [000~999] 变成了 [100~599]

这五类的具体含义是:

  • 1xx:提示信息,表示目前是协议处理的中间状态,还需要后续的操作;
  • 2xx:成功,报文已经收到并被正确处理;
  • 3xx:重定向,资源位置发生变动,需要客户端重新发送请求;
  • 4xx:客户端错误,请求报文有误,服务器无法处理;
  • 5xx:服务器错误,服务器在处理请求时内部发生了错误。

状态码详表

状态码状态信息含义
100Continue初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)
101Switching Protocols服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)
102Processing由WebDAV(RFC 2518)扩展的状态码,代表处理将被继续执行。
200OK一切正常,对GET和POST请求的应答文档跟在后面。
201Created服务器已经创建了文档,Location头给出了它的URL。
202Accepted已经接受请求,但处理尚未完成。
203Non-Authoritative Information文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝(HTTP 1.1新)。
204No Content没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。
205Reset Content没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。
206Partial Content客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。
207Multi-Status由WebDAV(RFC 2518)扩展的状态码,代表之后的消息体将是一个XML消息,并且可能依照之前子请求数量的不同,包含一系列独立的响应代码。
300Multiple Choices客户请求的文档可以在多个位置找到,这些位置已经在返回的文档内列出。如果服务器要提出优先选择,则应该在Location应答头指明。
301Moved Permanently客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。
302Found类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。
出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。
注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求http://host/~user(缺少了后面的斜杠),有的服务器返回301,有的则返回302。
严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。请参见307。
303See Other类似于301/302,不同之处在于,如果原来的请求是POST,Location头指定的重定向目标文档应该通过GET提取(HTTP 1.1新)。
304Not Modified客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。
305Use Proxy客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。
306Switch Proxy在最新版的规范中,306状态码已经不再被使用。
307Temporary Redirect和 302(Found)相同。许多浏览器会错误地响应302应答进行重定向,即使原来的请求是POST,即使它实际上只能在POST请求的应答是303时才 能重定向。由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向的GET和POST请求;如果是307应答,则浏览器只 能跟随对GET请求的重定向。(HTTP 1.1新)
400Bad Request请求出现语法错误。
401Unauthorized客户试图未经授权访问受密码保护的页面。应答中会包含一个WWW-Authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的Authorization头后再次发出请求。
402Payment Required该状态码是为了将来可能的需求而预留的。
403Forbidden资源不可用。服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致。
404Not Found无法找到指定位置的资源。这也是一个常用的应答。
405Method Not Allowed请求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)对指定的资源不适用。(HTTP 1.1新)
406Not Acceptable指定的资源已经找到,但它的MIME类型和客户在Accpet头中所指定的不兼容(HTTP 1.1新)。
407Proxy Authentication Required类似于401,表示客户必须先经过代理服务器的授权。(HTTP 1.1新)
408Request Timeout在服务器许可的等待时间内,客户一直没有发出任何请求。客户可以在以后重复同一请求。(HTTP 1.1新)
409Conflict通常和PUT请求有关。由于请求和资源的当前状态相冲突,因此请求不能成功。(HTTP 1.1新)
410Gone所请求的文档已经不再可用,而且服务器不知道应该重定向到哪一个地址。它和404的不同在于,返回407表示文档永久地离开了指定的位置,而404表示由于未知的原因文档不可用。(HTTP 1.1新)
411Length Required服务器不能处理请求,除非客户发送一个Content-Length头。(HTTP 1.1新)
412Precondition Failed请求头中指定的一些前提条件失败(HTTP 1.1新)。
413Request Entity Too Large目标文档的大小超过服务器当前愿意处理的大小。如果服务器认为自己能够稍后再处理该请求,则应该提供一个Retry-After头(HTTP 1.1新)。
414Request URI Too LongURI太长(HTTP 1.1新)。
415Unsupported Media Type对于当前请求的方法和所请求的资源,请求中提交的实体并不是服务器中所支持的格式,因此请求被拒绝。
416Requested Range Not Satisfiable服务器不能满足客户在请求中指定的Range头。(HTTP 1.1新)
417Expectation Failed在请求头 Expect 中指定的预期内容无法被服务器满足,或者这个服务器是一个代理服务器,它有明显的证据证明在当前路由的下一个节点上,Expect 的内容无法被满足。
421There are too many connections from your internet address从当前客户端所在的IP地址到服务器的连接数超过了服务器许可的最大范围。通常,这里的IP地址指的是从服务器上看到的客户端地址(比如用户的网关 或者代理服务器地址)。在这种情况下,连接数的计算可能涉及到不止一个终端用户。
422Unprocessable Entity请求格式正确,但是由于含有语义错误,无法响应。(RFC 4918 WebDAV)
423Locked当前资源被锁定。(RFC 4918 WebDAV)
424Failed Dependency由于之前的某个请求发生的错误,导致当前请求失败,例如 PROPPATCH。(RFC 4918 WebDAV)
425Unordered Collection在WebDav Advanced Collections 草案中定义,但是未出现在《WebDAV 顺序集协议》(RFC 3658)中。
426Upgrade Required客户端应当切换到TLS/1.0。(RFC 2817)
449Retry With由微软扩展,代表请求应当在执行完适当的操作后进行重试。
500Internal Server Error服务器遇到了意料不到的情况,不能完成客户的请求。
501Not Implemented服务器不支持实现请求所需要的功能。例如,客户发出了一个服务器不支持的PUT请求。
502Bad Gateway服务器作为网关或者代理时,为了完成请求访问下一个服务器,但该服务器返回了非法的应答。
503Service Unavailable服务器由于维护或者负载过重未能应答。例如,Servlet可能在数据库连接池已满的情况下返回503。服务器返回503时可以提供一个Retry-After头。
504Gateway Timeout由作为代理或网关的服务器使用,表示不能及时地从远程服务器获得应答。(HTTP 1.1新)
505HTTP Version Not Supported服务器不支持请求中所指明的HTTP版本。(HTTP 1.1新)
506Variant Also Negotiates由《透明内容协商协议》(RFC 2295)扩展,代表服务器存在内部配置错误:被请求的协商变元资源被配置为在透明内容协商中使用自己,因此在一个协商处理中不是一个合适的重点。
507Insufficient Storage服务器无法存储完成请求所必须的内容。这个状况被认为是临时的。WebDAV (RFC 4918)
509Bandwidth Limit Exceeded服务器达到带宽限制。这不是一个官方的状态码,但是仍被广泛使用。
510Not Extended获取资源所需要的策略并没有没满足。(RFC 2774)

HTTP 重定向

当一个客户端访问某个 URL 的时候,由于某种原因,服务端会告诉客户端需要重新访问另一个 URL,这就是重定向

最常见的重定向状态码就是301302301俗称“永久重定向”(Moved Permanently), 302 俗称“临时重定向”(“Moved Temporarily”) 。

在这里插入图片描述

Location” 字段属于响应字段,必须出现在响应报文里。但只有配合 301/302 状态码才有意义,它标记了服务器要求重定向的 URL

301 永久重定向

很多客户端记住的是原 URL,但是这个 URL在服务端已经不用了,此时请求服务器会返回 301,浏览器看到 301,就知道原来的 URL “过时”了,就会做适当的优化。比如刷新历史记录、更新书签,下次可能就会直接用新的 URL 访问,省去了再次跳转的成本。

302 临时重定向

302 俗称“临时重定向”(“Moved Temporarily”),意思是原 URL 处于“临时 维护”状态,新的 URL是起“顶包”作用的“临时工”。

浏览器看到 302,会认为原来的 URL 仍然有效,但暂时不可用,所以只会执行简单的跳转页面,不记录新的 URL,也不会有其他的多余动作,下次访问还是用原 URL。

比如,服务器中临时维护某个 URL,就可以返回 302 状态码。

URL 格式

URI 是统一资源标识符,URL 是统一资源定位符,URL 是 URI 的一种具体实现。

URL 格式schema://host:port/path

在这里插入图片描述

  • schema:协议名,表示资源应该使用哪种协议来访问。如 http、https
  • scheme 之后,必须是三个特定的字符 ://,它把 scheme 和后面的部分分离开
  • host:port:// 之后,是资源所在的主机名,即主机名加端口号
  • path是资源在主机上的位置路径
  • 有了协议名和主机地址、端口号,再加上后面标记资源所在位置的path,浏览器就可以连接服务器访问资源了。

查询参数:schema://host:port/path?key=value&key=value

在这里插入图片描述

  • path 后面使用一个"?“分割开来,”?"后面的就是query查询参数部分,query部分是由“&”拼接的多个key=value键值对

获取图片的时候,想要指定不同大小,仅用“协议名 + 主机名 +路径”的方式是无法适应这些场景的,所以 URI 后面还有一个 “query” 部分,它在 path 之后,用一个 “?” 开始,但不包含 “?”,表示对资源附加的额外要求。

片段标识:

在这里插入图片描述

它是 URI 所定位的资源内部的一个“锚点”或者说是“标签”,浏览器可以在获取资源后直接跳转到它指示的位置

但片段标识符仅能由浏览器这样的客户端使用,服务器是看不到的。也就是说,浏览器永远不会把带#fragment 的 URI 发送给服务器,服务器也永远不会用这种方式去处理资源的片段。

URL 编码

在 URI 里只能使用 ASCII 码,但如果要在 URI 里使用英语以外的汉语、日语等其他语言该怎么办呢?

还有,某些特殊的 URI,会在 pathquery 里出现“@&?"等起界定符作用的字符,会导致 URI 解析错误,这时又该怎么办呢?

URI 引入了编码机制,对于 ASCII 码以外的字符集和特殊字符做一个特殊的操作,把它们转换成与 URI 语义不冲突的形式。

URI 转义的规则有点“简单粗暴”,直接把非 ASCII 码或特殊字符转换成十六进制字节值,然后前面再加上一个“%”。

例如,空格被转义成“%20”,“?”被转义成“%3F”。而中文、日文等则通常使用 UTF-8 编码后再转义,例如“银河”会被转义成 “%E9%93%B6%E6%B2%B3”。

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

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

相关文章

VR全景智慧文旅解决方案,助力文旅产业转型升级

引言&#xff1a; 随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;技术正逐渐展露其影响力&#xff0c;改变着旅游业。VR全景智慧文旅解决方案也应运而生&#xff0c;将传统旅游的体验形式从线下扩展到了线上&#xff0c;带来了不一般的文旅体验。 一.VR全…

pandas--->CSV / JSON

csv CSV&#xff08;Comma-Separated Values&#xff0c;逗号分隔值&#xff0c;有时也称为字符分隔值&#xff0c;因为分隔字符也可以不是逗号&#xff09;&#xff0c;其文件以纯文本形式存储表格数据&#xff08;数字和文本&#xff09;。 CSV 是一种通用的、相对简单的文…

优秀工具|使用Reqable替换处理过的动态混淆js

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 1. 目标地址 这篇文章 爬虫神器|这是我过Debugger检测最简单的方法&a…

Qt地铁智慧换乘系统浅学( 二 )将存储的站点线路信息绘制到graphicsView(图形视图部件)

绘制 容器使用测试 画一个黑点到QGraphicsview中准备工作代码 绘制所有站点信息画线路信息准备工作代码 实现放大缩小功能放大缩小按键和建立与槽函数的连接槽函数实现效果如下bug 容器使用 Qt地铁智慧换乘系统浅学&#xff08; 1&#xff09; 测试 画一个黑点到QGraphicsvie…

JupyterNotebook的快捷键

Jupyter Notebook 有两种键盘输入模式&#xff1a;1、命令模式&#xff0c;键盘输入运行程序命令&#xff1b;这时的单元框线是蓝色。2、编辑模式&#xff0c;允许你往单元中键入代码或文本&#xff1b;这时的单元框线是绿色的。 一、命令模式 (在编辑模式下按键 Esc键进入命令…

RISC-V 指令

RISC-V指令都是32位长。 文章目录 R-Type指令格式:I-Type指令格式:S-Type指令格式:B-Type指令格式:U-Type指令格式:UJ-Type指令格式:J-Type指令格式:R4-Type指令格式:F-Type指令格式:vC-Type指令格式:CB-Type指令格式:CIW-Type指令格式:CL-Type指令格式:R-Type指…

华为云Stack的学习(八)

九、华为云Stack网络服务介绍 1.网络服务概览 1.1 租户界面的网络服务 租户登入ManageOne运营面后&#xff0c;可在服务列表中查看到网络服务。用户使用网络服务前管理员需要在Service OM上提前创建好外部网络。 1.2 华为云Stack网络服务全景图 1.3 网络服务承载网元 2.虚拟…

SpringMVC 学习(七)JSON

9. JSON 9.1 简介 JSON&#xff08;JavaScript Object Notation&#xff0c;JS 对象标记&#xff09;是一种轻量级数据交换格式&#xff0c;采用独立于编程语言的文本格式储存和表示数据&#xff0c;易于机器解析和生成&#xff0c;提升网络传输效率。 任何 JavaScript 支持…

IntelliJ IDEA 上 使用git 合并其他分支,合并某一个提交

git 合并其他分支 找到git——>merge… 选择需要合并的分支&#xff0c;不能选和当前分支一样噢 合并&#xff0c;推送即可 合并某个提交到其他分支 点击左下角git——>右键切换分支——>选择需要合并的分支——>选择需要合并的代码——>ch 推送即可

一篇文章彻底搞懂熵、信息熵、KL散度、交叉熵、Softmax和交叉熵损失函数

文章目录 一、熵和信息熵1.1 概念1.2 信息熵公式 二、KL散度和交叉熵2.1 KL散度(相对熵)2.2 交叉熵 三、Softmax和交叉熵损失函数3.1 Softmax3.2 交叉熵损失函数 一、熵和信息熵 1.1 概念 1. 熵是一个物理学概念&#xff0c;它表示一个系统的不确定性程度&#xff0c;或者说是…

redis(3)-hiredis-API函数的调用

1.API函数查询 http://github.com.redis/hiredis 2.直接在hiredis目录下新建 test_redis.c 2.1创建文件: 目录下有hiredis 2.2编译 添加环境变量 2.3运行 ./a.out 直接运行 redis-cli get itc…

算法-贪心+优先级队列-IPO

算法-贪心优先级队列-IPO 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/ipo/description/?envTypestudy-plan-v2&envIdtop-interview-150 1.2 题目描述 2 回溯法 2.1 思路 2.2 代码 class Solution {int result 0;public int findMaximizedCapital(int …

基于ARM+FPGA的ISA总线/MMи总线接口转换设计在轨道交通的应用

总线广泛应用于计算机、工业生产及各种测试设备。ISA总线为IBM公司推出的基于80286CPU的PC&#xff0f;AT微型计算机用扩展总线标准&#xff0c;MMи总线是俄罗斯国内自行设计的专用测试总线&#xff0c;主要用于程控单元模块与MMи总线之间数据及控制信息的交换。在某型导弹测…

竞赛 基于深度学习的视频多目标跟踪实现

文章目录 1 前言2 先上成果3 多目标跟踪的两种方法3.1 方法13.2 方法2 4 Tracking By Detecting的跟踪过程4.1 存在的问题4.2 基于轨迹预测的跟踪方式 5 训练代码6 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习的视频多目标跟踪实现 …

HBase基础架构及存储原理

一、HBase介绍 HBase是Hadoop生态系统中的一个分布式、面向列的开源数据库&#xff0c;具有高可伸缩性、高性能和强大的数据处理能力。广泛应用于处理大规模数据集。 HBase是一种稀疏的、分布式、持久的多维排序map 稀疏&#xff1a;对比关系型数据库和非关系型数据库&#xf…

ubuntu下网卡插入网线后仍然不连接

网卡驱动已经安装&#xff0c;在settings里可以看到该网卡设备&#xff0c;但是插入网线后仍然不会连接&#xff1a; 鼠标点击也无效。 可尝试&#xff1a; 1. ifconfig找到该网卡&#xff0c;比如我的网卡是 enx0826ae3e81aa 2. sudo ifconfig enx0826ae3e81aa down sud…

OpenCV两张图片实现稀疏点云的生成

1 E矩阵 1.1 由F到E E K T ∗ F ∗ K E K^T * F * K EKT∗F∗K E 矩阵可以直接通过之前算好的 F 矩阵与相机内参 K 矩阵获得 Mat E K.t() * F * K;相机内参获得的方式是一个较为复杂的方式&#xff0c;需要使用棋盘进行定位获得&#xff0c;我们这里直接使用了 OpenMVG 提…

C语言学习(1)—— 环境安装和配置

运行C语言和C程序需要安装MinGW和VSCode。 一. 安装MinGW 1、进入官网下载MinGW&#xff1a;https://sourceforge.net/projects/mingw-w64/files/ 2、解压缩 3、配置环境变量 4、检查是否安装成功 二. 安装VSCode 1、进入官网下载VSCode&#xff1a;https://code.visualstud…

中国制造让苹果跪服,将再增加一家中国高科技供应商

日前产业链人士指出由于京东方的OLED面板有力地制衡韩国面板厂商三星和LGD&#xff0c;促使他们降价&#xff0c;而且技术也不错&#xff0c;因此正计划再引入一家中国OLED面板厂商&#xff0c;以进一步促进OLED面板的竞争。 早期苹果的OLED面板完全由三星供应&#xff0c;由此…

SR800-D 5G工业路由器:将无人驾驶汽车的通信能力提升到极限

​大家好&#xff01;欢迎来到今天星创易联的课堂&#xff0c;我是你们的通信老师&#xff0c;今天我们将讨论无人驾驶解决方案&#xff0c;其中包括SR800-D 5G工业路由器的运用。 首先&#xff0c;让我们聚焦于无人驾驶技术的重要性。无人驾驶汽车正在迅速崛起&#xff0c;这种…