HTTP协议详解:从HTTP/1.0到HTTP/3的演变与优化

在这里插入图片描述

深入浅出:从头到尾全面解析HTTP协议

一、HTTP协议概述

1.1 HTTP协议简介

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最广泛的通信协议之一。它用于客户端与服务器之间的数据传输,尤其是在Web浏览器和Web服务器之间。HTTP协议本身是无状态的,这意味着每次请求都是独立的,服务器不会记住前一个请求的任何信息。HTTP协议常见于Web浏览、API交互、移动应用通信等场景。

1.2 HTTP的历史发展

HTTP协议的起源可以追溯到20世纪90年代,Tim Berners-Lee发明了万维网(World Wide Web),并设计了HTTP协议来进行信息交换。最初的HTTP/0.9只支持GET方法,功能非常简单。

  • HTTP/0.9:最初的HTTP版本,仅支持GET请求和HTML文档的传输。
  • HTTP/1.0:引入了请求头、响应头以及常用的HTTP方法(GET、POST等)。
  • HTTP/1.1:增加了持久连接、管道化、条件请求等功能,成为互联网应用的主流版本。
  • HTTP/2:基于Google的SPDY协议,解决了HTTP/1.x的多路复用和性能瓶颈。
  • HTTP/3:在HTTP/2的基础上使用QUIC协议进一步提升性能和安全性。

1.3 HTTP与HTTPS的区别

  • HTTP:超文本传输协议,数据在传输过程中不加密,容易受到中间人攻击(MITM),因此不适合处理敏感信息。
  • HTTPS:HTTP的安全版,通过SSL/TLS协议对数据进行加密,保证数据的机密性和完整性,广泛应用于银行、电商等需要保护用户隐私和交易安全的场景。

二、HTTP请求与响应结构详解

2.1 HTTP请求结构

HTTP请求是由请求行请求头空行请求体组成的。每一部分都扮演着不同的角色。

2.1.1 请求行(Request Line)

请求行包含三部分:

  • HTTP方法:如GET、POST、PUT、DELETE等,定义了客户端希望服务器执行的操作。
  • URL:即客户端请求的资源路径,通常包括协议、主机、路径和查询参数。
  • HTTP版本:例如HTTP/1.1HTTP/2,表示所使用的协议版本。

示例请求行

GET /api/user?id=123 HTTP/1.1
2.1.2 请求头(Request Headers)

请求头由多个键值对组成,向服务器传递请求的元数据。常见的请求头有:

  • Host:请求的主机名和端口。
  • User-Agent:客户端浏览器或应用程序的信息。
  • Accept:客户端支持的内容类型(例如text/htmlapplication/json)。
  • Authorization:身份验证信息。
  • Cookie:客户端发送的存储在浏览器中的cookie信息。

示例请求头

Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept: application/json
Authorization: Bearer <token>
2.1.3 请求体(Request Body)

请求体用于提交数据,通常在POSTPUT请求中出现。常见的格式有application/jsonapplication/x-www-form-urlencoded

示例请求体

{"name": "JohnDoe","email": "john.doe@example.com"
}

2.2 HTTP响应结构

HTTP响应是由响应行响应头空行响应体组成的。

2.2.1 响应行(Response Line)

响应行包含三部分:

  • HTTP版本:例如HTTP/1.1HTTP/2,表示所使用的协议版本。
  • 状态码:表示请求的处理结果,分为5类(2xx表示成功,4xx表示客户端错误,5xx表示服务器错误等)。
  • 状态消息:对状态码的简短描述。

示例响应行

HTTP/1.1 200 OK
2.2.2 响应头(Response Headers)

响应头包含关于响应的数据,如服务器信息、缓存策略、内容类型等。常见的响应头包括:

  • Content-Type:响应体的内容类型(如text/htmlapplication/json)。
  • Content-Length:响应体的大小。
  • Cache-Control:控制缓存的行为。
  • Set-Cookie:服务器向客户端设置cookie。

示例响应头

Content-Type: application/json; charset=UTF-8
Content-Length: 123
Cache-Control: no-cache
2.2.3 响应体(Response Body)

响应体包含服务器返回的数据,通常是HTML页面、JSON格式数据、图片或其他媒体文件。响应体的内容由Content-Type决定。

