Rust 學習

Rust 官網:https://www.rust-lang.org/zh-CN/

1、Rust?簡介

Rust?是一門注重安全(safety)、速度(speed)和并發(concurrency)的現代系統編程語言。Rust 通過內存安全來實現以上目標,但不使用垃圾回收機制(garbage collection, GC)。

Rust?特點

  • 高性能:Rust 速度驚人且內存利用率極高。由于沒有運行時和垃圾回收,它能夠勝任對性能要求特別高的服務,可以在嵌入式設備上運行,還能輕松和其他語言集成。
  • 可靠性:Rust 豐富的類型系統和所有權模型保證了內存安全和線程安全,讓您在編譯期就能夠消除各種各樣的錯誤。
  • 生產力:Rust 擁有出色的文檔、友好的編譯器和清晰的錯誤提示信息, 還集成了一流的工具——包管理器和構建工具, 智能地自動補全和類型檢驗的多編輯器支持, 以及自動格式化代碼等等。

Rust 相關概念

  • channel:Rust?會發布3個不同版本:stable、beta、nightly。
    ? ? ? ? stable:Rust 的穩定版本,每 6 周發布一次。
    ? ? ? ? beta:Rust 的公開測試版本,將是下一個 stable 版本。
    ? ? ? ? nightly:每天更新,包含以一些實驗性的新特性。
  • toolchain:一套 Rust 組件,包括編譯器及其相關工具,并且包含 channel,版本及支持的平臺信息。
  • target:指編譯的目標平臺,即:編譯后的程序在哪種操作系統上運行。
  • component (組件):toolchain 是由 component 組成的。查看所有可用和已經安裝的組件命令如下:rustup component list。rustup 默認安裝的組件:
    ? ? ? ? rustc:Rust 編譯器。
    ? ? ? ? rust-std:Rust 標準庫。
    ? ? ? ? cargo:包管理和構建工具。
    ? ? ? ? rust-docs:Rust 文檔。
    ? ? ? ? rustfmt:用來格式化 Rust 源代碼。
    ? ? ? ? clippy:Rust 的代碼檢查工具。
  • profile:為了方便對 component 進行管理,使用 profile 定義一組 component。不同的 profile 包含不同的組件,安裝 rustup 時有三種 profile 可選,修改 profile 命令如下:rustup set profile minimal
  • Rustup?是什么Rustup?是 Rust安裝器和版本管理工具安裝 Rust 的主要方式是通過 Rustup 這一工具,它既是一個 Rust 安裝器又是一個版本管理工具。Rust 的升級非常頻繁。運行?rustup update?獲取最新版本的 Rust。文檔:https://rust-lang.github.io/rustup/
  • Cargo 是什么Cargo?是?Rust 的 構建工具 和 包管理器。安裝?Rustup?時會自動安裝。Cargo 可以做很多事情:
    ? ? ? ? cargo build? ? ? 可以構建項目
    ? ? ? ? cargo run? ? ? ? 可以運行項目
    ? ? ? ? cargo test? ? ? ?可以測試項目
    ? ? ? ? cargo doc? ? ? ?可以為項目構建文檔
    ? ? ? ? cargo publish 可以將庫發布到 crates.io。
    檢查是否安裝了 Rust 和 Cargo,可以在終端中運行:cargo --version

下載、安裝

下載:https://www.rust-lang.org/tools/install
安裝:https://www.rust-lang.org/zh-CN/learn/get-started

默認情況,Rust 依賴 C++ build tools,沒有安裝也關系。安裝過程需要保證網絡正常。

在 Rust 開發環境中,所有工具都安裝在 ~/.cargo/bin 目錄中,可以在這里找到包括 rustc、cargo 和 rustup 在內的 Rust 工具鏈。在安裝過程中,rustup 會嘗試配置 PATH,如果 rustup 對 PATH 的修改不生效,可以手動添加路徑到?PATH

~/.cargo/bin

~/.rustup/bin

以下是一些常用的命令:

rustup 相關

rustup -h ? ? ? ? ? ? ? ?# 查看幫助
rustup show ? ? ? ? ? ? ?# 顯示當前安裝的工具鏈信息
rustup update ? ? ? ? ? ?# 檢查安裝更新
rustup self uninstall ? ?# 卸載
rustup default stable-x86_64-pc-windows-gnu ? ?# 設置當前默認工具鏈

