当前位置: 首页 > news >正文

【Node.js】初识 Node.js

Node.js 概念

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

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

非阻塞异步

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

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

事件驱动

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

在这里插入图片描述

优缺点

优点:

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

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

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

应用场景

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

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

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

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

相关文章:

【Node.js】初识 Node.js

Node.js 概念 Node.js 是一个开源与跨平台的 JavaScript运行时环境 ,在浏览器外运行 V8 JavaScript 引擎(Google Chrome的内核),利用事件驱动、非阻塞和异步输入输出 等技术提高性能。 可以理解为 Node.js就是一个服务器端的、非阻塞式 l/O 的、事件驱…...

AWS backup服务和 RDS snapshot的关系

首先,其实RDS的snapshot,自动备份和手动备份,就是调用的AWS backup服务,只不过是通过RDS控制台,API等等进行控制和管理的。 1. AWS backup 服务对于RDS的备份来说包括两部分: --连续备份(需要…...

PDF转Word怎么快速转换?格式转换技巧分享

PDF文件和Word文档是我们日常工作中不可或缺的文件格式,同时文件之间的格式转换也十分常见。不同的格式有着不同的优点,将PDF文件改为Word文档后,在编辑或修改文件内容时更为方便。 下面小编就来给大家介绍几种常用的PDF转Word的转换方法&am…...

浅谈:网络协议及网络连接

事情的起因 怪有意思的。(纯纯唠嗑,不感兴趣的可以跳过) 我们初中,在学期的最后一天换教室,由于我们是十三班,是年级里面的一个“例外”。因为我们其他年级都是12个和10个班级,就我们一个奇数…...

websocket-react使用

问题 在一个应用中,如果需要在不同的组件之间共享同一个WebSocket连接,可以采用多种方法来实现。 比如:单例模式、全局变量、react context React上下文(React Context) 如果你使用的是React,可以使用Re…...

【总结】nginx源码编译安装报错./configure: error: SSL modules require the OpenSSL library.

问题现象 源码编译安装nginx时,执行./configure …… --with-http_ssl_module 命令安装https模块,需要用到openssl,由于机器缺少openssl库,报如下错误。 …… checking for openat(), fstatat() ... found checking for getaddr…...

昇思25天学习打卡营第15天|两个分类实验

打卡 目录 打卡 实验1:K近邻算法实现红酒聚类 数据准备 模型构建--计算距离 计算演示 模型预测 实验2:基于MobileNetv2的垃圾分类 任务说明 数据集 参数配置(训练/验证/推理) 数据预处理 MobileNetV2模型搭建 Mobile…...

实践:Redis6.0配置文件解读

详细解读redis配置文件 https://raw.githubusercontent.com/redis/redis/6.2/redis.conf Units 配置数据单位换算关系配置大小单位:当需要内存大小时,可以指定。开头定义了一些基本的度量单位,只支持bytes,不支持bit&#xff0…...

【Go系列】Go语言的网络服务

承上启下 我们既然知道了Go语言的语法,也了解到了Go语言如何协同工作机制。那么对于这样一款天生支持高并发的语言,它的用武之地自然而然的就是网络服务了。我们今天学学如何使用网络服务。 开始学习 Go语言使用网络服务 在Go语言中,使用网…...

CS110L(Rust)

1.Rust 语法总结 数值类型 有符号整数: i8, i16, i32, i64无符号整数: u8, u16, u32, u64 变量声明 声明变量: let i 0; // 类型推断let n: i32 1; // 显式类型声明 可变变量: let mut n 0; n n 1; 字符串 注意,let s: str "Hello world";…...

免费恢复软件有哪些?电脑免费使用的 5 大数据恢复软件

您是否在发现需要的文件时不小心删除了回收站中的文件?您一定对误操作感到后悔。文件永远消失了吗?还有机会找回它们吗?当然有!您可以查看这篇文章,挑选 5 款功能强大的免费数据恢复软件,用于 Windows 和 M…...

Flink History Server配置

目录 问题复现 History Server配置 HADOOP_CLASSPATH配置 History Server配置 问题修复 启动flink集群 启动Histroty Server 问题复现 在bigdata111上执行如下命令开启socket: nc -lk 9999 如图: 在bigdata111上执行如下命令运行flink应用程序 …...

ASPICE过程改进原则:确保汽车软件开发的卓越性能

"在汽车行业中,软件已经成为驱动创新和增强产品功能的核心要素。然而,随着软件复杂性的增加,确保软件质量、可靠性和性能成为了一项严峻的挑战。ASPICE标准的引入,为汽车软件开发提供了一套全面的过程改进框架,以…...

HDU1005——Number Sequence,HDU1006——Tick and Tick,HDU1007——Quoit Design

目录 HDU1005——Number Sequence 题目描述 超时代码 代码思路 正确代码 代码思路 HDU1006——Tick and Tick 题目描述 运行代码 代码思路 HDU1007——Quoit Design 题目描述 运行代码 代码思路 HDU1005——Number Sequence 题目描述 Problem - 1005 超时代码…...

uniapp form表单校验

公司的一个老项目,又要重新上架,uniapp一套代码,打包生成iOS端发布到App Store,安卓端发布到腾讯应用宝、OPPO、小米、华为、vivo,安卓各大应用市场上架要求不一样,可真麻烦啊 光一个表单校验,…...

构建RSS订阅机器人:观察者模式的实践与创新

在信息爆炸的时代,如何高效地获取和处理信息成为了一个重要的问题。RSS订阅机器人作为一种自动化工具,能够帮助我们从海量信息中筛选出我们感兴趣的内容。 一、RSS 是什么?观察者模式又是什么? RSS订阅机器人是一种能够自动订阅…...

芯片基础 | `wire`类型引发的学习

在Verilog中,wire类型是一种用于连接模块内部或模块之间的信号的数据类型。wire类型用于表示硬件中的物理连线,它可以传输任何类型的值(如0、1、高阻态z等),但它在任何给定的时间点上只能有一个确定的值。 wire类型通…...

如何在AWS上构建Apache DolphinScheduler

引言 随着云计算技术的发展,Amazon Web Services (AWS) 作为一个开放的平台,一直在帮助开发者更好的在云上构建和使用开源软件,同时也与开源社区紧密合作,推动开源项目的发展。 本文主要探讨2024年值得关注的一些开源软件及其在…...

Quartus II 13.1添加新的FPGA器件库

最近需要用到Altera的一款MAX II 系列EPM240的FPGA芯片,所以需要给我的Quartus II 13.1添加新的器件库,在此记录一下过程。 1 下载所需的期间库 进入Inter官网,(Altera已经被Inter收购)https://www.intel.cn/content…...

【html】html的基础知识(面试重点)

一、如何理解HTML语义化 1、思考 A、在没有任何样式的前提下,将代码在浏览器打开,也能够结构清晰的展示出来。标题是标题、段落是段落、列表是列表。 B、便于搜索引擎优化。 2、参考答案 A、让人更容易读懂(增加代码可读性)。 B、…...

终极指南:如何用FanControl实现Windows系统风扇智能温控与静音优化

终极指南:如何用FanControl实现Windows系统风扇智能温控与静音优化 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub…...

手把手教你用Simulink搭建BUCK电路:从主电路到PID整定的保姆级流程

手把手教你用Simulink搭建BUCK电路:从主电路到PID整定的保姆级流程 电力电子技术作为现代能源转换的核心,BUCK电路因其高效的降压特性被广泛应用于电源设计领域。对于初学者而言,理论知识与实际仿真之间往往存在一道难以跨越的鸿沟——明明理…...

别再只用VGG19做分类了!手把手教你用PyTorch提取4096维图像特征向量(实战教程)

突破分类局限:用PyTorch解锁VGG19的深度特征提取实战 当你第一次接触VGG19时,可能被它的ImageNet分类能力所震撼。但如果你只把它当作一个分类器,那就如同用瑞士军刀只开瓶盖——大材小用。在计算机视觉领域,预训练模型真正的价值…...

重温DIRE:走向通用人工智能生成的图像检测

1.摘要生成模型的快速发展提高了图像质量,并使图像合成广泛可用,引起了对内容可信度的关注。为了解决这个问题,我们提出了一种称为通用重建残差分析(UR2EA)的方法来检测合成图像。我们的研究表明,当通过预训练的扩散模型重建GAN和…...

【运算篇】算术与逻辑律令(3):比特的手术刀,镜像翻转与空间缝合

在 4-bit 的逻辑地牢里,如果说算术指令提供了“肌肉”,逻辑指令开启了“感官”,那么接下来我们要聊的,则是这台机器最细腻的形态手术。如果说 AND/OR 是在判定“存在”,那么 NOT 和移位指令(SHL/SHR&#x…...

BGA虚焊别头疼!从焊膏印刷到回流焊曲线,一份保姆级的SMT工艺避坑指南

BGA虚焊别头疼!从焊膏印刷到回流焊曲线,一份保姆级的SMT工艺避坑指南 在SMT产线上,BGA虚焊问题就像个幽灵,时不时冒出来折腾工程师。上周产线刚报修一批主板,X光下那些不规则焊点像极了抽象派画作——可惜客户要的是工…...

告别编译报错:解决Windows下QGC源码编译中C2220等常见错误的实战记录

告别编译报错:解决Windows下QGC源码编译中C2220等常见错误的实战记录 当你满怀期待地克隆完QGroundControl源码,配置好Visual Studio和Qt环境,却在编译阶段遭遇红色错误提示时,那种挫败感我深有体会。特别是看到QGCTileCacheWork…...

挖掘MCU硬件加速潜力:以R80515的Double DPTR和MDU为例,在Keil C51中开启性能外挂

挖掘MCU硬件加速潜力:R80515双DPTR与MDU在Keil C51中的实战优化 当你在Keil C51环境下为资源受限的8051架构编写代码时,是否曾为缓慢的数据搬运和复杂的数学运算而头疼?现代增强型8051内核如R80515通过硬件加速单元提供了突破性能瓶颈的可能…...

用C语言手搓一个聊天室服务器:从socket到多线程的保姆级踩坑实录

用C语言手搓一个聊天室服务器:从socket到多线程的保姆级踩坑实录 深夜两点,屏幕的蓝光映在脸上,第17次编译失败后,我盯着gcc报出的"segmentation fault"陷入了沉思。这就是用C语言实现网络服务的魅力所在——没有现成的…...

PyTorch数据集加载进阶:除了CIFAR10,你的自定义数据该怎么准备?

PyTorch数据集加载进阶:从CIFAR10到自定义数据的深度实践 在深度学习项目中,数据准备往往比模型构建更耗时。许多开发者能熟练使用torchvision.datasets加载标准数据集,却对自定义数据束手无策。本文将带你深入PyTorch数据加载机制&#xff…...