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

网络HTTP详细讲解

学习目标

  • 什么是HTTP
  • HTTP的请求和响应
  • 常见的HTTP状态码
  • HTTP的安全性

什么是HTTP?HTTP的请求和响应,常见的HTTP状态码,HTTP的安全性

什么是HTTP

HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用于在万维网(World Wide Web)上传输数据的通信协议。以下是对HTTP的详细讲解:

一、HTTP的基本概念
HTTP是一个客户端请求和响应的标准协议,它详细规定了浏览器和万维网服务器之间互相通信的规则。用户输入地址和端口号之后,就可以从服务器上取得所需要的网页信息。HTML(HyperText Markup Language,超文本标记语言)是分布式、协作式、超媒体系统应用之间的通信协议,是万维网交换信息的基础。HTTP允许将HTML文档从Web服务器传送到Web浏览器。

二、HTTP的工作原理
HTTP协议基于客户端-服务器模式,其工作原理可以概括为以下几个步骤:

  1. 客户端(如浏览器)发送HTTP请求到服务器。
  2. 服务器接收到请求后,根据请求中的URL确定需要访问的资源。
  3. 服务器处理请求,生成相应的响应。
  4. 服务器将响应发送给客户端。
  5. 客户端接收到响应后,解析响应并显示结果。

三、HTTP的请求与响应
HTTP协议中,客户端发送给服务器的格式叫“请求协议(request)”,服务器发送给客户端的格式叫“响应协议(response)”。

  1. HTTP请求
    HTTP请求由三部分组成:请求行、请求头(请求报头)、请求正文(请求体)。

    • 请求行:由请求方法、请求路径和请求协议版本组成。请求方法常用的有GET和POST。GET方法通常用于请求服务器发送某个资源,POST方法通常用于向服务器提交数据。
    • 请求头:包含了一些额外的信息,如客户端的类型、接受的数据类型、认证信息等。请求头以key: value的形式显示,每个报头域(包括请求头和响应头)都是由名字+“:”+空格+值组成。
    • 请求体:不是每个请求都包含请求体,通常只有POST请求包含请求体。请求体包含了要发送给服务器的数据。
  2. HTTP响应
    HTTP响应也由三部分组成:状态行、响应头(响应报头)、响应体。

    • 状态行:包含了HTTP版本、状态码和状态消息。状态码用于表示服务器对请求的响应状态,如200表示请求成功,404表示未找到资源。
    • 响应头:与请求头类似,也包含了一些额外的信息,如服务器类型、内容类型、内容长度等。
    • 响应体:包含了服务器返回给客户端的数据,如HTML文档、图片等。

四、HTTP的特点

  1. 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
  2. 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记。
  3. 无连接:无连接是指每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。HTTP/1.1版本后支持可持续连接,允许在建立一个TCP连接后发送多个请求并得到多个回应。
  4. 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。

五、HTTP的应用与扩展
HTTP协议广泛应用于Web开发中,用于实现客户端与服务器之间的数据传输。随着Web技术的不断发展,HTTP协议也进行了多次扩展和升级,如HTTPS(HTTP Secure,安全的HTTP协议)、HTTP/2等。HTTPS在HTTP的基础上加入了SSL/TLS加密层,用于保护数据传输的安全性。HTTP/2则对HTTP/1.1进行了多项改进,提高了传输效率和性能。

HTTP的请求和响应

HTTP(HyperText Transfer Protocol,超文本传输协议)的请求和响应是客户端(如浏览器)与服务器之间通信的基础。以下是对HTTP请求和响应的详细讲解:

一、HTTP请求
HTTP请求由客户端发起,用于向服务器请求资源。一个HTTP请求通常包含以下三部分:

  1. 请求行:
    • 包含请求方法、请求资源的URI(统一资源标识符)以及HTTP协议版本。
    • 请求方法常见的有GET、POST、HEAD等。GET方法用于请求指定的资源;POST方法用于向指定资源提交数据;HEAD方法类似于GET,但只返回响应头,不返回响应体。
  2. 请求头:
    • 包含了一系列键值对,用于传递客户端的附加信息给服务器。
    • 常见的请求头包括Accept(浏览器可接受的MIME类型)、Accept-Charset(浏览器支持的字符集)、Accept-Encoding(浏览器能解码的数据编码方式)、Accept-Language(浏览器希望的语言种类)、Host(初始URL中的主机和端口)、Referer(用户从哪个页面链接到当前请求页面)、User-Agent(浏览器类型)、Cookie(客户端存储的服务器发送的数据)等。
  3. 请求体(可选):
    • 通常只有POST请求包含请求体,用于向服务器发送数据。
    • 请求体的格式由Content-Type头字段指定,可以是表单数据、JSON、XML等。

二、HTTP响应
HTTP响应由服务器返回给客户端,用于回应客户端的请求。一个HTTP响应通常包含以下三部分:

  1. 状态行:
    • 包含HTTP协议版本、状态码以及状态消息。
    • 状态码用于表示服务器对请求的处理结果,是一个三位的十进制数。常见的状态码包括200(请求成功)、404(未找到资源)、500(服务器内部错误)等。
  2. 响应头:
    • 包含了一系列键值对,用于传递服务器的附加信息给客户端。
    • 常见的响应头包括Content-Encoding(服务器发送的数据采用的编码类型)、Content-Length(响应体的长度)、Content-Language(服务发送的文本的语言)、Content-Type(服务器发送的内容的MIME类型)、Date(响应生成的时间)、Expires(资源过期的时间)、Cache-Control(缓存控制策略)等。
  3. 响应体:
    • 包含服务器返回给客户端的资源数据。
    • 响应体的格式由Content-Type头字段指定,可以是HTML文档、图片、JSON数据等。

三、HTTP请求和响应的工作流程

  1. 客户端(如浏览器)输入URL,向服务器发送HTTP请求。
  2. 服务器接收到请求后,解析请求行、请求头和请求体(如果有)。
  3. 服务器根据请求的资源URI和请求方法,处理请求并生成响应。
  4. 服务器将响应的状态行、响应头和响应体(如果有)封装成HTTP响应包,返回给客户端。
  5. 客户端接收到响应后,解析响应包并显示结果给用户。

四、注意事项
HTTP请求和响应都是基于TCP/IP协议的。在建立连接之前,客户端和服务器需要进行三次握手等TCP连接建立过程。
HTTP是无状态的协议,即每个请求和响应都是独立的,服务器不会保存任何状态信息。如果需要保持状态,可以使用Cookie或Session等技术。
在实际开发中,为了提高性能和安全性,通常会使用HTTPS协议(HTTP Secure)来加密传输数据。HTTPS在HTTP的基础上加入了SSL/TLS加密层,确保数据传输的安全性。

常见的HTTP状态码

HTTP状态码是用以表示网页服务器超文本传输协议响应状态的数字代码,这些状态码由RFC 2616规范定义,并得到其他多个规范的扩展。HTTP状态码由三位数字组成,它们被分为五个不同的类别,每个类别有特定的含义。以下是对常见HTTP状态码的详细讲解:

一、1xx(信息性状态码)
1xx状态码表示信息响应,告知客户端服务器已接收到请求并正在处理,客户端应该继续等待服务器的最终响应。

  • 100 Continue:表示服务器已接收到请求的头部,客户端可以继续发送请求的主体部分。如果请求已完成,可以忽略这个响应。
  • 101 Switching Protocols:表示服务器已同意客户端请求的协议切换,服务器会在响应的头部字段Upgrade中指明新的协议。

