常州做网站的 武进/谷歌广告代理公司
天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
文章目录
- vi文本编辑器编辑文本
- 1. vi介绍
- 1.1 vi的特点
- 1.2 vi的工作模式
- 2. vi的启动与退出
- 3. vi基本命令
- 3.1 常用命令分类
- 3.2 屏幕翻滚命令
- 3.3 光标定位命令
- 3.4 光标移动命令
- 3.5 文本输入与删除
- 3.5.1 文本的输入insert
- 3.5.2 文本的删除delete
- 4. 文本的修改与替换
- 4.1 文本的修改correct
- 4.2 文本的替换replace
- 5. 文本的拷贝与粘贴copy
- 6. 撤销与重做
- 7. vi常用末行命令
- 7.1 字符串搜索
- 7.2 字符串替换s
- 7.3 全局命令global
- 7.4 全局替换
- 7.5 文件操作与退出命令
- 7.6 其他常用命令
- 7.6.1 行编辑命令
- 7.6.2 执行shell命令
- 7.6.3 设定vi选项
Linux入门学习系列文章:
Linux学习之系统用户和用户组的使用
Linux学习之系统管理相关内容
Linux学习之创建文件和目录相关内容
Linux学习之删除文件和目录
Linux学习之复制文件和目录
Linux学习之路径、文件和目录的移动和重命名
Linux学习之查看文件内容
Linux学习之vi文本编辑器的使用
Linux学习之查找文件
Linux入门学习指南
vi文本编辑器编辑文本
1. vi介绍
- Linux文本编辑器有ex、sed、vi和emacs等
- vi是最基本的文本编辑器
- vi是visual的缩写
- vi是所有unix和Linux系统上必配的编辑器
- 现在Linux上配备的主流的文本编辑器是vi的增强版vim
- vim是vi improved的简称
- vi是一个全屏幕文本编辑器,具备文本编辑的所有功能,高效快捷
1.1 vi的特点
- 编辑功能强大:
具有高级编辑特性,可通过正则表达式、宏和命令脚本完成复杂编辑,实现智能化和自动化 - 适用于各种版本的Unix/Linux系统:
vi是Unix/Linux系统的标准文本编辑器 - 适用于各种类型的终端:
对终端设备有广泛的适应性 - 使用灵活快捷:
初学者可能觉得命令复杂难度高,但对于熟练掌握后的人来说,就是一个编辑利器
1.2 vi的工作模式
vi有三种工作模式
- 命令模式command mode:
输入任何字符都作为命令来解释执行,屏幕上不显示输入内容,命令模式用于完成各种文本修改工作 - 输入模式insert mode:
输入的任何字符都将作为文件的内容被保存,并显示在屏幕上,输入模式用于完成文本录入工作 - 末行模式last line mode:
也称为ex转义模式,在末行模式下,光标停留在屏幕的最末行,在此接收输入的命令并执行,末行模式用于执行全局性操作,如文件操作、参数设置、查找与替换、拷贝与粘贴、执行shell命令等
2. vi的启动与退出
输入命令进入vi全屏幕编辑环境
vi 文件名
启动过程描述:先建立一个编辑缓冲区,若指定了文件且该文件已存在,则将其内容读到编辑缓冲区中,若指定的文件不存在,则创建此文件,然后将光标定位在第一行第一列的位置上
vi启动后首先进入命令模式,此时可通过vi的编辑命令进行文本的输入和修改
注意:编辑命令只是在修改调入缓冲区中的文本的副本,文本本身不会被修改,编辑完成后,需要用:wq命令将修改后的内容保存到文件中并退出vi才算完成修改,此次运行未对文件做任何修改,则可用:q退出
3. vi基本命令
vi命令相当多,但常用的只有一小部分
3.1 常用命令分类
- 屏幕翻滚
- 移动光标
- 插入与删除
- 修改与替换
- 拷贝与粘贴
- 复原与重复
vi命令不需要配置鼠标和控制键,操作速度更快,效率更高
尽管vi只用字符命令就可以完成所有编辑操作,vi还是提供了键盘的其他控制操作的支持
按键 | 命令模式 | 输入模式 | 末行模式 |
---|---|---|---|
Home | 移动光标到行的最前面 | 移动光标到行的最前面 | 移动光标到行的最前面 |
End | 移动光标到行的最后面 | 移动光标到行的最前面 | 移动光标到行的最前面 |
PageDown | 向下翻页 | 移动光标到行的最前面 | 向下翻找历史命令 |
PageUp | 向上翻页 | 移动光标到行的最前面 | 向下翻找历史命令 |
Delete | 删除光标位置的字符 | 移动光标到行的最前面 | 移动光标到行的最前面 |
Insert | 进入输入模式 | 替换-输入 | 无效 |
Backspace | 光标前移一个字符 | 删除光标前的字符 | 删除光标前的字符 |
Space | 光标后移一个字符 | 空格 | 空格 |
Enter | 光标下移一个字符 | 换行 | 提交命令 |
上下左右箭头 | 按箭头方向移动光标 | 按键都方向移动光标 | 找历史命令 |
注:
在命令模式下输入的字符都被vi解释为命令,不在屏幕上显示,若输入的是非法命令则警报
vi区分大小写
以下分类介绍常用vi命令
3.2 屏幕翻滚命令
以下为屏幕翻滚命令的组合键列表
组合键 | 功能 |
---|---|
ctrl+u | 向上翻半屏 |
ctrl+d | 向下翻半屏 |
PageDown | 向下翻一屏 |
ctrl+f | 向下翻一屏,同PageDown |
PageUp | 向上翻一屏 |
ctrl+b | 向上翻一屏,同PageUp |
[n]z+Enter | 将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部 |
3.3 光标定位命令
按键与功能列表
按键 | 功能 |
---|---|
Home | 光标移动至行首 |
0 | 光标移动至行首,同Home |
End | 光标移动至行尾 |
$ | 光标移动到行尾,同End |
^ | 光标移动至行首第一个非空格字符 |
[n]G | 光标移动到第n行,未指定n时移动到末行 |
[n]I | 光标移动到第n行,未指定n时移动到首列 |
H、M、L | 光标移动到屏幕首、中、尾行行首 |
3.4 光标移动命令
vi不支持鼠标移动光标,但可以将通过按键进行操作
按键与功能列表
按键 | 功能 |
---|---|
按键左下上右 | 光标向左、下、上、右移动一个字符 |
h、j、k、l | 光标向左、下、上、右移动一个字符,同箭头键 |
b、w | 光标移动到上一个词、下一个词首 |
e | 光标移动到词尾 |
(、) | 光标移动到句首、句尾 |
{、} | 光标移动到段首、段尾 |
注:光标移动命令前带数字n时表示重复移动n次,如4e表示移动到后面第4个词的词尾
3.5 文本输入与删除
输入文本前先将光标定位到要输入内容的位置,执行插入命令,进入输入模式,处于输入模式时屏幕底部会显示–insert–提示
表示后续的输入都作为文件的输入内容,输入完成后按esc命令返回命令模式
3.5.1 文本的输入insert
插入命令都是单字符命令,可实现在当前光标位置的前、后、行首、行尾、上一行、下一行开始输入
命令如下
按键 | 功能 |
---|---|
a或A | 在光标位置后、行尾后开始插入 |
i或I | 在光标位置前、行首前开始插入,i的作用于insert键相同 |
o或O | 在光标所在行之后、光标所在行之前的新行开始插入 |
3.5.2 文本的删除delete
删除文本最简单的方法是将光标移动到要删除的字符上,每按一下x键或者delete键就会删除一个字符,删除文本内容较多时,可用以下命令
按键 | 功能 |
---|---|
x或X | 删除光标处、光标前的字符,x的作用与delete键相同 |
dd | 删除光标所在的行 |
D | 删除光标右面的文本 |
J | 删除当前行尾的换行符,使当前行与下一行合并尾一行 |
d+ | 定位符 删除从光标位置到指定位置范围内的字符 |
关于d+参数的常用如下
参数 | 描述 |
---|---|
d0或d^ | 删除光标左面的文本,0或^表示行首 |
d$ | 删除光标右面的文本,$表示行尾 |
dG | 删除光标所在行之后的所有行,G表示最后一行 |
db | 删除光标处前的字符直到词首,b代表词首 |
de | 删除光标处的字符直到词尾,e表示词尾 |
dw | 删除光标处的字符直到下一个词的词首,w表示下一个词的词首 |
注:
命令前带n时表示删除方位扩大n倍,如3dd表示删除3行,2de表示删除从光标开始的两个词
4. 文本的修改与替换
4.1 文本的修改correct
文本修改指改写一部分文本的内容,修改过程描述:先删除指定范围的文本,然后插入新文本,最后esc结束插入
命令如下
命令 | 功能 |
---|---|
cc | 修改光标所在的行 |
C | 修改光标处到行尾的文本 |
c+ | 定位符 修改光标到指定范围内的文本,常用如下: |
c0或c^ | 修改光标左面的文本 |
c$ | 修改光标右面的文本 |
cG | 修改光标所在行之后的所有行 |
cb | 修改光标处前的字符直到词首 |
cw | 修改光标处的字符直到词尾 |
cl | 修改光标处的字符 |
注:
以上命令前带数字表示修改范围扩大n倍,如4cc表示修改从光标所在行开始的4行,3cw表示修改从光标开始的3个词
4.2 文本的替换replace
替换replace指覆盖,是相同长度字符替换,替代substitute指取代,可以相同也可以不同长度内容进行取代
替换命令
命令 | 功能 |
---|---|
r | 用输入的字符替换光标处的字符 |
R | 用输入的文本逐个替换从光标处开始的各个字符,直到按下esc键 |
替代命令
命令 | 功能 |
---|---|
s | 用输入的文本替代光标处的字符,用esc键结束输入,等同于cl |
S | 用输入的文本替代光标所在的行,用esc键结束输入,等同于cc |
5. 文本的拷贝与粘贴copy
拷贝指将光标处的文本幅值到一个缓冲区中,类似Windows的剪切板
粘贴指将缓冲区中的内容插入到光标处
命令与功能
命令 | 功能 |
---|---|
yy | 拷贝光标所在行至缓冲区 |
y+定位符 | 拷贝光标到指定范围内的文本,常用如下: |
y0或y^ | 拷贝光标左面的文本 |
y$ | 拷贝光标右面的文本 |
yG | 拷贝光标所在行之后的所有行 |
yb | 拷贝光标处的字符直到词首 |
yw | 拷贝光标处的字符直到词尾 |
6. 撤销与重做
撤销undo
消除上一个命令所做的修改,恢复到命令执行前的样子
重做redo
重复执行上一个命令
命令
命令 | 功能 |
---|---|
u | 撤销上一个命令所做的修改 |
U | 撤销最近针对一行所做的全部修改,在对一行连续做了多处修改后,可用此命令一次恢复全行 |
. | 重复前一个命令 |
7. vi常用末行命令
命令模式下输入:或/或?字符都将进入末行模式,后续的输入被解释尾行命令,在屏幕末行显示
屏幕输入完成后按Enter键执行,末行命令执行结束后返回命令模式,或退出vi
命令分类:字符串搜索与替换命令、文件操作与退出命令、其他
7.1 字符串搜索
在文件中查找某各字符串可用字符串搜索命令,执行命令后光标会停留在第一个匹配字符串的首字符处
按n或N可移至下一个匹配字符串首,不存在匹配字符串则末行显示"找不到模式"
命令
命令 | 功能 |
---|---|
/模式 | 从光标处向后 搜索与指定模式匹配的字符串,按n向后继续找 |
?模式 | 从光标处向前搜索与指定模式匹配的字符串,按N向前继续找 |
如查找test字符串,使用命令/test,光标从当前位置移动到后面第一个test的字符的t上,按n移动到下一个test上,当搜索到文件尾时,再按n则返回到文件头继续搜索
7.2 字符串替换s
字符串替换使用s命令,指定的行中搜索与指定模式相匹配的字符串,并用另一个字符串替换他
命令
:[n1,n2]s/p1/p2/[g][c]
参数描述
参数 | 描述 |
---|---|
n1,n2 | 表示目标行的行号范围,可以使用%代表所有行,未指定范围时,目标行就是光标所在的当前行 |
p1 | 用作搜索的字符串模式 |
p2 | 用作替换的字符串模式 |
s | 命令可以带g和c选项 |
g | 表示替换目标行中所有匹配的字符串,没有g则只替换目标行中第一个匹配的字符串 |
c | 表示替换前要求用户确认 |
^ | 代表行首 |
$ | 代表行尾 |
模式中可以用^代表行首,$代表行尾
7.3 全局命令global
全局命令使用g
在全文中搜索含有与指定模式匹配的字符串的行,对匹配的行做标记
命令格式如下
命令 | 作用 |
---|---|
:g/p1 | 搜索所有包含p1字符串模式的行 |
:g!p1 | 搜索所有不包含p1字符串模式的行 |
如
命令 | 作用 |
---|---|
:g/test | 命令将找出所有含有test的行 |
:g!test | 命令将找出所有不包含test的行 |
命令与其他命令联合使用
命令 | 作用 |
---|---|
:g/p1/ | 对所有包含p1的行执行指定的命令 |
:g!p1/ | 对所有不包含p1的行执行指定的命令 |
如
p命令显示行,联合使用如下
命令 | 作用 |
---|---|
:g/test/p | 显示所有含有test的行 |
d命令删除行,联合使用如下
命令 | 作用 |
---|---|
:g!test/d | 删除所有不包含test的行 |
7.4 全局替换
s命令面向行的字符串替换,可与g命令联合使用
全局替换命令格式
g命令/s命令
表示先用g命令再文件中搜索含有某个模式的行,并做标记,然后用s命令对所有标记的行执行搜索和替换
常用命令如下
命令 | 作用 |
---|---|
:g/p1/s/p2/p3/g | 将文件中所有含有p1的行中的p2用p3替换 |
:g!p1/s/p2/p3/g | 将文件中所有不含有p1的行中的p2用p3替换 |
:g/p1/s//p2/g | 将文件中所有的p1用p2替换,这里的:g/p1/s//p2/g是:g/p1/s/p1/p2/g的简写,当s命令的搜索模式与g命令的搜索模式相同时,可省略s命令中的搜索模式,命令中//中间没有空格 |
7.5 文件操作与退出命令
文件操作包括读文件和写文件,读文件是将文件内容读入到编辑缓冲区中,写文件是将编辑缓冲区的内容保存到文件中
退出vi时可选择是否保存文件
常用退出和文件操作命令如下
命令 | 作用 |
---|---|
:w [文件名] | 写入指定文件,若未指定文件则写入当前文件,即vi启动时打开的文件 |
:q | 未修改源文件,不保存文件,直接退出 |
:wq或者:x | 保存文件并退出 |
:q! | 放弃修改,不保存文件,退出 |
:e! | 放弃修改,编辑区恢复为文件原样 |
:e 文件名 | 打开指定的文件,调入编辑区 |
:r 文件名 | 读入指定的文件,将文件内容插入到光标位置 |
:f | 在屏幕末行显示文件相关信息 |
7.6 其他常用命令
7.6.1 行编辑命令
对指定的行进行编辑,指定行范围时,可用.代表当前行,用$代表最后一行,用%代表所有行
常用行编辑命令如下
命令 | 作用 |
---|---|
:n | 跳至第n行 |
:n1,n2con3 | 将第n1至n2行之间的内容拷贝到第n3行下,如2,7co$表示将第2行到第7行的文字幅值到文件末尾处 |
:n1,n2mn | 将第n1到n2行之间的内容移至第n3行下,如:.m10表示将当前行移动到第10行下 |
:n1,n2d | 将第n1到n2行之间的内容删除,如2,7d表示删除第2行到第7行的内容 |
:p | 显示当前行的内容, |
:nu | 显示当前行的行号和内容 |
7.6.2 执行shell命令
使用vi编辑文件时,不退出vi情况下执行shell命令,执行期间vi暂时挂起,待命,执行结束后返回vi继续运行
执行shell命令的格式如下
:!
命令执行指定的shell命令
7.6.3 设定vi选项
可通过设置vi的选项来规定vi的一些外观和行为特性
设定vi选项的方法其中之一是使用set命令
常用如下
命令 | 作用 |
---|---|
:set all | 显示所有选项 |
:set ai | 设定自动缩进 |
:set noai | 取消自动缩进 |
:set nu | 设定行号显示 |
:set nonu | 取消行号显示 |
:set hlsearch | 设定高亮显示搜索到的字符串 |
:set nohlsearch | 取消高亮显示搜索到的字符串 |
:set ic | 设定搜索命令中忽略大小写 |
:set noic | 取消搜索命令中忽略大小写 |
感谢阅读,祝君暴富!
相关文章:

Linux学习之vi文本编辑器的使用
天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…...

【数据结构】链表与顺序表的比较
不同点: 顺序表和链表是两种常见的数据结构,他们的不同点在于存储方式和插入、删除操作、随机访问、cpu缓存利用率等方面。 一、存储方式不同: 顺序表: 顺序表的存储方式是顺序存储,在内存中申请一块连续的空间,通…...

dart 基本语法
//入口方法 main() 或 void main() //数据类型 原生数据类型 String int double bool null 注意:String 包函 ‘’ “” ‘’’ ‘’’ 三种形式复杂数据类型 list Set Map自定义数据类型 class inheritance动态数据类型 var 注:dart 是静态类型语言&a…...

【经验分享】嵌入式入坑经历(选段)
文章目录 你现在的工作中所用到的专业知识有哪些呢?为什么想转行了?后来为什么从事了嵌入式行业呢?你对嵌入式的兴趣是何时培养起来的?你是怎么平衡兴趣爱好和工作的关系的?平时做的事情对你现在的工作有哪些帮助?对于有志学习嵌入式开发的在校大学生…...

Docker面试整理-Docker与虚拟机的区别是什么?
Docker 容器和传统的虚拟机(VM)都是提供隔离的运行环境以部署和运行应用程序的技术,但它们在架构和性能上存在显著的不同。了解这些差异可以帮助你选择最适合特定需求的解决方案: 基础架构:虚拟机:每个虚拟机都包括完整的操作系统、应用程序、必需的库和二进制文件,运行在…...