示例响应体(JSON数据)

{"status": "success","data": {"user_id": 123,"name": "JohnDoe"}
}

三、HTTP状态码详解

HTTP状态码是服务器在响应客户端请求时返回的数字代码,表示请求的处理结果。状态码分为五类:

  • 1xx(信息性状态码):表示请求已接收,继续处理。

    • 100 Continue:继续请求,等待客户端发送请求体。
  • 2xx(成功状态码):表示请求成功。

    • 200 OK:请求成功,返回请求的资源。
    • 201 Created:请求成功,资源已经创建。
  • 3xx(重定向状态码):表示需要客户端进一步操作才能完成请求。

    • 301 Moved Permanently:资源永久移动到新位置。
    • 302 Found:资源临时移动到新位置。
  • 4xx(客户端错误状态码):表示请求有问题,客户端需要纠正。

    • 400 Bad Request:请求无效。
    • 404 Not Found:请求的资源不存在。
    • 401 Unauthorized:请求未通过身份验证。
  • 5xx(服务器错误状态码):表示服务器内部错误。

    • 500 Internal Server Error:服务器发生错误,无法完成请求。
    • 502 Bad Gateway:网关或代理服务器错误。
  • 四、常见HTTP方法详解

    HTTP协议定义了一系列方法,用于客户端和服务器之间的通信,不同方法的作用和使用场景各不相同。以下是常见HTTP方法的详细说明:

    4.1 GET:获取资源

    • 功能
      GET方法用于从服务器请求指定资源的数据。它是最常用的HTTP方法,通常用于读取数据或查询操作。
    • 特点:
      • GET请求是幂等的,即对同一资源的多次GET请求不会对服务器状态产生影响。
      • 数据通过URL的查询字符串(Query String)传递,限制了数据大小,且数据暴露在URL中,不适合传输敏感信息。
      • GET请求不会修改服务器上的数据。
    • 应用场景:
      • 获取网页内容。
      • 执行搜索功能,查询某些特定条件的结果。

    4.2 POST:提交数据

    • 功能
      POST方法用于将数据发送到服务器,通常用于创建新资源或提交表单数据。
    • 特点:
      • POST请求的主要作用是提交数据,数据通常包含在请求体中,不显示在URL中。
      • POST请求不是幂等的,多次发送同一请求可能会导致服务器状态发生变化(如重复创建资源)。
    • 应用场景:
      • 提交用户注册或登录表单。
      • 上传文件或发送数据到服务器。

    4.3 PUT:更新资源

    • 功能
      PUT方法用于更新服务器上指定的资源,将资源的全部内容替换为请求体中的数据。如果资源不存在,则可以选择创建资源。
    • 特点:
      • PUT请求是幂等的,发送多次请求的结果相同。
      • 适合用来执行全量更新操作。
    • 应用场景:
      • 更新用户信息(如替换一个用户的详细资料)。
      • 更新已有的文件或数据记录。

    4.4 DELETE:删除资源

    • 功能
      DELETE方法用于请求服务器删除指定的资源。
    • 特点:
      • DELETE请求是幂等的,多次发送同一请求的结果相同,即删除资源后,后续请求不会影响状态。
    • 应用场景:
      • 删除用户、文件、记录等具体资源。

    4.5 PATCH:部分更新资源

    • 功能
      PATCH方法用于对资源进行部分更新,只修改资源中的某些字段,而不是替换整个资源。
    • 特点:
      • PATCH请求不是幂等的,某些实现中,重复发送同一请求可能导致不同结果。
    • 应用场景:
      • 更新单个字段(如修改用户名或邮箱地址)。

    4.6 OPTIONS:获取支持的HTTP方法

    • 功能
      OPTIONS方法用于请求服务器返回某资源支持的HTTP方法列表。它通常用于客户端检查允许的操作。
    • 特点:
      • OPTIONS请求不会对资源或服务器状态产生影响。
      • 常用于CORS(跨域资源共享)的预检请求。
    • 应用场景:
      • 检查API接口支持的请求方法。

    4.7 HEAD:获取响应头

    • 功能
      HEAD方法和GET类似,但它只获取响应的头部信息,不返回响应体。它通常用于检查资源是否存在或了解资源的元信息。
    • 特点:
      • HEAD请求是幂等的。
      • 可用于节省带宽,因为它不会传输实际内容。
    • 应用场景:
      • 检查文件是否存在。
      • 获取文件的大小或上次修改时间。

    每种HTTP方法都有其独特的功能和应用场景,选择合适的方法有助于更清晰地表达客户端与服务器之间的意图,并提高API的设计规范性。例如,GET和HEAD适合只读操作,而POST和PUT则常用于创建和更新资源;DELETE和PATCH则分别用于删除和部分更新资源。通过合理使用这些HTTP方法,可以有效提升应用的可维护性和性能。

