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.pswp.cn/diannao/91912.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/91912.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/91912.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

游戲開發日志

我來為您逐行詳細講解這個 ViewMgr.cs 文件。這是一個Unity游戲中的視野管理系統,用于優化游戲性能。## 文件結構概覽這個文件主要包含以下幾個部分: 1. 數據結構和接口定義 2. 視野管理器 ViewMgr 類 3. 工具類 ViewTools讓我逐行為您講解:#…

使用 PlanetScope 衛星圖像繪制水質參數:以莫干湖為例

1.數據采集 我使用ArcGIS Pro 中的Planet Imagery插件下載了 2023 年 6 月 25 日的安卡拉莫干湖衛星圖像。 圖 1:使用 Planet 插件下載衛星圖像 圖 2:下載圖像的日期和傳感器選擇 我查閱的研究中指出,使用無降水時期的衛星圖像對于水質測定…

Docker部署前后端分離項目——多項目共享環境部署

目錄 一、簡介 二、文件目錄結構 三、前端部署流程(多nginx) 3.1 前端打包 3.2 編寫部署文件——項目1(consult-system) 3.3 編寫部署文件——項目2(person-system) 3.4 前端部署至linux服務器 3.5…

學習筆記(39):結合生活案例,介紹 10 種常見模型

學習筆記(39):結合生活案例,介紹 10 種常見模型線性回歸只是機器學習的 “冰山一角”!根據不同的任務場景(分類、回歸、聚類等),還有許多強大的模型可以選擇。下面我用最通俗易懂的語言,結合生活案例&#…

BabyAGI 是一個用于自構建自主代理的實驗框架

這個最新的 BabyAGI 是一個用于自構建自主代理的實驗框架 核心是一個新的函數框架 (functionz),用于存儲、管理和執行數據庫中的函數。它提供了一個基于圖形的結構,用于跟蹤導入、依賴函數和身份驗證密鑰,并具有自動加…

商業秘密視域下計算機軟件的多重保護困境

作者:邱戈龍、柯堅豪重慶商業秘密律師廣東長昊律師事務所引言:計算機軟件保護的復雜性 在商業秘密保護的宏大版圖中,計算機軟件因其技術密集性和創新性占據著特殊地位。軟件的真正價值不僅在于其代碼本身,更在于其背后的流程、邏…

深入理解 Spring Boot 自動配置原理

Spring Boot 之所以能“開箱即用”,其核心就在于 自動配置機制(Auto Configuration)。本文將深入剖析 Spring Boot 自動配置的工作原理,從注解入手,再到底層的源碼機制,揭開 Spring Boot 背后的“魔法”。 …

Ubuntu18.04開機啟動執行腳本

#!/bin/bash # 運行 .NET Core 應用程序 dotnet /home/bruce/atg/SmartConsole.dll &# 打開瀏覽器 firefox 給文件權限sudo chmod 777 start.sh運行gnome-session-properties打開系統自帶的一個啟動程序

c語言進階 字符函數和字符串函數

字符函數和字符串函數字符函數和字符串函數1. strlenstrlen 函數詳解模擬實現1.計數器方式2.不能創建臨時變量計數器(遞歸)3.指針-指針的方式2. strcpystrcpy 函數詳解模擬實現3. strcatstrcat 函數詳解模擬實現4. strcmpstrcmp 函數詳解模擬實現5. strn…

(LeetCode 每日一題) 1233. 刪除子文件夾 (排序)

題目:1233. 刪除子文件夾 思路:排序,時間復雜度0(L*nlogn)。 文件夾a的子文件b,b字符串字典序列一定是大于a的,所以直接將字符串數組folder升序排序。每次只需判斷當前字符串,是否是父文件夾數組v最后一個…

集成算法學習bagging,boosting,stacking

baggibg(rf隨機森林) adaboostibg 用來展示 Project Jupyter | Home 展示源碼 Eclipse IDE | The Eclipse Foundation Eclipse 下載 |Eclipse 基金會 教程8-Adaboost決策邊界效果_嗶哩嗶哩_bilibili (23 封私信) 圖解機器學習神器:Scikit-Learn - 知乎 Baggi…

HOOPS SDK賦能PLM:打造全生命周期3D數據管理與協作能力

在制造業和工業領域,產品全生命周期管理(PLM) 已成為驅動企業數字化轉型、提升創新力與運營效率的核心引擎。一個高效的PLM平臺不僅需要管理海量的設計數據,還必須在設計、制造、供應鏈、銷售和服務等多個環節之間無縫流轉信息&am…

解決 Selenium 頁面跳轉過快導致的內容獲取問題:從原理到實踐

在使用 Selenium 進行網頁自動化操作時,很多開發者都會遇到一個頭疼的問題:頁面還沒加載完,代碼就已經執行到下一句了。結果要么是元素找不到,要么是獲取的內容不完整,甚至直接拋出異常。今天我們就來聊聊如何優雅地解…

【Python練習】051. 編寫一個函數,實現簡單的定時器功能

051. 編寫一個函數,實現簡單的定時器功能 051. 編寫一個函數,實現簡單的定時器功能 代碼說明: 示例運行: 擴展功能 代碼說明: 實現Python定時器的幾種方法 051. 編寫一個函數,實現簡單的定時器功能 以下是一個簡單的Python函數,用于實現定時器功能。這個定時器可以設置…

springboot基礎-demo

1.創建學生信息表 create table stu(id int unsigned primary key auto_increment comment ID,name varchar(100) comment 姓名,age tinyint unsigned comment 年齡,gender tinyint unsigned comment 性別, 1:男, 2:女,score double(5,2) comment 成績,phone varchar(11) comme…

關于transformer的一些疑點總結

殘差連接的作用 Transformer中的殘差連接(Residual Connection)是其深層架構能穩定訓練的核心設計之一,主要通過以下機制發揮作用: 1. 緩解梯度消失,支持深層訓練 梯度保護機制:在反向傳播時,…

【終極指南】解決 Windows 11 更新后 Docker 連接 localhost 奇慢(卡頓、超時十幾秒)的通用方案

聰明人能看得出這是 ai 寫的,但也是我親身實踐的,最后讓 ai 總結寫了一篇,放心食用 一、 結論先行(直接用)問題現象: 升級到某個 Windows 11 版本后,在本地訪問 Docker 容器中部署的任何服務&am…

Stream API

Java 8 引入的 Stream API 是處理集合數據的強大工具,它允許你以聲明式方式處理數據集合,支持各種聚合操作和并行處理。以下是 Stream API 的核心知識點及具體代碼示例: 1. Stream 概述 Stream 是數據渠道,用于操作數據源&#xf…

相機參數的格式與作用

在計算機視覺中,相機標定是非常重要的一步,主要目的是從圖像中恢復出物體的三維信息。為了做到這一點,我們需要了解和使用一系列的數學工具,這些工具描述了相機的成像過程,包括相機的內參、外參、畸變系數、投影矩陣和…

【jvm|基本原理】第四天

摘要:本文簡單分析了Java虛擬機的核心運行機制。首先介紹了基本數據類型在32位和64位虛擬機中的存儲差異,說明slot槽設計以空間換時間的優化思路。其次詳細解析了對象在堆內存中的存儲結構,包括對象頭、對象數據和對齊填充機制。然后探討了方…