Python 网络爬虫(二):HTTP 基础知识

在这里插入图片描述

《Python入门核心技术》专栏总目录・点这里

文章目录

  • 1. HTTP 协议简述
  • 2. HTTP 请求过程
  • 3. HTTP 的结构
    • 3.1 请求行
    • 3.2 请求头
    • 3.3 请求体
    • 3.4 状态行
    • 3.5 响应头
    • 3.6 响应体
  • 4. Cookie 状态管理
  • 5. HTTP 请求示例
  • 6. 总结


大家好,我是水滴~~

在准备学习网络爬虫之前,深入了解HTTP协议的工作原理和核心概念是至关重要的。HTTP(Hypertext Transfer Protocol)是一种用于在客户端和服务器之间传输数据的协议。它定义了客户端(通常是浏览器)和服务器之间交互的规则和约定。

了解HTTP协议对于学习网络爬虫至关重要,原因如下:

  • 爬虫基于HTTP:网络爬虫是通过模拟HTTP请求和解析HTTP响应来获取网页数据的。爬虫程序发送HTTP请求到目标服务器,并通过HTTP响应获取所需的数据。因此,了解HTTP协议的工作原理和通信过程能够帮助理解爬虫的工作原理。

  • 请求和响应:HTTP协议基于请求-响应模型,客户端发送请求到服务器,服务器返回响应。了解HTTP请求的结构、请求方法(如GET、POST)以及请求头(如User-Agent、Cookie等)可以帮助我们构建合适的请求,获取所需的数据。同时,了解HTTP响应的结构、状态码(如200、404)以及响应头(如Content-Type、Content-Length)可以帮助我们理解服务器返回的数据和处理请求的结果。

  • 数据交互与处理:HTTP协议在数据交互中起着重要的作用。了解HTTP协议可以帮助我们处理网络请求和响应中的数据,包括URL参数的传递、请求体的处理、响应内容的解析等。此外,了解HTTP头部信息的使用和意义可以帮助我们在爬虫过程中设置合适的请求头,模拟真实用户的访问行为,以避免被服务器的反爬机制所阻拦。

  • 调试和故障排除:在进行网络爬虫开发中,经常需要对HTTP请求和响应进行调试和故障排查。了解HTTP协议可以帮助我们更好地理解请求和响应的细节,识别问题所在,快速解决网络请求的异常情况。

总之,在学习网络爬虫之前,深入了解HTTP协议是非常重要的。它不仅为我们提供了与服务器进行数据交互的基础,还能帮助我们理解爬虫的工作原理、构建合适的请求、解析响应数据,并能够更好地调试和排除故障。通过学习HTTP协议,您将为后续的网络爬虫学习奠定坚实的基础。

1. HTTP 协议简述

HTTP(Hypertext Transfer Protocol)是一种用于在Web上进行通信的协议。它定义了客户端和服务器之间的交互方式,使得客户端能够请求资源并接收服务器的响应。

HTTP协议的主要特点如下:

  • 无状态:HTTP是一种无状态协议,即每个请求和响应都是独立的,服务器不会记住之前的请求。这导致服务器无法直接识别用户或跟踪会话状态,但可以使用Cookie来实现会话管理。

  • 请求-响应模型:HTTP使用请求-响应模型,客户端发送请求到服务器,服务器处理请求并返回响应。请求由方法(如GET、POST)、URL、协议版本、请求头和请求体组成,而响应包含状态码、响应头和响应体。

  • 可扩展性:HTTP是一种可扩展的协议,通过使用头部字段,可以添加自定义的请求头和响应头来满足特定需求。

  • 明文传输:HTTP默认以明文形式传输数据,不提供加密和安全性保护。为了保护数据的安全性,可以使用HTTPS(HTTP Secure)协议,它使用TLS/SSL加密来保护数据传输。

  • 支持多媒体:HTTP支持传输多种类型的媒体数据,如HTML、文本、图片、音频和视频等。根据请求头中的Content-Type字段,服务器可以返回适当的响应类型。

  • 状态码:HTTP使用状态码来表示请求的处理结果。常见的状态码有200(成功)、404(未找到)、500(服务器内部错误)等。

