Java 春季时间表“;“忙碌”;
所以我正在为交通量编程一个CameraDetector系统的模拟。传入的图像(称为消息)有一个ID、一个Licenseplate和一个时间戳(LocalDateTime.Now) 问题是我必须为忙碌编程。 如你所知,从下午5点到6点到上午8点到9点,交通非常繁忙。我必须通过在这些时间比在正常时间生成更多的消息来模拟这种忙碌 我怎样才能用春天来做这件事 **为了澄清这些信息,需要在繁忙时间更频繁地发送。时间戳需要在生成时保持不变。这是为了模拟线程上的真实工作负载 文档参考和/或代码非常有用 消息生成方法Java 春季时间表“;“忙碌”;,java,spring,spring-boot,scheduled-tasks,frequency,Java,Spring,Spring Boot,Scheduled Tasks,Frequency,所以我正在为交通量编程一个CameraDetector系统的模拟。传入的图像(称为消息)有一个ID、一个Licenseplate和一个时间戳(LocalDateTime.Now) 问题是我必须为忙碌编程。 如你所知,从下午5点到6点到上午8点到9点,交通非常繁忙。我必须通过在这些时间比在正常时间生成更多的消息来模拟这种忙碌 我怎样才能用春天来做这件事 **为了澄清这些信息,需要在繁忙时间更频繁地发送。时间戳需要在生成时保持不变。这是为了模拟线程上的真实工作负载 文档参考和/或代码非常有用 消息生
@Override
public CameraMessage generate() {
randomLicensePlate = String.format("%d-%s%s%s-%d%d%d", r.nextInt(9) + 1, rndChar(),
rndChar(), rndChar(),
r.nextInt(9) + 1, r.nextInt(9) + 1, r.nextInt(9) + 1);
return new CameraMessage(randomIdBound, randomLicensePlate.toString(),
LocalDateTime.now());
}
制作一个名为
frequency
的int
。高峰时段的频率应较高,非高峰时段的频率应较低。每分钟一次(在你的系统时钟上),通过一个代数函数——一个初等数学函数f(t)重新校准你的频率
使用Spring Scheduling(fixed rate=K)每分钟计划一次消息级联事件,该事件发送frequency
消息,然后重新校准frequency=f(now())。
重复
级联功能可能没有意义一次拍摄所有
n
消息——可能将它们均匀或随机地隔开您可以启动一个单独的发送消息的程序,例如,让它在消息之间等待n秒;n的范围从下限(例如,如果你想每分钟模拟一辆汽车,则为60)到上限;如果你想模拟每分钟20辆车,可能是3辆。您还可以通过随机因素调整等待时间
另一种方法可能是以固定的时间间隔(例如每3秒)启动一代,并使用随机因子确定车辆是否显示,从而在特定时间间隔内减少车辆流量。我建议您的spring应用程序坚持摄像头检测,然后设置一个交互/系统/性能模块,该模块可以生成spring应用程序应该处理的图像峰值。您是否需要插入带有随机时间戳的随机消息,这些时间戳在下午5点到6点之间的概率更高?或者你想在一天中定期发送消息,并在商务期间发送更多消息?顺便说一句,这意味着商务。如果你决定留在春季,查看计划任务,并在至少一个时间范围内启动一个任务,该任务将生成对的请求processing@Saucistophe忙碌=忙于许多事情的状态do@Saucistophe后者,在繁忙时间发送更多消息
f(t)=Math.abs(secondsInDay(t)-secondsInDay(PEAK_TIME))
其中secondsInDay
是一种方法,它接收瞬间t
并返回t
从午夜开始一天中的秒数。我想你必须进一步澄清。我会尽我最大的努力,但我的数学不是那么好,我不能理解它。英语不是我的母语。我在编程语言中使用数学函数方面也没有什么经验,但这确实是我想更擅长的。我编写的示例函数是:intgetfrequency(Instant t){return Math.abs(secondsInDay(t)-secondsInDay(PEAK_TIME));}
。问题是,你要求“创建业务”,有无数种方法可以做到这一点。我给你一个可能的方法的草图。