探索电子邮件的神奇世界

目录

介绍

电子邮件系统的工作原理

邮件发送过程

邮件接收过程

简单邮件传输协议(SMTP)

简介

工作原理

SMTP 请求

SMTP 响应

SMTP 通信流程

SMTP 命令

SMTP 服务器

SMTP 的优点

SMTP 的缺点

电子邮件信件结构

信头

信体

MIME编码和发送附件

简介

MIME结构

附件头

编码附件数据

使用 MIME 发送附件

MIME 用于附件的好处

POP3

简介

POP3 工作原理

POP3 客户端

POP3 的优点

POP3 的缺点

IMAP

简介

IMAP 工作原理

IMAP 客户端

IMAP 的优点

IMAP 的缺点

IMAP 与 POP3 的比较

接收电子邮件程序示例

发送电子邮件程序示例


介绍

        电子邮件是我们日常沟通的重要组成部分,但你知道电子邮件是如何工作的吗?在这篇博客中,我们将探索电子邮件协议和编程的世界,了解电子邮件是如何发送、接收和结构化的。从简单的邮件传输协议到复杂的附件编码,我们将揭开电子邮件系统的奥秘!

电子邮件系统的工作原理

        在深入探讨编程细节之前,让我们先了解一下电子邮件系统是如何工作的。

邮件系统是用于在计算机网络之间发送和接收电子邮件的消息传递系统。它由多个组件组成,包括:

  • 邮件客户端: 用户用来撰写、阅读和管理电子邮件的软件。
  • 邮件服务器: 存储、转发和传递电子邮件的服务器。
  • 邮件协议: 邮件客户端和邮件服务器之间通信使用的协议。

邮件发送过程

  1. 用户撰写邮件: 用户使用邮件客户端撰写邮件,包括收件人、主题、正文和附件等信息。
  2. 邮件客户端解析地址: 邮件客户端解析收件人地址,将电子邮件地址转换为邮件服务器地址。
  3. 邮件客户端连接邮件服务器: 邮件客户端使用SMTP协议连接到收件人的邮件服务器。
  4. 邮件客户端发送邮件: 邮件客户端将邮件内容发送给收件人的邮件服务器。
  5. 收件人邮件服务器接收邮件: 收件人邮件服务器接收邮件,并将其存储在收件人的邮箱中。

邮件接收过程

  1. 用户登录邮箱: 用户使用邮件客户端登录自己的邮箱。
  2. 邮件服务器列出邮件: 邮件服务器列出收件人邮箱中的所有邮件。
  3. 用户选择邮件: 用户选择要阅读的邮件。
  4. 邮件服务器发送邮件内容: 邮件服务器将邮件内容发送给邮件客户端。
  5. 邮件客户端显示邮件: 邮件客户端显示邮件内容。

简单邮件传输协议(SMTP)

简介

        简单邮件传输协议(SMTP - Simple Mail Transfer Protocol)是用于在互联网上传输电子邮件的应用层协议。它定义了邮件客户端(例如,您的电子邮件程序)和邮件服务器(例如,Gmail、Yahoo! Mail 或 Outlook)之间发送邮件的消息格式和规则。SMTP 是电子邮件系统的重要组成部分,它负责将邮件从发件人的邮箱传输到收件人的邮箱。

工作原理

        SMTP 使用请求-响应模式进行通信。邮件客户端向邮件服务器发送请求,邮件服务器接收请求并发送响应。请求和响应都由消息组成,消息包含用于描述请求或响应的信息的头和数据主体。

SMTP 请求

SMTP 请求包含以下信息:

  • 命令: 指示邮件服务器执行的操作,例如 HELO、MAIL、RCPT、DATA 等。
  • 参数: 可选,用于提供有关命令的附加信息。
  • 消息主体: 可选,包含要发送的邮件内容。

SMTP 响应

SMTP 响应包含以下信息:

  • 状态码: 指示请求是否成功,例如 200 OK、404 Not Found、500 Internal Server Error 等。
  • 消息: 可选,包含有关响应的附加信息。

