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

Python实现邮件发送

一、创造灵感

这几天在指导学生做毕业设计,学生做的是跌倒检测。然后我突然想到,如果这个系统只是单纯地从视频流中检测到人的跌倒动作,其实并没有任何的用途和意义。于是,我又想到,如果跌倒的检测结果,能够通知到其他人,比如老人的儿子、女儿、或者邻居,那岂不是可以即时的发现?是的,于是我通过大语言模型,生成了Python实现邮件发送的代码。效果还可以,就是遇到了一个报错。但是最终通过对大模型的push,我的目的也达到了。

二、Python实现纯文本的邮件发送

如果只是通知,那么纯文本就足够了。实现的思路很简单,因为邮件是基于SMTP网络协议实现的,所以需要用到一个SMTP服务器,这个一般由邮件公司提供。然后就是还有提供一个用于发送邮件的账号,及其密码或者授权码。此外,接收方的邮箱账号我们也需要提供,不然发送给谁呢?最后就是写一份纯文本的字符串啦,当做是邮件的正文。

下面是实现的代码:

import smtplib
from email.mime.text import MIMEText
import base64# 设置邮件服务器信息
smtp_server = 'smtp.qq.com'         # QQ邮件服务器地址
smtp_port = 465                     # QQ邮件服务器端口
username = '10********@qq.com'      # 换成你的QQ邮箱账号
password = '**************'         # 换成你的QQ邮箱授权码,设置方式:https://mbd.baidu.com/newspage/data/dtlandingsuper?nid=dt_3758488124459701973# 设置邮件内容
sender = '10*********@qq.com'        # 换成你的QQ邮箱账号
receivers = ['*********@163.com']    # 换成收件人邮箱账号
subject = '测试Python发送邮件'        # 设置邮件主题
body = '世界,你好!'                 # 设置邮件正文(可以使用HTML格式设置邮件正文,这样更好看些)# 创建邮件
message = MIMEText(body, 'plain', 'utf-8')# 设置邮件header
nickname = "中文昵称"
encoded_nickname = base64.b64encode(nickname.encode('utf-8')).decode('utf-8')   # 带中文的header需转成base64格式
from_header = f"=?utf-8?B?{encoded_nickname}?= <{sender}>"
message['From'] = from_header
message['To'] = "收件人"
message['Subject'] = subjecttry:# 连接邮件服务器server = smtplib.SMTP_SSL(smtp_server, smtp_port)server.login(username, password)    # 登录邮件服务器# 发送邮件server.sendmail(sender, receivers, message.as_string())print("邮件发送成功!")
except smtplib.SMTPException as e:print("邮件发送失败:", e)
finally:# 关闭连接server.quit()

实现邮件的发送有两个值得注意的地方,一是邮箱密码,二是邮件的header。

(一)邮箱密码的获取

现在的邮箱账号一般不会直接使用密码进行登录,而是使用授权码,作为其登录方式。那么授权码怎么才可以获得呢?很简单,在网页上登录你的邮箱,就可以拿到一个。以QQ邮箱为例:

先是登录QQ邮箱:

然后点击设置,找到“账号”选项:

滑到下面的“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”:开启该服务。这样就可以获取一个邮箱的授权码啦。授权码的用途就是在第三方邮箱软件登录你的账号,这里的“第三方”也指你在Python里写的程序!

在上面的“继续获取授权码”就可以了。期间可能需要你扫描发送一个短信,验证你的个人信息、身份信息啥的。按步骤做就好了。

(二)邮件的header设置

QQ邮箱服务器要求邮件的header使用base64编码。这个时候就需要对邮件的header进行编码的转换(其实上面给出的代码已经做了相应的转换):

import base64nickname = "中文昵称"
# 带中文的header需转成base64格式
encoded_nickname = base64.b64encode(nickname.encode('utf-8')).decode('utf-8')   
from_header = f"=?utf-8?B?{encoded_nickname}?= <{sender}>"
message['From'] = from_header
message['To'] = "收件人"
message['Subject'] = subject

否则,就会报错,例如:

邮件发送失败: (550, b'The "From" header is missing or invalid. Please follow RFC5322, RFC2047, RFC822 standard protocol. https://service.mail.qq.com/detail/124/995 .')