二、2xx(成功状态码)
2xx状态码表示成功响应,告知客户端服务器已成功处理了请求,客户端可以接收服务器的响应内容。

  • 200 OK:表示请求成功,服务器返回了请求的资源或结果,这是最常见的状态码,用于表示正常的请求和响应。
  • 201 Created:表示请求已成功,并且服务器创建了新的资源,服务器会在响应的头部字段Location中提供新资源的URL。
  • 202 Accepted:表示请求已接受,但尚未处理,服务器通常会在响应的头部字段Location中提供处理请求的进度或状态的URL。
  • 204 No Content:表示请求已经成功处理,但是没有返回任何内容。

三、3xx(重定向状态码)
3xx状态码表示重定向响应,告知客户端服务器要求客户端进行额外的操作以完成请求,通常是让客户端访问另一个URL。

  • 300 Multiple Choices:表示请求的资源有多个可选的表示形式,服务器返回了一个列表,让客户端选择其中一个进行访问,或者让用户自己选择。
  • 301 Moved Permanently:表示请求的资源已永久移动到另一个URL,服务器返回了新的URL,客户端应该使用新的URL进行后续的请求,并更新收藏夹或链接。
  • 302 Found:表示请求的资源暂时移动到另一个URL,服务器返回了新的URL,客户端应该使用新的URL进行本次的请求,但不应该更新收藏夹或链接。这是临时重定向,客户端应当继续向原有地址发送以后的请求。
  • 303 See Other:表示请求的资源可以在另一个URL找到,服务器返回了新的URL,客户端应该使用GET方法进行新的请求,通常用于POST请求的重定向。
  • 304 Not Modified:表示客户端请求的资源在上一次请求后没有被修改,可以直接使用缓存的资源。

四、4xx(客户端错误状态码)
4xx状态码表示客户端错误响应,告知客户端服务器无法处理请求,因为请求有语法错误或请求的资源不存在或不可访问。

  • 400 Bad Request:表示请求有语法错误,服务器无法理解或处理,客户端应该检查请求的格式和内容,或者使用其他的请求方法。
  • 401 Unauthorized:表示请求需要身份验证,服务器返回了WWW-Authenticate头部字段,指明了验证的方法和范围,客户端应该提供有效的凭证进行验证,或者取消请求。
  • 402 Payment Required:表示请求需要付费,服务器返回了付费的信息和方式,客户端应该根据服务器的指示进行付费,或者取消请求。这个状态码目前还没有被实际使用。
  • 403 Forbidden:表示请求被服务器拒绝,服务器没有返回任何内容,客户端应该放弃请求,或者联系服务器的管理员。这个状态码通常表示客户端没有权限访问请求的资源。
  • 404 Not Found:表示请求的资源不存在,服务器无法找到匹配的URL,客户端应该检查请求的URL是否正确,或者尝试其他的URL。这个状态码通常表示客户端请求了错误的资源。

五、5xx(服务器错误状态码)
5xx状态码表示服务器错误响应,告知客户端服务器在处理请求的过程中发生了错误,导致无法完成请求。

  • 500 Internal Server Error:表示服务器在处理请求的过程中发生了内部错误,导致无法完成请求。这是一个通用的状态码,表示服务器遇到了意料之外的情况。
  • 501 Not Implemented:表示服务器不支持请求的方法或功能,或者还没有实现,这通常表示服务器需要升级或维护。
  • 502 Bad Gateway:表示服务器作为网关或代理时,从上游服务器收到了无效的响应。这通常表示上游服务器出现了故障或配置错误。
  • 503 Service Unavailable:表示服务器暂时无法处理请求,因为服务器过载或维护中。这是一个临时的状态,服务器会在响应的头部字段Retry-After中指明重试的时间。
  • 504 Gateway Timeout:表示作为网关或者代理工作的服务器尝试执行请求时,没有在指定的时
    间内从上游服务器接收到响应。

HTTP状态码是客户端与服务器之间通信时的一种重要机制,通过它们可以有效地表示请求和响应的状态,从而帮助开发者和用户更好地理解和调试Web应用。

