NodeJS并不适合所有server端的场景,它的使用场景是及其有限的,web是nodeJS最适合的场景

前端偏爱node的原因其内核就是JavaScript

  • 前端职责范围变大,统一开发体验
  • 在处理了高并发,I/O密集场景性能优势明显

CPU密集 VS I/O密集

  • CPU密集:压缩,解压,加密,解密(程序大部分时间是用来做计算,判断等CPU动作)
  • I/O密集:文件操作,网络操作,数据库(程序大部分时间是做存储设备,网络设施)

web常见场景(web典型的I/O密集)

  • 静态资源的读取(各种JavaScript,css,静态的HTML)
  • 数据库操作
  • 渲染页面(读取模板文件,根据数据生成HTML)

高并发对应解决方法

  • 增加机器数
  • 增加每台机器的CPU数_多核(针对运算比较密集的)

进程是什么?

  • 进程:是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位(点击音乐播放器的就会进入进程,一边上网一边听音乐,其实就好像动画帧一样,交错插着来运行进程,所以让你觉得是同时进行的)
  • 多进程:启动多个进程,多个进程可以一块执行多个任务

线程是什么?

  • 线程:进程内一个相对独立的,可调度的执行单元,与同属一个进程的线程共享进程的资源
  • 多线程:启动一个进程,在一个进程内启动多个线程,这样,多个线程也可以一块执行多个任务

NodeJS 的单线程

  • 单线程只是针对主进程,I/O操作系统底层多线程调度
  • 单线程并不是单进程

大概理解web的相应模型

Node JS性能好(前提是要在web的场景下,并且I/O密集的)

常用场景

  • Web Server
  • 本地代码的构建
  • 实用工具开发

NodeJS1-2 Node JS的优点的更多相关文章

  1. [转]为什么我要用 Node.js? 案例逐一介绍

    原文地址:http://blog.jobbole.com/53736/ 介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样, ...

  2. 【转】为什么我要用 Node.js? 案例逐一介绍

    原文转自:http://blog.jobbole.com/53736/ 介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样, ...

  3. Node.js(转) -- 临时来说还看不懂!

    转自:http://blog.jobbole.com/53736/ 本文由 伯乐在线 - Lellansin 翻译.未经许可,禁止转载!英文出处:toptal.欢迎加入翻译组. 介绍 JavaScri ...

  4. 读书笔记: 深入浅出node.js

    >> 深入浅出node.js node.js是c++编写的js运行环境 浏览器: 渲染引擎 + js引擎 后端的js运行环境 node.js用google v8引擎,同时提供很多系统级的A ...

  5. PHP, Python, Node.js 哪个比较适合写爬虫?

    PHP, Python, Node.js 哪个比较适合写爬虫? 1.对页面的解析能力2.对数据库的操作能力(mysql)3.爬取效率4.代码量推荐语言时说明所需类库或者框架,谢谢.比如:python+ ...

  6. Node.js配合jQuery UI autocomplete的应用

    Node.js擅长的领域为: 不需要很多运算 吞吐量要求高 进消息轻并且要求快 出消息轻并且要求快 网上的例子都是socket.io的,我一直在想到底能用在什么地方?根据node.js的优点(擅长领域 ...

  7. node.js核心技术

    一.知识结构: http模块:配置简单 的web服务,npm/cnpm工具 express框架:express中间件进行服务配置:路由:请求处理: DB服务:学习使用mysql关系型数据库: web接 ...

  8. 杂项:node.js

    ylbtech-杂项:node.js Node.js是一个Javascript运行环境(runtime),发布于2009年5月,由Ryan Dahl开发,实质是对Chrome V8引擎进行了封装.No ...

  9. 为什么我要用 Node.js? 案例逐一介绍

    介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也可以在服务器上运行 JavaScript ,从前端跨越到后端, ...

随机推荐

  1. ThreadLocal线程局部变量的使用

    ThreadLocal: 线程局部变量 一).ThreadLocal的引入 用途:是解决多线程间并发访问的方案,不是解决数据共享的方案. 特点:每个线程提供变量的独立副本,所有的线程使用同一个Thre ...

  2. 扛把子组20191031-2 Beta阶段贡献分配规则

    此作业的要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/9910 队名:扛把子 组长:孙晓宇 组员:宋晓丽 梁梦瑶 韩昊 刘信鹏 B ...

  3. Python3 之 with语句(高效、便捷)

    在实际的编码过程中,有时有一些任务,需要事先做一些设置,事后做一些清理,这时就需要python3 with出场了,with能够对这样的需求进行一个比较优雅的处理,最常用的例子就是对访问文件的处理. 文 ...

  4. Java数组深入

    Java数组深入 内存中的数组 前边提到:数组是一种引用类型,数组引用变量只是一个引用,当它指向有效内存的时候才可以通过数组变量来访问数组元素,也就是说数组变量和数组元素在内存中是分开放的. 可以这么 ...

  5. Fabric1.4源码解析:Peer节点启动过程

    看一下Peer节点的启动过程,通常在Fabric网络中,Peer节点的启动方式有两种,通过Docker容器启动,或者是通过执行命令直接启动. 一般情况下,我们都是执行docker-compose -f ...

  6. 微信浏览器跳转浏览器下载app解决方案

    新版本微信浏览器中,已禁用下载APP应用,只支持打开微信合作商APP下载,所以无法通过微信浏览器直接下载APP应用.列举微信浏览器下载APP的种解决方案: 方案:通过Url 跳转到手机默认浏览器,或者 ...

  7. jvm垃圾回收器与内存分配策略

    一.判断对象存活的算法 1.引用计数算法 (1)概念:给对象中添加一个引用计数器每当有一个地方引用它时,计数器值加1:当引用失效时,计数器就减1:任何时刻计数器为0的对象就是不可能再被使用的. (2) ...

  8. 线程锁&信号量&gil

    线程锁 线程锁的主要目的是防止多个线程之间出现同时抢同一个数据,这会造成数据的流失.线程锁的作用类似于进程锁,都是为了数据的安全性 下面,我将用代码来体现进程锁的作用: from threading ...

  9. 顺序栈与两栈共享空间-C语言实现

    栈是一种只能允许在栈顶插入数据与删除数据的数据结构,其实这就是一种特殊的线性表,特殊在 只能在表尾进行增减元素,上代码 #include <stdio.h> #define MAXSIZE ...

  10. iOS13暂时关闭黑暗模式+应用内状态栏无法显示问题解决办法

    现象: iOS13黑暗模式开启后,app显示会出现很多意外显示情况.暂时屏蔽是最好的选择.当开启黑暗模式,且在项目的target对应的info.plist中添加以下设置时(禁用黑暗模式): <k ...