这主要是由于QQ邮箱的反垃圾邮件设置造成:

根据这个提示,我将其抛给大语言模型,强行让它对邮件的header进行base64编码,终于把问题解决掉。

发送邮件的效果如下:

看得出来,正文是OK的,但header还是有点小问题。目的基本达到。

三、Python实现带附件的邮件发送

邮件的发送有时候还需要附上文件,比如,跌倒检测的时候,如果能够附上一个跌倒的图,那就更加有助于人类去判断模型的识别结果是否可信。

有了前面的纯文本邮件发送代码,实现一个带附件的邮件发送,就简单多了。此时我们需要在Python中import两个东西,即:

from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

没有这两个类,不能发送附件。

发送的时候添加附件(下面的'tom_and_jerry.jpg'是我放在项目路径下的一张图片,然后我用此作为邮件的附件)的方法如下:

# 添加附件
attachment_path = 'tom_and_jerry.jpg'   # 替换为你的附件文件路径
with open(attachment_path, 'rb') as attachment_file:attachment = MIMEApplication(attachment_file.read(), Name='tom_and_jerry.jpg')  # 替换为你的附件文件名attachment['Content-Disposition'] = f'attachment; filename="tom_and_jerry.jpg"' # 替换为你的附件文件名message.attach(attachment)

而邮件的对象也要变成:

message = MIMEMultipart()           # 创建一个 MIMEMultipart 消息对象

其它的地方跟Python实现纯文本邮件无异。完整的代码如下:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import base64# 设置邮件服务器信息
smtp_server = 'smtp.qq.com'         # QQ邮件服务器地址
smtp_port = 465                     # QQ邮件服务器端口
username = '**********@qq.com'      # 换成你的QQ邮箱账号
password = '****************'       # 换成你的QQ邮箱授权码,设置方式:https://mbd.baidu.com/newspage/data/dtlandingsuper?nid=dt_3758488124459701973# 设置邮件内容
sender = '***********@qq.com'       # 换成你的QQ邮箱账号
receivers = ['*********@163.com']   # 换成收件人邮箱账号
subject = '测试Python发送邮件'       # 设置邮件主题# 创建邮件
body = '世界,你好!'                 # 设置邮件正文(可以使用HTML格式设置邮件正文,这样更好看些)
message = MIMEMultipart()           # 创建一个 MIMEMultipart 消息对象
message.attach(MIMEText(body, 'html', 'utf-8'))# 添加附件
attachment_path = 'tom_and_jerry.jpg'   # 替换为你的附件文件路径
with open(attachment_path, 'rb') as attachment_file:attachment = MIMEApplication(attachment_file.read(), Name='tom_and_jerry.jpg')  # 替换为你的附件文件名attachment['Content-Disposition'] = f'attachment; filename="tom_and_jerry.jpg"' # 替换为你的附件文件名message.attach(attachment)# 设置邮件header
nickname = "中文昵称"
encoded_nickname = base64.b64encode(nickname.encode('utf-8')).decode('utf-8')   # 带中文的header需转成base64格式
from_header = f"=?utf-8?B?{encoded_nickname}?= <{sender}>"
message['From'] = from_header
message['To'] = "收件人"
message['Subject'] = subjecttry:# 连接邮件服务器server = smtplib.SMTP_SSL(smtp_server, smtp_port)server.login(username, password)    # 登录邮件服务器# 发送邮件server.sendmail(sender, receivers, message.as_string())print("邮件发送成功!")
except smtplib.SMTPException as e:print("邮件发送失败:", e)
finally:# 关闭连接server.quit()

邮件发送的效果如下图所示:

效果感觉还不错咧!

四、后记

好久都没有写CSDN博客了,自从22年ChatGPT出来以后,很多问题都直接去问大语言模型了,这也使得自己很多问题都通过大模型得到了解决。那么写博客还有意义吗?感觉很少。要不是官方把我的原力值冻结了,可能这篇博客也不会出现在CSDN上边。

其实也不是没有意义啦,记录一下自己的学习过程,代码的执行效果,还是不错的!虽然大模型解决了不少问题,但是多步推理能力还比较弱,也就是说,大模型在解决某个问题的深度上,还是有一定限制,如果博客记录的深度足够,那么还是有一点意义的。

