时间段显示数据,每天分四个时间段,每条信息归结到时间段内展示
产品要按照时间段显示数据,每天分四个时间段,每条信息归结到时间段内展示;

这是展示最近七天数据情况,如果点是红色就是有严重等级告警,黄色就是一般等级告警;
传统计算:
每个时间段内例如(2019-01-11 的 06:00:00到11:59:59)都循环一次所有数据,匹配就放入当前的时间段的List中,但是牺牲很大的性能,并且逻辑容易混乱;
优化后:
采用计算下标方式,只需要遍历一次数据即可,并且逻辑清晰,每条数据首先创建4*7=28个告警List,每个List有个状态Level,无告警0(默认),黄色1,红色2,将统计日期例如2019-01-12,计算查询开始日期2019-01-11,两个日期相差1天这里每天是4个点,天与天相差4个点,然而每天是6个小时一个点,当前日期的小时数除以6取整(这里除6总是小于或等于3,如果等于0就是当前日期的起始下标),这样就可以计算下标int index = ((当前数据日期-查询起始日期)=相差天数 * 4) + (当前数据日期的小时数 / 6);
这里面可以把4和6提取出来,变态的产品经理可能随时要每天8个点展示,这样只需要配置即可,当然28个也要动态的;
总结:
无非时间转换成了点数的索引

浙公网安备 33010602011771号