毫秒

nodejs事件循环

孤人 提交于 2019-12-01 00:54:07
这两天系统地学习了一下nodejs中的时间循环机制。这篇Post将把其基本内容以及我当时遇到的问题都记录下来。 Note :为避免理解冲突,将在官方文档的例子上进行理解。 基础knowledge nodejs的event loop是javascript实现非阻塞IO的手段。 node的整体结构 借用一张图: nodejs由c/c++库(主要为libuv依赖、v8实现部分和其它)和js实现的核心库。 node的事件循环 既然本篇主要讨论事件循环,基本理解一下node中事件循环与js代码的对应关系: 这里只补充一下pending IO callback 这一phase。这个阶段主要处理一些IO操作的回调,比如读文件的回调,网络请求完成的回调等(排除任何close回调)。 每个phase有一个类似FIFO的堆栈。当运行到这个phase时,如果有回调的话,会从这个回调堆栈中取出所有回调来执行,或者是到达了该phase的最大执行数限制,接着进入下一phase。 nodejs代码运行流程 从main.js开始运行主程序代码,接着判断是否event loop结束(如果事件循环一轮都没有任何回调了,说明可以终止进程了)。有的话,会从timer phase开始进行event loop。 nodejs event loop基础 上图是nodejs官网的图。表明event loop由以上phase组成:

nodejs事件循环

不打扰是莪最后的温柔 提交于 2019-12-01 00:07:43
这两天系统地学习了一下nodejs中的时间循环机制。这篇Post将把其基本内容以及我当时遇到的问题都记录下来。 Note :为避免理解冲突,将在官方文档的例子上进行理解。 基础knowledge nodejs的event loop是javascript实现非阻塞IO的手段。 node的整体结构 借用一张图: nodejs由c/c++库(主要为libuv依赖、v8实现部分和其它)和js实现的核心库。 node的事件循环 既然本篇主要讨论事件循环,基本理解一下node中事件循环与js代码的对应关系: 这里只补充一下pending IO callback 这一phase。这个阶段主要处理一些IO操作的回调,比如读文件的回调,网络请求完成的回调等(排除任何close回调)。 每个phase有一个类似FIFO的堆栈。当运行到这个phase时,如果有回调的话,会从这个回调堆栈中取出所有回调来执行,或者是到达了该phase的最大执行数限制,接着进入下一phase。 nodejs代码运行流程 从main.js开始运行主程序代码,接着判断是否event loop结束(如果事件循环一轮都没有任何回调了,说明可以终止进程了)。有的话,会从timer phase开始进行event loop。 nodejs event loop基础 上图是nodejs官网的图。表明event loop由以上phase组成:

nodejs事件循环

為{幸葍}努か 提交于 2019-12-01 00:05:12
这两天系统地学习了一下nodejs中的时间循环机制。这篇Post将把其基本内容以及我当时遇到的问题都记录下来。 Note :为避免理解冲突,将在官方文档的例子上进行理解。 基础knowledge nodejs的event loop是javascript实现非阻塞IO的手段。 node的整体结构 借用一张图: nodejs由c/c++库(主要为libuv依赖、v8实现部分和其它)和js实现的核心库。 node的事件循环 既然本篇主要讨论事件循环,基本理解一下node中事件循环与js代码的对应关系: 这里只补充一下pending IO callback 这一phase。这个阶段主要处理一些IO操作的回调,比如读文件的回调,网络请求完成的回调等(排除任何close回调)。 每个phase有一个类似FIFO的堆栈。当运行到这个phase时,如果有回调的话,会从这个回调堆栈中取出所有回调来执行,或者是到达了该phase的最大执行数限制,接着进入下一phase。 nodejs代码运行流程 从main.js开始运行主程序代码,接着判断是否event loop结束(如果事件循环一轮都没有任何回调了,说明可以终止进程了)。有的话,会从timer phase开始进行event loop。 nodejs event loop基础 上图是nodejs官网的图。表明event loop由以上phase组成:

分库分表之后,id 主键如何处理?

空扰寡人 提交于 2019-11-30 18:07:52
面试题 分库分表之后,id 主键如何处理? 面试官心理分析 其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个 全局唯一 的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。 面试题剖析 基于数据库的实现方案 数据库自增 id 这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。 这个方案的好处就是方便简单,谁都会用; 缺点就是单库生成 自增 id,要是高并发的话,就会有瓶颈的;如果你硬是要改进一下,那么就专门开一个服务出来,这个服务每次就拿到当前 id 最大值,然后自己递增几个 id,一次性返回一批 id,然后再把当前最大 id 值修改成递增几个 id 之后的一个值;但是 无论如何都是基于单个数据库 。 适合的场景 :你分库分表就俩原因,要不就是单库并发太高,要不就是单库数据量太大;除非是你 并发不高,但是数据量太大 导致的分库分表扩容,你可以用这个方案,因为可能每秒最高并发最多就几百,那么就走单独的一个库和表生成自增主键即可。 设置数据库 sequence 或者表自增字段步长 可以通过设置数据库 sequence 或者表的自增字段步长来进行水平伸缩。 比如说

全面解析Java日期时间API

泄露秘密 提交于 2019-11-30 12:12:20
全面解析Java日期时间API 时区 GMT(Greenwich Mean Time):格林尼治时间,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。 UTC(Universal Time Coordinated):统一协调时间,其以原子时秒长为基础,在时刻上尽量接近于格林尼治标准时间,标准 UTC 时间格式 yyyy-MM-dd'T'HH:mm:ss.SSSXXX 。 格林尼治时间已经不再被作为标准时间使用,UTC 是最主要的世界时间标准。 Java提供了获取当前时间的方法 System.currentTimeMillis(),返回当前时间,以毫秒为单位,表示的就是当前时刻至 1970-01-01 00:00:00.000 的毫秒差值。返回的long值可以用来初始化java.util.Date, java.sql.Date, java.sql.Timestamp和java.util.GregorianCalendar对象。 System.nanoTime(),返回一个时间值(系统计时器的当前值),精确到纳秒。它是由 JVM 提供的一个时间,主要用来精确衡量两个时间段之间的时间 例如,要测量一些代码需要执行多长时间,实现如下, long startTime = System.nanoTime(); //...the code being

Jmeter学习笔记(十一)——定时器

倖福魔咒の 提交于 2019-11-30 12:03:35
默认情况下,Jmeter线程在发送请求之间没有间歇。不设置定时器,短时间内会产生大量访问请求,导致服务器被请求淹没,利用Jmeter进行压测时,一般会和定时器一起,控制请求的吞吐量和并发数。 一、定时器的作用域 1、 定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面); 2、 当执行一个sampler之前时,所有当前作用域内的定时器都会被执行; 3、 如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入; 4、 如果希望在sampler执行完之后再等待,则可以使用Test Action; 二、Jmeter4.0的九种定时器 三、定时器详细介绍 1、固定定时器 如果你需要让每个线程在请求之前按相同的指定时间停顿,那么可以使用这个定时器;需要注意的是,固定定时器的延时不会计入单个sampler的响应时间,但会计入事务控制器的时间。 2、高斯随机定时器 如需要每个线程在请求前按随机时间停顿,那么使用这个定时器,下图表示暂停时间会分布在100到400之间,计算公式参考:Math.abs((this.random.nextGaussian() * 300) + 100) 例如在访问百度首页,然后输入关键词进行搜索,受网络、人等各种因素影响,有的人打开首页后 3s 后则进行了搜索,有时则是 10s或更多时间,在正常情况下

Java中的Date类

