网络协议之邮件协议(SMTP、POP3与IMAP)
一、引言
在数字化时代,电子邮件已成为人们日常沟通和信息交流的重要工具。电子邮件系统的稳定运行离不开一系列网络协议的支撑,其中SMTP、POP3和IMAP是最为关键的三个协议。它们分别负责邮件的发送、接收和管理,共同构建了一个高效、稳定的电子邮件系统。本文将对这三个协议进行详细介绍,包括它们的基本概念、工作原理、常见应用场景以及在邮件传输中的关键作用。
二、SMTP协议
2.1 基本概念
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是一种用于发送电子邮件的互联网标准通信协议。它定义了电子邮件客户端与服务器之间,以及服务器与服务器之间的通信规则,是电子邮件系统中的关键组件。
SMTP协议采用客户端-服务器模式,客户端(通常是邮件客户端软件或邮件服务器)向服务器发送邮件请求,服务器根据请求将邮件发送到目标邮件服务器。SMTP协议使用TCP/IP协议簇,默认端口为25或587,通过“推送”的方式传递信息,确保邮件能够可靠且有效地在不同系统之间传输。
2.2 工作原理
SMTP协议的工作流程主要包括以下几个步骤:
- 连接建立:客户端与SMTP服务器建立TCP/IP连接。
- 邮件发送请求:客户端通过EHLO或HELO命令向服务器问候,表明连接已建立。
- 邮件传输:客户端使用MAIL FROM、RCPT TO和DATA等命令向服务器传输邮件的发件人、收件人和内容。其中,MAIL FROM命令用于指定邮件发送者的地址;RCPT TO命令用于指定一个或多个邮件接收者的地址;DATA命令则用于发送邮件正文和附件等内容。邮件内容发送完毕后,客户端以一个单独的行,只包含一个英文句号(.)作为邮件内容的结束标识。
- 传输结束:客户端通过QUIT命令结束此次邮件发送会话,服务器关闭连接。
2.3 安全机制
由于SMTP协议本身并不提供安全性,因此在实际应用中,通常会使用SSL/TLS加密来保护邮件传输的安全性,防止邮件内容被窃取或篡改。这种加密方式被称为SMTPS(SMTP over SSL/TLS)。
2.4 常见应用
SMTP协议广泛应用于邮件传输服务中,无论是个人邮箱、企业邮箱还是自动化邮件通知系统,都依赖于SMTP协议来实现邮件的发送功能。例如,当用户通过电子邮件客户端(如Outlook、Thunderbird等)发送邮件时,客户端软件会利用SMTP协议将邮件发送到用户的邮件服务器,再由邮件服务器负责将邮件转发到接收方的邮件服务器。
三、POP3协议
3.1 基本概念
POP3(Post Office Protocol - Version 3,邮局协议版本3)是一种用于电子邮件接收的协议。它允许电子邮件客户端(如Outlook、Thunderbird等)从邮件服务器上下载用户的电子邮件,并在本地存储和管理这些邮件。POP3协议工作在应用层,使用TCP作为传输层协议,默认端口为110。
3.2 工作原理
POP3协议的工作过程通常包括以下三个阶段:
- 授权阶段:客户端通过发送用户名和密码进行身份验证。服务器验证成功后,客户端进入事务阶段。
- 事务阶段:客户端可以发送命令来检索、查看和删除服务器上的邮件。常用的命令包括STAT(请求服务器返回邮箱的状态信息)、LIST(请求服务器返回邮件列表)、RETR(请求服务器返回指定索引号的邮件内容)和DELE(标记指定索引号的邮件为删除状态)等。
- 更新阶段:客户端发送QUIT命令结束会话。服务器接收到QUIT命令后,会删除所有标记为删除的邮件,然后关闭TCP连接。
值得注意的是,虽然传统的POP3协议在邮件下载后会从服务器上删除邮件,但现代的POP3服务器大多支持“只下载邮件,服务器端并不删除”的功能,即改进的POP3协议。这样,用户可以在多个设备上访问和管理邮件,而不必担心邮件丢失。
3.3 优缺点
POP3协议的优点包括简单易用、离线访问和减轻服务器负担等。它允许用户在下载邮件到本地计算机后脱离网络进行邮件访问,这对于网络连接不稳定或间歇性用户来说非常有用。同时,由于POP3协议在邮件下载后会从服务器上删除邮件,因此有助于减轻服务器的存储负担和降低存储成本。
然而,POP3协议也存在一些缺点。例如,它不支持邮件同步和文件夹结构,用户在不同设备上访问邮件时可能会遇到不一致的情况。此外,POP3协议在安全性方面也存在一定隐患,因为邮件在传输过程中可能被截获或泄露。
3.4 常见应用
POP3协议在电子邮件接收过程中应用广泛。它允许用户从邮件服务器上下载邮件到本地设备,使得用户可以在没有网络连接的情况下查看和处理邮件。此外,POP3协议还常用于邮件备份和存档等场景。
四、IMAP协议
4.1 基本概念
IMAP(Internet Message Access Protocol,互联网邮件访问协议)是一种用于电子邮件的协议。它与POP3类似,也允许电子邮件客户端从邮件服务器上获取邮件。但IMAP协议不同于POP3协议的是,它在客户端和服务器之间建立了一种更为复杂的交互模式,允许用户对邮件进行更加细致的管理。IMAP协议支持服务器端存储和状态同步,用户可以在多个设备上同步邮件状态和内容。
IMAP协议同样工作在应用层,使用TCP作为传输层协议。它支持加密通信,常用的加密方式有SSL和TLS。IMAP协议的默认端口为143(未加密)或993(SSL加密)。
4.2 工作原理
IMAP协议的工作原理与POP3协议类似,也包括连接建立、用户身份验证、邮件同步和状态更新等阶段。但IMAP协议在邮件同步和状态更新方面更为强大和灵活。
- 连接建立:客户端与IMAP服务器建立TCP/IP连接。
- 用户身份验证:客户端通过用户名和密码向服务器进行身份验证。
- 邮件同步:客户端从服务器下载邮件头信息(如发件人、主题、日期等),用户可以选择查看、下载或删除特定邮件。IMAP协议支持摘要浏览功能,用户可以在阅读完邮件的到达时间、主题、发件人等信息后再决定是否下载邮件内容。
- 状态更新:IMAP服务器实时更新邮件的状态(如已读、未读、标记等),并将更新同步到所有客户端设备。这意味着用户在任何设备上对邮件进行的操作(如阅读、删除等)都会反映到其他设备上。
4.3 优缺点
IMAP协议的优点包括邮件同步、文件夹支持和服务器端存储等。它允许用户在多个设备上同步邮件状态和内容,使得用户可以在任何设备上方便地访问和管理邮件。同时,IMAP协议还支持服务器端存储邮件,用户不必担心邮件丢失或损坏。此外,IMAP协议还支持文件夹结构,用户可以根据需要创建和管理多个邮件文件夹。
然而,IMAP协议也存在一些缺点。例如,它的交互模式比POP3协议更为复杂,因此在网络带宽和服务器资源方面会消耗更多的资源。此外,IMAP协议在配置和使用方面也可能比POP3协议更为复杂一些。
4.4 常见应用
IMAP协议广泛应用于各种电子邮件客户端和移动设备的邮件应用中。通过IMAP协议,用户可以方便地在多个设备上管理和同步邮件。例如,当用户在手机、平板电脑和电脑等多个设备上使用同一电子邮件账户时,IMAP协议可以确保这些设备上的邮件状态和内容始终保持一致。
五、SMTP、POP3与IMAP的对比与协作
5.1 功能定位
SMTP、POP3和IMAP三个协议在电子邮件系统中各自扮演着不同的角色。SMTP协议负责邮件的发送和转发,将邮件从发送端传输到接收端的邮件服务器;POP3协议和IMAP协议则负责邮件的接收和管理,允许用户从邮件服务器上下载邮件并在本地存储或同步邮件状态和内容。
5.2 工作流程
在电子邮件系统中,SMTP、POP3和IMAP三个协议通常协同工作以确保邮件的正常传输和有效管理。以下是它们之间的工作流程示例:
- 发送邮件:当用户通过电子邮件客户端发送邮件时,客户端软件会利用SMTP协议将邮件发送到用户的邮件服务器。邮件服务器接收到邮件后,会利用SMTP协议将邮件转发到接收方的邮件服务器。
- 接收邮件:接收方的邮件服务器接收到邮件后,会将其存储在服务器上。用户可以通过电子邮件客户端使用POP3协议或IMAP协议从邮件服务器上下载邮件。如果选择使用POP3协议,邮件将在下载后被从服务器上删除(或保留在服务器上,取决于POP3服务器的设置);如果选择使用IMAP协议,邮件将保留在服务器上,用户可以在多个设备上同步邮件状态和内容。
5.3 优缺点对比
协议 | 优点 | 缺点 |
---|---|---|
SMTP | 1. 广泛兼容性 | 1. 本身不提供加密 |
2. 简单高效 | 2. 易受垃圾邮件攻击 | |
3. 可靠传输 | ||
POP3 | 1. 简单易用 | 1. 不支持邮件同步 |
2. 离线访问 | 2. 安全性较低 | |
3. 减轻服务器负担 | 3. 不支持文件夹结构 | |
IMAP | 1. 邮件同步 | 1. 交互模式复杂 |
2. 文件夹支持 | 2. 消耗更多资源 | |
3. 服务器端存储 | 3. 配置和使用可能较复杂 |
六、高级功能与扩展
6.1 SMTP的扩展与增强
随着电子邮件系统的不断发展,SMTP协议也经历了多次扩展和增强,以满足日益增长的需求和安全要求。
6.1.1 SMTP认证
为了增强SMTP协议的安全性,引入了SMTP认证机制。这种机制要求客户端在发送邮件之前必须通过身份验证,从而有效防止了垃圾邮件的滥发和邮件服务器的滥用。SMTP认证通常基于用户名和密码,也可以使用更安全的认证方法,如SSL/TLS加密。
6.1.2 SMTPS与STARTTLS
SMTPS(SMTP over SSL/TLS)和STARTTLS是两种增强SMTP安全性的方法。SMTPS在建立连接时直接使用SSL/TLS加密,确保整个会话过程的安全。而STARTTLS则允许在已建立的SMTP会话中“升级”为加密会话,这样可以在不改变现有SMTP基础设施的情况下增强安全性。
6.1.3 邮件大小限制与分段传输
由于电子邮件可能包含大量附件或大型文件,SMTP协议支持邮件大小限制和分段传输功能。当邮件大小超过服务器设定的限制时,可以将邮件分段传输,每段作为一个独立的SMTP消息发送,最后在接收端重新组合成完整的邮件。
6.1.4 邮件传递通知(DSN)
SMTP协议还支持邮件传递通知(Delivery Status Notification,DSN),用于向发送者提供邮件传递状态的信息,如成功传递、传递失败、延迟等。这有助于发送者及时了解邮件的传递情况,并采取相应的措施。
6.2 POP3的扩展与改进
尽管POP3协议相对简单,但也经历了一些扩展和改进,以适应现代电子邮件系统的需求。
6.2.1 APOP与SASL
为了增强POP3协议的安全性,引入了APOP(Authenticated POP)和SASL(Simple Authentication and Security Layer)机制。APOP通过在连接建立阶段使用加密的密码验证客户端身份,而SASL则提供了一种更通用的认证框架,支持多种认证方法。
6.2.2 邮件标记与保留
传统的POP3协议在邮件下载后会从服务器上删除邮件,但现代的POP3服务器大多支持邮件标记与保留功能。这意味着用户可以在下载邮件后选择将其保留在服务器上,以便在其他设备上访问或管理。这通常通过设置邮件的“已读”或“未读”状态来实现,而不是直接删除邮件。
6.2.3 邮件过滤与排序
一些POP3服务器还支持邮件过滤与排序功能,允许用户根据特定的规则(如发件人、主题、日期等)对邮件进行过滤和排序。这有助于用户更快地找到所需的邮件,提高邮件处理效率。
6.3 IMAP的扩展与高级功能
IMAP协议因其强大的邮件同步和状态更新功能而广受欢迎,同时也支持多种扩展和高级功能。
6.3.1 IDLE命令与实时推送
IMAP协议支持IDLE命令,允许客户端在不需要频繁轮询服务器的情况下接收实时邮件通知。当服务器上有新邮件到达或邮件状态发生变化时,服务器会主动向客户端发送通知,从而实现实时推送功能。这有助于减少网络带宽的消耗,并提高邮件处理的及时性。
6.3.2 邮件搜索与排序
IMAP协议支持邮件搜索与排序功能,允许用户根据特定的条件(如关键词、发件人、日期等)在服务器上搜索邮件,并对搜索结果进行排序。这有助于用户更快地找到所需的邮件,提高邮件检索效率。
6.3.3 多账户与代理访问
IMAP协议支持多账户和代理访问功能。用户可以在同一客户端上配置多个IMAP账户,并方便地切换和管理这些账户。此外,用户还可以授权其他用户或应用程序代理访问其IMAP账户,以实现更灵活的邮件管理。
6.3.4 邮件标签与文件夹
IMAP协议支持邮件标签与文件夹功能,允许用户在服务器上创建和管理多个邮件文件夹,并为邮件添加标签或分类。这有助于用户更好地组织和分类邮件,提高邮件管理的便捷性。
七、实际应用案例
7.1 企业邮件系统
在企业环境中,SMTP、POP3和IMAP协议共同构成了企业邮件系统的核心。企业通常使用SMTP协议来发送内部和外部邮件,而员工则使用POP3或IMAP协议从邮件服务器上下载和管理邮件。通过配置邮件服务器和客户端软件,企业可以实现邮件的加密传输、垃圾邮件过滤、邮件归档等功能,确保邮件系统的安全性和高效性。
7.2 邮件营销平台
邮件营销平台通常使用SMTP协议来发送大量的营销邮件。这些平台通常具有强大的邮件发送能力,可以根据用户的订阅列表和发送策略自动发送邮件。同时,它们还支持邮件个性化、跟踪和分析等功能,帮助营销人员更好地了解用户需求和邮件营销效果。
7.3 移动邮件应用
随着智能手机的普及,移动邮件应用成为越来越多用户的选择。这些应用通常使用IMAP协议来实现邮件的同步和管理,以便用户可以在手机上随时查看和处理邮件。同时,它们还支持推送通知、邮件搜索、附件下载等功能,为用户提供便捷的邮件使用体验。
7.4 邮件备份与恢复
对于个人和企业用户来说,邮件备份与恢复是非常重要的。通过使用POP3或IMAP协议,用户可以将邮件下载到本地计算机或云存储中进行备份。在需要时,用户可以使用相同的协议将备份的邮件恢复到邮件服务器上或新的邮件客户端中。这有助于确保邮件数据的安全性和可恢复性。
八、总结
SMTP、POP3和IMAP协议作为电子邮件系统的核心组件,在邮件传输、接收和管理方面发挥着重要作用。它们各自具有独特的功能和优缺点,适用于不同的应用场景和需求。随着技术的不断发展和用户需求的不断变化,这些协议也在不断更新和扩展,以适应现代电子邮件系统的需求。
未来,随着云计算、大数据、人工智能等技术的不断发展,电子邮件系统将面临更多的挑战和机遇。SMTP、POP3和IMAP协议将继续在邮件传输和管理方面发挥重要作用,同时也需要不断创新和改进,以满足用户对于安全性、高效性、便捷性和智能化的需求。例如,可以进一步加强邮件加密和身份验证机制,提高邮件传输的安全性;优化邮件同步和状态更新机制,提高邮件管理的便捷性和实时性;利用人工智能技术对邮件进行分类、过滤和智能回复等,提高邮件处理的效率和智能化水平。
相关文章:

