网络协议之邮件协议(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是最为关键的三个协议。它们分别负责邮件的发送、接收和管理,共同构建了一个高效、稳定的…...
【GAMES101笔记速查——Lecture 20 Color and Perception】
颜色与感知 目录 1 光场(Light Field / Lumigraph) 1.1 全光函数 1.1.1 改进:引入波长 1.1.2 改进:添加时间t 1.1.3 改进:人可以移动,添加空间坐标 1.1.4 改进:不把函数当电影来看。 1.…...
全新配置ubuntu18.04深度学习环境
1、下载显卡驱动 1.1、驱动下载 连接:显卡驱动 手动驱动搜索-》查找-》查看-》下载 下载可使用指令 wget https://us.download.nvidia.com/XFree86/Linux-x86_64/535.216.01/NVIDIA-Linux-x86_64-535.216.01.run 2、下载安装cuda12.0 wget https://developer.do…...
C++初阶——类和对象(下)
目录 1、再探构造函数——初始化列表 2、类型转换 3、static成员 4、友元 5、内部类 6、匿名对象 7、对象拷贝时编译器的优化(了解) 1、再探构造函数——初始化列表 1. 构造函数初始化除了使用函数体内赋值,还有一种方式——初始化列表, 初始化列…...
Android Framework SurfaceFlinger面试题及参考答案
目录 请简述 SurfaceFlinger 在 Android 系统中的作用。 SurfaceFlinger 是如何与 CPU、GPU 以及显示器协同工作的? 解释一下 Android 系统中的三块 Graphic Buffer 及其用途。 VSYNC 信号在 Android 渲染机制中扮演什么角色? 请描述 SurfaceFlinger 如何分发 VSYNC 信号…...
STM32 外设简介
STM32 外设简介 STM32 是由意法半导体 (STMicroelectronics) 开发的一系列基于 ARM Cortex 内核的微控制器,广泛应用于嵌入式系统中。STM32 系列的一个重要特点是其丰富而强大的外设模块,支持多种接口和功能,能满足工业控制、物联网、消费电…...
java操作doc——java利用Aspose.Words操作Word文档并动态设置单元格合并
在实际工作中,如果业务线是管理类项目或者存在大量报表需要导出的业务时,可以借助第三方插件实现其对应功能。 尤其是需要对word文档的动态操作或者模板数据的定向合并,使用Aspose会相对来说容易一些,而且相关文档比较完整&#…...
人工智能—机器学习-图像处理
1. 人工智能(AI) 定义:人工智能是计算机科学的一个分支,旨在开发能够模拟人类智能的系统,包括学习、推理、问题解决、感知和语言理解等能力。子领域: 机器学习(ML):使计…...
数据结构——树
参考:数据结构(C版)第2版 [王红梅] 文章目录 树和二叉树基本术语二叉树概念二叉树的性质二叉树的存储顺序存储二叉链表 二叉树的遍历广度遍历深度遍历 树和二叉树 基本术语 结点的度、树的度:某结点拥有子树的个数为该结点的度&…...
快速理解微服务中Fegin的概念
一.由来 1.在传统的架构里面,我们是通过使用RestTemplate来访问其他的服务,但是这种方式就存在了一个很大的缺陷,也就是被调用方如果发生了服务的迁移(IP和端口发生了变化),那么调用方也需要同步的在代码里面进行修改,…...
testImplementation和androidTestImplementation区别
testImplementation和androidTestImplementation区别 testImplementation 和 androidTestImplementation 是 Gradle 中用于添加测试依赖的配置,主要区别在于测试的类型和运行的环境: 1. testImplementation 用于:单元测试运行环境…...
Vue前端开发2.3.2-4 绑定指令
本文介绍了Vue中的绑定指令,包括属性绑定指令v-bind、事件绑定指令v-on以及双向数据绑定指令v-model。通过创建单文件组件,演示了如何使用这些指令来控制DOM属性、监听事件和实现表单输入与数据的双向同步。同时,探讨了v-model的修饰符如.num…...
使用ElementUI中的el-table制作可编辑的表格
在前端开发时,可能会需要用到可编辑的表格控件。一些原生的UI框架并不支持Table控件的可编辑功能,所以只能自己实现。 以下用Vue3Element-Plus进行示例开发。 一、实现可编辑的单元格 我想要实现的效果是,鼠标移动到el-table的某行时&…...
pytest 通过实例讲清单元测试、集成测试、测试覆盖率
1. 单元测试 概念 定义: 单元测试是对代码中最小功能单元的测试,通常是函数或类的方法。目标: 验证单个功能是否按照预期工作,而不依赖其他模块或外部资源。特点: 快速、独立,通常是开发者最先编写的测试。 示例:pytest 实现单…...
概率论中交并集的公式
文章目录 对于相容事件且独立事件1. 同时出现的概率,即 P ( A ∩ B ) P(A\cap B) P(A∩B):2. 出现任意一个的概率,即 P ( A ∪ B ) P(A\cup B) P(A∪B): 对于相容事件且依赖事件1. 同时出现的概率,即 P ( A ∩ B ) P(A\cap B) P(A∩B):特殊的,对于独立事件 2. 出现任意一个的概…...
在Ubuntu2004中搭建基于ESP-IDF v5.1的ESP32-S3开发环境
在Ubuntu2004中搭建基于ESP-IDF v5.1的ESP32-S3开发环境 目录 1 基本资料 2 注意事项 2.1 子模块检出失败处理 2.2 选择 Espressif 下载服务器 2.3 自定义工具安装路径 2.4 导出环境变量 2.5 测试基础环境 3 创建自己的工程 3.1 创建基础应用工程 3.2 创建组件(…...
Vue 项目中 Axios 的封装方向探索
什么是 Axios? Axios 是一个基于 Promise 的 HTTP 客户端,用于浏览器和 Node.js 环境中发送 HTTP 请求。它的主要作用是帮助前端与后端进行数据交换,通常用于向后端接口发送 GET、POST、PUT、DELETE 等请求并处理返回的响应。 Axios 的特点: 基于 Promise,支持异步编程。…...
LLM应用-prompt提示:RAG query重写、相似query生成 加强检索准确率
参考: https://zhuanlan.zhihu.com/p/719510286 1、query重写 你是一名AI助手,负责在RAG(知识库)系统中通过重构用户查询来提高检索效果。根据原始查询,将其重写得更具体、详细,以便更有可能检索到相关信…...
详解Qt QBuffer
文章目录 **QBuffer 的详解****前言****QBuffer 是什么?****QBuffer 的主要用途****构造函数****主要成员函数详解****1. open()****原型:****作用:****参数:****返回值:****示例代码:** **2. write()****原…...
【编程语言】Kotlin快速入门 - 泛型
Kotlin的泛型与Java十分类似,也是使用这种的语法结构: class Fruit<T> {fun eat(f : T): Unit {println("eat...")}fun <T> buy(p : T): T {return p} }泛型限制 和Java一样,Kotlin也允许泛型是某个类的子类 fun &l…...
Oracle 执行计划查看方法汇总及优劣对比
在 Oracle 数据库中,查看执行计划是优化 SQL 语句性能的重要工具。以下是几种常用的查看执行计划的方法及其优劣比较: 1. 使用 EXPLAIN PLAN FOR 和 DBMS_XPLAN.DISPLAY 方法 执行 EXPLAIN PLAN FOR 语句: EXPLAIN PLAN FOR SELECT * FROM …...
typescript进阶
typescript进阶 #函数重载 #参数类型和反应值不同的函数 #接口继承 #类的修饰符 #存取器 #类实现接口 #抽象类 #泛型类 #函数重载 #参数类型和反应值不同的函数 function hello (name: string) : string function hello (age: number) : string function hello (value: strin…...
【真实场景面试问题-2】
1 介绍一下低功耗设计手段–clock gating 和 clock domain; 芯片的低功耗设计尤其是在关注能耗的场景:移动设备、物联网和嵌入式系统;时钟门控(Clock Gating)和时钟域(Clock Domain)是两种常用…...
CKA认证 | Day4 K8s管理应用生命周期(下)
第四章 K8s管理应用程序生命周期(下) 1、Pod对象 1.1 Pod 的基本概念 Pod 是 Kubernetes 中最基本和最重要的概念之一,是一个逻辑抽象概念,Kubernetes创建和管理的最小单元, 一个Pod由一个容器或多个容器组成。它简…...
极狐GitLab 17.6 正式发布几十项与 DevSecOps 相关的功能【六】
GitLab 是一个全球知名的一体化 DevOps 平台,很多人都通过私有化部署 GitLab 来进行源代码托管。极狐GitLab 是 GitLab 在中国的发行版,专门为中国程序员服务。可以一键式部署极狐GitLab。 学习极狐GitLab 的相关资料: 极狐GitLab 官网极狐…...
《生成式 AI》课程 第3講 CODE TASK执行文章摘要的机器人
课程 《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己-CSDN博客 任务1:总结 1.我们希望你创建一个可以执行文章摘要的机器人。 2.设计一个提示符,使语言模型能够对文章进行总结。 model: gpt-4o-mini,#gpt-3.5-turbo, import…...
Java项目实战II基于微信小程序的校运会管理系统(开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导 一、前言 在充满活力与激情的校园生活中,校运会不仅是…...
一种简单高效的RTSP流在线检测方法,不需要再过渡拉流就可以获取设备状态以及对应音视频通道与编码格式
平台如何检测一路RTSP流是否在线? 在之前的流媒体平台方案中,我们都是通过定时RTSP拉流的方式,走一个完整的RTSP流程:包括OPTIONS、DESCRIBE、SETUP、PLAY、RTP收流,这种方式去取流,然后取到流之后进行流解…...
HTML飞舞的爱心
目录 系列文章 写在前面 完整代码 代码分析 写在后面 系列文章 序号目录1HTML满屏跳动的爱心(可写字)2HTML五彩缤纷的爱心3HTML满屏漂浮爱心4HTML情人节快乐5HTML蓝色爱心射线6HTML跳动的爱心(简易版)7HTML粒子爱心8HTML蓝色…...
银行卡 OCR 识别 API 接口的发展前景
随着智能手机的广泛普及以及互联网的迅猛发展,“互联网 ” 时代的移动支付已然开启了智慧生活的崭新蓝图。移动支付要求进行实名认证并绑定银行卡,然而传统的手工输入银行卡号不但速度缓慢、容易出错,还极大地降低了用户体验。银行卡 OCR 识别…...
python tkinter 控件实现鼠标悬停提示,提示文本动态展示
展示效果 全部代码和使用示例 # _*_ coding:utf-8 _*_ import tkinter as tk import pyautoguiscreen_width, screen_height pyautogui.size()class WidgetTip:"""鼠标悬停提示"""def __init__(self, widget, text):self.widget widgetself.…...
【spark-spring boot】学习笔记
目录 说明RDD学习RDD介绍RDD案例基于集合创建RDDRDD存入外部文件中 转换算子 操作map 操作说明案例 flatMap操作说明案例 filter 操作说明案例 groupBy 操作说明案例 distinct 操作说明案例 sortBy 操作说明案例 mapToPair 操作说明案例 mapValues操作说明案例 groupByKey操作说…...
Delphi ADO组件中的 ADOTable、ADOQurey 无SQL语句实现增、删、改、查
准备: 数据库是Acess数据库 1.放一个 Adoconnection1到 表单上,设置好数据连接字符串 并 设置 connected 属性 为 true 2 设置 adoquery1的connection 属性为 adoconnection1 3 设置 adoquery1的 sql 属性为 select * from 表名 4 设置 adoquery1的 active true …...
力扣整理版九:贪心算法
局部最优 全局最优 局部最优可以推出全局最优 并且想不出反例 ----------------------------- (1) 455 分发饼干 (2) 1005 k次取反后最大化的数组和 (3) 860 柠檬水找零 (4) 376 摆动序列 (5) 738 单调递增的数字 (6) 122 买卖股票的最佳时机2 (7) 135 分发糖果 (8…...
ffmpeg 视频滤镜:高斯模糊-gblur
滤镜描述 gblur 官网地址 > FFmpeg Filters Documentation 这个滤镜会将视频变得模糊。 滤镜使用 参数 gblur AVOptions:sigma <float> ..FV.....T. set sigma (from 0 to 1024) (default 0.5)steps <int> ..FV.....T…...
利用D3.js实现数据可视化的简单示例
目录 一、D3.js选择器 二、数据绑定相关方法 三、DOM操作方法 四、事件监听 五、实现折线图案例 1.首先引入 D3.js 库。 2.然后获取数据(这里定义了销售数据数组作为数据)。 3.接着创建一个 svg 元素作为画布 4.定义 x 轴和 y 轴的比例尺&#…...
Top 10 Tools to Level Up Your Prompt Engineering Skills
此文章文字是转载翻译,图片是自已用AI 重新生成的。文字内容来自 https://www.aifire.co/p/top-10-ai-prompt-engineering-tools 供记录学习使用。 Introduction to AI Prompt Engineering AI Prompt Engineering 简介 1,Prompt Engineering 提示工程…...
sed awk 第二版学习(十一)—— 交互式拼写检查器 spellcheck.awk
目录 1. 脚本代码 2. 执行情况 3. 代码详解 (1)BEGIN 过程 (2)主过程 (3)END 过程 (4)支持函数 4. 附加说明 这是一个基于 UNIX spell 程序的名为 spellcheck 的 awk 脚本&a…...
Android 应用测试的各种环境问题记录(Instrumentation测试)
报错记录 failed to configure packages targetSdkVersion(未解决) failed to configure com.demo.test.SettingsActivityTest.testOnCreate_withNullSavedInstanceState: Package targetSdkVersion34 > maxSdkVersion32 java.lang.IllegalArgumentE…...
python爬虫案例——猫眼电影数据抓取之字体解密,多套字体文件解密方法(20)
文章目录 1、任务目标2、网站分析3、代码编写1、任务目标 目标网站:猫眼电影(https://www.maoyan.com/films?showType=2) 要求:抓取该网站下,所有即将上映电影的预约人数,保证能够获取到实时更新的内容;如下: 2、网站分析 进入目标网站,打开开发者模式,经过分析,我…...
问题记录-Java后端
问题记录 目录 问题记录1.多数据源使用事务注意事项?2.mybatis执行MySQL的存储过程?3.springBoot加载不到nacos配置中心的配置问题4.服务器产生大量close_wait情况 1.多数据源使用事务注意事项? 问题:在springBoot项目中多表处理数…...
YB2503HV:高效率降压IC,助力电动车、太阳能设备等领域的能源转换
今天我要向大家介绍一款引人注目的产品—— YB2503HV 100V 3A SOP8内置MOS 高效率降压IC。这款单片集成芯片具备可设定输出电流的开关型降压恒压驱动器功能,可广泛应用于电动车、太阳能设备、电子电池充电等领域。让我们一起来看看它的特点和应用吧! 首先…...
Day47 | 动态规划 :线性DP 最长公共子序列最长公共子数组
Day47 | 动态规划 :线性DP 最长公共子序列&&最长公共子数组 动态规划应该如何学习?-CSDN博客 本次题解参考自灵神的做法,大家也多多支持灵神的题解 最长公共子序列 编辑距离_哔哩哔哩_bilibili 动态规划学习: 1.思考…...
【山大909算法题】2014-T1
文章目录 1.原题2.算法思想3.关键代码4.完整代码5.运行结果 1.原题 为带表头的单链表类Chain编写一个成员函数Reverse,该函数对链表进行逆序操作(将链表中的结点按与原序相反的顺序连接),要求逆序操作就地进行,不分配…...
《生成式 AI》课程 作业6 大语言模型(LLM)的训练微调 Fine Tuning -- part2
资料来自李宏毅老师《生成式 AI》课程,如有侵权请通知下线 Introduction to Generative AI 2024 Spring 来源背景说明 该文档主要介绍了国立台湾大学(NTU)2024 年春季 “生成式人工智能(GenAI)” 课程的作业 5&#…...
【机器学习】如何使用Python的Scikit-learn库实现机器学习模型,并对数据进行预处理和特征缩放以提高模型性能?
使用Python的Scikit-learn库可以方便地实现机器学习模型,并对数据进行预处理和特征缩放以提高模型性能。以下是一个典型的工作流程,包括数据加载、预处理、特征缩放、模型训练和评估: 1. 安装Scikit-learn 确保已安装Scikit-learn库&#x…...
【SpringCloud详细教程】-04-服务容错--Sentinel
精品专题: 01.《C语言从不挂科到高绩点》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12753294.html?spm1001.2014.3001.5482 02. 《SpringBoot详细教程》课程详细笔记 https://blog.csdn.net/yueyehuguang/category_12789841.html?spm1001.20…...
计算机学习
不要只盯着计算机语言学习,你现在已经学习了C语言和Java,暑假又规划学习Python,最后你掌握的就是计算机语言包而已。 2. 建议你找一门想要深挖的语言,沿着这个方向继续往后学习知识就行。计算机语言是学不完的,而未来就…...
CSS - CSS One-Line
1. aspect-ratio 描述: 用于定义元素的宽高比,简化了以往使用“填充黑客”的方法。只需指定一个比率,浏览器会自动调整元素的尺寸 案例: .aspect-ratio-hd {aspect-ratio: 16/9; } .aspect-ratio-square {aspect-ratio: 1; /* 正方形 */ }2. object-…...
【AIGC】如何准确引导ChatGPT,实现精细化GPTs指令生成
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | 提示词Prompt应用实例 文章目录 💯前言💯准确引导ChatGPT创建爆款小红书文案GPTs指令案例💯 高效开发GPTs应用的核心原则明确应用场景和目标受众构建多样化风格模板提问与引…...