精华内容
下载资源
问答
  • 字符串时间转换时间格式问题带配图完整解决方案--kettle版.doc
  • 最新牛资股票资系统源码,PHP开源、带数据库文件,带管理后台,功能全面,有手机端和网页端,搭建方便
  • 今天给大家介绍一款图片轮播插件,时间轴的效果,那就酷毙了。有什么不清楚的可以给我留言,我会非常热情的哈,不论什么问题,有问必答哈!~ 转自:素材火jQuery教程演示:http://www.sucaihuo.com/js/75.html
  • 今天继续做实验室的项目,...切入正题,echarts的时间轴与力导向的搭配使用:1.明确时间轴的data数目对应着后面的option数目一个时间轴的data,就对应了后面的一个option,用官方的话来说: 2.知道时间轴的一些

    今天继续做实验室的项目,没有javaweb编程经验与前端编程经验真是吃了好多亏,早知道学习一下jsp的架构了,现在纯jsp+servlet的形式写后台,还和前端进行了一系列耦合,真是蛋疼无比。
    切入正题,echarts的时间轴与力导向图的搭配使用:

    1.明确时间轴的data数目对应着后面的option数目

    一个时间轴的data,就对应了后面的一个option,用官方的话来说:
    echarts官方说明

    2.知道时间轴的一些配置选项

    这个大家自己去查阅官方参考手册就行,我列举几个我用到的:
    autoplay和loop.

    talk is cheap,show me the code:
    下面直接上我的配置函数代码:

    function newupdateTimeGraph(dataNodesMap,dataLinksMap,dates){
    
        var option_time = {  
                timeline:{  
                    data:(function(){  
                        var data=[];  
                        for(var i=0;i<dates.length;i++){  
                            data.push(dates[i]);  
                           // console.log(dates[i]);  
                        }  
                        return data;  
                    })(),  
                    label : {  
    //                    formatter : function(s) {
    //                      
    //                        return s; 
    //                    }  
                    },  
                    autoPlay : false,  
                    playInterval : 3000  
                },  
                options:(function(){
                     var options=[]; 
                     for(var i=0;i<dates.length;i++){
                         var day=dates[i];
                         var dataNode=[];
                             dataNode=dataNodesMap[day];
                         var dataLinks=[];
                             dataLinks=dataLinksMap[day];
                         //console.log(dataNode);
                        //console.log(dataLinks);
                         if(i==0){
                             options.push({
                                 title : {
                                        text: '传播关系图',
                                        x:'right',
                                        y:'bottom'
                                    },
    
                                    color:
                                        [
                                         "#00CCFF",
                                         "#FF0033"
                                         ],
    
                                    tooltip : {
                                        trigger: 'item',
                                        formatter: '{b}'
                                    },
                                    toolbox: {
                                        show : true,
                                        x:'left',
                                        y:'bottom',
                                        feature : {
                                            //dataView : {show: true, readOnly: false},
                                            restore : {show: true},
                                            magicType: {show: true, type: ['force', 'chord']},
                                            saveAsImage : {show: true}
                                        }
                                    },
                                    legend: {
                                        x: 'left',
                                        data:['之前人物','变化人物']
                                    },
                                    series : [
                                        {
                                            type:'force',
                                            name : "参与关系",
                                            ribbonType: false,
                                            categories : [
                                                {
                                                    name: '之前人物'
                                                },
                                                {
                                                    name: '变化人物'
                                                }
                                            ],
                                            itemStyle: {
                                                normal: {
                                                    label: {
                                                        show: true,
                                                        textStyle: {
                                                            color: '#333'
                                                        }
                                                    },
                                                    nodeStyle : {
                                                        brushType : 'both',
                                                        borderColor : 'rgba(250,215,0,0.4)',
                                                        borderWidth : 1
                                                    },
                                                    linkStyle: {
                                                        type: 'curve'
                                                    }
                                                },
                                                emphasis: {
                                                    label: {
                                                        show: false
                                                        // textStyle: null      // 默认使用全局文本样式,详见TEXTSTYLE
                                                    },
                                                    nodeStyle : {
                                                        //r: 30
                                                    },
                                                    linkStyle : {}
                                                }
                                            },
                                            useWorker: false,
                                            minRadius : 10,
                                            maxRadius : 25,
                                            gravity: 1.1,
                                            scaling: 1.5,
                                            roam: true,
                                            //linkSymbol: 'arrow',
                                            steps:2,
                                            large:true,
                                            nodes:dataNode,
                                            links:dataLinks,
    
                                        }
                                    ]
                                }
                                     );
                         }else{
                             options.push({
                                 series : [  
                                           {
                                               nodes:dataNode,
                                               links:dataLinks,
                                           }
                                       ]  
                                   }
                                     );
                         }
                     }
                     return options;
               })()
    
        };
        var TimeChart = echarts.init(document.getElementById('commuTime')); 
        TimeChart.setOption(option_time,true);  
        TimeChart.on(echarts.config.EVENT.TIMELINE_CHANGED, function(paramA,paramB){
    
            //console.log(paramA);
            //console.log(paramB);
            var option=TimeChart.getOption();
            var day=dates[paramA.currentIndex];重新更新数据,防止数据覆盖
            var dataNode=[];
             dataNode=dataNodesMap[day];
            var dataLinks=[];
             dataLinks=dataLinksMap[day];
           // console.log(dataNode);
    
            option.series[0].nodes=dataNode;
            option.series[0].links=dataLinks;
    
            //console.log(option);
            TimeChart.setOption(option,true);
    
            TimeChart.resize();
        });
    
    
    }

    其中dataNodesMap和dataLinksMap是我提前准备好的key为天的Map数组,所有的key存在了dates数组里面,所以挨个配置好从0到dates.length-1的option就行。

    这里注意一下,第一个option的参数设置后续的option似乎是可以沿用的,所以,直接填后面option的series的data就行。
    这里我参考了这篇博客 进行配置

    3.解决标题提到的问题:

    问题描述是:
    当我走第一遍流程的时候是没有问题的,但是如果我把指针往前拉一天,结果前一天的数据居然包含了后一天的数据……
    问题描述有点类似于这个问题 而且没有答案。

    解决办法就是针对每次的timeline的事件响应函数,手动重新读取正确数据并填充一下(如果你写了这个响应函数,理论上前面的option的series的数据都可以设置为空)。

    解决的过程参考了这个博客 感谢几个博客博主的帮助,也希望我的这篇略显过时的文章对以后看到的人有用。

    展开全文
  • 船上工作时间员公约.doc
  • 网自动化及其实现方式(电压时间型、电流计数型工作原理)(PPT83页).ppt
  • 缩短网自动化开关逻辑功能调试时间的措施.rar
  • 传媒周报:把握传媒中报行情,拉长时间周期加传媒板块
  • 传媒周报:把握传媒中报行情,拉长时间周期加传媒板块.pdf
  • arduion使用ESP8266代码,含一键网等功能的程序。希望对你们有帮助谢谢、 arduion使用ESP8266代码,含一键网等功能的程序。希望对你们有帮助,谢谢 arduion使用ESP8266代码,含一键网等功能的程序。希望对你们...
  • 以城市路网中交通信号控制系统为研究对象,以最小化系统总旅行时间为目标,考虑基于元胞传输模型的网络动态加载模型,构建了相序与绿灯时间组合优化的非线性规划模型,并设计了遗传算法。数值算例验证了该算法的有效...
  • QtCharts 时间坐标轴以及利用定时器动态绘制图形


    先放效果图
    在这里插入图片描述

    写在前面

    这片文章是之前文章思路上来的,之前的这篇文章是在项目初期,刚开始使用QtCharts时候写的,当时比较匆忙,没有太多时间编写一个Demo,代码也是从项目中抠出来的,难免会有不足之处,现在看起来有点晦涩,可能对大家的帮助不大,所以想进行一定修改,让大家能够更好的使用Qt自带的折线图,实现更多功能。
    本来是想在之前的文章上进行修改,但是毕竟也是以前的一个印记。这次就在上那篇文章的基础上,试图让整个流程更加清楚,增加一些新内容,也会配上Demo的下载地址。

    另外,本Demo的开发环境是VS2017社区版+Qt 5.11.2,QtChart的添加方式和使用Qt Creator略有不同。(本人觉得开发大一点的项目还是VS方便,所以就一直使用的VS进行开发)

    为什么要写这片文章

    QtCharts常用的时间轴有QValueAxisQDateTimeAxis,有时候我们需要绘制与时间相关的数据,如与日期相关的天气数据,或者是随分钟变化的传感器数据等,这样就会用到 QDateTimeAxis 坐标轴目前网上的一些例子,以及QT自带的例子,基本都是和日期相关的数据,没有找到坐标轴是分钟、秒的案例,踩了一些坑后,写下这篇文章,希望能够帮助到需要的人。

    QtCharts折线图初始化设置

    UI设置

    记得在生成项目的时候勾选charts(安装Qt的时候记得也要安装这个组件),这样就能正常使用QtCharts,一路next就可以生成我们的项目了。
    在这里插入图片描述
    我们要实现折线图需要利用QChartView,在QChartView中才可以添加QChart。
    双击ui文件打开QtDesigner,我们会发现没有现成的QChartView控件。但是问题不大,QChartView是继承于GraphicsView的,所以我们可以通过Qt的一些操作,将GraphicsView变为我们要使用的QChartView
    首先我们拖动一个GraphicsView到右边去,对着添加进去的控件右键,选择提升,然后在弹出窗口,进行下面的操作,确定后我们就可以得到一个QChartView了。

    在这里插入图片描述
    可以看到,右边属性界面我们的graphicsView的类就变为了QChartView
    在这里插入图片描述
    这个时候我们进行编译,是会报错的,大概就是下面这个样子
    在这里插入图片描述
    需要在头文件中添加一个包含,就可以正常使用了
    在这里插入图片描述


    折线图初始化

    主要是初始化坐标轴和数据集,以及QChart对象。(我们这里既有左边的Y轴,又有右边的Y轴,如果只是想显示普通一条数据,只需要一个Y轴就可以了)

    m_AxisX_Time = new QDateTimeAxis();//时间轴    
    m_AxisY_Left = new QValueAxis();//左边Y轴    
    m_AxisY_Right = new QValueAxis();//右边Y轴    
    m_LeftSeries = new QLineSeries();//折线图数据集    
    m_RightSeries = new QLineSeries();    
    m_LineChart = new QChart();//chart对象
    

    其中这个m_LineChart是要添加到我们QChartView中的具体对象,也是折线图的具体对象。
    有了这些对象,我们需要对他们之间进行初始设置,添加他们之间的关系,让他们能够各司其职,共同工作。


    首先就是把我们的数据集加入到我们的chart中

     //添加曲线到chart中    
     m_LineChart->addSeries(m_LeftSeries);    
     m_LineChart->addSeries(m_RightSeries);
    

    然后我们对坐标轴进行一定的设置。时间轴设置区间需要用到QDateTime,QDateTime是一个年月日,时分秒的时间类,构造函数是由年月日的m_BaseData对象(QDate类)和m_BaseTime对象(QTime类)组成,但是因为我们想要显示时分秒或者分秒,所以调用下面一句话,我们可以只是显示分秒。

    m_AxisX_Time->setFormat(“mm:ss”)

    具体的代码如下

    QDateTime temp_StartTime(m_BaseDate, m_BaseTime);//00:00    
    QDateTime temp_EndTime(m_BaseDate, m_EndTime);//02:00
    m_AxisX_Time->setTickCount(6);//分为六格    
    m_AxisX_Time->setRange(temp_StartTime, temp_EndTime);//时间显示范围
    //坐标轴显示方式: 分钟:秒    
    m_AxisX_Time->setFormat("mm:ss");
    //设置坐标轴显示范围    
    m_AxisY_Left->setRange(-900, 2000);    
    m_AxisY_Right->setRange(-900, 1500);
    
    • 这里有一个坑,QDateTime中,如果初始化输入QDateQTime时间不正确,那么理论上QDateTime也是错误的,但是系统是不会报错的,但会导致显示数据异常;
    • 比如QDate如果是(2000,0,1),不会提示错误,但是其实显示的数值会一直是错误的
    • 所以为了保证数据的正确性,这些容易出错的对象我们尽量用全局的const变量来提前定义,如m_BaseDate

    然后我们把设置好的坐标添加到chart中,和添加进数据集的方法相似

     //把坐标轴添加到chart中,    
     //addAxis函数的第二个参数是设置坐标轴的位置,    
     //只有四个选项,下方:Qt::AlignBottom,左边:Qt::AlignLeft,右边:Qt::AlignRight,上方:Qt::AlignTop    
     m_LineChart->addAxis(m_AxisX_Time, Qt::AlignBottom);    
     m_LineChart->addAxis(m_AxisY_Left, Qt::AlignLeft);    
     m_LineChart->addAxis(m_AxisY_Right, Qt::AlignRight);
    

    最后将数据集和坐标轴绑定。每个数据集都需要绑定X轴-时间轴和对应的Y轴,如果想要添加多条折线图,原理也是一样的,只需要绑定X轴和对应的Y轴就可以了。

    //把曲线关联到坐标轴    
    m_LeftSeries->attachAxis(m_AxisX_Time);    
    m_LeftSeries->attachAxis(m_AxisY_Left);    
    m_RightSeries->attachAxis(m_AxisX_Time);    
    m_RightSeries->attachAxis(m_AxisY_Right);
    

    到这里,我们的chart就设置完毕了,我们将设置好的chart添加进我们的chartView中就可以了

    ui.graphicsView->setChart(m_LineChart);
    

    往Chart中添加数据的方法

    想要往QtChart中添加数据,只需要往对应的数据集series中添加点,为了方便调用,这里写成了一个函数形式。

    /** 
    * 添添加一个点 
    * */
    void QtChartTimeAxis::addOnePointToChart(QLineSeries *targetSeries, int secondCount, int y_value) 
    {    
    QDateTime temp_AddTimePos(m_BaseDate, m_BaseTime.addSecs(secondCount));//通过addSecs增加秒数,更加安全    
    targetSeries->append(temp_AddTimePos.toMSecsSinceEpoch(), y_value);
    }
    

    定时器与绘制

    我们这里通过定时器,每一秒钟绘制一次数据点,这和我们期望的实际的工作方式是一致。

    //初始化一个定时器    
    m_DrawTimer = new QTimer(this);    
    connect(m_DrawTimer, &QTimer::timeout, this, &QtChartTimeAxis::oneSecondAction);//槽函数,每次定时器达到指定时间就执行一次
    

    开始定时器只需要执行下面这一行,括号内这个间隔单位是ms,可以按照自己的要求进行更改。

    m_DrawTimer->start(1000);//1秒执行一次
    

    然后在每秒响应的槽函数中,每一秒调用一次addOnePointToChart函数,

    second_count++;
    addOnePointToChart(m_LeftSeries, second_count, m_DataList[second_count].toInt());
    

    其他

    设置坐标轴样式的函数,

    可以设置左右Y轴的颜色,名称,以及让曲线颜色和Y轴颜色一致。因为不是非常重要,就放在了最后

    /** 
    * 设置坐标轴样式 
    * */
    void QtChartTimeAxis::setAxisFormat(QValueAxis *axis, QXYSeries *lineSeries, QString titleString, QColor color)
    { 
    axis->setTitleText(titleString); 
    axis->setTitleFont(QFont("黑体", 8, QFont::Medium, false)); 
    axis->setTitleBrush(color); 
    axis->setLinePenColor(color); 
    lineSeries->setPen(QPen(color, 0.6, Qt::SolidLine, Qt::SquareCap, Qt::RoundJoin));}
    

    设置折线图边距

    同样的,因为不是非常重要,就放在了最后。但是有时候可能会对边距有要求。

    /** * 用于设置折线图边距 */ 
    void QtChartTimeAxis::setLineChartMargins(QChart *chart, int margin) 
    { 
    QMargins m_Margin; 
    m_Margin.setLeft(margin); 
    m_Margin.setBottom(margin); 
    m_Margin.setRight(margin); 
    m_Margin.setTop(margin); 
    chart->setMargins(m_Margin); 
    }
    

    下载

    下载 程序及数据下载连接

    说明:程序提供的下载(本程序是利用VS2017+Qt 5.11.2进行编写,建议用相同环境打开)

    相关

    QtChart还是适合轻量级的应用,比如这个Demo是1s绘制一次,所以性能上没有一点问题,100ms也不会有什么问题,但是10ms的绘制间隙后,系统明显会卡顿了,这对系统执行的其他任务影响很大,这个时候就需要自定义的绘制模块了。

    展开全文
  • 关于linux校准时间

    万次阅读 2018-05-22 16:03:08
    hwclock --show 显示硬件时间 hwclock-w根据系统时间设置硬件时间 很完整的文章,其中ntpdate设置时间会造成时间跳跃,不安全,而且只能一次性,所以一般还需要搭配crontab来定时设置,使用ntpd服务器则相对安全...

     

    hwclock --show 显示硬件时间

    hwclock  -w   根据系统时间设置硬件时间

     

    很完整的文章,其中ntpdate设置时间会造成时间跳跃,不安全,而且只能一次性,所以一般还需要搭配crontab来定时设置,使用ntpd服务器则相对安全,能替代:ntpdate+crontab

    在启动ntpd之前,需要先使用一次ntpdate来校准时间!

     

     

    原文链接:http://blog.sina.com.cn/s/blog_636a55070101u1mg.html

    Windwos中,系统时间的设置很简单,界面操作,通俗易懂。而且设置后,重启,关机都没关系。系统时间会自动保存在Bios的时钟里面,启动计算机的时候,系统会自动在Bios里面取硬件时间,以保证时间的不间断。

        但在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠Bios电池来维持,而系统时间,是用CPU tick来维持的。

        在系统开机的时候,会自动从Bios中取得硬件时间,设置为系统时间。

     

    .Linux系统时间的设置

        Linux中设置系统时间,可以用date命令:

    //查看时间

    [root@localhost ~]# date
    2008
     12 12日星期五 14:44:12 CST

    //修改时间
    [root@localhost ~]# date -set  "2013-12-24 00:01" <== (年/月/ :分【:秒】)
    2009 01 01日星期四 00:01:00 CST

    //date 有几种时间格式可接受,这样也可以设置时间:

    [root@localhost ~]# date 012501012009.30  <== 月日时分年.
    2009 01 25日星期日 01:01:30 CST

     

     .Linux硬件时间的设置

        硬件时间的设置,可以用hwclock或者clock命令。其中,clockhwclock用法相近,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

    //查看硬件时间可以是用hwclockhwclock --show 或者hwclock -r

    [root@localhost ~]# hwclock --show
    2008
    1212日星期五 065207  -0.376932 seconds

    //
    设置硬件时间

    [root@localhost ~]# hwclock --set --date="1/25/09 00:00" <== //年时::
    [root@localhost ~]# hwclock
    2009
    0125日星期日 000006  -0.870868 seconds

    [root@localhost ~]# hwclock  -w   根据系统时间设置硬件时间

     

    .系统时间和硬件时间的同步

        同步系统时间和硬件时间,可以使用hwclock命令。

    //以系统时间为基准,修改硬件时间

    [root@localhost ~]# hwclock --systohc<== sys(系统时间)to(写到)hcHard Clock
    [root@localhost ~]# hwclock -w

    //以硬件时间为基准,修改系统时间

    [root@localhost ~]# hwclock --hctosys
    [root@localhost ~]# hwclock -s

     

    .不同机器之间的时间同步

        为了避免主机时间因为长期运作下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务器和ntp客户机。在网络中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。

        同步时间,可以使用ntpdate命令,也可以使用ntpd服务。

        使用ntpdate比较简单。格式如下:

    [root@linux ~]# ntpdate [-nv] [NTP IP/hostname]
    [root@linux ~]# ntpdate 192.168.0.2
    [root@linux ~]# ntpdate time.ntp.org

        但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果cpu tick有问题,只是治标不治本。所以,一般配合cron命令,来进行定期同步设置。比如,在crontab中添加:

    0 12 * * * * /usr/sbin/ntpdate 192.168.0.1

         这样,会在每天的12点整,同步一次时间。ntp服务器为192.168.0.1

        使用ntpd服务,要好于ntpdatecron的组合。因为,ntpdate同步时间,会造成时间的跳跃,对一些依赖时间的程序和服务会造成影响。比如sleeptimer等。而且,ntpd服务可以在修正时间的同时,修正cpu tick。理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。

        要注意的是,ntpd有一个自我保护设置: 如果本机与上源时间相差太大, ntpd不运行. 所以新设置的时间服务器一定要先ntpdate从上源取得时间初值, 然后启动ntpd服务。ntpd服务运行后, 先是每64秒与上源服务器同步一次, 根据每次同步时测得的误差值经复杂计算逐步调整自己的时间, 随着误差减小, 逐步增加同步的间隔. 每次跳动, 都会重复这个调整的过程.

     

    .ntpd服务的设置

        ntpd服务的相关设置文件如下:

    1./etc/ntp.conf:这个是NTP daemon的主要设文件,也是 NTP 唯一的设定文件。

    2./usr /share/zoneinfo/:在这个目录下的文件其实是规定了各主要时区的时间设定文件,例如北京地区的时区设定文件在/usr/share/zoneinfo/Asia/Beijing 就是了。这个目录里面的文件与底下要谈的两个文件(clock localtime)是有关系的。

    3./etc/sysconfig/clock:这个文件其实也不包含在NTP  daemon 当中,因为这个是linux的主要时区设定文件。每次开机后,Linux 会自动的读取这个文件来设定自己系统所默认要显示的时间。

    4./etc /localtime:这个文件就是本地端的时间配置文件。刚刚那个clock 文件里面规定了使用的时间设置文件(ZONE) /usr/share/zoneinfo/Asia/Beijing ,所以说,这就是本地端的时间了,此时, Linux系统就会将Beijing那个文件另存为一份/etc/localtime文件,所以未来我们的时间显示就会以Beijing那个时间设定文件为准。

    5. /etc/timezone:系统时区文件

     

        下面重点说说 /etc/ntp.conf文件的设置。在 NTP Server 的设定上面,其实最好不要对 Internet 无限制的开放,尽量仅提供您自己内部的 Client 端联机进行网络校时就好。此外, NTP Server 总也是需要网络上面较为准确的主机来自行更新自己的时间啊,所以在我们的 NTP Server 上面也要找一部最靠近自己的 Time Server 来进行自我校正。事实上, NTP 这个服务也是Server/Client 的一种模式。

    [root@linux ~]# vi /etc/ntp.conf
    # 1.
     关于权限设定部分
    #  权限的设定主要以 restrict 这个参数来设定,主要的语法为:
    #   restrict IP mask netmask_IP parameter
    #
       其中 IP 可以是软件地址,也可以是 default default 就类似 0.0.0.0
    #
      至于paramter则有:
    #   ignore :关闭所有的 NTP 联机服务
    #   nomodify:表示 Client 端不能更改 Server 端的时间参数,不过,

    #   Client 端仍然可以透过 Server 端来进行网络校时。
    #   notrust:该 Client 除非通过认证,否则该 Client 来源将被视为不信任网域
    #   noquery:不提供 Client 端的时间查询

    #   notrap:不提供trap这个远程事件登入

    #  如果paramter完全没有设定,那就表示该 IP (或网域)“没有任何限制

    restrict default nomodifynotrapnoquery # 关闭所有的 NTP 要求封包
    restrict 127.0.0.1    #这是允许本级查询
    restrict 192.168.0.1 mask 255.255.255.0 nomodify
    #
    192.168.0.1/24网段内的服务器就可以通过这台NTP Server进行时间同步了
    # 2. 上层主机的设定
    #  要设定上层主机主要以 server 这个参数来设定,语法为:
    #  server [IP|HOST Name] [prefer]
    #
      Server 后面接的就是我们上层 Time Server 啰!而如果 Server 参数
    #  后面加上perfer的话,那表示我们的 NTP 主机主要以该部主机来作为
    #  时间校正的对应。另外,为了解决更新时间封包的传送延迟动作,
    #  所以可以使用driftfile来规定我们的主机
    #  在与 Time Server 沟通时所花费的时间,可以记录在driftfile 
    #
      后面接的文件内,例如下面的范例中,我们的 NTP server  
    #
      cn.pool.ntp.org联机时所花费的时间会记录在 /etc/ntp/drift文件内
    server 0.pool.ntp.org

    server 1.pool.ntp.org

    server 2.pool.ntp.org

    server cn.pool.ntp.org prefer

    #其他设置值,以系统默认值即可

    server  127.127.1.0     # local clock

    fudge   127.127.1.0 stratum 10

    driftfile /var/lib/ntp/drift
    broadcastdelay  0.008
    keys /etc/ntp/keys

    总结一下,restrict用来设置访问权限,server用来设置上层时间服务器,driftfile用来设置保存漂移时间的文件。

     

    .ntp服务的启动与观察

    在启动NTP服务前,先对提供服务的这台主机手动的校正一次时间咯。(因为启动服务器,端口会被服务端占用,就不能手动同步时间了)

    [root@linux ~] # ntpdate cn.pool.ntp.org

    25 Apr 14:33:51 ntpdate[8310]: step time server 80.85.129.2 offset 6.655976 sec

    然后,启动ntpd服务:

    [root@linux ~] # servicentpd start

     [root@linux ~] # /etc/init.d/ntpd start

    查看端口:

    [root@linux ~] # netstat -ln|grep 123

    udp        0      0 192.168.228.153:123        0.0.0.0:*

    udp        0      0 127.0.0.1:123               0.0.0.0:*

    udp        0      0 0.0.0.0:123                  0.0.0.0:*

    udp        0      0 :::123                       :::*

    如何确认我们的NTP服务器已经更新了自己的时间呢?

    [root@linux ~] # ntpstat

    synchronized to NTP server(127.127.1.0) at stratum 11

    time correct to within 950ms

    polling server every 64 s

    #改指令可列出NTP服务器是否与上层联机。由上述输出结果可知,时间校正约

    #950*10(-6)秒。且每隔64秒会主动更新时间。

    常见的错误:

    25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found

    其实,这不是一个错误。而是由于每次重启NTP服务器之后大约要35分钟客户端才能与server建立正常的通讯连接。当此时用客户端连接服务端就会报这样的信息。一般等待几分钟就可以了。

    [root@linux ~] # ntptrace –n 127.0.0.1

    127.0.0.1:stratum 11, offset 0.000000synch distance 0.950951

    222.73.214.125stratum 2offset –0.000787synch distance 0.108575

    209.81.9.7:stratum 1offset 0.000028synch distance 0.00436refid ‘GPS’

    #这个指令可以列出目前NTP服务器(第一层)与上层NTP服务器(第二层)彼此之间的

    #关系

    [root@linux ~] # ntpq –p

     

    指令“ntpq -p”可以列出目前我们的NTP与相关的上层NTP的状态,以上的几个字段的意义如下:

    remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由“+”则代表目前正在作用钟的上层NTP,如果是“*”则表示也有连上线,不过是作为次要联机的NTP主机。

    refid:参考的上一层NTP主机的地址

    st:即stratum阶层

    when:几秒前曾做过时间同步更新的操作

    poll:下次更新在几秒之后

    reach:已经向上层NTP服务器要求更新的次数

    delay:网络传输过程钟延迟的时间

    offset:时间补偿的结果

    jitterLinux系统时间与BIOS硬件时间的差异时间

     

        最后提及一点,ntp服务,默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd文件。

    /etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。

     

     

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    linux配置时间服务器(ntp

    2007-10-27 16:34

    linux下,我们可以通过自带的NTP(Network Time Protocol)协议通过网络使自己的系统保持精确的时间。可用的公共时间服务器列表可以从下面的地址获取:

      http://ntp.isc.org/bin/view/Servers/NTPPoolServers

      NTP是用来使系统和一个精确的时间源保持时间同步的协议。建议大家在自己管理的网络中建立至少一台时间服务器来同步本地时间,这样可以使得在不同的系统上处理和收集日志和管理更加容易。

      介绍一下环境:179为本地时间服务器,其他服务器和179同步。179和网上时间服务器同步。

      一、配置179时间服务器

      1、首先查询NTP软件版本

      rpm -qa|grepntp

      ntp-4.1.2-4.EL3.1

      如果没有可以从linux安装盘上查找,安装此ntp

      2、编辑配置文件

      vi /etc/ntp.conf

      首先定义服务器

      server pool.ntp.org

      restrict default nomodifynotrapnoquery

      restrict 192.168.0.0 mask 255.255.255.0 notrustnomodifynotrap #192.168.0.1-192.168.0.254的服务器都可以使用我们的NTP服务器来同步时间。

      注释掉以下一行

      #restrict default ignore

      3、启动NTP服务器

      #chkconfigntpd on

      #/etc/init.d/ntpd start

      #/etc/init.d/ntpd stop

      #/etc/init.d/ntpd restart

      默认情况下,我们配置的NTP服务器不会去时间源那里同步时间,所以必须修改/etc/ntp/step-tickers文件,加入我们的时间源,这样每次通过/etc/init.d/ntpd来启动服务的时候就会自动更新时间了

      检查服务器同步状态:

      ntpq -p

      ntptrace 192.168.0.179

      如果输出正确,则说明时间服务器成功。每次启动服务器,会自动同步时间。

      配置LINUX客户端

      在linux客户端上执行ntpdatentp_server_ip就可以根据时间服务器统一局域网的时间了,将上面的命令放到cron里每天早上3点定期执行,crontab –e 然后输入

      0 3 * * * /usr/sbin/ntpdate 192.168.0.179

    为什么电脑要对时?因为电脑自己的钟不准。破电脑一天慢五分钟也不奇怪。

    对时需要对到什么精度?一般家用的电脑时钟误差一分钟完全可以接受。集群服务器配合工作一般需要所有的时钟同步在一秒之内。

    和谁同步?一般是和世界各地的 NTP Network Time Protocol)服务器同步的。米国标准时间由 NIST 发布,NIST 提供了一些服务器。现代 Windows 操作系统自动和 time.windows.com 对时。Linux 下面一般用NTPPool来自动选择服务器。中国国家授时中心 NTP 210.72.145.44 是中国权威时间。中国教育网有自己的NTP 服务器网。如果是集群服务器,一般会在内网配置几个本地 NTP 服务器。

    上面这么多 NTP 服务器有没有优劣呢?有的,但是对于一般的应用来说,看不出什么区别。理论上说,NTP 服务器是分等级(Stratum)的,Stratum = 1  NTP 服务器是直接和世界标准时钟同步的,包括 GPS 时间、铯原子钟、某些手机网络等。NIST、中国国家授时中心和中国教育网的第一级时间服务器都是这个级别的。Stratum = 2  NTP 服务器是和 Stratum = 1的服务器同步的,性能稍差,但精确度也在毫秒的量级,所以用起来没什么区别。再往下每同步一级,Stratum 就加一。

    Windows 2000 开始包含了自动时间同步的服务。Windows XP 上,打开时间设置就有网络对时的设置。默认是每星期和time.windows.com 对时一次。这个一星期同步一次太长了,可以通过注册表调整,或者用Wits修改。

    Linux 下面的ntpd就要灵活多啦。默认配置一般足够好用。下面在 Fedora 下举个例子。配置:

    # grep "^server" /etc/ntp.conf
    server 0.pool.ntp.org
    server 1.pool.ntp.org
    server 2.pool.ntp.org
    server pool.ntp.org
    server   127.127.1.0 # local clock

    启动ntpd之后查看状态

    # ntpq -pn
          remote            refid       st t when poll reach    delay    offset   jitter
    ==============================================================================
     64.25.87.54      128.118.25.5      2 u    10    64    17    79.194   -542.89    1.942
     64.72.116.51     129.7.1.66        2 u     9    64    17    51.569   -532.23    1.803
     64.72.116.50     129.7.1.66        2 u    11    64    17    51.417   -516.70    1.417
     64.72.116.45     129.7.1.66        2 u     7    64    17    51.586   -532.36    1.135
    *127.127.1.0      LOCAL(0)         10 l     3    64    17     0.000     0.000    0.001

    st这列显示自动选的四个 NTP 服务器都是 Stratum = 2。最后一个是本地时钟。前四行的 offset 显示本地时钟和四个 NTP 服务器都有大概 500 毫秒的差距。ntpstat显示目前只和本地时钟同步:

    # ntpstat
    synchronised to local net at stratum 11
        time correct to within 949 ms
        polling server every 64 s

    过一会再看:

    # ntpq -pn
          remote            refid       st t when poll reach    delay    offset   jitter
    ==============================================================================
    +64.25.87.54      128.118.25.5      2 u    56    64   377    78.548   250.871   37.180
    +64.72.116.51     129.7.1.66        2 u    58    64   377    51.551   268.538   36.817
    *64.72.116.50     129.7.1.66        2 u    58    64   377    51.539   274.497   36.629
    +64.72.116.45     129.7.1.66        2 u    49    64   377    51.485   271.750   37.841
     127.127.1.0      LOCAL(0)         10 l    44    64   377     0.000     0.000    0.001
    # ntpstat
    synchronised to NTP server (64.72.116.50) at stratum 3
        time correct to within 263 ms
        polling server every 64 s

    本地时钟已经成功和外面的 NTP 服务器同步。ntpq报告中第一列 * 表示目前选择的主同步服务器,标 + 的表示有可能被用来进一步提高同步精度的次要服务器。因为是和 Stratum = 2 的服务器同步,所以本地的ntpd Stratum 就是 3 了。一个细节是ntpq对时钟是慢慢调整的,而不是直接跳好多秒,这样平滑的调整时间可以保证很多程序的流程平稳。不过,如果时钟误差过大,ntpd可能会拒绝调整时间;或者有人也可能希望立刻调正时间,这样的话可以直接执行命令:ntpdate -b pool.ntp.org(需要停掉ntpd服务执行)。

    在我另一个服务器上,配置了好多 NTP 服务器:

    # grep "^server" /etc/ntp.conf
    server time-a.nist.gov
    server time-b.nist.gov
    server time.nist.gov
    server time.windows.com
    server 0.pool.ntp.org
    server 1.pool.ntp.org
    server 2.pool.ntp.org
    server pool.ntp.org
    server   127.127.1.0 # local clock
    # ntpq -p
          remote            refid       st t when poll reach    delay    offset   jitter
    ==============================================================================
    +time-a.nist.gov .ACTS.            1 u    61   128   377    76.113    -1.046    3.424
    *time-b.nist.gov .ACTS.            1 u    65   128   377    81.063     0.398    1.892
    -time.nist.gov    .ACTS.            1 u   251   128   356    38.911     1.353   30.226
    -time.windows.co 18.26.4.105       2 u    45   128   267    31.218    13.180    6.039
    -194.109.64.200   192.87.106.2      2 u   122   128   377   155.132     0.596   38.674
    -a.mirror.fizzel 43.75.42.44       3 u    56   128   377   163.391   -11.756   13.006
    -enfield.ikk.szt 195.111.99.186    2 u   118   128   377   188.326    -2.520   32.359
    +ntp1.esat.net    .GPS.             1 u    59   128   377   161.103    -1.321    0.460
    LOCAL(0)         .LOCL.           10 l    48    64   377   

    展开全文
  • 本人花2天时间学习简单http协议然后写了个破代码在imdb上爬取了MovieLens数据集的配图,由于MovieLens中的数据集链接已失效,所以只能根据imdb网站的搜索引擎慢慢爬取图片。希望对毕设为推荐系统的童鞋有些许作用。...
  • 触发器:建立时间和保持时间

    千次阅读 2019-10-08 11:03:45
    什么是建立时间和保持时间 建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够, 数据将不能在这个时钟上升沿被打入触发器。 保持时间(hold time)是指在...

    什么是建立时间和保持时间

    建立时间(setup time)是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,

    数据将不能在这个时钟上升沿被打入触发器。

    保持时间(hold time)是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,

    数据同样不能被打出触发器。

    传输延时(transmission delay)数据相对于时钟上升沿tc-q后从触发器输出至Q端,则tc-q称为寄存器的传输延时

    恢复时间(recovery time)是复位/置位信号无效到时钟翻转的时间,也称为复位/置位信号的建立时间

    清除时间(recoval time)是时钟边沿之后复位/置位信号必须仍然保持有效的时间,也称为复位/置位信号的保持时间

     

    拓扑图:蔡建辉

    最小时钟周期

    T≥tc-q max+ tp-logic max + tsu

    当两级触发器之间的数据传输在一个时钟周期内完成时,其传输周期为最小。而当tc-q + tp-logic + tsu大于T时,后 续的触发器的setup时间将得不到满足。组合逻辑的传输延时为tp-logic

    最大时钟频率

    f≥1 / (tc-q + tp-logic + tsu)

    最小维持时间

    tc-q min + tp-logic min + tsu min ≥ t hold

    当电路的hold时间大于tc-q min + tp-logic min + tsu min时,可能出现因为数据传递过快,也就是在后一级触发器采样的时候,有可能出现一个时钟沿传递两个数据的情况,后一级触发器采样数据可能误采样,导致有效数据被覆盖。

    展开全文
  • 磅开源,如何在微信小程序上ble蓝牙网esp32,blufi的那些事!
  • WiFi网~智能家居网解决方案

    千次阅读 2019-01-19 18:41:13
    1. 什么是网? 2. 如何解决网? 3. 方案一, 4. 方案二 5. 方案三
  • 1.设置服务器A为时间服务器 vim /etc/ntp.conf #最后一行加入下面一行,保存退出 server 127.127.1.0 #重启时间服务器 service ntpd restart 2.B服务器同步A服务器的时间 [root@bak-thinkee ~]# systemctl stop ...
  • 高程误差赋表

    2012-10-30 16:25:55
    用于高差赋,很简单方便。只需要将所测得的数据输入其中,就可以算的算得所要的数据。简单方便,节省时间
  • 如果我的文章缺少了自己画的图片,相当于失去了灵魂,技术文章本身就很枯燥,如果文章中没有几张图片,读者被劝退的概率飙飙升,剩下没被劝退的估计看着看着就睡着了。所以,精美的图片可以说是必不可少的一部分,...
  • 数据结构KMP算法配图详解(超详细)

    万次阅读 多人点赞 2020-02-18 22:02:42
    KMP算法配图详解 前言 KMP算法是我们数据结构串中最难也是最重要的算法。难是因为KMP算法的代码很优美简洁干练,但里面包含着非常深的思维。真正理解代码的人可以说对KMP算法的了解已经相当深入了。而且这个算法的...
  • 不知道高德、百度、谷歌、腾讯的地图是怎么配图的。 毕竟这种大型的电子地图,应该不是常规的GIS产品吧。 arcgis中的arcmap应该是很常用的地图呈现软件。很多GIS服务地图应该都是用arcmap配的mxd文件吧。 esri...
  • 关于ADC采样的采样频率,采样时间的问题:(我目前的想法) 一例题开讲: 信号源为5KHZ的正弦波(一个周期),(就已知周期为200us)。 要求:完整的输出这个正弦波(周期无数)。 首先要确定采样频率,即一个周期采...
  • BLE Mesh(六)网流程

    千次阅读 2020-07-25 18:00:18
    网流程概述网协议网承载层(Provisioning Bearer)网协议(Provisioning Protocol)流程详解发送Beacon信号邀请交换公共密钥认证输出带外(Output OOB)输入带外(Input OOB)静态带外(Static OOB) 或无带外(No...
  • Ant Design 官方的文档好像没更新,反正是用起来没成功,官方的文档和代码也是互相矛盾,我来介绍下我是怎么做国际化的。 Antd 的国际化依赖于 yahoo/react-intl。 在看这篇文章之前,建议大家看看 antd/antd-...
  • 随着时间的增长,钢中马氏体发生回火现象,奥氏体发生分解,强度、延伸率降低.当时间达到1 000 s时,屈服强度、延伸率突然升高.分析认为马氏体回火带来的塑性提高抵消了残余奥氏体量减少引起的塑性降低,...
  • 本文详解pd.Timestamp方法创建日期时间对象、pd.Timestamp、pd.DatetimeIndex方法创建时间序列及pd.date_range创建连续时间序列、 pd.to_datetime、str和parse方法用于字符串与时间格式的相互转换、truncate方法截取...
  • cron表达式转换为时间格式

    千次阅读 2018-08-17 14:58:36
    cron表达式转换为时间格式。 说明:代码是基于当天零点,生成今天的所有的cron表达式对应的时间。 废话不说,上代码(大神勿喷)。 import java.text.ParseException; import java.text.SimpleDateFormat; ...
  • ESP8266_21基于ESP8266的一键

    千次阅读 2019-11-07 18:39:16
    ESP8266_17简单网络时间协议-SNTP ESP8266_18 MQTT协议接入ONENET平台 ESP8266_19MQTT协议接入ONENET平台_订阅主题 ESP8266_20 基于ONENET平台的数据上传之TCP的POST操作 ESP8266_21基于ESP8266的一键...
  • ESP8266+安信可微信智能

    千次阅读 热门讨论 2020-06-10 21:55:36
    示例3.blinker添加智能网四.开始网1.微信网2. EspTouch软件五.总结 ESP8266 一.前言 ESP8266模块深受发大电子爱好者的追捧,但是ESP8266连接网络是个问题,相信好多朋友都是将wifi名称和密码写死在代码中的,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 424,979
精华内容 169,991
关键字:

关于时间的配图