计算机网络——HTTP协议

1. HTTP的概述

        HTTP(超文本传输协议),定义在RFC2616中,是用于分布式和协作式多媒体系统之间交互的应用层通信协议。

1.1 无状态

        HTTP是一个无状态协议,意味着它不保存先前交互的记录。每个请求都独立于其他请求处理。

1.2 分布式和协作式多媒体系统间的交互

        HTTP旨在促进客户端和服务器在分布式系统中的互动,包括传输多媒体数据和在线协作。

1.3 HTTP的客户端/服务器模型

        客户端(通常是网络浏览器)向服务器(托管网站或应用程序的服务器)发送请求。然后服务器处理这个请求,并向客户端发送回应。

1.4 请求-响应连接

        客户端和服务器之间建立连接,以传输请求和响应。这可能是持久连接(为多个请求-响应保持开放)或非持久连接(每对请求-响应新建连接)。

1.5 HTTP消息:HTTP通信以消息的形式进行

        主要有两种类型的HTTP消息:请求和响应。

        请求通常由客户端发出,用于请求服务器上的特定资源,而响应则由服务器返回,以提供所请求的资源。

1.6 可靠的传输或会话协议

        HTTP依赖于可靠的传输协议,如TCP(传输控制协议),以确保传输的数据可靠。TCP确保数据按正确的顺序到达目的地,并且没有损坏。

1.7 GET请求

        大多数HTTP通信涉及到GET请求。GET请求用于请求服务器上特定资源的表示。例如,当您在浏览器中输入URL时,通常会向Web服务器发送一个GET请求,以获取相应的网页。

1.8 双向连接

        HTTP基于客户端-服务器通信模型,其中客户端发送请求到服务器,服务器则以响应方式回应。客户端和服务器之间的连接通常在通信期间保持打开,这允许双向交互,例如实时数据流传输。

        HTTP/1.1和之前的版本通常为每个请求/响应使用单独的TCP连接,这可能在某些情况下会导致延迟过高。

        HTTP/2和HTTP/3引入了改进,通过使用单个双向连接来处理多个请求和响应,以优化性能。

        总之,HTTP是Web的重要协议,允许Web浏览器可靠地向Web服务器请求资源,并提供保持双向连接以进行持续交互的能力。

2. HTTP协议的中介

        客户端、服务器和中介都可能具有缓存能力。图中展示了这些实体之间请求和响应的流程。

2.1 HTTP中介

        在HTTP通信中,“中介”(Intermédiaire)可以理解为在客户端和服务器之间传递信息的任何实体

        建立了一个连接链。

        HTTP的选项可以应用到最接近的中介上(隧道除外)。

        最终接收者。

        所有的中介。

        网络中的一个中介(比如代理、网关或隧道)可以介于客户端和服务器之间。

2.2 代理(Proxy)

        它像是一个中转站,客户端发送的请求会先到达代理,代理有可能会修改这个请求,然后再发送给真正的服务器。

2.3 网关(Passerelle)

        如果客户端和服务器之间的通信协议不同,网关会将客户端的请求翻译成服务器能理解的协议。

2.4 隧道(Tunnel)        

        隧道更像是一个直通管道,它不会修改经过的信息。当需要通过某些特殊的中介(比如防火墙)时,就会用到隧道。

2.5 缓存

        客户端、服务器和中介可能都设有缓存,以提高数据传输效率和减少延迟。

2.6 数据流

        客户端发送请求到服务器,以及服务器响应返回给客户端的过程,中间可能通过一个中介来完成数据传输。

        简单来说,这些描述指出在HTTP协议中,信息可以通过一个或多个中介(如代理服务器、网关等)来传递。每个中介都可以根据HTTP协议的选项进行操作,但是隧道类型的中介是个例外,它通常只是简单地传递信息而不做修改。最终,信息会到达最终的接收者,也就是目标服务器。在这个过程中,每个中介都可能会对信息流产生影响。

3. HTTP协议中的两种链接

3.1 非持久连接

        对于每个请求的URI(统一资源标识符),都会建立一个单独的连接。这种方式可能会导致服务器负载过重,互联网拥堵。在HTTP1.1之前的版本中,默认的连接是非持久的,有时候甚至不支持持久连接。

