time函数

Flink 实现指定时长或消息条数的触发器

落花浮王杯 提交于 2019-12-04 00:47:13
Flink 中窗口是很重要的一个功能,而窗口又经常配合触发器一起使用。 Flink 自带的触发器大概有: CountTrigger: 指定条数触发 ContinuousEventTimeTrigger:指定事件时间触发 ContinuousProcessingTimeTrigger:指定处理时间触发 ProcessingTimeTrigger: 默认触发器,窗口结束触发 EventTimeTrigger: 默认处理时间触发器,窗口结束触发 NeverTrigger:全局窗口触发器,不触发 但是没有可以指定 时间和条数一起作为触发条件的触发器 ,所有就自己实现了一个(参考:ProcessingTimeTrigger、CountTrigger) 先看下测试数据生成代码,有个判断语句,随机睡眠一定时间,控制条数和时间触发器的都可以触发 while (true) { val map = Map("id" -> i, "createTime" -> getCreateTime(), "amt" -> (MathUtil.random.nextInt(10) + "." + MathUtil.random.nextInt(10))) val jsonObject: JSONObject = new JSONObject(map) println(jsonObject.toString()) /

[Leetcode]636. Exclusive Time of Functions

半腔热情 提交于 2019-12-03 20:18:33
链接: LeetCode636 给一个 \(n\) 个函数运行记录的log数组,表示非抢占式CPU调用函数的情况,即同时只能运行一个函数。格式为 \(id:start\ or\ end:time\) ,求每个函数占用cpu的总时间。 Input: n = \(2\) logs = \(["0:start:0","1:start:2","1:end:5","0:end:6"]\) Output: \([3, 4]\) 相关标签: 栈 首先要弄明白一点:当遍历到logs中的某个字符串时,无论它是begin还是end,当前位于栈顶的元素都会占用 “当前字符串的timePoint-之前字符串的timePoint”(或+1) 时间。 因为如果当前遍历到的字符串是start,那么栈顶元素就是之前start了还没结束的function,在 当前时间点 和 上一个时间点 之间的这段时间,是被栈顶元素占用的,占用了 “当前字符串的timePoint-之前字符串的timePoint” 时间。 算法的关键在于:拿到上一个log的 start/stop time 设为prev,再拿到当前 log 的 start/stop time ,计算出两个time之间的时间差。这也可以同比为,每次计算一个log的占用时间delta,将栈里面的数都减去delta。 python: class Solution: def

mysql计算时间

▼魔方 西西 提交于 2019-12-03 19:58:32
一、MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now(); +---------------------+ | now() | +---------------------+ | 2008-08-08 22:20:46 | +---------------------+ 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: current_timestamp() ,current_timestamp ,localtime() ,localtime ,localtimestamp -- (v4.0.6) ,localtimestamp() -- (v4.0.6) 这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now() 来替代上面列出的函数。 1.2 获得当前日期+时间(date + time)函数:sysdate() sysdate() 日期时间函数跟 now() 类似,不同之处在于:now() 在执行开始时值就得到了, sysdate() 在函数执行时动态得到值。看下面的例子就明白了: mysql> select now(), sleep(3), now(); +---------------------+----------

定时器实现与分析

北慕城南 提交于 2019-12-03 17:35:24
定时器实现与分析 描述 服务器中,定时器是一个很重要的组件。最近在看自己项目中的定时器实现,参考了一些资料,也思考了一下几个可以优化的方向。为了简化下面对比的几个实现,首先抽象出定时器应该有的几个操作: 注册定时器 void schedule(const IEventPtr& handler, const DateTime beginDt, const Interval& interval); 停止定时器 void cancel(const IEventPtr& handler); 触发定时器 void expireTimer(); 其中注册的定时器分两种,一种只执行一次,注册时interval为0;另一种为可重复执行的定时器,interval为第一次启动后的执行间隔。 最原始直观的做法——链表实现 链表实现的定时器是最简单直观的做法,每一个定时器作为一个链表的节点,添加的时候就直接插入到链表末端,时间复杂度O(1),然而停止定时器的时候就需要遍历链表,最坏情况需要遍历整个链表,时间复杂度为O(n),而触发定时器同样需要用当前时间与所有定时器作比较,触发比当前时间小的定时器,时间复杂度也为O(n)。 以下为简化后的几个基础操作: 定时器节点: class TimeNode { public: TimeNode(const IEventPtr& handler, const

boost::thread线程管理

≯℡__Kan透↙ 提交于 2019-12-03 14:46:54
6.1. 概述 线程就是,在同一程序同一时间内允许执行不同函数的离散处理队列。 这使得一个长时间去进行某种特殊运算的函数在执行时不阻碍其他的函数变得十分重要。 线程实际上允许同时执行两种函数,而这两个函数不必相互等待。 一旦一个应用程序启动,它仅包含一个默认线程。 此线程执行 main() 函数。 在 main() 中被调用的函数则按这个线程的上下文顺序地执行。 这样的程序称为单线程程序。 反之,那些创建新的线程的程序就是多线程程序。 他们不仅可以在同一时间执行多个函数,而且这在如今多核盛行的时代显得尤为重要。 既然多核允许同时执行多个函数,这就使得对开发人员相应地使用这种处理能力提出了要求。 然而线程一直被用来当并发地执行多个函数,开发人员现在不得不仔细地构建应用来支持这种并发。 多线程编程知识也因此在多核系统时代变得越来越重要。 本章将介绍C++ Boost库 Boost.Thread ,它可以开发独立于平台的多线程应用程序。 6.2. 线程管理 在这个库最重要的一个类就是 boost::thread ,它是在 boost/thread.hpp 里定义的,用来创建一个新线程。下面的示例来说明如何运用它。 #include <boost/thread.hpp> #include <iostream> void wait(int seconds) { boost::this

JavaScript,Python 不同语言下的时区获取问题

非 Y 不嫁゛ 提交于 2019-12-03 13:35:33
JS web端时区相关问题 1 // 获取当前UTC时间 2 function get_utctime() 3 { 4 var d = new Date(); 5 console.log(d.getTimezoneOffset()) ; // 获取时区偏移,分钟 6 console.log(d.getTime()); // 获取时间戳,毫秒为单位 7 return (d.getTimezoneOffset()*60*1000+d.getTime()); // UTC时间 毫秒 8 } 9 10 // 设置任意时区 11 function set_zone_time(zone) 12 { 13 var time = get_utctime()+zone*60*60*1000; 14 return new Date(time); // 返回时间对象 15 } 16 17 // 对Date的扩展,将 Date 转化为指定格式的String 18 // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, 19 // 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字) 20 // 例子: 21 // (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07

线程.Qt更新界面

独自空忆成欢 提交于 2019-12-03 09:22:59
1、信号&槽 机制 即可  ZC:个人暂时 测试下来,类似是 PostMessage(...)的方式:   a、是在各自的线程中执行代码,   b、调用 emit不耗时(指的意思是 像调用PostMessage(...)一样 扔完就算,具体 slot中需要执行多久 不关“emit ???()”的事) 2、测试代码:  2.1、h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include <QThread> namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void slot01(); void on_pushButton_3_clicked(); private: Ui::MainWindow *ui; int FiCnt; public: void UpdateCnt(); }; class TthreadZ :public QThread { Q_OBJECT public: explicit

Python数据类型详解03

守給你的承諾、 提交于 2019-12-03 09:07:55
原文博客地址: Python数据类型详解03 第一篇 Python数据类型详解01 中主要介绍了 Python 中的一些常用的数据类型的基础知识 第二篇 Python数据类型详解02 文章中, 详细介绍了数字( Number )和字符串的一些函数和模块的使用 这篇文章主要介绍一些 Python 中的一序列(列表/元组/字典) 一. 列表(List) 先回顾下上一篇 Python数据类型详解01 文章中介绍的列表的基础知识 # List 列表 list1 = [ 12 , 34 , 3.14 , 5.3 , 'titan' ] list2 = [ 10 , 'jun' ] # 1.完整列表 print(list1) # 2.列表第一个元素 print(list1[ 0 ]) # 3.获取第2-3个元素 print(list1[ 1 : 2 ]) # 4.获取第三个到最后的所有元素 print(list1[ 2 :]) # 5.获取最后一个元素 print(list1[- 1 ]) # 6.获取倒数第二个元素 print(list1[- 2 ]) # 7.获取最后三个元素 print(list1[- 3 :- 1 ]) # 8.合并列表 print(list1 + list2) # 9.重复操作两次 print(list2 * 2 ) 1.添加和删除列表元素

python调用时间装饰器检测函数运行时间

此生再无相见时 提交于 2019-12-03 08:11:31
用一个装饰器,监控程序的运行时间 import time def count_time(func): def int_time(*args, **kwargs): start_time = time.time() # 程序开始时间 func() over_time = time.time() # 程序结束时间 total_time = over_time - start_time print('程序共计%s秒' % total_time) return int_time @count_time def main(): print('>>>>开始计算函数运行时间') x = 0 for i in range(1000000): x=x//13 print(x) if __name__ == '__main__': main() 来源: https://www.cnblogs.com/duoba/p/11784576.html