interval

MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法

蹲街弑〆低调 提交于 2020-03-01 16:23:21
在MySQL应用时,经常要使用这两个函数TIMESTAMPDIFF和TIMESTAMPADD。 一,TIMESTAMPDIFF 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。 说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。该参数必须是以下值的其中一个: FRAC_SECOND。表示间隔是毫秒 SECOND。秒 MINUTE。分钟 HOUR。小时 DAY。天 WEEK。星期 MONTH。月 QUARTER。季度 YEAR。年 使用如下: mysql> select TIMESTAMPDIFF(day,'2012-08-24','2012-08-30'); +----------------------------------------------+ | TIMESTAMPDIFF(day,'2012-08-24','2012-08-30') | +----------------------------------------------+ | 6 | +----------------------------------------------+ 1 row in set (0.00 sec)

JavaScript中的Timer是怎么工作的

左心房为你撑大大i 提交于 2020-03-01 01:45:40
作为入门者来说,了解JavaScript中timer的工作方式是很重要的。通常它们的表现行为并不是那么地直观,而这是因为它们都处在一个单一线程中。让我们先来看一看三个用来创建以及操作timer的函数。 var id = setTimeout(fn, delay); - 初始化一个单一的timer,这个timer将会在一定延时后去调用指定的函数。这个函数(setTimeout)将返回一个唯一的ID,我们可以通过这个ID来取消timer。 var id = setInterval(fn, delay); - 与setTimeout类似,只不过它会持续地调用指定的函数(每次都有一个延时),直到timer被取消为止。 clearInterval(id); , clearTimeout(id); - 接受一个timer的ID(由上述的两个函数返回的),并且停止timer的回调事件。 要搞明白timer在内部是怎么工作的,我们还需要知道一个很重要的概念:timer的延时并不是每次都能如你所愿的。由于在同一个浏览器中所有的JavaScript都只在单一线程中执行,那些异步的事件(比如说鼠标点击,或者timer)只在执行期出现空闲的时候才会运行。这个用图最能表示清楚了,请参见下图: (点击查看大图) 在这个示例中有很多信息可以挖掘

JavaScript中timer是如何工作的

梦想的初衷 提交于 2020-02-29 03:10:35
作为入门者来说,了解JavaScript中timer的工作方式是很重要的。通常它们的表现行为并不是那么地直 观,这是因为它们都处在单线程中。让我们先来看看三个用来出创建和操作timer的函数。 var id = setTimeout(fn, delay); 初始化这个timer,然后这个timer将会在delay延时后调用这个函数fn。这个函数将返回一个唯一的ID,可以通过这个ID来取消timer。 var id = setInterval(fn, delay); 与setTimeout类似,不过它会持续调用函数fn(每隔delay毫秒),直到timer被取消。 clearTimeout(id); clertInterval(id); 接受一个timer的ID,并停止timer的回调事件。 为了理解timer内部工作原理,我们还需要知道一个重要的概念:timer的延时是不准确的。由于浏览器中的JavaScript在单线程中运行,因此异步事件(如mouse click以及timer)只有在执行期空闲的时候才运行。这个用图表最能解释清楚了,参看下图: 这个图标中有大量的信息可以挖掘,但是完全理解它将使我们对JavaScript中异步事件执行原理有个更深的认识。这是一张一维图:数值方向为时间,单位毫秒。蓝色的框表示正在执行的JavaScript片段。举个例子

php---header函数设置浏览器缓存

落爺英雄遲暮 提交于 2020-02-28 17:27:32
这涉及到4种头标类型: Last-Modified(最后修改时间); Expires(有效期限); Pragma(编译指示); Cache-Control(缓存控制); 前三个头标属于HTTP1.0标准。头标Last-Modified使用UTC日期时间值。如果缓存系统发现Last-Modified值比页面缓存版本的更接 近当前时间,他就知道应该使用来自服务器的新版本。 Expires 表明了缓存版本何时应该过期(格林威治标准时间)。把它设置为一个以前的时间就会强制使用服务器上的页面。 Pragma生命了页面数据应该如何被处理。可以这样避免对页面进行缓存: header("Pragma:no-cache"); Cache-Control 头标是在HTTP1.1里添加的,能够实现更细致的控制(还应该继续使用HTTP1.0头标)。Cache-Control的设置有 很多,如下表: 指令 含义 public 可以在任何地方缓存 private 只能被浏览器缓存 no-cache 不能在任何地方缓存 must-revalidate 缓存必须检查更新版本 proxy-revalidate 代理缓存必须检查更新版本 max-age 内容能够被缓存的时期,以秒表示 s-maxage 覆盖共享缓存的max-age设置 下面实例利用header()设置浏览器的缓存: <?php # Script 2

rxjs6 Combination Operators