本篇博客深度比大模型的直接回答,好一丢丢,但整体还是偏水。

无所谓啦,写着消磨一下时间也好。

相关文章:

Python实现邮件发送

一、创造灵感 这几天在指导学生做毕业设计&#xff0c;学生做的是跌倒检测。然后我突然想到&#xff0c;如果这个系统只是单纯地从视频流中检测到人的跌倒动作&#xff0c;其实并没有任何的用途和意义。于是&#xff0c;我又想到&#xff0c;如果跌倒的检测结果&#xff0c;能…...

OSPF的优化

OSPF的优化 1、汇总 --- 减少骨干区域LSA的更新量 汇总 --- 区域汇总 域间路由汇总 --- 在ABR设备上&#xff0c;针对3类LSA进行汇总 [r1-ospf-1-area-0.0.0.2]abr-summary 192.168.0.0 255.255.252.0 注&#xff1a;在进行域间路由汇总时&#xff0c;必须是ABR设备自己通过拓…...

IP-guard离线卸载客户端及清除策略说明

1、控制台生成客户端工具 控制台选择“工具-客户端工具-客户端离线辅助工具”&#xff0c;可生成客户端离线卸载工具及 离线策略清除工具&#xff0c;打包生成exe后&#xff0c;可在离线的客户端上运行&#xff0c;实现离线情况下对客户端 进行卸载或者清除策略。 在控制台上“…...

腾讯秋招面试题:bug生命周期中有哪些状态?

在软件测试中,Bug生命周期是质量管控的核心脉络。不同企业的流程或有差异,但核心状态遵循行业通用规范。以下以腾讯TAPD缺陷管理模型为基础,结合互联网大厂主流实践,详解Bug生命周期的关键状态及流转逻辑。 一、基础状态图谱 图表 代码 下载 确认有效 非缺陷/需求不符…...

PyCharm 链接 Podman Desktop 的 podman-machine-default Linux 虚拟环境

#工作记录 PyCharm Community 连接到Podman Desktop 的 podman-machine-default Linux 虚拟环境详细步骤 1. 准备工作 确保我们已在 Windows 系统中正确安装并启动了 Podman Desktop。 我们将通过 Podman Desktop 提供的名为 podman-machine-default 的 Fedora Linux 41 WSL…...

学习海康VisionMaster之卡尺工具

一&#xff1a;进一步学习了 今天学习下VisionMaster中的卡尺工具&#xff1a;主要用于测量物体的宽度、边缘的特征的位置以及图像中边缘对的位置和间距 二&#xff1a;开始学习 1&#xff1a;什么是卡尺工具&#xff1f; 如果我需要检测芯片的每一个PIN的宽度和坐标&#xff…...

私有知识库 Coco AI 实战(二):摄入 MongoDB 数据

在之前的文章中&#xff0c;我们介绍过如何使用《 Logstash 迁移 MongoDB 数据到 Easyseach》&#xff0c;既然 Coco AI 后台数据存储也使用 Easysearch&#xff0c;我们能否直接把 MongoDB 的数据迁移到 Coco AI 的 Easysearch&#xff0c;使用 Coco AI 对数据进行检索呢&…...

【C/C++】插件机制:基于工厂函数的动态插件加载

本文介绍了如何通过 C 的 工厂函数、动态库&#xff08;.so 文件&#xff09;和 dlopen / dlsym 实现插件机制。这个机制允许程序在运行时动态加载和调用插件&#xff0c;而无需在编译时知道插件的具体类型。 一、 动态插件机制 在现代 C 中&#xff0c;插件机制广泛应用于需要…...

硬核科普丨2025年安全、高效网络准入控制系统深度解析

阳途网络准入控制系统&#xff08;Network Access Control&#xff0c;简称NAC&#xff09;是当代网络安全领域的重要工具&#xff0c;有效防止未经授权的访问和数据泄露&#xff0c;保障网络资源的安全性和完整性。本文将深入探讨阳途网络准入控制系统的的重要性和作用。 一、…...

2025知识管理趋势解析:AI、协作与用户体验引领变革

