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不合适

  • 相关阅读:
    并发编程 19—— 显式的Conditon 对象
    JVM实用参数——新生代垃圾回收
    设计模式 8 —— 适配器和外观模式
    并发编程 18—— 使用内置条件队列实现简单的有界缓存
    并发编程 17—— Lock
    Spring 事务管理 01 ——
    并发编程 16—— 线程池 之 原理二
    并发编程 15—— 线程池 之 原理一
    并发编程 14—— 线程池 之 整体架构
    java.util.logging.Logger 使用详解
  • 原文地址:https://www.cnblogs.com/weizhibin1996/p/9283645.html
Copyright © 2011-2022 走看看