Node.js 的理解、优缺点、应用场景

2023-10-30

在这里插入图片描述

一、是什么

Node.js 是一个开源与跨平台的 JavaScript 运行时环境

在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核),利用事件驱动、非阻塞和异步输入输出模型等技术提高性能

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

非阻塞异步

Nodejs采用了非阻塞型I/O机制,在做I/O操作的时候不会造成任何的阻塞,当完成之后,以时间的形式通知执行操作

例如在执行了访问数据库的代码之后,将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率

事件驱动

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

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

在这里插入图片描述

二、优缺点

优点:
  • 处理高并发场景性能更佳
  • 适合I/O密集型应用,指的是应用在运行极限时,CPU占用率仍然比较低,大部分时间是在做 I/O硬盘内存读写操作
因为Nodejs是单线程,带来的缺点有:
  • 不适合CPU密集型应用
  • 只支持单核CPU,不能充分利用CPU
  • 可靠性低,一旦代码某个环节崩溃,整个系统都崩溃

三、应用场景

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

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

具体场景可以表现为如下:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Node.js 的理解、优缺点、应用场景 的相关文章

随机推荐

  • Android 绘图 cache setDrawingCacheEnabled(boolean flag)

    使用setDrawingCacheEnabled boolean flag 提高绘图速度 View组件显示的内容可以通过cache机制保存为bitmap 使用到的api有 void setDrawingCacheEnabled boolea
  • 乐高机器人编程和编程的区别

    乐高机器人编程和编程的区别 小孩的学习从古至今一直都是家长们都非常关心和重视的一件事情 很多的家长在培养孩子的学习方面可以说是相当的重视的 他们会给孩子选择一些对于孩子学习有帮助的课程 就拿现在很多的家长想要孩子去学习机器人编程的课程来说
  • k8s之多方面多维度的资源隔离和限制(namespace,LimitRange,ResourceQuota)

    k8s之多方面多维度的资源隔离和限制 namespace LimitRange ResourceQuota 首先我们能想到的资源隔离就是namespace 这不知道是不是大家的第一反应 反正我是的 哈哈哈 namespace的神奇之处 大家
  • 上传图片(jpeg, png各种类型), 及视频

    上传图片 jpeg png各种类型 及视频 分类 技术 2014 08 27 23 11 4084人阅读 评论 1 收藏 举报 这段时间需要整理一些东西 先备注在这里 将花时间把这个点整理一下 使用AFNetworking上传图片 可一次上
  • 普通人通过Python做副业每个月收入20000+,这绝对是2023最赚钱的副业!

    副业 或许是当代年轻人最感兴趣的话题之一了 在知乎随便点开一个关于 副业 的问题 浏览量都高达1亿以上 可见其诱惑力 但很多朋友会发现 想拥有一份副业 你至少得掌握一两项技能 比如 写作 配音 剪辑 画画 但这些技能不仅学起来有一定门槛 而
  • STM32_DAC输出电压

    一 RCC时钟配置 该函数位于在bsp c文件下面 使能RCC时钟 RCC APB1Periph DAC 这里DA的时钟不像AD有AD1 AD2等 DA是共用时钟 所以调用接函数的时候一定要区分DA1和DA2开来 二 引脚配置 该函数位于在
  • R语言实战:回归模型中离群点的识别与标准化残差计算

    R语言实战 回归模型中离群点的识别与标准化残差计算 在数据分析和建模中 回归模型是一种常用的统计方法 用于描述一个或多个自变量与因变量之间的关系 然而 在回归分析过程中 可能会出现一些异常值或离群点 这些值可能会对模型的准确性和可靠性产生负
  • 测试新人如何编写测试用例?一文带你写一个合格的测试用例

    经常看到无论是刚入职场的新人 还是工作了一段时间的老人 都会对编写测试用例感到困扰 例如 固然 编写一份好的测试用例需要 充分的需求分析能力 理论及经验加持 但这并不意味着 没测试经验 分析能力弱就不能写好用例 还是有方法可循的 作为混迹测
  • C语言生成随机数

    1 关于C语言中有rand 函数来产生随机数 但是初始seed为1 这样做有一个问题 即会产生固定序列的数 比如单独调用rand 时会产生 1804289383 846930886 1681692777 1714636915 1957747
  • Pycharm找不到python版本怎么办?解决方法:ModuleNotFoundError: No module named ‘torch‘

    目录 1 conda我的使用版本是2023 04最新的 2 如果使用conda自定义的python的版本的话 那么着实有问题 我发现了我不管使用什么办法 切换到conda里面安装的虚拟机吧 就是找不到 如果直接吧conda作为加载器搞进去呢
  • 华为OD机试真题 Java 实现【找终点】【2023 B卷 100分】,附详细解题思路

    一 题目描述 给定一个正整数数组 设为nums 最大为100个成员 求从第一个成员开始 正好走到数组最后一个成员 所使用的最少步骤数 要求 第一步必须从第一元素开始 且1 lt 第一步的步长 lt len 2 len为数组的长度 需要自行解
  • Java虚拟机:关于JDK8到JDK9-10的一点小变化(tools.jar、dt.jar)

    关于JDK8到JDK9 10的一点小变化 JDK在每一次版本升级中 或多或少都会有一些比较重要的变化 或许在你使用的过程中 你就很有可能遇到 一 Removed or Changed APIs JDK8在升级到9或者10的时候 有一些变化还
  • Consul注册中心显示红叉 (All service checks failing)

    Consul注册中心显示红叉 All service checks failing 错误原因 心跳机制没有打开 所以健康检查总是报红 解决方法 在 application properties 添加以下配置 打开心跳机制 spring cl
  • 【Windows】composer安装与设置

    1 到官网下载 composer phar 下载地址 Composer 2 将下载的composer phar 复制到 composer 文件夹中 3 在composer文件夹中新建文件 composer bat 内容为 php dp0co
  • 故障诊断学基础知识

    1 机械故障诊断涉及哪些学科 做哪方面的科学研究 包含了哪些技术 形成了哪些方法 解决什么工程问题 1 涉及的学科有 机械 力学 电子 计算机 信号处理 人工智能等 2 机械故障诊断是研究机器或机组运行状态的变化在诊断信息中的反映 因此包括
  • python操作XML格式文件

    python操作XML格式文件 python操作XML格式文件 1 读取文件和内容 2 读取节点数据 3 修改和删除节点 4 构建文档 python操作XML格式文件 可扩展标记语言 是一种简单的数据存储语言 XML被设计用来传输和存储数据
  • Java poi+excel导入

    用的SSM框架 所需要的jar包如图所示 链接地址 jar包下载 下面直接上代码 1 ExcelUtil工具类 span style color 993399 span style font size 18px color 993399 i
  • java推荐使用枚举定义常量

    假如有一笔业务需要审核 审核状态分 未审核 审核中 审核通过 审核不通过 我们在程序里是否可以直接这么写 if state 1 1代表未操作 操作 else 将状态标识直接写在代码里面 硬编码 只图一时方便 却是后患无穷 如果有一天你需要修
  • springboot整合mybatis之一:mapper.xml文件位置

    server port 8080 spring datasource url jdbc oracle thin localhost 1521 orcl driver class name oracle jdbc driver OracleD
  • Node.js 的理解、优缺点、应用场景

    一 是什么 Node js 是一个开源与跨平台的 JavaScript 运行时环境 在浏览器外运行 V8 JavaScript 引擎 Google Chrome 的内核 利用事件驱动 非阻塞和异步输入输出模型等技术提高性能 可以理解为 No