rustup toolchain list ? ?# 查看工具鏈
rustup toolchain install stable-x86_64-pc-windows-gnu ? ?# 安裝工具鏈
rustup toolchain uninstall stable-x86_64-pc-windows-gnu ?# 卸載工具鏈
rustup toolchain link <toolchain-name> "<toolchain-path>" ? ?# 設置自定義工具鏈

rustup override list ? ?# 查看已設置的默認工具鏈
rustup override set <toolchain> --path <path> ? ?# 設置該目錄以及其子目錄的默認工具鏈
rustup override unset --path <path> ? ?# 取消目錄以及其子目錄的默認工具鏈

rustup target list ? ? ? ? ? ? ? # 查看目標列表
rustup target add <target> ? ? ? # 安裝目標
rustup target remove <target> ? ?# 卸載目標
rustup target add --toolchain <toolchain> <target> ? ?# 為特定工具鏈安裝目標

rustup component list ? ? ? ? ? ? ? ? # 查看可用組件
rustup component add <component> ? ? ?# 安裝組件
rustup component remove <component> ? # 卸載組件

rustc 相關

rustc --version ? ?# 查看rustc版本

cargo 相關

cargo --version ? ?# 查看cargo版本
cargo new <project_name> ? ?# 新建項目
cargo build ? ?# 構建項目
cargo run ? ? ?# 運行項目
cargo check ? ?# 檢查項目
cargo -h ? ? ? # 查看幫助

配置工具鏈安裝位置

在系統環境變量中添加如下變量:
CARGO_HOME 指定 cargo 的安裝目錄
RUSTUP_HOME 指定 rustup 的安裝目錄
默認分別安裝到用戶目錄下的.cargo 和.rustup 目錄

配置國內鏡像

配置 rustup 國內鏡像。在系統環境變量中添加如下變量(選一個就可以,可以組合):

# 清華大學
RUSTUP_DIST_SERVER:https://mirrors.tuna.tsinghua.edu.cn/rustup
RUSTUP_UPDATE_ROOT:https://mirrors.tuna.tsinghua.edu.cn/rustup/rustup

# 中國科學技術大學
RUSTUP_DIST_SERVER:https://mirrors.ustc.edu.cn/rust-static
RUSTUP_UPDATE_ROOT:https://mirrors.ustc.edu.cn/rust-static/rustup

配置 cargo 國內鏡像。在 cargo 安裝目錄下新建 config 文件(注意 config 沒有任何后綴),文件內容如下:

[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'tuna'

# 清華大學
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"

# 中國科學技術大學
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
# 設置代理
[http]
proxy = "127.0.0.1:8889"
[https]
proxy = "127.0.0.1:8889"

Windows 交叉編譯 Linux 程序。目標服務器是?Linux(CentOS 7) 64bit, 所以我們添加的 target 應該是x86_64-unknown-linux-gnu(動態依賴) 或者x86_64-unknown-linux-musl(靜態依賴)

  • 動態依賴:目標服務器需要包含動態依賴的相關庫(用戶共享庫)
  • 靜態依賴,目標服務器不需要包含相應的庫,但是打包文件會更大些

1). 添加需要的 target
rustup target add ?x86_64-unknown-linux-musl
2). 在 cargo 安裝目錄下新建 config 文件(注意 config 沒有任何后綴),添加的文件內容如下:
[target.x86_64-unknown-linux-musl]
linker = "rust-lld"
3). 構建
cargo build --target x86_64-unknown-linux-musl

示例:

創建新項目

用 Cargo 創建一個新項目。在終端中執行:cargo new hello-rust,會生成一個名為?hello-rust?的新目錄,其中包含以下文件:

  • Cargo.toml?為 Rust 的清單文件。其中包含了項目的元數據和依賴庫。
  • src/main.rs?為編寫應用代碼的地方。

進入新創建的目錄中,執行命令運行此程序:cargo run

添加 依賴

現在來為程序添加依賴。可以在?crates.io,即 Rust 包的倉庫中找到所有類別的庫。在 Rust 中通常把 "包" 稱作 "crates"。在本項目中,使用了名為?ferris-says?的庫。

在?Cargo.toml?文件中添加以下信息(從 crate 頁面上獲取):

[dependencies]
ferris-says = "0.3.1"

下載 依賴

運行:cargo build? ,?Cargo 就會安裝該依賴。運行?build?會創建一個新文件?Cargo.lock,該文件記錄了本地所用依賴庫的精確版本。

使用?依賴

使用該依賴庫:可以打開?main.rs,刪除其中所有的內容(它不過是個示例而已),然后在其中添加下面這行代碼:use ferris_says::say;