Java:JDK8 GC中ParNew和CMS的问题说明
JDK8中常用如下的垃圾收集器,它们分别运用在年轻代和老年代: ParNew : 年轻代垃圾收集器,多线程,采用标记—复制算法。 CMS:老年代的收集器,全称(Concurrent Mark and Sweep)&#…...

学单片机前先学什么?
先学c语言和数字电路 这里默认你说的单片机是51单片机,通过你的问题,我猜你的单片机应该还没有入门,如果是入门的话,一般都是从51单片机开始的。刚好我有一些资料,是我根据网友给的问题精心整理了一份「单片机的资料从…...

数据可视化:Matplotlib 与 Seaborn
数据可视化是数据分析中至关重要的一部分,它能帮助我们直观地理解数据的分布、趋势和关系。Python 中,Matplotlib 和 Seaborn 是两个最常用的可视化库。本文将详细介绍如何使用 Matplotlib 和 Seaborn 进行数据可视化,包括基本图形、图形定制…...

【linux】自定义快捷命令/脚本
linux自定义快捷命令 场景自定义命令自定义脚本 场景 深度学习经常要切换到自己环境,conda activate mmagic,但是又不想每次重复打这么多字,想使用快捷命令直接切换。 自定义命令 使用别名(alias)或自定义脚本来创建…...

