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

Python!从0开始学爬虫:(一)HTTP协议 及 请求与响应

前言

爬虫需要基础知识,HTTP协议只是个开始,除此之外还有很多,我们慢慢来记录。

今天的HTTP协议,会有助于我们更好的了解网络。

一、什么是HTTP协议

(1)定义

HTTP(超文本传输协议,HyperText Transfer Protocol)是用于在网络上进行数据通信的协议,尤其是用于网页的传输。

简单来说,就是专门把超文本数据从网络上传输到本地浏览器上的一个协议

我们也经常见它,比如网站前面的前缀:

当然,上图有些不太正确,但 HTTPS 其实是HTTP的升级版,二者其实差不太多。

(2)HTTPS

那么HTTPS到底有什么不同呢?

HTTPS的全称是Hypertext Transfer Protocol Secure。相较于HTTP多了一个Secure

所以我们应该知道,哪里升级了。

简单来说,就是在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性

Tips:HTTPS 主要由两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。(了解即可

(3)URI和URL

还有些专业术语,诸如URI和URL :

  • URI(统一资源标识符):用于标识资源的字符串。
  • URL(统一资源定位符):一种特定类型的URI,用于定位资源并提供如何访问这些资源的信息。
  • URN:统一资源名称

顾名思义,URI让我们可以唯一标识一个资源。URL则让我们可以去定位一个资源。

比如一个网址https://www.example.com

我们可以把这整个链接叫做URI,因为这个网址标识了一个资源。

而这个链接,也叫做URL,因为这个网址的链接也同样定位了一个资源。

那他们怎么区分呢? 

URI包括了URL,因为URI=URL和URN

比如,一本书的编号111,这个编号就是URN。

所以该编号也可以叫做URI,因为它同样标识了一个资源,但是它不能叫做URL了,因为该编号并没有定位这个资源,我们只知道它叫什么,却不知道去哪里可以找到他。

二、HTTP请求过程

(1)请求过程

我们在网页最上面的导航栏上输入网址,按下回车,然后出现一个新网页。

这个过程就是浏览器向某网站发送了一个请求,然后网站进行处理,最后网站回馈一个响应,浏览器解析后展现出来。

(2)相关名词介绍

(注:以下名词了解即可) 

为了更好的说明该过程,我们可以鼠标右键检查功能来具体显示一下请求和响应:

然后切换到Network面板,再刷新一下网页:

即可看到很多行的东西,每一行就代表一次  请求-响应  过程

我们仔细观察这个界面的各列:

其中,各列含义如下

  • Name:请求界面的名称
  • Status:响应状态码,通过状态码显示,可以判定响应是否正常。
  • Type:请求文档的类型。
  • Initiator:请求源,用来标记是哪个对象或进程发起的请求。
  • Size:请求资源大小(如果是缓存中提取的资源,该列显示from cache)
  • Time:从发起请求到获得响应所花总时间。
  • Waterfall:网络请求可视化瀑布流。
  • (有时会有Protocol:请求协议类型,http1.1代表HTTP1.1版本,h2代表HTTP2.0版本)

若单击某列,则会显示更详细的信息:

在General部分:

  • Request URL :请求的URL
  • Request Method:请求方法
  • Status Code:响应状态码
  • Remote Address:远程服务器的地址和端口
  • Referre Policy:为判别策略
  • Response Headers:响应头
  • Request Headers:请求头

以上名词可能有些说的不太清楚,现在我们具体来看一看各部分,到底是干什么的

三、请求部分

请求,即Request。

由用户发往服务器的信息。包括四大部分:请求方法、请求网址、请求头、请求体。 

(1)请求方法

请求方法,客户端请求服务器时的方式

常见的有两种:GET请求、POST请求

比如:

GET请求

请求获取指定资源,如请求页面返回内容

当我们在浏览器最上面输入网址并按下回车,这就是发起了GET请求。

POST请求:

向指定资源提交数据,通常用于表单提交或者上传文件。

当我们登陆网站,输入账号密码后,点击提交后,这就是发起了POST请求。

那么二者有什么具体区别呢?

  1. GET请求的参数包括在URL,POST请求的数据包括在请求体中。
    所以如果打开某网站某板块某界面的某图片后,这时我们会在上面的网址中看到该图片的路径,这就是GET请求该图片的参数
  2. GET请求提交数据最大1024字节,POST请求没有限制。

所以综上,当我们提交账号密码时,最好选择POST,否则GET会将密码显示在网址中暴露哦~


当然除此之外,还有很多请求,不过并不常用,汇总如下:

  • GET:请求获取指定资源。GET 请求不应包含请求体,且一般用于获取数据。
  • POST:向指定资源提交数据,通常用于表单提交或者上传文件。POST 请求可以包含请求体,用于传送数据。
  • PUT:向指定资源上传数据,通常用于更新资源的状态。PUT 请求一般是幂等的,即多次相同的请求会得到相同的结果。
  • DELETE:请求删除指定资源。
  • PATCH:部分更新指定资源的数据。与 PUT 的区别是,PATCH 只更新资源的一部分,而 PUT 会替换整个资源。
  • HEAD:类似 GET 请求,但只获取响应的头部信息,不返回实际的资源数据。
  • OPTIONS:请求服务器,询问支持哪些 HTTP 方法。常用于跨域请求中的预检请求。

(2)请求网址

网址格式如下:

协议://主机名:端口号/路径?查询字符串#片段标识符

说明:

  • 协议(Scheme):指定访问资源所使用的协议。常见的协议包括:
    http 或 https(超文本传输协议)、
    ftp(文件传输协议)、
    mailto(用于电子邮件地址)、
    file(本地文件)
  • 主机名(Host):指定资源所在的服务器的域名或 IP 地址。
    通常为一个域名,如 www.example.com
    或者是 IP 地址,如 192.168.1.1
  • 端口号(Port)(可写可不写):指定服务器的端口,通常省略。
    默认情况下:http 默认端口为 80、https 默认端口为 443。
    如果指定了非默认端口,则需要在主机名后加上端口号,用冒号分隔,如 www.example.com:8080
  • 路径(Path):指定请求资源在服务器上的位置。
    例如,/products/123 表示访问 /products/123 这个路径的资源。
  • 查询字符串(Query)(可写可不写):以 ? 开头,包含一个或多个键值对,用于传递参数。
    例如,?id=123&name=abc,查询字符串由参数名和值组成,多个参数用 & 分隔。
  • 片段标识符(Fragment)(可写可不写):以 # 开头,指向文档中的一个特定位置。
    用于指定页面内的某个部分。例如,#section2 指向页面的第二个部分。

举个例子:

https://www.example.com:8080/products/123?id=456&color=red#review

解释: 

  • 协议:https
  • 主机名:www.example.com
  • 端口号:8080
  • 路径:/products/123
  • 查询字符串:?id=456&color=red
  • 片段标识符:#review

(3)请求头

请求头是 HTTP 请求中的一部分,它包含了关于客户端、请求以及数据的附加信息。

客户端通过它向服务器传递元数据,帮助服务器理解请求的内容、用户的偏好、客户端环境等。

举个例子:

请求头就像你在向别人请求东西时提供的一些附加信息

假设你在网上买东西,除了告诉商家你想买的产品,还会提供一些其他信息,比如:

你用的是什么设备(是手机还是电脑)

你能接受的商品类型(比如希望商品图片清晰,或者只想看某种品牌的商品)

这些附加信息就像是请求头里的内容,它们帮助商家(服务器)了解你具体的需求,确保你能收到最合适的产品。

所以你要访问一个网页,你的请求头可能包含以下信息:

(注:了解即可) 

1. Host

  • 指定请求的服务器域名或 IP 地址。从 HTTP/1.1 版本开始,这是必需的头部字段。

  • 示例:Host: www.example.com

2. User-Agent

  • 简称UA。表示发送请求的客户端软件类型(如浏览器、操作系统等)。爬虫时加上此部分可以伪装成浏览器。

  • 示例:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

3. Accept

  • 指定客户端能够处理的响应内容类型。通常用于指定请求的数据格式

  • 示例:Accept: text/html, application/xhtml+xml, application/xml;q=0.9, image/webp,*/*;q=0.8

4. Accept-Language

  • 告诉服务器客户端能够理解的语言。例如,可以告诉服务器希望获取中文或英文的内容。

  • 示例:Accept-Language: en-US,en;q=0.5

5. Content-Type

  • 仅在请求体中有数据时使用,指定请求体的媒体类型。例如,表单提交时,数据的格式是 application/x-www-form-urlencoded,上传文件时是 multipart/form-data

  • 示例:Content-Type: application/json

6. Authorization

  • 用于身份验证,携带认证信息,如令牌或基本认证信息。常用于需要用户验证的资源。

  • 示例:Authorization: Bearer <token>

  • 客户端向服务器发送的 Cookie 信息,服务器根据该信息识别用户状态(如登录状态)。

  • 示例:Cookie: sessionid=abc123; user=JohnDoe

8. Accept-Encoding

  • 告诉服务器客户端支持的编码方式,通常用于压缩响应体。

  • 示例:Accept-Encoding: gzip, deflate, br

9. Connection

  • 表示是否保持持久连接,决定在请求完成后是否保持与服务器的连接。

  • 示例:Connection: keep-alive

10. Referer

  • 表示来自哪个 URL 的请求,通常用于了解用户访问的来源页面。

  • 示例:Referer: https://www.example.com/previous-page

(4)请求体

请求体是 HTTP 请求中的一部分,主要用于携带客户端发送给服务器的实际数据内容。

可以理解为你在向服务器请求某项服务时,所附带的具体信息或者数据

举个例子:

如果你填写了一个网上表单,提交了你的个人信息(比如名字、地址、电子邮件等),这些信息就是通过请求体发送到服务器的。

(Tips:对于请求体来说,一般是POST请求的表单数据,对于GET请求,请求体为空)


对于请求头请求体的区别?

  • 请求头
    包含一些附加信息(比如浏览器类型、请求语言、是否有登录状态等)
    帮助服务器理解如何处理请求。
  • 请求体
    包含实际的数据内容,是请求的核心部分
    比如你提交的表单数据、上传的文件等。

四、响应部分

响应,即Response。

由服务器给用户的信息。包括三部分:响应状态码、响应头、响应体。

(1)响应状态码

就像前文所说,这就是根据给出的数字,来判定响应是否正常。

比如,200表示正常、404表示找不到等,都是常见状态码。

下面汇总了常见的状态码及错误原因:

1. 1xx:信息性状态码

这些状态码表示请求已被接收,正在继续处理。

  • 100 Continue:表示客户端可以继续发送请求的其余部分(通常用于大文件上传时,客户端先发送请求头,服务器返回 100 状态码,客户端再发送请求体)。

2. 2xx:成功状态码

这些状态码表示请求已成功被处理。

  • 200 OK:请求成功,服务器返回请求的资源。

  • 201 Created:请求成功,服务器创建了新的资源(通常用于 POST 请求)。

  • 204 No Content:请求成功,但服务器没有返回任何内容(常见于删除操作)。

3. 3xx:重定向状态码

这些状态码表示请求需要进一步的操作才能完成(通常是页面重定向)。

  • 301 Moved Permanently:请求的资源已被永久移到新的位置,响应中会带有新的 URL。

  • 302 Found:请求的资源临时移动到其他位置,客户端会按照新 URL 继续请求。

  • 304 Not Modified:资源未修改,客户端可以使用缓存的副本。

4. 4xx:客户端错误状态码

这些状态码表示请求有错误,客户端需要修正请求后再试。

  • 400 Bad Request:请求无效,服务器无法理解请求。

  • 401 Unauthorized:请求未授权,通常需要提供身份验证(如登录)。

  • 403 Forbidden:服务器拒绝请求,即使用户已认证。

  • 404 Not Found:请求的资源不存在或无法找到。

  • 405 Method Not Allowed:请求方法不被允许(例如,服务器只允许 GET 请求,但客户端使用了 POST 请求)。

5. 5xx:服务器错误状态码

这些状态码表示服务器未能完成有效请求,通常是服务器本身的问题。

  • 500 Internal Server Error:服务器遇到错误,无法完成请求。

  • 502 Bad Gateway:服务器作为网关或代理时,收到来自上游服务器的无效响应。

  • 503 Service Unavailable:服务器暂时无法处理请求,通常是因为服务器超负荷或正在维护。

  • 504 Gateway Timeout:服务器作为网关或代理时,未能在规定时间内从上游服务器获取响应。

(2)响应头

响应头是服务器在响应客户端请求时,附加在响应消息中的一些信息。

这些信息主要用于描述服务器的处理结果、返回的数据类型、缓存策略等。

可以理解为服务器对客户端请求的“回馈”信息,告诉客户端服务器的状态、资源类型等。

下面为常用响应头:

  1. Content-Type:指定响应体的内容类型(即数据的格式)。例如:

    • Content-Type: text/html:返回的是 HTML 内容。
    • Content-Type: application/json:返回的是 JSON 格式数据。
    • Content-Type: image/png:返回的是 PNG 图片。
  2. Content-Length:表示响应体的大小,以字节为单位

  3. Date:返回响应的时间戳,表示服务器响应的日期和时间

  4. Server:表示服务器的类型和版本

  5. Set-Cookie:服务器向客户端发送的 cookie,用于保存客户端的状态信息。

(3)响应体

响应体是服务器在响应客户端请求时,返回给客户端的实际数据内容。

举个例子:

比如你请求一个网页时,响应体就是返回的 HTML 内容;你请求某个数据接口时,响应体就是返回的 JSON 数据。

如下图所示:

当我们打开Preview中,看到的蓝框内的内容,就是响应体。

在爬虫时,我们要做的,就是解析它!!!

它的常见内容有:

  1. HTML 页面:如果你请求一个网页,响应体通常是该网页的 HTML 内容。
    例如,浏览器向服务器请求 https://example.com,服务器返回一个 HTML 页面,响应体就是网页的 HTML 代码。

  2. JSON 数据:在许多现代 Web 应用中,通常使用 JSON 格式。
    例如,发送一个 GET 请求到一个数据接口,返回的响应体是 JSON 数据:
    { "name": "John Doe", "age": 30 }

  3. 图片或文件:如果请求的是一个文件(如图片、视频等),响应体包含文件的内容。
    例如,浏览器请求一个 PNG 图片,服务器返回响应体,其中包含该图片的二进制数据。

  4. 文本内容:如果请求的是纯文本数据,响应体可能直接是一些文本内容。

相关文章:

Python!从0开始学爬虫:(一)HTTP协议 及 请求与响应

前言 爬虫需要基础知识&#xff0c;HTTP协议只是个开始&#xff0c;除此之外还有很多&#xff0c;我们慢慢来记录。 今天的HTTP协议&#xff0c;会有助于我们更好的了解网络。 一、什么是HTTP协议 &#xff08;1&#xff09;定义 HTTP&#xff08;超文本传输协议&#xff…...

[ Spring ] Spring Cloud Gateway 2025 Comprehensive Overview

文章目录 Spring Gateway ArchitectureProject Level DependencyService CenterService ProviderGateway ServiceLaunch All Service Spring Gateway Architecture Service Center : register and find service providerService Provider : programs that provide actual serv…...

【项目初始化】自定义异常处理

我们在项目初始化的工作之一就是要自定义异常处理&#xff0c;用来处理项目中出现的各种异常&#xff0c;如业务异常、系统异常等等。 这些属于项目的通用基础代码&#xff0c;在任何后端中都可以复用。 1. 自定义错误码 自定义错误码&#xff0c;对错误进行收敛&#xff0c;…...

Windows10安装MySQL找不到MSVCR120.dll和MSVCP120.dll问题解决

个人博客地址&#xff1a;Windows10安装MySQL找不到MSVCR120.dll和MSVCP120.dll问题解决 | 一张假钞的真实世界 msvcp120.dll、msvcr120.dll、vcomp120.dll属于VC2013版中的动态链接库&#xff0c;如果丢失重新安装VC2013即可。下载地址&#xff1a;https://www.microsoft.com…...

【嵌入式】总结——Linux驱动开发(三)

鸽了半年&#xff0c;几乎全忘了&#xff0c;幸亏前面还有两篇总结。出于快速体验嵌入式linux的目的&#xff0c;本篇与前两篇一样&#xff0c;重点在于使用、快速体验&#xff0c;uboot、linux、根文件系统不作深入理解&#xff0c;能用就行。 重新梳理一下脉络&#xff0c;本…...

计算机图形学:实验三 光照与阴影

一、程序功能设计 设置了一个3D渲染场景&#xff0c;支持通过键盘和鼠标控制交互&#xff0c;能够动态调整光源位置、物体材质参数等&#xff0c;具有光照、阴影和材质效果的场景渲染。 OpenGL物体渲染和设置 创建3D物体&#xff1a;代码中通过 openGLObject 结构体表示一个…...

「 机器人 」扑翼飞行器混合控制策略缺点浅谈

前言 将基于模型的控制与强化学习策略融合在扑翼飞行器中,虽然能够兼顾系统稳定性与极限机动能力,但也面临了更高的系统复杂性、对硬件算力与可靠性的额外要求,以及难以回避的能量效率等方面挑战。以下从四个方面进行归纳与分析。 1. 系统复杂性增加 1.1 两种控制方法的并存…...

蓝桥杯算法日常|c\c++常用竞赛函数总结备用

一、字符处理相关函数 大小写判断函数 islower和isupper&#xff1a;是C标准库中的字符分类函数&#xff0c;用于检查一个字符是否为小写字母或大写字母&#xff0c;需包含头文件cctype.h&#xff08;也可用万能头文件包含&#xff09;。返回布尔类型值。例如&#xff1a; #…...

每日十题八股-2025年1月24日

1.面试官&#xff1a;Kafka 百万消息积压如何处理&#xff1f; 2.面试官&#xff1a;最多一次、至少一次和正好一次有什么区别? 3.面试官&#xff1a;你项目是怎么存密码的? 4.面试官&#xff1a;如何设计一个分布式ID&#xff1f; 5.面试官&#xff1a;单点登录是怎么工作的…...

tomcat的accept-count、max-connections、max-threads三个参数的含义

tomcat的accept-count、max-connections、max-threads三个参数的含义 tomcat的accept-count、max-connections、max-threads三个参数的含义 max-connections&#xff1a;最大连接数 最大连接数是指&#xff0c;同一时刻&#xff0c;能够连接的最大请求数 需要注意的是&#x…...

【无标题】mysql python 连接

coding:utf8 import os import pymysql import yaml from common.log import logger class Mysql: # 处理.sql备份文件为SQL语句 def __read_sql_file(self,file_path): # 打开SQL文件到f sql_list = [] with open(file_path, ‘r’, encoding=‘utf8’) as f: # 逐行读取和…...

linux naive代理设置

naive linux客户端 Release v132.0.6834.79-2 klzgrad/naiveproxy GitHub Client setup Run ./naive with the following config.json to get a SOCKS5 proxy at local port 1080. {"listen": "socks://127.0.0.1:1080","proxy": "htt…...

[STM32 - 野火] - - - 固件库学习笔记 - - -十一.电源管理系统

一、电源管理系统简介 电源管理系统是STM32硬件设计和系统运行的基础&#xff0c;它不仅为芯片本身提供稳定的电源&#xff0c;还通过多种电源管理功能优化功耗、延长电池寿命&#xff0c;并确保系统的可靠性和稳定性。 二、电源监控器 作用&#xff1a;保证STM32芯片工作在…...

DBO优化最近邻分类预测matlab

蜣螂优化算法&#xff08;Dung Beetle Optimizer&#xff0c;简称 DBO&#xff09;作为一种新兴的群智能优化算法&#xff0c;于 2022 年末被提出&#xff0c;其灵感主要来源于蜣螂的滚球、跳舞、觅食、偷窃以及繁殖等行为。 本次使用的数据为 Excel 格式的分类数据集。该数据…...

【深入理解FFMPEG】命令行阅读笔记

这里写自定义目录标题 第三章 FFmpeg工具使用基础3.1 ffmpeg常用命令3.1.13.1.3 转码流程 3.2 ffprobe 常用命令3.2.1 ffprobe常用参数3.2.2 ffprobe 使用示例 3.3 ffplay常用命令3.3.1 ffplay常用参数3.3.2 ffplay高级参数3.3.4 ffplay快捷键 第4章 封装与解封装4.1 视频文件转…...

图形化数据报文转换映射工具

目录 概要整体架构流程技术名词解释技术细节小结 概要 在当今数字化时代&#xff0c;数据的处理和分析是企业、科研机构以及各类组织日常运营的核心环节。数据来源广泛&#xff0c;格式多样&#xff0c;常见的数据格式包括XML&#xff08;可扩展标记语言&#xff09;和JSON&a…...

智能体0门槛开发

分享一个智能体开发流程。 2025 年啊&#xff0c;好多专家还有行业报告都觉得这是智能体&#xff08;AI Agent&#xff09;应用的头一年。相关的应用在商业、工业、消费等好些领域都到了关键的时候&#xff0c;这意味着从实验室走向大规模实际应用的重要转变。而且呢&#xff0…...

ssh密钥登录GitHub时一直提示“Error: Permission denied (publickey)”

起因 环境&#xff1a;Windows10 背景&#xff1a;之前就是按照官方说明创建个rsa密钥&#xff0c;在git后台添加上&#xff0c;就行了&#xff0c;近期怎么添加怎么失败&#xff0c;总是“Error: Permission denied (publickey)”的提示&#xff01; 尝试 各种尝试&#xf…...

mapbox加载geojson,鼠标移入改变颜色,设置样式以及vue中的使用

全国地图json数据下载地址 目录 html加载全部代码 方式一&#xff1a;使用html方式加载geojson 1. 初始化地图 2. 加载geojson数据 设置geojson图层样式&#xff0c;设置type加载数据类型 设置线条 鼠标移入改变颜色&#xff0c;设置图层属性&#xff0c;此处是fill-extru…...

考研机试题:打印日期

描述 给出年分m和一年中的第n天&#xff0c;算出第n天是几月几号。 输入描述: 输入包括两个整数y(1<y<3000)&#xff0c;n(1<n<366)。 输出描述: 可能有多组测试数据&#xff0c;对于每组数据&#xff0c; 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。 …...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

idea大量爆红问题解决

问题描述 在学习和工作中&#xff0c;idea是程序员不可缺少的一个工具&#xff0c;但是突然在有些时候就会出现大量爆红的问题&#xff0c;发现无法跳转&#xff0c;无论是关机重启或者是替换root都无法解决 就是如上所展示的问题&#xff0c;但是程序依然可以启动。 问题解决…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

3.3.1_1 检错编码(奇偶校验码)

从这节课开始&#xff0c;我们会探讨数据链路层的差错控制功能&#xff0c;差错控制功能的主要目标是要发现并且解决一个帧内部的位错误&#xff0c;我们需要使用特殊的编码技术去发现帧内部的位错误&#xff0c;当我们发现位错误之后&#xff0c;通常来说有两种解决方案。第一…...

线程与协程

1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指&#xff1a;像函数调用/返回一样轻量地完成任务切换。 举例说明&#xff1a; 当你在程序中写一个函数调用&#xff1a; funcA() 然后 funcA 执行完后返回&…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

云原生玩法三问:构建自定义开发环境

云原生玩法三问&#xff1a;构建自定义开发环境 引言 临时运维一个古董项目&#xff0c;无文档&#xff0c;无环境&#xff0c;无交接人&#xff0c;俗称三无。 运行设备的环境老&#xff0c;本地环境版本高&#xff0c;ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量&#xff0c;招商蛇口以“美好生活承载者”为使命&#xff0c;深耕全球111座城市&#xff0c;以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子&#xff0c;招商蛇口始终与城市发展同频共振&#xff0c;以建筑诠释对土地与生活的…...