SpringBoot 2 开发随笔
Spring Boot 配置
邮件发送失败问题
在本地开发环境测试,Spring Boot 能够正常发送邮件,但部署到阿里云 ECS 服务器以后,一直没有收到邮件,部分关键日志信息如下:
1 | org.springframework.mail.MailSendException: Mail server connection failed; nested exception is com.sun.mail.util.MailConnectException: Couldn't connect to host, port: smtp.163.com, 25; timeout -1; |
从现有情况看,跟程序运行环境有关,查看相关资料,发现在阿里云 ECS 服务器上,默认禁用了 25 端口,所以在通过 25 端口去连接邮件服务器时,无法连上,就报超时了。官方建议使用 465 端口,而 456 端口是 SSL 协议的,所以不仅要换端口,还需要进行 SSL 协议替换。下面是在 application.properties
进行的邮件发送相关配置,经过这样配置后,在阿里 ECS 上就能够正常发送邮件了
Java 之 BigDecimal 使用填坑
BigDecimal 的概述
Java 在 java.math
包中提供了 API 类 BigDecimal,用于对超过 16 位有效位的数进行精确的运算。双精度浮点型变量 double
可以处理 16 位有效数,但在实际应用中,可能需要对更大或者更小的数进行运算和处理。在一般情况下,对于那些不需要准确计算精度的数字,可以直接使用 Float 和 Double 处理,但是 Double.valueOf(String)
和 Float.valueOf(String)
会丢失精度。所以在开发中,如果需要高精度的计算结果,则必须使用 BigDecimal 类来操作数据。BigDecimal 所创建的是对象,因此不能使用传统的 +
、-
、×
、÷
等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法。方法中的参数也必须是 BigDecimal 的对象。构造器是类的特殊方法,专门用来创建对象,特别是带有参数的对象。