烈酒焚心 提交于 2020-02-28 03:25:15
combineAll 组合多个流, 每次有一个流更新时, 发出所有流最新值的数组 const source$ = of(200, 400, 600) source$.pipe( map(v => interval(v)), combineAll() ).subscribe(console.log) combineLatest 由rxjs导入, 和combineAll作用一样, 用于组合最新的观察值 const {combineLatest, interval, of} = require('rxjs') const {map} = require('rxjs/operators') const source1$ = interval(200) const source2$ = interval(400) const source3$ = interval(600) // 可传入数组或者参数式逐个传入 // combineLatest(source1$, source2$, source3$).subscribe(console.log) combineLatest([source1$, source2$, source3$]).subscribe(console.log) concat / concatAll 串行连接流, 只有当前面的流完成后, 才会从继续后面的流中继续取数据

rxjs6 Utility Operators

余生颓废 提交于 2020-02-25 23:21:35
Utility Operators tap 用于执行副作用的函数 interval(100).pipe( take(3), tap(v => console.log('tap', v)) ).subscribe(v => console.log('sub', v)) // tap 0 // sub 0 // tap 1 // sub 1 // tap 2 // sub 2 delay 在流开始的时候延时执行 let st = +new Date() interval(100).pipe( delay(200) ).subscribe(v => { let ed = +new Date() console.log('sub', v, ed - st) st = ed }) // sub 0 303 // sub 1 99 // sub 2 102 // sub 3 102 delayWhen 延迟到内层流输出数据 let st = +new Date() interval(100).pipe( // delay(200) delayWhen(() => interval(200)) ).subscribe(v => { let ed = +new Date() console.log('sub', v, ed - st) st = ed }) // sub 0 303 // sub

rxjs6 Filtering Operators

老子叫甜甜 提交于 2020-02-25 18:43:39
debounce / debounceTime 防抖, 一直输入的情况下, 只有输入间隔大于200ms时发送数据, 减少无用请求数 change$.pipe( debounce(() => interval(200)) ).subscribe(console.log) change$.pipe( debounceTime(200) ).subscribe(console.log) distinct 去重, 可以传入一个 keySelector 的函数 // 1,2,3 of(1, 2, 1, 2, 3).pipe( distinct() ).subscribe(console.log) // { name: 'a' } { name: 'b' } of( {name: 'a',}, {name: 'b'}, {name: 'a'} ).pipe( distinct(v => v.name) ).subscribe(console.log) distinctUntilChanged 完整的去重需要维护一个set, 为了节省内存, 可以只和上一个比较, 常用于已经排序的情况 of( {age: 4, name: 'Foo'}, {age: 7, name: 'Bar'}, {age: 5, name: 'Foo'}, {age: 6, name: 'Foo'}, ).pipe(

MySQL时间函数 date_sub(), weekday(), curdate()

☆樱花仙子☆ 提交于 2020-02-24 11:05:25
date_sub 含义: 从日期减去指定的时间间隔. 语法格式: SELECT DATE_SUB(date,INTERVAL expr unit) 案例: select date_sub(curdate(),INTERVAL WEEKDAY(curdate())-26 DAY) 日期表示: 年-月-日 时间表示: 年-月-日 时:分:秒 解读: select curdate(); #获取当前日期 select WEEKDAY(curdate()); #WEEKDAY函数返回一个日期的工作日索引值,即星期一为0,星期二为1,星期日为6。 select WEEKDAY(curdate()) - 26; select date_sub('2020-02-24', INTERVAL 26 DAY); #当前日期减去26天的时间 select date_sub('2020-02-24', INTERVAL -26 DAY); #当前日期减去负26天的时间,即加26天 来源: https://www.cnblogs.com/smileblogs/p/12355903.html

APScheduler

老子叫甜甜 提交于 2020-02-12 07:20:48
1 简介 APScheduler 的全称是 Advanced Python Scheduler 。它是一个轻量级的 Python 定时任务调度框架。 APScheduler 支持三种调度任务:固定时间间隔,固定时间点(日期),Linux 下的 Crontab 命令 。同时,它还支持异步执行、后台执行调度任务。 2 安装 使用 pip 包管理工具安装 APScheduler 是最方便快捷的。 pip install APScheduler # 如果出现因下载失败导致安装不上的情况,建议使用代理 pip --proxy http://代理ip:端口 install APScheduler 3 使用步骤 APScheduler 使用起来还算是比较简单。运行一个调度任务只需要以下三部曲。 新建一个 schedulers (调度器) 。 添加一个调度任务(job stores)。 运行调度任务。 下面是执行每 2 秒报时的简单示例代码: import datetime import time from apscheduler.schedulers.background import BackgroundScheduler def timedTask(): print(datetime.datetime.utcnow().strftime("%Y-%m-%d %H:%M:%S.%f")[:-3

[leetcode]Meeting Rooms II

℡╲_俬逩灬. 提交于 2020-02-09 00:43:10
将时间点排序就行 class Solution: def minMeetingRooms(self, intervals: List[List[int]]) -> int: points = [] for interval in intervals: points.append([interval[0], 1]) points.append([interval[1], -1]) points.sort() result = 0 cnt = 0 for point in points: cnt += point[1] result = max(result, cnt) return result    来源: https://www.cnblogs.com/lautsie/p/12285874.html