HTTP协议被广泛应用于Web开发中,用于浏览器和服务器之间的通信。它为Web提供了标准化的通信方式,使得不同平台和系统之间可以进行交互和共享资源。

2. HTTP 请求过程

HTTP请求过程描述了客户端发送HTTP请求并服务器处理请求的步骤。以下是HTTP请求过程的一般流程:

  • 解析URL:客户端解析要请求的URL,提取出协议、主机名、端口号(如果未指定,默认为协议的默认端口号)、路径和查询参数等信息。

  • 建立连接:客户端使用解析到的主机名和端口号建立与服务器的TCP连接。如果使用的是HTTPS协议,则在建立TCP连接后还需要进行SSL握手过程。

  • 发送请求:客户端构建HTTP请求报文,包括请求行、请求头部和请求正文。请求行包含请求方法(GET、POST等)、请求的路径和协议版本信息。请求头部包含与请求相关的附加信息,如Accept、User-Agent等。如果请求需要发送数据,则请求正文包含要发送的数据。

  • 服务器处理:服务器接收到请求后,根据请求的路径和方法进行处理。这可能涉及到读取文件、执行应用程序逻辑、查询数据库等操作。服务器还会根据需要生成HTTP响应。

  • 发送响应:服务器构建HTTP响应报文,包括响应状态行、响应头部和响应正文。响应状态行包含状态码和状态描述。响应头部包含与响应相关的附加信息,如Content-Type、Content-Length等。响应正文包含要发送给客户端的数据。

  • 接收响应:客户端接收到服务器发送的HTTP响应。它解析响应报文,提取出状态码、头部信息和响应正文。

  • 渲染页面:如果响应的内容是HTML页面,客户端会解析HTML并渲染页面,显示给用户。它会加载和显示页面上引用的其他资源,如CSS、JavaScript、图像等。

  • 关闭连接:客户端和服务器在完成请求-响应交互后,关闭TCP连接。如果客户端需要获取其他资源,它可以重复上述步骤。

这是HTTP请求过程的基本流程。在实际应用中,还可能涉及到缓存、重定向、身份验证等其他机制。了解HTTP请求过程可以帮助开发人员更好地理解和调试Web应用程序,并优化网络性能和安全性。

3. HTTP 的结构

HTTP(Hypertext Transfer Protocol)是一种用于在Web上传输数据的协议。它使用客户端-服务器模型,客户端发送HTTP请求到服务器,服务器返回HTTP响应给客户端。HTTP的结构由请求和响应两部分组成。

  • HTTP请求结构:

    • 请求行(Request Line):包含请求方法、请求的URL和协议版本。

    • 请求头部(Request Headers):包含与请求相关的附加信息,如User-Agent、Accept等。

    • 空行(Blank Line):用于分隔请求头部和请求正文。

    • 请求体(Request Body):可选,包含请求发送的数据。

    示例:

GET /example.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
Accept: text/html
  • HTTP响应结构:

    • 状态行(Status Line):包含响应的状态码和状态描述。

    • 响应头部(Response Headers):包含与响应相关的附加信息,如Content-Type、Content-Length等。

    • 空行(Blank Line):用于分隔响应头部和响应正文。

    • 响应体(Response Body):包含服务器返回的数据。

    示例:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024

<html>
<body>
<h1>Hello, World!</h1>
</body>
</html>

HTTP的结构遵循一定的规范,请求和响应通过起始行、头部和正文进行组织。请求中的方法(如GET、POST)、URL和协议版本描述了客户端的操作。响应中的状态码(如200、404)和状态描述表示服务器对请求的处理结果。头部字段提供了与请求和响应相关的元数据信息,而正文则携带实际的数据内容。

