node处理机制,并发性测试
时间:2022-06-08
本文章向大家介绍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,正常运行,有新的并发过来,继续调度排队,调度完成后继续刚才的排队任务!
下面附上一张高并发的图
发现并不一个个人执行的工作完成后继续下一个,而是在同一时间进行任务调度,调度完成后,进行刚才排队序列继续执行!(善于调度,不善于计算),如果排序的是计算任务,则不能进行调度!
- Twemproxy——针对MemCached与Redis的代理
- 谁适合学Python?学了Python可以做什么工作?
- webservice今日遇到的二个问题:DataTable + Namespace
- php安全配置记录和常见错误梳理
- Flex:地图缩放平移效果(简易版)
- Mongodb副本集+分片集群环境部署记录
- 线上mongodb 数据库用户到期时间修改的操作记录
- 微信小程序“授权失败”场景的处理
- 动软.net代码生成器 win2008 r2下无法连接oracle,以及vs2008模板丢失的解决
- ASP.NET Web API 支持 CORS
- oracle odp.net 32位/64位版本的问题
- Redis+TwemProxy(nutcracker)集群方案部署记录
- 金融科技新常态,未来开启拼“硬实力”阶段
- Mono 3 的默认Gc是Sgen
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- lipo命令
- protobuf 为经络,gRPC为骨架
- JVM系列之:String,数组和集合类的内存占用大小
- 如何用 Python 写个登陆窗口?
- 3500 字算法刷题精华总结
- web 云开发获取匿名登录返回的uid
- MySQL 最佳实践:慢查询分析三步曲
- 【NLP】利用jieba对网易云音乐的评论进行词云分析
- 【深度学习】一分钟速学 | NMS, IOU 与 SoftMax
- 【机器学习基础】数学推导+纯Python实现机器学习算法26:随机森林
- 【机器学习基础】Python数据预处理:彻底理解标准化和归一化
- Logback配置文件这么写,TPS提高10倍
- 重学数据结构之队列
- 太简单,springboo 使用自定义的 Tomcat
- 没想到,几行代码,你就可以实现图片压缩(springboot)!