Node.js 基础学习

文章目录

  • 1. Node.js
    • 1.1 是什么?
    • 1.2 作用
  • 2. 命令行工具
    • 2.1 命令的结构
    • 2.2 常用命令
  • 3. Node.js 注意点
    • 3.1 Node.js 中不能使用DOM 和BOM 的API
    • 3.2 Node.js 中顶级对象叫做global
  • 4. Buffer
    • 4.1 Buffer 特点
    • 4.2 Buffer 创建方式
    • 4.3 Buffer 操作与注意点
  • 5. 计算机基础
    • 5.1 计算机基本组成
    • 5.2 程序执行的基本流程
    • 5.3 进程和线程

1. Node.js

1.1 是什么?

Node.js是一个开源的,跨平台的JavaScript运行环境
通俗来讲,Node.js就是一款应用程序,是一款软件,它可以运行JavaScript

1.2 作用

  1. 开发服务器应用
    在这里插入图片描述
    在这里插入图片描述

  2. 开发工具类应用
    在这里插入图片描述

  3. 开发桌面端应用
    在这里插入图片描述

2. 命令行工具

2.1 命令的结构

在这里插入图片描述
在这里插入图片描述
// 这两行代码称为命令
// 前者为命令名称
// 后者url 成为命令参数

2.2 常用命令

  1. 切换盘符
    C:
    D:
  2. 切换工作目录
    cd
  3. 查看目录文件
    dir

怎么去执行node.js 文件 :

  1. 第一种方法是win + R 打开命令行窗口,通过命令执行文件;
  2. 第二种方法是在VSCode 中右击文件选择再集成终端打开,输入node + 文件路径 就可以执行文件;
  3. 还有就是可以使用Code Runner插件,点击右上角播放按钮直接就可以执行文件

3. Node.js 注意点

3.1 Node.js 中不能使用DOM 和BOM 的API

浏览器中的JavaScript :
在这里插入图片描述
Node.js 中的JavaScript :
在这里插入图片描述

// BOM
console.log(window);
console.log(history);
console.log(navigator);
console.log(location);// DOM
console.log(document);// AJAX
let xhr = new XMLHttpRequest();
// 以上代码都是无法执行的 因为Node.js 中没有相应的API

3.2 Node.js 中顶级对象叫做global

浏览器的顶级对象为window ;而Node.js 中顶级对象叫做global。

另外,ES2020 中提出的globalThis 对象和Node.js 中的global 对象指向是一样的,也就是可以通过globalThis 访问顶级对象。

console.log(globalThis ===global);
// true

4. Buffer

Buffer 中文译为缓冲区,是一个类似于Array 的对象,用于表示固定长度的字节序列;
Buffer 本质是一段内存空间,专门用来处理二进制数据。

4.1 Buffer 特点

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

4.2 Buffer 创建方式

  1. alloc
let buf = Buffer.alloc(10);
console.log(buf);
// <Buffer 00 00 00 00 00 00 00 00 00 00>

这种方式创建的Buffer 位置都会归为0!

  1. allocUnsafe
let buf_2 = Buffer.allocUnsafe(10);
console.log(buf_2);
// <Buffer 00 00 00 00 00 00 00 00 00 00>

与前者相比,后者创建的Buffer 可能会包含旧的内存数据,并且每次创建的Buffer 数据可能都不一样;

补充:
在这里插入图片描述
内存空间是可以进行复用的,比如说A 使用过一部分内存空间后,B复用该部分内存空间,所以allocUnsafe 创建Buffer 就可能出现就旧数据。

但是allocUnsafe 创建Buffer 速度要比alloc 更快,因为allocUnsafe 不需要进行数据归零的操作。

  1. from
let buf_3 = Buffer.from('hello');
console.log(buf_3);
// <Buffer 68 65 6c 6c 6f>

补充 – <Buffer 68 65 6c 6c 6f> 是怎么出现的?
字符中字母对应ASCII 码的十六进制数,比如h ASCII 码的十六进制数就为68

4.3 Buffer 操作与注意点

  1. Buffer 与字符串的转换
let buf_4 = Buffer.from([105,108,111,118,101,121,111,117]);
console.log(buf_4.tostring()); // iloveyou
// toString() 是默认按照UTF-8的编码方式进行转换的

  1. 我们上面提到Buffer 是数组形式,那么就可以通过数组字面量进行查询数据,
let buf = Buffer.from('hello');
console.log(buf[0]);
// 104
console.log(buf[0].toString(2));
// 01101000

也可以通过数组字面量对数组数据进行修改,

buf[0] = 95;
console.log(buf.toString());
// _ello
  1. 溢出(了解即可)
    二进制中最大数据1111 1111 转换为十进制是255,也就是说如果存储的数据超过255就会出现溢出的情况,那么就会舍弃高位的数字
let buf = Buffer.from('hello');
buf[0] = 361;
//舍弃高位的数字0001 0110 1001 => 0110 1001
  1. 中文
let buf = Buffer.from('你好');
console.log(buf);

UTF-8 的中文一般是占三个字节,也就是‘你’ 占三个,‘好’ 占三个。

5. 计算机基础

5.1 计算机基本组成

在这里插入图片描述
内存:读写速度较快,断电丢失数据

硬盘:读写速度较慢,断电不丢失数据
在这里插入图片描述
显卡:
在这里插入图片描述

5.2 程序执行的基本流程