这种结构化的组织方式使得HTTP成为一种可靠、可扩展的协议,广泛应用于Web通信和资源传输。

3.1 请求行

HTTP请求行是HTTP请求的一部分,它包含在请求中的第一行。请求行描述了客户端想要执行的操作。HTTP请求行由三个主要部分组成:请求方法、请求的URL和协议版本。以下是HTTP请求行的结构和示例:

<请求方法> <URL> <协议版本>
  • 请求方法(Method):指定客户端要执行的操作类型。常见的请求方法包括:

    • GET:获取指定资源。

    • POST:向服务器提交数据,用于创建新资源。

    • PUT:向服务器传输数据,用于更新或替换指定资源。

    • DELETE:删除指定资源。

    • HEAD:类似于GET方法,但只返回响应头部,用于获取资源的元数据。

    • OPTIONS:获取服务器支持的请求方法和支持的头部字段。

    • PATCH:对资源进行部分更新。

  • URL(Uniform Resource Locator):指定请求的目标资源的位置。URL由协议、主机名、端口号和路径组成,有时还包括查询字符串和片段标识符。
    示例:/example.htmlhttp://www.example.com/page1https://api.example.com/users?id=123

  • 协议版本(Protocol Version):指定客户端使用的HTTP协议版本。常见的协议版本包括:

    • HTTP/1.1:当前广泛使用的HTTP版本。

    • HTTP/2:较新的HTTP协议版本,引入了多路复用和二进制传输等特性。

    • HTTP/3:基于UDP的新一代HTTP协议,旨在提供更快的性能和更好的安全性。

示例:

GET /example.html HTTP/1.1
POST /api/users HTTP/1.1
PUT /api/products/123 HTTP/1.1
DELETE /api/users/456 HTTP/1.1

请求行是HTTP请求的第一部分,它指定了客户端要执行的操作、目标资源的位置和使用的协议版本。服务器根据请求行来处理和响应请求。

3.2 请求头

HTTP请求头是在HTTP请求中传递附加信息的部分。以下是一些常见的HTTP请求头部字段及其示例:

  • Accept:指定客户端能够接受的媒体类型。
    示例:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp

  • Accept-Language:指定客户端首选的自然语言。
    示例:Accept-Language: en-US,en;q=0.9,fr;q=0.8

  • Accept-Encoding:指定客户端能够接受的内容编码方式。
    示例:Accept-Encoding: gzip, deflate, br

  • User-Agent:标识客户端应用程序的名称和版本信息。
    示例:User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36

  • Referer:指定当前请求的来源页面的URL。
    示例:Referer: https://www.example.com/page1.html

  • Authorization:指定身份验证凭据,用于访问受保护的资源。
    示例:Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

  • Cookie:在请求中携带与请求关联的Cookie数据。
    示例:Cookie: sessionid=abcd1234; userid=5678

  • Content-Type:指定请求正文的媒体类型。
    示例:Content-Type: application/json

  • Content-Length:指定请求正文的长度,以字节为单位。
    示例:Content-Length: 1024

  • Host:指定服务器的主机名和端口号。
    示例:Host: www.example.com

  • If-Modified-Since:指定自从指定日期之后,资源是否被修改过。
    示例:If-Modified-Since: Sat, 02 Oct 2021 10:00:00 GMT

  • Cache-Control:指定缓存机制的行为。
    示例:Cache-Control: max-age=3600

这些示例只是常见HTTP请求头部字段的一部分。实际应用中,根据具体需求,您可以选择适当的请求头部字段,并根据标准规范设置请求头部信息。

3.3 请求体

HTTP请求体(HTTP Request Body)是HTTP请求中可选的部分,用于传输请求的数据或内容。请求体通常用于POST、PUT等请求方法,用于向服务器提交数据或更新资源。请求体的格式和内容类型由请求头部的Content-Type字段指定。以下是一些常见的HTTP请求体内容类型及其示例:

  • application/x-www-form-urlencoded:表单数据编码格式,键值对使用key=value的形式,多个键值对使用&符号分隔。
    示例:key1=value1&key2=value2&key3=value3

  • multipart/form-data:用于上传文件或二进制数据,多个字段和内容以分隔符分隔,每个字段包含头部和内容部分。
    示例:

--分割线--
Content-Disposition: form-data; name="file"; filename="example.jpg"
Content-Type: image/jpeg

<binary data>
--分割线--
  • application/json:JSON格式的数据。
    示例:{“key1”: “value1”, “key2”: “value2”, “key3”: “value3”}

  • text/plain:纯文本数据。
    示例:This is the request body.

  • application/xml:XML格式的数据。
    示例:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <key1>value1</key1>
  <key2>value2</key2>
  <key3>value3</key3>
</root>
  • application/octet-stream:二进制数据流。
    示例:Binary data stream.

请求体的内容类型由请求头部的Content-Type字段指定,服务器根据Content-Type来解析请求体的内容。根据实际需求,您可以选择适当的内容类型,并将相应的数据编码为请求体发送给服务器。请注意,GET请求通常不包含请求体,而是将参数附加在URL的查询字符串中。

3.4 状态行

HTTP状态行(HTTP Status Line)是HTTP响应的第一行,它包含了服务器对客户端请求的处理结果的描述。状态行由三个主要部分组成:协议版本、状态码和状态描述。以下是HTTP状态行的结构和示例:

<协议版本> <状态码> <状态描述>
  • 协议版本(Protocol Version):指定服务器使用的HTTP协议版本。常见的协议版本包括:

    • HTTP/1.1:当前广泛使用的HTTP版本。

    • HTTP/2:较新的HTTP协议版本,引入了多路复用和二进制传输等特性。

    • HTTP/3:基于UDP的新一代HTTP协议,旨在提供更快的性能和更好的安全性。

  • 状态码(Status Code):用于表示服务器对请求的处理结果的数字代码。HTTP状态码共有五个类别,每个类别以不同的数字开头:

    • 1xx(Informational):信息性状态码,指示请求已被接收并正在处理。

    • 2xx(Success):成功状态码,指示请求已成功被服务器接收、理解和处理。

    • 3xx(Redirection):重定向状态码,指示客户端需要采取进一步的操作来完成请求。

    • 4xx(Client Error):客户端错误状态码,指示客户端发送的请求有错误。

    • 5xx(Server Error):服务器错误状态码,指示服务器在处理请求时发生了错误。

  • 状态描述(Status Description):对状态码的简短描述,用于更详细地说明状态码的含义。

示例:

HTTP/1.1 200 OK
HTTP/1.1 404 Not Found
HTTP/1.1 500 Internal Server Error

状态行中的协议版本指示服务器使用的HTTP协议版本,状态码表示请求处理的结果,状态描述提供了更详细的说明。客户端可以根据状态行中的状态码和描述来判断请求的处理结果,并根据需要采取相应的操作。

3.5 响应头

HTTP响应头是在HTTP协议中用于传输关于响应的元数据的一种机制。它包含了关于响应的各种信息,如响应的状态码、内容类型、缓存控制、安全性等。

以下是一些常见的HTTP响应头:

  • Content-Type:指定响应主体的媒体类型,例如"text/html"用于HTML文档。

  • Content-Length:指定响应主体的长度,以字节为单位。

  • Cache-Control:指定响应的缓存策略,如"no-cache"表示不缓存响应。

  • Location:用于重定向响应,指定新的URL位置。

  • Set-Cookie:设置一个或多个Cookie,用于在客户端存储数据。

  • Expires:指定响应的过期时间,浏览器将在此时间后重新请求资源。

  • ETag:用于缓存验证,表示资源的唯一标识。

  • Last-Modified:指定资源的最后修改时间。

