主頁 > 後端開發 > 哪吒Java技能樹 | Node 安裝配置圖解版——簡單明了 一目了然 趕緊收藏吧

哪吒Java技能樹 | Node 安裝配置圖解版——簡單明了 一目了然 趕緊收藏吧

2021-11-15 08:22:45 後端開發

本篇目標

  • 能夠搭建 Node 運行環境
  • 掌握 NodeJS 程式的運行方法
  • 理解模塊化開發
  • 理解系統模塊和第三方模塊
  • 理解package.json檔案作用

1.Node 開發概述

1.1為什么要學習服務器端開發技術

前端人員為什么要學習服務器端開發技術?

  • 能夠和后端程式員更加緊密的配合
  • 網站業務邏輯前置,學習前端技術需要后端技術支撐(Ajax)
  • 擴寬知識視野,能夠站在更高的角度審視整個專案

1.2服務器端開發做什么

  • 實作網站業務員邏輯
  • 資料的增刪改查

1.3為什么選擇Node作為服務器技術

  • 使用熟悉的js語法開發后端技術
  • 很多一線城市公司的需求
  • 生態系統活躍,有大量開源庫可以使用
  • 前端開發工具大多基于Node開發

1.4Node是什么

Node官網

Node中文網

Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行時(運行環境),如瀏覽器也是js的運行環境,Node 也是JS的運行環境,但是將JS代碼的應用場景擴展到了服務器端

2.Node運行環境搭建

2.1安裝

打開 Node官網

在這里插入圖片描述

如果不是你想要的版本,點擊頁面上的“DOWNLOADS” 鏈接,打開下載頁面

在這里插入圖片描述

下載完成之后,雙擊安裝程式

在這里插入圖片描述

下面以截圖的方式展現安裝程序,基本一路默認即可,需要注意的是安裝目錄不能是中文

在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

安裝程序

在這里插入圖片描述

在這里插入圖片描述

注意:安裝完成后,桌面上并沒有什么快捷方式,因為Node僅僅是一個JS的執行環境

使用Node需要用到命令列工具

如何測驗Node是否安裝成功呢?

打開命令列工具,這里可以使用傳統的 cmd 工具,也可以使用win10中的 powershell

我們這里使用后者

按下鍵盤上的 windows+S 鍵,輸入 powershell ,會搜索到powershell 工具

在這里插入圖片描述

或者在任意位置,比如桌面,按下 shift 鍵同時,按下滑鼠右鍵, 也會顯示 powershell 工具

在這里插入圖片描述

打開命令列后,輸入如下命令

node -v

如果能夠顯示版本號,就表明node安裝成功

在這里插入圖片描述

2.2環境安裝失敗解決辦法

2.2.1 錯誤代號 2502/2503

表示當前登錄系統的用戶權限不足,

解決方法:

  • 以管理員身份運行 powershell 工具
  • 屬于運行安裝包命令:msiexec /package node安裝包位置,如我安裝包在如下位置

在這里插入圖片描述

則輸入如下命令進行安裝

在這里插入圖片描述

2.2.2 環境變數問題

在 powershell 中輸入 node -v 時,會提示 node 不是可識別的命令類似的錯誤資訊,原因在于,沒有將node可執行程式路徑添加到環境變數中

環境變數添加方法,這里不再演示

3. Node 入門

3.1 Node.js 組成

  • JavaScript 由三部分組成,ECMAScript,DOM,BOM
  • Node.js是由ECMAScript及Node 環境提供的一些附加API組成的,包括檔案、網路、路徑等等一些更加強大的 API

在這里插入圖片描述

3.2 基礎語法和運行

首先,所有前面學習過的 ECMAScript 語法在Node中都可以使用,包括ES6的語法

3.2.1 運行node程式

那么,在Node環境下該如何執行我們的JS代碼呢?

按照如下步驟,我們開始第一個node程式的撰寫和執行

  • 打開任意你熟悉的開發工具,如sublime、vs code,或者記事本

  • 新建檔案 hello.js,注意這里的檔案后綴名是 .js ,而不是 .html

  • 撰寫如下測驗代碼

    let ary = [12, 3, 4, 5]
    ary.forEach(item => console.log(item))
    
  • 找到 hello.js 檔案的位置,然后按下 shift 鍵的同事點擊滑鼠右鍵,選擇“在此處打開powershell 視窗”

  • 在命令列中輸入如下命令