HTTP的安全性

HTTP(超文本传输协议)是互联网上应用最为广泛的协议之一,用于从服务器传输超文本到本地浏览器的传输协议。然而,HTTP协议本身的安全性存在一些固有的缺陷,以下是对HTTP安全性问题的详细讲解,以及增强HTTP安全性的方法:

HTTP的安全性缺陷

  1. 数据明文传输:HTTP协议在传输数据时并不对数据进行加密,数据以明文形式传输,这意味着任何能够截获这些数据的人都可以轻易地读取和篡改这些数据。
  2. 易受中间人攻击:由于HTTP传输的数据未加密,攻击者可以轻松地拦截、修改或重定向HTTP请求和响应,实施中间人攻击,如HTTP劫持。
  3. 缺乏身份验证:HTTP协议本身不提供身份验证机制,这使得攻击者可以冒充合法的服务器或客户端进行通信。

增强HTTP安全性的方法

  1. 使用HTTPS:

    • HTTPS概述:HTTPS(安全超文本传输协议)是HTTP的安全版本,它在HTTP的基础上通过SSL/TLS协议提供了数据加密、数据完整性验证和身份验证。使用HTTPS可以确保数据在传输过程中的安全性。
    • HTTPS的加密机制:HTTPS采用对称加密和非对称加密相结合的方式来实现数据的加密传输。对称加密使用相同的密钥进行加密和解密,而非对称加密则使用公钥和私钥对进行加密和解密。在HTTPS通信中,客户端和服务器首先通过非对称加密交换密钥,然后使用对称加密进行数据传输,以提高加密效率和性能。
    • HTTPS的数字证书:数字证书是HTTPS通信中用于身份验证的重要机制。服务器通过向认证中心(CA)申请数字证书来证明自己的身份。客户端在建立HTTPS连接时,会验证服务器的数字证书,以确保通信的对方是合法的服务器。
  2. 定期更新和维护软件:

    • 保持网站服务器和相关软件的更新是防止被劫持的重要步骤。定期升级操作系统、Web服务器、数据库和其他组件,以修复已知漏洞并增强安全性。
  3. 强化访问控制:

    • 确保使用强密码,并实施多因素身份验证来保护网站后台管理系统。
      限制登录尝试次数、启用账号锁定功能和登录日志记录等措施可以有效减少暴力破解和密码攻击。
  4. 防止DNS劫持:

    • 选择可靠的DNS服务提供商,并确保使用DNSSEC(Domain Name System Security Extensions)来验证DNS解析的完整性。DNSSEC提供数字签名和验证机制,防止DNS查询被篡改或重定向。
  5. 使用Web应用防火墙(WAF)

    • WAF可以监测和阻止恶意请求和攻击,提供对常见攻击的防护,如SQL注入、跨站脚本攻击(XSS)、跨站请求伪造(CSRF)等。
    • 配置WAF规则以过滤和阻止潜在的恶意流量。
  6. 定期监控网站流量和日志

    • 通过监控网站访问日志和流量模式,可以及时发现异常活动和潜在攻击。
    • 检查访问来源、请求类型、异常响应和错误日志等信息,以便快速识别和应对安全事件。
  7. 实施安全编程实践:

    • 在开发和部署网站时,遵循安全编程实践,对用户输入进行有效的验证和过滤,防止常见的安全漏洞,如XSS和SQL注入攻击。
    • 使用安全的编程语言和框架,编写健壮的代码,最小化安全漏洞的出现。
  8. 定期备份网站数据:

    • 定期备份网站数据是一种重要的防护措施。在遭受攻击或数据丢失时,可以快速恢复网站运行并减少数据损失。
  9. 增强网络安全意识:

    • 教育网站管理员和用户有关网络安全的最佳实践,如识别和避免钓鱼网站、不点击可疑链接、不下载未经验证的附件等。
    • 提高网络安全意识可以帮助减少被劫持的风险。

