当前位置: 首页 > wzjs >正文

查建设标准网站mianf网站

查建设标准网站,mianf网站,网站建设四端一体,口碑营销案例2022概念 node.js是一个开源的、跨平台的javascript运行环境;它可以开发服务器应用,可以开发工具类应用(webpack、vite、Babel),也可以开发桌面端应用(vscode、Figma、Postman) #mermaid-svg-0TkAt8LEFhyrVrsw {font-fami…

概念

node.js是一个开源的、跨平台的javascript运行环境;它可以开发服务器应用,可以开发工具类应用(webpack、vite、Babel),也可以开发桌面端应用(vscode、Figma、Postman)

node
electron
vscode
figma
postman

注意:
1)node.js 中不能使用BOM(Brower Object Model)和 DOM (Document Object Model)的API
2) node.js 中的顶级对象为global ,也可以用globalThis访问顶级对象
> 在这里插入图片描述

node的特点

异步I/O

I/O 是 Input/Output 的缩写,指的是程序与外部进行“交流”的过程,比如:
• 从硬盘读取文件
• 向数据库写数据
• 网络请求发送/接收数据

  • 同步I/O
    与异步I/O对应的是同步 I/O,那什么是同步I/O?同步I/O就是等结果才干下一步。
const fs = require('fs')let data =fs.readFileSync("./file/2.mov");
console.log(data); //需要等待将文件读取完毕之后,才打印出这个data
  • 异步I/O
    异步 I/O是先安排任务,等会儿回来拿结果
const fs = require('fs')
fs.readFile("./fileSystem.txt", "utf8", (err, data) => {if (err) {console.log(err)}console.log(data)
})
console.log("read file");

事件与回调函数

回调函数

回调函数是一个“等你处理完再叫我”的函数

事件

系统某个“动作”发生了,比如“文件读完了”、“请求完成了”,它就会触发一个事件。

单线程

Node保持了JavaScript在浏览器中单线程的特点。

  • 好处
    单线程的最大好处是不用像多线程编程那样处处在意状态的同步问题,这里没有死锁的存在,也没有线程上下文交换所带来的性能上的开销。
  • 缺点
    无法利用多核CPU

针对缺点的解决方案:
1、使用 cluster 模块(内置)
• 启动多个 Node 进程,每个进程一个 CPU 核心。
• 主进程负责分发请求,子进程负责处理。

const cluster = require('cluster');
const os = require('os');if (cluster.isMaster) {const cpus = os.cpus().length;for (let i = 0; i < cpus; i++) {cluster.fork(); // 启动多个子进程}
} else {// 各个子进程独立跑服务require('./app'); 
}

2、使用 PM2(生产级进程管理器)
• 简化多进程管理,支持 cluster 模式,崩溃自动重启。

pm2 start app.js -i max  # 根据 CPU 数自动 fork

错误回英气整个应用推出,应用的健壮性值得考验

解决方案
1、错误处理策略:全面 try/catch + 全局监听
2、使用中间件捕获错误(在框架中如 Express/NestJS)
3、 使用 PM2 进行守护重启

大量计算占用CPU导致无法继续调用异步I/O

解决方案

1、Worker Threads(Node 10.5+ 支持)
• Node.js 原生的多线程模块,适合重计算任务。

const { Worker } = require('worker_threads');
const worker = new Worker('./heavy-task.js'); // 把大计算扔到 worker 去干
worker.on('message', result => {
console.log('计算结果:', result);
});

2、把计算任务 offload 到别的服务(如 Python)
• 比如图像处理、机器学习等,用子进程或远程服务来做
3、使用 WebAssembly
• 某些计算密集任务可以用 Rust/C 编译成 WebAssembly,在 Node 里跑得飞快且不阻塞。

跨平台

Buffer[缓冲区]

buffer 类似于Array的对象,用于表示固定长度的字节序列,用于处理二进制数据

中文在utf-8中占三个字节

Buffer 是一个典型的javascript与c++结合的模块,他将性能相关部分用C++实现,将非性能相关的部分用javascript实现。

C++内建模块 node_buffer
javascript核心模块 Buffer/ slowBuffer

特点

  1. Buffer 大小固定且无法调整
  2. Buffer性能较好,可以直接对计算机内存进行操作
  3. 每个元素的大小为1字节(8位)

创建Buffer

alloc

let buf =Buffer.alloc(10);

allocUnsafe

let buf = Buffer.allocUnsafe(10);

alloc 和 allocUnsafe 的区别:

  • alloc 在创建的时候,会将申请到的内存数据清零
  • allocUnsafe创建时,可能包含旧的内存数据,但正因为保留了之前的数据,速度比alloc快
    在这里插入图片描述

from

将字符串/数组转换成buffer,每一个字符会先转换成unicode对应的,然后再转二进制

let buf = Buffer.from("你好");

溢出

Buffer 每个元素的大小为1字节,也就是8位,能表示的最大值为 255 即11111111;那么当超过255之后,程序会如何处理呢。
在这里插入图片描述
这里并没有输出361,而是105 ,这是因为361 的二进制是 0001 0110 1001 ;当超过255之后,会舍弃高位,即舍去了高位的0001 ,就剩下0110 1001 (十进制:105)

Buffer与字符串的转换

可以直接借助toString方法将Buffer转位字符串
在这里插入图片描述

字符串转Buffer

主要是通过构造函数完成的

new Buffer(str,[encoding])

Buffer 内存分配

Buffer对象的内存分配不是在V8的堆内存中,而是在node的C++层面实现内存的申请。
为了高效地使用申请来的内存,node采用的slab分配机制。slab简单来说,就是一块申请好的固定大小的内存区域。

应用场景

在文件I/O 和 网络I/O 中运用广泛

http://www.dtcms.com/wzjs/788960.html

相关文章:

  • 自己架设的传奇怎么做网站电子商务网站的建设费用案例
  • 重庆工程建设信息网站软件定制官网
  • 河南省建协网官方网站洛龙区网站制作建设费用
  • 如何实现网站开发手机验证码在国外做网站推广
  • 台州网站建站新1站网站建设
  • 花店网站模板免费下载上传网站代码
  • 外贸企业网站建设方案关掉自己做的网站
  • 以网站建设专业画一幅画wordpress更新是乱码
  • 东营专业网站建设公司电话建手机版网站
  • 小型企业门户网站源码网站个人备案
  • 中职网站建设课件深圳最好的区排名
  • 贵阳查房子备案的网站国外的做的比较优秀的网站有哪些
  • 做网站要服务器和什么软件网站域名解析后多久能生效
  • 全国住房与城乡建设部网站云南省建设注册考试中心网站
  • 东北网站建设公司淘客推广佣金
  • 网站应该怎么建设建造师信息查询网
  • 软件下载网站如何建设c语言做的网站
  • 网站建设试手需要买服务器吗中国网站建设第一品牌
  • 品牌网站建设小蝌蚪1推广广告投放
  • 广州网站建设 信科公司安徽今天刚刚发生的新闻
  • 微信做一元云购网站南京seo网站优化
  • 网站开发课表查询免费logo在线设计生成
  • Asp网站开发入门无觅wordpress
  • 潍坊网站制作发论坛seo网站
  • 铜仁建设集团招聘信息网站网站服务器返回状态码404
  • 漳州做网站最便宜黄页网大全免费软件
  • 购物网站建设网站做网站设计用什么软件
  • 阿里云免费域名桂林seo代排名
  • 自助建网站系统源码兼职平台有哪些
  • 桂林市临桂区城乡建设局网站手表东莞网站建设技术支持