node hello.js 

敲擊回車鍵后,就可以執行 hello.js 中的代碼了

3.2.2 總結

通過上面代碼的撰寫和執行,我們總結如下幾點

  • node 檔案的后綴名都是.js
  • 以前的學習中,都是將js檔案引入到html中,以運行html檔案的方式執行js代碼,但node是服務器技術,在node技術中,不存在 dom 和 bom,所以運行方式與以前是不一樣的
  • 運行node程式的方式是使用 node 命令加上檔案名稱的方式
  • 除了在命令列中運行node程式的方式外,很多開發工具,如vs code內部,也可以運行node程式

3.3 global

以前學習過,console 是 window 的全域物件,但是在 node 中,global 才是全域物件

Node中全域物件下有以下方法,可以在任何地方使用,global可以省略

  • console.log() 在控制臺中輸出
  • setTimeout() 設定超時定時器
  • clearTimeout() 清除超時時定時器
  • setInterval() 設定間歇定時器
  • clearInterval() 清除間歇定時器

新建一個 global.js 檔案,撰寫下面代

global.setTimeout(() => {
    console.log('timeout')
}, 2000);

運行 global.js 檔案,進行測驗

證明,上面的這些API確實是全域物件 global 中的

4.模塊化開發

4.1 現有的弊端

在我們不算長的js代碼撰寫經歷中,可能體會到或者體會不到,js開發有如下弊端

  • 檔案依賴:檔案依賴不清楚,需要人為的去分析
  • 命名沖突:兩個js檔案中,可能存在同名的變數或者檔案,會出現后面檔案覆寫掉前面檔案的問題

在這里插入圖片描述

舉例說明:

4.2 軟體中的模塊化開發

一個功能就是一個模塊,多個模塊可以組成完整應用,抽離一個模塊不會影響其他功能的運行

在這里插入圖片描述

4.3 Node 中的模塊化開發規范

那么到底如何做到模塊化開發呢?

  • Node.js規定一個JavaScript檔案就是一個模塊,模塊內部定義的變數和函式默認情況下在外部無法得到
  • 模塊內部可以使用exports物件進行成員匯出, 使用require方法匯入其他模塊,

在這里插入圖片描述

注意:這里僅僅是Node中的模塊化開發規范,ES6也規定了自己的模塊化開發規范

代碼演示:

新建 m.js,撰寫如下代碼

let name='李白'
var sum=(a,b)=>a+b
exports.name=name
exports.sum=sum

新建 n.js,撰寫如下代碼

const m=require('./m.js')
console.log(m.dd)
console.log(m.ss(4,5))

運行 n.js ,可以看到結果

小編解惑

需要注意如下幾點

  • 在n.js 中引入 m.js 時,可以省略后面的.js
  • 引入 m.js 時,需要使用如下領“./m.js”
  • m.js中,exports 后面的屬性名稱可以使用任何名稱

4.4 Node 中兩種模塊成員匯出方法對比

exports.name=name
module.exports.name=name

上面案例用到了 exports.屬性=屬性值 的方式進行模塊成員匯出

還可以使用 module.exports.屬性=屬性值 的方式進行模塊成員匯出

總結:

exports是module.exports的別名(地址參考關系),匯出物件最終以module.exports為準

下面證明這個結論

比如,在m.js 中撰寫如下代碼

let name='李白'
let age=20
exports.name=name
module.exports.age=age

在 n.js 中撰寫下面代碼

const m=require('./m.js')
console.log(m)

輸出結果

{ name: '李白', age: 20 }

課件,exports 與 module.exports 確實是一個地址,也就說最后修改的都是 module.exports

再次修改 m.js

let name='李白'
let age=20
module.exports.name=age
exports.name=name

再次運行 n.js

{ name: '李白' }