相关文章:

网络HTTP详细讲解

学习目标 什么是HTTPHTTP的请求和响应常见的HTTP状态码HTTP的安全性 什么是HTTP?HTTP的请求和响应,常见的HTTP状态码,HTTP的安全性 什么是HTTP HTTP(HyperText Transfer Protocol,超文本传输协议)是一种用…...

《Origin画百图》之边际分布曲线图

《Origin画百图》第六集——边际分布曲线图 入门操作可看《30秒,带你入门Origin》 边际分布曲线图,其中包含散点图形,而在图的边际有着分布曲线图。在比较数据以查看多个变量之间是否存在关系时非常有用。 1.数据准备:为多列XY数…...

【Milvus】向量数据库pymilvus使用教程

以下是根据 Milvus 官方文档整理的详细 PyMilvus 使用教程,基于 Milvus 2.5.x 版本: PyMilvus 使用教程 目录 安装与环境准备连接 Milvus 服务数据模型基础概念创建集合(Collection)插入数据创建索引向量搜索删除操作完整示例注…...

React 生命周期函数详解

React 组件在其生命周期中有多个阶段,每个阶段都有特定的生命周期函数(Lifecycle Methods)。这些函数允许你在组件的不同阶段执行特定的操作。以下是 React 组件生命周期的主要阶段及其对应的生命周期函数,并结合了 React 16.3 的…...

第 26 场 蓝桥入门赛