邮差的信 提交于 2019-11-30 09:29:35
一、所属的包 java.util.Date 二、含义 表示特定的瞬间,精确到毫秒。 Tips: 毫秒值可以对时间和日期进行计算。(1998-11-15到2019-11-25多少天,先将日期转为毫秒计算,再把毫秒转为日期) 英国格林威治规定时间原点:1970-01-01 00:00:00。中国在东八区,我们的时间原点就是1970-01-01 08:00:00 三、常用构造方法 无参数构造Date():获取当前时间 毫秒值(Long类型)构造Date(Long date):通过毫秒值转换为Date日期 import java.util.Date; /** * @date 2019-11-25 20:30 */ public class DemoDate { public static void main(String[] args) { demo01(); demo02(); } //Date() 获取当前系统的日期和时间 private static void demo01(){ Date date= new Date(); System.out.println("无参数构造,获取到当前时间为:"+date);//Mon Nov 25 20:32:50 CST 2019 } //Date(long date) 传递毫秒值,把毫秒值转为Date日期 private static

Mate

只谈情不闲聊 提交于 2019-11-30 03:57:07
1.oninput:只要用户输入就会触发 2.获取输入框的值:str=document.getElementById('id名‘) ;let x=str.value(标准写法) 3.Math是js的原生对象或内置对象;是很多变量和很多方法的集合。 typeof Math://object 4.Math的方法: Math对象的属性,提供以下一些数学常数。(了解) Math.E:常数e。 Math.PI:常数 Pi。 Math.abs():返回参数的绝对值 Math.max(1,2,3,4);一个参数不传会得到的结果是-infinity;传多个参数,返回参数中的最大值; Math.min(1,2,3,4);一个参数不传会得到的结果是infinity;传多个参数,返回参数中的最小值; Math.max()里面也可以加一个数组但在前面要加… 也可以求数组中的最大值Math.max(…arr1); Math.floor方法小于参数值的最大整数(地板值)。 Math.floor(3.2) // 3 Math.floor(-3.2) // -4 Math.ceil方法返回大于参数值的最小整数(天花板值)。 Math.ceil(3.2) // 4 Math.ceil(-3.2) // -3 Math.round()用于四舍五入; Math.round(0.1) // 0Math.round(0.5

oracle to_timestamp获取毫秒数,to_date不能获取

血红的双手。 提交于 2019-11-29 19:07:49
因为YDJG_ROLL表数据量很大,一般查询的是某一天的数据;create_time为TIMESTAMP(6)类型,create_time建立了索引,开始用 select * from ydjg_roll where to_char(create_time,‘yyyy-MM-dd’)='2019-09-16' 能查询出结果,但是很慢,因为create_time索引并没有用上,那就换种方式 select * from ydjg_roll where create_time between to_date('2019-09-03 00:00:00', 'yyyy-MM-dd hh24:mi:ss') and to_date('2019-09-03 23:59:59', 'yyyy-MM-dd hh24:mi:ss') 这样改完之后查询结果秒出,但是又一想,这样查询出来的结果并不准确,因为create_time是timestamp类型,有毫秒数,上面的sql中2019-09-03 23:59:59:000至2019-09-03 23:59:59:999之间的数据并不会被查询到,所以还得修改sql,如下: SELECT * FROM YDJG_ROLL WHERE CREATE_TIME BETWEEN TO_TIMESTAMP('2019-09-03 00:00:00.000',

js获取年月日季度

生来就可爱ヽ(ⅴ<●) 提交于 2019-11-29 11:09:40
var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年份(4位,1970-????) myDate.getMonth(); //获取当前月份(0-11,0代表1月) myDate.getDate(); //获取当前日(1-31) myDate.getDay(); //获取当前星期X(0-6,0代表星期天) myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数) myDate.getHours(); //获取当前小时数(0-23) myDate.getMinutes(); //获取当前分钟数(0-59) myDate.getSeconds(); //获取当前秒数(0-59) myDate.getMilliseconds(); //获取当前毫秒数(0-999) myDate.toLocaleDateString(); //获取当前日期 var mytime=myDate.toLocaleTimeString(); //获取当前时间 myDate.toLocaleString( ); //获取日期与时间 获取当前季度:currQuarter = Math.floor( ( currMonth % 3 == 0 ? ( currMonth /