HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?
一、前言
作为现代互联网通信的基石,HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后,都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据;响应则承载着服务器的反馈——状态码揭示成败,头部传递元信息,正文返回结果。
理解两者的结构,不仅是后端开发、接口调试的必备技能,更是优化性能、排查问题的关键入口。本文将从报文格式、核心字段到实战案例,逐层拆解HTTP通信的底层逻辑,助你掌握网络交互的“第一性原理”。
二、HTTP 请求结构
HTTP 请求的完整结构
一个标准的 HTTP 请求由以下四部分组成:
[请求行]
[请求头]
[空行]
[请求体](可选)
1. 请求行(Request Line)
作用:请求行是 HTTP 请求的起始部分,它决定了客户端向服务器请求的类型以及请求的目标资源。通过请求方法、请求 URI 和 HTTP 版本这三个关键元素,请求行明确了客户端的意图和目标,使得服务器能够正确地理解和处理请求。
格式:<Method> <Request-URI> <HTTP-Version>
组成部分:
-
HTTP 方法(Method)
-
定义客户端对资源的操作类型。
-
常见方法:
- GET:获取资源(无请求体)。
- POST:提交数据(如表单)。
- PUT:更新整个资源。
- DELETE:删除资源。
- HEAD:获取响应头(无响应体)。
- PATCH:部分更新资源。
- OPTIONS:查询服务器支持的HTTP方法。
-
-
请求目标(Request-URI)
-
标识资源的位置,可以是绝对路径或完整URL。
-
示例:
/index.html
(相对路径)。http://example.com/api/data
(绝对路径,常见于代理请求)。
-
-
HTTP 版本
- 指定协议版本,如
HTTP/1.1
或HTTP/2
。 - 影响连接管理、性能优化等特性。
- 指定协议版本,如
示例:
GET /api/data?id=123 HTTP/1.1
2. 请求头(Request Headers)
作用:传递客户端信息、请求条件和控制指令。
格式:Header-Name: Header-Value
常见请求头字段:
字段名 | 作用 |
---|---|
Host | 目标服务器域名(HTTP/1.1 强制要求,用于虚拟主机)。 |
User-Agent | 客户端标识(如浏览器类型、操作系统)。 |
Accept | 声明客户端可接受的响应数据类型(如 text/html , application/json )。 |
Content-Type | 请求体的数据类型(如 application/json 、multipart/form-data )。 |
Content-Length | 请求体的字节长度(POST/PUT 必需)。 |
Authorization | 身份凭证(如 Bearer <token> )。 |
Cookie | 客户端存储的会话信息。 |
Cache-Control | 控制缓存行为(如 no-cache )。 |
Accept-Encoding | 支持的压缩算法(如 gzip , br )。 |
Content-Type字段
HTTP 请求头中的 Content-Type
字段用于指定请求体的媒体类型(MIME类型) ,帮助服务器正确解析客户端发送的数据格式。它是处理非 GET 请求(如 POST、PUT、PATCH 等)时的关键字段,尤其在 RESTful API 交互中至关重要。
主要作用
- 数据格式标识:明确告知服务器请求体的数据组织形式(如 JSON、表单、二进制等)。
- 解析依据:服务器根据
Content-Type
选择对应的解析方式(如 JSON 解析器、表单解码器等)。 - 兼容性保障:避免因数据格式不明确导致的解析错误或安全漏洞。
常见类型及用途
以下是几种典型的 Content-Type
值及其适用场景:
类型 | 格式说明 | 使用场景 |
---|---|---|
application/x-www-form-urlencoded | 键值对 URL 编码(如 name=John&age=30 ,空格转为 %20 ) | HTML 表单默认提交方式(非文件上传) |
multipart/form-data | 多部分数据,用 boundary 分隔,支持二进制文件 | 表单含文件上传时使用(需设置 <form enctype="multipart/form-data"> ) |
application/json | 请求体为 JSON 字符串(如 {"name": "John", "age": 30} ) | REST API 交互,前后端 JSON 数据传输 |
text/plain | 纯文本数据 | 简单文本传输(较少使用) |
application/xml | XML 格式数据 | 旧系统或特定协议要求的 XML 交互 |
application/octet-stream | 任意二进制数据流 | 文件下载或上传未知类型的二进制文件 |
示例代码
-
表单提交(URL 编码) :
POST /submit-form HTTP/1.1 Content-Type: application/x-www-form-urlencodedname=John%20Doe&age=30
-
文件上传(multipart) :
POST /upload HTTP/1.1 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxk----WebKitFormBoundary7MA4YWxk Content-Disposition: form-data; name="file"; filename="example.jpg" Content-Type: image/jpeg(二进制文件数据) ----WebKitFormBoundary7MA4YWxk--
-
发送 JSON 数据:
POST /api/users HTTP/1.1 Content-Type: application/json{"name": "John", "age": 30}
注意事项
- 必选性:当请求有 Body 时(如 POST/PUT),必须设置
Content-Type
,否则服务器可能无法解析。 - 编码参数:可附加
charset
指定字符集(如Content-Type: text/html; charset=utf-8
)。 - 错误处理:类型不匹配可能导致
415 Unsupported Media Type
错误。 - 工具自动处理:Axios/Fetch 等库会根据数据自动设置类型(如 JSON 数据自动设为
application/json
),但需注意覆盖或手动设置。
常见问题
- Q: 上传文件时为何必须用
multipart/form-data
?
A: URL 编码无法处理二进制数据分块,multipart
通过boundary
分隔多字段/文件。 - Q: 忘记设置
Content-Type
会怎样?
A: 服务器可能按默认方式(如text/plain
)解析,导致数据无法正确读取。 - Q: 如何调试
Content-Type
问题?
A: 使用开发者工具(如 Chrome DevTools)检查请求头,确保与实际发送的数据格式一致。
正确设置 Content-Type
是 HTTP 通信的关键步骤,确保数据在客户端和服务器间高效、准确地传输。
示例:
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: application/json
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
3. 空行(Empty Line)
-
作用:分隔请求头和请求体。
-
格式:一个空行(
\r\n
)。 -
示例:
[请求头结束] [空行] [请求体开始]
4. 请求体(Request Body)
作用:携带客户端提交的数据(如表单、文件上传)。
适用方法:POST、PUT、PATCH 等。
常见数据格式:
格式 | Content-Type 值 | 示例 |
---|---|---|
表单数据 | application/x-www-form-urlencoded | username=admin&password=123456 |
JSON | application/json | {"name": "Alice", "age": 30} |
文件上传(多部分表单) | multipart/form-data | 分块传输,每部分包含文件内容和元数据。 |
纯文本 | text/plain | Hello, World! |
示例(JSON 格式) :
POST /login HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: application/json
Content-Type: application/json{"username": "john_doe","password": "securepassword"
}
5. 完整示例
GET 请求:
GET /search?q=http+protocol HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
Accept: text/html,application/xhtml+xml
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
POST 请求(表单提交) :
POST /login HTTP/1.1
Host: api.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 29username=admin&password=123456
6. 总结
HTTP 请求的结构设计遵循简洁性与扩展性原则:
- 请求行明确操作目标和协议版本。
- 请求头传递元数据和控制指令。
- 请求体灵活支持多种数据格式。
理解其组成及规范,是调试接口、优化性能及保障安全性的基础。
关键注意事项
-
方法幂等性:
- GET、HEAD、PUT、DELETE 是幂等的(多次执行结果相同)。
- POST、PATCH 非幂等(可能产生副作用)。
-
安全性:
- GET、HEAD、OPTIONS 是安全的(不修改资源)。
- POST、PUT、DELETE 可能修改资源状态。
-
URI 长度限制:
- GET 请求参数通过 URL 传递,长度受浏览器限制(约 2048 字符)。
- 长数据应使用 POST 通过请求体传输。
-
协议版本差异:
- HTTP/1.1 要求
Host
头部,支持持久连接。 - HTTP/2 使用二进制分帧,隐藏了报文文本结构,但逻辑层保持一致。
- HTTP/1.1 要求
三、HTTP 响应结构
HTTP 响应是由服务器返回给客户端的结构化信息,它包含了客户端请求的结果以及相关的元数据。HTTP 响应结构主要由三部分组成:状态行、响应头和响应体。
HTTP 响应也由三部分组成:响应行、响应头部和响应体。
1. 响应行(Response Line)
响应行是 HTTP 响应的第一行,它包含了三个关键信息:HTTP 版本、状态码和状态消息。
-
HTTP 版本 :指明服务器使用的 HTTP 协议版本,例如
HTTP/1.1
或HTTP/2
。这有助于客户端了解服务器遵循的协议规范,从而正确解析响应内容。 -
状态码 :是一个三位数字代码,用于表示服务器对请求的处理结果。状态码是 HTTP 响应的核心部分之一,它提供了关于请求成功或失败的明确信息。常见的状态码包括:
- 200 OK :表示请求成功,服务器已正常处理请求并返回了相应的资源。
- 404 Not Found :表示请求的资源在服务器上不存在,无法找到。
- 500 Internal Server Error :表示服务器内部发生错误,无法完成请求。
- 302 Found :表示请求的资源被临时移动到另一个 URL,客户端需要进行重定向。
- 403 Forbidden :表示服务器拒绝了客户端的请求,通常是因为权限不足或服务器配置问题。
-
状态消息 :是对状态码的简要描述,通常是一个短语或句子,用于向人类用户提供更直观的反馈。例如,
OK
、Not Found
、Internal Server Error
等。状态消息通常与状态码一起使用,以提供更清晰的响应信息。
响应行示例:
HTTP/1.1 200 OK
表示HTTP版本是1.1
,状态码是200
,状态描述为OK
,即请求成功。
2. 响应头部(Response Headers)
响应头是 HTTP 响应中的重要部分,它包含了关于响应的详细信息,这些信息可以帮助客户端更好地理解和处理响应内容。响应头由一系列的键值对组成,每个键值对都以冒号分隔,例如 Key: Value
。以下是常见的响应头及其作用:
- Content-Type :指定响应体的媒体类型(MIME 类型),例如
text/html
、application/json
、image/jpeg
等。这告诉客户端如何解析和显示响应体中的数据。 - Content-Length :表示响应体的长度(以字节为单位)。客户端可以使用这个信息来确定响应体是否完整,或者在下载文件时显示进度条。
- Server :包含服务器软件的名称和版本信息,例如
Apache/2.4.58 (Win64) OpenSSL/3.2.0 PHP/8.3.4
。这可以帮助客户端了解服务器的运行环境,或者用于调试和分析。 - Set-Cookie :用于设置客户端的 Cookie。服务器可以通过这个响应头向客户端发送新的 Cookie,或者更新已有的 Cookie。Cookie 通常用于会话管理、用户认证等。
- Cache-Control :控制响应的缓存行为,例如
max-age=3600
表示响应可以在客户端缓存 3600 秒。这有助于提高性能,减少服务器的负载。 - Expires :指定响应的过期时间,例如
Thu, 15 Oct 2024 12:00:00 GMT
。客户端可以使用这个信息来判断响应是否过期,是否需要重新请求。 - Last-Modified :表示资源的最后修改时间,例如
Wed, 09 Oct 2024 10:00:00 GMT
。客户端可以使用这个信息来进行缓存验证,或者判断资源是否发生了变化。 - ETag :提供资源的实体标签,例如
"1234567890abcdef"
。ETag 是一种用于缓存验证的机制,客户端可以在请求头中发送If-None-Match
字段,服务器可以根据 ETag 判断资源是否发生了变化。
响应头部示例:
Content-Type: text/html; charset=UTF-8
Content-Length: 138
Date: Mon, 12 Feb 2025 14:30:00 GMT
Server: Apache/2.4.41 (Unix)
3. 响应体(Response Body)
响应体是 HTTP 响应的主体部分,它包含了服务器返回给客户端的实际数据。响应体的内容和格式取决于响应的类型和目的,例如:
- HTML 页面 :如果客户端请求的是一个网页,响应体通常是一个 HTML 文档,包含了网页的结构、内容和样式信息。客户端(通常是浏览器)会解析和渲染这个 HTML 文档,将其显示为用户可见的网页。
- JSON 数据 :如果客户端请求的是一个 API 接口,响应体通常是一个 JSON 格式的数据,包含了服务器返回的结果信息。客户端可以使用 JavaScript 或其他编程语言解析和处理这个 JSON 数据,从而实现动态的功能和交互。
- 图像、音频、视频等多媒体数据 :如果客户端请求的是一个多媒体资源,响应体通常是相应的二进制数据。客户端会根据响应头中的
Content-Type
字段来识别数据的类型,并使用相应的软件或插件进行播放或显示。 - 文本文件、PDF 文件等其他类型的数据 :如果客户端请求的是其他类型的文件,响应体通常是文件的内容。客户端可以根据响应头中的
Content-Type
字段和Content-Disposition
字段来判断如何处理这些文件,例如直接显示、下载保存等。
例如,当请求一个 HTML 页面时,响应体可能是:
<html><head><title>Example</title></head><body><h1>Welcome to the example page!</h1></body>
</html>
4. 完整示例
示例1
以下是一个 HTTP 响应的示例:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234
Server: Apache/2.4.58 (Win64) OpenSSL/3.2.0 PHP/8.3.4
Set-Cookie: session_id=1234567890; Path=/
Cache-Control: max-age=3600<!DOCTYPE html>
<html>
<head><title>Example Page</title>
</head>
<body><h1>Welcome to the Example Page</h1><p>This is an example of an HTML page returned in the response body.</p>
</body>
</html>
在这个示例中:
- 状态行 :
HTTP/1.1 200 OK
表示服务器使用的是 HTTP/1.1 协议,请求成功,状态码为 200,状态消息为 OK。 - 响应头 :包含了多个响应头字段,例如
Content-Type
指定了响应体的类型为text/html
,Content-Length
指定了响应体的长度为 1234 字节,Server
指定了服务器的软件信息,Set-Cookie
设置了一个新的 Cookie,Cache-Control
指定了缓存时间为 3600 秒。 - 响应体 :是一个 HTML 页面,包含了网页的结构和内容。客户端(通常是浏览器)会解析和渲染这个 HTML 页面,将其显示为用户可见的网页。
综上所述,HTTP 响应结构由状态行、响应头和响应体三部分组成,它们共同提供了服务器对客户端请求的完整响应信息。理解 HTTP 响应结构对于开发和调试 Web 应用程序至关重要,它可以帮助我们更好地理解服务器的行为和客户端的处理过程。
京东
如下为京东商品的一个接口,请求,响应结构示例:
四、总结
HTTP 请求结构
- 请求行:包含请求方法、目标资源和协议版本。
- 请求头部:包含客户端信息、请求元数据等。
- 请求体:在某些方法(如 POST、PUT)中,包含发送给服务器的数据。
HTTP 响应结构
- 响应行:包含协议版本、状态码和状态描述。
- 响应头部:包含响应元数据,如内容类型、长度、服务器信息等。
- 响应体:包含实际的返回数据,如网页内容、JSON 数据、文件等。
这种请求与响应结构使得客户端和服务器之间能够有效地交换信息,支持 Web 应用程序的构建。
HTTP请求与响应构成Web通信的核心框架。请求明确操作目标,响应传递结果与状态。深入理解其结构——从方法、URI到状态码、头部字段——是优化交互效率、精准调试的基石。掌握HTTP的请求和响应结构,不仅对Web开发者至关重要,也有助于优化网络性能和排查常见的通信问题。
相关文章:
HTTP的“对话”逻辑:请求与响应如何构建数据桥梁?
一、前言 作为现代互联网通信的基石,HTTP协议定义了客户端与服务器之间的“对话规则”。每一次网页加载、API调用或文件传输的背后,都离不开精心构造的HTTP请求与响应。请求中封装了用户的意图——从请求方法、资源路径到提交的数据;响应则承…...
Docker 镜像标签使用
写在前面 当使用命令 docker pull mysql 拉取镜像时,其实等价于如下命令 docker pull mysql:latest latest 是默认的标签,字面上理解为最新版本的镜像,实质上 latest 只是镜像的标签名称,跟具体某个版本号地位一样,…...
C#异步/多线程编程中Task对象强大的功能介绍。
在 C# 的异步编程中,Task 是一个非常重要的类,它表示一个异步操作。Task 类提供了许多方法,用于管理、控制和组合异步操作。以下是 Task 类中一些常用方法的详细讲解及其功能。 1. Task.Run 功能:将指定的代码块调度到线程池中异步…...
DDD聚合在 ASP.NET Core中的实现
在ASP.NET Core中实现DDD(领域驱动设计,Domain-Driven Design)聚合通常涉及到几个关键步骤,包括定义领域模型、实现领域服务、使用仓储模式等。以下是如何在ASP.NET Core应用中实现DDD聚合的一些步骤和示例。 1. 定义领域模型 首…...
docker push镜像到阿里云
阿里云账号 阿里云-计算,为了无法计算的价值 开通个人镜像容器 进入控制台,试用容器 实例列表界面 点击上图中的个人,个人版特性 创建个人版: 个人版实例界面: 设置密码 个人版实例: 创建镜像仓库 如上…...
移动通信发展史
概念解释 第一代网络通信 1G 第二代网络通信 2G 第三代网络通信 3G 第四代网络通信 4G 4g网络有很高的速率和很低的延时——高到500M的上传和1G的下载 日常中的4G只是用到了4G技术 运营商 移动-从民企到国企 联通-南方教育口有人 电信 铁通:成立于 2000 年…...
Transformer笔记
Transformer笔记 文章目录 Transformer笔记模型架构核心技术多头注意力机制概念数学概念单头注意力机制代码 基于位置的前馈网络残差连接和层规范化 编码器解码器 特点:Transformer模型完全基于注意力机制,没有任何卷积层或循环神经网络。之前Transforme…...
【学习资源】时间序列数据分析方法(1)
时间序列数据分析是一个有趣的话题,让我们多花一些时间来研究。此篇为第一篇文章。主要介绍特征提取方法、深度学习时序数据分析模型、参考资源。期望能帮助大家解决工业领域的相关问题。 1 特征提取方法:信号处理 (来源:INTELLIGENT FAULT DIAGNOSIS A…...
PHP 文件与目录操作
PHP 学习资料 PHP 学习资料 PHP 学习资料 在 PHP 编程中,文件与目录操作是一项基础且重要的技能。无论是处理用户上传文件、生成日志,还是管理项目中的各类资源,都离不开对文件和目录的操作。PHP 提供了丰富的内置函数,方便开发…...
PostgreSQL认证指南
PostgreSQL 作为一款强大的开源关系型数据库,深受开发者和企业的青睐。获得 PostgreSQL 专家认证,不仅能提升个人在数据库领域的专业能力,还能为职业发展增添有力筹码。下面为大家详细介绍 PostgreSQL 专家认证的学习路径。 一、深入理解基础…...
hive全量迁移脚本
#!/bin/bash #场景:数据在同一库下,并且hive是内部表(前缀的hdfs地址是相同的)#1.读取一个文件,获取表名#echo "时间$dt_jian_2-------------------------" >> /home/hadoop/qianyi_zengliang/rs.txt#…...
Qt5开发入门指南:从零开始掌握跨平台开发
目录 Qt框架概述 开发环境搭建 基础语法与核心机制 第一个Qt窗口程序 常见问题解答 一、Qt框架概述 1.1 什么是Qt? Qt是一个1995年由挪威Trolltech公司开发的跨平台C图形用户界面应用程序框架。最新Qt5版本主要包含: GUI模块:支持Wind…...
WPF的Prism框架的使用
安装Prism.DryIoc库: Prism的区域和模块化: 一个区域可以显示一个用户控件 一个模块就是一个项目,也就是一个类库 动态切换用户控件的案例: <Grid><Grid.RowDefinitions><RowDefinition Height"auto"…...
【机器学习】线性回归 线性回归模型的损失函数 MSE RMSE MAE R方
【机器学习系列】 KNN算法 KNN算法原理简介及要点 特征归一化的重要性及方式线性回归算法 线性回归与一元线性回归 线性回归模型的损失函数 多元线性回归 多项式线性回归 线性回归模型的损失函数 V1.0损失函数的计算方法损失函数的分类MSE (Mean Squared Error)RMSE (Root Mea…...
服务器部署DeepSeek,通过Ollama+open-webui部署
1. 安装ollama 1.1. linux 安装 Ollama是目前常用的AI模式部署的第三方工具,能一键部署deepSeek Ollama官方网址https://ollama.com/ 选择Download下载对应的服务版本 服务器选择Linux,下面是下载代码 curl -fsSL https://ollama.com/install.…...
Java 大视界 -- 开源社区对 Java 大数据发展的推动与贡献(91)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
【Vue3源码解析】应用实例创建及页面渲染
下载源码 git clone https://github.com/vuejs/core.git写该文章时的Vue版本为: "version": "3.5.13",这里要注意 pnpm 的版本不能太低,我此时的版本为 9.15.4。更新 pnpm 版本: npm install -g pnpm然后安装依赖&…...
云原生AI Agent应用安全防护方案最佳实践(上)
当下,AI Agent代理是一种全新的构建动态和复杂业务场景工作流的方式,利用大语言模型(LLM)作为推理引擎。这些Agent代理应用能够将复杂的自然语言查询任务分解为多个可执行步骤,并结合迭代反馈循环和自省机制࿰…...
人工智能 - 主动视觉可能就是你所需要的:在双臂机器人操作中探索主动视觉
AV-ALOHA 系统使用用于 AV 的 VR 耳机实现直观的数据收集,并且 用于作的 VR 控制器或引线臂。这有助于捕捉全身和头部 远程作我们的真实和模拟系统的运动,记录来自 6 个的视频 不同的摄像头,并为我们的 AV 仿制学习策略提供训练数据。 加州大…...
Ubuntu 下 systemd 介绍
系列文章目录 Linux内核学习 Linux 知识(1) Linux 知识(2) WSL Ubuntu QEMU 虚拟机 Linux 调试视频 PCIe 与 USB 的补充知识 vscode 使用说明 树莓派 4B 指南 设备驱动畅想 Linux内核子系统 Linux 文件系统挂载 QEMU 通过网络实现…...
两个实用且热门的 Python 爬虫案例,结合动态/静态网页抓取和反爬策略,附带详细代码和实现说明
在这个瞬息万变的世界里,保持一颗探索的心,永远怀揣梦想前行。即使有时会迷失方向,也不要忘记内心深处那盏指引你前进的明灯。它代表着你的希望、你的信念以及对未来的无限憧憬。每一个不曾起舞的日子,都是对生命的辜负࿱…...
Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网
| 线上研讨会时间:2025年1月27日 16:00~16:30 / 23:00~23:30 基于以太网的通信在工业自动化网络中的重要性日益增加。设备制造商正面临着一大挑战——如何快速、有效且经济地将工业以太网协议集成到其产品中。其中的关键问题包括:是否只需集成单一的工…...
Jetson Agx Orin平台preferred_stride调试记录--1924x720图像异常
1.问题描述 硬件: AGX Orin 在Jetpack 5.0.1和Jetpack 5.0.2上测试验证 图像分辨率在1920x720和1024x1920下图像采集正常 但是当采集图像分辨率为1924x720视频时,图像输出异常 像素格式:yuv_uyvy16 gstreamer命令如下 gst-launch-1.0 v4l2src device=/dev/video0 ! …...
从2025年起:数字化建站PHP 8.1应成为建站开发的基准线
在数字化浪潮席卷全球的今天,PHP语言仍然保持着Web开发领域的核心地位。根据W3Techs最新统计,PHP驱动着全球78.9%的已知服务端网站。当时间指向2025年,这个拥有28年历史的编程语言将迎来新的发展里程碑——PHP 8.1版本应成为网站开发的最低基准要求,这不仅是技术迭代的必然…...
电动汽车电池监测平台系统设计(论文+源码+图纸)
1总体设计 本次基于单片机的电池监测平台系统设计,其整个系统架构如图2.1所示,其采用STC89C52单片机作为控制器,结合ACS712电流传感器、TLC1543模数转换器、LCD液晶、DS18B20温度传感器构成整个系统,在功能上可以实现电压、电流、…...
20240914 天翼物联 笔试
文章目录 1、行测知识1.11.21.31.41.51.61.71.81.91.101.111.121.131.141.152、专业知识2.12.22.32.42.52.62.72.82.92.102.112.122.132.142.153、编程题3.13.2岗位:嵌入式开发工程师(上海) 题型:15 道行测知识,15 道专业知识,2 道编程题 注意:本文章暂无解析,谨慎分…...
前端高级面试题
以下是一些前端高级面试可能涉及到的内容: 一、前端工程化 如何构建一个适合大型团队的前端代码规范和构建流程? 答案: 代码规范方面: 使用ESLint结合Prettier来统一JavaScript和CSS(包括预处理器如Sass或Less)的语法风格。例如,规定变量命名采用驼峰命名法,函数名要有…...
【nvidia】NCCL禁用P2P后果权衡
通信bound还是计算bound? 计算bound场景: 模型参数量较小(如参数量未超出单卡显存容量,使用纯数据并行)或计算密度极高(如大batch size下的矩阵运算)时,A100的计算能力(…...
哈希表(C语言版)
文章目录 哈希表原理实现(无自动扩容功能)代码运行结果 分析应用 哈希表 如何统计一段文本中,小写字母出现的次数? 显然,我们可以用数组 int table[26] 来存储每个小写字母出现的次数,而且这样处理,效率奇高。假如我们想知道字…...
unity学习46:反向动力学IK
目录 1 正向动力学和反向动力学 1.1 正向动力学 1.2 反向动力学 1.3 实现目标 2 实现反向动力 2.1 先定义一个目标 2.2 动画层layer,需要加 IK pass 2.3 增加头部朝向代码 2.3.1 专门的IK方法 OnAnimatorIK(int layerIndex){} 2.3.2 增加朝向代码 2.4 …...
夜莺监控发布 v8.beta5 版本,优化 UI,新增接口认证方式便于鉴权
以防读者不了解夜莺,开头先做个介绍: 夜莺监控,英文名字 Nightingale,是一款侧重告警的监控类开源项目。类似 Grafana 的数据源集成方式,夜莺也是对接多种既有的数据源,不过 Grafana 侧重在可视化ÿ…...
asio的使用
1、下载 性能测试:https://github.com/huyuguang/asio_benchmark 2、基本使用 2.1 TCP 1、客户端: 2、服务端: 2.2 UDP单揪 boost的asio接收单路大数据量udp包的方法 1、发送: 2、接收: #include "Circled…...
PHP语法完全入门指南:从零开始掌握动态网页
本文专为零基础新手设计,通过5000字详细讲解带你系统学习PHP语法。包含环境搭建、基础语法、实战案例,并附20+代码示例。阅读后你将能独立开发简单动态网页! 一、PHP开发环境搭建(新手必看) 1.1 为什么需要搭建环境? PHP是服务器端脚本语言,需要运行在服务器环境中。推…...
WPF快速创建DeepSeek本地自己的客户端-基础思路版本
开发工具:VS 2015 开发环境:.Net 4.0 使用技术:WPF 本篇文章内容: 本地部署DeepSeek以后一般使用网页工具(如Chatbox)或者DOS窗口与其对话。本篇文章使用WPF创建一个基础版的对话工具。 一、搭建本地DeepS…...
Win7本地化部署deepseek-r1等大模型详解
参考链接 在Windows 7操作系统,基于llama.cpp本地化部署 deepseek-r1模型的方法 2025-02-08 2G内存Windows7运行deepseek-r1:1.5b 这两个链接写的可能不够详细,有同学私信问实现过程,这里进一步解释一下。 一、准备 需要准备的大模型、工具…...
分享一个解梦 Chrome 扩展 —— 周公 AI 解梦
一、插件简介 周公 AI 解梦是一款基于 Chrome 扩展的智能解梦工具,由灵机 AI 提供技术支持。它能运用先进的 AI 技术解析梦境含义,为用户提供便捷、智能的解梦服务。无论你是对梦境充满好奇,还是想从梦境中获取一些启示,这款插件都…...
国产Linux OS:网络性能调优关键内核参数
国产Linux OS:网络性能调优关键内核参数 参数列表 这些参数是Linux系统中用于网络性能调优的关键内核参数,它们控制了网络接口和TCP协议栈的行为。合理调整这些参数可以根据具体的应用场景和网络条件优化系统的网络性能。 sysctl net.core.rmem_max sy…...
DeepSeek接口联调(postman版)
第一步:获取API key 获取APIkeys链接https://platform.deepseek.com/api_keys 点击创建 API key 即可免费生成一个key值,别忘记保存。 第二步:找到deepseek官方接口文档 文档地址:https://api-docs.deepseek.com/zh-cn/ 第三步…...
算法19(力扣244)反转字符串
1、问题 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 2、示例 (1) 示例 1&a…...
Svelte 最新中文文档翻译(10)—— use: 与 Actions
前言 Svelte,一个非常“有趣”、用起来“很爽”的前端框架。从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte 以其独特的编…...
iptables网络安全服务详细使用
iptables防火墙概念说明 开源的基于数据包过滤的网络安全策略控制工具。 centos6.9 --- 默认防火墙工具软件iptables centos7 --- 默认防火墙工具软件firewalld(zone) iptables主要工作在OSI七层的二、三、四层,如果重新编译内核&…...
node.js + html调用ChatGPTApi实现Ai网站demo(带源码)
文章目录 前言一、demo演示二、node.js 使用步骤1.引入库2.引入包 前端HTML调用接口和UI所有文件总结 前言 关注博主,学习每天一个小demo 今天是Ai对话网站 又到了每天一个小demo的时候咯,前面我写了多人实时对话demo、和视频转换demo,今天…...
Vue 3最新组件解析与实践指南:提升开发效率的利器
目录 引言 一、Vue 3核心组件特性解析 1. Composition API与组件逻辑复用 2. 内置组件与生命周期优化 3. 新一代UI组件库推荐 二、高级组件开发技巧 1. 插件化架构设计 2. 跨层级组件通信 三、性能优化实战 1. 惰性计算与缓存策略 2. 虚拟滚动与列表优化 3. Tree S…...
DeepSeek 助力 Vue 开发:打造丝滑的日期选择器(Date Picker),未使用第三方插件
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
kubernetes源码分析 kubelet
简介 从官方的架构图中很容易就能找到 kubelet 执行 kubelet -h 看到 kubelet 的功能介绍: kubelet 是每个 Node 节点上都运行的主要“节点代理”。使用如下的一个向 apiserver 注册 Node 节点:主机的 hostname;覆盖 host 的参数࿱…...
PostgreSQL的学习心得和知识总结(一百六十八)|深入理解PostgreSQL数据库之PostgreSQL 规划器开发与调试(翻译)
目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…...
React创建项目实用教程
✍请将整篇文章阅读完再开始使用create-react-app react-project创建项目 检查node版本 node -v // node版本:v22.10.0使用nvm降版本修改到了node V20.11.1之后再进行一系列操作的 react脚手架安装: npm install -g create-react-app// node版本&…...
STM32 外部中断和NVIC嵌套中断向量控制器
目录 背景 外部中断/事件控制器(EXTI) 主要特性 功能说明 外部中断线 嵌套向量中断控制器 特性 中断线(Interrupt Line) 中断线的定义和作用 STM32中断线的分类和数量 优先级分组 抢占优先级(Preemption Priority) …...
讯飞唤醒+VOSK语音识别+DEEPSEEK大模型+讯飞离线合成实现纯离线大模型智能语音问答。
在信息爆炸的时代,智能语音问答系统正以前所未有的速度融入我们的日常生活。然而,随着数据泄露事件的频发,用户对于隐私保护的需求日益增强。想象一下,一个无需联网、即可响应你所有问题的智能助手——这就是纯离线大模型智能语音…...
【MediaTek】 T750 openwrt-23.05编 cannot find dependency libexpat for libmesode
MediaTek T750 T750 采用先进的 7nm 制程,高度集成 5G 调制解调器和四核 Arm CPU,提供较强的功能和配置,设备制造商得以打造精巧的高性能 CPE 产品,如固定无线接入(FWA)路由器和移动热点。 MediaTek T750 平台是一款综合的芯片组,集成了 5G SoC MT6890、12nm 制程…...