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

node.js学习笔记1

目录

Node.js是什么

Node.js下载与安装

Buffer缓冲区

一些计算机硬件基础

程序运行的基本流程


Node.js是什么

node.js是一个JavaScript运行环境,或者说,node.js是一个可以运行JavaScript的软件。

可以用于开发服务端、桌面端、工具类应用。

服务器端开发:对于一个上线的项目,光有服务器,是无法运行程序的,而node.js装在服务端,node.js可以接收客户端的请求,并把资源返回,使程序正常运行。

工具类应用:Webpack、Vite、Babel都是借助node.js实现的。

桌面端:VSCode、Postman、Figma都是借助于electron框架实现的,而electron是借助node.js实现的。

Node.js下载与安装

官网:Node.js — Download Node.js®

安装一路next就行了。

node.js没有图形化界面,需要通过命令行操作。

cmd敲node -v可以测试一下是否安装成功。

命令行命令一般结构:命令名称 参数

一些基础的命令:

dir 查看当前目录下的文件,只查看当前目录下的文件,不显示子文件

dir -s 查看目录下所有文件内容,包括子文件夹

cd 进入目录

./ 当前目录

../上一级目录

用命令行启动node.js文件

node.js文件为javascript格式,为xxx.js文件,

在命令行中进入xxx.js文件存放的目录,使用node xxx.js命令运行。

在VSCode的Terminal中敲node xxx.js也可以。

在Node.js中不能使用DOM和BOM的Api。

虽然Node.js可以运行JavaScript,但并非能够处理全部的Api,只能处理fs、url、http、console、path、定时器等Api。

在Node.js中,顶级对象不是window,而是global或globalThis。

Buffer缓冲区

Buffer是一个类似Array的对象。Buffer是一段固定长度的内存空间,用于处理二进制数据。

Buffer的大小固定,且不能调整。Buffer可以直接操作内存,所以性能很好。Buffer中每一个元素的大小是一字节。

创建Buffer

Buffer可以使用alloc、allocUnsafe、from创建。

alloc

alloc语法调用的是Buffer对象中的alloc方法,Buffer是Node.js内置对象。

语法是Buffer.alloc(创建的Buffer的字节数)

用alloc创建的Buffer每一位都是0

let buffer = Buffer.alloc(10);

allocUnsafe

allocUnsafe与alloc类似,语法是Buffer.allocUnsafe(创建的Buffer的字节数)。

但不同的是,用allocUnsafe生成的Buffer,可能会包含内存中的旧数据。

也就是说,内存空间是可以复用的,如果一个程序使用了一段内存空间,在这个程序运行完毕之后,allocUnsafe也访问了这段内存空间,allocUnsafe不会清空这段内存空间的数据,而是会直接复用。

allocUnsafe生成的Buffer中虽然会有意料之外的数据,但速度更快。

let buffer = Buffer.allocUnsafe(10);

from

用该语法,可以把字符串或数组转换为Buffer。

对于字符串,在转换时,每一个字母,会转换成Unicode(Ascii)码表(Unicode兼容Ascii)中对应的数字,再把数字转换成二进制,存到Buffer中。

let buffer = Buffer.from('hello world');

Buffer.from(字符串)可以把字符串转换成Buffer。

Buffer.toString(),可以把Buffer转换回字符串。

对于数组,Buffer会把数组中的每一项转换成二进制,然后存到Bufferr里。

读取Buffer中的数据

使用[下标]

let buffer = Buffer.from('hello world');
console.log(buffer);
console.log(buffer[0]);
console.log(buffer[0].toString(16));

可以使用[]访问数据、修改数据。

Buffer溢出

Buffer中一个位有一字节,一字节的范围是0-255,如果某个字节值的赋值超过了255,则Buffer在存储时会舍弃高位。把高于8位的二进制数字全部丢掉。

Buffer中文

如果Buffer.from中给的是中文,中文会按UTF-8处理,一个中文字占3字节。

一些计算机硬件基础

CPU:中央处理器,整个计算机运行和控制的中心。程序中的运算最终都是由CPU进行处理的。

内存:存储数据的介质。

硬盘:和内存很像,也可以存储数据。内存存储数据读写速度很快,但断电会丢失数据。硬盘读写速度慢,但断电不会丢失数据。对于一些需要长时间保存的数据,比如游戏数据、浏览器等等软件,应该放在硬盘里。