网络协议之邮件协议(SMTP、POP3与IMAP)
一、引言 在数字化时代,电子邮件已成为人们日常沟通和信息交流的重要工具。电子邮件系统的稳定运行离不开一系列网络协议的支撑,其中SMTP、POP3和IMAP是最为关键的三个协议。它们分别负责邮件的发送、接收和管理,共同构建了一个高效、稳定的…...

python学习笔记(3)运算符
Python 语言支持的运算符: Python 语言支持以下类型的运算符: 算术运算符 比较(关系)运算符 赋值运算符 逻辑运算符 位运算符 成员运算符 身份运算符 运算符优先级 接下来让我们一个个来学习Python的运算符。 Python算术运算符 运算符描述实例加 - 两…...

_FYAW智能显示控制仪表的简单使用_串口通信
一、简介 该仪表可以实时显示位移传感器的测量值,并可设定阈值等。先谈谈简单的使用方法,通过说明书,我们可以知道长按SET键可以进入参数选择状态,按“↑”“↓”可以选择该组参数的上一个或者下一个参数。 从参数一览中可以看到有…...

激光雷达定位初始化的另外一个方案 通过键盘按键移动当前位姿 (附python代码)
通常使用的是通过在 rviz 中点选指定初始化位置和方向来完成点云的初始化匹配。 但是这种粗略的初始化方法有时候可能不成功,因此需要使用准确的初始化方法,以更好的初始值进行无损检测配准。 为了提供更好的匹配初始值,我使用 Python 脚本获取键盘输入,并不断调整这个匹配…...