知识管理软件是多元化的商业工具&#xff0c;包括知识库系统、wiki、协作平台、文档管理工具、聊天机器人和帮助系统&#xff0c;针对企业信息爆炸式增长的趋势&#xff0c;这些工具正逐步成为提升知识工作者效率和客户服务水平的关键支撑。 知识成为新资产&#xff1a;知识工…...

杂谈-有感而发

今天又拜读了线性代数的几何意义这本书&#xff0c;感觉确实是很不错的&#xff0c;从几何角度讲解线性代数&#xff0c;而且将线性代数、几何、数学、物理有机结合起来了&#xff0c;不仅仅是可视化&#xff0c;重要的是能便于自己独立思考下去。   从大一开始&#xff0c;就…...

使用nodeJs的express+axios+cors做代理

使用nodeJs的expressaxioscors做代理 前端在请求后端时通常会遇到跨域cors问题&#xff0c;如果只在本地开发可以通过webpack或vite的proxy设置。但如果需要在线上或者其他地方绕过跨域&#xff0c;可以使用代理的方法。 1. 创建文件夹 并创建以下文件 package.json {"…...

SQL进阶知识:四、索引优化

今天介绍下关于索引优化的详细介绍&#xff0c;并结合MySQL数据库提供实际例子。 索引优化是数据库性能优化的关键环节之一&#xff0c;尤其是在处理大量数据时。索引可以加快查询速度&#xff0c;减少数据扫描范围&#xff0c;但不当的索引设计也可能导致性能问题。以下是关于…...

C++初阶-类和对象(下)

目录 1.再探构造函数 2.类型转换 3.友元 4.static成员 5.内部类 6.匿名对象 *7.对象拷贝时的编译器优化&#xff08;非必学&#xff09; 8.总结 1.再探构造函数 &#xff08;1&#xff09;之前我们实现构造函数时&#xff0c;初始化成员变量主要使用函数体内赋值&#…...

RPC通信原理实战

RPC概念及RPC请求响应流程 RPC概念引入 假设有两个模块&#xff0c;用户和订单 在单体项目中&#xff0c;两个模块被打包到一个包&#xff0c;都处在一个tomcat进程中&#xff0c;用户模块调用订单模块属于同一进程内的本地调用 在微服务项目中&#xff0c;用户模块和订单模…...

自动创建 中国古代故事人物一致性图画,看看扣子的空间是否能达到你的满意,自媒体的福音?

欢迎来到涛涛聊AI 看效果&#xff1a; AI绘画最难的人物一致性问题&#xff0c;每次得到的结果都不一致。 官方介绍&#xff1a; 扣子空间是你和 AI Agent 协同办公的最佳场所。 在扣子空间里&#xff0c;精通各项技能的「通用实习生」&#xff0c;各行各业的「领域专家」&…...

【Unity笔记】Unity音效管理:ScriptableObject配置 + 音量控制 + 编辑器预览播放自动化实现

摘要&#xff1a; 本文介绍了如何在 Unity 中构建一个高效的音效管理系统&#xff0c;通过 ScriptableObject 实现音效集中配置&#xff0c;支持为每个音效单独设置音量&#xff0c;并通过自定义 Editor 实现音效的可视化预览播放与下拉选择播放功能&#xff0c;整个系统无场景…...

面向高可靠场景的RISC-V低功耗MCU硬件安全设计

该RISC-V架构的低功耗MCU通过多项硬件级安全技术满足工业控制、汽车电子及物联网等领域对可靠性与安全性的需求。其核心特性包含六个方面&#xff1a; 在数据完整性验证与固件安全升级方面&#xff0c;该MCU通过硬件级校验机制&#xff08;如CRC、哈希算法&#xff09;确保固件…...

OpenVINO教程(五):实现YOLOv11+OpenVINO实时视频目标检测

目录 实现讲解效果展示完整代码 本文作为上篇博客的延续&#xff0c;在之前实现了图片推理的基础上&#xff0c;进一步介绍如何进行视频推理。 实现讲解 首先&#xff0c;我们需要对之前的 predict_and_show_image 函数进行拆分&#xff0c;将图像显示与推理器&#xff08;pre…...

【新能源科学与技术】MATALB/Simulink小白教程(一)实验文档【新能源电力转换与控制仿真】