SMTP 通信流程

  1. 建立连接: 邮件客户端向邮件服务器建立TCP连接,通常使用端口 25。
  2. SMTP 握手: 邮件客户端和邮件服务器进行SMTP握手,以验证彼此的身份。
  3. 发送邮件: 邮件客户端发送邮件,包括发件人地址、收件人地址、邮件主题和正文等信息。
  4. 传输邮件: 邮件服务器将邮件传输到收件人的邮件服务器。
  5. 断开连接: 邮件客户端和邮件服务器断开连接。

SMTP 命令

SMTP 定义了多种命令,用于执行不同的操作。以下是一些常用的 SMTP 命令:

  • HELO: 客户端向服务器发送此命令以标识自身。
  • MAIL: 客户端向服务器发送此命令以指示邮件的发送者。
  • RCPT: 客户端向服务器发送此命令以指示邮件的接收者。
  • DATA: 客户端向服务器发送此命令以指示要发送邮件的正文。
  • QUIT: 客户端向服务器发送此命令以断开连接。

SMTP 服务器

SMTP 服务器负责接收和转发电子邮件。它通常由以下组件组成:

  • SMTP 监听器: 监听端口 25 上的传入连接。
  • SMTP 命令解析器: 解析客户端发送的 SMTP 命令。
  • 邮件队列: 存储等待传输的邮件。
  • 邮件转发器: 将邮件转发到其他邮件服务器。

SMTP 的优点

  • 简单易用: SMTP 的协议规范相对简单易懂,易于实现和使用。
  • 通用性强: SMTP 可用于传输各种类型的邮件,包括文本、图像、音频、视频等。
  • 可扩展性强: SMTP 可以通过添加新的命令和参数来扩展,以满足新的应用需求。

SMTP 的缺点

  • 不安全: SMTP 是明文协议,这意味着请求和响应中的数据没有加密,可能会被窃听或篡改。
  • 效率不高: SMTP 使用请求-响应模式,这可能会导致大量往返通信,尤其是在传输大型邮件时。
  • 不支持长连接: SMTP 默认使用短连接,这意味着每次请求都需要建立新的连接,这可能会降低性能。

电子邮件信件结构

        电子邮件的信件结构是精心设计的。电子邮件由两个主要部分组成:信头和信体。

信头

        信头包含了有关邮件的重要元数据信息,这些信息对于邮件的传输、路由和呈现至关重要。主要包括以下字段:

  • From: 发件人地址
  • To: 收件人地址
  • Cc: 抄送地址
  • Bcc: 密送地址
  • Subject: 邮件主题
  • Date: 邮件发送日期
  • Message-ID: 邮件唯一标识符
  • MIME-Version: 多媒体互联网邮件扩展协议版本
  • Content-Type: 邮件内容类型
  • Content-Transfer-Encoding: 邮件内容编码方式
  • X-Headers: 扩展头部信息,用于携带一些非标准信息

信体

        信体包含邮件的正文,即您撰写的实际内容。信体可以包含纯文本、HTML代码、图像、附件等多种内容。为了确保不同邮件客户端能够正确呈现邮件内容,通常会使用MIME(多媒体互联网邮件扩展协议)进行格式化。

MIME编码和发送附件

简介

        当您需要发送带有附件的电子邮件时,**MIME(多用途互联网邮件扩展)**就派上用场了。MIME允许您在电子邮件中包含多种内容类型,例如图像、文档甚至音频文件。它使用特殊的编码来标记附件,以便它们可以成功传输并正确解码。

MIME结构

        带有附件的 MIME 编码电子邮件消息通常由多个部分组成,每个部分都有自己的头和内容:

  1. 正文部分: 此部分包含电子邮件消息的纯文本正文。

  2. 附件部分: 每个附件代表一个单独的部分,具有自己的头和内容。

附件头

        每个附件部分的头包含有关附件的重要信息,包括:

  • Content-Type: 指定附件中包含的数据类型,例如 image/jpeg、application/pdf 或 audio/mpeg。

  • Content-Disposition: 指示收件人如何处理附件,例如 inline(在电子邮件中显示)或 attachment(保存为文件)。

  • Content-Transfer-Encoding: 定义用于表示附件二进制数据的编码方案,例如 Base64 或 Quoted-Printable。

  • Filename: 提供附件文件的原始文件名。

