HTTP 协议中请求与响应的详细解析
前言:HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在互联网上传输超文本的协议 --由一个请求和响应组成,一个完整的 HTTP 请求由请求行(Request Line)、请求头(Headers)和可选的请求体(Body)组成,一个 HTTP 响应由状态行(Status Line)、响应头(Headers)和响应体(Body)组成。
1 HTTP请求
Request Line<CRLF>Header-Name: header-value<CRLF>Header-Name: header-value<CRLF>//一个或多个,均以<CRLF>结尾<CRLF>body//请求正文
1.1 请求行
以一个方法符号开头,以空格分开,后面跟着请求的URI和协议的版本,格式如下
Method Request-URI HTTP-Version CRLF
1.1.1 请求方法
其中Method表示请求方法,主要有这些方法:
请求方法 | 描述 |
---|---|
GET | 请求获取由 Request - URI 所标识的资源 |
POST | 在 Request - URI 所标识的资源后附加新的数据 |
HEAD | 请求获取由 Request - URI 所标识的资源的响应消息报头 |
PUT | 请求服务器存储一个资源,并用 Request - URI 作为其标识 |
DELETE | 请求服务器删除 Request - URI 所标识的资源 |
TRACE | 请求服务器回送收到的请求信息,主要用于测试或诊断 |
CONNECT | 保留将来使用 |
OPTIONS | 请求查询服务器的性能,或者查询与资源相关的选项和需求 |
** 使用场景**
- GET :访问网页:当你在浏览器的地址栏输入一个 URL 并回车时,浏览器会向服务器发送一个 GET 请求,请求该 URL 对应的网页资源。例如,访问 https://www.example.com。
搜索数据:在搜索引擎中输入关键词进行搜索时,浏览器会将关键词作为查询参数附加在 URL 后面,向服务器发送 GET 请求。例如,https://www.google.com/search?q=apple。 - POST:用户在网站的注册或登录表单中输入用户名、密码等信息,点击提交按钮后,浏览器会向服务器发送一个 POST 请求,将用户输入的数据发送到服务器进行处理。
上传文件:当用户在网页上选择一个文件并点击上传按钮时,浏览器会使用 POST 请求将文件数据发送到服务器。 - HEAD :检查资源是否存在:在下载文件之前,可以先使用 HEAD 请求检查文件是否存在,以及文件的大小和修改时间等信息。
缓存验证:浏览器可以使用 HEAD 请求检查服务器上的资源是否有更新,从而决定是否需要重新下载资源。 - PUT方法:更新用户信息:用户在网站上修改自己的个人信息后,浏览器会使用 PUT 请求将更新后的信息发送到服务器,更新服务器上存储的用户信息。
文件上传与替换:将本地的文件上传到服务器指定的位置,如果该位置已经存在文件,则替换该文件 - DELETE 方法:删除用户账户:用户在网站上选择删除自己的账户时,浏览器会向服务器发送一个 DELETE 请求,请求服务器删除该用户的账户信息。
删除文件:在文件管理系统中,用户选择删除某个文件时,系统会使用 DELETE 请求将该文件从服务器上删除。
其他三个不常用
1.1.2 Request-URI
**Request-URI(请求统一资源标识符)**是用于指定客户端所请求资源的字符串。它就像是在互联网这个庞大的资源库中定位特定资源的 “地址”,帮助服务器明确客户端想要获取或操作的具体内容 。
组成部分
- 路径:这是 Request - URI 的核心部分,用于指定服务器上资源的具体位置。它以 “/” 作为分隔符,代表了资源在服务器文件系统或应用程序中的层级结构。例如,/products/list.html表示服务器上 “products” 目录下的 “list.html” 文件。
- 查询字符串:位于路径之后,以 “?” 开头,由一系列键值对组成,用于向服务器传递额外的参数信息。多个键值对之间用 “&” 分隔。例如,/search?q=python&category=books中,“q=python” 和 “category=books” 是两个查询参数,分别表示搜索关键词为 “python”,搜索类别为 “books”。服务器可以根据这些参数来执行相应的搜索逻辑,返回符合条件的结果。
- 片段标识符(Fragment Identifier):以 “#” 开头,通常用于指定网页内的特定位置或元素。例如,/article.html#section2表示请求 “article.html” 页面,并定位到页面中 “section2” 标识的位置。不过,片段标识符通常不会被发送到服务器,而是由浏览器在客户端根据其指示进行页面内的导航操作
作用
- 定位资源:服务器根据 Request - URI 来查找并返回相应的资源。它就像是资源的 “地址”,让服务器能够准确地找到客户端所请求的文件、数据或执行特定的操作。例如,客户端请求/api/users/123,服务器就会明白需要获取 ID 为 123 的用户信息。
- 传递参数:通过查询字符串,客户端可以向服务器传递各种参数,以便服务器根据这些参数来定制响应。比如在搜索功能中,客户端通过 Request - URI 传递搜索关键词、排序方式、结果数量等参数,服务器根据这些参数进行相应的搜索和数据处理,然后返回符合要求的结果。
- 支持 RESTful API:在 RESTful 架构的 API 中,Request - URI 被广泛用于表示不同的资源和操作。例如,GET /api/products可以表示获取所有产品资源,POST /api/products用于创建新的产品资源,PUT /api/products/123用于更新 ID 为 123 的产品资源,DELETE /api/products/123用于删除该产品资源。通过这种方式,Request - URI 不仅定位了资源,还暗示了对该资源要执行的操作,使得 API 的设计更加清晰和规范。
1.2.3 Version
“HTTP - Version” 表示客户端使用的 HTTP 协议版本",常见的有 HTTP/1.1、HTTP/2 .
例如,一个完整的 HTTP 请求行可能看起来像这样:
GET /index.html HTTP/1.1
GET” 是方法,“/index.html” 是 Request - URI,“HTTP/1.1” 是 HTTP 版本
1.2 请求头
请求头是 HTTP 请求消息中的一部分,位于请求行(包含方法、Request - URI 和 HTTP - Version)之后,请求体之前。它由一系列的键值对组成,用于向服务器传递关于请求的附加信息,例如客户端的身份、请求的资源类型、期望的响应格式等。以下是一些常见的请求头字段及其作用
1.3 请求体
请求体是 HTTP 请求消息中的一部分,位于请求头之后,通常用于向服务器发送额外的数据。以下是关于请求体的详细介绍:
通用请求头字段
- Cache - Control:用于指定缓存相关的指令,如no - cache表示不使用缓存,max - age = 3600表示缓存有效期为 3600 秒。
- Connection:用于指定连接的管理方式,如keep - alive表示保持连接,以便在多个请求之间重用连接,提高性能;close表示请求完成后关闭连接。
- Date:表示请求发送的日期和时间。
请求实体头字段
- Content - Type:指定请求体中数据的类型,如application/json、application/x - www - form - urlencoded、multipart/form - data等。
- Content - Length:指定请求体的长度(以字节为单位)。
- Content - Encoding:用于指定请求体的编码方式,如gzip、deflate等,表示请求体数据经过了相应的压缩算法处理。
客户端请求头字段
- Accept:告诉服务器客户端能够接受的响应内容类型,如Accept: text/html, application/xhtml + xml, application/xml;q = 0.9, /;q = 0.8,表示客户端优先接受 HTML、XHTML 和 XML 格式的响应,其次是其他任意类型的响应。
- Accept - Encoding:指定客户端能够接受的响应内容的编码方式,如gzip、deflate等,用于告知服务器可以对响应数据进行压缩以减少传输量。
- Accept - Language:表示客户端期望的响应语言,如Accept - Language: en - US, en;q = 0.5,表示客户端优先接受美式英语,其次是其他英语变体。
- User - Agent:包含了客户端的相关信息,如浏览器类型、版本、操作系统等,例如User - Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.138 Safari/537.36,服务器可以根据这个字段来为不同的客户端提供不同的响应或进行特定的处理。
- Cookie:用于在客户端和服务器之间传递会话相关的信息。客户端会在请求头中包含之前从服务器接收到的 Cookie,服务器可以根据这些 Cookie 来识别用户身份、跟踪用户会话等。
1.3请求头
作用
- 提交数据:最主要的作用是向服务器提交数据。比如在用户注册、登录、发表评论、上传文件等操作中,需要将用户输入的信息、文件内容等数据发送到服务器,这些数据就包含在请求体中。
- 支持复杂操作:对于一些需要大量数据传输或复杂操作的场景,如提交表单数据、发送 JSON 格式的配置信息、上传二进制文件等,请求体提供了一种有效的方式来传递这些数据,使服务器能够根据这些数据进行相应的处理。
数据格式
- 表单数据:通常在提交 HTML 表单时使用,数据以键值对的形式表示,例如username=john&password=123456。多个键值对之间用 “&” 分隔。这种格式适用于简单的文本数据提交。
- JSON 数据:由于其轻量级和易于解析的特点,在现代 Web 应用程序中被广泛用于传递结构化数据。例如:
{
"name": "John Doe",
"age": 30,
"email": "johndoe@example.com"
}
- 二进制数据:用于上传文件,如图像、视频、文档等。在这种情况下,请求体包含的是文件的二进制内容,服务器需要根据文件类型和相关的处理逻辑来正确接收和保存这些数据。
相关请求头字段
- Content - Type:该请求头字段用于指定请求体中数据的类型。例如,Content - Type: application/json表示请求体中的数据是 JSON 格式;Content - Type: application/x - www - form - urlencoded表示是表单数据;Content - Type: multipart/form - data用于文件上传,它允许在一个请求中同时上传多个文件和其他表单数据。
- Content - Length:用于指定请求体的长度(以字节为单位)。服务器可以根据这个字段来确定何时接收完整个请求体的数据
实战
import requests# 目标URL
url = 'https://example.com/api/login'# 请求头
headers = {'User - Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.138 Safari/537.36','Content - Type': 'application/json','Accept': 'application/json','Connection': 'keep - alive'
}# 请求体
data = {'username': 'your_username','password': 'your_password'
}# 发送POST请求
response = requests.post(url, headers=headers, json=data)# 打印响应状态码和内容
print(response.status_code)
print(response.text)
响应
状态行:
位于响应消息的第一行,包含 HTTP 版本、状态码和原因短语。例如,HTTP/1.1 200 OK,其中HTTP/1.1是 HTTP 协议版本,200是状态码,OK是原因短语
。状态码表示服务器对请求的处理结果,常见的状态码有:
- 2xx 成功:如200 OK表示请求成功,服务器已成功处理请求并返回了相应的资源;201 Created表示请求已成功,并且服务器创建了一个新的资源。
- 3xx 重定向:如301 Moved Permanently表示请求的资源已被永久移动到新的 URL;302 Found表示请求的资源临时移动到新的 URL,客户端应使用新的 URL 再次发起请求。
- 4xx 客户端错误:如400 Bad Request表示客户端发送的请求有误,服务器无法理解;401 Unauthorized表示客户端未提供有效的身份验证信息,访问被拒绝;404 Not Found表示服务器找不到请求的资源。
- 5xx 服务器错误:如500 Internal Server Error表示服务器内部发生错误,无法完成请求;503 Service Unavailable表示服务器暂时无法处理请求,通常是由于服务器过载或正在维护。
响应头:
包含一系列键值对,用于提供关于响应的附加信息,例如:
- Content - Type:指定响应体中数据的类型,如text/html表示 HTML 页面,application/json表示 JSON 数据,image/jpeg表示 JPEG 图像等。
- Content - Length:指定响应体的长度(以字节为单位),以便客户端知道需要接收多少数据。
- Cache - Control:用于指定缓存相关的指令,如public表示响应可以被任何缓存存储;private表示响应只能被客户端缓存;no - cache表示不允许缓存。
- Set - Cookie:用于设置 Cookie,服务器通过这个字段将 Cookie 发送给客户端,客户端会在后续的请求中包含这些 Cookie。
- Location:在重定向响应中,用于指定客户端应重定向到的 URL。
响应体
是服务器返回给客户端的实际数据内容,可以是 HTML 页面、JSON 数据、XML 数据、图片、视频等各种类型的数据,具体取决于Content - Type字段的设置。例如,如果请求的是一个网页,响应体中就包含了该网页的 HTML 代码;如果请求的是一个 API 接口,响应体可能包含 JSON 格式的业务数据。
通俗易懂
假设你去一家图书馆借书,你向图书馆管理员提出借书的请求,这个过程就好比是客户端向服务器发送 HTTP 请求。而图书馆管理员根据你的请求,给你相应的回复,这就类似于服务器给客户端的 HTTP 响应。
比如说,你走到图书馆服务台对管理员说:“我想借一本名为《西游记》的书。” 这就是你的请求。过了一会儿,管理员对你说:“好的,这是你要的《西游记》。” 同时,管理员还告诉你一些其他信息,比如 “这本书可以借一个月”“请爱护书籍” 等。这里,管理员说 “好的,这是你要的《西游记》” 就相当于 HTTP 响应中的响应体,是你真正想要的内容;而 “这本书可以借一个月”“请爱护书籍” 等信息就像是响应头,提供了关于这本书的一些附加信息。
相关文章:
HTTP 协议中请求与响应的详细解析
前言:HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在互联网上传输超文本的协议 --由一个请求和响应组成,一个完整的 HTTP 请求由请求行(Request Line)、请求头(Headers&…...
Collectors.toMap / list 转 map
前言 略 Collectors.toMap List<User> userList ...; Map<Long, User> userMap userList.stream().collect(Collectors.toMap(User::getUserId, Function.identity()));假如id存在重复值,则会报错Duplicate key xxx, 解决方案 两个重复id中&#…...
根据模板将 Excel 明细数据生成 PDF 文档 | PDF实现邮件合并功能
在日常办公中,我们常常会面临这样的需求:依据特定的模板,把 Excel 里的每一条数据转化为单独的 PDF 文档,且这些 PDF 文档中的部分内容会根据 Excel 数据动态变化。这一功能不仅能高效完成任务,还支持图片的动态替换&a…...
<KeepAlive>和<keep-alive>有什么区别
在不同的前端技术框架里,<KeepAlive> 和 <keep-alive> 有着不同的含义与使用场景,下面分别从 Vue 2 和 Vue 3 来为你详细介绍它们的区别。 Vue 2 中的 <keep-alive> 在 Vue 2 里,<keep-alive> 属于内置组件&#x…...
vscode正则表达式使用
小标题 ^\d.\d.\d\s.*$ ^表示匹配字符串的开头。\d\.\d\.\d表示匹配一到多个数字,接着一个小数点,再接着一到多个数字,然后又一个小数点和一到多个数字,用来匹配类似 “2.1.1” 这样的标题号部分。\s表示匹配一个空格。.*表示匹配…...
【LeetCode 题解】算法:4.寻找两个正序数组的中位数
1. 引言:挑战 LeetCode 经典算法题 在算法这片广袤无垠的天地里,一道道经典题目宛如夜空中熠熠生辉的星辰,持续吸引着开发者们投身其中,不断探索。今天,我们继续将目光聚焦于 LeetCode 平台上一道极具代表性的题目&am…...
2025.03.23【前沿工具】| CellPhoneDB:基因网络分析与可视化的利器
文章目录 1. CellPhoneDB工具简介2. CellPhoneDB的安装方法3. CellPhoneDB常用命令 1. CellPhoneDB工具简介 在单细胞生物学的迅猛发展中,理解细胞间的通讯机制对于揭示组织功能和疾病状态至关重要。CellPhoneDB工具,作为一个专门设计用来分析单细胞转录…...
Excel(进阶篇):powerquery详解、PowerQuery的各种用法,逆透视表格、双行表头如何制作透视表、不规则数据如何制作数据透视表
目录 PowerQuery工具基础修改现有数据理规则PowerQuery抓取数据的两种方式多文件合并透视不同表结构多表追加数据透视追加与合并整理横向表格:逆透视 数据用拆分工具整理数据算账龄 不等步长值组合合并文件夹中所有文件PowerQuery处理CSV文件双行表头、带合并单元格如何做数据…...
【WebGIS教程2】Web服务与地理空间服务解析
前言: 在万物互联的时代,Web服务作为跨平台协作的基石,正推动地理信息领域向开放共享迈进。地理空间Web服务通过标准化协议(如WMS、WFS)与松耦合架构,打破传统GIS的封闭性,实现数据与功能的无缝…...
[250325] Claude AI 现已支持网络搜索功能!| ReactOS 0.4.15 发布!
目录 Claude AI 现已支持网络搜索功能!ReactOS 0.4.15 发布! Claude AI 现已支持网络搜索功能! 近日,Anthropic 公司宣布,其 AI 助手 Claude 现在可以进行网络搜索,为用户提供更及时、更相关的回复。这项新…...
gitee第三方登录获取openid | python+Django |已跑通
注:此项目根据美多改编,qq第三方需要备案gitee不用 一、获取appid和appsecret 点击右侧账号设置 左侧菜单栏数据管理里有第三方应用 点击创建应用,根据你的具体情况设置 二、以下是事例代码,根据需要修改即可 setting.py #QQ登…...
Enovia许可分析的自动化解决方案
随着企业产品生命周期管理(PLM)需求的不断演变,Enovia许可分析已成为确保资源优化和合规性的关键环节。然而,传统的手动许可分析方法往往效率低下、易出错,并且难以应对大规模数据。为了解决这一挑战,Enovi…...
【模拟面试】计算机考研复试集训(第十四天)
文章目录 前言一、专业面试1、进程调度中的轮转调度(Round Robin)如何实现?时间片大小对系统性能有何影响?2、动态规划的核心思想是什么?举一例说明其与分治法的区别。3、事务的ACID特性中,“隔离性” 如何…...
ambiq apollo3 ADC实例程序注释
#include "am_mcu_apollo.h" // Apollo MCU 外设寄存器定义和HAL库 #include "am_bsp.h" // 板级支持包(引脚定义、LED函数等) #include "am_util.h" // 通用工具函数(如printf重…...
ECharts实现数据可视化
ECharts实现数据可视化 一、Echarts的简介二、Echarts使用教程1.下载echarts.min.js文件2.编写echarts代码(1)创建渲染实列(2)修改option达到预期的效果(3)创建配置项到实例中 三、Echarts的基础配置四、前…...
Json冲突崩溃问题
在一个项目中同时使用RapidJSON库后崩溃了。。。。 --- ### **一、潜在问题分析** 1. **符号重复定义(ODR冲突)** - **原因**:若您的库和上位机主程序均静态链接了RapidJSON(如编译为.a或.lib),或通…...
HeyGem.ai 全离线数字人生成引擎加入 GitCode:开启本地化 AIGC 创作新时代
在人工智能技术飞速演进的时代,数据隐私与创作自由正成为全球开发者关注的焦点。硅基智能旗下开源项目 HeyGem.ai 近日正式加入 GitCode,以全球首个全离线数字人生成引擎的颠覆性技术,重新定义人工智能生成内容(AIGC)的…...
Go常见问题与答案笔记
这是一篇值的收藏的go常见问题与答案的笔记,内容包括了go的高级,如:悲观锁与乐观锁区别,for range赋值、waitgroup底层原理、go同步原语、defer关键字讲解。 文章目录 1.悲观锁VS乐观锁的区别2.for range中赋值的变量,…...
Redis 服务搭建
💢欢迎来到张翊尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 Redis 服务搭建源代码编译安装获取源码安装依赖Ub…...
React-Router路由跳转、传参、抽象封装以及嵌套路由
React-Router 示例React-Router抽象路由模块步骤: 路由导航声明式导航编程式导航 路由导航传参searchParams传参params传参 嵌套路由配置默认二级路由404路由配置两种路由模式如何选择 示例 这里我创建两个页面,分别是主页和登录页分别使用编程式导航和…...
PhotoShop学习02
1.添加文本 这个工具栏是文字工具栏,快捷键是T。选择之后鼠标会变成一个竖杠外貌,我们可以借此在图片中写入文字。 选择后,上方的工具栏会变为专门调整文字工具 这个框点击旁边的小箭头可以选择我们我们电脑系统自带的字体,同时可…...
Isaac Sim与Isaac Lab初使用
目录 基于Omiverse下载Isaacsim安装Isaac Lab配置isaacsim环境测试克隆仓库配置python环境强化学习训练的测试 IsaacLab模板配置vscode环境ros接口安装 作为nvidia出品的仿真软件,很多机器人、机器狗【具身智能】都可以有很不错的效果,所以会使用isaac s…...
用户模块——自定义业务异常
用户信息查询接口 在开发用户系统时,一个最基本的需求就是获取用户的个人信息,比如昵称、头像、改名卡次数等。本部分将介绍如何实现一个用户信息查询接口,并结合项目中的用户背包表,查询用户是否有可用的改名卡。 1. 用户信息查…...
基于数据挖掘从经验方和医案探析岭南名医治疗妇科疾病的诊疗和用药规律
标题:基于数据挖掘从经验方和医案探析岭南名医治疗妇科疾病的诊疗和用药规律 内容:1.摘要 背景:岭南地区独特的地理环境、气候条件及人文风俗使该地区妇科疾病具有一定特点,岭南名医在长期临床实践中积累了丰富的治疗经验。目的:基于数据挖掘…...
从零到一开发一款 DeepSeek 聊天机器人
AI聊天机器人 目标设计方案系统架构技术选型功能模块 实现代码环境配置安装依赖 核心代码API 请求函数主循环函数 功能扩展1. 情感分析2. 多语言支持3. 上下文记忆4. 用户身份识别 总结附录 目标 开发一个智能聊天机器人,旨在为用户提供自然、流畅的对话体验。通过…...
开源CDN产品-GoEdge
一、背景 上篇文章分析了一下CDN的基本原理以及使用代码实现了一个乞丐版的智能DNS调度器。从整个例子我们可以清晰了解到CDN原理,也就那么回事。 但是,之前也讲过了,CDN产品融合的技术比较杂、也比较多。所以我就想着,万物皆有开…...
Resume全栈项目(一)(.NET)
文章目录 项目地址一、数据库创建/日志安装1.1 创建实体层1. Entities2. Enums 存放枚举 1.2 创建数据库层1. 安装Persistance层需要的库2. 创建ResumeDbContext3. 添加数据库配置/注册DBContext4. 执行Add-Migration5. 修改字段类型6. Enum支持Json 1.3 安装Serilog1. Api层安…...
如何快速下载并安装 Postman?
从下载、安装、启动 Postman 这三个方面为大家详细讲解下载安装 Postman 每一步操作,帮助初学者快速上手。 Postman 下载及安装教程(2025最新)...
【PICO】开发环境配置准备
Unity编辑器配置 安装Unity编辑器 安装UnityHub 安装Unity2021.3.34f1c1 添加安卓平台模块 Pico软件资源准备 资源准备地址:Pico Developer PICO SDK PICO Unity Integration SDK PICO Unity Integration SDK 为 PICO 基于 Unity 引擎研发的软件开发工具…...
Unity图形学Shader快速回顾
参考知识点来源于: 人间自有韬哥在, 唐老狮,窗外听轩雨 , 呆呆敲代码的小Y little_fat_sheep, AitTech, DeepSeek, 百度, 豆包 目录 一、渲染管线1.应用阶段2.几何阶段3.光栅化阶段 二、矩阵的几何意义1. 平移2. 旋转3. 缩放4.复合运算 三、…...
十六进制(Hexadecimal)简介
十六进制(Hexadecimal)简介 1.1 什么是十六进制? 十六进制是一种使用16个符号表示数值的系统:数字0-9(表示0-9),字母A-F(表示10-15)。 1.2 十六进制表示法 在编程中&a…...
1、pytest基本用法
目录 先给大家分享下学习资源 1. 安装pytest 2. 编写用例规则 3. 执行用例 最近在学习pytest的用法 并且用这套框架替换了原来的unittest, 同是测试框架 确实感觉到pytest更加便捷 这边分享给大家我得学习心得 先给大家分享下学习资源 1 官方文档 pytest 官方…...
2024年3月全国计算机等级考试真题(二级C语言)
😀 第1题 下列叙述中正确的是 A. 矩阵是非线性结构 B. 数组是长度固定的线性表 C. 对线性表只能作插入与删除运算 D. 线性表中各元素的数据类型可以不同 题目解析: A. 矩阵是非线性结构 错误。矩阵通常是二维数组,属…...
GitHub高级筛选小白使用手册
GitHub高级筛选小白使用手册 GitHub 提供了强大的搜索功能,允许用户通过高级筛选器来精确查找仓库、Issues、Pull Requests、代码等。下面是一些常用的高级筛选用法,帮助你更高效地使用 GitHub 搜索功能。 目录 搜索仓库搜索Issues搜索Pull Requests搜…...
如何用腾讯云建站做好一个多语言的建筑工程网站?海外用户访问量提升3倍!分享我的经验
作为新疆地区领先的工程建筑企业,我们深知在数字化浪潮中,一个专业、高效且具备国际视野的官方网站是企业形象与业务拓展的“门面担当”。然而,传统的建站流程复杂、技术门槛高、多语言适配难等问题,曾让我们在数字化转型中举步维…...
SpringBoot-配置文件中敏感信息的加密保姆级教程
前言 公司安全部门检查,要求系统配置文件中的敏感信息如数据库密码等,进行加密处理,否则将受到公司的安全处罚,无奈只要按照公司要求,对springboot项目配置文件的敏感信息进行加密和解密处理。详细教程如下。 快速上…...
数据结构——串
串是一种数据元素为字符的特殊的线性表。 1. 串的定义 零个或多个字符(字母、数字或其他字符)组成的有限序列。记为 S"a1a2...an"S"a1a2...an",长度为 nn,空串长度为0。 2.串的术语 串长度…...
使用python爬取网络资源
整体思路 网络资源爬取通常分为以下几个步骤: 发送 HTTP 请求:使用requests库向目标网站发送请求,获取网页的 HTML 内容。解析 HTML 内容:使用BeautifulSoup库解析 HTML 内容,从中提取所需的数据。处理数据ÿ…...
【MySQL | 七、存储引擎是什么?】
存储引擎是什么?作用于哪里? 1. 存储引擎的定义 存储引擎(Storage Engine)是数据库管理系统中负责 数据的存储、检索和管理 的核心组件。它决定了数据如何存储在磁盘上,以及如何从磁盘中读取数据。存储引擎是数据库与…...
Linux -- 进程间通信(IPC)-- 进程间通信、管道、system V 共享内存、system V 消息队列、责任链模式 、system V 信号量
一、什么是进程间通信 1.进程间通信的目的 数据传输:一个进程需要将它的数据发送给另一个进程。资源共享:多个进程之间共享同样的资源。通知事件:一个进程需要向另一个或一组进程发送消息,通知它(它们)发…...
远程登录服务(ssh)
一、远程登录服务概述 1. 概念 远程登录服务就像是一个神奇的桥梁,它让你能够跨越物理距离,通过网络连接到另一台计算机上进行操作。无论你身在何处,只要有网络连接,你就可以像坐在目标计算机前一样进行各种操作。 2. 功能 分享…...
【从零实现Json-Rpc框架】- 项目设计篇
📢博客主页:https://blog.csdn.net/2301_779549673 📢博客仓库:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! &…...
EtherCAT转CANopen配置CANopen侧的PDO映射
EtherCAT转CANopen配置CANopen侧的PDO映射 在工业自动化领域,EtherCAT和CANopen是两种广泛应用的通信协议。它们各自具有独特的优势,但在某些应用场景下,需要将这两种协议进行转换以实现设备间的高效数据交换。本文将详细介绍如何在使用Ethe…...
Vite管理的Vue3项目中monaco editer的使用以及组件封装
文章目录 背景环境说明安装流程以及组件封装引入依赖封装组件 外部使用实现效果 v-model实现原理 背景 做oj系统的时候,需要使用代码编辑器,决定使用Monaco Editor,但是因为自身能力问题,读不懂官网文档,最终结合ai和网友的帖子成功引入&…...
完整的类在JVM中的生命周期详解
首先给出一个示例代码: 示例的目标是展示一个多功能的类结构,包含继承、接口实现、静态成员、本地方法、线程安全等特性,同时模拟一个简单的“计算器”场景,计算并管理数字。(尽量将所有的 Java 组件和关键字都给出&am…...
大数据学习栈记——HBase操作(shell java)
本文介绍HBase在shell终端的常见操作以及如何利用java api操作HBase,操作系统:Ubuntu24.04 参考: https://blog.51cto.com/u_16099228/8016429 https://blog.csdn.net/m0_37739193/article/details/73618899 https://cloud.tencent.com/d…...
【商城实战(65)】退换货流程全解析:从前端到后端的技术实现
【商城实战】专栏重磅来袭!这是一份专为开发者与电商从业者打造的超详细指南。从项目基础搭建,运用 uniapp、Element Plus、SpringBoot 搭建商城框架,到用户、商品、订单等核心模块开发,再到性能优化、安全加固、多端适配,乃至运营推广策略,102 章内容层层递进。无论是想…...
改进BM25稀疏检索和BGE稠密检索
改进BM25稀疏检索和BGE稠密检索 检索算法层面 混合检索策略优化 自适应加权融合:在BM25和BGE等混合检索时,根据查询文本的特征(如长度、专业术语占比等)动态调整两者的权重。例如,对于包含大量专业术语的查询,增加BGE的权重;对于关键词明确的简单查询,增加BM25的权重。…...
WPS二次开发系列:以自动播放模式打开PPT文档
在前面文章中 android 调用wps打开文档并感知保存事件 介绍了如何使用WPS SDK打开文档,那么我们是否能够实现在打开WPS 文档的时候能够传递一些参数来控制打开文档的行为呢,经过研究WPS SDK相关文档和API,最终实现了 以自动播放方式打开PPT文…...
当AI重构编程范式:Java 24的进化逻辑与技术深水区的战略突围
一、语言进化的底层密码:从“工具适配”到“定义规则” 在2025年3月19日发布的Java 24中,Oracle以"30周年技术宣言"的姿态展示了编程语言进化的新范式。该版本不仅包含模式匹配、结构化并发等21项JEP特性,更通过后量子加密、AI原生…...