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

在这里插入图片描述

HTTP 报文格式

在这里插入图片描述

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

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

在这里插入图片描述

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

请求报文格式:

在这里插入图片描述

响应报文格式:

在这里插入图片描述

注:根据 RFC 2616(HTTP/1.1)规定,头部字段中,字段值的前面可以有一个或多个可选的空格,但是字段名中以及字段名和:之间不能有空格。这就是为什么浏览器的开发者工具和一些抓包工具得到的Http报文是可读性更好的带空格版本。

请求报文的请求行

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

在这里插入图片描述

请求行由三部分组成:请求方法 + 空格 + 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.xdnf.cn/news/145554.html

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

相关文章

[JAVAee]MyBatis

目录 MyBatis简介 MyBatis的准备工作 框架的添加 连接数据库字符串的配置 MyBatis中XML路径的配置 ​编辑 MyBatis的使用 各层的实现 进行数据库操作 增加操作 拓展 修改操作 删除操作 查询操作 结果映射 单表查询 多表查询 like模糊查询 动态SQL / MyBa…

第7讲:VBA中利用FIND的代码实现单值查找实例

【分享成果&#xff0c;随喜正能量】心真如&#xff0c;随缘生起一切法&#xff0c;一切法还归于真如。《大乘起信论》讲心真如门就是体&#xff0c;心生灭门就是相用&#xff0c;心生灭、心真如都从一心而起&#xff0c;离开心别无二法。我们想从心真如门修行不易进入&#xf…

基于PHP+MySQL的家教平台

摘要 设计和实现基于PHP的家教平台是一个复杂而令人兴奋的任务。这个项目旨在为学生、家长和教师提供一个便捷的在线学习和教授平台。本文摘要将概述这个项目的关键方面&#xff0c;包括用户管理、课程管理、支付处理、评价系统、通知系统和安全性。首先&#xff0c;我们将建立…

【JVM】双亲委派模型

双亲委派模型 1. 什么是双亲委派模型2. 双亲委派模型的优点 1. 什么是双亲委派模型 提到 类加载 机制&#xff0c;不得不提的一个概念就是“双亲委派模型”。 双亲委派模型指的就是 JVM 中的类加载器如何根据类的全限定名找到 .class 文件的过程 类加载器: JVM 里面专门提供…

小谈设计模式(6)—依赖倒转原则

小谈设计模式&#xff08;6&#xff09;—依赖倒转原则 专栏介绍专栏地址专栏介绍 依赖倒转原则核心思想关键点分析abc 优缺点分析优点降低模块间的耦合度提高代码的可扩展性便于进行单元测试 缺点增加代码的复杂性需要额外的设计和开发工作 Java代码实现示例分析 总结 专栏介绍…

正态分布的概率密度函数|多种正态分布检验|Q-Q图

正态分布的概率密度函数&#xff08;Probability Density Function&#xff0c;简称PDF&#xff09;的函数取值是指在给定的正态分布参数&#xff08;均值 μ 和标准差 σ&#xff09;下&#xff0c;对于特定的随机变量取值 x&#xff0c;计算得到的概率密度值 f(x)。这个值表示…

ISP图像信号处理——平场校正介绍以及C++实现

参考文章1&#xff1a;http://t.csdn.cn/h8TBy 参考文章2&#xff1a;http://t.csdn.cn/6nmsT 参考网址3&#xff1a;opencv平场定标 - CSDN文库 平场校正一般先用FPN(Fixed Pattern Noise)固定图像噪声校正,即暗场校正&#xff1b;再用PRNU(Photo Response Non Uniformity)…

Bug:elementUI样式不起作用、Vue引入组件报错not found等(Vue+ElementUI问题汇总)

前端问题合集&#xff1a;VueElementUI 1. Vue引用Element-UI时&#xff0c;组件无效果解决方案 前提&#xff1a; 已经安装好elementUI依赖 //安装依赖 npm install element-ui //main.js中导入依赖并在全局中使用 import ElementUI from element-ui Vue.use(ElementUI)如果此…

百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 预测部署简介与总览

1. 预测部署简介与总览 本章主要介绍PP-OCRv2系统的高性能推理方法、服务化部署方法以及端侧部署方法。通过本章的学习&#xff0c;您可以学习到&#xff1a; 根据不同的场景挑选合适的预测部署方法PP-OCRv2系列模型在不同场景下的推理方法Paddle Inference、Paddle Serving、…