在 exports 和 module.exports 中都設定了name屬性,但一個將值設定成了 age 成員,一個設定成了 name 成員,最后發現還是以 module.exports 為準

這就證明了上面的結論

5.系統模塊

5.1 什么是系統模塊

Node運行環境提供的API. 因為這些API都是以模塊化的方式進行開發的, 所以我們又稱Node運行環境提供的API為系統模塊

小編解惑

在前面,我們學了很多JS的API,如 querySelector、getElementById、offsetLeft 等,這些都是瀏覽器提供的跟Dom或者Bom相關的功能,只不過這些API都是沒有任何關系的分散的,

Node 中,也提供了很多的API,但是將這些API根據烈性存放在不同的模塊中,如檔案模塊中就包含了很多能夠操作磁盤檔案的API

所以,我們可以總結如下:

  • 所謂模塊化,就是將相關API根據型別劃分,存放到不同的檔案中
  • 系統模塊,就是 Node 預先已經定義好的一些API的集合
  • 除了系統模塊,開發者還可以開發第三方模塊,其他開發者都可以使用,如我們前面自己定義的m.js也是一個第三方模塊

在這里插入圖片描述

下面通過幾個系統模塊的講解,掌握 node 中代碼撰寫的基本規則,以及模塊引入和使用的方法

5.2 檔案操作

Node.js中文手冊

5.2.1 讀取檔案

語法:

fs.readFile(path[, options], callback)

先看案例

const fs=require('fs')
fs.readFile('m.js','utf8',(err,data)=>{
    console.log(err)
    console.log(data)
})

小編解惑

  • 系統模塊的引入方式也是使用 require
  • 模塊名稱要使用引號包含起來
  • readFile是一個異步方法,所以需要回呼函式接收讀取結果
  • 回呼函式中,err 獲取讀取中的錯誤資訊,如果讀取程序中沒有出現錯誤,則結果為null;data 為讀取的檔案內容

所以一般在處理讀取的檔案之前,先判斷err 的值

const fs = require('fs')
fs.readFile('m1.js', 'utf8', (err, data) => {
    if (err) throw err;
    console.log(data)
})

5.2.2 寫入檔案

語法

fs.writeFile(file, data[, options], callback)

案例

const fs = require('fs')
fs.writeFile('./demo.txt', '說點什么呢', err => {
    if (err) throw err;
    console.log('檔案寫入成功')
})

小編解惑

  • 回呼函式只有一個引數 err

5.3 路徑操作

5.3.1 路徑拼接

語法

path.join([...paths])

使用平臺特定的分隔符作為定界符將所有給定的 path 片段連接在一起,然后規范化生成的路徑,

小編解惑

因為不同平臺的路徑分隔符不統一,為了防止將路徑分隔符寫死,影響了程式的跨平臺特性,所以需要使用路徑拼接

案例

const path=require('path')
let res=path.join('public','static','images','time.jpg')
console.log(res)

windows 平臺運行結果

public\static\images\time.jpg

linux 平臺運行結果

public/static/images/time.jpg

5.3.2 使用相對路徑還是絕對路徑

  • 大多數情況下使用絕對路徑,因為相對路徑有時候相對的是命令列工具的當前作業目錄
  • 在讀取檔案或者設定檔案路徑時都會選擇絕對路徑
  • 使用__dirname獲取當前檔案所在的絕對路徑

代碼演示:

新建檔案,撰寫下代碼

const fs=require('fs')
fs.readFile('m.js','utf8',(err,data)=>{
    if(err) throw err
    console.log(data)
})	

在此檔案所在目錄中,打開命令列工具,并運行此檔案,發現沒有問題

若在命令列工具中,使用如下命令,向上回傳一級目錄

cd ..

再次執行命令

在這里插入圖片描述

所以我們需要在代碼中,根據當前撰寫的檔案路徑,獲取絕對路徑,然后將檔案路徑拼接成絕對路徑,就沒問題了

在這里插入圖片描述

小編解惑

命令列工具目錄,就是你打開命令列工具時的目錄

如你在桌面上打開了命令列工具,那么目錄就是

在這里插入圖片描述

如果在D盤根目錄下打開了命令函工具,那么目錄就是