3.2 持久连接

        通过一次连接,可以发送多个请求并接收多个响应,不需要每次都重新建立连接。这减少了开启和关闭连接的频繁操作,提高了效率。

3.2.1 管道化(Pipeline)

        在HTTP1.1中,客户端可以同时发送多个请求,而不用等待对前一个请求的响应。服务器按照请求接收的顺序发送回响应。这进一步提高了传输效率。

3.2.2 持久性

        如果服务器关闭了连接,客户端应该准备好重新发起请求。这意味着客户端在连接被关闭时能够恢复通信,而不会丢失请求。

        简而言之,HTTP的持久连接和管道化技术都是为了让网页加载更快、更高效,减少因频繁建立连接造成的延迟和资源消耗。

4. HTTP消息结构——HTTP消息的基本组成部分

        两种类型的消息:请求(requête)和响应(réponse)

        消息结构:一个消息包含四个部分

4.1 起始行(start-line)

4.1.1 基本概念

        HTTP消息的第一行非常重要,因为它定义了消息是一个请求还是一个响应:

        对于请求来说,包括了方法(GET、POST等)、请求的URI和HTTP版本。

        对于响应来说,包括了HTTP版本、状态码和状态消息。

4.1.2 具体解释

        起始行(start-line):这一行指定了消息的类型。它可以是请求行(Request-Line)或状态行(Status-Line)。

        如果是请求行,它会包含三个部分:

4.1.2.1 方法(Method)        

        这指的是HTTP请求的类型,例如GET(获取数据)、POST(发送数据)等。

        HTTP协议中不同方法的说明:

        GET:用于请求访问由URI(统一资源标识符)所标识的资源。

        HEAD:类似于GET方法,但是服务器在响应中只返回头部信息,不返回实际的资源内容。

        POST:用于向指定的资源提交数据,例如,提交表单或上传文件。数据包含在请求体中。

        PUT:用于上传指定的资源。如果URI指向的资源不存在,服务器可以创建这个资源。

        DELETE:请求服务器删除指定的URI所标识的资源。

        TRACE:回显服务器收到的请求,主要用于测试或诊断。

        CONNECT:将连接转换为透明的TCP/IP隧道,通常用于SSL加密服务器的连接(通过HTTP代理)。

        OPTIONS:用于描述通信选项的测试方法,用于了解服务器或其他网络组件的能力。

        这些方法定义了客户端与服务器之间交互的不同方式,使得HTTP协议能够支持多种不同的网络操作。

4.1.2.2 请求目标(request-target)

        通常是你要请求的网址,即统一资源标识符(URI)。

4.1.2.3 协议版本(HTTP-Version)

        表明使用的HTTP协议的版本,如HTTP/1.1。

        每部分之间通常用空格分开,并且以CRLF(回车换行)符号结束这一行。所以,如果是一个请求,起始行会告诉服务器你想要做什么(方法),你想在哪里做(请求目标),以及你打算使用哪个版本的HTTP协议来通信。

4.2.头部(message-header)

4.2.1 基本定义

        跟随起始行,包含了键值对形式的元数据,如内容类型、内容长度、缓存控制等。

        HTTP头部:它由一个名字和一个值组成,这些都是用ASCII码编码的。

        一个消息头的格式是这样的:field-name: field-value

        举例来说,Content-Type: text/html就是一个消息头,其中Content-Type是字段名,text/html是字段值。

4.2.2 头部类型

        HTTP头部可以是通用头部,也可以是请求或响应特有的头部,或者是与消息体中所含实体相关的头部。

