===事件提醒===百分求算法(100分)

  • 主题发起人 主题发起人 doom2
  • 开始时间 开始时间
D

doom2

Unregistered / Unconfirmed
GUEST, unregistred user!
一个表中有几条记录(不会很多),有一个关于datetime的字段
需求:当系统时间和表中某个时间相吻合时,自动提醒(比如触发某个事件)
问题是:用什么算法能够最节省系统资源
我的想法是,在timer的ontimer事件中加一个循环,不断的判断,可是这样占用资源是否会太大?
所以,100分求最优的算法
 
在Timer中用Query查询!
 
当然要用query了,只是怎么用的问题,总不能每秒都连一次数据库吧
 
为该字段建立索引,最好是能按时间排序。如果不行,将时间字段全部输入到一个数组后
将数组排序,这样就只需判断最前面的时间数据就好了。即一次Ontimer只要判断一次就好
了!
 
将数据库中的字段按照这个datetime字段排序,把时间在最前面的那一个的值拿出来保存
在一个变量中,然后在timer的ontime事件中对比,这个时间到了以后,再重复以上过程,
这样就避免了频繁的读取数据库,大大节省了资源。
 
还有没有更好的算法了呢?
 
还有一个问题,比如现在的时间是1:11,从库中取出了两条记录,一条1:15分需要提醒,
一条1:20分,如果按照楼上的算法,1:15分的不就没法提醒了吗
 
记录不多,估计字段也不多,
将所有记录按时间先后顺序装入一个List中,
从List中删除早于当前时间的记录
在Timer事件中,
1:检查List的第一条记录是否到了提醒时间,若到了则
提醒并从List中删除之
重复1直到List为空或提醒时间未到
 
好像可以啊。。
 
后退
顶部