面试总结
# 面试总结
Node:
单线程的弱点:
- 无法利用多核CPU
- 错误会引起整个应用退出,应用的健壮性值得考验
- 大量计算占用CPU导致无法继续调用异步I/O 浏览器中JavaScript与UI公用一个线程一样,js长时间执行会导致UI的渲染和响应被中断。 H5制定了Web Workers,能够创建工作线程来进行计算,以解决JavaScript大计算阻塞UI的渲染问题。 node 采用了与Web workers相同的思路来解决单线程中大量的计算的问题。 child_process. libuv: 在操作系统与Node上层模块系统之间构建了一层平层架构。可以兼容windows 各个平台。
事件循环、观察者、请求对象、I/O线程池这四者共同构成了Node异步I/O模型的基本要素。
多线程编程经常面临锁、状态同步等问题,这是多线程被诟病的主要原因。但是多线程在多核cpu上能够有效提升CPU的利用率,这个优势是毋庸置疑的。
node 平台间的适配是通过 libuv 实现的。
在node中,除了javascript是单线程外,Node本身是多线程的,只是I/O 线程使用的CPU较少。
事件循环是一个典型的生产者/消费者模型。异步I/O、网络请求等则是事件的生产者,源源不断的为Node 提供不同类型的事件,这些事件被传递到对应的观察者哪里,事件循环从观察者那里取出事件并处理。
上次更新: 2022/01/24, 08:49:31