编码附件数据

        为了确保附件数据在传输过程中的完整性和兼容性,需要应用 MIME 编码技术。常用的编码方法包括:

  • Base64: 将二进制数据编码为 ASCII 字符,使其可以安全地在电子邮件系统上传输。

  • Quoted-Printable: 将非 ASCII 字符编码为可打印的 ASCII 字符,同时保留换行符。

使用 MIME 发送附件

        要使用 MIME 发送带有附件的电子邮件,您需要撰写消息并使用适当的 MIME 头和编码将附件数据纳入其中。这可以使用支持 MIME 功能的编程语言或电子邮件客户端软件来完成。

MIME 用于附件的好处

        MIME 为发送附件提供了以下几个优点:

  • 内容类型识别: 清晰地标识附件中包含的数据类型,允许收件人的电子邮件客户端正确处理它。

  • 数据编码: 确保二进制附件数据在传输过程中的完整性和兼容性。

  • 附件处理说明: 提供有关收件人如何处理附件的指导,例如将其内联显示或保存为文件。

POP3

简介

        POP3(邮局协议版本3)是用于从邮件服务器接收电子邮件的标准协议。它与 SMTP(简单邮件传输协议)相反,SMTP 用于发送电子邮件。POP3 允许邮件客户端定期连接到邮件服务器并检索新邮件。

POP3 工作原理

  1. 建立连接: 邮件客户端使用 TCP 连接到邮件服务器,通常使用端口 110。
  2. 身份验证: 邮件客户端使用用户名和密码向邮件服务器进行身份验证。
  3. 列出邮件: 邮件客户端向邮件服务器发送 STAT 命令以获取邮件数量和大小。
  4. 检索邮件: 邮件客户端使用 RETR 命令检索特定邮件或使用 TOP 命令检索邮件头和正文的一部分。
  5. 删除邮件: 邮件客户端可以使用 DELE 命令从服务器删除邮件。
  6. 断开连接: 邮件客户端使用 QUIT 命令断开与邮件服务器的连接。

POP3 客户端

        POP3 客户端是用于从邮件服务器检索电子邮件的软件。常见的 POP3 客户端包括:

  • Microsoft Outlook
  • Mozilla Thunderbird
  • Apple Mail
  • Android 邮件应用程序
  • iOS 邮件应用程序

POP3 的优点

  • 简单易用: POP3 协议相对简单易懂,易于实现和使用。
  • 通用性强: POP3 可用于接收来自不同邮件服务器的电子邮件。
  • 可扩展性强: POP3 可以通过添加新的命令和参数来扩展,以满足新的应用需求。

POP3 的缺点

  • 不安全: POP3 是明文协议,这意味着请求和响应中的数据没有加密,可能会被窃听或篡改。
  • 不支持长连接: POP3 默认使用短连接,这意味着每次请求都需要建立新的连接,这可能会降低性能。
  • 不适合离线访问: POP3 通常用于从服务器下载新邮件,然后删除服务器上的邮件。这使得它不适合离线访问邮件。

IMAP

简介

        IMAP(Internet Message Access Protocol,互联网消息访问协议)是一种用于从邮件服务器访问、管理和操作电子邮件的协议。与 POP3(邮局协议版本3)相比,IMAP 更高级,支持双向同步、离线访问、文件夹管理等功能,并提供更丰富的邮件操作功能。

IMAP 工作原理

  1. 建立连接: 邮件客户端使用 TCP 连接到邮件服务器,通常使用端口 143。
  2. 身份验证: 邮件客户端使用用户名和密码向邮件服务器进行身份验证。
  3. 选择邮箱: 邮件客户端使用 SELECT 命令选择要访问的邮箱。
  4. 列出邮件: 邮件客户端可以使用 LIST、LSUB 或 STATUS 命令列出邮箱中的邮件。
  5. 检索邮件: 邮件客户端可以使用 FETCH 命令检索邮件的详细信息,包括头、正文和附件。
  6. 操作邮件: 邮件客户端可以使用 STORE、COPY、UID STORE 或 UID COPY 命令对邮件进行操作,例如标记已读、删除、移动或重命名。
  7. 断开连接: 邮件客户端使用 LOGOUT 命令断开与邮件服务器的连接。