這樣就可以使用?ferris-says?crate 中導出的?say?函數了。

完整?Rust?示例

現在用上面的依賴庫編寫一個小應用。在?main.rs?中添加以下代碼:

use ferris_says::say; // from the previous step
use std::io::{stdout, BufWriter};fn main() {let stdout = stdout();let message = String::from("Hello fellow Rustaceans!");let width = message.chars().count();let mut writer = BufWriter::new(stdout.lock());say(&message, width, &mut writer).unwrap();
}

保存完畢后,執行命令運行程序:cargo run

成功執行后,會打印一個字符形式的螃蟹圖案。

Ferris (?費理斯 )?是 Rust 社區的非官方吉祥物。

2、Rust?相關文檔

:https://www.rust-lang.org/zh-CN/learn

核心文檔

以下所有文檔都可以用?rustup doc?命令在本地閱讀,它會在瀏覽器中離線打開這些資源!

標準庫

詳盡的 Rust 標準庫 API 手冊。:https://doc.rust-lang.org/std/index.html

版本指南

Rust 版本指南。:https://doc.rust-lang.org/edition-guide/index.html

CARGO 手冊

Rust 的包管理器和構建系統。:https://doc.rust-lang.org/cargo/index.html

RUSTDOC 手冊

學習如何為?crate 編寫完美的文檔。:https://doc.rust-lang.org/rustdoc/index.html

RUSTC 手冊

熟悉 Rust 編譯器中可用的選項。:https://doc.rust-lang.org/rustc/index.html

編譯錯誤索引表

深入解釋遇到的編譯錯誤。:https://doc.rust-lang.org/error_codes/error-index.html

Rust?程序

命令行?程序

用 Rust 構建高效的命令行應用。:https://rust-cli.github.io/book/index.html

WEBASSEMBLY 手冊

通過 WebAssembly 用 Rust 構建瀏覽器原生的庫。:https://rustwasm.github.io/docs/book/

嵌入式手冊

Rust 編寫嵌入式程序。:https://doc.rust-lang.org/stable/embedded-book/

3、Rust 程序設計語言

英文文檔:https://doc.rust-lang.org/book/

中文文檔:https://kaisery.github.io/trpl-zh-cn/

