/*
* 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 com.autohome.frostmourne.monitor.schedule;
import java.io.Serializable;
import java.text.ParseException;
import java.util.*;
/**
* 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:
*
* <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 of "1C" in the day-of-week field means "the first day
* included by the calendar on or after Sunday".-->
* <P>
* The legal characters and the names of months and days of the week are not case sensitive.
*
* <p>
* <b>NOTES:</b>
* <ul>
* <li>Support for specifying both a day-of-week and a day-of-month
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本项目是基于Java的frostmourne监控、报警、分析系统设计源码,包含798个文件,其中主要包含410个java源代码文件,69个js脚本文件等。系统采用了Java、JavaScript、Vue、Shell和HTML技术,实现了一个基于Elasticsearch, Prometheus, SkyWalking, InfluxDB数据的监控、报警和分析系统。项目结构清晰,代码可读性强,易于理解和维护。
资源推荐
资源详情
资源评论
收起资源包目录
基于Java的frostmourne监控、报警、分析系统设计源码 (798个子文件)
mvnw.cmd 6KB
mvnw.cmd 6KB
.env.development 580B
Dockerfile 418B
.editorconfig 281B
env 286B
.eslintignore 34B
.gitignore 444B
.gitignore 332B
.gitignore 189B
index.html 623B
index.html 65B
favicon.ico 866B
CronExpression.java 58KB
AlarmAdminService.java 24KB
EsRestClientContainer.java 20KB
AlertService.java 19KB
Elasticsearch8ClientContainer.java 18KB
LocalDateTimeUtils.java 16KB
DataAdminService.java 15KB
AlarmDynamicMapper.java 14KB
JobScheduleHelper.java 13KB
MetricDynamicMapper.java 12KB
AbstractElasticClientContainer.java 12KB
AlertDynamicMapper.java 11KB
AlertUpgradeDynamicMapper.java 10KB
Alarm.java 10KB
DataNameDynamicMapper.java 10KB
UserInfoDynamicMapper.java 10KB
LayoutField.java 9KB
EmailHelper.java 9KB
AlertLogDynamicMapper.java 9KB
DataSourceDynamicMapper.java 9KB
AlarmLogDynamicMapper.java 9KB
AlertTemplateDynamicMapper.java 9KB
Metric.java 8KB
JacksonUtils.java 8KB
TeamInfoDynamicMapper.java 8KB
ServiceInfoDynamicMapper.java 8KB
DepartmentInfoDynamicMapper.java 8KB
RuleDynamicMapper.java 8KB
ConfigMapDynamicMapper.java 8KB
AlertEventDynamicMapper.java 8KB
RulePropertyDynamicMapper.java 8KB
Alert.java 7KB
Autolog4jCsvLayout.java 7KB
RecipientDynamicMapper.java 7KB
AlertTemplateService.java 7KB
UserRoleDynamicMapper.java 7KB
AlertUpgrade.java 6KB
UserInfoService.java 6KB
AbstractSameTimeMetric.java 6KB
BarnCommentGenerator.java 6KB
SkywalkingDataQuery.java 6KB
ExpressionParser.java 6KB
WechatSender.java 6KB
DataName.java 6KB
UserInfo.java 6KB
AlarmService.java 6KB
ShortLinkDynamicMapper.java 6KB
AlarmRepository.java 5KB
QueryService.java 5KB
AlertLog.java 5KB
AbstractRingMetric.java 5KB
AlarmLog.java 5KB
TimeParser.java 5KB
XxlJobInfo.java 5KB
AlertTemplate.java 5KB
AlarmDynamicSqlSupport.java 5KB
DataSource.java 5KB
PercentageRule.java 5KB
PrometheusDao.java 5KB
DataNameController.java 4KB
AlarmController.java 4KB
MysqlDataQuery.java 4KB
SqlServerDataQuery.java 4KB
DataQueryController.java 4KB
WechatRobotSender.java 4KB
DataSourceJdbcManager.java 4KB
AlarmLogRepository.java 4KB
HttpMetric.java 4KB
AlarmContract.java 4KB
TimeScanner.java 4KB
SkywalkingDao.java 4KB
TeamInfo.java 4KB
AbstractRule.java 4KB
ServiceInfo.java 4KB
AlertLogRepository.java 4KB
AlertTemplateRepository.java 4KB
BeanConfig.java 4KB
Rule.java 4KB
DingRobotSender.java 4KB
ElasticsearchSourceManager.java 4KB
MetricDynamicSqlSupport.java 4KB
DepartmentInfo.java 4KB
AlertEvent.java 4KB
ConfigMap.java 4KB
AdminController.java 4KB
RuleProperty.java 4KB
AESUtils.java 3KB
共 798 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
资源评论
沐知全栈开发
- 粉丝: 4771
- 资源: 3372
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功