使用onnxruntime加载YOLOv8生成的onnx文件进行目标检测
在网上下载了60多幅包含西瓜和冬瓜的图像组成melon数据集,使用 LabelMe 工具进行标注,然后使用 labelme2yolov8 脚本将json文件转换成YOLOv8支持的.txt文件,并自动生成YOLOv8支持的目录结构,包括melon.yaml文件,其内容…...

QT 信号和槽 一对多关联示例,一个信号,多个槽函数响应,一个信号源如何绑定多个槽函数
在窗体里放置一个单行文本编辑控件(QLineEdit)、一个标签控件(QLabel)和一个文本浏览控件(QTextBrowser),在单行文 本编辑控件里的文本被编辑时,标签控件和文本浏览控件都会同步显示…...

C++ AVL树 详细讲解
目录 一、AVL树的概念 二、AVL树的实现 1.AVL树节点的定义 2.AVL树的插入 3.AVL树的旋转 4.AVL树的验证 三、AVL树的性能 四、完结撒❀ 一、AVL树的概念 二叉搜索树虽可以缩短查找的效率,但 如果数据有序或接近有序二叉搜索树将退化为单支树,查 …...

Faster R-CNN:端到端的目标检测网络
本文回顾了由微软研究人员开发的 Faster R-CNN 模型。Faster R-CNN 是一种用于物体检测的深度卷积网络,在用户看来,它是一个单一的、端到端的统一网络。该网络可以准确快速地预测不同物体的位置。为了真正理解 Faster R-CNN,我们还必须快速概…...

