Java定时任务调度工具Timer Quartz
-----------------------------------Timer
PS:Timer是 jdk中的;Quartz是第三方的
PS:也即是返回执行任务时候的时间
---------------------------------------------------一个综合的例子
import java.text.SimpleDateFormat;
import java.util.TimerTask; public class DancingRobot extends TimerTask{ @Override
public void run() {
// 获取最近一次任务执行的时间,将其格式化
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("最近执行任务的时间:"+sdf.format(scheduledExecutionTime()));//获取最近一次任务执行的时间,将其格式化
System.out.println("开心的跳舞");
} }
import java.util.Timer;
import java.util.TimerTask; public class WaterRobot extends TimerTask{
private Timer timer; public WaterRobot(Timer timer) {
this.timer = timer;
}
//最大容量为5L
private Integer bucketCapacity = 0;
@Override
public void run() {
// 灌水直到桶水满为止
if(bucketCapacity<5){
System.out.println("机器人加1L水");
bucketCapacity++;
}else{
System.out.println("返回取消的任务数 before:"+timer.purge());
cancel();//停止当前的机器人的执行
System.out.println("机器人停止加水");
System.out.println("返回取消的任务数 after:"+timer.purge());
System.out.println("当前水容量:"+bucketCapacity+"L");
try {
Thread.sleep(2000);
} catch (Exception e) {
e.printStackTrace();
}
timer.cancel();//停止所有的机器人操作
} } }
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Timer; public class Main { public static void main(String[] args) { Timer timer = new Timer();
//获取当前时间
Calendar calendar = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间:"+sdf.format(calendar.getTime())); DancingRobot dr = new DancingRobot();
WaterRobot wr = new WaterRobot(timer); timer.schedule(dr, calendar.getTime(), 2000);
timer.scheduleAtFixedRate(wr, calendar.getTime(), 1000);
} /* 当前时间:2018-06-08 18:11:24
最近执行任务的时间:2018-06-08 18:11:25
开心的跳舞
机器人加1L水
机器人加1L水
机器人加1L水
最近执行任务的时间:2018-06-08 18:11:27
开心的跳舞
机器人加1L水
机器人加1L水
最近执行任务的时间:2018-06-08 18:11:29
开心的跳舞
返回取消的任务数 before:0
机器人停止加水
返回取消的任务数 after:1
当前水容量:5L*/ }
------------------------------------Quartz
-------------------------------------Hello world-----------------------
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class HelloJob implements Job{ public void execute(JobExecutionContext arg0) throws JobExecutionException {
//打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前execution时间为:"+sdf.format(date));
// 编写具体的业务逻辑
System.out.println("hello world");
} }
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个jobdetail实例,将该实例与hellojob class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").build();
//创建一个Trigger的实例,定义改job立即执行,并且每隔2秒钟重复一次,直到永远
SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
//创建schedule实例
StdSchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start(); //打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为:"+sdf.format(date)); scheduler.scheduleJob(jobDetail, trigger);
} }
当前时间为:2018-06-14 09:57:36
当前execution时间为:2018-06-14 09:57:36
hello world
当前execution时间为:2018-06-14 09:57:38
hello world
当前execution时间为:2018-06-14 09:57:40
hello world
当前execution时间为:2018-06-14 09:57:42
hello world
当前execution时间为:2018-06-14 09:57:44
public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个jobdetail实例,将该实例与hellojob class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").build();
System.out.println("jobDetail的名字:"+jobDetail.getKey().getName());
System.out.println("jobDetail的group:"+jobDetail.getKey().getGroup());
System.out.println("jobDetail的jobclass:"+jobDetail.getJobClass().getName()); //创建一个Trigger的实例,定义改job立即执行,并且每隔2秒钟重复一次,直到永远
SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
//创建schedule实例
StdSchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start(); //打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为:"+sdf.format(date)); scheduler.scheduleJob(jobDetail, trigger); /*jobDetail的名字:myJob
jobDetail的group:group1
jobDetail的jobclass:com.beet.test.HelloQuartz.HelloJob 当前时间为:2018-06-14 10:10:25
当前execution时间为:2018-06-14 10:10:26
hello world*/
} }
---------------------------------------------------------使用JobDataMap传参数
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.TriggerKey; public class HelloJob implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException {
//打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 编写具体的业务逻辑
//System.out.println("hello world");
JobKey key = context.getJobDetail().getKey();
TriggerKey trKey = context.getTrigger().getKey();
JobDataMap dataMap = context.getJobDetail().getJobDataMap();
JobDataMap tDataMap = context.getTrigger().getJobDataMap(); //从中获取Map
//String JobMsg = dataMap.getString("message");
// Float jobFloatValue = dataMap.getFloat("FloatJobValue");
String triggerMsg = tDataMap.getString("message");
Float triggerDoubleValue = tDataMap.getFloat("DoubleTriggerValue");
System.out.println("当前execution时间为:"+sdf.format(date));
System.out.println("我的job name和group是:"+key.getName()+":"+key.getGroup()); System.out.println("我的trigger name和group是:"+trKey.getName()+":"+trKey.getGroup()); //System.out.println("job message是:"+JobMsg);
//System.out.println("FloatJobVAlue是:"+jobFloatValue);
System.out.println("trigger message:"+triggerMsg);
System.out.println("FloatJobVAlue是:"+triggerDoubleValue);
} }
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个jobdetail实例,将该实例与hellojob class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").usingJobData("message", "hello myJob1").usingJobData("FloatJobValue", 3.14f).build();
System.out.println("jobDetail的名字:"+jobDetail.getKey().getName());
System.out.println("jobDetail的group:"+jobDetail.getKey().getGroup());
System.out.println("jobDetail的jobclass:"+jobDetail.getJobClass().getName()); //创建一个Trigger的实例,定义改job立即执行,并且每隔2秒钟重复一次,直到永远
SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").usingJobData("message", "hello myTrigger").usingJobData("DoubleTriggerValue", 2.0D).startNow().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
//创建schedule实例
StdSchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start(); //打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为:"+sdf.format(date)); scheduler.scheduleJob(jobDetail, trigger); /*jobDetail的名字:myJob
jobDetail的group:group1
jobDetail的jobclass:com.beet.test.HelloQuartz.HelloJob 当前时间为:2018-06-14 10:10:25
当前execution时间为:2018-06-14 10:10:26
hello world*/
} }
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个jobdetail实例,将该实例与hellojob class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").build();
/* System.out.println("jobDetail的名字:"+jobDetail.getKey().getName());
System.out.println("jobDetail的group:"+jobDetail.getKey().getGroup());
System.out.println("jobDetail的jobclass:"+jobDetail.getJobClass().getName()); */ //打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为:"+sdf.format(date));
date.setTime(date.getTime()+3000);//开始3s后执行 Date endDate = new Date();
endDate.setTime(endDate.getTime()+6000);
//创建一个Trigger的实例,定义改job立即执行,并且每隔2秒钟重复一次,直到永远
SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").startAt(date).endAt(endDate).withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
//创建schedule实例
StdSchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start(); scheduler.scheduleJob(jobDetail, trigger); /*jobDetail的名字:myJob
jobDetail的group:group1
jobDetail的jobclass:com.beet.test.HelloQuartz.HelloJob 当前时间为:2018-06-14 10:10:25
当前execution时间为:2018-06-14 10:10:26
hello world*/
} }
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.Trigger;
import org.quartz.TriggerKey; public class HelloJob implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException {
//打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前execution时间为:"+sdf.format(date));
// 编写具体的业务逻辑
// System.out.println("hello world"); Trigger trigger = context.getTrigger();
System.out.println("start time is "+trigger.getStartTime());
System.out.println("end time is "+trigger.getEndTime()); } }
当前时间为:2018-06-14 14:14:32
当前execution时间为:2018-06-14 14:14:35
start time is Thu Jun 14 14:14:35 CST 2018
end time is Thu Jun 14 14:14:38 CST 2018
当前execution时间为:2018-06-14 14:14:37
start time is Thu Jun 14 14:14:35 CST 2018
end time is Thu Jun 14 14:14:38 CST 2018
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个jobdetail实例,将该实例与hellojob class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").build();
/* System.out.println("jobDetail的名字:"+jobDetail.getKey().getName());
System.out.println("jobDetail的group:"+jobDetail.getKey().getGroup());
System.out.println("jobDetail的jobclass:"+jobDetail.getJobClass().getName()); */ //打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为:"+sdf.format(date));
date.setTime(date.getTime()+3000);//开始3s后执行 Date endDate = new Date();
endDate.setTime(endDate.getTime()+6000);
//创建一个Trigger的实例,定义改job立即执行,并且每隔2秒钟重复一次,直到永远 被endDate 覆盖掉了执行计划
SimpleTrigger trigger = TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").startAt(date).endAt(endDate).withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever()).build();
//创建schedule实例 定时 定频率
StdSchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start(); scheduler.scheduleJob(jobDetail, trigger); /*jobDetail的名字:myJob
jobDetail的group:group1
jobDetail的jobclass:com.beet.test.HelloQuartz.HelloJob 当前时间为:2018-06-14 10:10:25
当前execution时间为:2018-06-14 10:10:26
hello world*/
} }
PS:
,表示或的关系
-,至 5-7 五到七
*,每秒钟
/, 每分钟没小时 0/5 没隔5分钟(..)出发一次
?,不关心
#,代表第.. 6#3 每月第三周的周五(6代表周五)
L,代表最后
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException {
//创建一个jobdetail实例,将该实例与hellojob class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").build();
/* System.out.println("jobDetail的名字:"+jobDetail.getKey().getName());
System.out.println("jobDetail的group:"+jobDetail.getKey().getGroup());
System.out.println("jobDetail的jobclass:"+jobDetail.getJobClass().getName()); */ //打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为:"+sdf.format(date));
date.setTime(date.getTime()+3000);//开始3s后执行 Date endDate = new Date();
endDate.setTime(endDate.getTime()+6000);
//创建一个Trigger的实例,定义改job立即执行,并且每隔2秒钟重复一次,直到永远
CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ? *")).build();
//创建schedule实例
StdSchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger); } }
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.Trigger;
import org.quartz.TriggerKey; public class HelloJob implements Job{ public void execute(JobExecutionContext context) throws JobExecutionException {
//打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前execution时间为:"+sdf.format(date));
// 编写具体的业务逻辑
System.out.println("hello world"); /*Trigger trigger = context.getTrigger();
System.out.println("start time is "+trigger.getStartTime());
System.out.println("end time is "+trigger.getEndTime()); */ } }
PS: 这两种方式推荐使用std的方式。
package com.beet.test.HelloQuartz; import java.text.SimpleDateFormat;
import java.util.Date; import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory; public class HelloScheduler {
public static void main(String[] args) throws SchedulerException, InterruptedException {
//创建一个jobdetail实例,将该实例与hellojob class绑定
JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("myJob", "group1").build();
/* System.out.println("jobDetail的名字:"+jobDetail.getKey().getName());
System.out.println("jobDetail的group:"+jobDetail.getKey().getGroup());
System.out.println("jobDetail的jobclass:"+jobDetail.getJobClass().getName()); */ //打印当前的执行时间
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("当前时间为:"+sdf.format(date));
date.setTime(date.getTime()+3000);//开始3s后执行 Date endDate = new Date();
endDate.setTime(endDate.getTime()+6000);
//创建一个Trigger的实例,定义改job立即执行,并且每隔2秒钟重复一次,直到永远
CronTrigger trigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity("myTrigger", "group1").withSchedule(CronScheduleBuilder.cronSchedule("* * * * * ? *")).build();
//创建schedule实例
StdSchedulerFactory sfact = new StdSchedulerFactory();
Scheduler scheduler = sfact.getScheduler();
scheduler.start();
Date scheduleDate = scheduler.scheduleJob(jobDetail, trigger);
System.out.println("开始执行时间为:"+sdf.format(scheduleDate));
//scheudle执行2s挂起
Thread.sleep(2000);
scheduler.standby();//挂起
//挂起3s重新启动
Thread.sleep(3000);
scheduler.start();
} }
Java定时任务调度工具Timer Quartz的更多相关文章
- java定时任务调度工具Timer与Quartz的区别
Timer与Quartz的区别有三点: 1.出身不同:Timer由jdk直接提供,调用方式简单粗暴,不需要其它jar包支持.Quartz并非jdk自带,需要引入相应的jar包 2.能力区别:主要体现在 ...
- Java学习笔记 -- Java定时调度工具Timer类
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...
- java定时任务调度工具
一.什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的时间执行次数自动执行的任务. 二.java中常用的定时任务调度工具: Timer Quartz 2.1两者区别: Timer源自jdk ...
- Java——定时任务调度工具
一.什么是定时任务调度? 1.常用的定时调度工具:Timer和Quartz 二.Timer简介 1.Timer的定义以及架构 2.Timer示例 三.Timer的定时调度函数 1.schedule的四 ...
- JAVA定时任务调度之Timer入门详解(一)
所谓的Timer,打开jdk的api文档可以看到它的定义:一种工具,线程用其安排以后在后台线程中执行的任务.可安排任务执行一次,或者定期重复执行.通俗点讲就是说:有且仅有一个后台线程对多个业务线程进行 ...
- Java定时任务调度详解
前言 在实际项目开发中,除了Web应用.SOA服务外,还有一类不可缺少的,那就是定时任务调度.定时任务的场景可以说非常广泛,比如某些视频网站,购买会员后,每天会给会员送成长值,每月会给会员送一些电影券 ...
- java定时任务调度-Timer(1)
一.定义 有且仅有一个后台线程对多个业务线程进行定时定频率的调度 二. Timer ----> Timer Task (中有run();方法) 通过 new Timer().schedul ...
- java定时任务调度框架
java定时任务目前主要有三种: Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务.使用这种方式可以让你的程序按照某一个频度执行,但不能在 ...
- C#/.NET/.NET Core定时任务调度的方法或者组件有哪些--Timer,FluentScheduler,TaskScheduler,Gofer.NET,Coravel,Quartz.NET还是Hangfire?
原文由Rector首发于 码友网 之 <C#/.NET/.NET Core应用程序编程中实现定时任务调度的方法或者组件有哪些,Timer,FluentScheduler,TaskSchedule ...
随机推荐
- python 学习笔记 字符串和编码
字符编码:因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理,最早的计算机在设计时采用8个比特(bit)作为一个字节 (byte),所以,一个字节能表示的最大的整数是255(二进 ...
- bzoj1238
题解: 傻逼模拟题 果断的复制了题解(还没有c++题解?) 代码: program p2509; type arr=array[..] of boolean; var tot:longint; s:a ...
- Oauth2.0:Access Token 与 Refresh Token
access token 是客户端访问资源服务器的令牌.拥有这个令牌代表着得到用户的授权.然而,这个授权应该是临时的,有一定有效期.这是因为,access token 在使用的过程中可能会泄露.给 a ...
- 下载python中package的简便方法
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xxx
- MySQL 必知必会学习笔记
SHOW DATABASES;USE LangLibCEE;SHOW TABLES;SHOW COLUMNS FROM customers;DESC customers; SHOW STATUS WH ...
- 7 Serial Configuration 理解 (一)
reference : ug470- 7 series config.pdf 7系列器件有5种配置接口,每种配置接口对应一种或者多种配置模式和总线位宽.配置时序相对于引脚的CCLK,即使在内部产生C ...
- python第一个程序HelloWorld
在写第一个python程序之前,我们还需要了解的一个东西就是python解释器 解释器,顾名思义,就是解释一段代码的机器,程序运行的平台,例如Java的解释器就是jdk. 我们在写好的python代码 ...
- 集成学习-xgboost
等同于xgboost是个准曲率很高的集成学习框架,在很多比赛中成绩优异. 大多数的集成学习都使用决策树作为基分类器,主要是因为本身要训练多个分类器,而决策树速度很快,总体时间相对较少. 决策树 在讲x ...
- git 命令篇
*利用命令在仓库新建文件 *远程克隆到本地 *查看子文件 *创建新的分支 合并分支 删除分支 *合并分支 冲突 当Git无法自动合并分支时,就必须首先解决冲突.解决冲突后,再提交,合并完成. 用g ...
- MVC无刷新上传图片并显示
@{ ViewBag.Title = "Home Page"; } <script src="../../Scripts/swfobject.js" ty ...