node.js初识02
node.js相较于那些老的服务器语言,他的优势在于,节省了I/O的时间,主要的特点是单线程,非阻塞和事件驱动,其实三个说的是同一个事情,相较于多线程而言,单线程的特点是,使用的那一条线程的cpu的利用率是百分之百,减少了I/O的时间,缺点是一旦其中一个事件出现问题,整个就蹦了,可以说node是在针尖上跳舞,这里简单说一下线程,每一个线程都有计算,I/O,计算这几个步骤,这里的计算基本上都是数据库来计算,多线程开发的时候每一条线程都会占用cup,单线程就是每个事件在排队,只有一个入口,多线程就是多个路口,node的作用之一就是配置路由,请求的路径可以和文件的名字是完全不一样的,例如:
//require表示引入包 var http = require("http"); var fs = require("fs"); //创建服务 var server = http.createServer(function(req,res){ //req表示请求,res表示响应 //请求头 状态码,文件类型,字符集 // res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"}); // res.end("哈哈哈哈,这是我的第一个页面"+(1+2+3)+"s"); if(req.url=="/"){ fs.readFile("./test.html",function(err,data){ res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"}); res.end(data); }) }else if(req.url=="/liudong"){ fs.readFile("./test1.html",function(err,data){ res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"}); res.end(data); }) }else if(req.url=="/timg.gif"){//node是没有web容器的 fs.readFile("./timg.gif",function(err,data){ res.writeHead(200,{"Content-type":"image/gif;"}); res.end(data); }) }else if(req.url=="/bbb.css"){//node是没有web容器的 fs.readFile("./test.css",function(err,data){ res.writeHead(200,{"Content-type":"text/css"}); res.end(data); }) }else{ res.writeHead(200,{"Content-type":"text/html;charset=UTF-8"}); res.end("哈哈哈哈,没有这个页面哦"); } }); //运行服务器,监听端口号3000,端口号可以改 server.listen(3000,"127.0.0.1");
注意,node是没有web容器的,渲染图片和css等都是需要请求的后才会有的
一般8G的运行内存,可以支持800的用户,但是如果是node的话,可以接受8000,因为node是单线程