五、HTTP/1.1 与 HTTP/2 对比

HTTP/1.1和HTTP/2是互联网中使用的两种主要的HTTP协议版本。HTTP/2是对HTTP/1.1的重大升级,旨在解决HTTP/1.1的一些局限性,并提高Web性能和用户体验。

5.1 HTTP/1.1的局限性

  1. 队头阻塞
    HTTP/1.1的队头阻塞问题(Head-of-Line Blocking)是指在同一连接上,多个请求必须按顺序发送和接收。每个请求都需要等待前一个请求完成后才能开始处理。这种线性处理方式导致了延迟的增加,尤其是在需要加载大量资源的页面中表现得尤为明显。
  2. 头部冗余
    在HTTP/1.1中,每次请求都需要附带完整的头部信息,即使这些信息在多个请求中是相同的。这种重复传输的机制导致了带宽的浪费,尤其是在需要频繁请求相同资源的情况下,头部信息的冗余传输增加了网络负担。

5.2 HTTP/2的优势

  1. 二进制分帧
    HTTP/2采用二进制分帧层,将数据分为多个小块进行传输。这种方式不仅提高了传输效率,还避免了HTTP/1.1中的头部阻塞问题。二进制分帧使得协议更紧凑、更易于解析和处理,提高了数据传输的可靠性和速度。
  2. 多路复用
    HTTP/2允许在同一TCP连接上并发处理多个请求和响应,消除了HTTP/1.1中队头阻塞的问题。多路复用使得多个数据流可以同时进行,无需等待其他流完成,极大地提高了传输效率和页面加载速度。
  3. 头部压缩
    HTTP/2使用HPACK算法对HTTP头部进行压缩,减少了冗余数据的传输。HPACK通过维护头部字段的动态表和静态表,极大地减少了重复头部信息带来的带宽浪费,提高了传输效率。
  4. 服务器推送
    HTTP/2支持服务器推送功能,允许服务器在客户端请求之前主动将资源推送到客户端。这种机制可以减少延迟,因为客户端可以更早地接收到所需资源,从而加快页面加载速度。

5.3 HTTP/2的性能优化

HTTP/2通过其技术创新显著提高了数据传输效率,带来了以下性能优化:

  • 快速页面加载
    由于多路复用和服务器推送,HTTP/2能够显著加快Web页面的加载速度。客户端可以同时接收多个资源,而不必等待前一个资源加载完成,这对于现代Web应用需要加载大量静态资源的情况尤为重要。
  • 带宽利用率提升
    头部压缩和二进制分帧使得HTTP/2在带宽利用率方面有了显著提升。通过减少冗余数据和优化数据传输格式,HTTP/2能够在同样的带宽条件下传输更多有效数据。
  • 更好的用户体验
    HTTP/2的性能提升直接转化为更好的用户体验。页面加载更快,响应更及时,用户在浏览Web应用时的等待时间减少,整体体验更加流畅。

总之,HTTP/2通过解决HTTP/1.1的局限性和引入新的特性,极大地提升了Web的性能和用户体验。尤其是在现代Web应用中,HTTP/2的多路复用、头部压缩和服务器推送等特性,使得资源加载更加高效,页面响应更加迅速。

六、HTTP协议的安全性与HTTPS

6.1 HTTP的安全性问题

