学习笔记:使用SpringTask定时处理超时未支付订单-demo(笔记篇)

13 阅读2分钟

背景

上次完成demo中一些环节碰到了问题,加上自己对一些东西的好奇,于是当时就写下了笔记和理解。这一篇补上自己的笔记。

问题笔记

1、在MySQL中表的列字段为什么使用下划线分割的命名方式?

  • 可读性高
  • 避免大小写敏感问题(mysql语法是不区分大小写的)

也可以参考《阿里巴巴开发手册》 image.png

2、application.yml配置文件中数据库的基础配置?

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/my_blog_demo?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: #你的用户名
    password: #你的密码
    driver-class-name: com.mysql.cj.jdbc.Driver

说明:

url:数据连接地址,格式为jdbc:mysql://主机地址(数据库服务器的IP地址):端口(数据库服务器的端口)/数据库名?参数

参数含义
serverTimezone=Asia/Shanghai表示服务器时区配置,这里指定为上海的时区(如果不指定可能存在数据库与java程序时间不一致情况)
useUnicode=true表示启用Unicode支持(不添加可能出现中文乱码问题)
characterEncoding=utf-8表示指定客户端和数据库交互的字符编码(这里客户端是指我的Java程序)(如果不指定,可能存在存储值为中文的乱码问题)
useSSL=false关闭SSL加密

注意:要理解Unicode是一张码表,而utf-8是一种编码方式

driver-class-name:驱动类名,表示使用这个类来连接MySQL数据库

3、corn表达式的执行到底是怎么样的?

cron表达是“对齐系统时间刻度的”,可理解为在规定的周期时间内,每隔多久执行一次。而不是整个时间轴。来张图直观一下

Snipaste_2025-12-15_12-06-23.png (卧槽怎么是去年的图了)

说明:这里我设置每隔九秒执行一次,即使我在12:04:55开启服务器,它也只是在12:05:00分执行,中间间隔小于9秒,此后在一分钟内每隔9秒执行一次,到54秒时,判断距离60秒只有6秒钟,不足9秒,于是放在12:06:00执行。这就是cron表达式不是按现实时间轴执行,而是在规定的周期内执行的意思。

延伸:查询了解到fixedRatefixedDelay两个属性。这两个就是按照一整个的时间轴进行下去的。参考:理解Spring定时任务@Scheduled的两个属性fixedRate和fixedDelay-CSDN博客

最后

声明:本文仅作为学习记录分享使用,内容基于作者当前技术认知整理,如需要参考请自行决定价值度,若有不准确或描述不清之处,欢迎评论区指正,我会在能力范围内修正完善,谢谢阅读!🙏

参考理解Spring定时任务@Scheduled的两个属性fixedRate和fixedDelay-CSDN博客