node 的概念
node 并不是一门语言,运行时可以让 js 运行到服务端(底层用的是 v8 引擎构建的)
node 的特点
- 非阻塞 i/o(异步的非阻塞)
- 事件驱动(支持 js 语法,但不支持 bom 和 dom)
- 具有内置模块(fs、path 等)
node 中实现的 api 都是支持异步的,底层采用的是多线程模型
线程池
默认创建 10 个线程
- 多线程:可以同时执行多个任务,给每个请求分配一个线程,优点是可以并行,缺点是浪费资源。适合 cpu 密集型(压缩、加密)
- 单线程:只有一个,节约内存。不适合 cpu 密集型,适合 i/o 密集型。缺点是容易阻塞
- 事件驱动:按照事件的顺序来触发处理逻辑(事件环),读写操作完成后会放到对应的队列中,等待事件环来触发对应的事件
大约 4 分钟