当前位置: 首页 > article >正文

HTTP(超文本传输协议)详解

目录

一、基本概念

二、HTTP报文(结构)

(一) 请求报文

(二) 响应报文

三、HTTP请求方法

1. GET方法

2. POST方法

3. PUT方法

4. HEAD方法

5. DELETE

6. OPTIONS

一、知识扩展

7. TRACE

8. CONNECT

四、HTTP持久通信

(一) HTTP keep-alive

(二) HTTP请求并发

1. 管线化

2. 多路复用

(三) Cookie

1. Cookie的由来

2. Cookie的基本概念

3. Cookie的工作流程

五、HTTP状态码

(一) 常见状态码

六、HTTPS概述

(一) SSL/TLS


一、基本概念

HTTP(超文本传输协议)用于在客户端(如浏览器)和服务器之间传输超文本数据,例如网页、图片、视频等。

  • HTTP是一种不保存状态无状态协议,即每个请求都是独立的,服务器不会自动保留客户端的前次请求信息。
  • 通信方式分为:请求(客户端)和响应(服务器端)
    • 请求访问文本或图像等资源的一端称为客户端
    • 提供资源响应的一端称为服务器端。
    • HTTP协议规定,请求由客户端端发出,服务器响应该请求并返回。
  • 客户端请求或访问服务器端资源是通过URL/URI的方式去得到相应的资源
    • URI用字符串标识某一互联网资源
      • 如:http://www.iana.org/assignments/uri-schemes/uri-schemes.xhtml
      • 在日常使用中,习惯称为URL。
    • URL表示资源的地点(URL是URI的子集)
      • 如:http://www.iana.org
      • 也可以称之为URI,因为URL是URI的子集。

二、HTTP报文(结构)

用于HTTP协议交互的信息被称为HTTP报文。

  • 请求端(客户端)的HTTP报文叫做请求报文
  • 响应端(服务器端)的HTTP报文叫做响应报文
  • HTTP报文本身由多行数据构成的字符串文本

HTTP报文分为报文首部报文主体两部分组成,两者由空行来划分,通常,不一定要有报文主体

  • 报文首部:服务器端或客户端需处理的请求或响应的内容及属性。
  • 空行(CR+LF)
    • CR:回车符 - 16进制0x0d
    • LF: 换行符 - 16进制0x0a
  • 报文主体:应被发送的数据。

(一) 请求报文

HTTP 请求报文由客户端(如浏览器)发送到服务器,包含以下三个主要部分:

  • 请求行(Request Line)
    • 格式:方法 请求目标(URL) HTTP版本
    • 说明:指定请求的类型、目标资源和使用的 HTTP 协议版本。
    • 示例:GET /index.html HTTP/1.1
  • 请求头(Headers)
    • 格式:键: 值(每行一个键值对)
    • 说明:提供请求的元信息,如主机、用户代理、内容类型等。
    • 常见头部
      • Host:目标服务器的域名。
      • Accept:客户端接受的响应内容类型。
      • User-Agent:客户端软件信息。
  • 请求体(Body,可选)
    • 说明:包含客户端发送给服务器的数据,通常用于 POST、PUT 等请求。
      • 注:GET 请求通常没有请求体。
    • 示例:表单数据、JSON 数据等。
  • 实例:请求报文

此例中为 GET 请求,没有请求体,因为 GET 请求通常只获取资源,不发送数据。

GET /index.html HTTP/1.1							#请求行
Host: www.example.com									#此行到底是请求头
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/120.0.0.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.9
Connection: keep-alive

(二) 响应报文

  • 状态行(Status Line)
    • 格式:HTTP版本 状态码 状态消息
    • 说明:描述响应的协议版本和处理结果。
    • 示例:HTTP/1.1 200 OK
  • 响应头部(Headers)
    • 格式:键: 值(每行一个键值对)
    • 说明:提供响应的元信息,如内容类型、内容长度等。
    • 常见头部
      • Content-Type:响应体的内容类型。
      • Server:服务器软件信息。
      • Content-Length:响应体的字节长度。
  • 响应体(Body,可选)
    • 说明:包含服务器返回的实际数据,如 HTML、JSON、图片等。
    • 示例:网页内容、API 返回的 JSON 数据等。
  • 实例:响应报文

注:响应头部和响应体之间有一个空行,表示头部信息结束。