这只是一些常见的HTTP响应头,实际上还有很多其他的头部字段可用于传递其他信息。HTTP响应头的具体使用取决于服务器和应用程序的需求。

3.6 响应体

HTTP响应体是HTTP协议中包含的响应消息的主体部分,它包含了服务器返回给客户端的实际数据或资源。下面是一些常见的HTTP响应体的示例:

  • HTML页面响应体示例:
<!DOCTYPE html>
<html>
<head>
  <title>我的网站</title>
</head>
<body>
  <h1>欢迎来到我的网站!</h1>
  <p>这是一个HTML响应体的例子。</p>
</body>
</html>
  • JSON格式数据响应体示例:
{
  "name": "张三",
  "age": 30,
  "email": "zhangsan@example.com"
}
  • XML格式数据响应体示例:
<user>
  <name>张三</name>
  <age>30</age>
  <email>zhangsan@example.com</email>
</user>
  • 图片文件响应体示例:
    (二进制数据)

  • 文本文件响应体示例:

这是一个文本文件的内容。
它可以包含任何纯文本数据。
  1. 错误响应体示例:
<!DOCTYPE html>
<html>
<head>
  <title>404 Not Found</title>
</head>
<body>
  <h1>404 Not Found</h1>
  <p>The requested resource could not be found.</p>
</body>
</html>

这些示例展示了HTTP响应体的不同类型和格式。具体的响应体内容取决于服务器端的处理逻辑和客户端的请求。

4. Cookie 状态管理

HTTP Cookie状态管理是指在客户端和服务器之间使用Cookie来跟踪和管理用户会话状态的过程。通过使用Cookie,服务器可以存储和检索与特定用户相关的信息,从而实现用户状态的跟踪和管理。

以下是HTTP Cookie状态管理的一般过程:

  • 会话初始化:当用户首次访问网站时,服务器可以创建一个唯一的会话标识符,并将其存储在Cookie中。这个会话标识符可以作为用户会话的唯一标识。

  • Cookie的发送和存储:当服务器设置了Cookie后,它会在响应头中的Set-Cookie字段中将Cookie发送给客户端。客户端的浏览器会将Cookie存储在本地。

  • Cookie的传输:在后续的请求中,客户端的浏览器会自动在请求头的Cookie字段中包含适当的Cookie信息,并将其发送给服务器。

  • 服务器端的Cookie处理:服务器可以根据Cookie中的信息来识别用户,并维护用户的会话状态。服务器可以从请求头的Cookie字段中提取Cookie值,并根据需要进行处理。

  • 更新和删除Cookie:服务器可以通过发送新的Set-Cookie字段来更新Cookie的值或过期时间。要删除Cookie,可以设置过期时间为一个过去的时间。

通过Cookie状态管理,服务器可以跟踪用户的会话状态,例如登录状态、购物车内容、偏好设置等。这使得网站能够提供个性化的用户体验,并为用户提供持久性的会话。

需要注意的是,Cookie的使用应遵循隐私和安全性的最佳实践,以保护用户的个人信息和确保安全性。

5. HTTP 请求示例

您可以使用浏览器发送HTTP请求并接收HTTP响应。在浏览器的地址栏中输入URL,按下回车键即可发送GET请求。

浏览器会自动处理请求头,并显示接收到的HTTP响应,包括状态行、响应头和响应体。

以下是一个使用浏览器发送GET请求和接收HTTP响应的示例:

请求:

GET / HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0

响应:

HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 1234

<!DOCTYPE html>
<html>
<head>
  <title>Example Domain</title>
  <!-- more HTML content -->
</head>
<body>
  <h1>Hello, World!</h1>
  <!-- more HTML content -->
</body>
</html>

通过浏览器发送HTTP请求和接收HTTP响应的示例可以帮助您更好地理解和实践HTTP请求与响应的过程。

6. 总结

在学习爬虫之前,了解HTTP请求与响应是非常重要的。本文介绍了HTTP请求的基本概念、常见的请求方法和请求头,以及HTTP响应的结构和常见的响应状态码。