DP读书&#xff1a;新能源科学与工程——专业课「新能源发电系统」 2025a 版本 MATLAB下面进入正题 仿真一&#xff1a;Buck 电路一、仿真目的二、仿真内容&#xff08;一&#xff09;Buck电路基本构成及工作原理&#xff08;二&#xff09;Buck电路仿真模型及元件连接&#xf…...

软件项目实施全流程及交付物清单

需求分析 -> 概要设计 -> 详细设计 -> 开发 -> 测试 -> 部署 -> 上线运行 一、确认项目目标、范围和团队成员 二、收集和分析客户需求&#xff0c;确定需求规格 三、制定详细的项目计划&#xff0c;包括时间表、资源计划、预算 四、系统架构设计&#xf…...

Docker安装ES :确保 Kibana 正确连接 Elasticsearch

在使用 Docker 部署 ELK&#xff08;Elasticsearch、Logstash、Kibana&#xff09;堆栈时&#xff0c;正确的服务配置和依赖管理至关重要。本文将分享如何优化 Docker Compose 配置&#xff0c;确保 Kibana 能稳定连接到 Elasticsearch&#xff0c;并提供故障排查建议 cd /opt/…...

云贝餐饮 最新 V3 独立连锁版 全开源 多端源码 VUE 可二开

云贝餐饮源码 最新 V3 独立连锁版 全开源 多端源码 VUE 可二开 vue uniapp 独家优化版本 后台管理 Vue 源文件 后台管理文件 yii2 升级包 &#xff08;全开源&#xff09; 收银台 Vue 源文件 装修 Vue 源文件 商家端 uni-app 源文件 用户端 uni-app 源文件 数据库文件 云贝餐饮…...

python异步协程async调用过程图解

1.背景&#xff1a; 项目中有用到协程&#xff0c;但是对于协程&#xff0c;线程&#xff0c;进程的区别还不是特别了解&#xff0c;所以用图示的方式画了出来&#xff0c;用于理清三者的概念。 2.概念理解&#xff1a; 2.1协程&#xff0c;线程&#xff0c;进程包含关系 一…...

【Java学习笔记】选择结构

选择结构 内容结构 一、顺序结构 二、分支控制 &#xff08;1&#xff09;单分支 &#xff08;2&#xff09;双分支 &#xff08;3&#xff09;多分支 &#xff08;4&#xff09;嵌套分支 &#xff08;5&#xff09;switch 分支结构 三、switch和if的比较 一、顺序结构…...

java Nacos

windows下载nacos&#xff0c;版本2.x的&#xff0c;1.0的话会出现“Server check fail, please check server 127.0.0.1 ,port 9848 is available , error {}” 这个鬼问题 下载链接 这里用的是2.0.4版本&#xff0c;启动的话用 startup.cmd -m standalone&#xff0c;单体启…...

c语言之杂识

前言 主要说一下c语言的杂知识 一、预处理指令 1. #include #include指令用于包含其他头文件的内容到当前文件中。这允许您在程序中使用其他模块定义的函数和变量。 示例&#xff1a; #include <stdio.h> // 包含标准输入输出头文件int main() {printf("Hello…...

CSS内边距、外边距、边框

CSS内边距 内边距 &#xff1a;内容区&#xff08;Content&#xff09;与边框&#xff08;Border&#xff09;之间的透明间距&#xff0c;用于增加元素内部的留白。不影响元素内容本身的尺寸&#xff08;如文字大小&#xff09;&#xff0c;但会增大元素的总占用空间。 以下是…...

融山科技前端面经

前端面试问题解答 这次是波珠的第三次面试&#xff0c;持续打怪升级&#xff0c;积累面试中面试官问到的不会的点子。 1.自我介绍 面试官您好&#xff0c;我是来自XX学校XX专业本科的XX名字&#xff0c;然后介绍在学校情况&#xff0c;我就介绍了大一自学前端&#xff0c;然…...

元素滚动和内容垂直居中同时存在,完美的 html 元素垂直居中的方法flex + margin: auto

假设有一个元素 div 作为父容器且宽高固定&#xff0c;里面的内容 content 在父容器中垂直/水平都居中&#xff0c;且当内容很多时&#xff0c;父元素滚动overflow: auto&#xff0c;content的内容要能够完全展示。 我之前在这篇文档提到了两个方法&#xff1a; 使用 flex s…...

