node 是什么

  1. node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境(runtime),node 不是一门语言,是让 JavaScript 运行在后端的运行时,并且不包括 JavaScript 全集,因为在服务端中不包含 DOMBOM

  2. node 也提供了一些新的模块,例如:httpfs 等;

  3. node 使用了事件驱动、非阻塞式 I/O 模型,使其轻量又高效,并且 node.js 的包管理器 npm 是全球最大的开源库生态系统;

node 的优势

  1. node 更擅长 IO 密集型 高并发请求(文件操作、网络操作、数据库操作);

  2. java 更擅长 cpu 密集型任务(逻辑处理运算、压缩、解压、加密、解密);

问题:java 多线程在某些场景下的一些问题;

  1. 客户端有几个请求访问服务器,那么服务器就会提供几个线程来处理,此时对于用户而言,体验是很好的;

  2. 但是,问题也是很明显的,某个时间内请求量很大,又不能无限增加响应线程来处理,那么就出现了无人响应的问题;

解决:node 中 Reactor 应答者模式,单线程完成多线程工作;

  1. 只有一个主线程,当请求结束后主线程才会去处理,主线程在不同任务上来回切换处理,这样就相当于单线程完成了多线程工作,并且是非阻塞的,每个请求结束后都会有主线程的应答;

  2. 使用这样的操作就避免多线程上下轮切换的时候要考虑的 状态保存、时间消耗以及状态锁等问题;

javascript 在最初设计时设计成了单线程为什么不是多线程呢

  1. 如果多个线程同时操作 DOM 那岂不会很混乱;

  2. 这里所谓的单线程指的是主线程是单线程的,所以在 node 中主线程依旧是单线程的;

  3. 单线程特点是节约了内存,并且不需要切换执行上下文,而且单线程不需要管锁的问题;

同步异步和阻塞非阻塞

阻塞和非阻塞 针对的是调用方,同步异步 针对的是被调用方

应用场景

  1. 中间层:

  2. 操作数据库提供 API 服务;

  3. 实时聊天应用程序;

打赏作者
您的打赏是我前进的动力
微信
支付宝
评论

中午好👏🏻,我是 ✍🏻   疯狂 codding 中...

粽子

这有关于前端开发的技术文档和你分享。

相信你可以在这里找到对你有用的知识和教程。

了解更多

目录

  1. 1. node 是什么
  2. 2. node 的优势
    1. 2.1. 问题:java 多线程在某些场景下的一些问题;
    2. 2.2. 解决:node 中 Reactor 应答者模式,单线程完成多线程工作;
  3. 3. javascript 在最初设计时设计成了单线程为什么不是多线程呢
  4. 4. 同步异步和阻塞非阻塞
  5. 5. 应用场景