HTTP/1.1 200 OK								#状态行
Date: Sun, 25 May 2025 17:39:00 GMT			#响应头
Server: Apache/2.4.41 (Unix)
Content-Type: text/html; charset=UTF-8
Content-Length: 125
Connection: keep-alive#空行(CR+LF,表示头部信息结束)
<!DOCTYPE html>								#响应体
<html>
<head><title>Welcome</title>
</head>
<body><h1>Hello, World!</h1>
</body>
</html>

三、HTTP请求方法

向请求URI指定的资源发送请求报文时,采用称为方法的命令。

方法的作用在于,可以指定请求的资源按期望产生某种行为

注:方法名区分大小写,要用大写字母。。

1. GET方法

  • 功能:从服务器获取资源。用于请求数据而不对数据进行更改。
    • 支持的HTTP协议版本:HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3
    • 示例:
请求
GET /index.html HTTP/1.1
Host:www.baidu.com响应
返回index.html的页面资源

2. POST方法

  • 功能:向服务器发送数据以创建新资源。
  • 数据位置:数据包含在请求体中(例如JSON、表单数据)。
  • 支持的HTTP版本:HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3
  • 示例:
请求:
POST /abc.php HTTP/1.1
Host: www.baidu.com
Content-Length: 1560
Content-Type: application/x-www-form-urlencoded[1560字节的请求体数据]响应:
返回abc.php接收数据的处理结果

3. PUT方法

  • 功能:向服务器发送数据以更新现有资源。如果资源不存在,则创建新资源。
  • 支持的HTTP协议版本:HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3
  • 示例:
请求:
PUT /index.html HTTP/1.1
Host: www.baidu.com
Content-Length: 1560
Content-Type: text/html响应:
返回状态码204 No Content(表示服务器成功处理了请求,但不返回任何响应体)

4. HEAD方法

  • 功能:用于确认URI的有效性及资源更新的日期时间等。
  • 特征:类似于GET,但只返回响应头部,不返回资源内容
  • 支持的HTTP协议版本:HTTP/1.0、HTTP/1.1
  • 示例
HEAD /index.html HTTP/1.1
Host:www.baidu.com响应:
返回index.html有关的响应头

5. DELETE

  • 功能:从服务器删除指定的资源。
  • 支持的HTTP协议版本:HTTP/1.0、HTTP/1.1
  • 示例
请求:
DELETE /index.html HTTP/1.1
Host: www.baidu.com响应:
返回状态码204 No Content(表示服务器成功处理了请求,但不返回任何响应体)

6. OPTIONS

  • 功能:返回服务器支持的 HTTP 方法。
  • 支持的HTTP协议版本:HTTP/1.1
  • 示例
请求:
OPTIONS * HTTP/1.1
Host: www.baidu.com响应:
HTTP/1.1 200 OK
Allow:GET,POST,HEAD,OPTIONS
一、知识扩展

如果不是访问特定资源而是对服务器本身发起的请求,可以用 * 来代替请求URI

7. TRACE

  • 功能:回显服务器收到的请求,主要用于诊断。
  • 支持的HTTP协议版本:HTTP/1.1
  • 示例:
请求:
TRACE /index.html HTTP/1.1
Host: www.baidi.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)响应:
HTTP/1.1 200 OK
Content-Type: message/http
Content-Length: 145#空行
TRACE /index.html HTTP/1.1					#此行以下都是响应体,体现的是客户端的请求内容。
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)

8. CONNECT

  • 功能:建立一个到服务器的隧道,通常用于 HTTPS 连接。
    • 格式
      • CONNECT 目标服务器:端口 HTTP/1.1
      • Host: 目标服务器
  • 支持的HTTP协议版本:HTTP/1.1
  • 注:代理服务器的地址是通过客户端的网络配置指定的,不写在报文中。
    • 如:浏览器中的设置-代理,或是curl 的 --proxy 参数。
  • 示例
请求:
CONNECT www.baidu.com:443 HTTP/1.1
Host: www.baidu.com响应:
HTTP/1.1 200 Connection Established

四、HTTP持久通信

(一) HTTP keep-alive

HTTP/1.0 中,每次请求都需要重新建立一次 TCP 连接,请求完成后立即关闭(即短连接)。

每个请求都经历完整的连接流程:

TCP 三次握手 → HTTP 请求/响应 → TCP 四次挥手

假如你要请求三个资源,就得重复三次这样的过程,网络开销大、性能低下

