课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
Node.js是程序员在学习前端编程开发技术的时候需要重点掌握的一个编程开发知识,而今天我们就通过案例分析来了解一下,程序员学习Node.js需要掌握哪些知识。
1、单线程、异步
单线程:所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。Node单线程指的是Node在执行程序代码时,主线程是单线程。
异步:主线程之外,还维护了一个"事件队列"(Eventqueue)。当用户的网络请求或者其它的异步操作到来时,Node都会把它放到EventQueue之中,此时并不会立即执行它,代码也不会被阻塞,继续往下走,直到主线程代码执行完毕。
JavaScript是单线程的,Node本身其实是多线程的,只是I/O线程使用的CPU比较少;还有个重要的观点是,除了用户的代码无法并行执行外,所有的I/O(磁盘I/O和网络I/O)则是可以并行起来的。
libuv线程池默认打开4个,多打开128个线程。
2、事件循环
Node.js所谓的单线程,只是主线程是单线程。
主线程运行V8和JavaScript
多个子线程通过 事件循环 被调度
3、优缺点
Nodejs的优点:I/O密集型处理是Nodejs的强项,因为Nodejs的I/O请求都是异步的(如:sql查询请求、文件流操作操作请求、http请求...)
Nodejs的缺点:不擅长cpu密集型的操作(复杂的运算、图片的操作)
4、总结
Nodejs与操作系统交互,我们在JavaScript中调用的方法,终都会通过process.binding传递到C/C++层面,终由他们来执行真正的操作。Node.js即这样与操作系统进行互动。
Nodejs所谓的单线程,只是主线程是单线程,所有的网络请求或者异步任务都交给了内部的线程池去实现,本身只负责不断的往返调度,由事件循环不断驱动事件执行。
Nodejs之所以单线程可以处理高并发的原因,得益于libuv层的事件循环机制,和底层线程池实现。
Eventloop就是主线程从主线程的事件队列里面不停循环的读取事件,驱动了所有的异步回调函数的执行,Eventloop总共7个阶段,每个阶段都有一个任务队列,当所有阶段被顺序执行一次后,eventloop完成了一个tick。
希望这辈子,最让你无悔的事情就是来达内学习!学习向来不是件易事,但无论过程多么艰难,希望你依然热爱生活,热爱学习!永远记得,达内将与你一同前行!现在扫码,立即领取万元课程礼包,助力0基础快速入行,为你梳理行业必备技能,全方位了解岗位发展前景!
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。