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

HTTP由浅入深

概述

超文本传输协议(HTTP, Hypertext Transfer Protocol) 是一种用于传输超媒体文档(例如 HTML)的应用层协议。它最初被设计用于 Web 浏览器与 Web 服务器之间的通信,但也广泛应用于其他客户端与服务器的交互。

HTTP 遵循经典的[客户端-服务器(Client-Server)模型:客户端发起请求,服务器处理并返回响应。HTTP 是一种无状态协议,即服务器在两个请求之间不保留任何状态信息。

特点
  1. 简单快速:客户端向服务器请求服务时,仅需发送请求方法和路径。常用的方法有 GET、HEAD、POST 等。由于协议本身结构简单,HTTP 服务器实现轻量,通信速度较快。
  2. 灵活:HTTP 允许传输任意类型的数据,通过 Content-Type 头来标识传输的数据类型。
  3. 无连接:HTTP 的无连接性指每次请求完成后,客户端与服务器的连接就会断开。这种方式有助于节省服务器资源,提升处理效率。
  4. 无状态:HTTP 协议本身不记录请求之间的状态信息。如果需要在多个请求之间保留用户状态,通常通过 Cookie、Session、Token 等机制实现。无状态的好处是服务器响应更快,但也带来了开发上的额外工作。
  5. 支持 B/S 和 C/S 模式:HTTP 既可用于浏览器/服务器(Browser/Server)架构,也适用于客户端/服务器(Client/Server)通信,因而应用广泛。
URL

HTTP 使用统一资源标识符(URI, Uniform Resource Identifier)来标识和定位资源。**URL(Uniform Resource Locator,统一资源定位符)**是 URI 的一种形式,包含了访问某个资源所需的完整信息。

下面通过一个新的 URL 示例来说明其组成部分:

https://example.com:8443/docs/tutorial/index.html?user=alice&lang=zh#section2

这个 URL 可以分为以下几个部分:

  1. 协议(Scheme)https
    指明使用的协议是 HTTPS,即 HTTP 的加密版本,保障数据的安全性。
  2. 域名(Host)example.com
    表示服务器的地址,既可以是域名也可以是 IP 地址。
  3. 端口(Port):8443
    指定服务器监听的端口号。若省略此部分,将使用协议的默认端口(HTTPS 默认为 443)。
  4. 路径(Path)/docs/tutorial/
    表示服务器上资源的目录结构,也称为虚拟目录。
  5. 文件名(File)index.html
    表示请求的具体资源文件,若省略则通常由服务器返回默认首页文件。
  6. 查询参数(Query)?user=alice&lang=zh
    用于向服务器传递额外信息。多个参数通过 & 分隔,键值对之间用 = 连接。
  7. 锚点(Fragment)#section2
    表示页面中的某个位置(例如跳转到 HTML 的某个 id),不会参与服务器通信,仅由前端解析处理。

HTTP 与 HTTPS

概述

HTTP(Hypertext Transfer Protocol,超文本传输协议)
用于从 Web 服务器传输超文本(如 HTML 文件、图片、视频等)到客户端浏览器,是一种基于 TCP/IP 的请求-响应协议,默认端口为 80

HTTPS(Hypertext Transfer Protocol Secure,超文本传输安全协议)
是 HTTP 的安全版本,在 HTTP 的基础上增加了 SSL/TLS 加密机制,提供数据加密、完整性校验和身份验证,默认端口为 443

HTTP 工作原理

HTTP 使用“客户端 - 服务器”模型工作:

  1. 客户端发起请求:浏览器等客户端向服务器发起 HTTP 请求;
  2. 服务器处理请求:服务器解析请求、读取资源或处理业务逻辑;
  3. 服务器返回响应:返回 HTML 页面、图片、JSON 数据等内容;
  4. 客户端渲染页面:浏览器接收响应并渲染出完整页面。

常见的 Web 服务器有:ApacheNginxIIS(Internet Information Services) 等。

HTTP 的三个特性:

  • 无连接:每次请求/响应后即断开连接;
  • 无状态:服务器不保存任何关于客户端的会话状态;
  • 媒体独立:只要客户端和服务器能识别 MIME 类型,任何格式的数据都可通过 HTTP 传输。
HTTPS 的作用

HTTPS 通过 SSL/TLS 协议 提供如下安全保障:

  • 加密传输:防止数据被第三方窃听;
  • 数据完整性:防止传输过程中的数据被篡改;
  • 身份验证:确保数据是从真实的服务器发出的。

HTTPS 的信任依赖于操作系统中预装的 CA(证书颁发机构)

  • 浏览器需要信任 CA;
  • 服务器必须使用有效的证书;
  • 证书必须匹配访问的域名;
  • 协议加密过程必须完整并有效。
区别总结
对比维度HTTPHTTPS
是否加密明文传输SSL/TLS 加密传输
端口号80443
安全性不安全,易被监听或篡改安全,具备加密、认证与完整性校验功能
证书要求无需证书需部署 SSL 证书
性能较快,无加密开销稍慢,有加解密过程
SEO 影响可能被降权更受搜索引擎优待
浏览器提示显示“不安全”显示“安全锁”
成本免费需购买或申请 SSL 证书
适用场景非敏感信息传输场景(如新闻博客)涉及隐私或敏感信息(如电商、登录等)

请求报文

HTTP 请求报文由三部分组成:

  1. 请求行(Request Line)

  2. 请求头(Request Header)

  3. 请求体(Request Body,可选)

    请求报文示例

GET / HTTP/1.1                 # 请求方法为GET,请求首页(/),使用HTTP/1.1协议
Host: baidu.com               # 指定目标主机(域名)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/124.0.6367.60# 浏览器类型和操作系统信息
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8# 客户端可接收的内容类型
Accept-Encoding: gzip, deflate, br# 支持的内容压缩编码方式(节省带宽)
Accept-Language: zh-CN,zh;q=0.9# 客户端可接受的语言
Connection: keep-alive        # 表示使用长连接,保持 TCP 连接不断开
Cookie: BIDUPSID=...; BAIDUID=...; ...# 携带的 Cookie,用于身份识别、会话保持等
请求行

格式如下:

请求方法 请求资源路径 协议版本

示例:

POST /chapter17/user.html HTTP/1.1

常见请求方法
方法说明
GET请求数据附在 URL 中;不安全,有长度限制;无请求体
POST数据放在请求体中;适用于表单提交、上传等场景
HEAD只请求响应头,不返回实体内容
PUT用于更新或上传资源
DELETE请求服务器删除资源
OPTIONS返回服务器支持的请求方法
TRACE回显服务器收到的请求(用于测试和诊断)
CONNECT用于建立网络隧道(主要用于 HTTPS)
请求头

请求头用于描述客户端环境和请求内容,常见字段如下:

Header 字段说明
Host请求主机名
User-Agent客户端软件信息
Accept可接受的内容类型
Content-Type请求体数据类型
Content-Length请求体的字节长度
Cookie客户端存储的 cookie 数据
Referer发起请求的源页面地址
请求体

请求体通常包含实际发送的数据,仅 POST、PUT 等方法使用。GET 方法没有请求体。

Content-Type 详解

Content-Type 指定了请求体中数据的类型。以下是常见类型说明:

Content-Type说明
text/plain纯文本格式
text/htmlHTML 格式
text/cssCSS 格式
text/javascriptJavaScript 格式
image/gifGIF 图片
image/jpegJPEG 图片
image/pngPNG 图片
application/x-www-form-urlencoded表单默认格式,key=value&key2=value2
application/jsonJSON 格式,常用于 API 请求
multipart/form-data用于表单上传文件
text/xml以 XML 格式提交数据
application/octet-stream任意二进制数据流,如文件下载/上传
常见场景 Content-Type 对应关系
场景请求方法Content-Type
普通表单提交POSTapplication/x-www-form-urlencoded
上传文件POSTmultipart/form-data
提交 JSON 数据POSTapplication/json
REST 接口 PUT 请求PUTapplication/json 或其他格式
下载文件GETapplication/octet-stream

响应报文

HTTP 响应报文由三部分组成:

  1. 响应行(Status Line)
  2. 响应头(Response Header)
  3. 响应体(Response Body)

响应报文示例

HTTP/2 200 OK                    # 响应协议版本为HTTP/2,状态码200表示请求成功
Server: JSP3/2.0.14              # 服务器软件及版本信息
Date: Fri, 16 May 2025 07:59:09 GMT  # 响应生成时间(GMT格式)
Content-Type: text/javascript; charset=utf-8# 响应内容的类型为JavaScript,字符编码为utf-8
Expires: Mon, 16 Sep 2024 07:12:27 GMT# 资源过期时间(一般用于缓存)
Last-Modified: Thu, 12 Sep 2024 08:43:04 GMT# 资源最后修改时间
Etag: "63487d8c50e44137f8b6ce2a04407f8f"# 资源的唯一标识(方便缓存和验证)
Cache-Control: max-age=31536000# 缓存控制,表示资源最大缓存时间为31536000秒(1年)
Age: 621073                     # 资源在缓存中已经存在的秒数
Accept-Ranges: bytes            # 支持客户端的范围请求(断点续传)
Content-Md5: Y0h9jFDkQTf4ts4qBEB/jw==# 响应内容的MD5校验值(完整性校验)
X-Cache-Status: HIT             # 缓存命中,表示资源来自缓存
Timing-Allow-Origin: *          # 允许任何源访问资源加载时间数据(用于性能分析)
Access-Control-Allow-Origin: * # 允许跨域访问,任何域都可以访问此资源
// 以下是响应体示例(JavaScript代码)
define("@baidu/aging-tools-pc/dist/index",["san","tslib"],function(n,t){function e(n){if(o[n])return o[n].exports;var t=o[n]={i:n,l:!1,exports:{}};return i[n].call(t.exports,t,t.exports,e),t.l=!0,t.exports}// 省略后续代码
})
响应行

格式如下:

HTTP/协议版本 状态码 状态描述

示例:

HTTP/1.1 200 OK

状态码详解

HTTP 状态码由 3 位数字组成,第一个数字表示响应的类别:

1xx:信息响应(Informational)
  • 100 Continue:继续请求
  • 101 Switching Protocols:切换协议
2xx:成功(Success)
  • 200 OK:请求成功
  • 204 No Content:请求成功但无响应体,常用于无需页面刷新的请求
  • 206 Partial Content:部分内容响应,用于支持范围请求(Content-Range)
3xx:重定向(Redirection)
  • 301 Moved Permanently:永久重定向
  • 302 Found:临时重定向
  • 303 See Other:重定向到另一个地址,要求使用 GET 请求
  • 307 Temporary Redirect:临时重定向,不会更改请求方法(如 POST 不变)
  • 304 Not Modified:资源未修改,使用缓存(与条件请求有关)
4xx:客户端错误(Client Error)
  • 400 Bad Request:语法错误,服务器无法理解
  • 401 Unauthorized:未授权,需要身份验证(需带 WWW-Authenticate 响应头)
  • 403 Forbidden:服务器拒绝请求
  • 404 Not Found:请求资源不存在
  • 415 Unsupported Media Type:请求类型不支持
5xx:服务器错误(Server Error)
  • 500 Internal Server Error:服务器内部错误
  • 503 Service Unavailable:服务器暂时无法处理请求
响应头

响应头是由服务器返回的键值对,用于说明响应信息及控制客户端行为。

常见响应头字段
字段名描述
Location重定向地址,需与 3xx 状态码搭配使用
Content-Type响应体的数据类型,如 text/html;charset=UTF-8
Content-Disposition文件下载方式,如 attachment;filename=xx.zip
Set-Cookie设置客户端 Cookie
Content-Encoding响应体的压缩方式,如 gzip
Content-Length响应体的字节长度
Refresh定时刷新页面,如 3;url=http://example.com
Server服务器信息,如 Apache-Coyote/1.1(可配置)
Last-Modified响应资源的最后修改时间
Cache-Control缓存控制,如 privatepublicno-cachemax-age=秒数no-store
响应体

响应体是服务器真正发送给客户端的“正文”内容,通常为 HTML 页面、JSON 数据、图片或其他资源。

浏览器将响应体加载到内存后,进行解析、渲染并展示页面内容。

参考文章

  1. http中文文档(https://developer.mozilla.org/zh-CN/docs/Web/HTTP)
  2. HTTP/HTTPS 简介(https://www.runoob.com/http/http-intro.html)
  3. Http协议详解(深入理解)(https://blog.csdn.net/weixin_38087538/article/details/82838762)

相关文章:

HTTP由浅入深

概述 超文本传输协议(HTTP, Hypertext Transfer Protocol) 是一种用于传输超媒体文档(例如 HTML)的应用层协议。它最初被设计用于 Web 浏览器与 Web 服务器之间的通信,但也广泛应用于其他客户端与服务器的交互。 HTT…...

Conda 环境下安装 GCC 和 glibc (crypt.h) 教程

Conda 环境下安装 GCC 和 glibc (crypt.h) 教程 由于运行Low-Light Image Enhancement via Structure Modeling and Guidance原始论文代码,发现服务器的gcc版本太老,没法运行。同时缺少libxcrypt (crypt.h),不得不询问gpt进行解答。发现可以…...

C++面试3——const关键字的核心概念、典型场景和易错陷阱

const关键字的核心概念、典型场景和易错陷阱 一、const本质:类型系统的守护者 1. 与#define的本质差异 维度#defineconst编译阶段预处理替换编译器类型检查作用域无作用域(全局污染)遵循块作用域调试可见性符号消失保留符号信息类型安全无类…...

超小多模态视觉语言模型MiniMind-V 训练

简述 MiniMind-V 是一个超适合初学者的项目,让你用普通电脑就能训一个能看图说话的 AI。训练过程就像教小孩:先准备好图文材料(数据集),教它基础知识(预训练),再教具体技能&#xf…...

深入理解仿函数(Functors):从概念到实践

文章目录 1. 什么是仿函数?2. 仿函数与普通函数的区别3. 标准库中的仿函数4. 仿函数的优势4.1 状态保持4.2 可定制性4.3 性能优势 5. 现代C中的仿函数5.1 Lambda表达式5.2 通用仿函数 6. 仿函数的高级应用(使用C2020标准库及以上版本)6.1 函数…...

第二届parloo杯的RSA_Quartic_Quandary

(害,还是太菜了,上去秒了一道题之后就动不了了,今晚做个记录,一点点的往回拾起吧) # from Crypto.Util.number import getPrime, bytes_to_long # import math # # FLAG b************** # # # def gene…...

团队氛围紧张,如何提升工作积极性?

当团队氛围长期处于紧张状态时,员工的积极性、创造力和凝聚力会显著下降。要有效提升工作积极性,应从建设心理安全环境、优化管理沟通方式、提升认可与激励机制、加强情感联结与归属感等方面系统改善。其中,建设心理安全环境是最重要的基础&a…...

vuex的基本使用

个人简介 👨‍💻‍个人主页: 魔术师 📖学习方向: 主攻前端方向,正逐渐往全栈发展 🚴个人状态: 研发工程师,现效力于政务服务网事业 🇨🇳人生格言&…...

chrome因使用selenium无图模式导致不再加载图片问题解决

因为使用了selenium的无图模式访问chrome的本地用户数据导致正常使用chrome访问网页时图片不加载。现在页面出现验证码,验证码显示不了。 第一步:关闭所有chrome 第二步:找到Perferences文件 文件的目录为:C:\Users\用户名\AppDa…...

并发编程(5)

抛异常时会释放锁。 当线程在 synchronized 块内部抛出异常时,会自动释放对象锁。 public class ExceptionUnlockDemo {private static final Object lock new Object();public static void main(String[] args) {Thread t1 new Thread(() -> {synchronized …...

自己拥有一台服务器可以做哪些事情

上大学时候,买了自己的第一台服务器在HoRain Cloud上,结果没有好好利用,刚工作时候,又买了一台HoRain Cloud服务器,就想着好好利用。 可以搭建一些学习环境,比如说数据库,gitlab什么的 …...

Node.js聊天室开发:从零到上线的完整指南

为让你全面了解Node.js聊天室开发,我会先介绍开发背景与技术栈,再按搭建项目、实现核心功能、部署上线的流程展开,还会分享优化思路。 Node.js聊天室开发实战:从入门到上线 在即时通讯日益普及的今天,基于Node.js搭建…...

Unity 如何使用Timeline预览、播放特效

在使用unity制作和拟合动画时,我们常用到Timeline,前后拖动滑轨,预览动画正放倒放非常方便。如果我们想对特效也进行这个操作,可以使用下文的步骤。 至此,恭喜你又解锁了一个新的技巧。如果我的分享对你有帮助&#xf…...

实物工厂零件画图案例(下)

文章目录 总练习模块文章索引气动顶针轴直线轴承座法兰盘平皮带中空传动轴减速机V带轮减速机箱体 简介:点击此处可以下载该文章的案例模型,加上这篇文章总共有七篇文章是用来练习solidworks软件应用与建模思路的,大概有30多个案例模型&#x…...

esp32课设记录(五)整个项目开源github

我把该项目开源到了github:https://github.com/whyovo/ESP32_course_project 以下是readme文档: ESP32 课设 项目概述 这是一个基于ESP32的课设,实现了多种功能模式的集成,包括信息显示、图片展示、MQTT通信、摩尔斯电码处理以…...

力扣每日一题5-19

class Solution { public String triangleType(int[] nums) { Arrays.sort(nums); if (nums[0] nums[1] < nums[2]) return “none”; if (nums[0] nums[1] && nums[1] nums[2]) return “equilateral”; if (nums[0] nums[1] || nums[1] nums[2]) return “is…...

CI/CD 深度实践:灰度发布、监控体系与回滚机制详解

CI/CD 深度实践&#xff1a;灰度发布、监控体系与回滚机制详解 一、引言 在现代软件开发中&#xff0c;持续集成与持续交付&#xff08;CI/CD&#xff09;是加快交付速度、提升质量的关键。面对复杂的分布式系统和海量用户&#xff0c;如何安全、快速地发布新版本&#xff0c…...

【日常笔记】wps如何将值转换成东西南北等风向汉字

在WPS表格中&#xff0c;若要将数值&#xff08;如角度值&#xff09;转换成“东、南、西、北”等风向汉字&#xff0c;可通过以下步骤结合自定义函数或条件判断实现&#xff1a; 一、wps如何将值转换 方法一&#xff1a;使用LOOKUP函数&#xff08;简化公式&#xff09;&…...

RabbitMQ的简介

三个概念 生产者&#xff1a;生产消息的服务消息代理&#xff1a;消息中间件&#xff0c;如RabbitMQ消费者&#xff1a;获取使用消息的服务 消息队列到达消费者的两种形式 队列&#xff08;queue&#xff09;:点对点消息通信&#xff08;point-to-point&#xff09; 消息进入队…...

中职大数据实验室解决方案分享

第1部分概述 1.1政策背景 2021年3月&#xff0c;教育部印发《职业教育专业目录(2021年)》&#xff0c;共设置19个专业大类、97个专业类、1349个专业。新版《目录》聚焦推进数字化升级改造&#xff0c;构建未来技术技能&#xff0c;优化和加强了5G、人工智能、大数据、云计算、…...

阿里云web端直播(前端部分)

阿里云&#xff1a;Web播放器快速接入_视频点播(VOD)-阿里云帮助中心 import Aliplayer from aliyun-aliplayerimport aliyun-aliplayer/build/skins/default/aliplayer-min.css<div id"J_prismPlayer" style"width: 300px; height: 300px;" />var …...

从虚拟仿真到行业实训再到具身智能--华清远见嵌入式物联网人工智能全链路教学方案

2025年5月23-25日&#xff0c;第63届中国高等教育博览会&#xff08;高博会&#xff09;将在长春中铁东北亚国际博览中心举办。作为国内高等教育领域规模大、影响力广的综合性展会&#xff0c;高博会始终聚焦教育科技前沿&#xff0c;吸引全国高校管理者、一线教师、教育科技企…...

阿里云国际站与国内站:局势推进中的多维差异

在当今数字化浪潮席卷全球&#xff0c;云计算成为企业与开发者关键助力的局势下&#xff0c;阿里云作为行业翘楚&#xff0c;其国际站与国内站备受关注。两者虽同宗同源&#xff0c;却在诸多方面存在着显著差异&#xff0c;这些差异犹如隐藏在幕后的齿轮&#xff0c;悄然影响着…...

Docker项目部署深度解析:从基础命令到复杂项目部署

Docker项目部署深度解析&#xff1a;从基础命令到复杂项目部署 注&#xff1a;根据黑马程序员javawebAI视频课程总结&#xff1a; 视频地址 详细讲义地址 一、传统部署困境与Docker破局之道 在传统Linux部署场景中&#xff0c;新手常被三大难题困扰&#xff1a; 命令记忆负…...

reserve学习笔记(花指令)

这是闲来无事逛博客时看到的一篇相关文章&#xff0c;觉得挺有意思。 定义 首先花指令其实就是没有用的指令&#xff08;垃圾指令&#xff09;&#xff0c;它穿插在真正的代码中&#xff0c;会导致反编译时出现问题&#xff0c;从而会影响我们的静态分析 分类以及讲解 花指…...

docker运行Redis

创建目录 mkdir -p /home/jie/docker/redis/{conf,data,logs}添加权限 chmod -R 777 /home/jie/docker/redis创建配置文件 cat > /home/jie/docker/redis/conf/redis.conf << EOF # 基本配置 bind 0.0.0.0 protected-mode yes port 6379# 安全配置 密码是root require…...

Django 项目中,将所有数据表注册到 Django 后台管理系统

在 Django 项目中,将所有数据表注册到 Django 后台管理系统中需要为每个模型(Model)创建一个对应的 ModelAdmin 类,并在 admin.py 文件中注册这些模型。以下是一个详细的步骤指南: 确保你的模型已定义 首先,确保你已经在 models.py 文件中定义了所有的数据模型。例如:py…...

pyspark测试样例

from pyspark.sql import SparkSession from pyspark.sql.functions import col, lit, concat 创建 SparkSession spark SparkSession.builder.appName(“SparkSQLExample”).getOrCreate() 创建 DataFrame&#xff08;可以是从 CSV、JSON 等文件读取&#xff09; data […...

Python学习笔记--使用Django操作mysql

注意&#xff1a;本笔记基于python 3.12&#xff0c;不同版本命令会有些许差别&#xff01;&#xff01;&#xff01; Django 模型 Django 对各种数据库提供了很好的支持&#xff0c;包括&#xff1a;PostgreSQL、MySQL、SQLite、Oracle。 Django 为这些数据库提供了统一的调…...

HarmonyOS Next应用分层架构下组件封装开发实践

基于鸿蒙应用分层架构的ArkUI组件封装实践 在鸿蒙应用开发中&#xff0c;合理利用 ArkUI 组件进行封装&#xff0c;可以实现代码复用&#xff0c;提升开发效率。本文将结合鸿蒙应用分层架构的特点&#xff0c;详细探讨几个典型的 ArkUI 组件封装场景及其实现方案。 华为鸿蒙应…...

全能视频处理工具介绍说明

软件介绍 本文介绍的软件是FFmpeg小白助手&#xff0c;它是一款视频处理工具。 使用便捷性 这款FFmpeg小白助手无需安装&#xff0c;解压出来就能够直接投入使用。 主要功能概述 该工具主要具备格式转换、文件裁剪、文件压缩、文件合并这四大功能。 格式转换能力 软件支持…...

CSS实现过多的文本进行省略号显示

单行文本省略 .ellipsis {white-space: nowrap; /* 禁止换行 */overflow: hidden; /* 溢出内容隐藏 */text-overflow: ellipsis; /* 溢出部分显示为省略号 */width: 200px; /* 必须设置宽度 */ } 多行文本省略&#xff08;跨浏览器方案&#xff09…...

十三、Hive 行列转换

作者&#xff1a;IvanCodes 日期&#xff1a;2025年5月19日 专栏&#xff1a;Hive教程 在Hive中&#xff0c;数据的形态转换是数据清洗、分析和报表制作中的核心环节。行列转换尤为关键&#xff0c;它能将数据从一种组织形式变为另一种&#xff0c;以适应不同的业务洞察需求。本…...

Django之验证码功能

验证码功能 目录 1.绘制验证码 2.在登录页面里面实现验证码的功能 3.代码展示集合 这篇文章, 内容不是很多, 不过验证码, 是在网页里面比较常见的功能, 所有我们还是要掌握它&#xff01;&#xff01;&#xff01; 一、绘制验证码 绘制验证码, 我们需要用到图像, 然后在…...

代码随想录算法训练营 Day51 图论Ⅱ岛屿问题Ⅰ

图论 题目 99. 岛屿数量 使用 DFS 实现方法 判断岛屿方法 1. 遍历图&#xff0c;若遍历到了陆地 grid[i][j] 1 并且陆地没有被访问&#xff0c;在这个陆地的基础上进行 DFS 方法&#xff0c;或者是 BFS 方法 2. 对陆地进行 DFS 的时候时刻注意以访问的元素添加访问标记 //…...

Python Django 的 ORM 编程思想及使用步骤

目录 一、ORM 编程思想概述​ 二、Python 中使用 ORM 的主要优势​ 2.1 简化数据库操作​ 2.2 提高开发效率​ 2.3 减少错误​ 2.4 增强代码的可维护性​ 2.5 降低耦合性​ 三、Django 中使用 ORM 的详细步骤​ 3.1 创建应用模块​ 3.2 配置数据库信息​ 3.3 确定数…...

设计一个程序,将所有的小写字母转换为大写字母

汇编语言程序设计实验 实验内容 设计一个程序&#xff0c;将所有的小写字母转换为大写字母&#xff0c;此程序不能改变除字母a~z外的任何其它字符。 实验分析 实现的功能是将所有的小写字母转换为大写字母&#xff0c;此程序不能改变除字母a~z外的任何其它字符。可以分为以…...

Rust 学习笔记:关于错误处理的练习题

Rust 学习笔记&#xff1a;关于错误处理的练习题 Rust 学习笔记&#xff1a;关于错误处理的练习题想看到回溯&#xff0c;需要把哪个环境变量设置为 1&#xff1f;以下哪一项不是使用 panic 的好理由&#xff1f;以下哪一项最能描述为什么 File::open 返回的是 Result 而不是 O…...

使用docker——10分钟内 完成一个高可用的 MongoDB 副本集部署

实验目的 掌握 Docker 容器化部署 MongoDB 副本集 的方法 理解 主从同步、故障转移、数据一致性 等核心机制 熟悉 MongoDB 集群管理命令 和 运维监控技巧 &#x1f527; 实验环境 操作系统: Rocky Linux 9 / CentOS 7 软件依赖: Docker 20.10 docker-compose 1.29 硬件要…...

信息化的编程未来发展

信息化与数字化与编程领域与AI的爆炸发展是最近十几年瞠目结舌的事情&#xff0c;列举一下相关词汇&#xff1a; C#、AI、C、Python、.NET、API 、IDE、asp、JavaScript网页端、Visua Studio、VR、Github、OpenGL-webGL-计算机图形学、面向对象 、类库、GIS、GPU计算与显卡、可…...

计算机视觉与深度学习 | EMD-KPCA-LSTM、EMD-LSTM、LSTM回归预测对比,多输入单输出(Matlab完整程序和数据)

以下是针对EMD-KPCA-LSTM、EMD-LSTM和LSTM回归预测对比的完整可运行MATLAB实现。包含数据生成、特征处理、模型构建和性能评估全流程,并提供关键代码注释和注意事项。 完整代码实现(含数据生成) %% 清理环境 clear; clc; close all; warning off;%% 生成模拟数据(正弦波+噪…...

Ollama 如何在显存资源有限的情况下合理分配给不同的服务?

在显存资源有限的情况下&#xff0c;合理分配显存给不同服务需要结合硬件特性、软件配置和模型优化技术。以下是几种有效的方法&#xff1a; 1. 使用 Ollama 自身的资源限制参数 Ollama 提供了一些命令行参数来限制单个模型的资源使用&#xff1a; --ram&#xff1a;限制模型…...

2025-05-19 学习记录--Python-简易用户登录系统 + 计算天数

合抱之木&#xff0c;生于毫末&#xff1b;九层之台&#xff0c;起于累土&#xff1b;千里之行&#xff0c;始于足下。&#x1f4aa;&#x1f3fb; 一、简易用户登录系统 ⭐️ # 用户登录系统 # 用户名、密码、黑名单 users [{name: 小红, password: 123, status:True},{name…...

APP小程序抓包和下游代理

本文仅作学习/技术记录和交流&#xff0c;请勿进行非法活动&#xff0c;否则后果自负&#xff01; 本文将主要围绕对小程序、APP的抓包方法&#xff0c;同时介绍下游代理。 在本文中我们将用到 Burpsuite、Yakit 和 Proxifier来完成。 小程序&APP抓包 对于小程序或APP抓…...

UE 材质几个输出向量节点

PixelNormalWS...

【八股战神篇】Java多线程高频面试题(JUC)

目录 专栏简介 一 如何创建线程&#xff1f; 延伸 1. 创建 Java 线程的本质 二 说说线程的生命周期&#xff1f; 延伸 1.描述一下线程的生命周期图 2.线程的优先级对线程执行有何影响&#xff1f; 3.如何确保三个线程按照特定顺序执行&#xff1f; 三 并发和并行的区…...

【esp32 mqtt】 连接亚马逊-加密传输信息

文章目录 1 加密文件1.1 服务端证书1.2 客户端CA证书1.3 客户端私钥1.4 三者协同工作的流程 2 亚马逊创建物品3 esp32 程序编写3.1 证书文件读取3.2 MQTT配置3.2.1 配置结构体3.2.2 初始化客户端3.2.3 注册事件3.2.4 开启mqtt3.2.5 示例 3.3 事件回调函数3.2.1 示例 3.4 接收到…...

用于判断主子关系的方法的实现(orm是efcore)

HasParentChildRelationship 方法&#xff1a;主要用于判断给定实体集合中是否存在主子关系&#xff0c;通过检查实体的导航属性来实现。CheckForDependencies 方法&#xff1a;是一个辅助方法&#xff0c;负责具体的依赖关系检查&#xff0c;包括对已访问实体的跟踪&#xff0…...

《Effective Python》第三章 循环和迭代器——在遍历参数时保持防御性

引言 本文基于《Effective Python: 125 Specific Ways to Write Better Python, 3rd Edition》一书的 Chapter 3: Loops and Iterators 中的 Item 21: Be Defensive when Iterating over Arguments。该条目深入探讨了在 Python 中处理迭代器&#xff08;iterator&#xff09;和…...

【python基础知识】Day30 模块和库的导入

学习python 学习python基础语法 处理任务需要用到的库 一、导入官方库的三种手段 1 标准导入&#xff1a;导入整个库 # 方式1&#xff1a;导入整个模块 import math# 导入库后&#xff0c;输出测试 print("方式1&#xff1a;使用 import math") print(f"圆周率…...