4.2.2.1 通用头部(General header)

        是指那些请求和响应消息都可能使用的头部,比如`Date`或者`Cache-Control`

        通用头部:这些头部与整个消息有关,而不是仅与消息的内容(即消息体)有关。

        用途:通用头部用于控制消息的处理过程,这个处理过程可能涉及客户端、服务器或中间件。它们也可以提供一些额外的信息。

        特性:通用头部不特定于任何一个请求、响应或消息体中的实体。

        通用头部的例子包括:

        Cache-Control:指示缓存行为。

        Connection:指示是否持久连接。连接选项,不会通过代理传递。例如:`Connection: close`,表示关闭连接,不使用持久连接。

        Date:消息创建的日期和时间。消息生成的日期。示例为`Date: Tue, 15 Nov 1994 08:12:31 GMT`,表示消息是在1994年11月15日格林尼治时间上午8点12分31秒生成的。

        Transfer-Encoding:传输消息体时使用的编码类型。

        no-cache:指示缓存必须向服务器验证响应的有效性。

        no-store:指示请求或响应不能被缓存。

        这些头部用于控制HTTP消息如何被发送、接收和处理,它们对于管理网络连接和缓存行为非常重要。        

4.2.2.2 请求头部(Request header)

        是指那些只在请求消息中使用的头部,比如User-Agent或Accept。

        请求头部的一些例子:

        Accept:客户端能够接收的媒体类型。示例`Accept: audio/*; q=0.2, audio/basic`表示客户端优先接收基本的音频类型,但也可以接受其他类型的音频内容,尽管它们的优先级较低(q=0.2)。

        Accept-Charset:客户端支持的字符集。示例`Accept-Charset: iso-8859-5, unicode-1-1;q=0.8`表示客户端优先接受ISO-8859-5编码的字符集,但也可以接受Unicode-1-1,尽管其优先级稍低(q=0.8)。

        Accept-Encoding:客户端支持的内容编码。示例`Accept-Encoding: 表示客户端接受任何类型的内容编码。

        Accept-Language:客户端优先接受的语言。示例`Accept-Language: en-gb;q=0.8, en;q=0.7`表示客户端优先接受英国英语,其次是其他类型的英语。

        Accept-Ranges:服务器可以接受的部分请求的单位。示例`Accept-Ranges: bytes`表示服务器可以处理以字节为单位的部分请求。

        Allow:服务器支持的HTTP方法。示例`Allow: GET, HEAD, PUT`表示服务器支持GET、HEAD和PUT这三种请求方法。

        If-Modified-Since:告诉服务器如果请求的资源自指定的日期之后被修改过,就发送资源。示例`If-Modified-Since: Sat, 29 Oct 1994 19:43:31 GMT`表示如果自1994年10月29日19点43分31秒GMT之后资源有变更,就发送该资源;否则,返回304状态码,表示资源未修改。

        这些请求头部使得HTTP请求可以更精确地告诉服务器客户端的具体需求和支持的特性,以便服务器可以发送符合客户端要求的响应。

4.2.2.3 响应头部(Response header)

        是指只在响应消息中使用的头部,比如Server或WWW-Authenticate。

        HTTP响应头部的一些例子:

        Accept-Ranges:定义服务器是否接受范围请求,以及定义的范围类型。示例`Accept-Ranges: none`表明服务器不支持范围请求。

        Age:表示自从响应产生以来经过的时间(以秒为单位)。示例`Age: 3000`表明该响应已经产生了3000秒。

        Location:用于重定向到一个新的URI。示例`Location: http://www.cnam.fr`表示客户端应跳转到提供的URI。

        Etag:响应内容的唯一标识(实体标签)。它可以用来检查资源是否有变化。示例`ETag: "nom"`提供了一个值,客户端可以在后续的请求中使用这个值来检查资源是否被修改。

        这些响应头部帮助客户端理解服务器的响应并适当地处理它们,例如判断内容是否最新、是否需要重定向到新的地址,或者验证缓存的内容是否仍然是最新的。

4.2.2.4 实体头部(Entity header)

        是指那些和消息体的内容相关的头部,比如`Content-Length`或`Content-Type`。

        当然,这里有一个HTTP请求的头部示例:

        假设您的浏览器向`www.example.com`的服务器发送一个请求来获取首页的HTML文档,HTTP请求可能包含以下头部:

        GET /index.html HTTP/1.1是请求行,指明使用GET方法获取`/index.html`这个资源,使用的是HTTP 1.1版本。

        Host: www.example.com 是一个请求头部,指定请求的服务器地址。

        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3是一个请求头部,描述了发出请求的浏览器的类型和版本。

        Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 是一个请求头部,告诉服务器客户端能够处理的内容类型。

        Accept-Language: en-US,en;q=0.5是一个请求头部,说明客户端优先接受的语言。

        Accept-Encoding: gzip, deflate 是一个请求头部,说明客户端可以接受的内容编码类型,比如gzip压缩。

        Connection: keep-alive:是一个请求头部,要求服务器保持连接打开,以便后续请求复用通过这些头部,HTTP消息可以携带关于请求或响应的附加信息,以及关于实体本身的数据。