2.对联【算法赛】 - 蓝桥云课 问题描述 大年三十,小蓝和爷爷一起贴对联。爷爷拿出了两副对联,每副对联都由 N 个“福”字组成,每个“福”字要么是正的(用 1 表示),要么是倒的(用 0 表示&#…...

组合(力扣77)

从这道题开始,我们正式进入回溯算法的学习。之前在二叉树中只是接触到了一丢丢,而这里我们将使用回溯算法解决很多经典问题。 那么这道题是如何使用回溯算法的呢?在讲回溯之前,先说明一下此题是如何递归的。毕竟回溯递归不分家&a…...

网络工程师 (22)网络协议

前言 网络协议是计算机网络中进行数据交换而建立的规则、标准或约定的集合,它规定了通信时信息必须采用的格式和这些格式的意义。 一、基本要素 语法:规定信息格式,包括数据及控制信息的格式、编码及信号电平等。这是协议的基础,确…...

Linux之文件IO前世今生

在 Linux之文件系统前世今生(一) VFS中,我们提到了文件的读写,并给出了简要的读写示意图,本文将分析文件I/O的细节。 一、Buffered I/O(缓存I/O)& Directed I/O(直接I/O&#…...

如何在Windows中配置MySQL?

MySQL是一个广泛使用的开源关系型数据库管理系统,它支持多种操作系统平台,其中包括Windows。无论是开发者进行本地开发,还是管理员为应用程序配置数据库,MySQL都是一个非常流行的选择。本篇文章将详细介绍如何在Windows操作系统中…...

Kafka 入门与实战

一、Kafka 基础 1.1 创建topic kafka-topics.bat --bootstrap-server localhost:9092 --topic test --create 1.2 查看消费者偏移量位置 kafka-consumer-groups.bat --bootstrap-server localhost:9092 --describe --group test 1.3 消息的生产与发送 #生产者 kafka-cons…...

数学知识学习1

1、数论 1质数判定 i<n/i优化O(sqrt(n)) bool is_prime(int n){if(n<2)return false;for(int i2;i<n/i;i){if(n%i0)return false;} true; } 分解质因数 i<n/i优化O(sqrt(n)) // 定义一个函数 divide&#xff0c;接收一个整数 n 作为参数&#xff0c;用于分解质…...

【AI日记】25.02.08

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】【AI应用】 探索 AI 应用探索周二有个面试&#xff0c;明后天打算好好准备一下&#xff0c;我打算主要研究下 AI 如何在该行业赋能和应用&#xff0c;以及该行业未来的发展前景和公司痛点&#…...

Lecture8 | LPV VXGI SSAO SSDO

Review: Lecture 7 | Lecture 8 LPV (Light Propagation Volumes) Light Propagation Volumes(LPV)-孤岛惊魂CryEngine引进的技术 LPV做GI快|好 大体步骤&#xff1a; Step1.Generation of Radiance Point Set Scene Representation 生成辐射点集的场景表示&#xff1a;辐射…...

Java中实现定时锁屏的功能(可以指定时间执行)

Java中实现定时锁屏的功能&#xff08;可以指定时间执行&#xff09; 要在Java中实现定时锁屏的功能&#xff0c;可以使用java.util.Timer或java.util.concurrent.ScheduledExecutorService来调度任务&#xff0c;并通过调用操作系统的命令来执行锁屏。下面我将给出一个基本的…...

Java集合List详解(带脑图)

允许重复元素&#xff0c;有序。常见的实现类有 ArrayList、LinkedList、Vector。 ArrayList ArrayList 是在 Java 编程中常用的集合类之一&#xff0c;它提供了便捷的数组操作&#xff0c;并在动态性、灵活性和性能方面取得了平衡。如果需要频繁在中间插入和删除元素&#xf…...

[实验日志] VS Code 连接服务器上的 Python 解释器进行远程调试

目录 0. 前言 1. 环境 2. 准备工作 2.1 安装VS Code 2.2 安装插件 2.3 配置远程服务器 2.4 修改设置 2.5 打开远程调试窗口 3. 调试代码 3.1 输密码 3.2 打开服务器文件夹 3.3 配置Python环境 3.4 调试Python代码 补充&#xff1a;使用调试控制台&#xff0c;查看…...

(14)gdb 笔记(7):以日志记录的方式来调试多进程多线程程序,linux 命令 tail -f 实时跟踪日志

&#xff08;44&#xff09;以日志记录的方式来调试多进程多线程程序 &#xff1a; 这是老师的日志文件&#xff0c;可以用来模仿的模板&#xff1a; &#xff08;45&#xff09;实时追踪日志的 tail -f 命令&#xff1a; &#xff08;46&#xff09; 多种调试方法结合起来用 …...

Sentinel的安装和做限流的使用

一、安装 Release v1.8.3 alibaba/Sentinel GitHubA powerful flow control component enabling reliability, resilience and monitoring for microservices. (面向云原生微服务的高可用流控防护组件) - Release v1.8.3 alibaba/Sentinelhttps://github.com/alibaba/Senti…...

四柱预测学

图表 后天八卦 十二地支不仅代表了时间,还代表了方位。具体来说: ‌子‌:代表正北方‌丑寅‌:合起来代表东北方‌卯‌:代表正东方‌辰巳‌:合起来代表东南方‌午‌:代表正南方‌未申‌:合起来代表西南方‌酉‌:代表正西方‌戌亥‌:合起来代表西北方‌四季-五行-六神…...

【个人开发】macbook m1 Lora微调qwen大模型

本项目参考网上各类教程整理而成&#xff0c;为个人学习记录。 项目github源码地址&#xff1a;Lora微调大模型 项目中微调模型为&#xff1a;qwen/Qwen1.5-4B-Chat。 去年新发布的Qwen/Qwen2.5-3B-Instruct同样也适用。 微调步骤 step0: 环境准备 conda create --name fin…...

sqli-labs靶场实录(二): Advanced Injections

sqli-labs靶场实录: Advanced Injections Less21Less22Less23探测注入点 Less24Less25联合注入使用符号替代 Less25aLess26逻辑符号绕过and/or过滤双写and/or绕过 Less26aLess27Less27aLess28Less28aLess29Less30Less31Less32&#xff08;宽字节注入&#xff09;Less33Less34Le…...

Linux系统 环境变量

环境变量 写在前面概念查看环境变量main函数的参数argc & argvenv bash环境变量 写在前面 对于环境变量&#xff0c;本篇主要介绍基本概念及三四个环境变量 —— PATH、HOME、PWD。其中 PATH 作为 “ 敲门砖 ”&#xff0c;我们会更详细讲解&#xff1b;理解环境变量的全局…...

机器学习-线性回归(最大似然估计)

机器学习任务可以分为两类: 一类是样本的特征向量 &#x1d499; 和标签 &#x1d466; 之间存在未知的函数关系&#x1d466; h(&#x1d499;)&#xff0c;另一类是条件概率&#x1d45d;(&#x1d466;|&#x1d499;)服从某个未知分布。最小二乘法是属于第一类&#xff0c…...

【信息系统项目管理师-案例真题】2017上半年案例分析答案和详解

更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 试题一【问题1】8 分【问题2】4 分【问题3】8 分【问题4】5 分试题二【问题1】10 分【问题2】8 分【问题3】6 分【问题4】5 分试题三【问题1】5 分【问题2】7 分【问题3】6 分【问题4】3 分试题一 阅读下列说明…...

CSP晋级组比赛生成文件夹与文件通用代码Python

快速生成文件夹与文件的脚本 import sys import osmyfiles sys.argv[1::] for f in myfiles:os.mkdir(f)os.system(f"touch {f}/{f}.in")os.system(f"touch {f}/{f}.out")os.system(f"touch {f}/{f}.cpp")with open("template.cpp",…...

正则表达式进阶(二)——零宽断言详解:\b \B \K \z \A

在正则表达式中&#xff0c;零宽断言是一种非常强大的工具&#xff0c;能够在不消费字符的情况下对匹配位置进行约束。除了环视&#xff08;lookahead 和 lookbehind&#xff09;以外&#xff0c;还有一些常用的零宽断言&#xff0c;它们用于处理边界、字符串的开头和结尾等特殊…...

Android 中实现 PDF 预览三种方式

目录 1. 使用第三方库 PdfRenderer&#xff08;适用于 Android 5.0 及以上&#xff09; 步骤&#xff1a;2. 使用第三方库 MuPDF步骤&#xff1a;3. 使用第三方库 PdfiumAndroid步骤&#xff1a; 1. 使用第三方库 PdfRenderer&#xff08;适用于 Android 5.0 及以上&#xff09…...

尚硅谷课程【笔记】——大数据之Zookeeper【二】

课程视频&#xff1a;【尚硅谷Zookeeper教程】 四、Zookeeper实战 4.1分布式安装部署 1. 集群规划 在Hadoop102、Hadoop103和Hadoop104三个节点上部署Zookeeper 2. 解压安装 1&#xff09;解压Zookeeper.tar.gz到指定目录 tar -zxvf zookeeper-3.7.2.tar.gz -C /opt/mod…...

CodeGPT + IDEA + DeepSeek,在IDEA中引入DeepSeek实现AI智能开发

CodeGPT IDEA DeepSeek&#xff0c;在IDEA中引入DeepSeek 版本说明 建议和我使用相同版本&#xff0c;实测2022版IDEA无法获取到CodeGPT最新版插件。&#xff08;在IDEA自带插件市场中搜不到&#xff0c;可以去官网搜索最新版本&#xff09; ToolsVersionIntelliJ IDEA202…...

postgresql 游标(cursor)的使用

概述 PostgreSQL游标可以封装查询并对其中每一行记录进行单独处理。当我们想对大量结果集进行分批处理时可以使用游标&#xff0c;因为一次性处理可能造成内存溢出。 另外我们可以定义函数返回游标类型变量&#xff0c;这是函数返回大数据集的有效方式&#xff0c;函数调用者…...