在這里插入圖片描述

但是在代碼撰寫時,我們其實希望以當前正在撰寫的檔案為基礎作為相對路徑

6. 第三方模塊

別人寫好的、具有特定功能的、我們能直接使用的模塊即第三方模塊,由于第三方模塊通常都是由多個檔案組成并且被放置在一個檔案夾中,所以又名包,

第三方模塊有兩種存在形式:

  • 以js檔案的形式存在,提供實作專案具體功能的API介面,此種模塊多為本地安裝
  • 以命令列工具形式存在,輔助專案開發,此種模塊多為全域安裝

6.1 如何獲取第三方模塊

https://www.npmjs.com/

開發者將開發好的第三方模塊,上傳到上面網站,其它開發者可以從上面下載

下載方式為命令列方式下載

下面是下載和卸載第三方模塊的基本語法

  • 下載:npm install 模塊名稱
  • 卸載:npm unintall package 模塊名稱

根據模塊的作用,分為全域安裝和本地安裝

  • 本地安裝:模塊被下載到命令列工具所在目錄下,只能當前專案使用
  • 全域安裝:模塊被下載全域目錄下,所有專案都可以使用

6.2 安裝演示

6.2.1 本地安裝

npm install jquery

安裝完成后,會在當前目錄下創建 node_modules 目錄

卸載

 npm uninstall jquery

6.2.2 全域安裝

以 nodemon 模塊為例

nodemon是一個命令列工具,用以輔助專案開發,
在Node.js中,每次修改檔案都要在命令列工具中重新執行該檔案,非常繁瑣,

安裝

npm install nodemon -g

卸載

npm uninstall nodemon -g

6.2.3 安裝慢怎么辦

因為 npmjs.com 的服務器在國外,所有有時候下載速度很慢,或者總是斷開

解決方案就是更換下載源,最好是國內的下載源

解決方案有兩個

  • 安裝 nrm,通過nrm更換下載源,更換之后,仍然使用 npm 命令安裝模塊
  • 安裝 cnpm,以后通過cnpm 安裝,安裝后,使用 cnpm 安裝模塊
6.2.3.1 nrm

通過安裝 nrm 的方式,可以選擇和切換下載源

使用步驟

  • 使用npm install nrm –g 下載它
  • 查詢可用下載地址串列 nrm ls
  • 切換npm下載地址 nrm use 下載地址名稱
  • 下載模塊 npm install 模塊名稱

小編解惑

在鏡像源中,cnpm 和 taobao 其實是一樣的,所以選擇 taobao 還是 cnpm 都可以

在這里插入圖片描述

6.3.2.2 cnpm

除了將下載地址切換為 cnpm 外,還可以直接安裝 cnpm

使用 npm 安裝 cnpm,同事將下載源更換為taobao

npm install -g cnpm --registry=https://registry.npm.taobao.org

安裝成功后,使用 cnpm 命令安裝第三方模塊,如

 cnpm install jquery

說明:cnpm 只是基于npm 的一個小公舉

6.3 yarn

上面學習的 npm 是基于node.js 的一個包管理工具,除此之外,還有yarn,現在也非常流行

yarn 是現在非常流行的一個基于node.js的包管理工具,與 npm 可以說是雙雄爭霸

注意:yarn 與 cnpm 是不同的

6.3.1 yarn 安裝

yarn安裝

除了下載安裝包外,還可以從npm 中安裝yarn

下面使用 npm 包安裝 yarn(雖然yarn 是與npm 競爭關系,但是npm 還是和開放的允許安裝 yarn)

 npm install yarn -g

執行下面命令,查詢yarn命令串列

yarh -h

在這里插入圖片描述

查詢 yarn 版本

yarn -v

6.3.2 yarn 安裝和模塊

新建一個專案,然后打開命令列工具,執行如下命令

yarn add jquery

洗掉模塊

yarn remove jquery

小編解惑

  • 一個專案中,不要同事使用npm 和 yarn 進行包管理
  • npm 和 yarn 的能力,我們僅僅使用了萬分之一,更多功能,后面再講

7. package.json 檔案

7.1 node_modules 的問題

