使用 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;今天我要向大家介绍一个超级实用的解决方案——地图故…