vim與 neovim 的使用

使用 Vim 閱讀 Linux 內核源碼是一種高效、輕量級的方式。Linux 源碼工程非常龐大,因此推薦你結合 Vim 的一些插件和功能來提高代碼導航和閱讀效率。

下面是一個完整的指南,幫你用 Vim 更高效地閱讀 Linux 源碼。


🔧 一、準備工作

1. 克隆 Linux 源碼(可選)

git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux

🛠 二、配置 Vim

安裝 VIM

sudo apt install vim

修改 ~/.vimrc 如下

call plug#begin('~/.vim/plugged')" 主題
Plug 'morhetz/gruvbox'
Plug 'sainnhe/everforest'
Plug 'kaicataldo/material.vim'
Plug 'joshdick/onedark.vim'"示例插件:NERDTree 文件瀏覽器
Plug 'preservim/nerdtree'
" 自動補全(推薦:C/C++ 用 coc.nvim)
Plug 'neoclide/coc.nvim', {'branch': 'release'}Plug 'preservim/tagbar'                                " 顯示函數、結構體列表
Plug 'tpope/vim-commentary'                            " 快速注釋
Plug 'ludovicchabant/vim-gutentags'                    " 自動生成 tags 文件
Plug 'vim-airline/vim-airline'                         " 狀態欄增強
Plug 'dense-analysis/ale'        " 靜態分析/語法檢查" 安裝 fzf 主程序 + vim 插件
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'" 顯示 Git 變更標記
Plug 'airblade/vim-gitgutter'
" Git 集成命令
Plug 'tpope/vim-fugitive'" AI
Plug 'github/copilot.vim'call plug#end()" 設置主題風格
"let g:gruvbox_contrast_dark = 'hard'
"let g:everforest_background = 'hard'
"let g:material_theme_style = 'darker'  " 其他風格: 'darker', 'lighter', 'palenight'
set termguicolors
set background=dark
colorscheme gruvbox
"colorscheme everforest
"colorscheme material
"colorscheme onedark" 一些基礎設置
syntax on
set number
set relativenumber
set autoindent
set tabstop=4
set shiftwidth=4
set expandtab
set clipboard=unnamedplus
"set mouse=a
filetype plugin indent onif has("cscope")set cscopequickfix=s-,c-,d-,i-,t-,e-cs add cscope.out
endif" 回車鍵:補全確認 or 正常換行
inoremap <silent><expr> <CR> pumvisible() ? coc#_select_confirm() : "\<CR>"" Tab 和 Shift-Tab:切換候選項
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"" 編譯當前 C 文件并運行
nnoremap <F5> :w<CR>:!gcc % -o %< && ./%<<CR>
" 打開 Tagbar 顯示結構
nnoremap <F8> :TagbarToggle<CR>
" 使用 coc 格式化
nnoremap <F4> :call CocActionAsync('format')<CR>
" 快速插入行末注釋
nnoremap <leader>c A /*   */ 
nnoremap <leader>e :NERDTreeToggle<CR>" fzf 模糊搜索
nnoremap <leader>f :Files<CR>
nnoremap <leader>b :Buffers<CR>
nnoremap <leader>g :Rg<CR>" 使用 Ctrl + hjkl 快速切換窗口
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l

在 VIM 中

:PlugInstall

🔍 三、代碼導航工具推薦

1. 安裝 clangd(C/C++ 補全需要):

sudo apt install clangd

2. ctags(生成標簽索引)

sudo apt install exuberant-ctags  # Ubuntu/Debian
ctags -R .

然后在 Vim 中可以使用:

  • Ctrl-]:跳轉到定義
  • Ctrl-T:跳轉回上一個位置
  • :tag function_name:跳轉到某個函數定義

3. cscope(跨文件查找符號/函數調用)

sudo apt install cscope
cscope -Rbkq

在 Vim 中使用命令:

  • :cs find c FUNCTION:查找調用 FUNCTION 的地方
  • :cs find d FUNCTION:查找 FUNCTION 的定義
  • :cs find s SYMBOL:查找符號
  • :cs find t TEXT:查找文本

4. fzf 查找文件

sudo apt install fzf
sudo apt install ripgrep   # Ubuntu/Debian

常用命令(默認可用)

你安裝好后,可以在 Vim 中使用這些命令:

命令功能
:Files模糊查找文件
:Buffers列出當前打開的 buffers
:Lines當前文件所有行模糊查找
:BLines當前 buffer 內搜索
:Rg fooripgrep 全局搜索 “foo”
:Tags搜索 ctags 標簽(需先生成)
:Marks查看所有 marks
nnoremap <leader>f :Files<CR>
nnoremap <leader>b :Buffers<CR>
nnoremap <leader>g :Rg<CR>

<leader>f(通常是 \f)就能快速查找文件。

nnoremap <leader>f :Files<CR>
nnoremap <leader>b :Buffers<CR>
nnoremap <leader>g :Rg<CR>

<leader>f(通常是 \f)就能快速查找文件。


5. 在 Vim 中完美使用 Git

先記住:Vim 是運行在終端的,你可以直接用 Git 命令:

:!git status
:!git add %
:!git commit -m "message"
:!git diff

💡 插件推薦:在 Vim 中完美使用 Git

1. 📌 tpope/vim-fugitive(必裝)

Vim Git 插件中的瑞士軍刀

安裝(用 vim-plug):

Plug 'tpope/vim-fugitive'

常用命令:

命令功能
:G相當于 git status
:Gdiffsplit當前文件的 Git diff(分屏對比)
:Gblame顯示每一行是由誰修改的
:Glog當前文件的 Git 歷史
:Gcommit提交
:Gpush, :Gpull推送/拉取

👉 強烈推薦學會用 :Gdiffsplit:Gblame


2. 📍 lewis6991/gitsigns.nvim(Neovim 專用)

類似 VSCode 左邊的 git 行變化標記(+/-)

安裝(適用于 Neovim):

use {'lewis6991/gitsigns.nvim',config = function()require('gitsigns').setup()end
}

效果

  • 左邊顯示 +- 等變動
  • 支持 :Gitsigns preview_hunk
  • 支持 :Gitsigns blame_line

3. 📚 rhysd/committia.vim

美化 Git 提交界面(像 Magit 那樣)


4. 🔧 junegunn/gv.vim

用于查看 git log 的界面式工具,可配合 fugitive 使用:

Plug 'junegunn/gv.vim'

使用:

:GV      " 查看全項目歷史
:GV!     " 查看當前文件歷史

🎯 小技巧

快速添加當前文件并提交:

:!git add %
:!git commit -m "更新當前文件"

? 總結:我該怎么做?

你想做的事推薦方式
Git status/commitvim-fugitive
行內 blame:Gblamegitsigns
查看改動差異:Gdiffsplit
可視化 loggv.vim + fugitive
看誰改了哪一行:Gblame or gitsigns blame_line
解決沖突:Gdiffsplit

6. 插件建議

使用插件管理器(如 vim-plug):

安裝插件后,在 Vim 中運行:

:PlugInstall

📘 四、使用技巧

