一、node.js的理解?优缺点?应用场景?
一、是什么
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的理解?优缺点?应用场景?相关推荐
- 理解node.js(Understanding node.js)
因为最近自己在学习node.js,刚开始学.看到这篇文章挺有意思,介绍了一下node.js有助于理解基于事件驱动的回调,就翻译了一下. 英文原文: Understanding node.js 理解no ...
- Node.js介绍及安装
文章目录 Node.js 是什么 Node.js VS JQuery.ExtJS Node.js 的出现及应用场景 适用场景 Node.js 优缺点 下载安装 Node.js 是什么 Node.js ...
- 性能追击:万字长文30+图揭秘8大主流服务器程序线程模型 | Node.js,Apache,Nginx,Netty,Redis,Tomcat,MySQL,Zuul
本文为<高性能网络编程游记>的第六篇"性能追击:万字长文30+图揭秘8大主流服务器程序线程模型". 最近拍的照片比较少,不知道配什么图好,于是自己画了一个,凑合着用,让 ...
- 【Node.js】面试常考问题
Node问题梳理总结 1.koa和express有哪些不同? 2.两个Node.js进程如何通信? 3.浏览器与Node中的事件循环有什么区别? 4.如何实现JWT鉴权机制?说说思路 5.Node性能 ...
- 深入浅出Node.js(八):Connect模块解析(之二)静态文件中间件
为什么80%的码农都做不了架构师?>>> 上一篇专栏简单介绍了Connect模块的基本架构,它的执行模型十分简单,中间件机制也使得它十分易于扩展,具备良好的可伸缩性.在Conn ...
- js 弹出层的点击事件影响到底层的点击事件_聊一聊 Node.js 错误处理
个人博客:https://blog.skrskrskrskr.com 错误分类 软件程序中,我们可以将错误大致分为外部错误和内部错误两大类. 外部错误是正确编写的程序在运行时产生的错误.它并不是程序本 ...
- 如何决定何时使用Node.js?
已锁定 . 该问题及其答案被锁定,因为该问题是题外话,但具有历史意义. 它目前不接受新的答案或互动. 了解更多 . 我对这种东西是陌生的,但是最近我已经听到很多关于Node.js有多出色的信息. 考虑 ...
- Node.js(一):基础知识
一.浏览器 1 浏览器工作原理 1.1 浏览器的组成 人机交互部分(UI) 网络请求部分(Socket) JavaScript引擎部分(解析执行JavaScript) 渲染引擎部分(渲染HTML.CS ...
- 《Node.js开发实战》代码下载、简介与前言
请下载代码评估:https://pan.baidu.com/s/1qYC3cVa (密码: bba3). 内容简介 本书以实战开发为原则,以Node.js原生知识和框架实战为主线,详细介绍Node ...
最新文章
- js中常用的算法排序
- centreon问题总结
- 第六章连接和分组查询
- 计算机视觉论文doc,嘉炬-计算机视觉论文资料.doc
- 面试突击 004 | 如何排查 Redis 中的慢查询?视频实战篇
- 测试 System.SysUtils.TStringHelper
- 至今还记忆犹新的即时通讯
- Python数据挖掘笔记 七 .PCA降维操作及subplot子图绘制
- 基于51单片机的计算器
- ubuntu下创建定时任务的两种方式及常见问题解决方案
- vmware虚拟化之vswitch详细资料
- iOS - 数组字典模型根据模型属性key排序
- HL7协议介绍(一)
- python实践_机器学习:Python实践 (魏贞原) 高清pdf完整版[124MB]
- linux版本石器时代,石器时代私服架设教程LINUX版
- 第三届大湾区杯B题思路及代码-基于宏观经济周期的大类资产配置策略构建
- CEF 最新版本自己编译加上支持播放MP4视频
- [下载]《SAP R/3 IDES 4.71 中文版》
- 2020年云南统招专升本部分院校录取分数线
- 如何通过经纬度坐标获取附近的地址信息?
热门文章
- android手机 恢复微信图片,微信图片过期了怎么恢复?记住这个操作,找回更清晰!...
- 杭电多校3-Hdu6797 Tokitsukaze and Rescue
- Windows 7的“杀手锏”是智能
- 微软 Windows 7的“杀手锏”是智能
- PC_二进制移位运算/定点数移位/算数移位及其移位后的空位添补规则/机器数位数扩充
- ubuntu不支持安装搜狗_Ubuntu系统安装搜狗输入法详细教程
- 【R】【决策树】【随机森林】
- Opencv Sift和Surf特征实现图像无缝拼接生成全景图像
- R语言和医学统计学系列(1):t检验
- erlang send剖析及参数意义