为了解决这个问题,HTTP/1.1 引入了“持久连接”(HTTP Persistent Connection)。通过一个 TCP 连接,客户端可以连续发送多个 HTTP 请求,直到一方显式关闭连接为止:

TCP 三次握手 → 多次 HTTP 请求/响应→ TCP 四次挥手

持久连接的实现方式如下:

  • HTTP/1.1 默认开启持久连接,无需额外设置。
  • 请求头中添加:Connection: keep-alive
    • 为了兼容旧版本或明确表达意图,可以在请求头中添加
  • 如果需要关闭连接,需显式设置:Connection: close

(二) HTTP请求并发

HTTP/1.0并不允许连续多个HTTP请求,默认其是请求-响应完成之后再请求-响应。没有并发。

1. 管线化

HTTP 管线化是 HTTP/1.1 引入的特性,它允许客户端在一个持久连接上,连续发送多个 HTTP 请求,而不必等待前一个响应回来。

Request A → Request B → Request C (连续发)
← Response A ← Response B ← Response C(按顺序回)
  • 特征与限制
    • 请求可以并发发出去,但响应必须按请求顺序返回。
    • 如果前一个响应很慢,会阻塞后续所有响应 —— 这叫队头阻塞(Head-of-line blocking)
    • 如果中间有代理服务器(如老式网关、防火墙)不支持管线化,容易出问题。
    • 浏览器(Chrome、Firefox、IE)出于兼容性和稳定性考虑,默认禁用管线化。
  • 本质缺点没有真正实现请求/响应并行处理,只是请求发送的顺序变了,但响应必须串行处理。

2. 多路复用

HTTP/2.0引入了多路复用,它允许多个请求和响应在一个 TCP 连接中完全并行交错地传输,互不阻塞、顺序无关,完全解决了 HTTP/1.1 管线化的所有问题。

  • 工作机制
    • HTTP/2 使用二进制格式传输,而不是文本。
    • 每个请求/响应被划分成多个帧(Frame),这些帧可以交错混合在一条 TCP 连接上。
    • 每个请求/响应流都有一个唯一的 Stream ID,可以并发处理。
  • 多路复用和管线化的关键区别
    • 客户端发了 A、B、C 三个请求
    • 管线化
      • A 响应慢,B 和 C 响应虽然早就准备好了,但不能先发,只能等 A 完成之后再处理后续请求。
    • 多路复用
      • 每个请求有独立的 Stream ID,服务端谁准备好了就先返回。
    • 比如
      • 去饭店点了4个菜,这四个菜不按顺序上菜,而是谁先做好谁上(多路复用)。
      • 去饭店点了4个菜,即便是后几道菜做好了,也要等着第一个菜上了,再跟着上(管线化)。

(三) Cookie

1. Cookie的由来

假设要求登录认证的Web页面本身无法进行状态的管理,那每次跳转新页面就会出现两张情况:

  • 再次登录
  • 在每次的请求报文中附加参数来管理登录状态。

由于无状态协议的特点可以减少服务器CPU和内存资源的消耗,所以既要保存无状态这个特征又要解决类似的矛盾所以引进了Cookie技术。

2. Cookie的基本概念

Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。

当下次客户端再往服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。

  • 本质是浏览器保存的一小段文本信息,随每次请求自动带上。

3. Cookie的工作流程

  • 第一次请求网站,服务器返回响应时,设置 Cookie:
Set-Cookie: session_id=abc123; Path=/; Expires=Wed, 01 Jun 2025 00:00:00 GMT
  • 浏览器保存这个 Cookie
  • 之后请求同站点时,浏览器会自动带上这个 Cookie:
Cookie: session_id=abc123

五、HTTP状态码

HTTP状态码负责表示客户端HTTP请求的返回结果,标记服务器端的处理是否正常、通知出现的错误等工作。

状态码如:200 OK,以3位数字和原因短句组成。

数字中第一位指定了响应类别,后两位无分类。响应类别有以下5种。

类别

原因短句

1XX

Informational(信息性状态码)

接收的请求正在处理

2XX

Success(成功状态码)

请求正常处理完毕

3XX

Redirection(重定向状态码)

需要进行附加操作以完成请求

4XX

Client Error(客户端错误状态码)

服务器无法处理请求

5XX

Server Error(服务器错误状态码)

服务器处理请求出错