如何给 MySQL 表和列授予权限?(官方版)
目录 授予表级别权限 授予列级别权限 如何给MySQL表和列授予权限是MySQL数据操作中非常重要的步骤,也是企业级使用MySQL数据库的起步点,以下分别参照官方教程整理的MySQL数据库的权限操作。 以下的语句可以直接使用MySQL的命令行进行操作(如何…...

攻防世界testre做法(考点:base58)
在做这道题目之前,我们先来简单了解一下base64加密和base58加密,先来说一些预备知识,bit为1个位,即一个0或1,八个位组成一个字节,即八个二进制数。 base64编码原理:1,在使用base64加…...

计算机视觉与模式识别实验1-1 图像的直方图平衡
文章目录 🧡🧡实验流程🧡🧡1.读入图像‘rice.png’,在一个窗口中显示灰度级n64,128和256的图像直方图。2.调解图像灰度范围,观察变换后的图像及其直方图的变化。3.分别对图像‘pout.tif’和‘ti…...

【C++课程学习】:C++入门(函数重载)
🎁个人主页:我们的五年 🔍系列专栏:C课程学习 🎉欢迎大家点赞👍评论📝收藏⭐文章 目录 🌈函数重载: 🍉1.参数个数不同: 🍉2.参数…...

skywalking介绍及搭建
链路追踪框架比对: skywalking安装部署: 下载地址:Downloads | Apache SkyWalking 配置微服务与skywalking整合: copy agent/optional-plugins/apm-spring-cloud-getway-xx.jar到plugins,然后重启skywalking 监控界面…...

分析示例 | Simufact焊接工艺仿真变形精确预测汽车结构
导语 焊接是汽车制造过程中一个关键环节,白车身、发动机、底盘和变速箱等都离不开焊接工艺的应用,主要涉及气保焊、电阻点焊、激光焊、电子束焊等多种焊接工艺。由于汽车车型众多、成形结构复杂、汽车制造质量、效率、成本等方面的综合要求。如何高效、…...

模式识别选择题
影响K-均值聚类算法效果的主要因素之一是什么? A. 初始聚类中心的选取 B. 样本输入顺序 C. 模式相似性测度 D. 分类准则 答案:A支持向量机(SVM)在处理非线性问题时,通常使用什么方法? A. 引入核函数 B. 增加…...

【Java基础】线程方法
start():启动线程,使线程进入就绪状态。 run():线程执行的代码逻辑,需要重写该方法。 停止线程 void interrupt() 中断线程,让它重新去争抢cpu 如果目标线程长时间等待,则应该使用interrupt方法来中断等待…...

C++之动态数组
C给我们提供了一个叫Vector的类,这个Vector在std命名空间中。这个Vector有点像一个集合,一个不强制其实际元素具有唯一性的集合,和数组一样,但是和C普通的数组又不太一样,和标准的数组不同当你创建Vector时,…...

使用 image-combiner 开源项目实现对海报图片的生成
1:gitee 项目地址 image-combiner: ImageCombiner是一个专门用于Java服务端图片合成的工具,没有很复杂的功能,简单实用,从实际业务场景出发,提供简单的接口,几行代码即可实现图片拼合(当然用于…...

【缓存】框架层常见问题和对策
缓存是为了加快读写速度,再了解redis这类框架层的缓存应用之前,我们不妨先思考下操作系统层面的缓存解决方案,这样有助于我们更深的理解缓存,哪些是系统层面的,哪些是服务层面。 以下是一些常见的缓存问题及其解决方案…...

【FAS】《CN103106397B》
原文 CN103106397B-基于亮瞳效应的人脸活体检测方法-授权-2013.01.19 华南理工大学 方法 / 点评 核心方法用的是传统的形态学和模板匹配,亮点是双红外发射器做差分 差分:所述FPGA芯片控制两组红外光源(一近一远)交替亮灭&…...

3D按F3为什么显示不出模型?---模大狮模型网
对于3D建模软件的用户来说,按下F3键通常是用来显示或隐藏模型的功能之一。然而,有时当按下F3键时,却无法正确显示模型,这可能会让用户感到困惑。模大狮将探讨这种情况发生的可能原因以及解决方法,帮助设计师们更好地理…...

C++设计模式——Adapter适配器模式
一,适配器模式简介 适配器模式是一种结构型设计模式,用于将已有接口转换为调用者所期望的另一种接口。 适配器模式让特定的API接口可以适配多种场景。例如,现有一个名为"Reader()"的API接口只能解析txt格式的文件,给这…...

Python文本处理利器:jieba库全解析
文章目录 Python文本处理利器:jieba库全解析第一部分:背景和功能介绍第二部分:库的概述第三部分:安装方法第四部分:常用库函数介绍1. 精确模式分词2. 全模式分词3. 搜索引擎模式分词4. 添加自定义词典5. 关键词提取 第…...

【C/C++】C语言如何实现类似C++的智能指针?
在C中,智能指针是为了自动化资源管理而引入的工具。比如std::unique_ptr和std::shared_ptr等,它们管理着所持有对象的生命周期,可以在智能指针被销毁时自动释放其所持有的资源。在C语言中,虽然没有直接的智能指针概念,…...

九大微服务监控工具详解
Prometheus Prometheus 是一个开源的系统监控、和报警工具包,Prometheus 被设计用来监控“微服务架构”。 主要解决: 监控和告警:Prometheus 可以对系统、和应用程序进行实时监控,并在出现问题时发送告警;数据收集和…...