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.mzph.cn/web/2014.shtml

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

相关文章

CSS基础:浮动(float)的3种方式,清除浮动3种方式的详解

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端的程序媛。 云桃桃-大专生&#xff0c;一枚程序媛&#xff0c;感谢关注。回复 “前端基础题”&#xff0c;可免费获得前端基础 100 题汇总&#xff0c;回复 “前端工具”&#xff0c;可获取 Web 开发工具合…

【报错】ModuleNotFoundError: No module named ‘einops‘

1 报错 💔💔💔 ModuleNotFoundError: No module named einops 解决方法 💚 💚 💚 pip --default-timeout=100 install einops -i https://pypi.tuna.tsinghua.edu.cn/simple 问题解决啦!!!🌺🌺🌺 2 报错 💔💔💔 ModuleNotFoundError: No module

iOS OC项目中引入SwiftUI文件

iOS OC项目中引入SwiftUI文件 1、创建SwiftUI文件 2、第一次创建时&#xff0c;Xcode会提示桥接&#xff0c;选择 Creat Bridging Header即可。 3、创建swift管理类 /**在UIKit中使用SwiftUI&#xff0c;需要使用UIHostingController对SwiftUI进行包装&#xff0c;返回的是U…

C++11 数据结构7 队列的链式存储,实现,测试

前期考虑 队列是两边都有开口&#xff0c;那么在链式情况下&#xff0c;线性表的链式那一边作为对头好呢&#xff1f; 从线性表的核心的插入和删除算法来看&#xff0c;如果在线性表链表的头部插入&#xff0c;每次循环都不会走&#xff0c;但是删除的时候&#xff0c;要删除线…

echarts 双堆叠柱状图(数据整理)