显卡:处理视频信号,当有信息需要在显示器呈现时,就会将信息对应的信号传给显卡,显卡处理完毕后再传给显示器,显示器最终显示。

声卡:处理声音信号,如果遇到声音信号需要播放,会把信号交给声卡,声卡把信号传给外部播放设备(耳机、音响)等。

主板:大的集成电路板,上面有很多插槽,CPU、内存、硬盘和显卡都是插在插槽上,通过主板连在一起。

机箱:把主板和一些其他计算机需要用到的硬件组装在一起。(其他计算机硬件,比如散热器:CPU运行会产生大量的热量,这个热量需要散走,否则会影响CPU速度,散热器有水冷和风冷等,散热器一般放在CPU旁边)。

外设:一些插在机箱上的外部设备,键盘、鼠标、音像、显示器等。

程序运行的基本流程

把硬件都组件完毕之后,计算机也不能完全正常运行。

除了硬件,计算机想运行还需要软件,也就是操作系统。

主流的操作系统有Windows、Linux、MacOS。

操作系统是一种应用程序,用来管理和调度硬件资源。操作系统可以决定让CPU执行哪个程序,可以进行磁盘操作,创建文件、删除文件等。

装系统:将操作系统程序安装到硬盘。

当装完系统,计算机就能正常启动了。

在这个流程中,硬盘会将操作系统相关的一些程序、文件载入到内容中。载入到内存之后,CPU就能运行了,在CPU运行的过程中,如果发现需要传输视频信号,有内容需要在显示器呈现,就会交给显卡处理,显卡处理完,就会交给显示器,显示器最后显示出页面。如果遇到声音信号需要播放,会把信号交给声卡,声卡把信号传给外部播放设备(耳机、音响)等。

在打开电脑之后,应用程序是如何运行的呢?比如说我们想玩一个游戏,这个游戏如何运行。首先我们会把这个游戏的安装包下载到电脑上,再运行安装包,一般是把这个软件安装到硬盘上(但有时候也会安装到软盘上)。点击游戏的图标进行启动,双击图标之后,发生的事情和启动操作系统差不多。首先硬盘会把和游戏相关的程序载入到内存,然后如果有指令需要运行,CPU会处理这些指令,执行过程中的视频信号会交给显卡,显卡传给显示器,音频信号会交给声卡,声卡交给外部播放设备。最后,就会在显示器中显示这个游戏的运行界面。

http://www.xdnf.cn/news/15781.html

相关文章:

  • 云边端协同架构下的智能计算革命
  • 解惑LINQ中的SelectMany用法
  • 一站式PDF转Markdown解决方案PDF3MD
  • 数据库第四次作业
  • Flexbox vs Float vs Table:现代布局终极对比
  • kombu 运行超长时间任务导致RabbitMQ消费者断开
  • (LeetCode 面试经典 150 题) 49. 字母异位词分组 (哈希表)
  • 基于Eureka和restTemple的负载均衡
  • buildroot运行qemu进行pcie设备模拟,开发驱动的方式
  • 【RK3576】【Android14】Android平台构建
  • 爬虫逆向之JS混淆案例(全国招标公告公示搜索引擎 type__1017逆向)
  • 重学Framework Input模块:如何实现按键一键启动Activity-学员作业
  • HTML5中的自定义属性
  • 【洛谷】询问学号、寄包柜、移动零、颜色分类(vector相关算法题p1)
  • 实验室危险品智能管控:行为识别算法降低爆炸风险
  • bws-rs:Rust 编写的 S3 协议网关框架,支持灵活后端接入
  • 汽车ECU控制器通信架构
  • Java学习--------消息队列的重复消费、消失与顺序性的深度解析​
  • Linux 内存管理(2):了解内存回收机制
  • Python实现智能文件搜索系统:从基础到高级应用
  • 【Oracle】ORACLE OMF说明
  • AUTOSAR进阶图解==>AUTOSAR_SWS_DiagnosticLogAndTrace
  • Redisson RLocalCachedMap 核心参详解
  • kotlin部分常用特性总结
  • Ultralytics代码详细解析(三:engine->trainer.py主框架)
  • LVS——nat模式
  • 电机相关常见名词
  • 如何解决Flink CDC同步时间类型字段8小时时间差的问题,以MySQL为例
  • Redis Sentinel哨兵集群
  • Spring之【AnnotatedBeanDefinitionReader】