zoukankan      html  css  js  c++  java
  • Node.js 初步了解

    Node.js的特点:单线程、非阻塞异步I/O、事件驱动

    先来说说I/O:I就是input数据读取,O就是Output数据的写入,大部分网站I/O是非常多的,,但是I/O的时候cpu是命令磁盘去做事情,此时CPU自己就闲置了。

    同步(synchronous):当系统遇见了一个需要耗费大量时间的事情的时候,选择死等。

    异步(Asynchronous):当系统遇见了一个需要耗费大量时间的事情的时候,不死等,先做后面的事情,耗时事情做完之后,执行回调函数。

    Node.js是后台的东西

    我们写一段程序来举例

    //读取内置模块http,这个模块开发服务器用的
    var http = require("http");
    
    //创建一个服务器
    var server = http.createServer(function(req,res){
      res.setHeader("Content-Type","text/html;charset=UTF-8");   res.end(
    "<h1>哈哈哈,我买了一个iPhone" + (4 + 4) + "Plus,</h1>"); }); //监听 server.listen(3000)

    写完后使用cmd命令调用

    在Node.js中用谁 就Node谁

    此时光标挂起,并没有返回,表示此时node正在执行一个监听。

    按ctrl+c可以将结束挂起状态。

    访问3000端口就可以看到页面了

    我们F12查看源代码

    此时我们查看源代码,我们发现数字8是直接写上去的,没有4+4的运算痕迹。

    原因就是NodeJS运行在服务器端,而不是浏览器端。服务器计算了数字8之后,发给了浏览器就是扁平的、纯粹的HTML了,没有任何程序。

     

    单线程

    Node.js中只使用一个线程。

    异步I/O特性

    简要概括就是:

    当在访问数据库取得数据的时候,需要一段较长的时间。在传统的处理机制中,在执行了访问数据库代码之后,整个线程都将暂停下来,等待数据库返回结果,才能执行后面的代码。也就是说,I/O阻塞了代码的执行,极大地降低了程序的执行效率。

    由于Node.js中采用了非阻塞型I/O机制,因此在执行了访问数据库的代码之后,将立即转而执行其后面的代码,把数据库返回结果的处理代码放在回调函数中,从而提高了程序的执行效率。

    事件驱动

    事件驱动是NodeJS的底层机制,我们只需要了解NodeJS不会发生错误的原因就是事件驱动,有一个事件环。

    事件环机制是NodeJS的底层机制,保证了NodeJS可以高效准确的运行而不会紊乱。

    node.js适合干什么?

    当应用程序需要处理大量并发的I/O,而在向客户端发出响应之前,应用程序内部并不需要进行非常复杂的处理的时候,Node.js非常适合。Node.js也非常适合与web socket配合,开发长连接的实时交互应用程序。

    比如:

    ● 用户表单收集

    ● 考试系统

    ● 打分系统

    ● 聊天室

    ● 图文直播

  • 相关阅读:
    Linux 共享库
    使用Visual Studio(VS)开发Qt程序代码提示功能的实现(转)
    ZOJ 3469 Food Delivery(区间DP)
    POJ 2955 Brackets (区间DP)
    HDU 3555 Bomb(数位DP)
    HDU 2089 不要62(数位DP)
    UESTC 1307 windy数(数位DP)
    HDU 4352 XHXJ's LIS(数位DP)
    POJ 3252 Round Numbers(数位DP)
    HDU 2476 String painter (区间DP)
  • 原文地址:https://www.cnblogs.com/kun666/p/9464106.html
Copyright © 2011-2022 走看看