IMAP 客户端

常见的 IMAP 客户端包括:

  • Microsoft Outlook
  • Mozilla Thunderbird
  • Apple Mail
  • Android 邮件应用程序
  • iOS 邮件应用程序

IMAP 的优点

  • 双向同步: IMAP 支持双向同步,这意味着邮件客户端和邮件服务器上的邮件状态会保持一致。当您在邮件客户端中对邮件进行操作时,邮件服务器上的邮件也会相应更新。
  • 离线访问: IMAP 支持离线访问,这意味着您可以在没有互联网连接的情况下访问和操作邮件。邮件客户端会在您连接到互联网时同步邮件状态。
  • 文件夹管理: IMAP 支持文件夹管理,您可以创建、删除和重命名文件夹以组织您的邮件。
  • 丰富的邮件操作功能: IMAP 支持丰富的邮件操作功能,例如标记已读、删除、移动、重命名、回复、转发、设置标签等。

IMAP 的缺点

  • 复杂性: IMAP 协议比 POP3 更加复杂,需要更多的开发和维护工作。
  • 服务器负载: IMAP 支持双向同步和离线访问,这可能会增加邮件服务器的负载。
  • 安全性: IMAP 是明文协议,这意味着请求和响应中的数据没有加密,可能会被窃听或篡改。

IMAP 与 POP3 的比较

功能IMAPPOP3
同步方式双向同步单向下载
离线访问支持不支持
文件夹管理支持不支持
邮件操作功能丰富简单
复杂性复杂简单
服务器负载
安全性明文明文

接收电子邮件程序示例

        让我们看一个使用Python编程语言的接收电子邮件程序示例。可以使用POPLib库连接到POP3服务器并检索新邮件:

import poplib# 服务器配置
pop3_host = "pop3.example.com"  # POP3 服务器地址
pop3_port = 110  # POP3 服务器端口
username = "your_email@example.com"  # 您的电子邮件地址
password = "your_password"  # 您的电子邮件密码# 连接到 POP3 服务器
with poplib.POP3_SSL(pop3_host, pop3_port) as pop3:# 使用身份验证pop3.user(username)pop3.pass_(password)# 获取邮件数量stat = pop3.stat()msg_count = int(stat[0])# 检索新邮件for i in range(1, msg_count + 1):# 检索邮件头msg_top = pop3.top(i, 1)message_headers = msg_top[1].decode('utf-8')# 解析邮件头for line in message_headers.split('\r\n'):if line.startswith('Subject:'):subject = line[8:]  # 获取邮件主题elif line.startswith('From:'):sender = line[6:]  # 获取发件人# 检索邮件正文msg_ret = pop3.retr(i)message_content = msg_ret[1][0].decode('utf-8')# 处理邮件内容print(f"Subject: {subject}")print(f"From: {sender}")print(message_content)print("--------------------------------------------------")# 删除邮件 (可选)# pop3.dele(i)

解释:

  1. 导入 poplib 库。
  2. 设置 POP3 服务器配置,包括地址、端口、用户名和密码。
  3. 使用 poplib.POP3_SSL 连接到 POP3 服务器,并使用 SSL/TLS 加密连接。
  4. 使用 userpass_ 方法进行身份验证。
  5. 使用 stat 方法获取邮件数量。
  6. 使用 top 方法检索每个邮件的头信息。
  7. 解析邮件头以获取主题和发件人信息。
  8. 使用 retr 方法检索邮件正文。
  9. 处理邮件内容,例如打印或保存到文件。
  10. (可选)使用 dele 方法删除邮件。

发送电子邮件程序示例

        现在,让我们看一个使用Python发送电子邮件的示例。使用smtplib库连接到SMTP服务器并发送邮件:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart# 服务器配置
