网站建设资讯

NEWS

网站建设资讯

快递人工调度java代码 快递调度具体做些什么

Java调度算法 来个大神写程序 选择一个调度算法,实现处理器调度。

public class CLSS_ch2 {

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都网站制作、外贸网站建设、乐至网络推广、微信小程序开发、乐至网络营销、乐至企业策划、乐至品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供乐至建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

public static void main(String[] args) {

int sum = 0;

for (int i = 1; i = 100; i++) {

if (i % 10 == 3)

continue;

sum += i;

}

System.out.println(sum);

}

}

计算机图形技术组的成员在1993年开发出了 Lua。它被设计成为脚本语言,是一种不可获取的过程式编程语言,以简单而强大而闻名。

如何编写一个定时调度java程序

目前有两种流行Spring定时器配置:Java的Timer类和OpenSymphony的Quartz。

1.Java Timer定时

首先继承java.util.TimerTask类实现run方法

import java.util.TimerTask;

public class EmailReportTask extends TimerTask{

@Override

public void run() {

...

}

}

在Spring定义

...

配置Spring定时器

bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"

property name="timerTask" ref="reportTimerTask" /

property name="period"

value86400000value

property

bean

timerTask属性告诉ScheduledTimerTask运行哪个。86400000代表24个小时

启动Spring定时器

Spring的TimerFactoryBean负责启动定时任务

bean class="org.springframework.scheduling.timer.TimerFactoryBean"

property name="scheduledTimerTasks"

listref bean="scheduleReportTask"/list

property

bean

scheduledTimerTasks里显示一个需要启动的定时器任务的列表。

可以通过设置delay属性延迟启动

bean id="scheduleReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask"

property name="timerTask" ref="reportTimerTask" /

property name="period"

value86400000value

property

property name="delay"

value3600000value

property

bean

这个任务我们只能规定每隔24小时运行一次,无法精确到某时启动

2.Quartz定时器

首先继承QuartzJobBean类实现executeInternal方法

import org.quartz.JobExecutionContext;

import org.quartz.JobExecutionException;

import org.springframework.scheduling.quartz.QuartzJobBean;

public class EmailReportJob extends QuartzJobBean{

protected void executeInternal(JobExecutionContext arg0)

throws JobExecutionException {

...

}

}

在Spring中定义

bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean"

property name="jobClass"

valueEmailReportJobvalue

property

property name="jobDataAsMap"

map

entry key="courseService"

ref bean="courseService"/

entry

map

property

bean

在这里我们并没有直接声明一个EmailReportJob Bean,而是声明了一个JobDetailBean。这个是Quartz的特点。JobDetailBean是Quartz的org.quartz.JobDetail的子类,它要求通过jobClass属性来设置一个Job对象。

使用Quartz的JobDetail中的另一个特别之处是EmailReportJob的courseService属性是间接设置的。JobDetail的jobDataAsMap属性接受一个Map,包括设置给jobClass的各种属性,当。JobDetailBean实例化时,它会将courseService Bean注入到EmailReportJob 的courseService 属性中。

启动定时器

Quartz的org.quartz.Trigger类描述了何时及以怎样的频度运行一个Quartz工作。Spring提供了两个触发器SimpleTriggerBean和CronTriggerBean。

SimpleTriggerBean与scheduledTimerTasks类似。指定工作的执行频度,模仿scheduledTimerTasks配置 .

bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"

property name="jobDetail" ref="reprotJob" /

property name="startDelay"

value360000value

property

property name="repeatInterval"

value86400000value

property

bean

startDelay也是延迟1个小时启动

CronTriggerBean指定工作的准确运行时间

bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"

property name="jobDetail" ref="reprotJob" /

property name="cronExpression"

value0 0 6 * * ?value

property

bean

属性cronExpression告诉何时触发。最神秘就是cron表达式:

Linux系统的计划任务通常有cron来承担。一个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。从左到右:

1.秒2.分3.小时4.月份中的日期(1-31)5.月份(1-12或JAN-DEC)6.星期中的日期(1-7或SUN-SAT)7.年份(1970-2099)

每个元素都显示的规定一个值(如6),一个区间(9-12),一个列表(9,11,13)或一个通配符(*)。因为4和6这两个元素是互斥的,因此应该通过设置一个问号(?)来表明不想设置的那个字段,“/”如果值组合就表示重复次数(10/6表示每10秒重复6次)。

启动定时器

bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"

property name="triggers"

listref bean="cronReportTrigger"/list

property

bean

triggers属性接受一组触发器。

java代码,多机调度问题,怎么解释

多机调度问题的Java实现(贪心算法)

具体问题描述以及C/C++实现参见网址

[java] view plain copy print?

import java.util.ArrayList;  

import java.util.Collections;  

import java.util.LinkedList;  

import java.util.List;  

/** 

* 多机调度问题--贪心算法 

* @author Lican 

*/  

public class JobMachine {  

public static class JobNode implements Comparable{  

int id;//作业的标号  

int time;//作业时间  

public JobNode(int id,int time){  

this.id=id;  

this.time=time;  

}  

@Override  

public int compareTo(Object x) {//按时间从大到小排列  

int times=((JobNode)x).time;  

if(timetimes) return -1;  

if(time==times) return 0;  

return 1;  

}         

}  

public static class MachineNode implements Comparable{  

int id;//机器的标号  

int avail;//机器空闲的时间(即机器做完某一项工作的时间)  

public MachineNode(int id,int avail){  

this.id=id;  

this.avail=avail;  

}  

@Override  

public int compareTo(Object o) {//升序排序,LinkedList的first为最小的  

int xs=((MachineNode)o).avail;  

if(availxs) return -1;  

if(avail==xs) return 0;  

return 1;  

}  

}  

public static int greedy(int[] a ,int m){  

int n=a.length-1;//a的下标从1开始,所以n(作业的数目)=a.length-1  

int sum=0;  

if(n=m){  

for(int i=0;in;i++)  

sum+=a[i+1];  

System.out.println("为每个作业分别分配一台机器");  

return sum;  

}  

ListJobNode d=new ArrayListJobNode();//d保存所有的作业  

for(int i=0;in;i++){//将所有的作业存入List中,每一项包含标号和时间  

JobNode jb=new JobNode(i+1,a[i+1]);  

d.add(jb);  

}  

Collections.sort(d);//对作业的List进行排序  

LinkedListMachineNode h=new LinkedListMachineNode();//h保存所有的机器  

for(int i=1;i=m;i++){//将所有的机器存入LinkedList中  

MachineNode x=new MachineNode(i,0);//初始时,每台机器的空闲时间(完成上一个作业的时间)都为0  

h.add(x);  

}  

int test=h.size();  

for(int i=0;in;i++){  

Collections.sort(h);  

MachineNode x=h.peek();  

System.out.println("将机器"+x.id+"从"+x.avail+"到"+(x.avail+d.get(i).time)+"的时间段分配给作业"+d.get(i).id);  

x.avail+=d.get(i).time;  

sum=x.avail;  

}  

return sum;  

}  

public static void main(String[] args) {  

int[] a={0,2,14,4,16,6,5,3};  

int m=3;  

int sum=greedy(a,m);  

System.out.println("总时间为:"+sum);  

}  

}  

/** 

运行结果: 

将机器1从0到16的时间段分配给作业4 

将机器2从0到14的时间段分配给作业2 

将机器3从0到6的时间段分配给作业5 

将机器3从6到11的时间段分配给作业6 

将机器3从11到15的时间段分配给作业3 

将机器2从14到17的时间段分配给作业7 

将机器3从15到17的时间段分配给作业1 

总时间为:17 

*/


文章标题:快递人工调度java代码 快递调度具体做些什么
网站网址:http://cdweb.net/article/ddcjhdh.html