HTTP(超文本传输协议)是一种明文传输的协议,这意味着数据在客户端与服务器之间传输时,未经加密,任何网络中间设备(如路由器、交换机、代理服务器等)都可以直接读取和篡改数据。由于HTTP缺乏加密和身份验证机制,它面临以下主要安全风险:

  1. 中间人攻击(MITM,Man-in-the-Middle Attack)
    在中间人攻击中,攻击者通过截获并篡改客户端和服务器之间的通信内容,伪装成合法的通信方,窃取敏感信息或向客户端/服务器发送恶意数据。由于HTTP没有加密和身份验证,攻击者可以轻松地篡改数据或窃听传输内容。
  2. 数据嗅探
    因为HTTP数据是以明文形式传输的,任何处于同一网络环境中的攻击者都可以通过网络嗅探工具(如Wireshark)捕获和查看传输的内容。尤其是在公共Wi-Fi或其他不安全的网络中,攻击者可以轻易地获取用户输入的敏感数据,如登录凭证、信用卡号、个人身份信息等。
  3. 数据篡改
    在HTTP连接中,由于没有数据完整性校验机制,传输过程中的数据很容易遭到篡改。攻击者可以修改、插入、删除传输中的数据,使得接收方收到的内容不再是发送方原本意图传输的数据,造成信息泄露或损坏。

因此,当涉及到敏感信息,如账户密码、支付信息、个人身份资料等时,使用HTTP协议是非常不安全的,因为它无法提供任何的加密保护和身份验证。

6.2 HTTPS的优势

HTTPS(HyperText Transfer Protocol Secure,安全超文本传输协议)是对HTTP的加密扩展,它通过SSL/TLS协议为传输的数据提供加密保护,解决了HTTP的安全问题。HTTPS可以保证数据在传输过程中的机密性、完整性和身份验证,具体表现在以下几个方面:

  1. 数据加密
    HTTPS通过使用SSL/TLS协议对数据进行加密,确保传输中的数据无法被第三方窃听。即使攻击者拦截了数据包,由于数据已被加密,没有密钥的情况下是无法解密的。这一加密过程使用了公钥加密和对称加密的结合,确保数据在传输中的保密性,防止敏感信息(如用户名、密码、信用卡号等)被泄露。
  2. 身份验证
    HTTPS通过数字证书(SSL证书)验证服务器的身份。在建立HTTPS连接之前,服务器会向客户端提供一个由可信证书颁发机构(CA)签发的数字证书。该证书包含了服务器的公钥以及由证书颁发机构签名的信息。客户端可以通过验证证书是否有效来确认服务器的真实身份,从而避免伪装成合法站点的攻击(如“钓鱼攻击”)。只有当证书验证通过时,客户端才会与服务器建立安全的加密连接。
  3. 数据完整性
    HTTPS协议通过使用消息认证码(MAC)和哈希算法确保传输数据的完整性。这意味着在数据传输过程中,任何尝试修改或篡改数据的行为都会被检测到。如果数据在传输过程中被篡改,接收方将发现校验值不匹配,从而避免篡改后的数据被接受。通过这种方式,HTTPS有效防止了数据丢失或被恶意篡改的风险,保证了数据的完整性和真实性。

此外,HTTPS协议还可以有效抵御“重放攻击”,即攻击者通过捕获并重发合法请求来干扰数据传输。由于每次连接建立时都进行密钥交换和加密,攻击者无法简单地重新发送截获的数据。

​ HTTP由于缺乏加密机制和身份验证,容易受到各种安全攻击,尤其是在处理敏感信息时极为不安全。而HTTPS通过使用SSL/TLS协议提供了端到端的加密,确保了数据传输的机密性、完整性,并通过数字证书验证身份,防止伪造网站的攻击。因此,HTTPS是当今互联网中保护用户隐私和数据安全的标准协议,是大多数网站和在线服务不可或缺的一部分。

七、HTTP/3:下一代协议

HTTP/3是基于Google的QUIC(Quick UDP Internet Connections)协议开发的,旨在进一步提升HTTP协议的性能和安全性。与HTTP/2不同,HTTP/3不再依赖于传统的TCP协议,而是基于UDP协议,这一变化带来了许多潜在的优势,尤其是在网络延迟、丢包处理和连接恢复方面。