smtp_host = "smtp.example.com"  # SMTP 服务器地址
smtp_port = 587  # SMTP 服务器端口
username = "your_email@example.com"  # 您的电子邮件地址
password = "your_password"  # 您的电子邮件密码# 发件人和收件人信息
from_addr = "your_email@example.com"
to_addr = "recipient@example.com"# 邮件主题和正文
subject = "Test Email"
message_text = "This is a test email sent from Python."# 创建邮件对象
msg = MIMEMultipart()
msg['From'] = from_addr
msg['To'] = to_addr
msg['Subject'] = subject# 添加邮件正文
msg.attach(MIMEText(message_text, 'plain'))# 连接到 SMTP 服务器
with smtplib.SMTP(smtp_host, smtp_port) as server:# 使用 TLS 加密server.starttls()# 登录server.login(username, password)# 发送邮件server.sendmail(from_addr, to_addr, msg.as_string())print("Email sent successfully!")

解释:

  1. 导入 smtplibMIMETextMIMEMultipart 模块。
  2. 设置 SMTP 服务器配置,包括地址、端口、用户名和密码。
  3. 设置发件人和收件人信息。
  4. 设置邮件主题和正文。
  5. 创建一个 MIMEMultipart 邮件对象。
  6. 添加发件人、收件人和主题信息到邮件对象。
  7. 创建一个 MIMEText 文本对象并将其添加到邮件对象。
  8. 连接到 SMTP 服务器并使用 TLS 加密。
  9. 使用用户名和密码登录。
  10. 使用 sendmail 方法发送邮件。
  11. 打印成功消息。

附件示例

如果想发送带有附件的电子邮件,可以修改示例如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders# ... (其他部分代码同上)# 创建附件对象
attachment = MIMEBase('application', 'octet-stream')
with open('attachment.txt', 'rb') as f:attachment.set_payload(f.read())
encoders.encode_base64(attachment)# 添加附件到邮件对象
attachment.add_header('Content-Disposition', 'attachment; filename=attachment.txt')
msg.attach(attachment)# ... (其他部分代码同上)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker (一)

目录 一、Docker 简介 Docker 的核心概念 1. 容器(Container) 2. 镜像(Image) 3. 仓库(Repository)和注册表(Registry) 4. Dockerfile 5.Docker客户端 6.Docker主机 二、Docker 的优势和特点 1. 轻量级和快速

工作学习的电脑定时关机,定时重启,定时提醒

可以直接下载工具: 定时自动关机 大家好,! 在我们学习与工作时,经常会遇到想要在完成一个任务后,再关闭电脑或对电脑重启,但这个时间点,操作电脑的人可能不能在电脑旁边,这样就需要…

AWS迁移与传输之AWS DMS

AWS Database Migration Service(AWS DMS)是一项托管的服务,用于帮助企业将现有的数据库迁移到AWS云中的各种数据库引擎中,或者在不同数据库引擎之间进行数据迁移和同步。直接在线迁移,将数据复制到云端,不…

大语言模型的工程技巧(四)——梯度检查点

相关说明 这篇文章的大部分内容参考自我的新书《解构大语言模型:从线性回归到通用人工智能》,欢迎有兴趣的读者多多支持。 本文将讨论如何利用梯度检查点算法来减少模型在训练时候(更准确地说是运行反向传播算法时)的内存开支。…

Python集合与字典的概念与使用-课后作业[python123题库]

集合与字典的概念与使用-课后作业 一、单项选择题 1、S和T是两个集合,哪个选项对S^T的描述是正确的?‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬…

机器学习-决策树算法

前言 本篇介绍决策树与随机森林的内容,先完成了决策树的部分。 决策树 决策树(Decision Tree)是一种有监督学习的方法,可以同时解决分类和回归问题,它能够从一系列有特征和标签的数据中总结出决策规则,并用树状图的结构来呈现这…

SecureCRT for Mac注册激活版:专业终端SSH工具

SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,简单地说是Windows下登录UNIX或Linux服务器主机的软件。 SecureCRT支持SSH,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的理想工具。通过…

杭州师范大学物理学院女教授贾婷

主持国家自然科学基金两项,安徽省基金一项。 2003年9月--2007年7月,四川师范大学物理系,学士; 2007年7月--2012年7月,中科院合肥研究院固体物理研究所,博士; 2012年7月—2015年3月&#xff0…