4.3 空行(CRLF,即Carriage Return Line Feed)

        标记头部结束和消息体开始的地方。

4.4 消息体(message-body)

        可选部分,包含了发送的数据,比如网页的HTML代码或API调用的JSON数据。

        消息体编码:HTTP消息的主体部分在传输时会进行编码,这种编码方式会在HTTP头部中指定。消息体可以包含任意的数据字节(在文本中表示为`OCTET`)。

        实体(entité):传输在消息体中的资源被称为实体。实体可以是文档、图片或其他任何类型的数据。

        简而言之,HTTP消息体是HTTP消息结构的一个组成部分,它承载了客户端请求或服务器响应中的实际内容。比如,当你请求一个网页时,该网页的HTML内容就会作为响应的消息体发送给你。消息体的具体内容和格式由HTTP头部中的`Content-Type`和`Content-Encoding`等字段指定。

4.5 理解

        HTTP消息就像是互联网上的信封,里面装着网页或应用程序发送和接收的信息。这个“信封”有固定的格式,分为几个部分:

        起始行:就像信封的标题,告诉我们这是什么类型的信息。如果是请求,会包含你想要做的事情(比如查看网页),如果是响应,会告诉你请求结果如何(比如请求成功或失败)。

        头部:提供额外信息,比如内容有多长,需要用什么方式查看等。

        空行:头部结束的标志,就像写信时在正文前空一行一样。

        消息体:这是可选的,如果你发送的是网页内容或者是其他数据,就会用到这一部分。

        总的来说,HTTP消息就是互联网上发送和接收数据的方式,它有固定的格式,确保数据能够正确地发送和接收。

        通常,一个HTTP消息从起始行开始,然后是多个头部,一个空行,最后是消息体(如果有的话)。这种结构使得HTTP消息既可以携带请求的详细信息,也可以携带服务器的响应数据。

5. HTTP协议和统一资源标识符(URI)的使用

5.1 目标资源

        在HTTP请求中,客户端指定想要交互的目标资源,这个资源通过URI来识别。

5.1.1 绝对形式

        客户端在请求行中使用完整的URI来指定资源。例如:

 GET http://www.ietf.org/rfc/rfc2616.txt HTTP/1.1

        这里GET是请求方法,http://www.ietf.org/rfc/rfc2616.txt是资源的绝对URI,HTTP/1.1是HTTP协议的版本。

5.1.2 相对形式

        客户端可以在请求行中使用相对URI,并在请求头部使用`Host`字段来指定主机名。例如:

GET /rfc/rfc2616.txt HTTP/1.1Host: www.ietf.org

        在这种情况下,请求行只包含资源的相对路径(`/rfc/rfc2616.txt`),而`Host`头部指定了完整的主机名(`www.ietf.org`)。

        绝对形式的URI在请求中提供了资源的完整地址,而相对形式则需要结合`Host`头部字段来确定资源的完整位置。这两种形式都是HTTP/1.1标准中支持的。

5.2 HTTP请求和响应的格式

5.2.1 请求

5.2.1.1 格式

        由请求行(Request-Line)开始,这是HTTP请求的第一行,包含了方法、请求的资源URI和HTTP版本。

        紧接着是零个或多个头部字段(header-field),每个字段都以回车换行符(CRLF)结束。

        头部字段和消息体之间有一个空的回车换行符(CRLF)作为分隔。

        可选的消息体(message-body),用于包含如POST请求的数据。