从0-1逐步搭建一个前端脚手架工具并发布到npm
前言 vue-cli 和 create-react-app 等 cli 脚手架工具用于快速搭建应用,无需手动配置复杂的构建环境。本文介绍如何使用 rollup 搭建一个脚手架工具。 脚手架工具的工作流程简言为:提供远端仓库各种模版 > 用户通过命令选择模版 > 拉取仓库代码 …...

河道水位流量一体化自动监测系统:航运安全的护航使者
在广袤的水域世界中,航运安全始终是至关重要的课题。而河道水位流量一体化自动监测系统的出现,如同一位强大的护航使者,为航运事业的稳定发展提供了坚实的保障。 水位传感器:负责实时监测河道的水位变化。这些传感器通常采用先进的…...

维护在线重做日志
学习目标 解释在线重做日志文件的目的概述在线重做日志文件的结构控制日志开关和检查点多路复用和维护在线重做日志文件使用OMF管理在线重做日志文件获取在线重做日志文件信息 在线重做日志文件提供了在数据库发生故障时重做事务的方法。 每个事务都同步写入重做日志缓冲区&a…...

ASCB1系列APP操控末端回路智能微断 物联网断路器 远程控制开关 学校、工厂、农场、商业大楼等可用
安科瑞戴婷 Acrel-Fanny ASCB1系列智能微型断路器是安科瑞电气股份有限公司全新推出的智慧用电产品,产品由智能微型断路器与智能网关两部分组成,可用于对用电线路的关键电气因素,如电压、电流、功率、温度、漏电、能耗等进行实时监测&#x…...