1.后台返回的数据格式 {"code": "0000","message": "","messageCode": "操作成功","sign": null,"detail": null,"data": {"pieChart": [{"key": "产品…

C语言--基础面试真题

1、局部变量和静态变量的区别 普通局部变量和静态局部变量区别 存储位置&#xff1a; 普通局部变量存储在栈上 静态局部变量存储在静态存储区 生命周期&#xff1a; 当函数执行完毕时&#xff0c;普通局部变量会被销毁 静态局部变量的生命周期则是整个程序运行期间&#…

基于51单片机的电子秤LCD1602液晶显示( proteus仿真+程序+设计报告+讲解视频)

基于51单片机电子秤LCD显示 1. 主要功能&#xff1a;2. 讲解视频&#xff1a;3. 仿真设计4. 程序代码5. 设计报告6. 设计资料内容清单&&下载链接 基于51单片机电子秤LCD显示( proteus仿真程序设计报告讲解视频&#xff09; 仿真图proteus8.9及以上 程序编译器&#xf…

深兰科技入选2024全国“人工智能+”行动创新案例TOP100

近日&#xff0c;中科院《互联网周刊》联合eNET研究院、德本咨询、中国社会科学院信息化研究中心共同发布了《2024全国“人工智能”行动创新案例TOP100》榜单。经评委会层层遴选&#xff0c;深兰科技专为洛阳市打造的“工业智能化洛阳中心”项目成功入围该榜单。一同入围的还包…

高通发布电脑CPU,比英特尔Ultra9领先51%

要说2024年最热门的关键词&#xff0c;那肯定非 AI 莫属&#xff0c;当前 AI 已经开始深入各行各业&#xff0c;AI 电视、AI 手机、AI 车机、AI 家电&#xff0c;以及 AI PC ,这些都意味着 AI 将对各个行业带来的新风向和不小的冲击。 2024 年了&#xff0c;PC 处理器还能卷出什…

安居水站:自来水安全性影响因素分析及监测管理对策

摘要&#xff1a;自来水作为人们日常生活的重要组成部分&#xff0c;其安全性直接关系到公众健康。本文深入探讨了可能影响自来水安全性的多种因素&#xff0c;包括水源污染、水处理工艺、供水管网问题、二次供水设施维护不当、工业及农业污染、重金属和微生物污染、季节变化以…

Python使用random模块随机生成ip、端口、字符串

import random import stringdef generate_random_ip():ip ".".join(str(random.randint(0,255)) for _ in range(4))return ipdef generate_random_port():port random.randint(0,65535)return portdef generate_random_data(length):# 从字母&#xff08;大小写&…

SIMRAD AP48 自动舵控制器维修用于 Continuum 自动驾驶仪系统Simrad显示器仪器深圳捷达工控维修

AP48 自动驾驶仪控制器是一款用于 Continuum 自动驾驶仪系统的高级专用控制头&#xff0c;采用现代玻璃舵造型进行了增强。 AP48 专为各种条件下的响应能力和易用性而设计&#xff0c;将大型铝制旋转控制旋钮与专用的“闪避键”配对&#xff0c;以 1 度或 10 度的增量调整左舷…

论文笔记:Large Language Models Are Zero-Shot Time Series Forecasters

2023 neurips 完全是零样本&#xff08;zero-shot&#xff09;的&#xff0c;不需要微调 1 方法 1.1 Tokenization&#xff08;分词和编码&#xff09; 现有的LLM&#xff08;比如GPT3&#xff09;的tokenizer不能直接用来编码时间序列的句子 比如对数字42235630&#xff0…

负载均衡的原理及算法

一、定义 负载均衡&#xff08;Load Balancing&#xff09;是一种计算机网络和服务器管理技术&#xff0c;旨在分配网络流量、请求或工作负载到多个服务器或资源&#xff0c;以确保这些服务器能够高效、均匀地处理负载&#xff0c;并且能够提供更高的性能、可用性和可扩展性。…

鸿蒙 harmonyos 线程 并发 总结 async promise Taskpool woker(二)多线程并发 Taskpool

多线程并发 并发模型是用来实现不同应用场景中并发任务的编程模型&#xff0c;常见的并发模型分为基于内存共享的并发模型和基于消息通信的并发模型。 ArkTS提供了TaskPool和Worker两种并发能力供开发者选择&#xff0c;其具体的实现特点和各自的适用场景存在差异。TaskPool&…

数据科学与大数据(3)

数据分析&#xff0c;它不应该是在一个不适合的工具下生搬硬套 工具为具体的场景服务&#xff0c;换一个场景大概率会很鸡肋&#xff0c;对于一个成熟的分析师来说&#xff0c;十八般武艺样样精通到后期为常态&#xff0c;不要产生工具上的路径依赖&#xff0c;不要想着学一个工…

IDEA更换新版本启动没反应

目前安装了新的IDEA(压缩包方式)&#xff0c;由于老版本的IDEA还在用&#xff0c;所以并没有删除&#xff0c;但是安装完后发现点击idea64.exe后没有反应&#xff0c;于是网上找了好多方法最后解决了 下面是我的解决过程 新版本&#xff1a;IntelliJIdea2024.1 老版本: Intelli…

v-for和v-if的优先级

在vue v-for和 v-if 的优先级不同。 一般情况下&#xff0c;v-if 的优先级高于 v-for。这意味着&#xff0c;如果在同一元素上同时使用 v-if 和 v-for&#xff0c;v-if 的条件判断会先执行。 这种优先级的原因是为了避免不必要的渲染开销。如果先执行 v-for 循环&#xff0c;…

ubuntu系统安装配置gitlab+Jenkins+发布持续集成持续部署保姆级教程。

1、服务器环境 名称 系统 IP 备注 gitlab ubuntu20.04.2图形化 192.168.26.130 要求有6G的内存 Jenkins Ubuntu20.04.2图形化 …

.NET/C#汇总 —— 数据库概念知识

1 为什么要⼀定要设置主键? 其实这个不是⼀定的,有些场景下,⼩系统或者没什么⽤的表,不设置主键也没关系,mysql最好是⽤ ⾃增主键,主要是以下两个原因:如果定义了主键,那么InnoDB会选择主键作为聚集索引、如果没有显 式定义主键,则innodb 会选择第⼀个不包含有NULL值…