quartz 2.2.3 自帶示例原始碼解讀example1~example5
Example1 第一個quartz示例
public class HelloJob implements Job { private static Logger _log = LoggerFactory.getLogger(HelloJob.class); public HelloJob() { } @Override public void execute(JobExecutionContext context) throws JobExecutionException { _log.info("Hello World! - " + new Date()); } } public class SimpleExample { public void run() throws Exception { Logger log = LoggerFactory.getLogger(SimpleExample.class); log.info("------- Initializing ----------------------"); SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); log.info("------- Initialization Complete -----------"); // 下一個整分鐘 Date runTime = DateBuilder.evenMinuteDate(new Date()); log.info("------- Scheduling Job -------------------"); JobDetail job = JobBuilder.newJob(HelloJob.class).withIdentity("job1", "group").build(); Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(runTime).build(); sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + runTime); sched.start(); log.info("------- Started Scheduler -----------------"); log.info("------- Waiting 65 seconds... -------------"); try { Thread.sleep(65L * 1000L); } catch (InterruptedException e) { e.printStackTrace(); } log.info("------- Shutting Down ---------------------"); sched.shutdown(true); log.info("------- Shutdown Complete -----------------"); } public static void main(String[] args) throws Exception { SimpleExample example = new SimpleExample(); example.run(); } }
Example2 簡單觸發器
public class SimpleJob implements Job { private static Logger _log = LoggerFactory.getLogger(SimpleJob.class); public SimpleJob() { } @Override public void execute(JobExecutionContext context) throws JobExecutionException { JobKey jobKey = context.getJobDetail().getKey(); _log.info("SimpleJob says: " + jobKey + " executing at " + new Date()); } } public class SimpleTriggerExample { public void run() throws Exception { Logger log = LoggerFactory.getLogger(SimpleTriggerExample.class); log.info("------- Initializing -------------------"); // 得到排程器例項的引用 SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); log.info("------- Initialization Complete --------"); log.info("------- Scheduling Jobs ----------------"); // jobs can be scheduled before sched.start() has been called // 任務開始時間的秒數是15的倍數 Date startTime = DateBuilder.nextGivenSecondDate(null, 15); // job1開始時間的秒數是15的倍數 JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build(); SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger() .withIdentity("trigger1", "group1").startAt(startTime).build(); // 排程任務 Date ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + ft + " and repeat: " + trigger.getRepeatCount() + " times, every " + trigger.getRepeatInterval() / 1000 + " seconds"); // job2開始時間的秒數是15的倍數 job = JobBuilder.newJob(SimpleJob.class).withIdentity("job2", "group1").build(); trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity( "trigger2", "group1").startAt(startTime).build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + ft + " and repeat: " + trigger.getRepeatCount() + " times, every " + trigger.getRepeatInterval() / 1000 + " seconds"); // job3開始時間的秒數是15的倍數(執行一次,重複10次,共11次,每次執行間隔為10s) job = JobBuilder.newJob(SimpleJob.class).withIdentity("job3", "group1").build(); trigger = TriggerBuilder.newTrigger() .withIdentity("trigger3", "group1").startAt(startTime) .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10).withRepeatCount(10)) .build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + ft + " and repeat: " + trigger.getRepeatCount() + " times, every " + trigger.getRepeatInterval() / 1000 + " seconds"); // 相同的job3開始時間的秒數是15的倍數(執行一次,重複2次,共3次,每次執行間隔為10s) trigger = TriggerBuilder.newTrigger() .withIdentity("trigger3", "group2").startAt(startTime) .withSchedule( SimpleScheduleBuilder.simpleSchedule() .withIntervalInSeconds(10).withRepeatCount(2)) .forJob(job).build(); ft = sched.scheduleJob(trigger); log.info(job.getKey() + " will [also] run at: " + ft + " and repeat: " + trigger.getRepeatCount() + " times, every " + trigger.getRepeatInterval() / 1000 + " seconds"); // job4開始時間的秒數是15的倍數(執行一次,重複5次,共6次,每次執行間隔為10s) job = JobBuilder.newJob(SimpleJob.class).withIdentity("job4", "group1").build(); trigger = TriggerBuilder.newTrigger().withIdentity("trigger4", "group1").startAt( startTime).withSchedule( SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(10).withRepeatCount(5)) .build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + ft + " and repeat: " + trigger.getRepeatCount() + " times, every " + trigger.getRepeatInterval() / 1000 + " seconds"); // job5會立即排程,執行時間在5分鐘後 job = JobBuilder.newJob(SimpleJob.class).withIdentity("job5", "group1").build(); trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("trigger5", "group1").startAt(DateBuilder.futureDate(5, IntervalUnit.MINUTE)).build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + ft + " and repeat: " + trigger.getRepeatCount() + " times, every " + trigger.getRepeatInterval() / 1000 + " seconds"); // job6開始時間的秒數是15的倍數,並且每40秒會重複執行一次,無限重複 job = JobBuilder.newJob(SimpleJob.class).withIdentity("job6", "group1").build(); trigger = TriggerBuilder.newTrigger().withIdentity("trigger6", "group1").startAt( startTime).withSchedule( SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(40).repeatForever()) .build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + ft + " and repeat: " + trigger.getRepeatCount() + " times, every " + trigger.getRepeatInterval() / 1000 + " seconds"); log.info("------- Starting Scheduler ----------------"); // 所有的任務已加入排程器,但排程器未開始之前所有的任務都不會執行 sched.start(); log.info("------- Started Scheduler -----------------"); // 排程器執行後任務仍然可以被排程 // job7開始時間的秒數是15的倍數,並且每5分鐘會重複執行一次,重複20次 job = JobBuilder.newJob(SimpleJob.class).withIdentity("job7", "group1").build(); trigger = TriggerBuilder.newTrigger().withIdentity("trigger7", "group1").startAt( startTime).withSchedule( SimpleScheduleBuilder.simpleSchedule().withIntervalInMinutes(5).withRepeatCount(20)) .build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " will run at: " + ft + " and repeat: " + trigger.getRepeatCount() + " times, every " + trigger.getRepeatInterval() / 1000 + " seconds"); // job8可以直接執行,而不使用觸發器 job = JobBuilder.newJob(SimpleJob.class).withIdentity("job8", "group1") .storeDurably().build(); sched.addJob(job, true); log.info("'Manually' triggering job8..."); sched.triggerJob(JobKey.jobKey("job8", "group1")); log.info("------- Waiting 30 seconds... --------------"); try { Thread.sleep(30L * 1000L); } catch (Exception e) { e.printStackTrace(); } // job7可以重複排程,開始時間的秒數是15的倍數,並且每5分鐘會重複執行一次,重複20次 log.info("------- Rescheduling... --------------------"); trigger = TriggerBuilder.newTrigger().withIdentity("trigger7", "group1").startAt( startTime).withSchedule( SimpleScheduleBuilder.simpleSchedule().withIntervalInMinutes(5).withRepeatCount(20)) .build(); ft = sched.rescheduleJob(trigger.getKey(), trigger); log.info("job7 rescheduled to run at: " + ft); log.info("------- Waiting five minutes... ------------"); try { // 等待5分鐘 Thread.sleep(300L * 1000L); } catch (Exception e) { e.printStackTrace(); } log.info("------- Shutting Down ---------------------"); sched.shutdown(true); log.info("------- Shutdown Complete -----------------"); // 顯示排程器的狀態 SchedulerMetaData metaData = sched.getMetaData(); log.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs."); } public static void main(String[] args) throws Exception { SimpleTriggerExample example = new SimpleTriggerExample(); example.run(); } }
Example 3 crontab格式的觸發器
public class SimpleJob implements Job { private static Logger _log = LoggerFactory.getLogger(SimpleJob.class); public SimpleJob() { } public void execute(JobExecutionContext context) throws JobExecutionException { // 列印job的名稱和執行時間 JobKey jobKey = context.getJobDetail().getKey(); _log.info("SimpleJob says: " + jobKey + " executing at " + new Date()); } } public class CronTriggerExample { public void run() throws Exception { Logger log = LoggerFactory.getLogger(CronTriggerExample.class); log.info("------- Initializing -------------------"); // 得到排程器的引用 SchedulerFactory sf = new StdSchedulerFactory(); Scheduler sched = sf.getScheduler(); log.info("------- Initialization Complete --------"); log.info("------- Scheduling Jobs ----------------"); // job可以在排程器執行前被排程 // job 1 每20秒執行1次 JobDetail job = newJob(SimpleJob.class).withIdentity("job1", "group1").build(); CronTrigger trigger = newTrigger().withIdentity("trigger1", "group1").withSchedule(cronSchedule("0/20 * * * * ?")) .build(); Date ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression()); // job 2 在偶數分鐘的第15秒執行 job = newJob(SimpleJob.class).withIdentity("job2", "group1").build(); trigger = newTrigger().withIdentity("trigger2", "group1").withSchedule(cronSchedule("15 0/2 * * * ?")).build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression()); // job 3 在8-17點的偶數分鐘執行 job = newJob(SimpleJob.class).withIdentity("job3", "group1").build(); trigger = newTrigger().withIdentity("trigger3", "group1").withSchedule(cronSchedule("0 0/2 8-17 * * ?")).build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression()); // job 4 在17-23點分鐘是3的倍數執行 job = newJob(SimpleJob.class).withIdentity("job4", "group1").build(); trigger = newTrigger().withIdentity("trigger4", "group1").withSchedule(cronSchedule("0 0/3 17-23 * * ?")).build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression()); // job 5 在每月1號或15號的10點執行 job = newJob(SimpleJob.class).withIdentity("job5", "group1").build(); trigger = newTrigger().withIdentity("trigger5", "group1").withSchedule(cronSchedule("0 0 10am 1,15 * ?")).build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression()); // job 6 週一至週五的每30秒執行一次 job = newJob(SimpleJob.class).withIdentity("job6", "group1").build(); trigger = newTrigger().withIdentity("trigger6", "group1").withSchedule(cronSchedule("0,30 * * ? * MON-FRI")) .build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression()); // job 7 在週六、週日的每30秒執行一次 job = newJob(SimpleJob.class).withIdentity("job7", "group1").build(); trigger = newTrigger().withIdentity("trigger7", "group1").withSchedule(cronSchedule("0,30 * * ? * SAT,SUN")) .build(); ft = sched.scheduleJob(job, trigger); log.info(job.getKey() + " has been scheduled to run at: " + ft + " and repeat based on expression: " + trigger.getCronExpression()); log.info("------- Starting Scheduler ----------------"); // 排程器執行前所有任務不會執行 sched.start(); log.info("------- Started Scheduler -----------------"); log.info("------- Waiting five minutes... ------------"); try { Thread.sleep(300L * 1000L); } catch (Exception e) { e.printStackTrace(); } log.info("------- Shutting Down ---------------------"); sched.shutdown(true); log.info("------- Shutdown Complete -----------------"); SchedulerMetaData metaData = sched.getMetaData(); log.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs."); } public static void main(String[] args) throws Exception { CronTriggerExample example = new CronTriggerExample(); example.run(); } }
Example4 向任務傳遞引數
// 接收引數和維護狀態的示例,注意這兩個註解
@PersistJobDataAfterExecution // 每次執行後會持久化JobData
@DisallowConcurrentExecution // 不允許併發執行
public class ColorJob implements Job {
private static Logger _log = LoggerFactory.getLogger(ColorJob.class);
// 靜態引數
public static final String FAVORITE_COLOR = "favorite color";
public static final String EXECUTION_COUNT = "count";
// 因為quartz每次執行任務時都會重新例項化一個類,所以非靜態成員變數不能用來維護狀態
private int _counter = 1;
public ColorJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
// 獲取jobkey類似group1.job1
JobKey jobKey = context.getJobDetail().getKey();
// 獲取並列印傳遞過來的引數
JobDataMap data = context.getJobDetail().getJobDataMap();
String favoriteColor = data.getString(FAVORITE_COLOR);
int count = data.getInt(EXECUTION_COUNT);
_log.info("ColorJob: " + jobKey + " executing at " + new Date() + "\n" +
" favorite color is " + favoriteColor + "\n" +
" execution count (from job map) is " + count + "\n" +
" execution count (from job member variable) is " + _counter);
// 增加count並儲存到job的map中,所以job狀態可以維護
count++;
data.put(EXECUTION_COUNT, count);
// 增加本地成員變數,通過成員變數不能維護job狀態
_counter++;
}
}
public class JobStateExample {
public void run() throws Exception {
Logger log = LoggerFactory.getLogger(JobStateExample.class);
log.info("------- Initializing -------------------");
// 得到排程器的引用
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
log.info("------- Initialization Complete --------");
log.info("------- Scheduling Jobs ----------------");
// 開始時間秒數是10的倍數
Date startTime = nextGivenSecondDate(null, 10);
// job1 會在秒數是10的倍數開始,重複4次,每10秒重複1次
JobDetail job1 = newJob(ColorJob.class).withIdentity("job1", "group1")
.build();
SimpleTrigger trigger1 = newTrigger()
.withIdentity("trigger1", "group1").startAt(startTime)
.withSchedule(
simpleSchedule().withIntervalInSeconds(10)
.withRepeatCount(4)).build();
// 向 job1 傳遞引數
job1.getJobDataMap().put(ColorJob.FAVORITE_COLOR, "Green");
job1.getJobDataMap().put(ColorJob.EXECUTION_COUNT, 1);
Date scheduleTime1 = sched.scheduleJob(job1, trigger1);
log.info(job1.getKey() + " will run at: " + scheduleTime1
+ " and repeat: " + trigger1.getRepeatCount()
+ " times, every " + trigger1.getRepeatInterval() / 1000
+ " seconds");
// job2 會在秒數是10的倍數開始,重複4次,每10秒重複1次
JobDetail job2 = newJob(ColorJob.class).withIdentity("job2", "group1")
.build();
SimpleTrigger trigger2 = newTrigger()
.withIdentity("trigger2", "group1").startAt(startTime)
.withSchedule(
simpleSchedule().withIntervalInSeconds(10)
.withRepeatCount(4)).build();
// 向 job2傳遞引數
job2.getJobDataMap().put(ColorJob.FAVORITE_COLOR, "Red");
job2.getJobDataMap().put(ColorJob.EXECUTION_COUNT, 1);
Date scheduleTime2 = sched.scheduleJob(job2, trigger2);
log.info(job2.getKey().toString() + " will run at: " + scheduleTime2
+ " and repeat: " + trigger2.getRepeatCount()
+ " times, every " + trigger2.getRepeatInterval() / 1000
+ " seconds");
log.info("------- Starting Scheduler ----------------");
// 所有的任務已加入排程器,但排程器未開始之前所有的任務都不會執行
sched.start();
log.info("------- Started Scheduler -----------------");
log.info("------- Waiting 60 seconds... -------------");
try {
Thread.sleep(60L * 1000L);
} catch (Exception e) {
//
}
log.info("------- Shutting Down ---------------------");
sched.shutdown(true);
log.info("------- Shutdown Complete -----------------");
SchedulerMetaData metaData = sched.getMetaData();
log.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
}
public static void main(String[] args) throws Exception {
JobStateExample example = new JobStateExample();
example.run();
}
}
Example5 錯失任務執行策略
/**
* 一個啞任務,用於單元測試
*/
@PersistJobDataAfterExecution
@DisallowConcurrentExecution
public class StatefulDumbJob implements Job {
// 常量
public static final String NUM_EXECUTIONS = "NumExecutions";
public static final String EXECUTION_DELAY = "ExecutionDelay";
public StatefulDumbJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException {
System.err.println("---" + context.getJobDetail().getKey()
+ " executing.[" + new Date() + "]");
// 取出job中的map中的資料,增加並重新放入job的map中
JobDataMap map = context.getJobDetail().getJobDataMap();
int executeCount = 0;
if (map.containsKey(NUM_EXECUTIONS)) {
executeCount = map.getInt(NUM_EXECUTIONS);
}
executeCount++;
map.put(NUM_EXECUTIONS, executeCount);
// 如果包含延遲欄位,則模擬任務延遲5秒
long delay = 5000l;
if (map.containsKey(EXECUTION_DELAY)) {
delay = map.getLong(EXECUTION_DELAY);
}
try {
Thread.sleep(delay);
} catch (Exception ignore) {
}
// 完成任務,列印完成語句
System.err.println(" -" + context.getJobDetail().getKey()
+ " complete (" + executeCount + ").");
}
}
public class MisfireExample {
public void run() throws Exception {
Logger log = LoggerFactory.getLogger(MisfireExample.class);
log.info("------- Initializing -------------------");
// 得到排程器的引用
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
log.info("------- Initialization Complete -----------");
log.info("------- Scheduling Jobs -----------");
// 開始時間秒數是15的倍數
Date startTime = nextGivenSecondDate(null, 15);
// 有狀態job1每3秒執行1次,但會延遲10秒(任務中睡眠了10秒模擬了執行任務需要10秒)
JobDetail job = newJob(StatefulDumbJob.class).withIdentity(
"statefulJob1", "group1").usingJobData(
StatefulDumbJob.EXECUTION_DELAY, 10000L).build();
SimpleTrigger trigger = newTrigger().withIdentity("trigger1", "group1")
.startAt(startTime).withSchedule(
simpleSchedule().withIntervalInSeconds(3)
.repeatForever()).build();
Date ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " will run at: " + ft + " and repeat: "
+ trigger.getRepeatCount() + " times, every "
+ trigger.getRepeatInterval() / 1000 + " seconds");
// 有狀態job2每3秒執行1次,但會延遲10秒(任務中睡眠了10秒模擬了執行任務需要10秒)
// job2設定了策略,所以錯失後會立即觸發,而不會等到下一個觸發點
job = newJob(StatefulDumbJob.class).withIdentity("statefulJob2",
"group1").usingJobData(StatefulDumbJob.EXECUTION_DELAY, 10000L)
.build();
trigger = newTrigger().withIdentity("trigger2", "group1").startAt(
startTime).withSchedule(
simpleSchedule().withIntervalInSeconds(3).repeatForever()
// 設定錯失觸發後的排程策略
.withMisfireHandlingInstructionNowWithExistingCount())
.build();
ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " will run at: " + ft + " and repeat: "
+ trigger.getRepeatCount() + " times, every "
+ trigger.getRepeatInterval() / 1000 + " seconds");
log.info("------- Starting Scheduler ----------------");
sched.start();
log.info("------- Started Scheduler -----------------");
try {
Thread.sleep(600L * 1000L);
} catch (Exception e) {
}
log.info("------- Shutting Down ---------------------");
sched.shutdown(true);
log.info("------- Shutdown Complete -----------------");
SchedulerMetaData metaData = sched.getMetaData();
log.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
}
public static void main(String[] args) throws Exception {
MisfireExample example = new MisfireExample();
example.run();
}
//本範例中,觸發的間隔被設定為3秒,但是由於任務體執行間睡眠10秒,導致了錯失觸發的產生。
//實際執行的效果,2個任務執行的間隔為10秒。
//由於丟失觸發時,job2的策略是立即觸發,而job1是等待下一次機會觸發。所以job2會趕在job1的前頭,最終執行次數大於job1。
}
相關推薦
quartz 2.2.3 自帶示例原始碼解讀example1~example5
Example1 第一個quartz示例 public class HelloJob implements Job { private static Logger _log = LoggerFactory.getLogger(HelloJob.class); p
Macbook Hbase(1.2.6) 偽分布式安裝,Hadoop(2.8.2) ,使用自帶zookeeper
may use oop cab cto 電腦 nds log4j clu 首先需要保證hadoop已經在電腦上安裝。然後接下來只需要下載hhase配置就行了。 Step1: 下載hbase http://archive.apache.org/dist/hbase/1.2.6
更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼原始碼
更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼原始碼java視訊教程2:微信小遊戲java視訊教程FlashFXP4_ikoznghong.zipjava視訊教程mime型別.txtjava視訊教程單獨包(1).rarjava視訊教程單獨
linux上CUnit 2.1.3安裝-使用-示例-安裝不上的解決方法
Ubuntu 16.04 安裝CUnit 一、CUnit-2.1-3,下載地址 https://sourceforge.net/projects/cunit/ 二、解壓 #tar jxvf CUnit-2.1-3.tar.bz2 三、安裝 進入CUnit-2.1-3目錄,
用opencv3.3自帶的traincascade.exe訓練LBP特征的分類器
不能 有效 格式 aar file jpg for rotation 方差 opencv3.3中有可以訓練分類器opencv_traincascade.exe,可以用HAAR、LBP和HOG特征訓練分類器。 這個函數都可以在opencv\build\x64\vc14\bin
VS2015+OpenCV2.4.13環境搭建詳細步驟及自帶示例編譯執行
前言 最近研究了一下opencv的kalman濾波演算法,想要執行裡面的示例,折騰了半天,在網上找了一些資料,終於搞定了,主要是配置vs的環境,這裡做個詳細的步驟總結。 軟體下載 首先,在opencv官網下載軟體。官網下載地址。 注意,4.0.0版本是近期才釋出的,是大
TI am335x sdk 自帶linux原始碼下編譯驅動出錯解決辦法
在使用beaglebone black的時候從TI官網下載了最新版的sdk: ti-processor-sdk-linux-am335x-evm-01.00.00.00-Linux-x86-Install.bin 在linux下安裝之後 kernel的預設路徑是 /opt/
hadoop 自帶示例wordcount 詳細執行步驟
因為機器學習,接觸到了資料探勘;因為資料探勘,接觸到了大資料;因為大資料,接觸到了Hadoop。之前有過hadoop的簡單瞭解,但都是基於別人提供的hadoop來學習和使用,雖然也很好用 ,終究不如自己的使用起來方便 。經過這兩天參考大量網上的經驗,終於成功的搭
Ubuntu16.04 上執行 Hadoop2.7.3 自帶example wordCount摸索記錄
首先最最重要的寫在最前面,也是我覺得個人踩得最深的坑,剛接觸hadoop的人,缺少的認識: hdfs的理解:它是一個檔案系統,跟linux的檔案系統是類似的結構,擁有類似的語法,大概就是你在linux上ls檢視檔案列表,那麼hdfs的無非就是hadoop fs -ls。ha
Unity自帶示例Demo專案Standard Assets Example Project研究詳解
關於Standard Assets Example Project 最近更新Unity3D,更新包推送了Standard Assets Example Project的更新,於是便下載下來研究
Qt自帶示例演示程式
使用的Qt版本:4.8.1 Qt提供了不少示例,便於使用者參考和學習。另外,Qt還提供了一個示例的演示程式。 演示程式目錄為:"qt安裝目錄/bin/qtdemo.exe" 開啟程式如下圖: 選擇某一示例程式,點選右下方“launch”,即可開啟示例程式。 作者開啟的S
使用kbmmw中的隨機數替換delphi 10.3 自帶的隨機數
中心 密碼 time 函數 del 算法 cati 集中 alt 我們在開發中經常會使用隨機數模擬各種隨機條件,例如生成唯一的密碼和令牌。 在計算機中,一般采用PRNG(偽隨機序列發生器)模擬真實隨機數。既然是隨機,就要要沒有任何規律, 在取值範圍內均勻、獨立。以確保盡
8.0 Notification的使用1. 普通的notification 2. 帶進度條的notification 3. 自定義的notification,點選事件進入軟體的一個activity
實現功能: 最終效果: activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.
jQuery 2.0.3 原始碼分析 Deferred(最細的實現剖析,帶圖)
Deferred的概念請看第一篇 ******************構建Deferred物件時候的流程圖************************** **********************原始碼解析********************** 因為callback被剝
ubuntu 14.04下安裝cmake 3.2.2(自帶版本2.8.2)
Either use a PPA or compile it yourself: Installation by a PPA (Upgrade to 3.2) sudo apt-get install software-properties-common sudo add-apt-repository p
python 自帶2to3.py 程式碼轉換2-->3
2to3.py #!/usr/bin/env python import sys from lib2to3.main import main sys.exit(main("lib2to3.fixes")) demo.py def greet(name): pr
將Ubuntu 10.04自帶2.6.32核心升級成3.0核心圖文教程
1、完成如下實踐工作,並截圖說明實踐步驟:1)下載安裝虛擬機器VMWare Workstation;2)在虛擬機器中安裝Linux2.x ;3)通過自行編譯,將Linux 2.x核心升級到Linux 3.x。 1) 安裝VMware Workstation 11.1
最新Spring-4.3.10和quartz-2.2.3整合示例
筆記 Spring 為簡化 Quartz 的操作提供了相關支援類Quartz Scheduler 。方便我們進行任務排程的開發。網上版本大都一大抄,而且時間久遠,無奈去看官方文件,還好Google翻譯很給力,鑽研了一下午,搞定~配置了兩個定時任務,一個是直接呼
zabbix-3.2.6之自定制監控項參數 監控http 80端口是否正常
wid 正常 3.2 添加 1-1 items lan ati agen 1、自定義映射值 配置--->主機--->監控項 創建監控項----展示映像值 再輸入參數 點更新---拉到最下面,就可以看到新添加的參數。 2、item(監
Centos 6.9 自帶Python 2.6.6 切換為2.7.13(or later)
source 查看 find 命令 進入目錄 進入 安裝 2.6 usr local 目的: 系統默認運行python, 系統提示2.6.6,不滿足練習環境-->切到2.7.x步驟1: find 命令查找所有的python相關文件#find / name=‘pytho