《Rust 程序設計語言》被親切地稱為“圣經”。給出了 Rust 語言的概覽。在閱讀的過程中構建幾個項目,讀完后,就能扎實地掌握 Rust 語言。

  1. 1.?入門指南
    1. 1.1.?安裝
    2. 1.2.?Hello, World!
    3. 1.3.?Hello, Cargo!
  2. 2.?寫個猜數字游戲
  3. 3.?常見編程概念
    1. 3.1.?變量與可變性
    2. 3.2.?數據類型
    3. 3.3.?函數
    4. 3.4.?注釋
    5. 3.5.?控制流
  4. 4.?認識所有權
    1. 4.1.?什么是所有權?
    2. 4.2.?引用與借用
    3. 4.3.?Slice 類型
  5. 5.?使用結構體組織相關聯的數據
    1. 5.1.?結構體的定義和實例化
    2. 5.2.?結構體示例程序
    3. 5.3.?方法語法
  6. 6.?枚舉和模式匹配
    1. 6.1.?枚舉的定義
    2. 6.2.?match 控制流結構
    3. 6.3.?if let 簡潔控制流
  7. 7.?使用包、Crate 和模塊管理不斷增長的項目
    1. 7.1.?包和 Crate
    2. 7.2.?定義模塊來控制作用域與私有性
    3. 7.3.?引用模塊項目的路徑
    4. 7.4.?使用 use 關鍵字將路徑引入作用域
    5. 7.5.?將模塊拆分成多個文件
  8. 8.?常見集合
    1. 8.1.?使用 Vector 儲存列表
    2. 8.2.?使用字符串儲存 UTF-8 編碼的文本
    3. 8.3.?使用 Hash Map 儲存鍵值對
  9. 9.?錯誤處理
    1. 9.1.?用 panic! 處理不可恢復的錯誤
    2. 9.2.?用 Result 處理可恢復的錯誤
    3. 9.3.?要不要 panic!
  10. 10.?泛型、Trait 和生命周期
    1. 10.1.?泛型數據類型
    2. 10.2.?Trait:定義共同行為
    3. 10.3.?生命周期確保引用有效
  11. 11.?編寫自動化測試
    1. 11.1.?如何編寫測試
    2. 11.2.?控制測試如何運行
    3. 11.3.?測試的組織結構
  12. 12.?一個 I/O 項目:構建命令行程序
    1. 12.1.?接受命令行參數
    2. 12.2.?讀取文件
    3. 12.3.?重構以改進模塊化與錯誤處理
    4. 12.4.?采用測試驅動開發完善庫的功能
    5. 12.5.?處理環境變量
    6. 12.6.?將錯誤信息輸出到標準錯誤而不是標準輸出
  13. 13.?Rust 中的函數式語言功能:迭代器與閉包
    1. 13.1.?閉包:可以捕獲其環境的匿名函數
    2. 13.2.?使用迭代器處理元素序列
    3. 13.3.?改進之前的 I/O 項目
    4. 13.4.?性能比較:循環對迭代器
  14. 14.?更多關于 Cargo 和 Crates.io 的內容
    1. 14.1.?采用發布配置自定義構建
    2. 14.2.?將 crate 發布到 Crates.io
    3. 14.3.?Cargo 工作空間
    4. 14.4.?使用 cargo install 安裝二進制文件
    5. 14.5.?Cargo 自定義擴展命令
  15. 15.?智能指針
    1. 15.1.?使用Box<T> 指向堆上數據
    2. 15.2.?使用Deref Trait 將智能指針當作常規引用處理
    3. 15.3.?使用Drop Trait 運行清理代碼
    4. 15.4.?Rc<T> 引用計數智能指針
    5. 15.5.?RefCell<T> 與內部可變性模式
    6. 15.6.?引用循環會導致內存泄漏
  16. 16.?無畏并發
    1. 16.1.?使用線程同時地運行代碼
    2. 16.2.?使用消息傳遞在線程間通信
    3. 16.3.?共享狀態并發
    4. 16.4.?使用Sync 與 Send Traits 的可擴展并發
  17. 17.?Rust 的面向對象編程特性
    1. 17.1.?面向對象語言的特點
    2. 17.2.?為使用不同類型的值而設計的 trait 對象
    3. 17.3.?面向對象設計模式的實現
  18. 18.?模式與模式匹配
    1. 18.1.?所有可能會用到模式的位置
    2. 18.2.?Refutability(可反駁性): 模式是否會匹配失效
    3. 18.3.?模式語法
  19. 19.?高級特征
    1. 19.1.?不安全的 Rust
    2. 19.2.?高級 trait
    3. 19.3.?高級類型
    4. 19.4.?高級函數與閉包
    5. 19.5.?宏
  20. 20.?最后的項目:構建多線程 web server
    1. 20.1.?建立單線程 web server
    2. 20.2.?將單線程 server 變為多線程 server
    3. 20.3.?優雅停機與清理
  21. 21.?附錄
    1. 21.1.?A - 關鍵字
    2. 21.2.?B - 運算符與符號
    3. 21.3.?C - 可派生的 trait
    4. 21.4.?D - 實用開發工具
    5. 21.5.?E - 版本
    6. 21.6.?F - 本書譯本
    7. 21.7.?G - Rust 是如何開發的與 “Nightly Rust”

4、通過例子學 Rust

英文文檔:https://doc.rust-lang.org/rust-by-example/

中文文檔:https://rustwiki.org/zh-CN/rust-by-example/

查看更多?Rust 官方文檔中英文雙語教程,包括雙語版《Rust 程序設計語言》(出版書名為《Rust 權威指南》),?Rust 標準庫中文版。

《通過例子學 Rust》(Rust By Example 中文版)翻譯自?Rust By Example,中文版最后更新時間:2022-1-26。查看此書的?Github 翻譯項目和源碼。

開始學習吧!

  • Hello World?- 從經典的 “Hello World” 程序開始學習。

  • 原生類型?- 學習有符號整型,無符號整型和其他原生類型。

  • 自定義類型?- 結構體?struct?和 枚舉?enum

  • 變量綁定?- 變量綁定,作用域,變量遮蔽。

  • 類型系統?- 學習改變和定義類型。

  • 類型轉換

  • 表達式

  • 流程控制?-?if/elsefor,以及其他流程控制有關內容。

  • 函數?- 學習方法、閉包和高階函數。

  • 模塊?- 使用模塊來組織代碼。

  • Crate?- crate 是 Rust 中的編譯單元。學習創建一個庫。

  • Cargo?- 學習官方的 Rust 包管理工具的一些基本功能。

  • 屬性?- 屬性是應用于某些模塊、crate 或項的元數據(metadata)。

  • 泛型?- 學習編寫能夠適用于多種類型參數的函數或數據類型。

  • 作用域規則?- 作用域在所有權(ownership)、借用(borrowing)和生命周期(lifetime)中起著重要作用。

  • 特性 trait?- trait 是對未知類型(Self)定義的方法集。

  • 錯誤處理?- 學習 Rust 語言處理失敗的方式。

  • 標準庫類型?- 學習?std?標準庫提供的一些自定義類型。

  • 標準庫更多介紹?- 更多關于文件處理、線程的自定義類型。

  • 測試?- Rust 語言的各種測試手段。

  • 不安全操作

  • 兼容性

  • 補充?- 文檔和基準測試

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/215172.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215172.shtml
英文地址,請注明出處:http://en.pswp.cn/news/215172.shtml

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

