• Node.js 基础学习


    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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

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

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

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

    console.log(globalThis ===global);
    // true
    
    • 1
    • 2

    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);
    // 
    
    • 1
    • 2
    • 3

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

    1. allocUnsafe
    let buf_2 = Buffer.allocUnsafe(10);
    console.log(buf_2);
    // 
    
    • 1
    • 2
    • 3

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

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

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

    1. from
    let buf_3 = Buffer.from('hello');
    console.log(buf_3);
    // 
    
    • 1
    • 2
    • 3

    补充 – 是怎么出现的?
    字符中字母对应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
    • 2
    • 3

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

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

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

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

    5. 计算机基础

    5.1 计算机基本组成

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

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

    5.2 程序执行的基本流程

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

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

    5.3 进程和线程

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

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

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

  • 相关阅读:
    Servlet学习(三):HttpServlet
    大学阶段总结
    HashMap详解
    SpringMVC的请求处理流程及核心组件
    微信小程序开发的主要流程和部署以及遇到的大坑笔记
    调用内部或私有方法的N种方法
    浏览器原生JavaScript离线文字转语音TTS播放,支持Windows自带TTS语音和移动端(安卓、IOS)
    巧用shell脚本批量替换字符串
    ESP32学习笔记(50)——搭建环境、编译烧写(Windows+Espressif-IDE)
    docke安装mysql以及主从搭建(并且指定数据生成路径)
  • 原文地址:https://blog.csdn.net/2302_79523175/article/details/137964978