不想 CRUD 干到老,就來看看這篇 OOM 排查的實戰(zhàn)案例!
點擊上方藍色“程序猿DD”,選擇“設(shè)為星標(biāo)”
回復(fù)“資源”獲取獨家整理的學(xué)習(xí)資料!

作者:三國夢回
來源:cnblogs.com/grey-wolf/p/9179113.html
二、程序大體邏輯
1、job接口定義:
/**
?* desc:
?* 造數(shù)據(jù)的job,可按表來劃分。一個表一個job
?* @author :
?* creat_date: 2018/6/11 0011
?* creat_time: 14:46
?**/
public?interface?DataProduceJob?{
/**
?????* job的初始化
?????* @param date
?????*/
void?jobInit(Date date);
/**
?????* 具體的job運行細(xì)節(jié)
?????*/
void?jobDetail(Integer recordNum);
}
@Component
public?class?TopicWebsiteJob?extends?BaseJob?implements?DataProduceJob?{
@Autowired
private?TopicWebsiteMapper topicWebsiteMapper;
private?Date date;
????Random random =?new?Random();
private?ListtopicWebsites;
/**
?????* 當(dāng)前job執(zhí)行時的時間,會作為創(chuàng)建時間寫入數(shù)據(jù)庫表
?????*
?????*?@param?date
?????*/
@Override
public?void?jobInit(Date date)?{
this.date = date;
????????topicWebsites = topicWebsiteMapper.selectAll();
????}
@Override
public?void?jobDetail()?{
for?(TopicWebsite website : topicWebsites) {
for?(int?i =?0; i 5; i++) {
????????????????TopicWebsite topicWebsite =?new?TopicWebsite();
????????????????topicWebsite.setWebsiteName(website.getWebsiteName());
????????????????topicWebsite.setIconUrl(website.getIconUrl());
????????????????topicWebsite.setHotValue((long) random.nextInt(6354147));
//設(shè)置時間
????????????????topicWebsite.setCreateTime(date);
????????????????topicWebsiteMapper.insert(topicWebsite);
????????????}
????????}
????}
}
2、job的歷史數(shù)據(jù)初始化器
package com..datavisual.quartz.init;
/**
?* desc:
?* 用于造初始化數(shù)據(jù)
?*?@author?:
?* creat_date: 2018/6/11 0011
?* creat_time: 14:29
?**/
public?interface?Initer?{
/**
?????* 具體的初始化邏輯,可參考
?????*?@return?成功或失敗
?????*/
Boolean init();
}
/**
?* desc:
?*
?*?@author:
?* creat_date: 2018/6/11 0011
?* creat_time: 14:28
?**/
@Component
public?class?TopicWebsiteIniter?implements?Initer?{
@Autowired
private?TopicWebsiteJob job;
@Override
public?Boolean?init()?{
????????DateTime now = DateTime.now();
//日期循環(huán),30天
for?(int?a = -29; a 1; a++) {
for?(int?b =?0; b 24; b++) {
int?minutes = (int) (Math.random() *?60);
????????????????Date date = com.ceiec.datavisual.quartz.DateUtils.getNeedTime(b, minutes,?0, a);
if?(a ==?0?&& date.after(now.toDate())) {
????????????????}?else?{
????????????????????job.jobInit(date);
????????????????????job.jobDetail(360);
????????????????}
????????????}
????????}
return?true;
????}
}
3、目前為止,運行正常?
4、加上定時觸發(fā)機制
@Component
public?class?TopicWebsiteScheduler?implements?DataProduceScheduler?{
private?static?final?Logger logger = LoggerFactory.getLogger(TopicWebsiteScheduler.class);
@Autowired
private?TopicWebsiteJob job;
??
@Override
@Scheduled(cron =?"0/10 * * * * ?}")
public?Boolean?schedule()?{
????????logger.info("start...");
????????job.jobInit(new?Date());
????????job.jobDetail(1);
return?true;
????}
}
5、問題出來了
三、總結(jié)
往期推薦
最后,推薦一個專注分享后端面試要點的公眾號「后端面試那些事兒」,置頂標(biāo)星。每日一篇常問的面試問題,秀的一批~掃描下方二維碼關(guān)注!
評論
圖片
表情