我們發現,當使用 npm 安裝模塊時,會創建 node_modules 目錄,此目錄中存盤下載的模塊及其依賴的模塊

這個目錄中的檔案存在兩個問題

  • 檔案夾以及檔案過多過碎,當將專案整體拷貝給別人時,傳輸速度很慢(事實上,node專案的體積主要就是node_modules)
  • 復雜的模塊依賴關系需要被記錄,確保模塊的版本和當前保持一致,否則會導致當前專案運行報錯

7.2 package.json 解決問題

在個專案拷貝給他人時,洗掉 node_modules,他人再使用 nmp 命令進行恢復安裝

這就需要一個檔案能夠記錄,當前專案都使用了哪些模塊,這個檔案就是 package.json

創建package.json

默認情況下,是沒有此檔案的,可以使用命令生成此檔案

新建專案,然后在此專案下打開命令列工具,運行如下命令

npm init -y

package.json 檔案內容如下

{
  "name": "package_demo",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

安裝模塊

 npm install debug needle

觀察 package.json 檔案變化

在這里插入圖片描述

洗掉node_modules

將專案拷貝給別人時,直接洗掉 node_modules 目錄即可

恢復安裝

運行如下命令,即可根據package.json 中的記錄恢復安裝

npm install

7.3 專案依賴和開發依賴

  • 專案依賴
    • 在專案的開發階段和線上運營階段,都需要依賴的第三方包,稱為專案依賴
    • 使用npm install 包名命令下載的檔案會默認被添加到 package.json 檔案的 dependencies 欄位中
  • 開發依賴
    • 在專案的開發階段需要依賴,線上運營階段不需要依賴的第三方包,稱為開發依賴
    • 使用npm install 包名 --save-dev命令將包添加到package.json檔案的devDependencies欄位中

案例演示:

使用如下命令安裝開發依賴包:gulp

npm install gulp --save-dev

查看package.json

在這里插入圖片描述

洗掉 node_modules 目錄

使用如下命令恢復專案依賴安裝

 npm install --production

查看 node_modules 中的檔案變化

再次洗掉 node_modules,然后使用如下命令恢復開發依賴安裝

npm install

發現node_modules 中多了很多檔案

8. package.lock.json

此檔案在第一次使用npm下載模塊時就會被創建

作用如下:

  • 鎖定包的版本,確保再次下載時不會因為包版本不同而產生問題
  • 加快下載速度,因為該檔案中已經記錄了專案所依賴第三方包的樹狀結構和包的下載地址,重新安裝時只需下載即可,不需要欄位外的作業

9. 模塊加載規則

9.1 模塊擁有路徑時

分成下面兩種情況

require('./yhb.js') // 擁有路徑和后綴
require('./yhb')	// 擁有路徑,但沒有后綴
  • require方法根據模塊路徑查找模塊,如果是完整路徑,直接引入模塊
  • 如果模塊后綴省略,先找同名JS檔案再找同名JS檔案夾
  • 如果找到了同名檔案夾,找檔案夾中的index.js
  • 如果檔案夾中沒有index.js就會去當前檔案夾中的package.json檔案中查找main選項中的入口檔案
  • 如果找指定的入口檔案不存在或者沒有指定入口檔案就會報錯,模塊沒有被找到

9.2 沒有路徑

require('yhb')
  • Node.js會假設它是系統模塊
  • Node.js會去node_modules檔案夾中
  • 首先看是否有該名字的JS檔案
  • 再看是否有該名字的檔案夾
  • 如果是檔案夾看里面是否有index.js
  • 如果沒有index.js查看該檔案夾中的package.json中的main選項確定模塊入口檔案
  • 否則找不到報錯

小編解惑

如果模塊沒有路徑,node會認為這是一個系統模塊

如果模塊擁有路徑,node會認為這是開發者自己定義的模塊檔案

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/357104.html

標籤:java

上一篇:ObjectOrientedProgramming - 面向物件的編程(包、繼承、多型的一部分:向下/向下轉型,重寫) -Java

下一篇:《JavaScript百煉成仙》統一回復粉絲們的一些問題

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more