求不更学不动之Node.js多线程

2018-06-25
阅读 4 分钟
3k
Node.js由于JS的执行在单一线程,导致CPU密集计算的任务可能会使主线程会处于繁忙的状态,进而影响服务的性能,虽然可以通过child_process模块创建子进程的方式来解决,但是一方面进程之间无法共享内存,另一方面创建进程的开销也不小。所以在10.5.0版本中Node.js提供了worker_threads模块来支持多线程,一直以来被人所...

Node.js 线程你理解的可能是错的

2018-06-12
阅读 3 分钟
4.5k
{代码...} Node.js是单线程的,那么Node.js启动后线程数是1? 答案:Node.js启动后线程数并不是1,以下面代码为例 {代码...} 通过Mac实用工具 > 活动监视器可以查看进程的线程数其实是6 Node.js启动的线程数不为1,是因为线程池? 答案:线程数不为1,不是因为线程池,而是因为V8。Node.js启动后会创建V8实例,V8实例...

Node.js child_process模块解读

2018-05-31
阅读 7 分钟
6.8k
可以试一下使用上面的代码启动Node.js服务,然后打开两个浏览器选项卡分别访问/compute和/,可以发现node服务接收到/compute请求时会进行大量的数值计算,导致无法响应其他的请求(/)。

Node.js util模块解读

2018-05-31
阅读 6 分钟
2k
util模块最初的目的是为内部API提供一些工具支持,然而很多工具函数对于普通的开发者来说也十分有用,因此util模块将一些方法实现了对外暴露。本文主要探讨以下三方面的工具函数:

Node.js process模块解读

2018-05-30
阅读 5 分钟
4.8k
process存在于全局对象上,不需要使用require()加载即可使用,process模块主要做两方面的事情 读:获取进程信息(资源使用、运行环境、运行状态) 写:执行进程操作(监听事件、调度任务、发出警告) 资源使用 资源使用指运行此进程所消耗的机器资源。例如内存、cpu 内存 {代码...} rss(常驻内存)的组成见下图 code segm...

Node.js EventEmitter解读

2018-05-21
阅读 8 分钟
3.2k
Node.js核心API基于异步事件驱动的架构,fs.ReadStream可以通过on()方式来监听事件其实都是由于继承了EventEmitter类,如下所示

Node Buffer解读

2018-05-17
阅读 6 分钟
2.2k
Buffer存在于全局对象上,无需引入模块即可使用,可见重要性非同一般。可以理解Buffer是在内存中开辟的一片区域,用于存放二进制数据。Buffer所开辟的是堆外内存。

发布订阅管道化

2018-05-14
阅读 4 分钟
1.6k
上面的例子基本可以满足需求了,但是有时候我们希望多个订阅函数之间可以传递执行结果,类似linux管道a.pipe(b).pipe(c)…这种,上一个函数的输出是下一个函数的输入。针对这种管道化需求我们对msghub的回调遍历从forEach改为reduce方式,如下代码所示

Node.js 沙箱环境

2018-05-14
阅读 6 分钟
4.2k
A common use case is to run the code in a sandboxed environment. The sandboxed code uses a different V8 Context, meaning that it has a different global object than the rest of the code.

Nodejs内存治理

2018-05-13
阅读 3 分钟
2.8k
js运行的宿主环境不同,相应的对内存治理的要求也不一样,当宿主环境是浏览器时,由于网页的运行时间短,且只运行在用户的机器上(相当于分布式),即使内存使用过多或者存在一定的内存泄漏,也并不会对终端用户产生太大的影响。当宿主环境编程服务器(Node)时,情况就大不相同了,本身代码运行在固定的几台机器(集中式...

你应该知道的requestIdleCallback

2018-04-18
阅读 3 分钟
16.1k
我们都知道React 16实现了新的调度策略(Fiber), 新的调度策略提到的异步、可中断,其实就是基于浏览器的 requestIdleCallback和requestAnimationFrame两个API。所以这里我们有必要了解一下这两个API,关于Fiber部分后面会单开几篇讲。