一、是什么

node.js是一个开源与跨平台的JavaScript运行时环境
在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能

可以理解为 Node.js 就是一个服务器端的、非阻塞式I/O的、事件驱动的JavaScript运行环境

非阻塞异步

node.js采用了非阻塞行I/O机制,在做I/O操作的时候不会造成任何的阻塞,当完成之后,以时间的形式通知执行操作。
例如在执行了访问数据库的代码之后,将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率

事件驱动

事件驱动就是当进来一个新的请求时,请求将会被压入一个事件队列中,然后通过一个循环来检测队列中的事件状态变化,如果检测到有状态变化的事件,那么就执行该事件对应的处理代码,一般都是回调函数

比如读取一个文件,文件读取完毕后,就会触发对应的状态,然后通过对应的回调函数来进行处理

二、优缺点

优点:

  • 处理高并发场景性能更佳
  • 适合I/O密集型应用,值的是应用在运行极限时,CPU占用率仍然比较低,大部分时间是在做 I/O硬盘内存读写操作

因为Nodejs是单线程,带来的缺点有:

  • 不适合CPU密集型应用
  • 只支持单核CPU,不能充分利用CPU
  • 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

三、应用场景

借助node.js的特点和弊端,其应用场景分类如下:

  • 善于I/O,不善于计算。因为Nodejs是一个单线程,如果计算(同步)太多,则会阻塞这个线程
  • 大量并发的I/O,应用程序内部并不需要进行非常复杂的处理
  • 与 websocket 配合,开发长连接的实时交互应用程序

具体场景可以表现如下:

  • 第一大类:用户表单收集系统、后台管理系统、实时交互系统、考试系统、联网软件、高并发量的web应用程序
  • 第二大类:基于web、canvas等多人联网游戏
  • 第三大类:基于web的多人实时聊天客户端、聊天室、图文直播
  • 第四大类:单页面浏览器应用程序
  • 第五大类:操作数据库、为前端和移动端提供基于json的API

其实,node.js能实现几乎一切的应用,只考虑适不适合使用它

一、node.js的理解?优缺点?应用场景?相关推荐

  1. 理解node.js(Understanding node.js)

    因为最近自己在学习node.js,刚开始学.看到这篇文章挺有意思,介绍了一下node.js有助于理解基于事件驱动的回调,就翻译了一下. 英文原文: Understanding node.js 理解no ...

  2. Node.js介绍及安装

    文章目录 Node.js 是什么 Node.js VS JQuery.ExtJS Node.js 的出现及应用场景 适用场景 Node.js 优缺点 下载安装 Node.js 是什么 Node.js ...

  3. 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul

    本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...

  4. 【Node.js】面试常考问题

    Node问题梳理总结 1.koa和express有哪些不同? 2.两个Node.js进程如何通信? 3.浏览器与Node中的事件循环有什么区别? 4.如何实现JWT鉴权机制?说说思路 5.Node性能 ...

  5. 深入浅出Node.js(八):Connect模块解析(之二)静态文件中间件

    为什么80%的码农都做不了架构师?>>>    上一篇专栏简单介绍了Connect模块的基本架构,它的执行模型十分简单,中间件机制也使得它十分易于扩展,具备良好的可伸缩性.在Conn ...

  6. js 弹出层的点击事件影响到底层的点击事件_聊一聊 Node.js 错误处理

    个人博客:https://blog.skrskrskrskr.com 错误分类 软件程序中,我们可以将错误大致分为外部错误和内部错误两大类. 外部错误是正确编写的程序在运行时产生的错误.它并不是程序本 ...

  7. 如何决定何时使用Node.js?

    已锁定 . 该问题及其答案被锁定,因为该问题是题外话,但具有历史意义. 它目前不接受新的答案或互动. 了解更多 . 我对这种东西是陌生的,但是最近我已经听到很多关于Node.js有多出色的信息. 考虑 ...

  8. Node.js(一):基础知识

    一.浏览器 1 浏览器工作原理 1.1 浏览器的组成 人机交互部分(UI) 网络请求部分(Socket) JavaScript引擎部分(解析执行JavaScript) 渲染引擎部分(渲染HTML.CS ...

  9. 《Node.js开发实战》代码下载、简介与前言

    请下载代码评估:https://pan.baidu.com/s/1qYC3cVa   (密码: bba3). 内容简介 本书以实战开发为原则,以Node.js原生知识和框架实战为主线,详细介绍Node ...

最新文章

  1. js中常用的算法排序
  2. centreon问题总结
  3. 第六章连接和分组查询
  4. 计算机视觉论文doc,嘉炬-计算机视觉论文资料.doc
  5. 面试突击 004 | 如何排查 Redis 中的慢查询?视频实战篇
  6. 测试 System.SysUtils.TStringHelper
  7. 至今还记忆犹新的即时通讯
  8. Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制
  9. 基于51单片机的计算器
  10. ubuntu下创建定时任务的两种方式及常见问题解决方案
  11. vmware虚拟化之vswitch详细资料
  12. iOS - 数组字典模型根据模型属性key排序
  13. HL7协议介绍(一)
  14. python实践_机器学习:Python实践 (魏贞原) 高清pdf完整版[124MB]
  15. linux版本石器时代,石器时代私服架设教程LINUX版
  16. 第三届大湾区杯B题思路及代码-基于宏观经济周期的大类资产配置策略构建
  17. CEF 最新版本自己编译加上支持播放MP4视频
  18. [下载]《SAP R/3 IDES 4.71 中文版》
  19. 2020年云南统招专升本部分院校录取分数线
  20. 如何通过经纬度坐标获取附近的地址信息?

热门文章

  1. android手机 恢复微信图片,微信图片过期了怎么恢复?记住这个操作,找回更清晰!...
  2. 杭电多校3-Hdu6797 Tokitsukaze and Rescue
  3. Windows 7的“杀手锏”是智能
  4. 微软 Windows 7的“杀手锏”是智能
  5. PC_二进制移位运算/定点数移位/算数移位及其移位后的空位添补规则/机器数位数扩充
  6. ubuntu不支持安装搜狗_Ubuntu系统安装搜狗输入法详细教程
  7. 【R】【决策树】【随机森林】
  8. Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
  9. R语言和医学统计学系列(1):t检验
  10. erlang send剖析及参数意义