STM32F103 单片机(基于 ARM Cortex-M3 内核)的启动过程涉及硬件初始化、固件配置和程序执行流程。

1. 启动模式与地址映射 STM32F103 的启动模式由 BOOT0 和 BOOT1 引脚配置决定&#xff0c;不同的启动模式对应不同的存储器映射&#xff1a; 启动模式 映射地址范围 说明 主 Flash 0x08000000~0x0807FFFF 用户程序存储在 Flash 中&#xff0c;复位后从 Flash 启动&#xff08…...

c++中iota容器和fill的区别

在C 中&#xff0c;std::iota 和 std::fill 都是标准库中的函数&#xff0c;用于对序列进行操作&#xff0c;它们的功能和用法如下&#xff1a; std::iota 功能&#xff1a;std::iota 函数用于将一个连续的递增序列赋值给指定范围的元素。它接受三个参数&#xff0c;第一个参…...

Kafka集群

kafka集群: kafka-server-start.sh;kafka-server-stop.sh cd/opt/software/kafka/ kafka.sh上传:cd /usr/local/bin/ 执行文件变成绿色&#xff1a;chmod 777 kafka.sh Kafka.sh start Xcall.sh jps...

多源数据集成技术分析与应用实践探索

摘要&#xff1a;本文聚焦多源数据集成技术&#xff0c;深入剖析联邦式、基于中间件模型及数据仓库三类主流技术的侧重点与应用场景。通过实际案例阐述多源数据集成应用构建过程&#xff0c;旨在为企业数据整合与共享提供理论指导与实践参考&#xff0c;助力企业提升数据利用效…...

UniOcc:自动驾驶占用预测和预报的统一基准

25年3月来自 UC Riverside、U Wisconsin 和 TAMU 的论文"UniOcc: A Unified Benchmark for Occupancy Forecasting and Prediction in Autonomous Driving"。 UniOcc 是一个全面统一的占用预测基准&#xff08;即基于历史信息预测未来占用&#xff09;和基于摄像头图…...

反向代理和DDNS的区别是什么?

反向代理&#xff08;Reverse Proxy&#xff09;和动态域名解析&#xff08;DDNS&#xff0c;Dynamic Domain Name System&#xff09;是两种不同的网络技术&#xff0c;虽然它们都与外部访问内部服务相关&#xff0c;但解决的问题和应用场景完全不同。具体区别如下&#xff1a…...

markdown展示数学公式

要让Markdown正确展示数学公式&#xff0c;你需要使用支持数学公式渲染的工具&#xff0c;比如在支持LaTeX语法的Markdown编辑器中进行编写。 Markdown本身并不原生支持数学公式的渲染&#xff0c;但许多Markdown解析器&#xff08;例如在GitHub、Jupyter Notebooks、或一些博…...

服务器编译环境配置及数据接收脚本编写(11)

文章目录 一、本章说明二、云端服务器Python编译环境配置三、传感数据解析脚本编写一、本章说明 注:本节为【基于STM的环境监测系统(节点+云服务器存储+QT界面设计)】项目第11篇文章,上面两篇介绍了云服务器数据库的安装与相关设置,本章主要介绍在服务器中安装Python编译…...

硬件基本概念

目录 基本概念 电压 电流 串联、并联 欧姆定律 电路仿真网址&#xff1a; 功率 焦耳定律 AC220V 转 DC5V 基本电子元器件了解 电阻&#xff1a;&#xff08;电阻器&#xff09; 电容 电感 继电器 二极管 三极管 晶振&#xff08;晶体振荡器&#xff09; 光耦…...

Spark与Hadoop之间的联系与区别

联系 生态系统互补&#xff1a; Hadoop 是一个分布式存储和计算平台&#xff0c;主要包括 HDFS&#xff08;分布式文件系统&#xff09;和 MapReduce&#xff08;分布式计算框架&#xff09;。Hadoop 提供了可靠的数据存储和分布式计算的基础。 Spark 是一个高性能的分布式计算…...

spark和Hadoop之间的对比与联系

