/*
* All content copyright Terracotta, Inc., unless otherwise indicated. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
*/
package org.dromara.hodor.common.cron;
import java.io.Serializable;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.SortedSet;
import java.util.StringTokenizer;
import java.util.TimeZone;
import java.util.TreeSet;
/**
* Provides a parser and evaluator for unix-like cron expressions. Cron
* expressions provide the ability to specify complex time combinations such as
* "At 8:00am every Monday through Friday" or "At 1:30am every
* last Friday of the month".
* <P>
* Cron expressions are comprised of 6 required fields and one optional field
* separated by white space. The fields respectively are described as follows:
* <P>
* <table cellspacing="8">
* <tr>
* <th align="left">Field Name</th>
* <th align="left"> </th>
* <th align="left">Allowed Values</th>
* <th align="left"> </th>
* <th align="left">Allowed Special Characters</th>
* </tr>
* <tr>
* <td align="left"><code>Seconds</code></td>
* <td align="left"> </th>
* <td align="left"><code>0-59</code></td>
* <td align="left"> </th>
* <td align="left"><code>, - * /</code></td>
* </tr>
* <tr>
* <td align="left"><code>Minutes</code></td>
* <td align="left"> </th>
* <td align="left"><code>0-59</code></td>
* <td align="left"> </th>
* <td align="left"><code>, - * /</code></td>
* </tr>
* <tr>
* <td align="left"><code>Hours</code></td>
* <td align="left"> </th>
* <td align="left"><code>0-23</code></td>
* <td align="left"> </th>
* <td align="left"><code>, - * /</code></td>
* </tr>
* <tr>
* <td align="left"><code>Day-of-month</code></td>
* <td align="left"> </th>
* <td align="left"><code>1-31</code></td>
* <td align="left"> </th>
* <td align="left"><code>, - * ? / L W</code></td>
* </tr>
* <tr>
* <td align="left"><code>Month</code></td>
* <td align="left"> </th>
* <td align="left"><code>0-11 or JAN-DEC</code></td>
* <td align="left"> </th>
* <td align="left"><code>, - * /</code></td>
* </tr>
* <tr>
* <td align="left"><code>Day-of-Week</code></td>
* <td align="left"> </th>
* <td align="left"><code>1-7 or SUN-SAT</code></td>
* <td align="left"> </th>
* <td align="left"><code>, - * ? / L #</code></td>
* </tr>
* <tr>
* <td align="left"><code>Year (Optional)</code></td>
* <td align="left"> </th>
* <td align="left"><code>empty, 1970-2199</code></td>
* <td align="left"> </th>
* <td align="left"><code>, - * /</code></td>
* </tr>
* </table>
* <P>
* The '*' character is used to specify all values. For example, "*"
* in the minute field means "every minute".
* <P>
* The '?' character is allowed for the day-of-month and day-of-week fields. It
* is used to specify 'no specific value'. This is useful when you need to
* specify something in one of the two fields, but not the other.
* <P>
* The '-' character is used to specify ranges For example "10-12" in
* the hour field means "the hours 10, 11 and 12".
* <P>
* The ',' character is used to specify additional values. For example
* "MON,WED,FRI" in the day-of-week field means "the days Monday,
* Wednesday, and Friday".
* <P>
* The '/' character is used to specify increments. For example "0/15"
* in the seconds field means "the seconds 0, 15, 30, and 45". And
* "5/15" in the seconds field means "the seconds 5, 20, 35, and
* 50". Specifying '*' before the '/' is equivalent to specifying 0 is
* the value to start with. Essentially, for each field in the expression, there
* is a set of numbers that can be turned on or off. For seconds and minutes,
* the numbers range from 0 to 59. For hours 0 to 23, for days of the month 0 to
* 31, and for months 0 to 11 (JAN to DEC). The "/" character simply helps you turn
* on every "nth" value in the given set. Thus "7/6" in the
* month field only turns on month "7", it does NOT mean every 6th
* month, please note that subtlety.
* <P>
* The 'L' character is allowed for the day-of-month and day-of-week fields.
* This character is short-hand for "last", but it has different
* meaning in each of the two fields. For example, the value "L" in
* the day-of-month field means "the last day of the month" - day 31
* for January, day 28 for February on non-leap years. If used in the
* day-of-week field by itself, it simply means "7" or
* "SAT". But if used in the day-of-week field after another value, it
* means "the last xxx day of the month" - for example "6L"
* means "the last friday of the month". You can also specify an offset
* from the last day of the month, such as "L-3" which would mean the third-to-last
* day of the calendar month. <i>When using the 'L' option, it is important not to
* specify lists, or ranges of values, as you'll get confusing/unexpected results.</i>
* <P>
* The 'W' character is allowed for the day-of-month field. This character
* is used to specify the weekday (Monday-Friday) nearest the given day. As an
* example, if you were to specify "15W" as the value for the
* day-of-month field, the meaning is: "the nearest weekday to the 15th of
* the month". So if the 15th is a Saturday, the trigger will fire on
* Friday the 14th. If the 15th is a Sunday, the trigger will fire on Monday the
* 16th. If the 15th is a Tuesday, then it will fire on Tuesday the 15th.
* However if you specify "1W" as the value for day-of-month, and the
* 1st is a Saturday, the trigger will fire on Monday the 3rd, as it will not
* 'jump' over the boundary of a month's days. The 'W' character can only be
* specified when the day-of-month is a single day, not a range or list of days.
* <P>
* The 'L' and 'W' characters can also be combined for the day-of-month
* expression to yield 'LW', which translates to "last weekday of the
* month".
* <P>
* The '#' character is allowed for the day-of-week field. This character is
* used to specify "the nth" XXX day of the month. For example, the
* value of "6#3" in the day-of-week field means the third Friday of
* the month (day 6 = Friday and "#3" = the 3rd one in the month).
* Other examples: "2#1" = the first Monday of the month and
* "4#5" = the fifth Wednesday of the month. Note that if you specify
* "#5" and there is not 5 of the given day-of-week in the month, then
* no firing will occur that month. If the '#' character is used, there can
* only be one expression in the day-of-week field ("3#1,6#3" is
* not valid, since there are two expressions).
* <P>
* <!--The 'C' character is allowed for the day-of-month and day-of-week fields.
* This character is short-hand for "calendar". This means values are
* calculated against the associated calendar, if any. If no calendar is
* associated, then it is equivalent to having an all-inclusive calendar. A
* value of "5C" in the day-of-month field means "the first day included by the
* calendar on or after the 5th". A value
没有合适的资源?快使用搜索试试~ 我知道了~
Hodor是一个专注于任务调度以及任务编排的一站式分布式任务调度系统
共968个文件
java:730个
xml:75个
properties:38个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 44 浏览量
2023-11-08
15:39:17
上传
评论
收藏 1.49MB ZIP 举报
温馨提示
Hodor是一个专注于任务调度以及任务编排的一站式分布式任务调度系统。通过提供任务编程API和接口协议, 方便支持用户使用不同的编程语言实现任务执行以及自定义任务类型的扩展,以满足各种业务场景下的任务执行。支持多种接入方式,支持Java SDK包方式、Java Agent独立进程方式接入,以及兼容XXLJob框架、Spring Task框架任务无缝接入。多语言执行器实现,计划支持Go或者Rust语言执行器(正在设计与开发中)的接入,满足在资源有限的执行器节点执行,比如物联网场景下面的定时任务执行。支持丰富的任务类型,除了支持普通的Java、脚本任务的执行,也支持了大数据任务Hadoop、Spark、Flink、Kettle等主流任务的执行,满足用户的不同场景。
资源推荐
资源详情
资源评论
收起资源包目录
Hodor是一个专注于任务调度以及任务编排的一站式分布式任务调度系统 (968个子文件)
lombok.config 829B
iconfont.css 871B
.editorconfig 404B
spring.factories 123B
org.dromara.hodor.storage.api.FileStorage 153B
org.dromara.hodor.storage.api.FileStorage 55B
org.dromara.hodor.storage.api.FileStorage 52B
.gitignore 430B
.gitignore 302B
org.dromara.hodor.cache.api.HodorCacheSource 61B
org.dromara.hodor.cache.api.HodorCacheSource 53B
org.dromara.hodor.cache.api.HodorCacheSource 53B
org.dromara.hodor.common.storage.db.HodorDataSource 114B
org.dromara.hodor.scheduler.api.HodorScheduler 60B
index.html 356B
hodor_admin.http 2KB
hodor_actuator_resources.http 250B
hodor_scheduler_resources.http 170B
logo.ico 2KB
org.springframework.boot.autoconfigure.AutoConfiguration.imports 58B
CronExpression.java 60KB
CronExpression.java 59KB
HadoopSecurityManager_H_2_0.java 35KB
HadoopSparkJob.java 32KB
WatchGrpcLogAppender.java 30KB
Props.java 28KB
HadoopJobUtils.java 25KB
UnsafeUtil.java 24KB
UnsafeUtf8Util.java 22KB
HadoopSecureSparkWrapper.java 20KB
HadoopJavaJobRunnerMain.java 17KB
JobTypeManager.java 17KB
RSAUtils.java 16KB
Utils.java 16KB
ProcessJob.java 16KB
Constants.java 15KB
WatchGrpcService.java 15KB
PropsUtils.java 15KB
GrpcClientProtocolService.java 14KB
JobOperatorManager.java 14KB
JavaJobRunnerMain.java 13KB
StorageUnit.java 13KB
AbstractHadoopJob.java 13KB
ActuatorApi.java 12KB
GrpcWatchClientRpc.java 12KB
MapReduceJobExecutorManager.java 12KB
FileIOUtils.java 12KB
GsonUtils.java 11KB
FlowJobExecutorTest.java 11KB
ExtensionLoader.java 11KB
JobExecuteManager.java 11KB
HadoopSecureHiveWrapper.java 10KB
GrpcServerProtocolService.java 10KB
JobDispatcher.java 10KB
HadoopHiveJob.java 10KB
SchedulerResource.java 10KB
QuartzScheduler.java 9KB
MapReduceJob2State.java 9KB
HadoopJavaJob.java 9KB
MapReduceJobState.java 9KB
RemotingClient.java 9KB
DagServiceImpl.java 9KB
FlowJobExecutorManager.java 9KB
ExecutorProcess.java 9KB
RequestHandleManager.java 8KB
SampleXxlJob.java 8KB
JSONUtils.java 8KB
ZookeeperRegistryCenter.java 8KB
WatchManager.java 8KB
SparkOnYarn.java 8KB
HadoopConfigurationInjector.java 8KB
AsyncSparkJob.java 8KB
HodorKVRequestHandler.java 8KB
HodorKVStateMachine.java 8KB
KettleProcess.java 8KB
AgentJobRegister.java 8KB
HodorService.java 7KB
Dag.java 7KB
DagBuilder.java 7KB
ExecuteHiveQuery.java 7KB
JobOperatorServiceImpl.java 7KB
EmbeddedRegistryCenter.java 7KB
QuartzTrigger.java 7KB
RegistryService.java 7KB
AbstractProcessJob.java 7KB
SecurityUtils.java 7KB
StringUtils.java 7KB
DropAllPartitionsAddLatest.java 7KB
GrpcServerProtocolClient.java 7KB
HodorKVOperator.java 7KB
RocksDBTable.java 7KB
Node.java 7KB
JobInfoServiceImpl.java 7KB
XxlJobSpringExecutor.java 7KB
ActuatorNodeManager.java 7KB
RocksDBStore.java 6KB
FailureRequestHandleManager.java 6KB
HodorScheduledBeanPostProcessor.java 6KB
HodorKVException.java 6KB
BytesUtil.java 6KB
共 968 条
- 1
- 2
- 3
- 4
- 5
- 6
- 10
资源评论
- alifzl2023-12-17资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。
Java程序员-张凯
- 粉丝: 1w+
- 资源: 6651
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功