常见操作系统:
在这里插入图片描述
操作系统启动过程:
在这里插入图片描述
应用程序运行流程:
在这里插入图片描述
操作系统和应用程序的操作流程大体上来说是一致的,都是先将相关的程序从硬盘中获取加载在内存中,这样CPU就可以进行运行了,遇到视频信号时就交由显卡处理,最终在显示器上显示;遇到声音信号就交由声卡处理,最后呈现出来。

程序一般保存在硬盘中,软件安装的过程就是将程序写入硬盘的过程;
程序在运行时会加载进入内存,然后由CPU读取并执行程序。

5.3 进程和线程

进程:进行中的程序,也可以说是程序的一次执行过程;
查看进程:
在这里插入图片描述

线程:是一个进程中执行的一个执行流,一个线程是属于某个进程的。

线程和进程的关系
在这里插入图片描述
进程就相当于整个营业中的蜜雪冰城商店,而线程就可以理解为员工进行工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/640848.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ssm071北京集联软件科技有限公司信息管理系统+jsp

北京集联软件科技有限公司信息管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本信息管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理…

智慧浪潮下的产业园区:洞察智慧化转型如何打造高效、绿色、安全的新园区

目录 一、引言 二、智慧化转型的内涵与价值 三、打造高效园区的智慧化策略 1、建设智能化基础设施 2、推广智能化应用 3、构建智慧化服务平台 四、实现绿色园区的智慧化途径 1、推动绿色能源应用 2、实施绿色建筑设计 3、加强环境监测与治理 五、保障园区安全的智慧…

Ghost Buster Pro for Mac:强大的系统优化工具

Ghost Buster Pro for Mac是一款功能强大的系统优化工具&#xff0c;专为Mac用户设计&#xff0c;旨在提供全方位的系统清理、优化和维护服务。 Ghost Buster Pro for Mac v3.2.5激活版下载 这款软件拥有出色的垃圾清理能力&#xff0c;能够深度扫描并清除Mac上的无效目录、文件…

计算机视觉 CV 八股分享 [自用](更新中......)

目录 一、深度学习中解决过拟合方法 二、深度学习中解决欠拟合方法 三、梯度消失和梯度爆炸 解决梯度消失的方法 解决梯度爆炸的方法 四、神经网络权重初始化方法 五、梯度下降法 六、BatchNorm 七、归一化方法 八、卷积 九、池化 十、激活函数 十一、预训练 十二…

深入docker-swarm overlay网络模型

目录 1.简介 2.网络模型 3.docker_gwbridge网络 3.1.docker_gwbridge网关地址 3.2.检查docker_gwbridge网络 3.2.1.查找任务容器eth接口 3.2.2.查找ingress-sbox容器eth接口 4.检查ingress网络 4.1.检查ingress网络 4.2.检查ingress网络的命名空间 4.2.1.查找任务容…

Linux进程详解一

文章目录 进程进程PCBtask_struct查看进程方法一方法二 进程 教材观点 加载到内存中的程序正在运行的程序 进程 内核PCB对象 可执行程序 内核数据结构 可执行程序 进程 在计算机中可以同时打开多个程序&#xff0c;此时一定将多个.exe文件加载到了内存中 操作系统需要管…

iOS - 多线程-GCD

文章目录 iOS - 多线程-GCD1. 常见多线程方案2. GCD2.1 GCD的常见函数GCD中有2个用来执行任务的函数 2.2 GCD的队列2.2.1 GCD的队列可以分为2大类型 2.3 容易混淆的术语2.4.1 有4个术语比较容易混淆&#xff1a;同步、异步、并发、串行 2.4 各种队列的执行效果 3. 死锁3.1 死锁…

举例详解 TCP/IP 五层(或四层)模型与 OSI七层模型对比 (画图详解 一篇看懂!)

目录 一、为什么要对协议进行分层 1、什么是协议分层 2、协议分层的好处 二、TCP/IP 五层&#xff08;或四层&#xff09;模型 1、概念 应用层 传输层 网络层 数据链路层 物理层 2、举例详解 传输层 网络层 数据链路层 和 物理层 应用层 四、TCP/IP 五层&…

【多态】底层原理

博主首页&#xff1a; 有趣的中国人 专栏首页&#xff1a; C进阶 本篇文章主要讲解 多态底层原理 的相关内容 1. 多态原理 1.1 虚函数表 先看一下这段代码&#xff0c;计算一下sizeof(Base)是多少&#xff1a; class Base { public:virtual void Func1(){cout << &quo…

大模型培训老师叶梓:通过微调提升小型语言模型的复杂推理能力

在人工智能的快速发展中&#xff0c;复杂推理能力的提升一直是研究者们追求的目标。最近&#xff0c;一项发表在arXiv上的研究成果【1】&#xff0c;提出了一种创新的方法&#xff0c;即通过微调小型语言模型&#xff08;LMs&#xff09;&#xff0c;并将其与大型语言模型&…

LabVIEW轴承表面缺陷检测系统

LabVIEW轴承表面缺陷检测系统 为了解决轴承生产中人工检测效率低下、误检率高的问题&#xff0c;实现了一套基于LabVIEW的轴承表面缺陷自动检测系统。该系统利用工业相机采集轴承图像&#xff0c;通过图像处理技术对轴承表面的划痕缺陷和倒角缺陷进行自动识别和分析&#xff0…

Golang | Leetcode Golang题解之第43题字符串相乘

题目&#xff1a; 题解&#xff1a; func multiply(num1 string, num2 string) string {if num1 "0" || num2 "0" {return "0"}m, n : len(num1), len(num2)ansArr : make([]int, m n)for i : m - 1; i > 0; i-- {x : int(num1[i]) - 0fo…