理一理NodeJS的一些基础概念

NodeJS是一个单线程运行的,非阻塞I/O。Node不是语言,不是框架,只是基于V8运行时环境。用Chrome V8 解释并执行 JavaScript 代码。

NodeJS是用libuvku的库来实现,libuvku跨平台 运行在windows linux上

JS运行的chrome环境是V8引擎,而Webkit 浏览器对应的是渲染引擎。

事件轮询:

event loop(三个非阻塞网络调用:一个用于请求,一个用于数据库,一个用于响应)

 

 

libuv 由事件循环和线程池组成,负责所有 I/O 任务的分发与执行。

 

高并行与高并发的概念:

高并发:两个队伍买火车票,一个窗口。(希望计算机做更多事情)。

高并行:两个队伍买火车票,两个窗口,加快速度。(希望计算机更快地完成任务)

 

Node的代码虽然运行在单线程中,但仍然支持高并发,就是依靠事件循环实现的。

如果存在并行,一定是存在在libuv的线程池中的。

 

JavaScript的事件循环是依靠浏览器实现的,而Node作为另一种运行时,事件循环由底层的libuv实现。

 

这里重点讲两个方法:

process.nextTick会在当前操作完成后立刻执行,因此总会在setImmediate之前执行。

setImmediate方法不属于ESMAScript标准,而是Node提出的新方法。setImmediate的事件会在poll阶段结束后执行。

 

区分容易混淆的两对概念:同步/异步  阻塞/非阻塞

同步:进程/线程发起调用后,一直等待调用返回后才继续执行下一步操作。但CPU不会等待,多半会切换到另一个进程/线程上去。

异步:发起调用后,进程/线程继续向下执行,当调用返回后,通过某种手段来通知调用者。

阻塞与非阻塞:针对IO状态而言的。与同步/异步没有任何必然联系。除了AIO外,阻塞和非阻塞IO都是同步的。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值