zoukankan      html  css  js  c++  java
  • Node学习1-基本概念

    非阻塞IO

    执行到I/O时函数立刻返回,不等待IO完成。

    指令执行是CPU,非常快。

    I/O操作非常慢。

    I/O完成后主动通知程序。

    事件驱动

    先写好I/O完成后的事件处理程序

    等I/O完成后,该事件直接去找相关的处理程序再处理即可。

    在处理高并发和I/O密集的时候,Nodejs更有优势

    CPU密集:压缩/解压/加密/解密/图形计算

    I/O密集:文件操作/网络操作/数据库

    WEB常见场景:静态资源读取、数据库操作

    高并发:

    1、开饭店例子,如果顾客多起来了,那么只要增加厨师就好了(负载均衡、堆机器)

    2、或者请做饭更快的厨师(提高单台机器性能)

    进程:资源分配和调度的基本单位。

    把程序加载到内存执行,执行中的程序就是进程。系统程序分配资源都是安装进程来分配和调度的。

    多进程:启动多个进程,时间片轮转

    假如请很多服务员,也没有用,因为问题主要在厨师

    客人---->服务员(CPU进程)----->厨师(I/O)

    厨师在炒菜的时候,服务员会很闲!CPU啥都没干

    CPU的进程数是有限的!(内存的原因)不能没玩没了的开进程顾厨师

    1个服务员,很多厨师

    服务员不断接待客人,点菜

    等到厨师好了,叫服务员去拿菜(事件驱动)

    服务员根据号码把菜给别人(事件处理函数)

    Nodejs相当于只启动了一个进程(单进程),没有浪费CPU

    event loop是单线程,worker是多线程的!

    单线程是针对主程序,I/O操作系统底层多线程调度!

    线程:进程内相对独立的/可调度的执行单元,线程之间共享进程的资源。

    Node集群,也能起多个进程。

    CPU密集,如果一个顾客点满汉全席,几百道菜,后面顾客都没法点菜,厨师也没开始工作,肯定用Nodejs不合适

  • 相关阅读:
    Nubiers to follow
    pp to write
    Reading source code
    build opencv with python support
    add monitor resolution
    Install cv2.so for Anaconda
    axios 上传下载显示进度
    vant 上传图片 图片回显 是base64
    多个时间段 合并
    热部署
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9283645.html
Copyright © 2011-2022 走看看