走势图通用写法

需求:

天走势图,周走势图,月走势图

天走势图需要每十分钟(或者其他时间间隔)。周走势图和月走势图为一天。时间和数据对应,并且需要排序。

需要数据:

天走势图的原始数据每五分钟存在一次数据。(或者其他时间间隔)

周以上的走势图按照每天聚合一次数据。

使用数据库:

mongodb

做法:

先生成排好序的hashmap。

//sn天hash
    private ImmutableSortedMap<Long, Flow> generateDayHash(Date startDate, Date endDate, String sn) {
        Builder<Long, Flow> builder = ImmutableSortedMap.naturalOrder();
        Long start = startDate.getTime();
        Long end = endDate.getTime();
        Date nextHour = DateUtil.calHour2DateStandard(startDate, 1);
        Long next = nextHour.getTime();

        for(Long l = next; l > start; l = l - HOUR_AGGREGATION_TIME) {
            Flow flowlog = new Flow();
            Date date = new Date(l);
            String dateString = DateUtil.date2String("yyyy-MM-dd HH:mm:ss", date);
            flowlog.setTimeString(dateString);
            flowlog.setSn(sn);
            flowlog.setRxBytes(0l);
            builder.put(l, flowlog);
        }
        ImmutableSortedMap<Long, Flow> map = builder.build();
        for(Long l = next; l < end; l = l + HOUR_AGGREGATION_TIME) {
            if(!map.containsKey(l)) {
                Flow flowlog = new Flow();
                Date date = new Date(l);
                String dateString = DateUtil.date2String("yyyy-MM-dd HH:mm:ss", date);
                flowlog.setTimeString(dateString);
                flowlog.setSn(sn);
                flowlog.setRxBytes(0l);
                builder.put(l, flowlog);
            }
        }
        map = builder.build();
        return map;
    }

获取最接近的时间整数

//取得最近的整数时间,10分钟间隔。例如12:26则为12:30。
    private Long getAggregatedTime(String time) {
        String[] tmp = time.split(":");
        int i = Integer.parseInt(tmp[1].substring(0,1)) + 1; //调整这个1,可以调整到20分钟间隔,30分钟间隔等
        String dateString = tmp[0] + ":" + i + "0:00";
        SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            return sdf.parse(dateString).getTime();
        } catch (ParseException e) {
            LOGGER.error("failed to execute method getAggregatedTime in flowService {}", e);
        }

        return 0l;
    }

返回天走势图

//返回sn天走势图-间隔10分钟
    public List<Flow> getDayFlowBySn(Date startDate, Date endDate, String sn, String type) {
        List<Flow> result = new ArrayList<>();
        List<Flowlog> list = new ArrayList<>();
        if(!legalParam(startDate, endDate))
            return result;
        Long start = startDate.getTime();
        Long end = endDate.getTime();
        try {
            list = mongo.find(new Query(Criteria
                    .where(FlowlogField.START)
                    .gte(start).lte(end).and(FlowlogField.SN).is(sn).and(FlowlogField.INTF_TYPE).is(type))
                    , Flowlog.class
                    );
            ImmutableSortedMap<Long, Flow> map = generateDayHash(startDate, endDate, sn);
            result = getDayFlow(list, map);
            return result;
        } catch (Exception e) {
            LOGGER.error("execute method getDayFlowBySn failed {}", e);
            return result;
        }
    }
时间: 2024-10-14 12:58:39

走势图通用写法的相关文章

!! A股历史平均市盈率走势图

http://value500.com/PE.asp 一. A股历史平均市盈率走势图 *数据来源:上海证券交易所 分享到: 354 - 上海A股 深圳A股更新时间 2017年6月7日 2017年6月7日平均市盈率 16.62 34.88 二.市盈率是什么? 市盈率(Price to Earning Ratio,简称PE或P/E Ratio) ,也称本益比 "股价收益比率"或"市价盈利比率(简称市盈率)" .市盈率是最常用来评估股价水平是否合理的指标之一,由股价除以年