通过浏览器发送HTTP请求和接收HTTP响应的示例,您可以更好地理解和实践HTTP请求与响应的过程。这将为您进一步学习爬虫提供良好的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/217884.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

公有云迁移研究——AWS Route53

大纲 1 什么是Route 532 Route 53能做些什么# 3 通过DNS托管来实现分流3.1 创建DNS托管3.2 对托管创建记录对流量进行分配 4 通过流量策略来对流量进行分流4.1 创建流量策略 5 对比两者的区别6 推荐 在给客户从本地机房往AWS迁移的过程中&#xff0c;我们接到如下需求&#xff…

vue打印功能

安装 vue3-print-nb yarn add vue3-print-nb //或 npm install vue3-print-nb main.js中引入 vue3-print-nb import { createApp } from vue; import App from ./App.vue; const app createApp(App); // 打印插件 import print from vue3-print-nb app.use(print) // 页面…

公有云迁移研究——AWS Translate

大纲 1 什么是Translate2 Aws Translate是怎么运作的3 Aws Translate和Google Translate的区别4 迁移任务4.1 迁移原因 5 Aws Translate的Go demo6 迁移中遇到的问题6.1 账号和权限问题&#xff1a;6.2 小语种 1 什么是Translate Translate是一种文本翻译服务&#xff0c;它使…

制作一个RISC-V的操作系统三-编译与链接

文章目录 GCCGCC简介GCC的命令格式gcc -Egcc -cgcc -Sgcc -ggcc -vGCC的主要执行步骤GCC涉及的文件类型针对多个源文件的处理 ELFELF介绍ELF文件格式ELF文件处理相关工具&#xff1a;Binutils&#xff08;binary utility&#xff09;readlelf -hreadelf -S或readelf -SW&#x…

思维模型 路径依赖定律

本系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。难以摆脱的惯性。 1 路径依赖定律的应用 1.1 打破路径依赖定律的苹果 在 20 世纪 80 年代&#xff0c;苹果公司推出了 Macintosh 电脑&#xff0c;这是一款具有图形用户界面和鼠标的创新产…

MacOS M芯片 安装MySQL5.7教程

目录 1. 安装Homebrew1.1 快速安装1.2 检查是否安装成功 2. 通过Homebrew安装MySQL2.1 搜索 MySQL 版本2.2 安装MySQL 5.72.3 位置说明2.4 启动MySQL服务2.5 检查服务状态2.6 设置环境变量2.7 重置密码 3. 测试安装 1. 安装Homebrew 1.1 快速安装 /bin/bash -c "$(curl …

SQL Server 数据库,多表查询

4.2使用T-SQL实现多表查询 前面讲述过的所有查询都是基于单个数据库表的查询&#xff0c;如果一个查询需要对多个表进行操作&#xff0c; 就称为联接查询&#xff0c;联接查询的结果集或结果称为表之间的联接。 联接查询实际上是通过各个表之间共同列的关联性来查询数据的&…

人工智能|网络爬虫——用Python爬取电影数据并可视化分析

一、获取数据 1.技术工具 IDE编辑器&#xff1a;vscode 发送请求&#xff1a;requests 解析工具&#xff1a;xpath def Get_Detail(Details_Url):Detail_Url Base_Url Details_UrlOne_Detail requests.get(urlDetail_Url, headersHeaders)One_Detail_Html One_Detail.cont…

后端部署-阿里云服务器-开设端口-域名解析-安全证书-备案

本文以阿里云的轻量级数据库为例子。 前言 要搭建一个完整的后端系统一般的步骤&#xff1a; 获得一台服务器----->开设端口----->搭建后台所需要的语言和应用---->利用公网ip地址测试后端程序------->购买域名和证书-------->域名绑定和解析------->icp备…

同源策略与跨域

