SpringBoot2.x系列教程70--SpringBoot中实现注册用户发送激活邮件功能
在上一章节中,我带大家学习了SpringBoot中如何发送各种类型的邮件,接下来我再带大家实现一下,在实际开发中的邮件发送功能。
需求分析:
很多网站注册时,都会给我们的注册邮箱发送一封激活邮件,里面是一串连接,点击链接激活之后才可以登录,今天咱们就实现这个功能。
一. 发送激活邮件实现步骤
1. 创建web项目
我们按照之前的经验,创建一个web程序,并将之改造成Spring Boot项目,具体过程略。
2. 添加依赖包
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><!--MySQL--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!--Druid数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.10</version></dependency><!--邮件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><!--thymeleaf--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>
3. 创建application.yml配置文件
把配置文件中关于数据库等的配置,全部改写成自己的配置信息。
spring:http:encoding:charset: UTF-8force: trueenabled: truedatasource:url: jdbc:mysql://localhost:3306/db6?characterEncoding=utf-8&useSSL=false&serverTimezone=UTCusername: rootpassword: sycdriverClassName: com.mysql.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSourcejpa:database: mysqlshow-sql: truehibernate:ddl-auto: updatenaming:physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpldatabase-platform: org.hibernate.dialect.MySQL5Dialect#页面模板配置 thymeleaf:prefix: classpath:/templates/suffix: .htmlmail:host: smtp.qq.comfrom: 2312119590@qq.comusername: 2312119590@qq.compassword: xxx(自己的授权码)protocol: smtpdefault-encoding: UTF-8
server:tomcat:uri-encoding: UTF-8
4. 封装User实体类
package com.yyg.boot.entity;import lombok.Data;import javax.persistence.*;
import java.io.Serializable;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
@Data
@Entity
@Table(name = "user")
public class User implements Serializable {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;private String username;private String password;@Column(name = "usermail")private String userMail;/*** 状态:0代表未激活,1代表激活*/private Integer status;/*** 用UUID生成一段数字,发送到用户邮箱,当用户点击链接时,再做一个校验,* 如果用户传来的code跟我们发送的code一致,则更改状态为“1”来激活用户.*/private String code;}
5. 配置数据源
package com.yyg.boot.config;import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
@Configuration
public class DataSourceConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")public DruidDataSource druidConfig(){return new DruidDataSource();}}
6. 创建JPA的仓库类
package com.yyg.boot.repository;import com.yyg.boot.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
@Repository
public interface UserRepository extends JpaRepository<User,Integer>,JpaSpecificationExecutor<User> {User findUserByCode(String code);User findByUsernameAndPassword(String username,String password);}
7. 创建生成UUID的工具类
package com.yyg.boot.utils;import java.util.UUID;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
public class UUIDUtil {public static String getUUID(){return UUID.randomUUID().toString().replace("-","");}}
8. 定义发送邮件的工具类
定义发送邮件工具类接口
package com.yyg.boot.mail;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description 封装一个发邮件的接口,方便后边直接调用.*/
public interface IMailService {/*** 发送文本邮件** @param to 收件人* @param subject 主题* @param content 内容*/void sendSimpleMail(String to, String subject, String content);/*** 发送HTML邮件** @param to 收件人* @param subject 主题* @param content 内容*/void sendHtmlMail(String to, String subject, String content);/*** 发送带附件的邮件** @param to 收件人* @param subject 主题* @param content 内容* @param filePath 附件*/void sendAttachmentsMail(String to, String subject, String content, String filePath);/*** 发送模板邮件* @param to 收件人* @param subject 主题* @param fileName 邮件模板文件名称* @param model 邮件数据载体*/void sendModelMail(String to, String subject, String fileName, Object model);}
实现发送邮件工具类
package com.yyg.boot.mail.impl;import com.yyg.boot.mail.IMailService;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.ui.freemarker.FreeMarkerTemplateUtils;import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import java.io.IOException;
import java.util.Objects;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
@Slf4j
@Service
public class IMailServiceImpl implements IMailService {/*** Spring Boot 提供了一个发送邮件的简单抽象,使用的是下面这个接口,这里直接注入即可使用*/@Autowiredprivate JavaMailSender mailSender;@Autowiredprivate Configuration configuration;/*** 配置文件中我的qq邮箱*/@Value("${spring.mail.from}")private String from;/*** 简单文本邮件** @param to 收件人* @param subject 主题* @param content 内容*/@Overridepublic void sendSimpleMail(String to, String subject, String content) {//创建SimpleMailMessage对象SimpleMailMessage message = new SimpleMailMessage();//邮件发送人message.setFrom(from);//邮件接收人message.setTo(to);//邮件主题message.setSubject(subject);//邮件内容message.setText(content);//发送邮件mailSender.send(message);}/*** html邮件** @param to 收件人* @param subject 主题* @param content 内容*/@Overridepublic void sendHtmlMail(String to, String subject, String content) {//获取MimeMessage对象MimeMessage message = mailSender.createMimeMessage();MimeMessageHelper messageHelper;try {messageHelper = new MimeMessageHelper(message, true);//邮件发送人messageHelper.setFrom(from);//邮件接收人messageHelper.setTo(to);//邮件主题message.setSubject(subject);//邮件内容,html格式messageHelper.setText(content, true);//发送mailSender.send(message);//日志信息log.info("邮件已经发送...");} catch (MessagingException e) {log.error("发送邮件时发生异常!", e);}}/*** 带附件的邮件* @param to 收件人* @param subject 主题* @param content 内容* @param filePath 附件*/@Overridepublic void sendAttachmentsMail(String to, String subject, String content, String filePath) {MimeMessage message = mailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(message, true);helper.setFrom(from);helper.setTo(to);helper.setSubject(subject);helper.setText(content, true);//FileSystemResource file = new FileSystemResource(new File(filePath));ClassPathResource resource = new ClassPathResource(filePath);FileSystemResource file = new FileSystemResource(resource.getFile());helper.addAttachment(Objects.requireNonNull(file.getFilename()), file);//可以同时添加多个附件,只需要在这里直接添加第2,第3...附件就行了.//helper.addAttachment(fileName2, file2);mailSender.send(message);//日志信息log.info("邮件已经发送...");} catch (MessagingException e) {log.error("发送邮件时发生异常!", e);} catch (IOException e) {e.printStackTrace();log.error("发送邮件时发生异常!", e);}}@Overridepublic void sendModelMail(String to, String subject, String fileName, Object model) {MimeMessage mimeMessage = mailSender.createMimeMessage();try {MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);helper.setFrom(from);helper.setTo(to);helper.setSubject(subject);Template template = configuration.getTemplate(fileName);String html = FreeMarkerTemplateUtils.processTemplateIntoString(template, model);helper.setText(html, true);mailSender.send(mimeMessage);//日志信息log.info("邮件已经发送...");} catch (MessagingException e) {log.error("发送邮件时发生异常!", e);} catch (TemplateException e) {e.printStackTrace();log.error("发送邮件时发生异常!", e);} catch (IOException e) {e.printStackTrace();}}}
9. 定义Service及其实现
定义UserService接口
package com.yyg.boot.service;import com.yyg.boot.entity.User;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
public interface UserService {/*** 用户注册,* @param user*/void register(User user);/*** 根据激活码code查询用户,之后再进行修改状态*/User checkCode(String code);/*** 激活账户,修改用户状态为“1”*/void updateUserStatus(User user);/*** 登录*/User login(User user);}
定义UserServiceImpl实现
package com.yyg.boot.service.impl;import com.yyg.boot.entity.User;
import com.yyg.boot.mail.IMailService;
import com.yyg.boot.repository.UserRepository;
import com.yyg.boot.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
@Service
@Slf4j
public class UserServiceImpl implements UserService {@Autowiredprivate UserRepository userDao;/*** 注入邮件接口*/@Autowiredprivate IMailService mailService;/*** 用户注册,同时发送一封激活邮件*/@Overridepublic void register(User user) {userDao.save(user);//获取激活码String code = user.getCode();log.warn("code:"+code);//主题String subject = "来自一一哥网站的激活邮件";//user/checkCode?code=code(激活码)是我们点击邮件链接之后根据激活码查询用户,如果存在说明一致,将用户状态修改为“1”激活//上面的激活码发送到用户注册邮箱//注意:此处的链接地址,是项目内部地址,如果我们没有正式的服务器地址,暂时无法从qq邮箱中跳转到我们自己项目的激活页面String context = "<a href=\"http://localhost:8080/user/checkCode?code="+code+"\">激活请点击:"+code+"</a>";//发送激活邮件mailService.sendHtmlMail (user.getUserMail(),subject,context);}/*** 根据激活码code进行查询用户,之后再进行修改状态*/@Overridepublic User checkCode(String code) {return userDao.findUserByCode(code);}/*** 激活账户,修改用户状态*/@Overridepublic void updateUserStatus(User user) {userDao.saveAndFlush(user);}/*** 登录*/@Overridepublic User login(User user) {User u = userDao.findByUsernameAndPassword(user.getUsername(),user.getPassword());if (u !=null){return u;}return null;}}
10. 定义跳转到首页面的接口
package com.yyg.boot.web;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
@Controller
public class IndexController {@RequestMapping(value = "/")public String index(){return "index";}}
11. 定义核心业务接口
package com.yyg.boot.web;import com.yyg.boot.entity.User;
import com.yyg.boot.service.UserService;
import com.yyg.boot.utils.UUIDUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
@Controller
@RequestMapping("/user")
public class UserController {@Autowiredprivate UserService userService;/*** 注册*/@PostMapping(value = "/registerUser")public String register(User user){user.setStatus(0);String code = UUIDUtil.getUUID();user.setCode(code);userService.register(user);return "success";}/*** 校验邮箱中的code激活账户* 首先根据激活码code查询用户,之后再把状态修改为"1"*/@GetMapping(value = "/checkCode")public String checkCode(String code){User user = userService.checkCode(code);//如果用户不等于null,把用户状态修改status=1if (user !=null){user.setStatus(1);//把code验证码清空,已经不需要了user.setCode("");userService.updateUserStatus(user);}return "login";}/*** 跳转到登录页面* @return login*/@GetMapping(value = "/loginPage")public String login(){return "login";}/*** 登录*/@RequestMapping(value = "/loginUser")public String login(User user){User u = userService.login(user);if (u !=null){return "welcome";}return "login";}}
12. 创建html页面
index.html页面
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head><meta charset="UTF-8"><title>注册</title>
</head>
<body>
<form action="/user/registerUser" method="post">用户名:<input type="text" id="username" name="username"/><br>密码:<input type="password" id="password" name="password"/><br>邮箱:<input type="email" id="usermail" name="userMail"><br><input type="submit" value="注册">
</form>
<a href="/user/loginPage">登录</a>
</body>
</html>
login.html页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>登录</title>
</head>
<body>
<form action="/user/loginUser" method="post">用户名:<input type="text" id="username" name="username"/><br>密码:<input type="password" id="password" name="password"/><br><input type="submit" value="登录">
</form>
</body>
</html>
success.html页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>注册成功</title>
</head>
<body>
前往邮箱激活账户
</body>
</html>
welcome.html页面
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>欢迎</title>
</head>
<body>
登录成功
</body>
</html>
13. 创建入口类
package com.yyg.boot;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @Author 一一哥Sun* @Date Created in 2020/4/20* @Description Description*/
@SpringBootApplication
public class CheckMailApplication {public static void main(String[] args){SpringApplication.run(CheckMailApplication.class,args);}}
14. 完整项目结构
15. 启动程序,进行测试
进入首页面
在首页面里面可以注册一个新用户
注册成功
可以看到数据库中有了一个新的用户。
并且邮箱中也收到了激活邮件。
注意:
因为我们的项目并没有上线,激活链接属于项目内部链接,而腾讯邮箱属于外包应用,所以暂时无法实现跳转。等后续项目上线,有了真正的服务器地址,可以把邮件链接改成自己的服务器地址,就可以实现跳转,然后修改自己数据库中用户的状态值了。
咱们的案例中仅做演示,逻辑是没问题的!
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 信息传播( information diffusion )
信息传播( information diffusion ) 一些知识 1 信息传播是一个涵盖了大量科学技术的领域。主要从社会学、流行病学、人种学领域,讨论社会媒体挖掘的方法,主要关注信息传播的建模技术。 2 社会通过各种渠道为人们提供信息交换方式。例如,人们通过即时通信系统与好友或是通过…...
2024/4/26 5:09:26 - 信息系统项目管理师论文范文:整体管理篇
[摘要] 医疗保险管理信息系统涉及到医保管理部门、各定点结算点(医院、药店)、开发商,加之政策多变、业务不成熟,需求变化频繁,开发的难度和风险较大。在某市医保管理信息系统开发过程中,我作为用户方的项目负责人参与了项目的整体管理工作,我在项目整体管理中采取了针对…...
2024/4/19 11:43:02 - 【案例】CRM客户管理系统的登录模型
一个简单的用户名密码登录,期间会发生什么尼? 登录模型核心流程如下:简单说明一下: 格式校验:如判断用户名/密码框是否为空,或格式是否符合要求。如果不符合要求直接提示或进行相关的处理,就不向服务器发请求了。 MD5加密:在真实项目中,密码等信息是一定要经过不可逆转…...
2024/4/16 20:15:09 - 腾讯T4资深架构师耗时半年整理:20年Java工程师成神之路
1、基础篇01:面向对象→ 什么是面向对象面向对象、面向过程面向对象的三大基本特征和五大基本原则→ 平台无关性Java 如何实现的平台无关JVM 还支持哪些语言(Kotlin、Groovy、JRuby、Jython、Scala)→ 值传递值传递、引用传递为什么说 Java 中只有值传递→ 封装、继承、多态…...
2024/4/15 3:40:05 - 穿梭车货架的应用介绍。
穿梭式货架系统是由仓储货架、穿梭车以及叉车组成完整的高密度存储系统。江苏金潞货架厂家简述下穿梭车货架是通过叉车可将货物放在穿梭式货架巷道导轨最前面的穿梭车上面,穿梭车放置在不同巷道,操作穿梭车承载托盘货物在导轨上轻松运行,这种高效率的存储方式为提高仓库空间…...
2024/4/15 3:40:04 - Hive内置函数
关系运算符名称 语法 描述= A=B 等值比较:如果表达式A与表达式B相等,则为TRUE;否则为FALSE<> A <> B 不等值比较:如果表达式A为NULL,或者表达式B为 NULL,返回NULL;如果表达式A与表达式B不相等,则 为TRUE;否则为FALSE< A < B 小于比较:如果表达式A为…...
2024/4/19 10:02:47 - java 项目java 项目web.xml文件详解文件详解
java 项目web.xml文件详解概述web.xml中所含的主要配置节:主要配置节间的加载顺序主要配置节内的加载顺序主要配置节详解ServletContextcontext-paramlistenerfilterservletweb.xml中所含的其他配置节session-configmime-mappingwelcom-file-listerror-page 概述当一个web项目…...
2024/4/19 22:21:03 - B2B科技公司:企业营销战略布局及落地实践方法
编辑:DM来源:整理自Focussend线上直播课《B2B企业营销自动化战略布局&落地实践》主讲人:MOMO编者按:本期课程焦点于B2B企业的营销自动化战略布局及可落地的方式方法。从理论层面到实践层面,全方位地帮助企业快速了解营销自动化及科学得选择适合自身的落地执行方法,希…...
2024/4/15 3:40:02 - 带货时代:共享网红成为现下带货方式较为新颖的模式
移动互联网技术和市场的不断升级,使得网络平台不断的优化和完善,改变了网红经济的发展途径。异彩纷呈的网络媒介平台为网红经济的发展提供的强大动力,如秒拍,抖音,快手,微博,B站等,他们颠覆了传统媒体只有媒体人才能发言的模式,赋予了网红更全方位展示自我特色或者技能的途径…...
2024/4/15 3:40:00 - CHROMIUM DOM 树构建
浏览器的整个过程,我借用李兵老师的一张简化的流程图如下,把浏览器的过程描述的很简单易懂。浏览器线程负责用户交互、文件储存等功能,网络线程面向渲染进程和浏览器进程等提供网络下载功能,渲染线程主要职责是把从网络下载的 HTML、JavaScript、CSS、图片等资源解析为可以…...
2024/4/19 23:25:40 - SSM整合配置文件 这是我学习时做的一个项目 当做笔记看吧
这是一个SSM练习项目的配置!! 如有不足 请补充1、配置web.xml<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xm…...
2024/4/15 3:39:59 - 程序员,养生吧!
由于写作的原因,我认识了蛮多天南海北的朋友。空下来的时候,我就会主动找他们聊一聊,一呢,从他们那吸取成功的经验,开拓一下眼界;二呢,让自己的社交圈扩大一些,要知道,多一个朋友就多一条路;三呢,看看朋友们有没有自己可以帮得上的忙;四呢,保持年轻的心态,不至于…...
2024/4/15 3:39:57 - SEO从业者应该何去何从?四个月没有工资的生活
2020年一场疫情肆虐,对我们的生活造成了许多影响,到底影响有多大,我简单分享一下我的遭遇。 1.首先公司方面 公司是做互联网餐饮加盟行业的,2020疫情一来,许多城市一级响应,老百姓都待在家里不出来,所有餐饮行业从业者嗷嚎遍地,纷纷破产。更别提新的加盟商入驻了。 2.S…...
2024/4/18 9:13:52 - UWB定位技术逐渐走进室内定位发展,UWB室内定位带给你无限可能--新导智能
看了iphone对UWB芯片的介绍,咱们到它让手机有了精准的“空间感知”能力,可感应到其他装备相同芯片的设备,完成隔空投送同享文件。但关于短间隔通讯和数据传输来说,蓝牙就可以完成,并且间隔要远的多哦,华为的超级蓝牙号称265米呢,要说谁的功能和体会好,现在不好说,究竟…...
2024/4/16 20:15:58 - 给你一个app你讲如何测试
安装卸载 安装卸载路径是否能自己选择,在不同操作系统下(Android、ios)安装是否正常,能正常运行,安装的文件及文件夹是否写入了指定的目录里,安装来自不同来源的(应用宝、360助手)下是否正常。 卸载是否删除所有相关的文件2.功能测试 运行、应用的前后台切换、免登录、…...
2024/4/15 3:39:52 - 一只火鸡带你了解大数据预测(经典)
转自:大虾卢:黑天鹅与大数据预测 黑天鹅与大数据预测 Esri 中国 卢萌纽约大学特聘教授纳西姆尼古拉斯塔勒布有一本代表性的著作《黑天鹅》,认为未来发生的事情是纯随机的,人类要是根据过去的经验去对未来的事情进行预测,那是完全不靠谱的,正如书名所表示的:在发现澳大利…...
2024/4/15 3:39:51 - vue-cli3 搭建项目
vue-cli3 搭建项目 npm使用国内淘宝镜像 1.临时使用: npm --registry https://registry.npm.taobao.org install express 2. 永久使用: npm config set registry https://registry.npm.taobao.org 3. 查看是否配置成功: npm config get registry,npm info express 4. 如果需要…...
2024/4/15 3:39:50 - SVM(二) latex手打公式 良心推导 原理分析 个人理解
文章目录简介SVM(二)软间隔核函数SMO优化SMO优化过程 往期博客 SVM(一) latex手打公式 良心推导 原理分析 个人理解 简介 这一篇主要是衔接上一个SVM(一),主要是软间隔、核函数和SMO的分享。建议没有读过第一篇的先看看第一篇blog。这一篇直接接着上一篇blog。 SVM(二) 软间隔…...
2024/4/15 3:39:55 - Spark之Stage的生成及任务的执行
每一个Spark应用都会创建一个sparksession,用来跟Spark集群交互,如果提交任务的模式为cluster模式,则Driver进程会被随机在某个worker结点上启动,然后真正执行用户提供的入口类,或是使用Spark内置的入口类,同时在Driver中会创建 clientmasterworkerdriverdirverexecutorR…...
2024/4/17 13:49:32 - Apache JMeter 5.3:WebApi压测的利器
文章目录介绍下载安装设置中文使用1、添加线程组2、对线程组添加HTTP请求3、添加HTTP信息头管理器4、添加各种监听器5、运行 介绍jmeter是apache公司基于java开发的一款开源压力测试工具[github地址],最新版本V5.3。jmeter可以做接口测试:包括http get/post请求、加cookie、加…...
2024/4/15 3:41:32
最新文章
- Python中的生成器是什么
生成器的工作原理 只要Python函数的主体中有yield关键字,该函数就是生成器函数。调用生成器函数,返回一个生成器对象。也就是说,生成器函数是生成器工厂。 下面以一个简单的函数说明生成器的行为: def gen123():yield 1yield 2yield 3print(gen123) # <function gen…...
2024/5/8 11:35:43 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 算法四十天-删除排序链表中的重复元素
删除排序链表中的重复元素 题目要求 解题思路 一次遍历 由于给定的链表是排好序的,因此重复的元素在链表中的出现的位置是连续的,因此我们只需要对链表进行一次遍历,就可以删除重复的元素。 具体地,我们从指针cur指向链表的头节…...
2024/5/5 12:23:05 - 在 Visual Studio Code (VSCode) 中隐藏以 . 开头的文件
打开VSCode。 按下Ctrl ,快捷键打开设置。您也可以点击屏幕左下角的齿轮图标,然后选择“Settings”。 在设置搜索框中,键入files.exclude。 在找到的Files: Exclude项中,点击Add Pattern按钮来添加一个新的模式,或者直接在搜索…...
2024/5/5 2:03:53 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/7 14:25:14 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57