7.1 HTTP/3的优势

  1. 低延迟
    QUIC协议通过减少连接建立的时间,从而显著降低延迟。在传统的TCP连接中,客户端和服务器之间需要经过三次握手才能建立连接,而在QUIC中,由于采用了0-RTT(零往返时间)连接建立机制,客户端可以在首次连接时立即开始数据传输,从而减少了等待时间。此外,QUIC在处理数据传输时还支持0-RTT的数据发送,使得即使是在重复连接的情况下,数据传输也能更加高效。
  2. 抗网络抖动和丢包
    QUIC协议的多路复用机制和流控算法使得HTTP/3在不稳定的网络环境中具有更强的适应性。具体而言,QUIC使用基于UDP的传输层,可以独立地重传丢失的数据包,而不会影响到其他数据流的传输。这意味着即便在存在丢包的情况下,HTTP/3的性能依然能够得到保障。此外,QUIC采用了高级的流控制算法,可以动态调整数据传输的速率,避免因网络不稳定而产生大规模的丢包。
  3. 更高的安全性
    HTTP/3内建了强大的加密功能,所有的数据传输都采用TLS 1.3协议进行加密,这比HTTP/2使用的TLS 1.2要更为安全。此外,由于QUIC的设计本身就集成了加密功能,相比于TCP协议需要在应用层加密,HTTP/3提供了更低的加密延迟和更高的安全性。

7.2 HTTP/3的应用场景

  1. 高延迟和丢包率较高的网络环境
    HTTP/3特别适用于高延迟和丢包率较高的网络环境。例如,在移动网络(如4G、5G)和低质量Wi-Fi环境中,由于这些网络条件通常存在较高的丢包率和延迟,传统的TCP协议可能会导致性能下降。而HTTP/3通过其改进的传输机制,能够有效缓解这些问题,确保更加稳定和快速的数据传输。
  2. 移动设备和异构网络环境
    在移动设备广泛使用的今天,网络环境变得更加多样化且充满挑战。移动设备在不同的基站之间切换、连接到不同Wi-Fi热点等情况下,可能会经历频繁的网络断开和重新连接。HTTP/3的0-RTT连接建立和快速恢复机制,使得它在这种频繁变动的网络环境中能够提供更好的性能。
  3. 视频流、实时通信等延迟敏感型应用
    对于视频流、在线游戏、实时语音通话等对延迟非常敏感的应用,HTTP/3能够提供更加流畅的体验。由于其低延迟和高吞吐量的特性,能够减少数据传输过程中的卡顿和延迟,从而提升用户体验,特别是在不稳定网络环境下表现更为突出。

总的来说,HTTP/3的应用场景主要集中在网络不稳定或高延迟的环境中,通过优化的连接建立、流控制和丢包恢复机制,能够显著提升现代互联网应用的性能和用户体验。


八、HTTP协议在现代Web中的应用

8.1 HTTP在Web浏览中的应用

在Web浏览过程中,HTTP是客户端和服务器之间通信的基础。每次浏览器访问一个网站,都会发起HTTP请求,获取Web页面及其资源(如CSS、JavaScript文件、图片等)。HTTP协议保证了请求和响应的顺利传输,在其中,浏览器通过GET请求从服务器获取页面内容,并通过POST请求提交表单数据。

8.2 API通信中的HTTP应用

随着Web API的流行,HTTP协议成为现代Web应用中不可或缺的一部分。RESTful API通常使用HTTP方法(如GET、POST、PUT、DELETE等)来定义不同的操作,客户端通过HTTP请求访问API端点,获取或提交数据。HTTP在API通信中提供了简洁、灵活且高效的方式来实现不同服务之间的数据交互。

8.3 移动应用与HTTP协议

移动应用也广泛使用HTTP协议与后台服务器进行通信。尤其是对于需要实时数据更新的应用(如社交媒体、天气预报等),HTTP协议能够高效地传输数据,并配合JSON、XML等数据格式进行高效解析。移动应用还可以使用HTTPS协议来保证数据的安全性,尤其是在传输敏感信息时。

8.4 HTTP与云计算和微服务架构

在云计算和微服务架构中,服务之间的通信通常使用HTTP协议进行。微服务通常暴露RESTful API,通过HTTP协议相互交互和调用。由于HTTP协议的广泛性和灵活性,它成为了云计算平台和微服务架构中最常见的通信方式,帮助不同的服务实现松耦合和高效的数据交换。

结语

HTTP协议作为Web通信的基石,经历了多年的发展与演变。从最初简单的HTTP/0.9到如今功能强大的HTTP/3,HTTP协议不断适应互联网的发展需求。了解HTTP的工作原理及其发展历程,对每一个Web开发者和网络工程师来说都是非常重要的。