相關文章

LintCode 123 · Word Search (DFS字符處理經典題!)

123 Word Search Algorithms Medium Description Given a 2D board and a string word, find if the string word exists in the grid. The string word can be constructed from letters of sequentially adjacent cell, where “adjacent” cells are those horizontally o…

arcgis api for js4.x 圖層要素的增刪改---使用服務地址的/applyEdits直接進行刪除

添加新要素到圖層 _addGeo(){cosnt self thislet url https://......./featurelayer/某某某圖層/3let geo 你新繪制的圖形let attributes 你新繪制圖形的屬性信息let addingGraphics Graphic({geometry:geo,attributes:attributes})const pro self._addToLayer(url , JS…

Day57力扣打卡

打卡記錄 最小體力消耗路徑 鏈接 Dijkstra 將Dijkstra算法從計算最短路徑轉化為計算路徑最大差值。 class Solution:def minimumEffortPath(self, heights: List[List[int]]) -> int:n, m len(heights), len(heights[0])dist [0] [0x3f3f3f3f] * (n * m - 1)vis set…

iPhone 數據恢復:iMyFone D-Back iOS

iMyFone D-Back iOS 最佳 iPhone 數據恢復&#xff0c;最好的 iPhone 數據恢復軟件&#xff0c;恢復成功率最高。 直接從iOS設備、iTunes/iCloud/第三方程序備份快速恢復數據。 有選擇地恢復已刪除的照片、WhatsApp、消息和 18 多種其他數據類型。 僅通過 iCloud 帳戶訪問即可從…

關系型數據庫-SQLite介紹

優點&#xff1a; 1>sqlite占用的內存和cpu資源較少 2>源代碼開源&#xff0c;完全免費 3>檢索速度上十幾兆、幾十兆的數據庫sqlite很快&#xff0c;但是上G的時候最慢 4>管理簡單&#xff0c;幾乎無需管理。靈巧、快速和可靠性高 5>功能簡…

如何設定一個N層CNN的Layer,CNN初始化

如何設定一個N層CNN的Layer&#xff0c;CNN初始化 前言干貨代碼解釋 結語 前言 目前人工智能已經融入到我們的生活&#xff0c;大數據模型也是層出不窮。那我們就學習一些簡單的模型設置。 干貨 代碼 # This is the original CNN layer setup, def build_cnn(input_layer):…

Vue router深入學習

Vue router深入學習 一、單頁應用程序介紹 1.概念 單頁應用程序&#xff1a;SPA【Single Page Application】是指所有的功能都在一個html頁面上實現 2.具體示例 單頁應用網站&#xff1a; 網易云音樂 https://music.163.com/ 多頁應用網站&#xff1a;京東 https://jd.co…

springboot打成war包及VUE打成war包放入tomcat啟動

1.springboot打成war包步驟 首先在springboot啟動類中繼承SpringBootServletInitializer&#xff0c;重寫configure方法&#xff0c;如下: SpringBootApplication() public class StartApplication extends SpringBootServletInitializer {public static void main(String[] …

Java與.Net的區別

Java 和 .NET 是兩個不同的軟件開發平臺&#xff0c;它們在語言、生態系統、跨平臺性和開發工具等方面有著不同的特點。 1. 語言&#xff1a;Java 使用 Java 編程語言&#xff0c;而 .NET 使用 C#、VB.NET、F# 等多種編程語言。Java 是一種面向對象的編程語言&#xff0c;它強…

在gen_server使用ets實例演示

Erlang的ETS&#xff08;Erlang term storage&#xff09;是一種在內存中存儲數據的結構&#xff0c;類似于其他語言中的數據庫。它允許你在Erlang程序中存儲和檢索數據。gen_server是Erlang中用于創建服務器的一種模式&#xff0c;它能夠處理并發的客戶端請求。 以下是在gen_…

大數據技術10:Flink從入門到精通

導語&#xff1a;前期入門Flink時&#xff0c;可以直接編寫通過idea編寫Flink程序&#xff0c;然后直接運行main方法&#xff0c;無需搭建環境。我碰到許多初次接觸Flink的同學&#xff0c;被各種環境搭建、提交作業、復雜概念給勸退了。前期最好的入門方式就是直接上手寫代碼&…

[滲透測試學習] CozyHosting - HackTheBox

文章目錄 信息搜集 信息搜集 nmap掃描一下&#xff0c;發現存在80端口和22端口 nmap -sV -sC -p- -v --min-rate 1000 10.10.11.230直接訪問80端口發現有跳轉 那么我們將ip添加到hosts里面&#xff0c;成功訪問 觀察發現是企業網站&#xff0c;掃描一下沒有子域名 那么就掃…

【后端學前端】第二天 css動畫 動感菜單(css變量、過渡動畫、過渡延遲、js動態切換菜單)

目錄 1、學習信息 2、源碼 3、變量 1.1 定義變量 1.2 使用變量 1.3 calc() 函數 4、定位absolute和fixed 5、transform 和 transition&#xff0c;動畫 5.1 變形transform 5.2 transition 5.3 動畫animation 6、todo 1、學習信息 視頻地址&#xff1a;css動畫 動感菜…

【jenkins操作步驟】

一、安裝ant 1、下載安裝文件 1.1 進入https://ant.apache.org/ 然后點擊 https://ant.apache.org/bindownload.cgi 超連接下載即可 1.2下載到本地&#xff0c;最好放到D盤下&#xff0c;然后把apache-jmeter-4.0\extras目錄下的ant-jmeter-1.1.1.jar 文件放置到ant下的lib目…

Java最全面試題專題---2、Java集合容器(1)

集合容器概述 什么是集合 **集合框架&#xff1a;**用于存儲數據的容器。 集合框架是為表示和操作集合而規定的一種統一的標準的體系結構。 任何集合框架都包含三大塊內容&#xff1a;對外的接口、接口的實現和對集合運算的算法。 **接口&#xff1a;**表示集合的抽象數據類…

開箱即用的C++決策樹簡單實現

一個數據結構期末作業&#xff08;有興趣用的話可以高抬貴手star下?~&#xff09;GitHub - mcxiaoxiao/c-Decision-tree: 決策樹c簡單實現 &#x1f333; c-Decision-tree 附大作業/課設參考文檔.doc &#x1f333; c-Decision-tree Introduction &#x1f64c; c-Decision…

[c++]—vector類___基礎版(帶你了解vector熟練掌握運用)

&#x1f469;&#x1f3fb;?&#x1f4bb;作者:chlorine 目錄 &#x1f393;標準庫類型vector &#x1f393;定義和初始化vector的對象 &#x1f4bb;列表初始化vector對象 &#x1f4bb;創建指定數量的元素 &#x1f576;?值初始化 ?列表初始化還是值初始化&#xf…

樹莓派,opencv,Picamera2利用舵機云臺追蹤特定顏色對象

一、需要準備的硬件 Raspiberry 4b兩個SG90 180度舵機&#xff08;注意舵機的角度&#xff0c;最好是180度且帶限位的&#xff0c;切勿選360度舵機&#xff09;二自由度舵機云臺&#xff08;如下圖&#xff09;Raspiberry CSI 攝像頭 組裝后的效果&#xff1a; 二、項目目標…

力扣labuladong一刷day30天二叉樹

力扣labuladong一刷day30天二叉樹 文章目錄 力扣labuladong一刷day30天二叉樹一、654. 最大二叉樹二、105. 從前序與中序遍歷序列構造二叉樹三、106. 從中序與后序遍歷序列構造二叉樹四、889. 根據前序和后序遍歷構造二叉樹 一、654. 最大二叉樹 題目鏈接&#xff1a;https://…

智慧機房與3D機房動環監控系統的應用

智慧機房是什么&#xff1f; 智慧機房是集采集信息、實時監控、數據分析、統一管理、故障告警等功能于一體的全方位、立體化的智能環境監控系統&#xff0c;構建物聯網、大數據和云計算背景下現代企業的“數據心臟”。它能為機房管理者呈現細致入微的關鍵性數據&#xff0c;優…