(一) 常见状态码

  • 200 OK
    • 请求成功,服务器已成功处理客户端请求并返回预期内容。
  • 204 No Content
    • 请求成功,服务器已处理请求,但无内容返回。
    • 常用于指示服务器成功执行了请求(如DELETE、PUT),但无需返回数据。
  • 301 Moved Permanently
    • 永久性重定向
    • 请求的资源已永久移动到新URL
  • 302 Found
    • 临时重定向
    • 请求的资源暂时移动到新URL,客户端应继续使用原URL
  • 401 Unauthorized
    • 需要认证(如登录)。
  • 403 Forbidden
    • 服务器理解请求,但拒绝授权访问。
  • 404 Not Found
    • 服务器无法找到请求的资源。
  • 500 Internal Server Error
    • 服务器在处理请求时发生内部错误,无法完成请求。

六、HTTPS概述

HTTPS并非是应用层的一种新协议,而是HTTP通信接口部分用SSL和TLS协议代替而已。

  • 如:
    • HTTP通信流程是:HTTP->TCP。
    • HTTPS通信流程是:HTTP->SSL->TCP
  • 注:目前SSL已被TLS替代(版本进化更名为TLS)但是由于历史原因,“SSL”这个名字仍常被用来泛指SSL/TLS协议。

(一) SSL/TLS

SSL/TLS(Secure Sockets Layer / Transport Layer Security)是一种安全协议,用于在客户端和服务器之间建立加密连接,以保护数据的机密性和完整性。

  • SSL(安全套接字层)
    • SSL由Netscape公司在1994年开发,旨在保护Web浏览器与服务器之间的通信。它经历了多个版本(1.0、2.0、3.0),但由于安全漏洞,SSL 3.0是最后一个广泛使用的版本,现已逐渐被淘汰。
  • TLS(传输层安全协议)
    • TLS是SSL的继任者,由IETF(互联网工程任务组)在1999年发布。TLS 1.0基于SSL 3.0改进,随后推出了:
      • TLS 1.1(2006年)
      • TLS 1.3(2018年)
      • TLS 1.2(2008年)

相关文章:

HTTP(超文本传输协议)详解

目录 一、基本概念 二、HTTP报文&#xff08;结构&#xff09; (一) 请求报文 (二) 响应报文 三、HTTP请求方法 1. GET方法 2. POST方法 3. PUT方法 4. HEAD方法 5. DELETE 6. OPTIONS 一、知识扩展 7. TRACE 8. CONNECT 四、HTTP持久通信 (一) HTTP keep-alive…...

Unity安卓平台开发,启动app并传参