5.2.1.2 示例
GET /path/file.html HTTP/1.0From: someuser@jmarshall.comUser-Agent: HTTPTool/1.0[blank line here]

        请求行:使用GET方法请求/path/file.html这个资源,HTTP版本为1.0。

        From头部:发起请求的用户的电子邮件地址是someuser@jmarshall.com。

        User-Agent头部:发起请求的客户端程序是HTTPTool/1.0。

        请求头部与消息体之间有一个空白行,表示消息头部结束,如果有消息体的话会在这个空白行后面开始

5.2.2 响应

5.2.2.1 格式

        由状态行(Status-Line)开始,这是HTTP响应的第一行,包含了HTTP版本、状态码和状态描述。

        同样地,紧接着是零个或多个头部字段(header-field),每个字段都以回车换行符(CRLF)结束。

        头部字段和消息体之间有一个空的回车换行符(CRLF)作为分隔。

        可选的消息体(message-body),用于包含如返回的网页内容或API调用的JSON数据。

5.2.2.2 示例
HTTP/1.0 200 OKDate: Fri, 31 Dec 1999 23:59:59 GMTContent-Type: text/htmlContent-Length: 1354<html> <body> ...</body> </html>

        状态行:HTTP版本为1.0,状态码为200,表示请求成功。

        Date头部:响应生成的日期和时间是1999年12月31日23时59分59秒 GMT。

        Content-Type头部:响应的内容类型是text/html,表示是一个HTML文档。

        Content-Length头部:响应的内容长度是1354字节。

        消息体:包含HTML文档的实际内容,从<html>开始,到</html>结束。

        这个格式允许HTTP消息在网络上清晰地传输请求和响应信息,确保接收方可以正确解析消息的各个部分。

5.2.2.2.1 HTTP版本(HTTP-Version)

        指明了响应遵循的HTTP协议版本,例如HTTP/1.1或HTTP/2.0。

5.2.2.2.2 状态码(Status-Code)

        是一个三位整数,用于表示请求的处理结果。例如,200表示请求成功,404表示没有找到请求的资源。

HTTP响应状态码的分类:

        1xx(信息响应):表示接收到请求并且继续处理中。

        2xx(成功):表示请求已被成功接收、理解并接受。

        3xx(重定向):表示需要进一步的操作以完成请求,通常用来进行URL的重定向。

        4xx(客户端错误):表示请求包含语法错误或无法完成请求。

        5xx(服务器错误):表示服务器在尝试处理请求时发生了错误。

        每个数字范围代表一个响应类型,其中首位数字定义了响应的类别,其后两位数字无分类作用,但指定了具体的响应条件或错误。这个系统允许客户端理解它们的请求是否成功,并在出错时了解问题所在。

        100 Continue:继续。客户端应继续其请求。

        101 Switching Protocols:切换协议。服务器根据客户端的请求切换协议。

        200 OK:请求成功。一般用于GET与POST请求。

        201 Created:已创建。成功请求并创建了新的资源。

        202 Accepted:已接受。已经接受请求,但未处理完成。

        203 Non-Authoritative Information:非权威信息。请求成功,但返回的信息可能来自第三方。

        204 No Content:无内容。服务器成功处理,但未返回内容。

        301 Moved Permanently:永久移动。请求的资源已永久移动到新位置。

        307 Temporary Redirect:临时重定向。请求的资源临时从其他地址响应。

        400 Bad Request:错误请求。服务器无法理解请求的格式。

        500 Internal Server Error:内部服务器错误。服务器遇到错误,无法完成请求。

        这些状态码是客户端与服务器通信时,用于表示请求处理情况和结果的重要信息

        原因短语(Reason-Phrase):是一个对状态码的简短文字描述,例如"OK"表示成功,"Not Found"表示资源未找到。

        回车换行符(CRLF):状态行的结束标志,确保与后续头部的分隔。

        例如,一个典型的状态行可能是:

`        HTTP/1.1 200 OK,其中`HTTP/1.1`是协议版本,`200`是状态码,`OK`是原因短语,表示请求已经成功处理。

6. HTTP协议的总结

        请求-响应简单协议:HTTP是一个基于TCP(传输控制协议)的简单请求-响应类型的协议,它是无状态的,意味着服务器不会保持与客户端之间的交互状态。

        Cookies:Cookies是一种在客户端存储状态信息的简单方式,用于跨越多个请求维持交互状态。

        信息传输载体:HTTP可以用来传输任何类型的信息。

        认证机制:HTTP支持基本的认证方案,如用户名和密码登录,也支持更安全的摘要认证和加密,比如使用SSL(安全套接层)。

        代理作为中间人:在HTTP通信中,代理服务器(Proxy)充当客户端和服务器之间的中间人,可以处理和转发请求和响应。

        规范参考:HTTP协议的规范由W3C(万维网联盟)维护,参考地址是:[http://www.w3.org/Protocols/Specs.html](http://www.w3.org/Protocols/Specs.html)。

        这段总结指出了HTTP协议的基本特征和一些关键的技术点,以及它如何适用于Web通信和数据传输。

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

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

相关文章

mysql原理--redo日志2

1.redo日志文件 1.1.redo日志刷盘时机 我们前边说 mtr 运行过程中产生的一组 redo 日志在 mtr 结束时会被复制到 log buffer 中&#xff0c;可是这些日志总在内存里呆着也不是个办法&#xff0c;在一些情况下它们会被刷新到磁盘里&#xff0c;比如&#xff1a; (1). log buffer…

硬盘恢复软件如何恢复硬盘数据?分享使用方法

在数字时代&#xff0c;数据的重要性不言而喻。一旦硬盘发生数据丢失&#xff0c;在未备份数据的情况下&#xff0c;对于个人和企业来说可能造成巨大的损失。然而&#xff0c;随着技术的进步&#xff0c;硬盘恢复软件已经成为解决这一问题的有效工具。它能够有效处理一些不是物…

uniapp 图片保持宽高比,撑满屏幕宽度

image 标签添加 mode"widthFix" <image mode"widthFix" :src"detailData.coverImageURL" />image 标签添加样式 image {width: 100%;height: auto; }

浅谈vue响应式

响应式简单理解&#xff1a;当一个对象的属性发生变化的时候调用一个回调函数 要想做到上述功能需要具备两个条件 属性的写入和读取必须可以被拦截&#xff08;被vue管理&#xff09;属性必须在回调函数或watch函数中被读取&#xff0c;这样才能记录属性之后被写入的时候应该调…

在Excel中将一列分为多列的三种方法,总有一种适合你

在处理数据和电子表格时,可读性和结构非常重要。它使数据更容易浏览和使用。提高数据可读性的最佳方法之一是将数据分割成块,这样更容易访问正确的信息。 当从头开始输入数据时,可以确保我们对数据的结构更具可读性。但是,有时你需要使用其他人创建的数据。如果数据量很大…

Fooocus 使用笔记

目录 换装&#xff0c;换脸&#xff0c;修复畸形 比较和使用教程&#xff1a; 安装教程&#xff1a; github地址&#xff1a; 换装&#xff0c;换脸&#xff0c;修复畸形 &#x1f525;迄今最全&#xff01;Fooocus AI绘图 详细教程 AI换装 AI换脸 AI修复畸形 - 西瓜视频 …

【机器学习】scikit-learn机器学习中随机数种子的应用与重现

随机数种子是为了能重现某一次实验生成的随机数而设立的&#xff0c;相同的随机数种子下&#xff0c;生成的随机数序列一样 一、随机数种子基础应用 在python中简单运用随机数种子 import random random.seed(1) a random.sample(range(0,100),10) random.seed(2) b random.…

如何通过内网穿透实现公网访问Portainer管理监控Docker容器

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风…

软件测试Leader避坑指南,让你少走弯路!

作为一名软件测试人&#xff0c;特别是测试Leader工作中难免会遇到一些坑。你是否经常会为此感到焦虑和苦恼&#xff1f; 测试Leader在团队中往往处于夹心饼干的角色。 对上要面对上级的施压、打压、批评、责骂和CPU、甩锅&#xff1b;对下要面对员工的摆烂&#xff0c;敷衍和…

如何用GPT/GPT4完成AI绘图和论文写作?

详情点击链接&#xff1a;如何用GPT/GPT4完成AI绘图和论文写作&#xff1f; 一OpenAI 1.最新大模型GPT-4 Turbo 2.最新发布的高级数据分析&#xff0c;AI画图&#xff0c;图像识别&#xff0c;文档API 3.GPT Store 4.从0到1创建自己的GPT应用 5. 模型Gemini以及大模型Clau…

一些面试会问到的奇怪问题

1.v-for、v-if先后顺序。 官方不建议一起使用&#xff0c;但是有时候面试的时候会问到。 在vue2中是v-for先与v-if的。 源码js编译结果&#xff1a; _c()就是vm.$createElement()&#xff0c;意思是创建一个虚拟的element&#xff0c;就是返回值是VNode。 _l就是renderlis…

虹科技术|如何用TSN流识别技术破解航空电子网络的传输难题?

导读&#xff1a;随着航空航天技术的迅猛发展&#xff0c;航空电子网络面临着诸多挑战&#xff0c;如多网络并行传输、高带宽需求以及确保数据传输的确定性等。为应对这些挑战&#xff0c;航空电子网络急需一个通用的网络架构&#xff0c;满足布线简单、供应商多、组网成本相对…

leetcode-平衡二叉树

110. 平衡二叉树 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right right class Solution:def isBalanced(self, root: Optional[Tr…

网络文件共享服务

一.存储类型 直连式存储&#xff1a;Direct-Attached Storage&#xff0c;简称DAS 存储区域网络&#xff1a;Storage Area Network&#xff0c;简称SAN&#xff08;可以使用空间&#xff0c;管理也是你来管理&#xff09; 网络附加存储&#xff1a;Network-Attached Storage&…

(2023版)斯坦福CS231n学习笔记:DL与CV教程 (2) | 图像分类与损失函数

前言 &#x1f4da; 笔记专栏&#xff1a;斯坦福CS231N&#xff1a;面向视觉识别的卷积神经网络&#xff08;23&#xff09;&#x1f517; 课程链接&#xff1a;https://www.bilibili.com/video/BV1xV411R7i5&#x1f4bb; CS231n: 深度学习计算机视觉&#xff08;2017&#xf…

FairyGUI Day 1 导入FairyGUI

FairyGUI Unity3d引擎版本&#xff1a;Uinty3d 20233.2.3f1 1、从资产商店中将FairyGUI购入我的资产中&#xff0c;目前是免费的。 2、从我的资产中将FairyGUI导入到当前项目中。 3、我遇到的问题&#xff0c;我的Assets下有两个文件夹分别是Resources和Scenes&#xff0c;导…

开源对象存储服务器MinIO本地部署并结合内网穿透实现远程访问管理界面

文章目录 前言1. Docker 部署MinIO2. 本地访问MinIO3. Linux安装Cpolar4. 配置MinIO公网地址5. 远程访问MinIO管理界面6. 固定MinIO公网地址 前言 MinIO是一个开源的对象存储服务器&#xff0c;可以在各种环境中运行&#xff0c;例如本地、Docker容器、Kubernetes集群等。它兼…

大量文件重命名数字排序有什么好方法?快来看这里

随着数字时代的到来&#xff0c;我们每天都会处理大量的文件&#xff0c;无论是工作还是生活。为了更好地管理和查找这些文件&#xff0c;我们通常会使用数字排序来对它们进行排列。那么&#xff0c;为什么要给大量文件添加数字排序呢&#xff1f; 首先&#xff0c;数字排序可以…

怎么一行代码都不写,就能给网站加速?

每个开发都会涉及到一个工作&#xff0c;就是网站开发。开发过程势必会涉及到需要对网站加速的部分&#xff0c;很多开发同学对此都很是头疼。 想让网站跑起来飞快&#xff0c;必须用上个网站加速神器&#xff0c;很多人都会推荐CDN。CDN的原理就是把网站文件提前搬到全国各地…

JSTL中c标签和fmt标签

c标签 表达式操作 out、set、remove、catch 流程控制 if、choose、when、otherwise 迭代操作 forEach、forTokens URL操作 import、param、url、redirect Set标签 &#xff1c;c:set> 主要用来将变量存储至JSP范围中 或是JavaBean的属性或Map对象中 名称说明是否必须…