MySQL学习笔记25

逻辑备份 物理备份 在线热备&#xff1a; 真实案例&#xff1a; 数据库架构是一主两从&#xff0c;但是两台从数据库和主数据不同步。但是每天会全库备份主服务器上的数据到从服务器上。需要解决主从不同步的问题。 案例背后的核心技术&#xff1a; 1、熟悉MySQL数据库常见…

Linux--进程间通信之命名管道

目录 前言概念命名管道的创建命名管道特性 命名管道通信建立连接资源处理 Client && Server通信总结 前言 上一篇文章介绍匿名管道的进程间通信只适合在具有血缘关系的进程间进行通信&#xff0c;但是如果我们想让两个不相关的进程实现通信&#xff0c;使用匿名管道显…

Kafka:安装与简单使用

文章目录 下载安装windows安装目录结构启动服务器创建主题发送一些消息启动消费者设置多代理集群常见问题 工具kafka tool 常用指令topic查看topic删除topic 常见问题参考文献 下载安装 下载地址&#xff1a;kafka-download windows安装 下载完后&#xff0c;找一个目录解压…

notepad++配置python2环境

&#xff08;1&#xff09;python2版本下载&#xff1a;Index of /ftp/python/2.7.8/https://www.python.org/ftp/python/2.7.8/ &#xff08;2&#xff09; 配置notepad环境 1.打开Notepad&#xff0c;点击“插件”-“插件管理器”&#xff0c;在“可用”选项卡中&#xff0c…

前言技术 VScode + 其他插件-2

一、扩展插件 1.1 chinese 作用&#xff1a;使得软件变成中文显示 1.2 prettier 作用&#xff1a;格式化代码 需要多重配置&#xff1b;看视频 第一步&#xff1a;安装 第二步&#xff1a;软件设置 第三步&#xff1a;查询 save , 修改保存时自动对齐格式&#xff0c;打✔…

【软考】系统集成项目管理工程师(五)项目立项管理【5分】

一、 项目建议书 1、定义 项目建议书又称为立项申请&#xff1b;建设单位向上级主管部门提交项目申请时所必须的文件&#xff0c;是对拟建项目提出的框架性的总体设想&#xff1b;是项目发展周期的初始阶段&#xff0c;是国家或上级主管部门选择项目的依据&#xff0c;也是可行…

WordPress外贸建站Astra免费版教程指南(2023)

在WordPress的外贸建站主题中&#xff0c;有许多备受欢迎的主题&#xff0c;如AAvada、Astra、Hello、Kadence等最佳WordPress外贸主题&#xff0c;它们都能满足建站需求并在市场上广受认可。然而&#xff0c;今天我要介绍的是一个不断颠覆建站人员思维的黑马——Astra主题。 …

Hudi第二章:集成Spark

系列文章目录 Hudi第一章&#xff1a;编译安装 Hudi第二章&#xff1a;集成Spark 文章目录 系列文章目录前言一、安装Spark1、安装Spark2.安装hive 二、spark-shell1.启动命令2.插入数据3.查询数据1.转换DF2.查询 3.更新4.时间旅行5.增量查询6.指定时间点查询7.删除数据1.获取…

linux Mysql 8.0.16 安装搭建

文章目录 Mysql 搭建一、安装包下载二、创建用户组用户和修改权限三、配置my.cnf Mysql 搭建 一、安装包下载 mysql 下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 这里有所有的mysql的版本&#xff0c;下载自己需要的版本&#xff0c;我们这里下载 …

视频高效剪辑,批量调整视频速度,让视频更加精彩

你是否曾经需要调整多个视频的速度&#xff0c;但却苦于手动操作效率低下&#xff1f;如果你也遇到了这样的问题&#xff0c;那么是时候采取行动&#xff0c;使用一款高效易用的视频处理工具了。 首先&#xff0c;我们要进入好简单批量智剪&#xff0c;并在板块栏里选择“任务…

搭建自己的搜索引擎之五

一、前言 接上文 搭建自己的搜索引擎之四&#xff0c;下面继续介绍茴香豆茴字的另外两种写法。 二、Jest Jest是ES的Java Http Rest客户端&#xff0c;它主要是为了弥补以前ES自有API缺少HttpRest接口客户端的不足&#xff0c;但因为现在ES官方已经提供了RestClient ,该项目已…