using UnityEngine; using System;public class IntentReceiver : MonoBehaviour {public bool isVR1;void Start(){Debug.LogError("app1111111111111111111111111");if (isVR1){LaunchAnotherApp("com.HappyMaster.DaKongJianVR2");}else{// 检查是否有传…...

jdbcTemplate.query备忘录

jdbcTemplate.query中使用全部字符串和参数注入&#xff0c; 查询速度为什么差距这么大 如何正确使用JdbcTemplate参数化查询 1、使用?占位符 String sql "SELECT * FROM users WHERE name LIKE ?"; List<User> users jdbcTemplate.query(sql,new Object[…...

如何搭建Z-Blog PHP版本:详细指南

Z-Blog是一款功能强大且易于使用的博客平台&#xff0c;支持PHP和ASP两种环境。本文将重点介绍如何在PHP环境下搭建Z-Blog博客系统&#xff0c;帮助您快速上线自己的个人博客站点。 准备工作 1. 获取Z-Blog PHP版本 首先&#xff0c;访问Z-Blog官方网站下载最新版本的Z-Blog…...

Docker 常用命令详解

&#x1f433; Linux 安装 Docker 及常用命令详解&#xff08;适用于 Ubuntu&#xff09; &#x1f4e6; 一、安装 Docker&#xff08;Ubuntu 系统&#xff09; 1. 更新系统 sudo apt update sudo apt upgrade -y2. 安装必要依赖 sudo apt install -y apt-transport-https …...

uniapp uni-id-co errCode“:“uni-id-captcha-required“,“errMsg“:“Captcha required

连续登录失败后就会出现图形验证码校验&#xff0c;如果前端不需要图形验证码校验&#xff0c;uni-id-co文件夹下找到module下的login文件夹下的login.js,注释掉Captcha相关校验&#xff0c;关掉即可 const {preLoginWithPassword,postLogin } require(../../lib/utils/login)…...

Github Copilot新特性:Copilot Spaces-成为某个主题的专家

概述 当今的工程团队都会面临知识碎片化的问题。关键的上下文分散在代码、文档和团队成员的头脑中&#xff0c;这使得他们很难在一个新的领域快速上手并完成工作。Copilot Spaces 通过集中您的项目上下文解决了这个问题&#xff0c;因此 Copilot 可以根据您的工作提供更智能、…...

React 第五十三节 Router中 useRouteError 的使用详解和案例分析

前言 useRouteError 是 React Router v6.4 引入的关键错误处理钩子&#xff0c;用于在 路由错误边界&#xff08;Error Boundary&#xff09; 中获取路由操作过程中发生的错误信息。 它提供了优雅的错误处理机制&#xff0c;让开发者能够创建用户友好的错误界面。 一、useRou…...

12分钟讲解主流React库

本内容是对 Every React Library Explained in 12 Minutes 内容的翻译与整理。 React Router React Router 是一个用于控制网站导航的库&#xff0c;同时也允许你自定义网站的 URL。它使用自定义组件&#xff0c;如 BrowserRouter、Routes 和 Route 组件&#xff0c;以创建 UR…...

《doubao-lite-32k 模型缓存机制使用指南》

doubao-lite-32k 模型缓存机制使用指南 一、缓存概述 1. 缓存作用 doubao-lite-32k 模型的缓存(Session 缓存)主要用于多轮对话场景,实现以下功能: 存储历史对话信息(Token),避免重复传输上下文,减少计算资源消耗。 优化长上下文(最长 32K Token)处理效率,提升多…...

攻防世界-XCTF-Web安全最佳刷题路线

每次写序都是最烦恼的&#xff0c;都不知道写什么&#xff0c;CTF是团队竞赛&#xff0c;有很多分支&#xff08;Web安全&#xff0c;密码学&#xff0c;杂项&#xff0c;Pwn&#xff0c;逆向&#xff0c;安卓&#xff09;&#xff0c;可以每个领域都涉猎&#xff0c;或许感觉那…...

t021-高校物品捐赠管理系统【包含源码材料!!!!】

视频演示地址 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装高校物品捐赠管理系统软件来发挥其高效地信息…...

设计模式——面向对象设计六大原则

摘要 本文详细介绍了设计模式中的六大基本原则&#xff0c;包括单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则和合成复用原则。每个原则都通过定义、理解、示例三个部分进行阐述&#xff0c;旨在帮助开发者提高代码的可维护性和灵活性。通过具体代码…...

Python制作史莱姆桌面宠物!可爱的

史莱姆桌面宠物 一个可爱的桌面史莱姆宠物&#xff0c;它会在您的任务栏上移动并提供可视化设置界面。 这里写目录标题 史莱姆桌面宠物功能特点安装与运行直接运行方式创建可执行文件 使用说明自定义GIF说明打包说明开源地址 功能特点 可爱的史莱姆在任务栏上自动移动支持…...

React hook之userReducer

在 React 中&#xff0c;useReducer 是一个用于管理复杂状态逻辑的 Hook&#xff0c;它类似于 Redux 中的 reducer 模式&#xff0c;但更轻量且适用于组件内部或结合 Context API 实现全局状态管理。以下是 useReducer 的详细用法指南&#xff1a; 1. 基本语法 const [state, …...

Dify源码教程:账户和密码传递分析

概述 Dify系统中账户创建过程中的密码处理是Web应用安全的重要环节。本教程详细分析了从前端表单到后端存储的完整流程&#xff0c;展示了Dify如何安全地处理用户凭据。 前端部分 在 dify/web/app/install/installForm.tsx 文件中&#xff0c;当用户填写完表单并点击安装按钮…...

如果科技足够发达,是否还需要维持自然系统(例如生物多样性)中那种‘冗余’和‘多样性’,还是可以只保留最优解?

这是一个非常深刻的问题&#xff0c;触及到了进化生物学、复杂系统理论和未来科技哲学的交汇点。 你可以这样理解这个问题的结构&#xff1a; “如果科技足够发达&#xff0c;是否还需要维持自然系统&#xff08;例如生物多样性&#xff09;中那种‘冗余’和‘多样性’&#x…...

数据分析图表类型及其应用场景

说明&#xff1a;顶部HTML文件下载后可以直接查看&#xff0c;带有示图。 摘要 数据可视化作为现代数据分析的核心环节&#xff0c;旨在将复杂、抽象的数据转化为直观、易懂的图形形式。这种转化显著提升了业务决策能力&#xff0c;优化了销售与营销活动&#xff0c;开辟了新…...

第四十二天打卡

知识点回顾 回调函数lambda函数hook函数的模块钩子和张量钩子Grad-CAM的示例 作业&#xff1a;理解下今天的代码即可 # 定义一个回调函数 def handle_result(result):"""处理计算结果的回调函数"""print(f"计算结果是: {result}")# 定…...

Github 2025-06-03Python开源项目日报 Top10

根据Github Trendings的统计&#xff0c;今日(2025-06-03统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目10Rust项目1HTML项目1C项目1 系统设计指南 创建周期&#xff1a;2507 天开发语言&#xff1a;Pyt…...

Vim查看文件十六进制方法

在 Vim 中查看文件的十六进制格式&#xff0c;可以通过以下步骤实现&#xff1a; 方法 1&#xff1a;使用内置命令&#xff08;无需插件&#xff09; 用 Vim 以二进制模式打开文件&#xff1a; vim -b 文件名或打开文件后执行&#xff1a; :set binary转换为十六进制视图&…...

电脑提示dll文件缺失怎么办 dll修复方法

当你在使用某些应用程序或启动电脑时&#xff0c;看到提示“DLL文件缺失”的错误信息&#xff0c;这通常意味着某个必要的动态链接库&#xff08;DLL&#xff09;文件无法被找到或加载&#xff0c;导致软件无法正常运行。本文将详细介绍如何排查和修复DLL文件缺失的问题&#x…...

【自动思考记忆系统】demo (Java版)

背景&#xff1a;看了《人工智能》中的一段文章&#xff0c;于是有了想法。想从另一种观点&#xff08;⭕️&#xff09;出发&#xff0c;尝试编码&#xff0c;告别传统程序员一段代码解决一个问题的方式。下图是文章原文和我的思考涂鸦✍️&#xff0c;于是想写一个自动思考记…...

【AAOS】【源码分析】用户管理(二)-- 整体架构

整体介绍 Android多用户功能作为 Android Automotive 的重要组成部分,为不同驾驶员和乘客提供了一个更加定制化、隐私保护的使用环境。Android 多用户的存在,它可以让多个用户使用同一台设备,同时保持彼此的数据、应用和设置分隔开来。 各用户类型的权限 能力SystemAdminS…...

51单片机基础部分——独立按键检测

前言 在单片机开发中&#xff0c;我们会经常对单片机的状态进行控制&#xff0c;比如我们会控制某个灯点亮&#xff0c;某个灯熄灭&#xff0c;这个时候我们就要开始做控制&#xff0c;我们可以通过什么控制呢&#xff0c;这个地方我们选择按键控制 按键实物及工作原理 生活…...

【Docker管理工具】部署Docker可视化管理面板Dpanel

【Docker管理工具】部署Docker可视化管理面板Dpanel 一、Dpanel介绍1.1 DPanel 简介1.2 主要特点 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四、下载Dpanel镜像五、部署Dpanel…...

Github 2025-06-02 开源项目周报 Top11

根据Github Trendings的统计,本周(2025-06-02统计)共有11个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目6Jupyter Notebook项目2Shell项目1Dockerfile项目1TypeScript项目1Vue项目1PowerShell项目1MindsDB:定制企业数据人工智能的开源平台…...

springboot实现查询学生

文章目录 数据库前端 请求mybatis 数据库 前端 请求 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title> </head> <body> <a href"/list">启动学生管理…...

深入解析C++五大常用设计模式:原理、实现与应用场景

设计模式是解决特定软件设计问题的经典方案&#xff0c;掌握它们能显著提升代码的可维护性和扩展性。本文详细解析C中五种最常用的设计模式&#xff0c;附带完整代码示例和实战技巧。 一、设计模式概述 设计模式是面向对象编程中可复用的解决方案&#xff0c;它们源于工程师们…...

标识符Symbol和迭代器的实现

Symbol基础 Symbol("描述") 创建唯一标识符&#xff08;每次调用返回新值&#xff09; Symbol.for("key") 全局注册表模式&#xff08;相同key返回同一Symbol&#xff09; Symbol特性 作为对象属性键时&#xff1a;obj[SymbolKey] value不参与常规遍历&…...