nodejs笔记

NodeJS实现高并发的原理
1.Nodejs的诞生

为了解决web服务器的高并发性能问题

2.单线程的好处

##### 1.Nodejs的诞生
业务1的计算1刚调用完,在调用I/O请求时马上调用业务2的计算1,CPU的利用率永远百分百,不在创建销毁线程,缺点:一个用户线程崩溃,其他人整个服务崩溃

3.非阻塞I/O机制

传统的单线程,I/O阻塞代码执行,但nodejs使用非阻塞I/O使得线程永远在执行计算操作,cpu利用率永远是100%
在这里插入图片描述

4.事件驱动模型

应用层:即node.js的模块,如fs,http等
v8引擎层: 解析JavaScript;
Libuv:实现nodejs异步的核心,实现了线程池,事件循环,文件操作等

在Libuv层的Event Loop事件循环不断读Event Queue中的事件,在读取事件的过程中如果遇到非阻塞事件,会自已处理,并且在处理完后调用回调函数向上一层返回结果;对于阻塞事件,会委托给后台线程池来处理,当这些阻塞操作完成后,执行结果与提供的回调函数一起再被放入事件队列中。当Event Loop再次读到这个事件时,会再次执行被放到队列中的事件回调函数,最后将结果返回给上一层。具体流程可以参考下图:
在这里插入图片描述

5.防止页面中文乱码

response.write(’<metacharset=“UTF-8”>’)

6.想搜索包

www.npmjs.com

7.node_modules中的包丢失

npm i可重新创建

8.指定包版本安装

npm install jquery@1.8.0

9.writeFile(’’,’’,(error)=>), appendFile(’’,’’,(error)=>)的区别

如果对同一个文件进行操作,worteFile会对内容进行覆盖,而appendFile会对其进行追加

10.获取文件的后缀名

const path=require(‘path’);
let extname=path.extname(‘pathname’);

11.获取文件的后缀名

想要通过fs.readFile解析网页,问题:只能默认解析text/html
解决:
把response.writeHead(404, {‘Content-Type’: ‘text/html;charset=utf-8’});中的text/html换成当前文件的类型,比如css,就要换成text/css,定义一个模块
exports.getMime=function(pathname){
switch(pathname){
case ‘css’:
return ‘text/css’;
}
}
let mime=common.getMime(pathname);
response.writeHead(404, {‘Content-Type’: ‘’+mime+’;charset=utf-8’});

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值