面试题:NodeJS特点

面试官: 了解Node吗,有什么特点?
回答官网第一句:在这里插入图片描述
面试官: 然后呢?

1. 它的用途决定了它的特性-单线程
1.作为浏览器脚本语言,JavaScript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题

2.这也就意味着任务需要排队,也就说明在Node中用户的请求将会排队,形成一个事件队列

举个例子: 事情发生在一个小酒馆,只有一个伙计,陆陆续续的客官来用餐,那么这个伙计,只能一个一个按顺序给客官下单(先进先出)
在这里插入图片描述

2. 非阻塞I/O
非阻塞:就是没有堵住呗!!

I/O: 输入输出,(磁盘的读写,数据库的查询,网络通信等)
在这里插入图片描述

当访问数据库取数据的时候,需要一段事件,在传统的单线程处理机制中,在执行访问数据库代码时,
整个线程都将暂停下来,等待数据库返回结果,才能执行后面的代码。也就是说,I/O阻塞了代码的执行,
这样就降低了程序的执行效率

Node.js采用了非阻塞型I/O机制,因此在执行了访问数据库的代码之后,将立即转而执行其后面的代码,
把数据库返回结果的处理代码放到回调函数中,从而提高了程序的执行效率

当某个I/O执行完毕时,将以事件的形式通知执行I/O操作的线程,线程执行这个事件的回调函数,
为了处理异步I/O,线程必须有一个事件循环,不断的检查有没有未处理的事件,依次处理

阻塞模式下,一个线程只能处理一项任务,要想提高吞吐量必须通过多线程,

非阻塞模式下,一个线程永远在执行计算操作,这个线程的CPU核心利用率永远是100%
"意淫"一下,一个小二玩命干活,是不是比多个小二闲着好

3.事件驱动

点菜->做菜->上菜

在这里插入图片描述
在Node中,在一个时刻,只能执行一个事件回调函数,但是在执行一个事件回调函数的中途,可以转而处理其他事件(例如:又来客人了),然后返回继续执行原事件的回调函数,这种处理机制,成为"事件环"机制

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值