跳至主要內容
Steven's 个人博客

Steven's 个人博客

Stay hungry, stay foolish 🍎

示例项目
集成/测试的 Demo 代码
变更日志
站点特性变更记录
定时任务

java 定时任务创建/管理/调度/分布式/弹性

定时任务管理原理

小顶堆 —— 构建/增加/删除、时间/空间复杂度、作用

时间轮询算法 —— 分层时间轮(cron)

分层时间轮

  • 使用多个不同时间维度的轮
    • 天轮:记录几点执行
    • 月轮:记录几号执行
  • 月轮遍历到了,将任务取出放到天轮里,即可实现几号几点执行

API/框架

quartz


Steven小于 1 分钟javaschedule
Quartz 使用

Quartz 由 OpenSymphony 开源组织发起的项目,该项目 2009 年被 Terracotta 收购。 Quartz 完全由 Java 编写, 专注于 “任务调度库”(job scheduling) 功能搭建,可以用来管理上万个 jobs 复杂程序。


Steven大约 4 分钟javaschedule
Java 日志系列

常见日志框架:

  • log4j —— 1999 年,ceki 个人开发日志框架。后捐给 apache
  • jul java.util.logging —— 2002 年,Oracle 推的日志门面(facade)
  • jcl(Jakarta Commons Loggings,commons-logging.jar) —— 2003 年, apache 的日志门面
  • slf4j —— 2006 年,ceki 另起炉灶的日志门面
  • log4j2 —— 2012 年,apache 新推出的日志门面

Steven大约 1 分钟java
Slf4j + Log4j2 日志框架

Apache Log4j2 是对 Log4j 的升级版本,参考了 logback 的设计并修复了一些问题。主要提升有:

  • 异常处理 —— 在 logback 中,Appender 中的异常不会被应用感知到,在 log4j2 中提供了一些异常处理机制。
  • 性能提升 —— log4j2 比较 log4j 和 logback 都有很明显的性能提升。
  • 自动重载配置 —— 参考 logback 的设置,提供自动刷新参数配置的功能。(我们在生产上可以动态修改日志级别而不需要重启应用)

官网: https://logging.apache.org/log4j/2.x/


Steven大约 2 分钟java
JDK validation 功能

Java EE 规范中用接口定义了 Java Bean 的校验方式,即 Java Bean Validation

相关信息

常用的 Java EE 规范接口在 jdk 的 javax 包下,如:

  • javax.sql —— 数据库访问接口。实现厂商有 mysql/sqlserver/oracle/...
  • javax.servlet —— tomcat/jetty
  • java.xml —— jaxp(java api for xml processing)/jaxb
  • javax.persistence —— hibernate
  • javax.transaction —— 分布式实务
  • javax.jms —— activemq

Steven大约 3 分钟javajdk