希望本文能够帮助你深入理解HTTP协议的各个方面,助力你的学习与工作。如果你对本文内容有任何疑问或需要进一步讨论,欢迎在评论区留言。
在这里插入图片描述

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

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

相关文章

AI高中数学教学视频生成技术:利用通义千问、MathGPT、视频多模态大模型,语音大模型,将4个模型融合 ,生成高中数学教学视频,并给出实施方案。

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下AI高中数学教学视频生成技术&#xff1a;利用通义千问、MathGPT、视频多模态大模型&#xff0c;语音大模型&#xff0c;将4个模型融合 &#xff0c;生成高中数学教学视频&#xff0c;并给出实施方案。本文利用专家模…

AOSP的同步问题

repo sync同步时提示出错: error: .repo/manifests/: contains uncommitted changesRepo command failed due to the following UpdateManifestError errors: contains uncommitted changes解决方法&#xff1a; 1、cd 进入.repo/manifests cd .repo/manifests2、执行如下三…

Makefile 入门指南:构建自动化编译流程

个人主页&#xff1a;chian-ocean 文章专栏 前言 make 和 Makefile 是编译和构建软件项目时非常常用的工具和文件&#xff0c;它们通常配合使用来自动化项目的编译过程。 make 定义&#xff1a;make 是一个构建自动化工具&#xff0c;用于根据项目文件的依赖关系自动完成编译…

FCBP 认证考试要点摘要

理论知识 数据处理与分析&#xff1a;包括数据的收集、清洗、转换、存储等基础操作&#xff0c;以及数据分析方法&#xff0c;如描述性统计分析、相关性分析、数据挖掘算法等的理解和应用 。数据可视化&#xff1a;涉及图表类型的选择与应用&#xff0c;如柱状图、折线图、饼图…

类和对象下

目录 1. 赋值运算符重载 1.1 运算符重载 1.2 赋值运算符重载 1.3 日期类的实现 1.4 const修饰成员变量 2. 构造函数之初始化列表 3. 类型转换 3. static成员 4. 友元 5. 内部类 6. 日期差 1. 赋值运算符重载 1.1 运算符重载 当运算符被用于类类型的对象时&#x…

oracle RAC各版本集群总结和常用命令汇总

oracle RAC学习 RAC介绍 RAC&#xff1a;高可用集群&#xff0c;负载均衡集群&#xff0c;高性能计算集群 RAC是⼀种⾼可⽤&#xff0c;⾼性能&#xff0c;负载均衡的share-everything的集群 8i:内存融合雏形 内存融合雏形&#xff08;Oracle Parallel Server&#xff09;…

今天我们来聊聊Maven中两个高级的概念—— 插件和目标

插件&#xff08;plugin&#xff09; Maven的核心是一个插件执行框架;所有的工作都是由插件完成的。 Maven中Plugin分为两种类型&#xff1a; build类型Plugin只能在build阶段执行&#xff0c;在POM中需要在 <build/> 标签下进行配置。 reporting类型&#xff1a;在si…

[每周一更]-(第125期):模拟面试|NoSQL面试思路解析

文章目录 39|Elasticsearch 高可用:怎么保证 Elasticsearch 的高可用?1. Elasticsearch 的节点有什么角色?一个节点可以扮演多个角色吗?2. 在实践中,怎么合理安排不同节点扮演的角色?3. 什么是候选主节点和投票节点?投票节点可以被选为主节点吗?为什么要引入投票节点?…

【人工智能】Transformers之Pipeline(二十七):蒙版生成(mask-generation)

​​​​​​​ 目录 一、引言 二、蒙版生成&#xff08;mask-generation&#xff09; 2.1 概述 2.2 facebook/sam-vit-base 2.3 pipeline参数 2.3.1 pipeline对象实例化参数 2.3.2 pipeline对象使用参数 2.3.3 pipeline对象返回参数 2.4 pipeline实战 2.5 模型排…

蓝牙设备驱动开发

文章目录 一、蓝牙协议架构二、蓝牙协议的HCI传输层三、编程框架 一、蓝牙协议架构 蓝牙是无线数据和语音传输的开放式标准&#xff0c;它将各种通信设备、计算机及其终端设备、各种数字数据系统、甚至家用电器采用无线方式联接起来。它的传输距离为10cm&#xff5e;10m&#…

