P01: 从实用角度出发的node.js学习教程

相关文章

node

随着前端技术的不断发展,尤为是近几年前端工程化的普及,node.js也受到愈来愈多的关注以及使用。本系列文章将本身研究node中的总结体会一一呈现,水平有限若有错误还请指正吗,万分感谢。前端

官方文档

什么是node.js?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 的 runtimenode

  • 它是一个Javascript运行环境数据库

  • 依赖于Chrome V8引擎进行代码解释前端工程化

  • 事件驱动api

  • 非阻塞I/Obash

  • 轻量、可伸缩,适于实时数据交互应用服务器

  • 单进程,单线程网络

node.js 的优势

  • 对于前端,有利于统一体验
  • 高并发,IO密集 性能优越

    I/O密集与CPU密集的区别多线程

    • CPU密集: 加密解密,压缩解压等 => 运算操做密
    • I/O密集:文件操做,网络操做,数据库操做等 => 读写密集

node.js 的单线程

  • 单线程是针对系统主进程来讲的,I/O操做交给底层系统多进程运行
  • node.js的单线程并非单进程内的单线程,能够使用相关模块调用多进程(每一个单核启动一个),以此完成集群。只要你须要,机器性能不会闲置

前置知识

  • 简单了解阻塞I/O以及非阻塞I/O
    • 阻塞I/O : 同步 => 下一步须要等待上一步的结果返回
    • 非阻塞I/O: 异步 => 不依赖与上一步的结果直接执行下一步
  • 进程以及线程
    • 进程: 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位 => 类比于模块
      • 进程通常由程序,数据集合和进程控制块三部分组成。
        • 程序用于描述进程要完成的功能,是控制进程执行的指令集;
        • 数据集合是程序在执行时所须要的数据和工做区;
        • 程序控制块包含进程的描述信息和控制信息是进程存在的惟一标志
      • 进程具备的特征:
        • 动态性:进程是程序的一次执行过程,是临时的,有生命期的,是动态产生,动态消亡的;
        • 并发性:任何进程均可以同其余进行一块儿并发执行;
        • 独立性:进程是系统进行资源分配和调度的一个独立单位;
        • 结构性:进程由程序,数据和进程控制块三部分组成
      • 多进程: 同时运行多个进程 => 对于单核只能在同一时间点运行一个进程,多进程的实现粗略理解为多个进程的快速切换,相似于逐帧动画
    • 线程:程序执行流的最小单元,是处理器调度和分派的基本单位,是进程内一个相对独立,可调用的执行单元,于同属于一个进程的线程共享此进程的资源 => 类比于组件
      • 多线程: 用一个进程内同时运行多个线程
    • 进程与线程的区别
      1. 线程是程序执行的最小单位,而进程是操做系统分配资源的最小单位;
      2. 一个进程由一个或多个线程组成,线程是一个进程中代码的不一样执行路线
      3. 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信号等),某进程内的线程在其余进程不可见;
      4. 调度和切换:线程上下文切换比进程上下文切换要快得多
    • 扩展:为什么不使用多进程而是使用多线程?
      • 线程廉价,线程启动比较快,退出比较快,对系统资源的冲击也比较小。并且线程彼此分享了大部分核心对象(File Handle)的拥有权
      • 若是使用多重进程,可是不可预期,且测试困难

环境准备

  • 打开cmd
$ node -v
vx.x.x
复制代码
  • 若是未输出版本号
    • 下载node
    • 国内的各类全家桶已经锻炼了各位如何安装软件
    • 建议学习使用最新版,生产使用稳定版或跟随公司版本
    • 安装完毕再次执行命令行,获得版本信息,即准备好node环境

node初体验

// 建立文件demo.js
console.log('hello node')
// 执行文件
node demo.js
复制代码

close并发

相关文章
相关标签/搜索