大摩:AI到“临界点”了,资管公司到了广泛部署的时刻

大摩表示,尽管AI技术在资产管理行业中的应用仍处于早期阶段,但其潜力巨大,能够为行业带来根本性的变革。预计生成式AI能够在资产管理公司的运营模型中带来20%至40%的生产力提升。 正文介绍 在全球经济面临诸多不确定因素的当下,…

【全开源】答题考试系统源码(FastAdmin+ThinkPHP+Uniapp)

答题考试系统源码:构建高效、安全的在线考试平台 引言 在当今数字化时代,在线考试系统已成为教育机构和企业选拔人才的重要工具。一个稳定、高效、安全的答题考试系统源码是构建这样平台的核心。本文将深入探讨答题考试系统源码的关键要素,…

大佬大讲堂(1)电机及其驱动内核-自适应观察器

点击上方 “机械电气电机杂谈 ” → 点击右上角“...” → 点选“设为星标 ★”,为加上机械电气电机杂谈星标,以后找夏老师就方便啦!你的星标就是我更新动力,星标越多,更新越快,干货越多! 关注…

Java面试八股之可重入锁ReentrantLock是怎么实现可重入的

可重入锁ReentrantLock是怎么实现可重入的 ReentrantLock实现可重入性的机制主要依赖于以下几个核心组件和步骤: 状态计数器:ReentrantLock内部维护一个名为state的整型变量作为状态计数器,这个计数器不仅用来记录锁是否被持有,…

Java进阶学习笔记9——子类中访问其他成员遵循就近原则

正确访问成员的方法。 在子类方法中访问其他成员(成员变量、成员方法),是依照就近原则的。 F类: package cn.ensource.d13_extends_visit;public class F {String name "父类名字";public void print() {System.out.p…

langchian进阶二:LCEL表达式,轻松进行chain的组装

LangChain表达式语言-LCEL,是一种声明式的方式,可以轻松地将链条组合在一起。 你会在这些情况下使用到LCEL表达式: 流式支持 当你用LCEL构建你的链时,你可以得到最佳的首次到令牌的时间(输出的第一块内容出来之前的时间)。对于一些链&#…

Springboot+Vue项目-基于Java+MySQL的酒店管理系统(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:Java毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计 &…

因说错一句话,京东实习生转正12天被辞退

大家好,我是程序员小灰。 就在昨天,我的老东家京东被爆出了一个大瓜,有一个刚刚加入京东的应届生,仅仅转正12天就被辞退了。 是谁这么倒霉?为什么被辞退呢? 事情的起因是京东新近推出的考评制度。根据京东的…

Spring Boot集成Banner快速入门demo

1.banner介绍 Spring Boot Banner 是一个用于在应用程序启动时显示自定义 ASCII 艺术和信息的功能。这个 ASCII 艺术通常包括项目名称、版本号、作者信息等。Banner 的主要作用是增强应用程序的品牌标识,同时提供一种友好的欢迎方式,让用户或开发人员在…

手撕算法|斯坦福大学教授用60页PPT搞定了八大神经网络

人工智能领域深度学习的八大神经网络常见的是以下几种 1.卷积神经网络(CNN): 卷积神经网络是用于图像和空间数据处理的神经网络,通过卷积层和池化层来捕捉图像的局部特征,广泛应用于图像分类、物体检测等领域。 2.循…

blender 布尔运算,切割模型。

1.创建一个立方体和球体。 2.选中立方体,在属性面板添加布尔修改器。点击物体属性右边的按钮选中球体。参数如下。 3.此时隐藏球体,就可以看到被切掉的效果了。

【算法】前缀和算法——和可被K整除的子数组

题解:和可被K整除的子数组(前缀和算法) 目录 1.题目2.前置知识2.1同余定理2.2CPP中‘%’的计算方式与数学‘%’的差异 及其 修正2.3题目思路 3.代码示例4.总结 1.题目 题目链接:LINK 2.前置知识 2.1同余定理 注:这里的‘/’代表的是数学…