【Linux】vi/vim 使用技巧
文章目录
- 1. 简介
- vi和vim的历史
- vi和vim的区别
- 安装vim
- Ubuntu/Debian
- CentOS/RHEL
- Fedora
- macOS
- Windows
- 2. 基本操作
- 启动和退出
- 启动
- 退出
- 模式介绍
- 普通模式
- 插入模式
- 命令模式
- 光标移动
- 基本移动
- 高级移动
- 3. 文本编辑
- 插入文本
- 删除文本
- 复制和粘贴
- 撤销和重做
- 4. 搜索与替换
- 基本搜索
- 搜索文本
- 搜索导航
- 高级搜索
- 使用正则表达式
- 高亮搜索
- 搜索时忽略大小写
- 文本替换
- 替换当前行
- 替换整个文件
- 替换时确认
- 5. 文件操作
- 打开和保存文件
- 打开文件
- 保存文件
- 多文件编辑
- 打开多个文件
- 分屏操作
- 6. 配置和个性化
- vimrc文件配置
- 创建和编辑vimrc文件
- 常用配置选项
- 行号
- 高亮当前行
- 自动缩进
- 语法高亮
- 搜索高亮
- 忽略搜索大小写
- 智能大小写搜索
- 安装和管理插件
- Vundle
- 安装Vundle
- 配置Vundle
- 安装插件
- vim-plug
- 安装vim-plug
- 配置vim-plug
- 安装插件
- 7. 高级技巧
- 宏录制与播放
- 录制宏
- 播放宏
- 使用寄存器
- 基本使用
- 查看寄存器内容
- 标签和书签
- 使用标签
- 使用书签
- 脚本编写
- 编写vim脚本
- 基本示例
- 8. 常见问题与解决方案
- 常见错误及解决方法
- 1. 文件无法保存
- 2. 插件安装失败
- 3. 语法高亮不起作用
- 4. vim启动慢
- 社区资源推荐
- 官方文档
- 在线教程
- 社区论坛和讨论
- 插件资源
1. 简介
vi和vim的历史
vi(Visual editor)是1976年由Bill Joy在Unix操作系统上开发的文本编辑器。它是基于ex编辑器的一个可视化模式,最初设计的目标是提供一个功能强大且轻量的文本编辑工具。
vim(Vi IMproved)是vi的一个改进版,由Bram Moolenaar在1991年发布。vim不仅继承了vi的所有功能,还增加了许多新特性,使其更加强大和灵活。
vi和vim的区别
- 功能扩展:vim相较于vi增加了许多功能,如语法高亮、代码折叠、插件支持、无限制撤销等。
- 跨平台支持:vim支持多种操作系统,包括Linux、Windows、macOS等,而vi主要用于Unix系统。
- 用户体验:vim的用户体验更友好,提供了更多的配置选项和帮助文档。
- 插件系统:vim拥有强大的插件系统,用户可以根据需要安装各种插件来扩展其功能。
安装vim
在大多数Linux发行版中,vim可能已经预装。如果没有,可以通过以下命令安装:
Ubuntu/Debian
sudo apt update
sudo apt install vim
CentOS/RHEL
sudo yum install vim
Fedora
sudo dnf install vim
macOS
可以使用Homebrew
来安装:
brew install vim
Windows
可以从Vim官网下载适用于Windows的安装包,或者使用Chocolatey
进行安装:
choco install vim
安装完成后,可以通过在终端中输入vim
来验证安装是否成功。如果看到Vim的启动界面,说明安装成功。
2. 基本操作
启动和退出
启动
在终端中输入vim
或vi
加上文件名来启动编辑器。例如:
vim filename.txt
如果文件不存在,vim会创建一个新文件。
退出
在普通模式下,输入以下命令退出vim:
:q
:退出(如果有未保存的更改,会提示错误):q!
:强制退出,不保存更改:wq
或:x
:保存并退出ZZ
:保存并退出(相当于:wq
)
模式介绍
vim有三种主要模式:普通模式、插入模式和命令模式。
普通模式
普通模式是vim的默认模式。在这个模式下,你可以进行光标移动、删除文本、复制粘贴等操作。启动vim后默认进入普通模式。
常用的普通模式命令:
i
:进入插入模式:
:进入命令模式v
:进入可视模式Esc
:返回普通模式
插入模式
插入模式用于插入文本。进入插入模式的方法有多种:
i
:在光标前插入a
:在光标后插入o
:在当前行下方插入新行I
:在行首插入A
:在行尾插入
在插入模式下,按Esc
键返回普通模式。
命令模式
命令模式用于执行文件操作和设置配置。在普通模式下按:
进入命令模式。
常用命令模式命令:
:w
:保存文件:q
:退出:wq
:保存并退出:q!
:强制退出,不保存更改:e filename
:打开文件:set option
:设置选项,例如:set number
显示行号
光标移动
基本移动
在普通模式下,使用以下键进行基本光标移动:
h
:左移j
:下移k
:上移l
:右移
其他基本移动命令:
0
:移动到行首$
:移动到行尾w
:移动到下一个单词的开头b
:移动到上一个单词的开头gg
:移动到文件开头G
:移动到文件结尾
高级移动
高级光标移动命令可以帮助你更高效地导航文件:
Ctrl + f
:向下翻页Ctrl + b
:向上翻页Ctrl + d
:向下移动半页Ctrl + u
:向上移动半页nG
:移动到第n行,例如10G
移动到第10行:n
:移动到第n行,例如:10
移动到第10行fx
:向右查找字符x,光标停在x上Fx
:向左查找字符x,光标停在x上tx
:向右查找字符x,光标停在x前Tx
:向左查找字符x,光标停在x后;
:重复上一次f、F、t或T命令,
:反向重复上一次f、F、t或T命令
3. 文本编辑
插入文本
在vim中,要插入文本,首先需要进入插入模式。以下是几种进入插入模式的方法:
- i:在光标前插入
- I:在行首插入
- a:在光标后插入
- A:在行尾插入
- o:在当前行下方新建一行并插入
- O:在当前行上方新建一行并插入
在插入模式下,可以像普通文本编辑器一样输入文本。完成后,按Esc
键返回普通模式。
删除文本
在普通模式下,可以使用以下命令删除文本:
- x:删除光标所在的字符
- X:删除光标前的字符
- dw:删除从光标位置到下一个单词开头的字符
- d$:删除从光标位置到行尾的字符
- dd:删除整行
- dG:删除从光标位置到文件末尾的所有内容
复制和粘贴
在普通模式下,可以使用以下命令进行复制和粘贴:
- yy:复制当前行
- yw:复制从光标位置到下一个单词开头的字符
- y$:复制从光标位置到行尾的字符
- yG:复制从光标位置到文件末尾的所有内容
- p:在光标后粘贴
- P:在光标前粘贴
撤销和重做
在普通模式下,可以使用以下命令进行撤销和重做:
- u:撤销上一个操作
- U:撤销当前行的所有更改
- Ctrl + r:重做上一个撤销的操作
4. 搜索与替换
基本搜索
搜索文本
在普通模式下,可以使用/
或?
来进行搜索:
/pattern
:向前搜索pattern
?pattern
:向后搜索pattern
例如,要搜索单词example
,可以输入/example
并按Enter
。
搜索导航
在搜索结果之间导航:
n
:跳转到下一个匹配N
:跳转到上一个匹配
高级搜索
使用正则表达式
vim的搜索功能支持正则表达式,可以进行更复杂的搜索。例如:
/\bword\b
:搜索完整的单词word
/^\d\{3\}-\d\{2\}-\d\{4\}$/
:搜索符合特定格式(如社会安全号码)的字符串
高亮搜索
要高亮显示所有匹配项,可以在vim配置文件(通常是~/.vimrc
)中添加以下内容:
set hlsearch
或者在vim中输入:
:set hlsearch
要关闭高亮显示,可以输入:
:set nohlsearch
搜索时忽略大小写
要在搜索时忽略大小写,可以在vim配置文件中添加:
set ignorecase
或者在vim中输入:
:set ignorecase
要使搜索区分大小写,可以使用:
:set noignorecase
或者在搜索模式下使用\c
(忽略大小写)和\C
(区分大小写),例如:
/example\c
文本替换
替换当前行
要在当前行中替换文本,可以使用:
:s/old/new/
这会将当前行中的第一个old
替换为new
。要替换当前行中的所有匹配项,可以使用:
:s/old/new/g
替换整个文件
要在整个文件中替换文本,可以使用:
:%s/old/new/
这会将文件中的第一个old
替换为new
。要替换文件中的所有匹配项,可以使用:
:%s/old/new/g
替换时确认
如果希望在替换时进行确认,可以添加c
标志:
:%s/old/new/gc
每次匹配时会提示确认,可以选择:
y
:替换当前匹配n
:跳过当前匹配a
:替换所有匹配q
:退出替换l
:替换当前匹配并退出
5. 文件操作
打开和保存文件
打开文件
在vim中打开文件的方法:
- 启动vim时指定文件名:
vim filename.txt
- 在命令模式下打开新文件:
:e anotherfile.txt
保存文件
在命令模式下进行保存:
:w
:保存当前文件:w filename
:另存为指定文件名
多文件编辑
打开多个文件
可以在启动vim时指定多个文件:
vim file1.txt file2.txt
在vim中切换文件:
:n
:切换到下一个文件:N
:切换到上一个文件:bnext
或:bn
:切换到下一个缓冲区:bprev
或:bp
:切换到上一个缓冲区:ls
:列出所有打开的缓冲区:b [number]
:切换到指定编号的缓冲区
分屏操作
vim支持分屏以同时查看多个文件:
:split filename
或:sp filename
:水平分屏打开文件:vsplit filename
或:vsp filename
:垂直分屏打开文件Ctrl-w w
:在分屏之间切换Ctrl-w q
:关闭当前分屏Ctrl-w h/j/k/l
:在分屏中移动光标
分屏调整:
Ctrl-w +
:增加当前分屏的高度Ctrl-w -
:减少当前分屏的高度Ctrl-w >
:增加当前分屏的宽度Ctrl-w <
:减少当前分屏的宽度
6. 配置和个性化
vimrc文件配置
vim的配置文件是~/.vimrc
,用于存储用户的个性化设置。
创建和编辑vimrc文件
创建或编辑~/.vimrc
文件:
vim ~/.vimrc
常用配置选项
以下是一些常用的vim配置选项:
行号
显示行号:
set number
高亮当前行
高亮当前行:
set cursorline
自动缩进
启用自动缩进:
set autoindent
语法高亮
启用语法高亮:
syntax on
搜索高亮
启用搜索高亮:
set hlsearch
忽略搜索大小写
忽略搜索时的大小写:
set ignorecase
智能大小写搜索
启用智能大小写搜索(如果搜索模式中有大写字母,则区分大小写,否则不区分):
set smartcase
安装和管理插件
vim可以通过多种插件管理器来安装和管理插件,以下是一些流行的插件管理器:
Vundle
Vundle是一个流行的vim插件管理器。
安装Vundle
在命令行中执行以下命令:
git clone https://github.com/VundleVim/Vundle.vim.git ~/.vim/bundle/Vundle.vim
配置Vundle
在~/.vimrc
中添加以下内容:
set nocompatible " 关闭vi兼容模式
filetype off " 必须" 设置runtime path
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" 这里开始列出插件
Plugin 'VundleVim/Vundle.vim'
" 例如,安装NERDTree插件
Plugin 'preservim/nerdtree'
" 这里结束列出插件
call vundle#end() " 必须
filetype plugin indent on " 必须
安装插件
在vim中执行以下命令:
:PluginInstall
vim-plug
vim-plug是另一个流行的vim插件管理器。
安装vim-plug
在命令行中执行以下命令:
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
配置vim-plug
在~/.vimrc
中添加以下内容:
call plug#begin('~/.vim/plugged')
" 这里开始列出插件
Plug 'junegunn/vim-easy-align'
" 例如,安装NERDTree插件
Plug 'preservim/nerdtree'
" 这里结束列出插件
call plug#end()
安装插件
在vim中执行以下命令:
:PlugInstall
7. 高级技巧
宏录制与播放
录制宏
- 按
q
进入录制模式。 - 按任意字母键(如
a
)指定寄存器。 - 执行一系列操作。
- 按
q
结束录制。
播放宏
@a
:播放寄存器a
中的宏。2@a
:播放寄存器a
中的宏两次。
使用寄存器
基本使用
"
:指定寄存器。"ayy
:将当前行复制到寄存器a
。"ap
:粘贴寄存器a
的内容。
查看寄存器内容
:reg
:显示所有寄存器的内容。
标签和书签
使用标签
:tag tagname
:跳转到指定标签。Ctrl-]
:跳转到光标下的标签。Ctrl-t
:返回到上一个标签位置。
使用书签
m{a-z}
:在当前位置设置书签。'{a-z}
:跳转到指定书签。''
:返回到上一个位置。
脚本编写
编写vim脚本
- 脚本文件通常以
.vim
结尾。 - 使用
:source filename.vim
运行脚本。
基本示例
" Hello.vim
echo "Hello, Vim!"
可以通过在vim中执行 :source Hello.vim
来运行这个脚本。
这些高级技巧可以极大地提高你的编辑效率和灵活性。
8. 常见问题与解决方案
常见错误及解决方法
1. 文件无法保存
问题:尝试保存文件时出现“E212: Can’t open file for writing”错误。
解决方法:
- 确保你有文件的写权限。如果没有,可以使用
sudo
提升权限:sudo vim filename
- 检查文件路径是否正确。
2. 插件安装失败
问题:使用插件管理器安装插件时出现错误。
解决方法:
- 确保插件管理器已正确安装和配置。
- 检查网络连接,确保能够访问插件的源地址。
- 使用
:PlugClean
(vim-plug)或:PluginClean
(Vundle)清理无效插件,然后重新安装。
3. 语法高亮不起作用
问题:语法高亮没有启用或不起作用。
解决方法:
- 确保在
~/.vimrc
中启用了语法高亮:syntax on
- 确保文件类型检测已启用:
filetype plugin indent on
- 检查是否安装了正确的语法文件。
4. vim启动慢
问题:vim启动时间过长。
解决方法:
- 检查是否加载了过多的插件,尝试禁用一些不常用的插件。
- 优化
~/.vimrc
配置文件,避免重复和冗余设置。 - 使用
vim --startuptime log.txt
命令生成启动时间日志,分析并优化启动过程。
社区资源推荐
官方文档
- Vim 官方文档:Vim Documentation
在线教程
- Vim Adventures(互动教程):Vim Adventures
- Open Vim(交互式教程):Open Vim
社区论坛和讨论
- Reddit Vim 版块:r/vim
- Stack Overflow Vim 标签:Vim on Stack Overflow
插件资源
- Vim Awesome(插件搜索引擎):Vim Awesome
相关文章:
【Linux】vi/vim 使用技巧
文章目录 1. 简介vi和vim的历史vi和vim的区别安装vimUbuntu/DebianCentOS/RHELFedoramacOSWindows 2. 基本操作启动和退出启动退出 模式介绍普通模式插入模式命令模式 光标移动基本移动高级移动 3. 文本编辑插入文本删除文本复制和粘贴撤销和重做 4. 搜索与替换基本搜索搜索文本…...
React的功能是什么?
以下是一些React的主要功能和特点: 组件化架构: React将UI拆分为可复用的独立组件,每个组件负责一部分UI的逻辑和展示。组件可以嵌套使用,形成复杂的UI结构。 虚拟DOM: React使用虚拟DOM来管理UI的状态和更新ÿ…...
【6】数据分析检测(DataFrame 1)
学习目标3 昨天,我们学习了Series。 而Pandas的另一种数据类型:DataFrame,在许多特性上和Series有相似之处。 今天,我们将学习DataFrame的相关知识: 1. DataFrame的概念 2. 构造一个DataFrame 3. DataFrame的常用…...
React初体验 - [Next.js项目]
效果 须知 Next.js与React有哪些区别?https://juejin.cn/post/7112334604027035655 React中文手册 https://react.docschina.org/learn/start-a-new-react-project Next.js中文手册 https://www.nextjs.cn/docs/getting-started 步骤 npx提速 - 更换npm国内源 - 参考文档 …...
学生信息管理系统(简化版)
前端部分(vue2) !!前端采用vue2框架,下面只写出必要的代码文件,想要使用需自行先创建vue项目 部分截图 下面是目录结构 下面是public文件夹里面的html文件 <!DOCTYPE html> <html lang"&q…...
网易云信荣获“HarmonyOS NEXT SDK星河奖”
近日,鸿蒙生态伙伴 SDK 开发者论坛在北京举行。 网易云信凭借在融合通信领域的技术创新和鸿蒙生态贡献,荣获鸿蒙生态“HarmonyOS NEXT SDK星河奖”。 会上,华为鸿蒙正式推出 SDK 生态繁荣伙伴支持计划,旨在为 SDK 领域伙伴和开发…...
Java版-图论-最小生成树-Prim算法
实现描述 如图: Prim算法的基本思想是从一个顶点开始,逐步构建最小生成树。具体步骤如下: 随机选取一个顶点作为起始点,并将其加入最小生成树的集合中。从该顶点出发,选择一条边连接到其他未被访问的顶点中的最小权值边。将该顶点加入到最小生成树的集合中,并标记为已…...
python-@property 和setter属性
T 一个装饰器,使得类中方法像属性一样被使用。 W 这是原本的类及其属性的访问 class Person():def __init__(self, firstname:str, lastname:str):self.first firstnameself.last lastnameself.full_name self.first self.lastdef printFullname(self):re…...
es有string类型字段吗
在较新的版本的 Elasticsearch (ES) 中,string 类型已经被移除,取而代之的是更具体的 text 和 keyword 类型。这一改变是在 Elasticsearch 5.0 版本引入的,目的是为了提供更好的性能和更明确的数据处理方式。 Text 类型 用途:text 类型用于全文搜索。当你有一个字段需要进…...
shell编程入门之提取字符并设置rtc时间
awk用法 awk是一款文本处理工具,通常在Unix和Linux操作系统中使用,用于以行为单位对文本进行处理和操作。它可以读取输入文本,对其进行处理,生成报表、统计信息等,并将结果输出到标准输出设备中。 它主要有以下特点&…...
数据库进阶教程:结合编程实现动态数据操作
在前一篇文章中,我们了解了数据库的基础知识及其核心操作。这次,我们将通过编程语言(以 Python 为例)与数据库进行交互,进一步提升你的数据库应用能力。我们将学习如何通过代码完成数据的插入、查询、更新和删除&#…...
高效可靠:吉客云数据集成到MySQL技术详解
测试-查询货品供应商报价-dange:吉客云数据集成到MySQL的技术案例分享 在现代企业的数据管理中,如何高效、可靠地实现不同系统之间的数据对接是一个关键问题。本文将聚焦于一个具体的系统对接集成案例——将吉客云的数据集成到MySQL数据库中,…...
docker安装ddns-go(外网连接局域网)
docker先下载镜像,目前最新版是v6.7.6 也可以csdn资源下载 再导入dockers https://download.csdn.net/download/u014756339/90096748 docker load -i ddns-go.tar 启动 docker run -d --name ddns-go --restartalways --nethost -v /opt/ddns-go:/root jeessy/…...
hbuilder 安卓app手机调试中基座如何设置
app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】,点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…...
【pyspark学习从入门到精通23】机器学习库_6
目录 分割连续变量 标准化连续变量 分类 分割连续变量 我们经常处理高度非线性的连续特征,而且只用一个系数很难拟合到我们的模型中。 在这种情况下,可能很难只通过一个系数来解释这样一个特征与目标之间的关系。有时,将值划分到离散的桶中…...
Postman高阶技能:Collection集合批量运行!
01、Collection(集合)介绍 当我们对一个或多个系统中的很多接口用例进行维护时,首先想到的就是对接口用例进行分类管理,同时还希望对这批接口用例做回归测试。 在 Postman 中也提供了这样一个功能,就是 Collection&a…...
ipset搭配iptables实现城市IP访问限制
最近刷了一台飞牛os,但是没有二次验证的功能,裸奔在公网上,看着让人揪心。于是最近研究了一下,设置防火墙只让某些城市能够访问设备,这样大大降低了服务器的风险,因为大多数被黑的原因都是来自国外。 1.下…...
WPF表格控件的列利用模块适配动态枚举类
将枚举列表转化到类内部赋值,在初始化表格行加载和双击事件时,触发类里面的枚举列表的赋值 <c1:Column Header"变更类型" Binding"{Binding ChangeType, ModeTwoWay, ValidatesOnExceptionsTrue, ValidatesOnDataErrorsTrue, NotifyOn…...
java引用相关(四大引用类型,软引用避免oom,弱引用表,虚引用和引用队列,可达性分析算法)
1. 什么是引用? 问题:什么是引用?Java中的引用是如何工作的? 答案: 引用 是对象的句柄,用于访问堆内存中的对象。在Java中,引用变量实际上存储的是对象的地址,而不是对象本身。通…...
图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。
图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。 目录 图像识别 | Matlab基于卷积神经网络(CNN)的宝可梦识别源程序,GUI界面。附详细的运行说明。预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab基…...
2、开发环境优化与创建第一个插件程序
一、创建测试用例二、vscode优化2.1 修改默认终端为普通cmd2.2 配置一键编译&&运行&&监视一、创建测试用例 使用命令yo code生成一个测试用例,选择或输入下面的内容。2. 命令的最后会提示是否使用vscode打开,选择打开就行。 3. 在当前目录下会产生helloworld…...
Android CoordinatorLayout:打造高效交互界面的利器
目录 一、CoordinatorLayout 介绍及特点 二、使用方法 2.1 创建 CoordinatorLayout 布局 2.2 添加需要协调的子视图 2.3 自定义 Behavior 三、结语 相关推荐 在Android开发中,面对复杂多变的用户界面需求,CoordinatorLayout以其强大的交互管理能力…...
计算机视觉:学习指南
一、引言 计算机视觉作为人工智能领域的一个重要分支,致力于让计算机理解和解释视觉信息,近年来取得了令人瞩目的进展,广泛应用于安防监控、自动驾驶、图像编辑、医学影像分析等众多领域。从入门到精通计算机视觉需要系统地学习一系列知识和…...
创建型设计模式
一、设计模式介绍 1.设计模式是什么 设计模式是指在软件开发中,经过验证的,用于解决在特定环境下,重复出现的,特定问题的解决方案; 2.设计模式怎么来的? 满足设计原则后,慢慢迭代出来的。 3.设…...
【Ubuntu】使用ip link工具创建虚拟局域网并配置?
🦋🦋🦋如何使用ip link工具创建虚拟局域网? sudo ip link add link enx888bd66b7000 name enx.120 type vlan id 120 上述命令使用ip link工具在Linux系统中创建了一个新的虚拟局域网(VLAN)接口,…...
川渝地区软件工程考研择校分析
通过最新数据分析,5所高校软件工程专业2025年考研难度从高到低预计为: 电子科技大学 >> 四川大学 > 重庆大学 ≈ 西南交通大学 > 西南大学 对于想考川渝地区985但核心目标为优先上岸的考生,建议重点考虑西南交通大学软件工程学硕。该校24届软件工程学硕实际录取1…...
云原生基础设施指南:精通 Kubernetes 核心与高级用法
1. 云原生的诞生 随着互联网规模的不断增长,以及企业对敏捷开发、快速交付和高可用性的需求日益增强,传统的单体架构逐渐暴露出局限性,难以满足现代业务对动态扩展和高效迭代的要求。为此,云原生应运而生。 云原生是为云计算时代…...
Pyinstaller使用指南以及遇到的问题
一、在cmd命令行执行安装pyinstaller工具 pip install pyinstaller 二、在命令行中执行打包命令即可 格式如下: pyinstaller [opts] yourprogram.py 参数含义 -F 指定打包后只生成一个exe格式的文件(建议写上这个参数) -D –onedir 创建一个目录,包含…...
美图撕掉蔡文胜标签
卖掉比特币的美图不投机了。 作者|周立青 编辑|杨舟 12月5日,比特币突破10万美元大关,曾花费1亿美元购入虚拟货币的美图宣布已出售所有加密货币。 美图在港交所发布公告称,自2024年11月起,公司已开始出售其持有的加密货币&…...
【Spring】IoC和DI,控制反转,Bean对象的获取方式
阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 一:什么是IoC 1:什么是容器 2:什么是IoC 二:IoC应用…...
【015】对文件进行压缩_#py
对文件进行压缩 1. 下载7z软件2. 调用exe文件3. 压缩和分卷压缩4. 完整代码 1. 下载7z软件 从官网下载https://www.7-zip.org/软件。 2. 调用exe文件 主要是通过 subprocess 调用对应的command的命令。 subprocess.run(command, checkTrue)其中 command 的应包含7z软件的ex…...
OD C卷【智能成绩表】
题目 小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名。 输入描述: 第一行输入学生人数n、科目数量m; 0<n<100; 0<m<10 第二行输入m个科目名称,以空格分开;科目只由英文字母构成,长度不超过…...
开源架构与云计算的传奇融合
开源架构与云计算的传奇融合 一、引言二、开源架构与云计算的卓越优势(一)成本效益惊世骇俗(二)灵活性与可扩展性无与伦比(三)社区支持与创新活力爆棚 三、震撼应用案例剖析(一)容器…...
【SpringBoot-事件监听】
文章目录 1. 定义事件2. 创建监听器3. 发布事件注意事项 在Spring Boot中,事件监听是一种常用的机制,用于在应用程序的不同部分之间进行松耦合的通信。Spring Boot基于Spring框架,因此它继承了Spring的事件发布和监听机制。以下是如何在Sprin…...
【docker】springboot 服务提交至docker
准备docker (不是docker hub或者harbor,就是可以运行docker run的服务),首先确保docker已经安装。 本文以linux下举例说明: systemctl stats docker ● docker.service - Docker Application Container EngineLoaded…...
Facebook广告突然无消耗?原因解析与解决方案。
在Facebook广告投放中,广告突然无消耗是很多广告主都会遇到的难题。这种情况不仅浪费时间,还可能导致营销活动停滞,影响业务发展。那么,广告无消耗的原因是什么?又该如何解决呢? 一、Facebook广告无消耗的…...
05 在 Linux 使用 AXI DMA
DMA简介 DMA 是一种采用硬件实现存储器与存储器之间或存储器与外设之间直接进行高速数据传输的技术,传输过程无需 CPU 参与(但是CPU需要提前配置传输规则),可以大大减轻 CPU 的负担。 DMA 存储传输的过程如下: CPU 向…...
android AIDL ipc binder转换
一. 概述 众所周知AIDL并不是所有的数据类型都可以传输。 可以传输的类型包括: 1.原生类型 2.String 3. CharSequence 4. List 5.Map 6. Binder 7. Parcelable 容器类 parcelable传输的时候会分解成成员,数组item的方式,传输完成后再进行…...
【docker】12. Docker Volume(存储卷)
什么是存储卷? 存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。这就意味着,当我们在容器中的这个目录下写入数据时,容器会将其内容直接写入到宿主机上与此容器建立了绑定关系的目录。 在宿主机上…...
1. 机器学习基本知识(4)——机器学习测试和验证
1.6 测试和验证 了解模型对新实例的泛化能力的唯一方法是在新实例上进行实际尝试。 一种方法是将模型部署到生产环境并监控其性能。 这种方法很有效,但如果模型非常糟糕,你的用户就会抱怨,所以这显然不是最好的方法。 更好的选择是将数…...
生成式AI概览与详解
1. 生成式AI概览:什么是大模型,大模型应用场景(文生文,多模态) 生成式AI(Generative AI)是指通过机器学习模型生成新的数据或内容的人工智能技术。生成式AI可以生成文本、图像、音频、视频等多种…...
软件项目标书参考,合同拟制,开发合同制定,开发协议,标书整体技术方案,实施方案,通用套用方案,业务流程,技术架构,数据库架构全资料下载(原件)
1、终止合同协议书 2、项目合作协议 3、合同交底纪要 4、合同管理台账 软件资料清单列表部分文档清单:工作安排任务书,可行性分析报告,立项申请审批表,产品需求规格说明书,需求调研计划,用户需求调查单&…...
C++ extern “C“ 用法
extern “C” 由于c中需要支持函数重载,所以c和c中对同一个函数经过编译后生成的函数名是不相同的 extern “C” 的主要作用就是为了实现c代码能够调用其他 c 语言代码。 1(不常用) //告诉编译器 show() 函数按c语言的方式进行编译和链接 extern "C" voi…...
Node.js(v16.13.2版本)安装及环境配置教程
一、进入官网地址下载安装包 https://nodejs.org/zh-cn/download/ 选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位(v16.13.2版本) 下载后的zip文件 二、解压文件到nodejs,并打开文件夹nodejs,复制解压…...
父组件调用子组件的方法
父组件 在父组件中调用子组件的sayHello()函数 <template><div><button click"getChild(wendu)">触发子组件方法wendu</button><button click"getChild(shidu)">触发子组件方法shidu</button><el-dialog v-model…...
运维排错系列:Excel上传失败,在剪切板有大量信息。是否保存其内容...
问题点 在导入 Excel 数据到 SAP 的时候,某些时刻系统会出现如下的弹窗。 上载 excel 文件时,您会收到错误:“剪贴板上有大量信息。XXX” Microsoft Office Excel 的弹出窗口显示以下信息: 剪贴板上存在大量信息。是否保留其内容…...
【自学】Vues基础
学习目录 Vues基础本地应用网络应用综合应用 工具的准备 我个人比较喜欢使用HTMLDROWNER,学习资料推荐使用VC,仅供选择吧 前置知识 HTMLCSSJSAJAX:这个是学习资料博主推荐的 个人感觉认真学好HTMLCSSJS理解vues基础很容易上手 官方网址…...
ubuntu 7z解压rar文件报错:unsupported method message
问题说明 最近项目需要支持线上上传rar格式,7z来解压缩入库。开发测试过程中发现使用以下命令解压报错, 7z x FileImportTest01.rar -p"123456" -o/home/download -y文件目录内容已列出,但无法解压文件!!! 仔细检查命令没有问题…...
C语言基础六:循环结构及面试上机题
Day06:循环结构 定义 代码的重复执行,就叫做循环 循环的分类 无限循环:其实就是死循环,程序设计中尽量避免无限循环。程序中的无限循环必须可控。有限循环:循环限定循环次数或者循环的条件。 循环的构成 循环条件循环体 当型循环的实现…...
【蓝桥杯每日一题】技能升级
技能升级 2024-12-10 蓝桥杯每日一题 技能升级 二分 题目大意 一个角色有 N 种可以增加攻击力的技能,对于第 i 个技能首次升级可以提升 A i A_i Ai 点攻击力,随后的每次升级增加的攻击力都会减少 B i B_i Bi 。升级 ⌈ A i B i ⌉ \lceil \frac{A…...