我需要在我们的网站上提供行动/活动的安排.垃圾比喻可以是日历系统,其中一个人添加日历项目,并且当日期/时间被"命中"时,则触发一些逻辑(例如,计算报告).
我可能会有数百甚至数千个由我的客户输入的预定活动.当客户输入要安排的内容时,我会将该信息保存到数据库中.然后我猜我会在某处添加一个事件/作业,它将包含数据库表主键.当事件被触发时,我将从数据库中获取该信息,然后执行逻辑.完成.
有哪些常见解决方案可以解决这个问题?
我正在使用.NET 3.5 SP1.DB是Sql Server 2008.但UI将基于Web.
我不确定人们是否使用MSMQ?或者内置在Sql Server中的东西?或者一些带有NT服务的开源库(例如Quartz.NET).服务器将是windows 2008标准版.
另外 - 请不要使用等效的cron作业或任何命令行脚本等建议.
最后,这是次要的目标..我喜欢把它扔到天蓝色的地方为shiz和giggles ......所以也可能吗?这只是一个愿望清单的想法.如果解决方案比使用Azure更容易,我宁愿在专用盒子上进行.
欢呼:)
编辑:需要触发事件时要处理的逻辑,是后台作业.无需UI.
关于使用ScheduledThreadPoolExecutor执行某些重复任务,我正在跟进一个有趣的问题.
调度此对象将返回ScheduledFuture对象,可以使用该对象取消下一次任务运行.
这里要注意的一件事是任务本身与时间表完全脱钩 -
ScheduledExecutorService executor = new ScheduledThreadPoolExecutor(1);
ScheduledFuture nextSchedule =
executor.schedule(task, 60000, TimeUnit.MILLISECONDS);
Run Code Online (Sandbox Code Playgroud)
哪里-
SomeTask task = new SomeTask();
Run Code Online (Sandbox Code Playgroud)
所以任务本身并不了解时间表.如果有办法让任务取消并为自己创建一个新的时间表,请启发.
谢谢
我想知道老Linux调度算法SJF(最短作业优先)如何计算进程运行时?
我正在开发一个航班调度应用程序(免责声明:这是一个大学项目,所以没有代码答案,请).请在回答之前阅读这个问题,因为它有很多特点:(
首先,一些术语问题:
你有飞机和飞机,你必须配对它们.为简单起见,我们假设一旦飞机使用它之前飞机就会自由飞行.
航班被视为任务:
飞机可被视为任务(或航班,在我们的术语中)使用的资源.
航班需要特定类型的飞机.例如,飞行200需要B型飞机.飞机显然是一种且只有一种特定类型,例如,Plane Airforce One属于C型.
"项目"是航空公司在给定时间段内的所有航班的集合.
所需的功能是:
找到所述项目的最短持续时间
任务的最早和最新可能开始(飞行)
基于提供的数据的关键任务包括先前任务的标识符.
自动配对航班和飞机,以便让所有航班与飞机配对.(注意:航班的持续时间是固定的)
获取项目计划的甘特图,其中所有航班尽早开始,以图形方式显示所有先前引用的数据(依赖关系,时间信息等)
所以问题是:我如何在世界上实现这一目标?尤其:
如果您还可以推荐一些算法供我们查找,那就太好了.
我有一个瓶子应用程序,我最终不会在apache上部署(只有fyi,如果这很重要).现在我需要在启动瓶子应用程序后运行一次函数.我不能把它放到路由功能中,因为即使没有用户访问过网站也必须运行它.
这样做有什么好的实践吗?
该函数启动APScheduler实例并向其添加一个jobstore.
当在默认的Akka系统调度程序(context().system().scheduler().schedule()来自actor内部)上使用方法,以及接受目标actor的重载之一时,我是否需要使用返回的Cancellable显式取消以在目标actor停止时释放资源?
我想调度程序可能是watch()目标actor并自动执行清理但无法在文档中的任何位置找到它.
我碰到了这个问题,我不确定我的解决方案是否是最佳的.
给定N加权(Wi)和可能重叠的间隔(表示会议时间表),找到进行所有会议所需的会议室的最小数量"&".
|---10------|. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .|---------8---------|
|------8-----| |----------10-----------|
|--------6-------|
Run Code Online (Sandbox Code Playgroud)
对于上述时间表,我们需要两个10和10个容量的会议室.( 我对么 ? )
如果我们有一个容量大于需要的会议室使用它,如果没有符合标准的会议室,建立新房间或增加现有房间,请从一个房间,并从左侧穿过间隔.新的能力.
例:
10点开始 - {10}
8点开始 - {10,8}
10月底结束 - {10-free,8}
6点开始 - {10,8}
结束8 - {10,8-free}
10的开头= {10,8 + = 2}或{10,10}
等等.....
这基本上是贪心的..
我在新的Android API 21中使用JobScheduler的作业计划有问题.这是我用60秒间隔调度作业的代码,如下所示:
ComponentName serviceName = new ComponentName(this, MyJobService.class);
JobInfo jobInfo = new JobInfo.Builder(0, serviceName)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY)
.setPeriodic(60000)
.build();
Run Code Online (Sandbox Code Playgroud)
我的JobService只在Logcat中打印运行时,但是日志显示服务在这个时刻运行:
03-18 08:37:26.334: I/JOB(32662): Wed Mar 18 08:37:26 BRT 2015
03-18 08:37:56.364: I/JOB(32662): Wed Mar 18 08:37:56 BRT 2015
03-18 08:39:21.418: I/JOB(32662): Wed Mar 18 08:39:21 BRT 2015
03-18 08:41:51.670: I/JOB(32662): Wed Mar 18 08:41:51 BRT 2015
03-18 08:45:52.192: I/JOB(32662): Wed Mar 18 08:45:52 BRT 2015
03-18 08:54:20.678: I/JOB(32662): Wed Mar 18 08:54:20 BRT 2015
Run Code Online (Sandbox Code Playgroud)
这很奇怪,因为我用setPeriodic(60000)方法设置它应该在1分钟内执行至少1次.同样好奇的是如何在运行之间增加间隔.此时的时间是2015年3月18日星期三09:09:00 BRT 2015并且工作不会被执行更多.
这是JobScheduler API的问题吗?(我在Android 5.0.1的Nexus 5中运行)
我在多个非缓冲通道上使用select时发现了
select {
case <- chana:
case <- chanb:
}
Run Code Online (Sandbox Code Playgroud)
即使两个通道都有数据,但在处理此选择时,如果chana和case chanb处于不平衡的调用.
package main
import (
"fmt"
_ "net/http/pprof"
"sync"
"time"
)
func main() {
chana := make(chan int)
chanb := make(chan int)
go func() {
for i := 0; i < 1000; i++ {
chana <- 100 * i
}
}()
go func() {
for i := 0; i < 1000; i++ {
chanb <- i
}
}()
time.Sleep(time.Microsecond * 300)
acount := 0
bcount := 0
wg := …Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的 Ktor 应用程序中安排一项任务,但是我无法在网上找到有关如何执行此操作的任何信息。有没有人有任何建议或以前能够做到这一点?