node基础面试事件环?微任务、宏任务?一篇带你飞

本文介绍了Node.js的使用场景和优势,特别是在处理高并发请求方面的表现。文章详细讲解了Node.js的基础知识,包括V8引擎、事件驱动模型和事件环。通过浏览器中的Event Loop概念,阐述了宏任务和微任务的执行顺序。此外,还探讨了Node.js中的事件环机制和异步I/O操作,帮助读者深入理解Node.js的工作原理。
摘要由CSDN通过智能技术生成

培育能力的事必须继续不断地去做,又必须随时改善学习方法,提高学习效率,才会成功。 —— 叶圣陶

一、我们为什么要使用node,它的好处是什么?

Node的首要目标是提供一种简单的,用于创建高性能服务器的开发工具。还要解决web服务器高并发的用户请求。

解决高并发?

我们这里来举个例子,我们node和java相比,在同样的请求下谁更占优一点。看图

  • 当用户请求量增高时,node相对于java有更好的处理并发性能,它可以快速通过主线程绑定事件。java每次都要创建一个线程,虽然java现在有个线程池的概念,可以控制线程的复用和数量。
  • 异步i/o操作,node可以更快的操作数据库。java访问数据库会遇到一个并行的问题,需要添加一个锁的概念。我们这里可以打个比方,下课去饮水机接水喝,java是一下子有喝多人去接水喝,需要等待,node是每次都只去一个人接水喝。
  • 密集型CPU运算指的是逻辑处理运算、压缩、解压、加密、解密,node遇到CPU密集型运算时会阻塞主线程(单线程),导致其下面的时间无法快速绑定,所以node不适用于大型密集型CPU运算案例,而java却很适合。

node在web端场景?

web端场景主要是用户的请求或者读取静态资源什么的,很适合node开发。应用场景主要有聊天服务器电子商务网站等等这些高并发的应用。

二、node是什么?

Node.js是一个基于 Chrome V8 引擎的JavaScript运行环境(runtime),Node不是一门语言,是让js运行在后端的运行时,并且不包括javascript全集,因为在服务端中不包含DOMBOM,Node也提供了一些新的模块例如http,fs模块等。Node.js 使用了事件驱动、非阻塞式 I/O的模型,使其轻量又高效并且Node.js 的包管理器 npm,是全球最大的开源库生态系统。

总而言之,言而总之,它只是一个运行时,一个运行环境。

node特性

  • 主线程是单线程(异步),将后续的逻辑写成函数,传入到当前执行的函数中,当执行的函数得到了结果后,执行传入的函数(回调函数)
  • 五个人同时吃一碗饭(异步)。
  • 阻塞不能异步(现在假定数据库是厨师,服务员是node,顾客是请求,一般是厨师做菜让一个服务员递给多个用户,如果厨师邀请服务员聊天,就会导致阻塞,并且是针对内核说的)。
  • i/o操作,读写操作,异步读写(能用异步绝不用同步) 非阻塞式i/o,即可以异步读写。
  • event-driven事件驱动(发布订阅)。

node的进程与线程

进程是操作系统分配资源和调度任务的基本单位,线程是建立在进程上的一次程序运行单位,一个进程上可以有多个线程。

在此之前我们先来看看浏览器的进程机制

自上而下,分别是:

  • 用户界面–包括地址栏、书签菜单等
  • 浏览器引擎–用户界面和渲染引擎之间的传送指令(浏览器的主进程)
  • 渲染引擎–浏览器的内核,如(webkit,Gecko)
  • 其他–网络请求,js线程和ui线程

从我们的角度来看,我们更关心的是浏览器的渲染引擎,让我们往下看。

渲染引擎

  • 渲染引擎是多线程的,包含ui线程和js线程。ui线程和js线程会互斥,因为js线程的运行结果会影响ui线程,ui更新会被保存在队列&#
  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值