作者简介&#xff1a;大家好&#xff0c;我是smart哥&#xff0c;前中兴通讯、美团架构师&#xff0c;现某互联网公司CTO 联系qq&#xff1a;184480602&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗互联网寒冬 不论个人练习还是实际开…

【JUC】二十、volatile变量的特点与使用场景

文章目录 1、volatile可见性案例2、线程工作内存与主内存之间的原子操作3、volatile变量不具有原子性案例4、无原子性的原因分析&#xff1a;i5、volatile变量小总结6、重排序7、volatile变量禁重排的案例8、日常使用场景9、总结 volatile变量的特点&#xff1a; 可见性禁重排无…

如何利用企业软件著作权查询API提升知识产权管理效率

引言 在当今数字化时代&#xff0c;企业的知识产权管理变得愈发重要。其中&#xff0c;软件著作权作为企业重要的知识产权之一&#xff0c;其保护和管理对于企业的创新和竞争力至关重要。为了更高效地进行软件著作权管理&#xff0c;许多企业开始采用先进的技术手段&#xff0…

Chrome清除特定网站的Cookie,从而让网址能正常运行(例如GPT)

Chrome在使用某些网址的时候&#xff0c;例如GPT的时候&#xff0c;可能会出现无法访问这个网址的情况&#xff0c;就是点不动啥的 只需要把你需要重置的网址删除就好了

Leetcode题库(数据库合集)_ 难度:中等

目录 难度&#xff1a;中等1.股票的资本损益2. 当选者3. 页面推荐4. 2016年的投资5. 买下所有产品的人6. 电影评分6. 确认率7. 按分类统计薪水8. 餐馆营业额的变化增长8. 即时食物配送 ①9. 至少有5名直系下属的经理10. 游戏玩法分析11. 好友申请&#xff1a;谁有最多的好友12.…

TypeScript中的类

TypeScript 类 1.TypeScript中类的意义 ​ 相对以前 JavaScript 不得不用 构造函数来充当”类“&#xff0c;TypeScript 类的出现可以说是一次技术革命。让开发出来的项目尤其是大中项目的可读性好&#xff0c;可扩展性好了不是一点半点。 ​ TypeScrip 类的出现完全改变了前…

React创建项目

React创建项目 提前安装好nodejs再进行下面的操作&#xff0c;通过node -v验证是否安装 1.设置源地址 npm config set registry https://registry.npmmirror.com/2.确认源地址 npm config get registry返回如下 https://registry.npmmirror.com/3.输入命令 npx create-re…

ruby安装(vscode、rubymine)

https://rubyinstaller.org/downloads/ 下载exe安装即可 会弹出 输入3 安装成功 vscode插件市场安装ruby插件 新建一个目录&#xff0c;打开terminal bundle init //进行初始化&#xff08;如果执行不了&#xff0c;应该是环境变量没生效&#xff0c;重启vscode&#…

企业架构LB-服务器的负载均衡之LVS实现

企业架构LB-服务器的负载均衡之LVS实现 学习目标和内容 1、能够了解LVS的基本工作方式 2、能够安装配置LVS实现负载均衡 3、能够了解LVS-NAT的配置方式 4、能够了解LVS-DR的配置方式 #一、LVS介绍和安装 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&…

AWS攻略——VPC初识

大纲 在网络里启动一台可以ssh上去的机器查看区域、VPC和子网创建EC2连接Web端连接客户端连接 知识点参考资料 VPC是在AWS架构服务的基础&#xff0c;有点类似于我们在机房里拉网线和设置路由器等。等这些设施完备后&#xff0c;我们才能考虑给机器部署服务。而很多初识AWS的同…

【OpenGL】窗口的创建

从今天开始我们开始学习OpenGL&#xff0c;从0开始&#xff0c;当然是有C基础的前提 首先包含glad和GLFW的头文件 #include <glad/glad.h> #include <GLFW/glfw3.h> #include <iostream> 初始化 GLFW 在 main 函数中&#xff0c;我们首先使用 glfwInit 初…