十进制转换成其它进制的通用写法(查表法)

 //十进制转换成其它进制的通用写法(查表法)  class Transform  { public static void main(String[] args) {    toHex3(60);    System.out.println();    toOctal2(20);    System.out.println();    toBinary2(6); }  public static void toAny(int num,int base,int offSet)  {   char

Highcharts实现走势图

Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习.个人网站和非商业用途使用.HighCharts支持的图表类型有曲线图.区域图.柱状图.饼状图.散状点图和综合图表. HighCharts中文api很少,并且零散不全,一般通过http://api.highcharts.com/highcharts也都可以看懂. 先看效果吧 这个是近期(9月2日到11月27日的汇率走势图)数据,其实现非常

用C#开发的双色球走势图(原创)值得园友拥有(二)接上一篇

昨晚由于时间的原因只写了一部分内容,今天将这一部分内容补充完毕,多谢各位园友的支持. 这是用C#开发的双色球走势图(原创)值得园友拥有 新的园友可以看昨晚写的内容,以免脱节.首先回复园友的评论,有说好的有说不好的,本人不管你说好还是不好,根本不影响个人写这篇博客,写这篇博客主要目的还是与大家交流技术,仅供交流和学习,本人花在这上面的时间的大楷也就是一个星期的晚上时间(星期一到星期五晚上)和周末(周六周日)的时间而已,并没有花费更多的时间:关于公布源码的问题,本人会在稍后公布,由于现在我的源码集成

用C#开发的双色球走势图(原创)值得园友拥有

首先声明,个人纯粹无聊之作,不作商业用途. 我相信每个人都拥有一个梦想那就是有朝一日能中500W,这个也一直是我的梦想,并默默每一期双色球或多或少要贡献自己一点点力量,本人并不属于那种铁杆的彩票迷,每次都是纯粹娱乐而已,因为深知这个中奖的概率太低了,每一次买也是随机而已,运气好的话还能中个五块钱,运气不好的话随机买五注,甚至一个号码也中不到,每次去购买双色球都会看到走势图,所以个人最近就花了一点时间在这个上面,进行了一番研究,现将研究成果写出来,供园友一起探讨,愿各位早日中500W. 双色球开奖

Html5 canvas 绘制彩票走势图

因需要 要实现一个类似彩票走势图的功能,初次学Html5 ,很多地方不明白,前段时间也发帖请教过这个问题,也是没给个明确说话,在网上搜了很多,也没有实现的例子,今天仔细研究了下,发现其实也不是很难,现将代码贴出来,共同学习! 先来一张效果图: 实现的代码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <me

python 绘制走势图

1.工具 matplotlib numpy 2.matplotlib使用 import matplotlib.pyplot as plt #plt用于显示图片import matplotlib.image as mping #mping用于读取图片import datetime as dtimport matplotlib.dates as mdatesfrom pylab import * def draw_trend_chart(dates,y):    mpl.rcParams['font

iOS 中各种折线.曲线.图形绘制方法集锦(折线图.走势图.柱状图.动态曲线图.形状图.划线图)

前言 具体实现如下: 目录 前言 第一 折线图实现 .1) 自定义视图实现 .2)关键技术实现 .3) 方法调用 .4) 效果展示 第二 走势曲线图实现 .1) 导入DJChart第三方库 .2)横竖轴参数设置 .3) 方法调用 .4) 效果展示 第三 画线图实现 .1) 导入ZXQuartz第三方库 .2) 自定义视图,画各种图形 .3) 方法调用 .4) 效果展示 第四 柱状图实现 .1) 导入ZXQuartz第三方库 .2)横竖轴参数设置 .3) 方法调用 .4) 效果展示 第五 各式图形

UML图的写法(转)

类的属性的表示方式 在UML类图中,类使用包含类名.属性(field)和方法(method)且带有分隔线的矩形来表示,比如下图表示一个Employee类,它包含name.age和email这3个属性,以及modifyInfo()方法. 那么属性/方法名称前的加号和减号是什么意思呢?它们表示了这个属性或方法的可见性,UML类图中表示可见性的符号有三种: +: 表示public -: 表示private #: 表示protected(friendly也归入这类) 因此,上图中的Employee类具有