【Linux】开启你的Linux之旅:初学者指令指南

Linux相关知识点可以通过点击以下链接进行学习一起加油&#xff01; 在 Linux 开发中&#xff0c;GDB 调试器和 Git 版本控制工具是开发者必备的利器。GDB 帮助快速定位代码问题&#xff0c;Git 则提供高效的版本管理与协作支持。本指南将简明介绍两者的核心功能与使用技巧&…

你还没有将 Siri 接入GPT对话功能吗?

由于各种原因&#xff0c;国内ios用户目前无缘自带 AI 功能&#xff0c;但是这并不代表国内 ios 无法接入 AI 功能&#xff0c;接下来手把手带你为iPhone siri 接入 gpt 对话功能。 siri 接入 chatGPT 暂时还无法下载 ChatGPT app&#xff0c;或者没有账号的读者可以直接跳到…

bash命令缓存导致命令执行失败的问题

1、问题背景 为了修复老版本 vsftpd 的安全漏洞&#xff0c;需要把生产环境上 vsftpd 版本升级到 vsftpd-3.0.5&#xff0c;因为直接使用 rpm 包的方式进行升级还涉及到下层依赖包的升级(生产环境上的依赖包版本不能随意变更&#xff0c;可能会影响其他上层应用)&#xff0c;所…

import.meta.glob动态加载图片

import.meta.glob 基于Vite&#xff08;Vue 3 默认构建工具&#xff09;&#xff0c;用于动态导入模块&#xff0c;特别是当你需要批量导入文件或模块时. const modules import.meta.glob(/path/to/files/**/*.js);注意&#xff1a;import.meta.glob 是针对 源代码&#xff…

困扰解决:mfc140u.dll丢失的解决方法,多种有效解决方法全解析

当电脑提示“mfc140u.dll丢失”时&#xff0c;这可能会导致某些程序无法正常运行&#xff0c;给用户带来不便。不过&#xff0c;有多种方法可以尝试解决这个问题。这篇文章将以“mfc140u.dll丢失的解决方法”为主题&#xff0c;教大家有效解决mfc140u.dll丢失。 判断是否是“mf…

状态模式S

状态模式&#xff08;State Pattern&#xff09;是行为设计模式的一种&#xff0c;它允许一个对象在其内部状态发生改变时改变其行为。这个对象被视为类型的有限状态机&#xff08;Finite State Machine&#xff09;。 在状态模式中&#xff0c;我们创建表示各种状态的对象和一…

Webman中实现定时任务

文章目录 Webman中实现定时任务一、引言二、安装与配置1、安装Crontab组件2、创建进程文件3、配置进程文件随Webman启动4、重启Webman5、Cron表达式&#xff08;补充&#xff09;例子 三、使用示例四、总结 Webman中实现定时任务 一、引言 在现代的后端开发中&#xff0c;定时…

瀚高创库建表pgsql

1.瀚高下载地址&#xff1a; 下载 (highgo.com)https://www.highgo.com/down_main.html 2.瀚高linux安装 上传deb文件到ubuntu系统中 执行 dpkg -i hgdb-see-4.5.8-fe4791c.x86_64.deb 命令安装数据库 安装完成后&#xff0c;会在/opt 目录下生成安装目录 数据库安装完毕后…

5.11【机器学习】

先是对图像进行划分 划分完后&#xff0c; 顺序读取文件夹&#xff0c;在文件夹里顺序读取图片&#xff0c; 卷积层又称为滤波器&#xff0c;通道是说滤波器的个数&#xff0c;黑白通道数为1&#xff0c;RGB通道个数为3 在输入层&#xff0c;对于输入层而言&#xff0c;滤波…

Ajax基础总结(思维导图+二维表)

一些话 刚开始学习Ajax的时候&#xff0c;感觉很模糊&#xff0c;但是好像学什么都是这样的&#xff0c;很正常&#xff0c;但是当你学习的时候要持续性敲代码&#xff0c;边敲代码其实就可以理解很多了。然后在最后的总结&#xff0c;其实做二维表之后&#xff0c;就可以区分…