node处理机制,并发性测试

开始学node就了解到三大特点单线程,非阻塞I/O,事件驱动!

下面一个案例看一下非阻塞I/O处理机制,更好了解到node机制!其实三个特点就是一个事情,擅长I/O,擅长任务调度!

案例

//了解node的处理机制,擅长I/O,单线程高并发处理机制
const http=require("http");
const fs=require("fs");
//    产生一个5位随机数(用户id)
// console.log(1)
const server=http.createServer(function(req,res){
    //禁用ico图标的请求
    if(req.url=="/favicon.ico"){
        return ;
    }
    res.writeHead(200,{"Content-Type":"text/plain;charset=utf8"})
    var uid=parseInt(Math.random()*89999)+10000;
    console.log("欢迎用户id:"+uid)
    //异步读取文件
    fs.readFile("./read.txt",{"charset":"utf8"},function(err,data){
        if(err){
            res.end("文件读取失败");
            throw err;
        }else{
            console.log("用户id:"+uid+"读取文件完成");
            // console.log(2)

            res.end();
        }
    })
    // console.log(3)
    // res.end("中文");
})
server.listen(3001,"127.0.0.1");

查看一下console.log的运行顺序

发现结果并不是从上到下1,2,3执行!

原因剖析!

说过node的非阻塞I/O,正常运行,有新的并发过来,继续调度排队,调度完成后继续刚才的排队任务!

下面附上一张高并发的图

发现并不一个个人执行的工作完成后继续下一个,而是在同一时间进行任务调度,调度完成后,进行刚才排队序列继续执行!(善于调度,不善于计算),如果排序的是计算任务,则不能进行调度!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏晓晨的专栏

Html页面雪花效果的实现

8604
来自专栏从零开始学 Web 前端

从零开始学 Web 之 Vue.js(四)Vue的Ajax请求和跨域

在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识点,期间也会分享一些好玩的项目。现在就让我们一起进入 Web 前端学习的冒险之旅吧!

2542
来自专栏西安-晁州

jenkins学习之多项目构建

多项目构建,即指的是同时构建多个源代码中的项目,我所知道的有两种方法,一种是在某个项目“构建完成后操作”中设置如下: ? 另外一种是借助于插件——Multi...

3650
来自专栏程序员的知识天地

如何用Python来制作简单的爬虫,爬取到你想要的图片

在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材。

1383
来自专栏技术博客

ExtJs九(ExtJs Mvc用户管理之一)

首先要做的是为用户信息创建一个模型,在Scripts\app\model目录下创建一个名为User.js的文件,然后添加以下模型定义代码:

1142
来自专栏转载gongluck的CSDN博客

超级强大的vim配置(vimplus)

最近在重新配置Vim,也在GitHub上找了三个star和fork数目很高的方案,在这里分享给大家: https://github.com/amix/vimr...

6.7K9
来自专栏我的博客

Jpgraph 3.5 中文乱码问题解决

今天设置了Jpgraph生成的图表加上中文标题乱码,搜索下结果都是加什么字体了设置这个,修改那个。。后来看到这个文章:http://anshao.net/cod...

3518
来自专栏企鹅号快讯

使用技巧精讲

1、快速建立连接 单击顶部活动菜单栏上的“快速建立连接按钮”(Alt+Q),如图1 图1 单击按钮后,弹出图2所示的窗口 ? 图2 Protocol:默认SSH...

2165
来自专栏码神联盟

IntelliJ系列 ⑥ | IDEA 之 常见的高效配置全解

2593
来自专栏逻辑熊猫带你玩Python

Python | Time Marker时间标签(附详细注释)

如果您之前关注过我的内容,可以回忆一下我之前发过两篇关于文章,如果没有可以进入下面链接:

1101

扫码关注云+社区

领取腾讯云代金券