1. 打開 Tagbar 查看結構(需安裝 ctags

:TagbarToggle

2. 使用搜索查找符號

/gpio_request

3. 快速跳轉文件

:e drivers/gpio/gpio.c

4. 使用 marks 和跳轉命令

  • mA:標記位置 A
  • 'A:跳轉到位置 A

🧠 五、閱讀建議

  • init/main.c 開始,了解 Linux 啟動過程。
  • 跟蹤 start_kernel() 函數的調用。
  • 熟悉 include/linux/arch/ 下的結構。

? 六、總結

工具功能
ctags函數/變量跳轉
cscope函數調用、定義、引用
tagbar顯示當前文件的結構
fzf.vim快速搜索文件/函數
gutentags自動維護 tags 文件


基礎快捷鍵(原生 Vim)

功能快捷鍵說明
縮進>> / <<向右 / 向左縮進一行
編譯:make使用 Makefile 編譯
保存并編譯:w<CR>:make<CR>保存后調用 make
跳到函數定義gd跳轉到局部變量/函數定義(需要 tags 支持)
跳轉上一個位置Ctrl-o類似“返回”
跳轉下一個位置Ctrl-i類似“前進”
顯示行號:set number
自動縮進==gg=G當前行 / 全文自動縮進

快捷鍵功能
F5編譯并運行當前文件
<leader>f格式化代碼(配合 coc)
<F8>切換 Tagbar(函數列表)
gd跳轉到定義(配合 coc)
<leader>c在行末添加注釋 //

NeoVIM

通過 apt 安裝的 Neovim 版本通常非常落后,因為 Ubuntu/Debian 官方軟件源更新滯后。


? 推薦的安裝方式(獲取最新版 Neovim)

方法一:使用官方 AppImage(簡單可靠)

# 下載最新 AppImage(適用于所有 Linux)
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim.appimage# 添加執行權限
chmod u+x nvim.appimage# 移動到可執行路徑
sudo mv nvim.appimage /usr/local/bin/nvim

方法二:使用官方 PPA(Ubuntu/Debian)

如果你不喜歡 AppImage,可以使用 Neovim 的官方 PPA:

sudo apt remove neovim -y
sudo add-apt-repository ppa:neovim-ppa/unstable
sudo apt update
sudo apt install neovim

這會安裝開發分支版本(一般也很穩定)。


NvChad 安裝

NvChad 是一個基于 Neovim 的高級配置框架,它為 Neovim 用戶提供了一個即開即用、現代化、可自定義的開發環境,目標是將 Neovim 打造成一個像 VSCode 一樣強大但更快的編輯器。


? NvChad 安裝前提(Pre-requisites)

? 必須項:

  1. Neovim ≥ 0.11

    • 你當前的 Neovim 是通過 apt 安裝的舊版本(0.9.5),需要升級
    • 推薦使用 AppImage 安裝(見下方)。
  2. Nerd Font 字體(用于顯示圖標)

    • 推薦:JetBrainsMono Nerd Font

    • 注意不要用名字中帶 Mono 的字體,例如:

      • ? JetBrainsMono Nerd Font
      • ? JetBrainsMono Nerd Font Mono
  3. Ripgrep(可選)

    • 用于 Telescope 快速搜索:

      sudo apt install ripgrep
      
  4. GCC 和 make

    • Linux 一般已裝,沒有的話:

      sudo apt install build-essential
      

🚀 安裝 NvChad

https://nvchad.com/

刪除舊配置:

rm -rf ~/.config/nvim ~/.local/state/nvim ~/.local/share/nvim

克隆 Starter 配置:

git clone https://github.com/NvChad/starter ~/.config/nvim
nvim

第一次啟動時會自動下載 NvChad 主體 和插件(lazy.nvim 會處理)。


?? 安裝全部 LSP(首次運行后)

進入 Neovim 輸入命令:

:MasonInstallAll

🧼 刪除 .git 文件夾(可選)

rm -rf ~/.config/nvim/.git

🔄 更新插件

:Lazy sync

🔧 自定義配置

編輯:

nvim ~/.config/nvim/lua/custom/chadrc.lua

可改:

  • 主題(theme)
  • 插件
  • 語言服務器(LSP)
  • 其他 UI 行為

下載并解壓了 JetBrainsMono Nerd Font,接下來只需 安裝并配置你的終端使用它。下面是詳細操作步驟,按你使用的操作系統來做即可:


🐧 Linux(如 GNOME Terminal / Alacritty / Kitty 等)

https://www.nerdfonts.com/font-downloads

? 步驟 1:安裝字體

  1. 將解壓出來的 .ttf 文件復制到本地字體目錄:

    mkdir -p ~/.local/share/fonts
    cp JetBrainsMonoNerdFont-*.ttf ~/.local/share/fonts/
    
  2. 刷新字體緩存:

    fc-cache -fv
    

? 步驟 2:設置終端字體

🎨 GNOME Terminal(Ubuntu 默認終端)
  1. 打開終端 → 右上角菜單 → Preferences(首選項)
  2. 選擇你的配置文件(如“Unnamed”)
  3. 關閉“使用系統字體”
  4. 從列表中選擇 JetBrainsMono Nerd Font(注意不要選帶 Mono 的)

🍎 macOS

  1. 雙擊 .ttf 字體文件,點“安裝字體”按鈕即可

  2. 打開你的終端(如 iTerm2):

    • iTerm2 → Preferences → Profiles → Text → Change Font
    • 選擇 JetBrainsMono Nerd Font(不要選 Mono 結尾的)

🪟 Windows Terminal

  1. .ttf 文件右鍵 → 安裝所有字體
  2. 打開 Windows Terminal → 設置 → 你在用的 Shell(比如 PowerShell、WSL)
  3. 外觀 → 字體 → 選擇 JetBrainsMono Nerd Font(不是 Mono)

🔍 如何確認字體生效?

在 Neovim 或終端里運行下面命令看是否有圖標顯示(??、󰊠 等):

echo " ? 󰊠 󰲋  ? ?"

如果能看到圖標而不是方框或亂碼,說明 Nerd Font 設置成功!


更換終端主題取決于你使用的是哪種終端模擬器。下面是幾個常見終端的更換主題方法,請根據你的實際使用環境選擇相應的說明:


🐧 Linux 常見終端更換主題方法:

? 1. GNOME Terminal(Ubuntu 默認終端)

方法一:使用 [dconf + .bashrc / .zshrc 配色]
  1. 安裝 gnome-terminal-themes

    bash -c  "$(wget -qO- https://git.io/vQgMr)"
    
  2. 跳出一個交互界面,選擇你想要的主題,例如:DraculaGruvboxOne Dark 等等。

  3. 安裝后在 Preferences 中切換使用即可。


? 2. Windows Terminal

  1. 打開設置(Ctrl + , 或手動點擊右上角齒輪)

  2. settings.json 文件里找到 schemes 部分,添加新的配色方案

  3. 然后設置 "colorScheme": "你的主題名" 應用即可


🔍 你可以考慮的流行主題有:

  • Dracula(酷炫紫黑)
  • Gruvbox(柔和黃褐)
  • One Dark(VS Code 風格)
  • Solarized(經典護眼)
  • Catppuccin(高級奶茶風)

非常好!你想全面對比這幾個代碼分析/導航工具 —— ctagscscoperipgrepclangdtelescopetreesitter

我來給你一個清晰、專業實用的對比表 + 解釋,幫助你在閱讀大型項目(如 Linux kernel)時做出最佳選擇。


🧾 工具功能對比表

工具功能類別是否需編譯信息支持跳轉支持查找引用智能補全模糊查找性能使用難度
ctags靜態索引? 不需要? 定義跳轉? 無引用支持? 無? 否🚀 快🟢 簡單
cscope靜態索引? 不需要? 定義跳轉? 函數/文本引用? 無? 否🚀 快🟡 一般
ripgrep文本搜索? 不需要? 類似跳轉? 引用、用法? 無? 支持🚀🚀 極快🟢 極易
clangdLSP 智能分析? 需要構建信息? 智能跳轉? 精確引用? 智能補全? 否🐢 較慢🔴 較復雜
treesitterAST解析器? 不需要? 基本跳轉? 不支持引用? 補全有限? 否🚀 快🟡 一般
telescopeUI 工具? 不需要? 配合插件? 配合 ripgrep 等? 無? 超強🚀 快🟢 友好

🧠 逐個解釋


🔹 ctags

  • 靜態索引工具,掃描所有定義、函數名、結構體等

  • 可用于 gd, gD, :tag foo 等跳轉

  • 快速生成:

    ctags -R .
    
  • 適合快速跳轉定義


🔹 cscope

  • 類似 ctags,但功能更豐富(如查找函數調用者、字符串等)

  • 配合 Vim/Neovim 可查:

    • 函數定義、調用
    • 變量賦值
    • 包含文件
    • 文本搜索
  • 建表:

    cscope -Rbq
    

🔹 ripgreprg

  • 現代超快文本搜索工具,替代 grep

  • 查找函數調用、宏、變量最方便

  • Neovim 中配合 telescope 使用非常棒:

    require("telescope.builtin").live_grep()
    

🔹 clangd

  • 真正的語言服務器(LSP)

  • 依賴完整編譯信息(如 compile_commands.json

  • 提供:

    • 跳轉(定義、聲明)
    • 引用查找
    • 補全
    • 重命名、格式化、診斷等
  • 配置成本高,但功能最智能


🔹 treesitter

  • 用于語法高亮 + 基礎結構分析(如函數/類邊界)
  • 快速、輕量,不依賴編譯信息
  • 不支持語義級跳轉(如“找引用”)

🔹 telescope

  • Neovim 插件:模糊搜索+UI集成

  • 本身不提供語言分析,但可以集成:

    • ctags → 跳轉定義
    • ripgrep → 搜索引用
    • LSP → 查找定義/引用
    • treesitter → 函數導航

📦 推薦組合搭配(實際用例)

🧑?💻 閱讀 Linux Kernel 源碼:

工具作用
ctags跳轉函數/結構體定義
cscope查找函數/宏使用
ripgrep快速全文搜索符號
telescopeUI 界面快速調用上述功能

可選:

  • 配置 clangd(難,但跳轉最強)

🧠 VS. clangd 的現實問題:

項目類型用 clangd 合適?
小型 C 項目?
CMake 項目?
Makefile 項目(可生成 JSON)?
Linux Kernel / 大型源碼? 困難配置,不推薦新手使用

? 最終建議總結

目的工具推薦
快速查看定義ctags, telescope + tags
查找函數引用cscope, ripgrep, telescope + grep
智能跳轉、補全clangd(需 compile_commands.json
結構分析 / 語法導航treesitter, telescope + treesitter
極簡環境ctags + ripgrep
完整 LSP IDEclangd + telescope + treesitter + conform

如果你說:

“我就是想看 Linux 源碼,輕便、跳轉快,別太折騰”

🎯 推薦組合:

  • ctags:跳定義
  • cscope:查用法
  • telescope + ripgrep:模糊搜索
  • treesitter:代碼結構瀏覽

完全不依賴 clangd,就能非常高效地閱讀源碼。


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

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

相關文章

編譯原理第六到七章(知識點學習/期末復習/筆試/面試)

第六章 句法制導翻譯概述句法制導翻譯概述什么是句法制導翻譯編譯的階段&#xff1a;詞法分析→句法分析→語義分析→中間代碼生成→代碼優化→目標代碼生成語義翻譯&#xff1a;語義分析和中間代碼生成句法制導翻譯 &#xff1a;句法分析和語義分析和中間代碼生成句法制導翻譯…

Pytorch深度學習框架實戰教程02:開發環境部署

相關章節 《Pytorch深度學習框架實戰教程09&#xff1a;模型的保存和加載》 《Pytorch深度學習框架實戰教程01&#xff1a;深度學習框架簡介》 本文詳細介紹了PyTorch CPU/GPU雙版本的完整安裝流程&#xff0c;從環境準備到部署驗證&#xff0c;助你快速搭建高效深度學習開發…

初試Spring AI實現聊天功能

文章目錄 1. 實戰概述 2. 實現步驟 2.1 申請API Key 2.2 創建Spring Boot項目 2.3 添加兩個項目相關依賴 2.4 應用屬性文件里配置Spring AI 2.5 修改啟動類注解屬性 2.6 創建第一個聊天控制器 2.7 創建聊天結果頁面 2.8 測試第一個聊天控制器 2.9 創建第二個聊天控制器 2.10 創…

【圖像處理基石】如何入門色彩評估?

什么是色彩評估&#xff1f; 色彩評估是對色彩的屬性、表現、一致性及適用性進行科學分析和主觀/客觀判斷的過程&#xff0c;核心是通過系統方法判斷色彩是否符合預期標準&#xff08;如設計要求、行業規范、視覺效果等&#xff09;&#xff0c;廣泛應用于印刷、紡織、涂料、產…

6、docker network

docker網絡驅動Docker 網絡驅動是 Docker 容器網絡通信的核心機制&#xff0c;負責管理容器之間的連接、隔離和跨主機通信。Docker 網絡驅動的作用網絡隔離通過網絡命名空間&#xff08;Network Namespace&#xff09;為每個容器提供獨立的網絡環境&#xff0c;確保容器之間的網…

Qt Quick 粒子系統詳解

Qt Quick 粒子系統詳解Qt Quick 粒子系統詳解一、核心組件二、粒子運動數學模型三、基本粒子系統結構四、完整示例1、火焰效果2、雪花飄落效果3、煙花爆炸效果五、性能優化技巧六、實例展示Qt Quick 粒子系統詳解 Qt Quick 粒子系統是用于創建動態視覺特效&#xff08;如爆炸、…

AI問答-供應鏈管理:各種交通運輸方式貨運成本分析

一、各種交通運輸方式貨運成本分析運輸方式主要成本構成成本特點適用場景成本優勢分析成本劣勢分析參考費用&#xff08;示例&#xff09;里程/價格公路運輸燃料費用、人工成本&#xff08;司機工資、維修工人工資等&#xff09;、維修費用、保險費用、道路通行費、折舊費、稅費…

redis速記

1.什么是緩存穿透&#xff1f;怎么解決&#xff1f;答&#xff1a;緩存穿透是指用戶請求的數據在緩存&#xff08;如 Redis&#xff09;和數據庫&#xff08;如 MySQL&#xff09;中都不存在&#xff0c;導致每次請求都必須繞過緩存直接查詢數據庫&#xff0c;最終大量無效請求…

aspnetcore Mvc配置選項中的ModelMetadataDetailsProviders

在ASP.NET Core 中&#xff0c;ModelMetadataDetailsProviders 是用于配置模型元數據提供程序的核心組件&#xff0c;它決定了如何解析和提供模型屬性的元數據&#xff08;如數據類型、驗證規則、顯示名稱等&#xff09;。以下是其詳細解析&#xff1a; 一、核心概念與作用 模…

分區表設計:歷史數據歸檔與查詢加速

以下為分區表設計的核心實現方案與技術要點&#xff0c;綜合最新技術實踐整理&#xff1a;一、分區表核心機制與價值?物理存儲與邏輯分離?分區表通過預定義規則&#xff08;如時間戳、ID范圍&#xff09;將大表物理拆分為多個子表&#xff08;分區&#xff09;&#xff0c;對…

下班倒計時

下班倒計時#include <stdio.h> #include <time.h> #include <unistd.h>void print_remaining_time(time_t now, time_t tar_time) {double diff difftime(tar_time, now);int hours (int)diff / 3600;int minutes ((int)diff % 3600) / 60;int seconds (…

Vue配置特性(ref、props、混入、插件與作用域樣式)

前言Vue提供了許多高級特性來增強組件開發的能力。本文將深入解析Vue中的ref屬性、props配置、混入(mixin)、插件開發以及scoped樣式等核心特性&#xff0c;通過實例演示它們的用法&#xff0c;并給出最佳實踐建議。一、ref屬性詳解1. ref基本用法ref用于給元素或子組件注冊引用…

解析力和清晰度區別

在視覺成像、光學設備或數字信號處理領域&#xff0c;清晰度和解析力是兩個相關但側重點不同的概念。它們都與“細節呈現”有關&#xff0c;但核心定義、影響因素和應用場景存在顯著區別。以下從定義、核心差異、聯系三個方面詳細說明&#xff1a; 一、核心定義清晰度&#xff…

Java網絡通信:UDP和TCP

一、UDP特點&#xff1a; 無連接不可靠&#xff1a;通信雙方不事先建立連接&#xff0c;直接發送數據。數據封裝&#xff1a;將數據封裝在64KB的數據包中&#xff0c;包含接收端的IP和端口。UDP通信模型&#xff1a; 模型比喻&#xff1a;以拋韭菜為例&#xff0c;發送端像拋韭…

Java行為型模式(狀態模式)實現方式與測試方法

一、狀態模式實現方式 核心結構 狀態接口&#xff08;State&#xff09;&#xff1a;定義狀態相關的行為方法。具體狀態類&#xff08;ConcreteState&#xff09;&#xff1a;實現狀態接口&#xff0c;封裝特定狀態下的邏輯。上下文類&#xff08;Context&#xff09;&#xff…

MISRA C-2012準則之標準C環境準則

目錄 1.標準C環境準則 錯誤示例1&#xff1a;未定義行為&#xff08;整數溢出&#xff09; 錯誤示例2&#xff1a;未指定行為&#xff08;函數調用順序&#xff09; 錯誤示例3&#xff1a;語言擴展&#xff08;GCC內置函數&#xff09; 錯誤示例4&#xff1a;關鍵未指定行…

26、鴻蒙Harmony Next開發:ArkTS并發(Promise和async/await和多線程并發TaskPool和Worker的使用)

目錄 異步并發 (Promise和async/await) Promise async/await 多線程并發 多線程并發模型 內存共享模型 Actor模型 TaskPool TaskPool運作機制 TaskPool注意事項 Concurrent裝飾器 裝飾器說明 裝飾器使用示例 TaskPool擴縮容機制 擴容機制 縮容機制 Worker Wo…

[IRF/Stack]華為/新華三交換機堆疊配置

堆疊的三大優勢 提高資源利用率&#xff0c;獲得更高的轉發性能、鏈路帶寬降低網絡規劃的復雜度、方便網絡的管理降低故障對業務的影響時間 堆疊的兩個需求 設備型號必須統一系統版本必須統一 華三堆疊案例&#xff1a;#### S6850_1 <H3C>sy [H3C]undo in en [H3C]sy SW…

融智興科技: RFID超高頻洗滌標簽解析

在紡織品租賃與管理領域&#xff0c;布草、工服、醫護織物等物品的流轉追蹤一直是運營管理的核心挑戰。傳統管理方式依賴人工計數與條碼掃描&#xff0c;存在效率低下、差錯率高、損耗嚴重等問題&#xff0c;尤其在工業洗滌環境下&#xff0c;紙質標簽易損壞、識別率低。融智興…

從平面到時空:地圖故事的時空敘事與沉浸式閱讀

朋友們&#xff0c;在工作中你是否也遇到過這些令人頭疼的挑戰&#xff1f;當項目匯報時總覺得表達不夠精彩&#xff0c;方案講解時聽眾總是一頭霧水&#xff0c;制作應急預案時更是無從下手&#xff1f;別擔心&#xff01;今天我要向大家介紹一個超級實用的解決方案——地圖故…