SMTP和POP3协议
SMTP和POP3协议
SMTP(简单邮件传输协议)和POP3(邮局协议版本3)是电子邮件系统中用于发送和接收邮件的核心协议。以下是它们的详细说明:
1. SMTP(Simple Mail Transfer Protocol)
SMTP和POP3分别负责电子邮件的发送和接收,两者协同实现完整的邮件传输流程。SMTP注重邮件的路由与传递,而POP3侧重离线访问,适合单设备用户。在安全性要求高的场景中,应优先使用加密端口(如587、995)或协议升级(如STARTTLS)。
-
功能:专用于发送电子邮件,将邮件从客户端传输到服务器,或在邮件服务器之间中继。
-
协议层:应用层协议,基于TCP,确保可靠传输。
-
端口号:
- 25:默认端口,用于服务器间通信(可能无加密)。
- 587:提交端口,用于客户端到服务器的邮件提交,通常配合STARTTLS加密。
- 465:SMTPS端口,使用SSL/TLS加密(现较少用,多被587取代)。
-
工作原理:
- 客户端通过TCP连接到SMTP服务器的端口。
- 握手后发送命令(如
EHLO
、MAIL FROM
、RCPT TO
、DATA
)。 - 服务器响应状态码(如
250 OK
表示成功)。 - 传输完成后发送
QUIT
终止连接。
-
安全性:
- STARTTLS:在25或587端口上通过命令升级到加密连接。
- SMTPS:直接使用SSL/TLS加密(端口465)。
-
命令示例:
EHLO example.com MAIL FROM:<sender@example.com> RCPT TO:<receiver@domain.com> DATA Subject: Hello This is the email body. . QUIT
2. POP3(Post Office Protocol Version 3)
-
功能:用于从服务器下载邮件到本地设备,通常下载后删除服务器上的邮件(可配置保留)。
-
协议层:应用层协议,基于TCP。
-
端口号:
- 110:默认端口(无加密)。
- 995:POP3S端口,使用SSL/TLS加密。
-
工作原理:
- 客户端连接到POP3服务器。
- 认证(
USER
和PASS
命令)。 - 列出邮件(
LIST
)、下载邮件(RETR
)、删除邮件(DELE
)。 - 结束会话(
QUIT
)。
-
特点:
- 离线访问:邮件下载到本地后,通常从服务器删除(除非设置“保留副本”)。
- 单设备适用:适合单一设备访问,多设备可能因邮件删除导致同步问题。
-
命令示例:
USER username PASS password LIST RETR 1 DELE 1 QUIT
3. SMTP vs POP3 对比
特性 | SMTP | POP3 |
---|---|---|
主要功能 | 发送邮件 | 接收邮件 |
通信方向 | 客户端→服务器 或 服务器→服务器 | 客户端←服务器 |
默认端口 | 25(服务器)、587(提交) | 110 |
加密端口 | 465(SSL)、587(STARTTLS) | 995(SSL) |
数据存储 | 不存储邮件,仅传输 | 下载后默认删除服务器邮件 |
多设备支持 | 无关(仅发送) | 不适合(邮件可能被删除) |
典型命令 | MAIL FROM , RCPT TO , DATA | USER , RETR , DELE |
4. 协同工作流程
- 发送邮件:用户通过SMTP将邮件发送到发件服务器。
- 服务器间传输:发件服务器使用SMTP将邮件传递至收件人的邮件服务器。
- 接收邮件:收件人通过POP3从服务器下载邮件到本地设备。
5. 补充说明
- IMAP替代POP3:现代更常用IMAP协议,支持多设备同步和服务器邮件管理。
- 安全性演进:早期协议未加密,现普遍使用SSL/TLS(如POP3S和SMTPS)或STARTTLS升级加密。
搭建 SMTP 服务
在Linux 系统上搭建 SMTP 服务的详细流程
1. 环境准备
- 系统:Ubuntu/CentOS(以 Ubuntu 22.04 为例)
- 权限:需
root
或sudo
权限 - 域名:需一个已解析的域名(如
mail.example.com
),并配置 DNS 的 MX 记录指向服务器 IP。
2. 安装 Postfix
# 更新软件包
sudo apt update# 安装 Postfix 和邮件工具包
sudo apt install postfix mailutils libsasl2-modules sasl2-bin
- 安装过程中会弹出配置向导:
- General type of mail configuration:选择 Internet Site。
- System mail name:输入你的域名(如
example.com
)。
3. 基础配置
编辑 Postfix 主配置文件 /etc/postfix/main.cf
:
sudo nano /etc/postfix/main.cf
关键配置项:
# 设置域名
myhostname = mail.example.com
mydomain = example.com
myorigin = $mydomain# 允许接收的邮件域(本服务器负责的域名)
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain# 网络绑定(允许来自所有 IPv4 和 IPv6 地址的连接)
inet_protocols = all
inet_interfaces = all# 限制邮件大小(示例设置为 20MB)
message_size_limit = 20480000# 启用 SMTP 认证(SASL)
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
broken_sasl_auth_clients = yes
smtpd_sasl_security_options = noanonymous# 限制中继(仅允许认证用户发送邮件)
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination# 启用 TLS 加密
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level = may
4. 配置 SASL 认证
Postfix 依赖 SASL 实现用户认证,需配置 saslauthd
:
# 编辑 SASL 配置
sudo nano /etc/postfix/sasl/smtpd.conf
添加以下内容:
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
启动 SASL 服务:
sudo systemctl enable saslauthd
sudo systemctl start saslauthd
创建本地用户(用于发信):
# 添加用户(示例用户:smtpuser)
sudo adduser smtpuser
# 设置密码
sudo passwd smtpuser
5. 配置 TLS 加密(可选但强烈推荐)
生成自签名证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \-keyout /etc/ssl/private/postfix.key \-out /etc/ssl/certs/postfix.crt
- 按提示填写证书信息(如域名
mail.example.com
)。
修改 Postfix 配置:
在 /etc/postfix/main.cf
中更新 TLS 路径:
smtpd_tls_cert_file = /etc/ssl/certs/postfix.crt
smtpd_tls_key_file = /etc/ssl/private/postfix.key
smtpd_tls_security_level = encrypt # 强制加密
6. 防火墙与端口开放
允许 SMTP 相关端口:
sudo ufw allow 25 # SMTP(服务器间通信)
sudo ufw allow 587 # SMTP Submission(客户端加密提交)
sudo ufw reload
7. 重启 Postfix 并检查状态
sudo systemctl restart postfix
sudo systemctl status postfix # 确保服务运行正常
8. 测试 SMTP 服务
使用 Telnet 手动测试:
telnet mail.example.com 25
输入命令(按顺序):
EHLO example.com
MAIL FROM: <smtpuser@example.com>
RCPT TO: <recipient@example.com>
DATA
Subject: Test Email
This is a test email.
.
QUIT
使用 swaks 工具测试:
# 安装 swaks
sudo apt install swaks# 发送测试邮件
swaks --to recipient@example.com \--from smtpuser@example.com \--server mail.example.com \--port 587 \--auth LOGIN \--auth-user smtpuser \--auth-password 'your_password' \-tls
9. 查看日志排查问题
# 实时查看 Postfix 日志
tail -f /var/log/mail.log
- 检查是否有
status=sent
或错误提示(如认证失败、连接拒绝)。
10. 高级配置(可选)
防止垃圾邮件:
- 配置 SPF、DKIM、DMARC DNS 记录。
- 安装
spamassassin
或rspamd
过滤垃圾邮件。
邮件队列管理:
postqueue -p # 查看队列
postsuper -d ALL # 清空队列
使用第三方中继(如 SendGrid):
在 /etc/postfix/main.cf
中添加:
relayhost = [smtp.sendgrid.net]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_tls_security_level = encrypt
注意事项
- 开放中继风险:确保
mynetworks
和smtpd_relay_restrictions
配置正确,避免服务器被滥用。 - IP 反向解析:确保服务器 IP 有 PTR 记录(反向 DNS),否则邮件可能被拒收。
- TLS 证书:自签名证书可能被邮件服务商标记为不安全,建议使用 Let’s Encrypt 免费证书。
- 投递成功率:自建 SMTP 服务器可能被标记为垃圾邮件,需监控投递率并优化配置。
SMTP 和 POP3 协议的常用命令详解
语法、用途、示例及典型响应:
一、SMTP(简单邮件传输协议)
SMTP 通过客户端与服务器的命令交互完成邮件传输,遵循 RFC 5321 规范。以下是核心命令:
1. 连接与握手
-
HELO / EHLO
-
用途:初始化会话,
EHLO
用于扩展 SMTP(支持加密和认证)。 -
语法:
HELO <domain> EHLO <domain>
-
示例:
EHLO client.example.com
-
响应:
250-server.example.com Hello client.example.com
(列出支持的扩展功能,如STARTTLS
、AUTH
)
-
2. 发件人与收件人
-
MAIL FROM
-
用途:指定发件人地址。
-
语法:
MAIL FROM:<sender@example.com>
-
响应:
250 2.1.0 Sender OK
-
-
RCPT TO
-
用途:指定收件人地址(可多次使用)。
-
语法:
RCPT TO:<recipient@example.com>
-
响应:
250 2.1.5 Recipient OK
-
3. 邮件内容传输
-
DATA
-
用途:开始传输邮件正文(以单独的行
.
结束)。 -
语法:
DATA
-
响应:
354 Enter message, end with "." on a line by itself
邮件正文示例:From: "Sender" <sender@example.com> To: "Recipient" <recipient@example.com> Subject: Test Email Date: Thu, 1 Jan 2024 12:00:00 +0000This is the email body. .
-
完成响应:
250 2.0.0 Message accepted for delivery
-
4. 加密与认证
-
STARTTLS
-
用途:将明文连接升级为 TLS 加密。
-
语法:
STARTTLS
-
响应:
220 2.0.0 Ready to start TLS
-
-
AUTH
-
用途:认证用户(支持
PLAIN
、LOGIN
、CRAM-MD5
等机制)。 -
语法(以
LOGIN
为例):AUTH LOGIN 334 VXNlcm5hbWU6 # 服务器返回 Base64 编码的 "Username:" dXNlcm5hbWU= # 客户端发送 Base64 用户名 334 UGFzc3dvcmQ6 # 服务器返回 Base64 编码的 "Password:" cGFzc3dvcmQ= # 客户端发送 Base64 密码
-
响应:
235 2.7.0 Authentication successful
-
5. 会话控制
- RSET
- 用途:重置当前会话(清空发件人、收件人和数据)。
- 响应:
250 2.0.0 Reset OK
- QUIT
- 用途:终止会话。
- 响应:
221 2.0.0 Bye
6. 其他命令
-
VRFY
-
用途:验证邮箱地址是否存在(通常被禁用)。
-
示例:
VRFY user@example.com
-
响应:
250 2.1.5 <user@example.com>
-
-
EXPN
-
用途:展开邮件列表(通常被禁用)。
-
示例:
EXPN staff-list
-
二、POP3(邮局协议版本3)
POP3 用于从服务器下载邮件到本地,遵循 RFC 1939 规范。命令不区分大小写,响应以 +OK
(成功)或 -ERR
(失败)开头。
1. 连接与认证
-
USER
-
用途:指定用户名。
-
语法:
USER username
-
响应:
+OK User accepted
-
-
PASS
-
用途:指定密码。
-
语法:
PASS password
-
响应:
+OK Password accepted
-
2. 邮件管理
-
STAT
- 用途:获取邮箱状态(邮件总数和总大小)。
- 响应:
+OK 5 1200
(5 封邮件,总大小 1200 字节)
-
LIST
-
用途:列出所有邮件及其大小。
-
语法:
LIST [n] # 可选参数,指定某封邮件
-
响应:
+OK 5 messages (1200 bytes) 1 300 2 200 ...
-
-
RETR
-
用途:下载指定邮件。
-
语法:
RETR 1 # 下载第 1 封邮件
-
响应:
+OK 300 octets From: sender@example.com To: recipient@example.com Subject: Hello ...
-
-
DELE
-
用途:标记邮件为删除(需执行
QUIT
后生效)。 -
语法:
DELE 1
-
响应:
+OK Message 1 marked for deletion
-
3. 会话控制
- QUIT
- 用途:结束会话并执行删除操作。
- 响应:
+OK POP3 server signing off
- RSET
- 用途:取消所有删除标记。
- 响应:
+OK All deletion marks removed
4. 扩展命令
-
TOP
-
用途:下载邮件的头部和指定行数的正文。
-
语法:
TOP 1 10 # 下载第 1 封邮件的头部和前 10 行正文
-
-
UIDL
-
用途:获取邮件的唯一标识符(用于多设备同步)。
-
语法:
UIDL [n] # 可选参数,指定某封邮件
-
响应:
+OK Unique-ID listing 1 abc123 2 def456 ...
-
三、典型错误响应
协议 | 错误示例 | 含义 |
---|---|---|
SMTP | 500 Syntax error | 命令语法错误 |
SMTP | 535 Authentication failed | 认证失败 |
POP3 | -ERR Invalid username | 用户名无效 |
POP3 | -ERR Message not found | 邮件不存在 |
四、实战示例
SMTP 手动发送邮件(使用 Telnet)
telnet smtp.example.com 25
EHLO client.example.com
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
Subject: Test
Hello, this is a test email.
.
QUIT
POP3 手动下载邮件
telnet pop3.example.com 110
USER username
PASS password
LIST
RETR 1
QUIT
五、注意事项
- 安全性:避免在明文连接中使用
PASS
命令,优先使用 POP3S(端口 995)和 SMTPS(端口 465/587)。 - 协议兼容性:部分命令(如
EHLO
、UIDL
)需服务器支持扩展功能。 - 邮件保留:POP3 默认下载后删除邮件,可通过
leave on server
选项保留副本。
相关文章:
SMTP和POP3协议
SMTP和POP3协议 SMTP(简单邮件传输协议)和POP3(邮局协议版本3)是电子邮件系统中用于发送和接收邮件的核心协议。以下是它们的详细说明: 1. SMTP(Simple Mail Transfer Protocol) SMTP和POP3分…...
【C语言】#define和typedef的区别
文章目录 1.define特点 2.typedef特点 1.define #define 是预处理器指令,用来进行宏定义。它在编译之前由预处理器处理,主要用于定义常量、简单的函数宏或者代码片段的替换。 特点 文本替换:#define 主要用于文本替换,在编译前…...
2025清华:DeepSeek从入门到精通.pdf(附下载)
本文是一份关于如何深入理解和使用DeepSeek技术的全面指南,由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的余梦珑博士后及其团队编撰。DeepSeek是一家中国科技公司,专注于通用人工智能(AGI)的研发,其开源推…...
Linux运维——用户管理
Linux用户管理 一、Linux用户管理要点二、常用命令2.1、groupadd2.2、groupdel2.3、groupmod2.4、groups2.5、useradd2.6、userdel2.7、passwd2.9、su2.10、sudo2.10.1、给普通用户授权 sudo2.10.2、 免密码授权 sudo 一、Linux用户管理要点 创建用户组 - 使用 groupadd删除用…...
Redis持久化的两种方式:RDB和AOF
redis中的数据存储在缓存中,如果没有持久化的策略,Redis一旦宕机,那么将会导致数据丢失;因此redis提供了以下两种持久化方式:RDB和AOF 一般来说,大部分公司对这两种方式都是同时开启的 一、RDB RDB策略全…...
百度高德地图坐标转换
百度地图和高德地图的侧重点不太一样。同样一个地名,在百度地图网站上搜索到的地点可能是商业网点,在高德地图网站上搜索到的地点可能是自然行政地点。 高德地图api 在高德地图中,搜索地名,如“乱石头川”,该地名会出…...
LIMO:上海交大的工作 “少即是多” LLM 推理
25年2月来自上海交大、SII 和 GAIR 的论文“LIMO: Less is More for Reasoning”。 一个挑战是在大语言模型(LLM)中的复杂推理。虽然传统观点认为复杂的推理任务需要大量的训练数据(通常超过 100,000 个示例),但本文展…...
Windows逆向工程入门之汇编环境搭建
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 Visual Studio逆向工程配置 基础环境搭建 Visual Studio 官方下载地址安装配置选项(后期可随时通过VS调整) 使用C的桌面开发 拓展可选选项 MASM汇编框架 配置MASM汇编项目 创建新项目 选择空…...
Git安全回退历史版本
Git安全回退历史版本 方法特点git revert保留所有中间提交历史,生成显式的反向提交,适合精确撤销特定提交。直接提交快速生成一个回退提交,无需处理多个撤销操作,适合简单回退到某个旧版本。 git revert 仅回退一个版本 git r…...
消费电子产品中的噪声对TPS54202的影响
本文章是笔者整理的备忘笔记。希望在帮助自己温习避免遗忘的同时,也能帮助其他需要参考的朋友。如有谬误,欢迎大家进行指正。 一、概述 在白色家电领域,降压转换器的应用非常广泛,为了实现不同的功能就需要不同的电源轨。TPS542…...
ASP.NET Core 外部向SignalR的Hub发消息
实现 Hub类中的方法只应该用于消息的发布,而不应该用来写业务逻辑,SignalR中客户端给服务器端传递消息的超时时间为30s,如果对Hub类中的方法的调用执行时间超过30s,程序就会报错。可以在MVC控制器、托管服务等外部向客户端推送消…...
Ubuntu 多版本 gcc 配置常用命令备忘
用的频率不高,总忘记具体参数 1,安装多版本 gcc 以 gcc-11 和12 为例: sudo apt-get install gcc-11 gcc-12 sudo apt-get install gcc-11 gcc-12 2,配置多版本 gcc gcc 与 g 一起配置进数据库中: sudo update-a…...
树形表查询方法
树形数据表在开发中会经常遇到,parentid字段为父结点ID,它是树型结构的标志字段。 查询方法: 1.自连接查询 如果树的层级固定可以使用表的自链接去查询,比如:我们只查询两级课程分类,可以用下边的SQL selectone.id …...
OpenStack-Train版-Allinone自动化部署脚本
一、环境准备 操作系统:CentOS 7 或以上版本 建议配置: CPU:8 核或以上 内存:16 GB 或以上 磁盘:500 GB 或以上 网络配置: 确保虚拟机已配置静态 IP 地址 确保虚拟机可以正常访问外部网络 二、自动…...
[笔记] 汇编杂记(持续更新)
文章目录 前言举例解释函数的序言函数的调用栈数据的传递 总结 前言 举例解释 // Type your code here, or load an example. int square(int num) {return num * num; }int sub(int num1, int num2) {return num1 - num2; }int add(int num1, int num2) {return num1 num2;…...
Hono.js入门指南_从零开始构建Web应用
1. 引言 项目背景与动机 随着现代Web开发的快速发展,构建高效、轻量且易于维护的Web应用变得越来越重要。Hono.js作为一个轻量级的Node.js框架,以其简洁的API和高效的性能吸引了众多开发者。本文将带你从零开始,逐步构建一个功能齐全的Web应用,帮助你快速上手Hono.js。 …...
后盾人JS -- 模块化开发
开发模块管理引擎 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </he…...
python-leetcode 23.回文链表
题目: 给定单链表的头节点head,判断该链表是否为回文链表,如果是,返回True,否则,返回False 输入:head[1,2,2,1] 输出:true 方法一:将值复制到数组中后用双指针法 有两种常用的列表实现&#…...
echarts 3d中国地图飞行线
一、3D中国地图 1. 一定要使用 echarts 5.0及以上的版本; 2. echarts 5.0没有内置中国地图了。点击下载 china.json; 3. 一共使用了四层地图。 (1)第一层是中国地图各省细边框和展示南海诸岛; (2)第二层是…...
Vivado IP之浮点数Floating-point
在Vivado的IP Catalog中搜索Floating-point即可找到该IP Operation Selection界面 1.绝对值,即result|A| 2.累加 3.两个浮点数的加法或者减法 4.两个浮点数进行比较 5.两个浮点数的除法 6.求指数,即e^A 7.定点数到浮点数的转化 8.浮点数转化为定…...
只需三步!5分钟本地部署deep seek——MAC环境
MAC本地部署deep seek 第一步:下载Ollama第二步:下载deepseek-r1模型第三步:安装谷歌浏览器插件 第一步:下载Ollama 打开此网址:https://ollama.com/,点击下载即可,如果网络比较慢可使用文末百度网盘链接 注:Ollama是…...
DeepSeek和ChatGPT的优劣或者区别(答案来DeepSeek和ChatGPT)
DeepSeek的答案 DeepSeek与ChatGPT作为当前两大主流AI模型,在架构设计、性能表现、应用场景等方面存在显著差异,以下从多个维度进行对比分析: 一、架构与训练效率 架构设计 DeepSeek:采用混合专家(MoE)框架…...
1 推荐系统概述
推荐系统概述 1 推荐系统的意义平台方信息生产者(物品)信息消费者(用户)推荐和搜索的区别 2 推荐系统架构系统架构算法架构 3 推荐系统技术栈算法画像层召回/粗排精排重排序 工程 1 推荐系统的意义 信息生产者(平台方…...
JavaEE架构
一.架构选型 1.VM架构 VM架构通常指的是虚拟机(Virtual Machine)的架构。虚拟机是一种软件实现的计算机系统,它模拟了物理计算机的功能,允许在单一物理硬件上运行多个操作系统实例。虚拟机架构主要包括以下几个关键组件ÿ…...
C++ labmbd表达式
文章目录 C++ Lambda 表达式详解1. Lambda 表达式的组成部分:2. Lambda 语法示例(1) 最简单的 Lambda(2) 带参数的 Lambda(3) 指定返回类型的 Lambda3. 捕获外部变量(1) 值捕获(复制)(2) 引用捕获(3) 捕获所有变量4. Lambda 在 STL 中的应用5. Lambda 作为 `std::function`6…...
当Axure遇见DeepSeek:设计工具的革命性进化
从传统的平面设计软件到如今的交互原型工具,设计工具经历了多次革命性的进化。然而,随着人工智能技术的不断发展,设计工具正面临又一次重大的变革。Axure,作为设计界知名的原型设计工具,以其强大的功能和灵活的操作性&…...
[LeetCode] day19 454. 四数相加 II
题目链接 题目描述 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 < i, j, k, l < n nums1[i] nums2[j] nums3[k] nums4[l] 0 示例 1: 输入&…...
FPGA开发技能(10)热电偶测温ADS1118方案
文章目录 1.热电偶原理2.ADS1118方案2.1ADS介绍2.2原理设计2.3实物连接图2.4测温原理 3.误差校准3.1查表法3.2冷端补偿法 4.SPI操作时序5.传送门 1.热电偶原理 两个不同材料的金属线一端在同一结点连接,另一端放在被测温点,则二者会产生一定的压差&…...
CNN-day5-经典神经网络LeNets5
经典神经网络-LeNets5 1998年Yann LeCun等提出的第一个用于手写数字识别问题并产生实际商业(邮政行业)价值的卷积神经网络 参考:论文笔记:Gradient-Based Learning Applied to Document Recognition-CSDN博客 1 网络模型结构 …...
【DeepSeek学Cuda】NVidia GPU指令集架构-Load和Cache
https://zhuanlan.zhihu.com/p/692445145 当warp内的线程访问同一个constant位置时,其是确定的latency的(和访问寄存器一样) latency 什么意思 当 warp 内的线程访问同一个 constant 位置时,其是确定的 latency 的(和…...
[免费]Springboot+Vue(带推荐算法)网上购物商城系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的SpringbootVue(带推荐算法)网上购物商城系统,分享下哈。 项目视频演示 【免费】SpringbootVue(带推荐算法)网上购物商城系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 根据需求分析文档确定的…...
车载测试工具 --- CANoe VH6501 进行Not Acknowledge (NAck) 测试
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
JVM调优参数分类
JVM调优参数分类 一、内存管理参数(堆/非堆) 1. 堆内存设置 参数格式功能说明典型场景值记忆口诀-Xms初始堆大小-Xms4gXms起始大小-Xmx最大堆大小-Xmx8gXmx最大上限-Xmn年轻代大小-Xmn2gXmn年轻代-XX:NewRatio老年代与年轻代比例-XX:NewRatio2比例老/新…...
高阶C语言|枚举与联合
💬 欢迎讨论:在阅读过程中有任何疑问,欢迎在评论区留言,我们一起交流学习! 👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏,并分享给更多对C语言感兴…...
通过魔搭社区本地下载大语言模型及API接口调用模型实现
一、背景 在之前的博文:CSDN中,我们已经详细介绍了如何安装Python环境和一些必要的库和访问Transformers库的大模型。然而,在实际操作过程中,我们发现模型的下载或者调用需要访问Hugging Face上的Transformers库,这是一个国外的网…...
2022java面试总结,1000道(集合+JVM+并发编程+Spring+Mybatis)的Java高频面试题
1、面试题模块汇总 面试题包括以下十九个模块: Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示…...
【CubeMX+STM32】SD卡 文件系统读写 FatFs+SDIO+DMA
本篇,将使用CubeMXKeil,创建一个SD卡的 FatFSSDIODMA 文件系统读写工程。 目录 一、简述 二、CubeMX 配置 FatFSSDIO DMA 三、Keil 编辑代码 四、实验效果 实现效果,如下图: 一、简述 上两篇,已循序渐进讲解了SD、…...
GenAI + 电商:从单张图片生成可动态模拟的3D服装
在当今数字化时代,电子商务和虚拟现实技术的结合正在改变人们的购物体验。特别是在服装行业,消费者越来越期待能够通过虚拟试衣来预览衣服的效果,而无需实际穿戴。Dress-1-to-3 技术框架正是为此而生,它利用生成式AI模型(GenAI)和物理模拟技术,将一张普通的穿衣照片转化…...
1.1 Spring Security 概述
Spring Security 概述 1. 什么是 Spring Security? Spring Security 是 Spring 生态中专注于应用安全的核心框架,为 Java 企业应用提供认证(Authentication)、授权(Authorization)以及安全攻击防护&#x…...
新站如何快速被搜索引擎收录?
本文转自:百万收录网 原文链接:https://www.baiwanshoulu.com/106.html 新站快速被搜索引擎收录是一个综合性的任务,涉及多个方面的优化工作。以下是一些关键步骤和策略,有助于新站快速被搜索引擎收录: 一、提交网站…...
<论文>DeepSeek-R1:通过强化学习激励大语言模型的推理能力(深度思考)
一、摘要 本文跟大家来一起阅读DeepSeek团队发表于2025年1月的一篇论文《DeepSeek-R1: Incentivizing Reasoning Capability in LLMs via Reinforcement Learning | Papers With Code》,新鲜的DeepSeek-R1推理模型,作者规模属实庞大。如果你正在使用Deep…...
DatePicker 实现:日期范围截止时间为23:59:59
文章目录 需求描述实现逻辑 需求描述 在使用 Element Plus 的 el-date-picker 组件进行日期范围选择时,如果你希望选择的日期范围截止时间为所选时间的23:59:59,你可以通过设置 type 属性为 daterange,并结合使用 value-format 属性来控制时间…...
登录功能login.html
文章目录 前言一、login.html二、getVerify()controllerlogin() 登录功能encodePwd(pwd,key)login.do验证是否异地登录找回账号verifySubmit() 前言 登录login.html,验证码获取verifycode,登陆函数login() 一、login.html <!DOCTYPE html> <h…...
将 AMD Zynq™ RFSoC 扩展到毫米波领域
目录 将 AMD Zynq™ RFSoC 扩展到毫米波领域Avnet XRF RFSoC 系统级模块适用于 MATLAB 的 Avnet RFSoC Explorer 工具箱5G mmWave PAAM 开发平台突破性的宽带毫米波波束成形特征:OTBF103 Mathworks Simulink 模型优化毫米波应用中的射频信号路径 用于宽带毫米波上/下…...
2.10..
#include "widget.h" #include "ui_widget.h" #include <QFontDialog> #include <QFont> #include <QMessageBox> #include <QColorDialog> #include <QColor> // #include <QFileDialog> //文件对话框…...
Struts2 命令执行漏洞 S2-045 复现:深入剖析与实战演练
前言 在当今网络安全形势日益严峻的大环境下,Web 应用框架的安全问题始终是信息安全领域关注的焦点。Struts2 作为一款广泛应用于 Java Web 开发的开源框架,其安全性直接关系到众多 Web 应用的稳定运行。今天,我们将深入探讨并实战复现 Stru…...
Spark 源码 | 脚本分析总结
前言 最初是想学习一下Spark提交流程的源码,比如 Spark On Yarn 、Standalone。之前只是通过网上总结的文章大概了解整体的提交流程,但是每个文章描述的又不太一样,弄不清楚到底哪个说的准确,比如Client 和 CLuster 模式的区别&a…...
2025.2.9 每日学习记录2:技术报告写了一半+一点点读后感
0.近期主任务线 1.完成小论文准备 目标是3月份完成实验点1的全部实验和论文。 2.准备教资笔试 打算留个十多天左右,一次性备考笔试的三个科目 1.实习申请技术准备:微调、Agent、RAG 1.今日完成任务 1.电子斗蛐蛐(文本书写领域&am…...
6、使用one-api管理统一管理大模型,并开始使用本地大模型
文章目录 本节内容介绍集中接入:将大模型统一管理起来当使用了大模型代理大模型代理示例 开源模型:如何使用Hugging Face上的模型modelscope使用 pipeline 调用模型用底层实现调用模型流式输出 如何在项目中使用开源模型使用 LangChain使用集中接入开始使…...
DFS+回溯+剪枝(深度优先搜索)——搜索算法
DFS也就是深度优先搜索,比如二叉树的前,中,后序遍历都属于DFS。其本质是递归,要学好DFS首先需要掌握递归。接下来咱们就一起来学习DFS涉及的算法。 一、递归 1.什么是递归? 递归可以这样理解把它拆分出来࿰…...