对比 计算模型&#xff1a; Hadoop&#xff1a;采用MapReduce计算模型&#xff0c;分map与reduce两个阶段&#xff0c;数据处理按阶段顺序执行&#xff0c;数据处理按阶段顺序执行&#xff0c;中间结果会写入磁盘&#xff0c;I/O开销大。 Spark&#xff1a;基于弹性分布式数…...

0802api设计和实战-网络ajax请求1-react-仿低代码平台项目

文章目录 1 API设计1.1 用户功能1.1.1 获取用户信息1.1.2 注册1.1.3 登录 1.2 问卷功能1.2.1 获取单个问卷1.2.2 获取问卷列表1.2.3 创建问卷1.2.4 更新问卷1.2.5 批量彻底删除问卷1.2.6 复制问卷 1.3 小结 2 实战2.1配置axios2.2 封装API和测试2.3 新建问卷2.4 自定义hooks封装…...

什么是CAN的非破坏仲裁?

‌CAN总线的非破坏性仲裁‌是一种在多个设备同时发送数据时&#xff0c;通过标识符&#xff08;ID&#xff09;优先级来决定哪个设备可以优先发送数据的机制。其核心思想是&#xff1a;当多个设备同时发送数据时&#xff0c;ID值较小的数据具有更高的优先级&#xff0c;能够优先…...

无线监控系统分类全解析:搭配视频融合平台EasyCVR开启高效监控

随着技术的发展&#xff0c;无线监控系统在家庭、小型企业、特定行业以及室外恶劣环境中的应用越来越广泛。本文将介绍几种常见的无线监控系统&#xff0c;分析其优缺点&#xff0c;并结合EasyCVR视频融合平台的功能&#xff0c;探讨如何优化无线监控系统的性能和应用。 一、主…...

并行RANSAC平面拟合(C++)

依赖库 1&#xff09;Eigen 2&#xff09;GLM 算法大致思路 Step 1&#xff1a;源点云随机采样3个点&#xff1b; Step 2&#xff1a;3个点拟合平面&#xff0c;统计符合该平面模型的点&#xff0c;为inlier点&#xff1b; Step 3&#xff1a;判断inlier点比例是否达到阈…...

Docker核心技术精讲:从入门到企业级实战

&#xfeff;第一章>Docker概述 第二章>Docker安装与镜像下载加速 第三章>镜像 第四章>容器 第五章>发布镜像到阿里云或私有化仓库 第六章>容器卷 第七章>Docker安装常用软件 第八章>Docker高级版-Mysql主从复制、Redis主从、分布式存储 第九章>Doc…...

【KWDB 创作者计划】_深度学习篇---向量指令集

文章目录 前言一、加速原理数据级并行&#xff08;DLP&#xff09;计算密度提升减少指令开销内存带宽优化隐藏内存延迟 二、关键实现技术1. 手动向量化&#xff08;Intrinsics&#xff09;优势挑战 2. 编译器自动向量化限制 3. BLAS/LAPACK库优化4. 框架级优化 三、典型应用场景…...

音视频小白系统入门课-4

本系列笔记为博主学习李超老师课程的课堂笔记&#xff0c;仅供参阅 往期课程笔记传送门&#xff1a; 音视频小白系统入门笔记-0音视频小白系统入门笔记-1音视频小白系统入门笔记-2音视频小白系统入门笔记-3 将mp4文件转换为yuv文件 ffmpeg -i demo.mp4 # 输入文件-an …...

CS144 Lab3 实战记录:TCP 发送器实现

文章目录 1 实验背景与目标2 TCP发送器的实现2.1 整体流程2.2 核心组件2.3 窗口管理2.4 关键函数实现2.4.1 push函数2.4.2 receive函数2.4.3 tick函数 3 仓库地址 1 实验背景与目标 在 TCP 协议中&#xff0c;发送器&#xff08;TCP Sender&#xff09;是实现可靠传输的核心组…...

Transformer:引领深度学习新时代的架构

引言 在深度学习的快速发展历程中&#xff0c;Transformer 架构如同璀璨的新星&#xff0c;照亮了自然语言处理&#xff08;NLP&#xff09;以及计算机视觉&#xff08;CV&#xff09;等众多领域的前行道路。自 2017 年在论文《Attention Is All You Need》中被提出以来&#…...