Python入门(10)--面向对象进阶
Python面向对象进阶 🚀 1. 继承与多态 🔄 1.1 继承基础 class Animal:def __init__(self, name, age):self.name nameself.age agedef speak(self):passdef describe(self):return f"{self.name} is {self.age} years old"class Dog(Anim…...

Makefile 之 自动化变量
作用范围只在这条规则以及连带规则中,所以其值也只在作用范围内有效。而不会影响规则链以外的全局变量的值。 "$" 表示目标的集合,就像一个数组,"$"依次取出目标,并执于命令。 "$<"和"$&qu…...

鸿蒙开发:ForEach中为什么键值生成函数很重要
前言 在列表组件使用的时候,如List、Grid、WaterFlow等,循环渲染时都会使用到ForEach或者LazyForEach,当然了,也有单独使用的场景,如下,一个很简单的列表组件使用,这种使用方式,在官…...

沃丰科技智能外呼机器人:超越人工,重塑外呼体验
随着科技的不断发展,人工智能已经逐渐渗透到各行各业,其中智能外呼机器人的出现,更是给企业带来了全新的客户体验。与传统的人工外呼相比,智能外呼机器人具有更高的效率、更低的成本以及更好的用户体验等优势。 优势一࿱…...

百度飞浆:paddle 线性回归模型
学习引用 参考视频: https://www.bilibili.com/video/BV1oRtkeVEVx?spm_id_from333.788.player.switch&vd_sourcec7739de98d044e74cdc74d6e772bed5f&p2 这段代码使用PaddlePaddle深度学习框架来实现一个简单的线性回归模型,旨在从给定的出租车…...

【JavaSE】【网络编程】UDP数据报套接字编程
目录 一、网络编程简介二、Socket套接字三、TCP/UDP简介3.1 有连接 vs 无连接3.2 可靠传输 vs 不可靠传输3.3 面向字节流 vs 面向数据报3.4 双向工 vs 单行工 四、UDP数据报套接字编程4.1 API介绍4.1.1 DatagramSocket类4.1.1.1 构造方法4.1.1.2 主要方法 4.1.2 DatagramPocket…...

45.坑王驾到第九期:Mac安装typescript后tsc命令无效的问题
点赞收藏加关注,你也能主打别墅! 一、问题描述 Mac上终端运行如下命令: sudo npm install typescript -g //全局安装ts提示成功安装后,我测试tsc -v这个命令时出现如下错误: 也就是说找不到 tsc 命令。 二、解决方…...

20241120-Milvus向量数据库快速体验
目录 20241120-Milvus向量数据库快速体验Milvus 向量数据库pymilvus内嵌向量数据库模式设置向量数据库创建 Collections准备数据用向量表示文本插入数据 语义搜索向量搜索带元数据过滤的向量搜索查询通过主键搜索 删除实体加载现有数据删除 Collections了解更多 个人主页: 【⭐…...

【Golang】——Gin 框架中间件详解:从基础到实战
中间件是 Web 应用开发中常见的功能模块,Gin 框架支持自定义和使用内置的中间件,让你在请求到达路由处理函数前进行一系列预处理操作。这篇博客将涵盖中间件的概念、内置中间件的用法、如何编写自定义中间件,以及在实际应用中的一些最佳实践。…...

量子计算来袭:如何保护未来的数字世界
目录 前言 一、量子计算安全的学习方向 1. 量子物理学基础 2. 量子计算原理与技术 3. 传统网络安全知识 4. 量子密码学 5. 量子计算安全政策与法规 二、量子计算的漏洞风险 1. 加密算法被破解风险 2. 区块链安全风险 3. 量子密钥分发风险 4. 量子计算系统自身风险 …...

VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源
VMware虚拟机(Ubuntu或centOS)共享宿主机网络资源 由于需要在 Linux 环境下进行一些测试工作,于是决定使用 VMware 虚拟化软件来安装 Ubuntu 24.04 .1操作系统。考虑到测试过程中需要访问 Github ,要使用Docker拉去镜像等外部网络资源,因此产…...

光伏电站仿真系统的作用
光伏仿真系统有多方面的重要作用,不仅对前期的项目设计评估还是后期的运维效验都有非常重要的作用。 1、优化系统设计 通过输入不同的光伏组件参数、布局方案以及气象条件等,模拟各种设计场景下光伏电站的性能表现。例如,可以比较不同类型光…...

Golang文件操作
写文件 &emsp; os模块可以创建文件,使用fmt可以写入文件。如以下例子: package mainimport ("fmt""os" )func main() {// 学习 golang的文件操作file, err : os.Create("test.txt")if err ! nil {fmt.P…...

爬虫开发工具与环境搭建——使用Postman和浏览器开发者工具
第三节:使用Postman和浏览器开发者工具 在网络爬虫开发过程中,我们经常需要对HTTP请求进行测试、分析和调试。Postman和浏览器开发者工具(特别是Network面板和Console面板)是两种最常用的工具,能够帮助开发者有效地捕…...

React(二)
文章目录 项目地址七、数据流7.1 子组件传递数据给父组件7.1.1 方式一:給父设置回调函数,传递给子7.1.2 方式二:直接将父的setState传递给子7.2 给props传递jsx7.2.1 方式一:直接传递组件给子类7.2.2 方式二:传递函数给子组件7.3 props类型验证7.4 props的多层传递7.5 cla…...

同步原语(Synchronization Primitives)
同步原语(Synchronization Primitives)是用于控制并发编程中多个线程或进程之间的访问顺序,确保共享资源的安全访问的一组机制或工具。它们解决了竞争条件(Race Condition)、死锁(Deadlock)等并…...

SpringBoot服务多环境配置
一个项目的的环境一般有三个:开发(dev)、测试(test)、生产(proc),一般对应三套环境,三套配置文件。 像下面这样直接写两个配置文件是不行的。 application.ymlserver:port: 8080application-dev.ymlspring:datasource:driver-class-name: co…...

STM32单片机CAN总线汽车线路通断检测-分享
目录 目录 前言 一、本设计主要实现哪些很“开门”功能? 二、电路设计原理图 1.电路图采用Altium Designer进行设计: 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 随着汽车电子技术的不断发展,车辆通信接口在汽车电子控…...

【环境搭建】使用IDEA远程调试Docker中的Java Web
有时候要对Docker的Java Web远程调试其功能,于是就需要使用IDEA的远程调试功能,记录一下简单配置方法。 以Kylin4.0.0为例,首先拉取镜像并启动容器: $ docker pull apachekylin/apache-kylin-standalone:4.0.0$ docker run -d \-…...

贴代码框架PasteForm特性介绍之select,selects,lselect和reload
简介 PasteForm是贴代码推出的 “新一代CRUD” ,基于ABPvNext,目的是通过对Dto的特性的标注,从而实现管理端的统一UI,借助于配套的PasteBuilder代码生成器,你可以快速的为自己的项目构建后台管理端!目前管…...

STM32G4的数模转换器(DAC)的应用
目录 概述 1 DAC模块介绍 2 STM32Cube配置参数 2.1 参数配置 2.2 项目架构 3 代码实现 3.1 接口函数 3.2 功能函数 3.3 波形源代码 4 DAC功能测试 4.1 测试方法介绍 4.2 波形测试 概述 本文主要介绍如何使用STM32G4的DAC模块功能,笔者使用STM32Cube工具…...

SpringMVC跨线程获取requests请求对象(子线程共享servletRequestAttributes)和跨线程获取token信息
文章目录 引言I 跨线程共享数据跨线程获取requests请求对象基于org.slf4j.MDC存储共享数据InheritableThreadLocal解决异步线程,无法获取token信息问题II Feign 传递请求属性feign 模块处理被调用方处理请求头III 异步调用的方式CompletableFutureAsync注解Executors引言 本文…...