我的nvim的init.lua配置
nvim的配置文件路径在~/.config/nvim路径下:
一、目录如下:

- coc-settings.json文件是配置代码片段路径的文件
- init.lua配置文件的启动脚本
- lua/config.lua 全局配置文件
- lua/keymaps.lua 快捷键映射键文件
- lua/plugins.lua 插件的安装和配置文件
- packer_compiled.lua 安装packer产生的配置文件,该文件中会存在packer安装插件
二、配置
coc-settings.json文件
{"snippets.ultisnips.pythonPrompt": false,"snippets.ultisnips.directories": ["~/.config/coc/ultisnips","~/.local/share/nvim/site/pack/packer/start/vim-snippets.git/UltiSnips"]
}
init.lua
require "plugins"
require "config"
require "keymaps"
config.lua
--搜索相关
vim.opt.number = true -- 显示行号
vim.opt.showcmd = true -- 在底部显示当前命令
vim.opt.wildmenu = true -- 启用命令行补全菜单
vim.opt.wildmode = "longest:full,full" -- 优化补全行为
vim.opt.incsearch = true -- 启用增量搜索
vim.opt.hlsearch = true -- 高亮显示搜索结果
vim.opt.incsearch = true -- 增量搜索(输入时实时匹配)
vim.opt.ignorecase = true -- 搜索时忽略大小写
vim.opt.smartcase = true -- 如果搜索模式包含大写字母,则区分大小写
vim.opt.showmatch = true -- 高亮显示匹配的括号--界面相关
vim.opt.laststatus=2 -- 总是显示状态栏
vim.opt.showmode = true -- 显示当前模式(如 INSERT、NORMAL)
vim.opt.ruler = true -- 显示光标位置(行号、列号)
vim.opt.scrolloff=5 -- 光标距离顶部/底部的最小行数
--vim.opt.guifont= "Consolas:h12" -- 设置 GUI 字体(仅适用于 GUI 版本的 Neovim)
vim.opt.guifont = "FiraCode Nerd Font:h12"--缩进相关
vim.opt.autoindent = true -- 自动缩进
vim.opt.smartindent = true -- 智能缩进
vim.opt.cindent = true -- C 语言风格的缩进
vim.opt.tabstop=4 -- Tab 键的宽度为 4 个空格
vim.opt.softtabstop=4 -- 编辑时 Tab 键的宽度为 4 个空格
vim.opt.shiftwidth=4 -- 自动缩进时的宽度为 4 个空格
vim.opt.expandtab = true -- 将 Tab 转换为空格--编码相关
vim.opt.encoding="utf-8" -- 默认编码为 UTF-8
vim.opt.fileencoding="utf-8" -- 文件保存时的编码为 UTF-8
vim.opt.fileencodings="ucs-bom,utf-8,cp936,latin1,gb18030,gbk,gb2312,chinese" -- 文件编码探测顺序
vim.opt.fileformats="unix,dos" -- 文件换行符格式(Unix 和 DOS)--其他配置
vim.opt.linebreak = true -- 在单词边界换行
vim.opt.wrap = true -- 自动换行
vim.opt.mouse="" --禁用鼠标支持
vim.opt.compatible = false -- 禁用 Vi 兼容模式
vim.opt.backspace = "indent,eol,start" -- 允许退格键删除缩进、换行符和插入模式前的字符
vim.opt.endofline = false -- 不自动添加换行符
vim.opt.list = true -- 显示不可见字符(如 Tab、空格)
--vim.opt.listchars = {tab = '¦\\'}
vim.opt.syntax = "on" -- 启用语法高亮
vim.opt.timeoutlen=130 -- 快捷键超时时间(毫秒)
vim.cmd('filetype plugin on') -- 启用文件类型检测和插件vim.opt.list = true -- 启用显示不可见字符
vim.opt.listchars = {tab = '│ ', -- 用 │ 表示 Tabtrail = '·', -- 用 · 表示行尾空格extends = '›', -- 用 › 表示超出屏幕的文本precedes = '‹', -- 用 ‹ 表示超出屏幕的文本nbsp = '␣', -- 用 ␣ 表示非断行空格
}vim.opt.cursorline = true -- 启用光标所在行高亮
vim.opt.cursorcolumn = true -- 启用光标所在列高亮
vim.opt.termguicolors = true --启用真彩色
keymaps.lua
--前进和后退的快捷键
vim.keymap.set({"n", "v"}, 'fh', '^', {noremap=true, silent=true})
vim.keymap.set({"n", "v"}, 'fl', '$', {noremap=true, silent=true})--返回normal模式
vim.keymap.set({"i", "v"}, 'fj', '<ESC>', {noremap=true, silent=true})--查看系统函数
vim.keymap.set('n', '?', '<s-k>', {noremap=true, silent=true})--写入和保存
vim.keymap.set('n', 'W', ':w!<CR>', {noremap=true, silent=true})
vim.keymap.set('n', 'Q', ':q!<CR>', {noremap=true, silent=true})--输入命令
vim.keymap.set('n', '<space>', ':', {noremap=true})
vim.keymap.set('n', '<12>', ':TagbarToggle<CR>', {noremap=true, silent=true})--分屏的设置快捷键
vim.keymap.set('n', 'sl', ':set splitright<CR>:vsplit<CR>', {noremap=true, silent=true})
vim.keymap.set('n', 'sh', ':set nosplitright<CR>:vsplit<CR>', {noremap=true, silent=true})
vim.keymap.set('n', 'sk', ':set nosplitbelow<CR>:split<CR>', {noremap=true, silent=true})
vim.keymap.set('n', 'sj', ':set splitbelow<CR>:split<CR>', {noremap=true, silent=true})--移动分屏的设置快捷键
vim.keymap.set('n', '<s-l>', '<c-w>l', {noremap=true, silent=true})
vim.keymap.set('n', '<s-h>', '<c-w>h', {noremap=true, silent=true})
vim.keymap.set('n', '<s-k>', '<c-w>k', {noremap=true, silent=true})
vim.keymap.set('n', '<s-j>', '<c-w>j', {noremap=true, silent=true})--设置函数前进和后退的快捷键
vim.keymap.set('n', '<s-o>', '<c-o>', {noremap=true, silent=true})
vim.keymap.set('n', '<s-i>', '<c-i>', {noremap=true, silent=true})--调整尺寸的快捷键
vim.keymap.set({"n", "v"}, '<up>', ':res +5<CR>', {noremap=true, silent=true})
vim.keymap.set({"n", "v"}, '<down>', ':res -5<CR>', {noremap=true, silent=true})
vim.keymap.set({"n", "v"}, '<left>', ':vertical resize-5<CR>', {noremap=true, silent=true})
vim.keymap.set({"n", "v"}, '<right>', ':vertical resize+5<CR>', {noremap=true, silent=true})--ctags插件
vim.keymap.set({"n"}, ';', 'g<c-]>', {noremap=true, silent=true})
plugins.lua
vim.cmd [[packadd packer.nvim]]return require('packer').startup(function(use)use {'https://gitee.com/oyaay/nvim-web-devicons.git'}use {'https://gitee.com/cangmj/lualine.nvim.git',requires = { 'oyaay/nvim-web-devicons', opt = true }}use { 'https://gitee.com/cc906979421/vim-gutentags.git'}use { 'https://gitee.com/trunkMode/nerdtree.git'}use { 'https://gitee.com/HXXH2022/ale.git'}use { 'https://gitee.com/cc906979421/coc.nvim.git', branch='release'}use { 'https://gitee.com/zgpio/nvim-treesitter.git', run = ':TSUpdate'}use { 'https://gitee.com/hwyang/vim-snippets.git'}use { 'https://gitee.com/yaozhijin/tagbar.git'}use { 'https://gitee.com/neopack/tokyonight.nvim.git'}use { 'https://gitee.com/dglxlcl/vim-signify.git'}use { 'https://gitee.com/ProVim/vim-easymotion.git' }use { 'https://gitee.com/mirrors_jiangmiao/auto-pairs.git'}use { 'https://gitee.com/rockmanlc/molokai.git'}use {'https://gitee.com/cc906979421/telescope.nvim', tag = '0.1.8',requires = { {'https://gitee.com/oyaay/plenary.nvim.git'} }}-- Packer can manage itselfuse 'yunduozhai/packer.nvim'--***************************---- lualine.nvim ----***************************--require('lualine').setup {options = {theme = 'tokyonight', -- 设置主题icons_enabled = true, -- 启用图标component_separators = { left = '', right = '' },section_separators = { left = '', right = '' },},sections = {lualine_a = {'mode'},lualine_b = {'branch', 'diff', 'diagnostics'},lualine_c = {'filename'},lualine_x = {'encoding', 'fileformat', 'filetype'},lualine_y = {'progress'},lualine_z = {'location'}}}--***************************---- nerdtree ----***************************---- 打开/关闭 NERDTree 的快捷键vim.api.nvim_set_keymap('n', '<F12>', ':NERDTreeToggle<CR>', { noremap = true, silent = true })--***************************---- gutentags ----***************************---- 配置 vim-gutentagsvim.g.gutentags_enabled = true -- 启用 gutentagsvim.g.gutentags_ctags_executable = 'ctags' -- 指定 ctags 可执行文件vim.g.gutentags_cache_dir = vim.fn.expand('~/.cache/nvim/tags') -- 设置缓存目录vim.g.gutentags_project_root = { '.git', '.svn', '.root' } -- 项目根目录标记vim.g.gutentags_generate_on_new = true -- 新建文件时生成 tagsvim.g.gutentags_generate_on_missing = true -- 缺少 tags 时生成vim.g.gutentags_generate_on_write = true -- 保存文件时更新 tags--***************************---- indentline ----***************************----***************************---- coc.nvim ----***************************--vim.opt.backup = falsevim.opt.writebackup = falsevim.opt.signcolumn = "yes"local keyset = vim.keymap.setfunction _G.check_back_space()local col = vim.fn.col('.') - 1return col == 0 or vim.fn.getline('.'):sub(col, col):match('%s') ~= nilendlocal opts = {silent = true, noremap = true, expr = true, replace_keycodes = false}keyset("i", "<c-j>", 'coc#pum#visible() ? coc#pum#next(1) : v:lua.check_back_space() ? "<TAB>" : coc#refresh()', opts)keyset("i", "<c-k>", [[coc#pum#visible() ? coc#pum#prev(1) : "\<C-h>"]], opts)keyset("i", "<cr>", [[coc#pum#visible() ? coc#pum#confirm() : "\<C-g>u\<CR>\<c-r>=coc#on_enter()\<CR>"]], opts)-- 自动安装 coc 插件vim.g.coc_global_extensions = {'coc-json','coc-tsserver','coc-clangd','coc-go','coc-html','coc-snippets','coc-highlight','coc-spell-checker','coc-marketplace'}--***************************---- vim-snippets ----***************************---- 设置全局变量vim.g.coc_snippet_next = '<C-l>' -- 使用 Ctrl+j 跳转到下一个占位符vim.g.coc_snippet_prev = '<C-h>' -- 使用 Ctrl+k 跳转到上一个占位符--***************************---- treesitter ----***************************--require('nvim-treesitter.configs').setup {-- 启用语法高亮highlight = {enable = true,additional_vim_regex_highlighting = false,},-- 启用代码缩进indent = {enable = true,},-- 启用增量选择incremental_selection = {enable = true,keymaps = {init_selection = 'gnn', -- 进入增量选择模式node_incremental = 'grn', -- 扩展选择范围scope_incremental = 'grc', -- 扩展选择范围到整个作用域node_decremental = 'grm', -- 缩小选择范围},},-- 启用代码折叠fold = {enable = false,},-- 启用自动安装语法解析器ensure_installed = {'bash', 'c', 'cpp', 'css', 'go', 'html', 'java', 'javascript', 'json','lua', 'python', 'rust', 'typescript', 'vim', 'yaml', 'markdown',},textobjects = {enable = true,},}--***************************---- tokyonight ----***************************----require('tokyonight').setup({-- style = 'night', -- 可选值:'night', 'storm', 'day', 'moon'--})--vim.cmd('colorscheme tokyonight')--***************************---- molokai ----***************************-- -- 启用背景透明 vim.g.molokai_original = 1vim.g.rehash256 = 1-- 设置主题 vim.cmd('colorscheme molokai')--***************************---- easymotion.nvim ----***************************---- 配置 easymotionvim.g.EasyMotion_do_mapping = 0 -- 禁用默认快捷键vim.g.EasyMotion_smartcase = 1 -- 启用智能大小写vim.g.EasyMotion_startofline = 0 -- 跳转时保持光标位置-- 设置快捷键vim.api.nvim_set_keymap('n', 's', '<Plug>(easymotion-overwin-f2)', { noremap = true, silent = true })--***************************---- telescope ----***************************--local builtin = require('telescope.builtin')vim.keymap.set('n', '<s-p>', builtin.find_files, { desc = 'Telescope find files' })vim.keymap.set('n', '<c-f>', builtin.live_grep, { desc = 'Telescope live grep' })vim.keymap.set('n', '<s-b>', builtin.buffers, { desc = 'Telescope buffers' })vim.keymap.set('n', '<s-f>', builtin.current_buffer_fuzzy_find, { desc = 'Telescope current_buffer_fuzzy_find' })vim.keymap.set('n', '<s-m>', builtin.marks, { desc = 'Telescope marks' })--telescope--获取当前光标下的单词并进行搜索,依赖telescope的live grep功能local builtin = require('telescope.builtin')local function search_selected_text()local selected_text = vim.fn.expand('<cword>')if selected_text == "" thenprint("No text selected")returnendbuiltin.live_grep({ default_text = selected_text })endvim.api.nvim_create_user_command('SearchSelectedText', search_selected_text, {})vim.api.nvim_set_keymap('n', '<c-k>', ':SearchSelectedText<CR>', { noremap = true, silent = true })--***************************---- tagbar ----***************************---- 打开/关闭 Tagbar 的快捷键vim.api.nvim_set_keymap('n', '<F9>', ':TagbarToggle<CR>', { noremap = true, silent = true })-- 设置 Tagbar 宽度vim.g.tagbar_width = 30-- 自动聚焦到 Tagbarvim.g.tagbar_autofocus = 1--***************************---- signify ----***************************---- 启用 signifyvim.g.signify_enable = 1-- 设置 signify 的符号vim.g.signify_sign_add = "✚"vim.g.signify_sign_change = "➜"vim.g.signify_sign_delete = "✖"vim.g.signify_sign_delete_first_line = "‾"vim.g.signify_sign_change_delete = "~_"-- 设置 signify 的更新延迟(单位:毫秒)vim.g.signify_update_on_bufenter = 1vim.g.signify_update_on_focusgained = 1-- 设置 signify 的优先级(避免与其他插件冲突)vim.g.signify_priority = 5-- 设置 signify 的 Git 支持vim.g.signify_vcs_list = { "git" }-- 显示更改的详细信息vim.api.nvim_set_keymap("n", "<F10>", ":SignifyDiff<CR>", { noremap = true, silent = true })end)
三、路径
coc.nvim插件安装其他插件的路径(例如:coc-go, coc-clangd 等等):~/.config/coc
其他插件的下载路径:~/.local/share/nvim
相关文章:
我的nvim的init.lua配置
nvim的配置文件路径在~/.config/nvim路径下: 一、目录如下: coc-settings.json文件是配置代码片段路径的文件init.lua配置文件的启动脚本lua/config.lua 全局配置文件lua/keymaps.lua 快捷键映射键文件lua/plugins.lua 插件的安装和配置文件…...
2025第1周 | JavaScript中的正则表达式
目录 1. 正则表达式是个什么东东?1.1 怎么定义正则1.2 对象字面量方式1.3 类创建方式 2. 怎么使用2.1 实例方法2.1.1 exec方法2.1.2 test方法 2.2 字符串中的方法2.2.1 match/matchAll2.2.2 replace/replaceAll2.2.3 split2.2.4 search 3. 规则3.1 修饰符3.2 字符类…...
基于 Python Django 的西西家居全屋定制系统(源码+部署+文档)
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
【Leetcode 热题 100】74. 搜索二维矩阵
问题背景 给你一个满足下述两条属性的 m n m \times n mn 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 t a r g e t target target,如果 t a r g e t target target 在矩阵中&…...
讯方技术入库深圳市第一批建设培育产教融合型企业
产教融合是指产业与教育的紧密结合,是现代职业教育体系的重要组成部分。通过企业与学校之间的合作,使学生在学校所学的知识和技能能够更好地满足企业和社会的实际需求,同时也为企业提供高素质的技术人才,促进产业升级和经济发展。…...
阿里云代理商热销产品推荐
在数字化浪潮的推动下,企业对于云计算的依赖日益加深。阿里云,作为中国领先的云计算服务提供商,为企业提供了丰富多样的云产品和服务。本文将聚焦于阿里云代理商热销产品推荐,探讨其如何帮助企业高效利用云资源,加速数…...
海外云服务器能用来做什么?
海外云服务器不仅服务种类繁多,而且能满足多行业的需求,方便了越来越多的企业与个人。本文将探讨海外云服务器的核心服务及其适用领域,帮助企业更好地了解这一技术资源。 云存储:安全高效的数据管理 海外云服务器为用户提供了稳定…...
LeetCode 704 如何正确书写一个二分查找
题目链接 中文版:https://leetcode.cn/problems/binary-search/description/ 题目描述 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标…...
基于springboot+vue的餐饮连锁店管理系统的设计与实现
开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…...
transfomer深度学习实战水果识别
本文采用RT-DETR作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。RT-DETR以其高效的实时检测能力,在多个目标检测任务中展现出卓越性能。本研究针对水果数据集进行训练和优化,该数据集包含丰富的水果图像样本&#…...
【CPU】堆栈和堆栈指针(个人草稿)
详细的 CPU 中堆栈指针(Stack Pointer, SP)及相关知识介绍 1. 什么是堆栈? 堆栈(Stack) 是一种后进先出(LIFO, Last In First Out)的数据结构,广泛用于计算机系统中,尤…...
BMS应用软件开发 — 2 单体电池的基本结构和工作原理
目录 1 单体电池基本组成 2 单体电池封装形式 3 电池充放电过程 4 不同电池材料性能差异 1 单体电池基本组成 单体电池其基本组成包括以下几个关键部分: 正极:正极材料通常由锂的金属氧化物构成,如锂钴氧化物(LiCoO2…...
uni-app开发-习惯养成小程序/app介绍
目录 一:功能概述 二:功能部分代码和截图 一:功能概述 1 习惯目标生成 创建习惯:用户可以添加新的习惯目标,每个习惯可以包含名称、描述、图标、目标天数。 关联习惯完成:用户通过设定达成目标以后,生成习惯养成记录。 2 习惯打卡 简单快捷的打卡:提供一个直观的界面…...
鸿蒙HarmonyOS开发:拨打电话、短信服务、网络搜索、蜂窝数据、SIM卡管理、observer订阅管理
文章目录 一、call模块(拨打电话)1、使用makeCall拨打电话2、获取当前通话状态3、判断是否存在通话4、检查当前设备是否具备语音通话能力 二、sms模块(短信服务)1、创建短信2、发送短信 三、radio模块(网络搜索&#x…...
Netty中用了哪些设计模式?
大家好,我是锋哥。今天分享关于【Netty中用了哪些设计模式?】面试题。希望对大家有帮助; Netty中用了哪些设计模式? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Netty 是一个高性能的网络通信框架,广泛…...
Mac 安装psycopg2出错:Error:pg_config executable not found的解决
在mac 上执行pip3 install psycopg2-binary出现如下错误: Error:pg_config executable not found然后我又到终端里执行 brew install postgresql16 显示 Warning: You are using macOS 15. We do not provide support for this pre-release version. It is expe…...
【vue3封装element-plus的反馈组件el-drawer、el-dialog】
vue2中封装el-drawer、el-dialog这类反馈类子组件,需要将父组件的visible值传递子组件,并且再通过$emit将关闭弹窗的组件值传回父组件,同事子组件还需要监听父组件传递过来的visible的值,来驱动弹窗显示隐藏,很麻烦&am…...
LeetCode:2274. 不含特殊楼层的最大连续楼层数(排序 Java)
目录 2274. 不含特殊楼层的最大连续楼层数 题目描述: 实现代与解析: 排序 原理思路: 2274. 不含特殊楼层的最大连续楼层数 题目描述: Alice 管理着一家公司,并租用大楼的部分楼层作为办公空间。Alice 决定将一些…...
生成树之STP
STP目的 STP:生成树协议,旨在将一个环型网络结构修剪成一个树型的结构,达到防环的作用 STP的步骤 STP有如下几个步骤,选举出四种角色,共同构建起STP生成树 1、开启生成树的交换机,会互相发送BPDU 2、交换…...
音视频入门基础:MPEG2-PS专题(6)——FFmpeg源码中,获取PS流的视频信息的实现
一、引言 通过FFmpeg命令可以获取到PS文件/PS流的视频压缩编码格式、色彩格式(像素格式)、分辨率、帧率信息: ./ffmpeg -i XXX.ps 本文以H.264为例讲述FFmpeg到底是从哪个地方获取到这些视频信息的。 二、视频压缩编码格式 (…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
【网络安全产品大调研系列】2. 体验漏洞扫描
前言 2023 年漏洞扫描服务市场规模预计为 3.06(十亿美元)。漏洞扫描服务市场行业预计将从 2024 年的 3.48(十亿美元)增长到 2032 年的 9.54(十亿美元)。预测期内漏洞扫描服务市场 CAGR(增长率&…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
页面渲染流程与性能优化
页面渲染流程与性能优化详解(完整版) 一、现代浏览器渲染流程(详细说明) 1. 构建DOM树 浏览器接收到HTML文档后,会逐步解析并构建DOM(Document Object Model)树。具体过程如下: (…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
