vim基本命令(vi、工作模式、普通模式、插入模式、可视模式、命令行模式、复制、粘贴、插入、删除、查找、替换)
1. Vim的作用
1.1. 文本编辑
1.1.1. 基础文本编辑功能
Vim是一个功能强大的文本编辑器,它可以用来创建、修改和保存各种文本文件。无论是编写简单的文本笔记,还是复杂的代码文件,Vim都能胜任。例如,我们可以用它来编写Python脚本,编写HTML网页代码等。它支持多种文本编码格式,如UTF - 8、ASCII等。这使得Vim能够处理不同语言和地区字符的文本文件,满足了在国际化开发环境中的需求。
1.1.2. 代码编辑优势
对于程序员来说,Vim在代码编辑方面有着独特的优势。它支持语法高亮显示,能够根据不同的编程语言自动识别并高亮代码中的关键字、变量、函数等元素。比如在编辑C++代码时,类名、方法名、控制语句等会以不同的颜色显示,让代码结构一目了然。
Vim还支持代码缩进功能。它可以自动按照编程语言的规范对代码进行缩进,帮助程序员保持代码的整洁和可读性。例如,在编写Python代码时,当写完一个if
语句后按下回车键,Vim会自动将下一行代码缩进四个空格,符合Python的缩进规则。
1.2. 文件浏览和管理
1.2.1. 文件浏览
Vim内置了文件浏览器功能。用户可以在Vim中直接浏览文件系统,查看文件夹中的文件列表。这对于在编辑过程中需要快速切换到其他文件进行编辑的情况非常方便。例如,当我们在一个项目的多个源代码文件之间切换时,不需要退出Vim,就可以在Vim的文件浏览器中找到并打开需要的文件。
1.2.2. 文件管理操作
它还可以进行一些基本的文件管理操作,如复制、移动、删除文件等。这些操作可以在Vim的命令模式下完成,减少了在编辑文件过程中频繁切换到外部文件管理器的麻烦。比如,我们可以使用Vim的命令来删除一个不再需要的临时文件,而不用退出Vim去使用操作系统的文件管理工具。
1.3. 多窗口编辑
1.3.1. 分屏编辑
Vim支持多窗口编辑功能,可以将屏幕分割成多个窗口,同时打开和编辑多个文件。这对于对比不同文件的内容或者同时查看和修改多个相关文件非常有用。例如,当我们在编写一个软件项目时,可能需要同时查看头文件和源文件,通过Vim的分屏功能,可以将头文件和源文件分别放在上下两个窗口或者左右两个窗口中,方便同时对它们进行编辑。
1.3.2. 标签页功能
除了分屏,Vim还支持标签页功能。用户可以将不同的文件放在不同的标签页中,通过切换标签页来快速切换到不同的文件。这使得在编辑多个文件时,界面更加清晰,文件管理更加方便。比如,在处理一个包含多个配置文件和代码文件的项目时,可以将每个文件放在单独的标签页,通过点击标签页快速定位到需要编辑的文件。
2. Vim的原理
2.1. 工作模式
2.1.1. 普通模式(Normal mode)
这是Vim启动后的默认模式。在这个模式下,键盘上的大部分按键都被定义为命令,而不是用来输入文本。例如,按下h
键表示光标向左移动,j
键表示光标向下移动等。这种设计使得用户可以通过快捷键快速进行光标移动、文本删除、复制等操作,大大提高了编辑效率。
快捷键 | 功能描述 |
---|---|
h | 光标向左移动一个字符 |
j | 光标向下移动一行 |
k | 光标向上移动一行 |
l | 光标向右移动一个字符 |
🌟gg | 跳转到文件的第一行 |
🌟G | 跳转到文件的最后一行 |
数字 + G | 跳转到指定行号的行,例如10G 跳转到第10行 |
🌟i | 进入插入模式,在当前光标位置插入文本 |
🌟o | 进入插入模式,在光标所在行的下一行插入文本 |
O | 进入插入模式,在光标所在行的上一行插入文本 |
🌟x | 删除光标所在位置的字符 |
🌟dd | 删除光标所在的一整行 |
D | 删除从光标位置到行尾的文本 |
🌟yy | 复制光标所在的一行文本 |
🌟p | 粘贴复制的文本到光标所在位置的下一行 |
🌟u | 撤销上一次的编辑操作 |
Ctrl + r | 重做上一次撤销的编辑操作 |
🌟/查找文本 | 查找文件中的文本内容,按回车键后光标会移动到找到的第一个匹配位置 |
🌟n | 查找下一个匹配项 |
🌟N | 查找上一个匹配项 |
🌟:w | 保存文件(在命令行模式下输入) |
🌟:wq | 保存文件并退出Vim(在命令行模式下输入) |
🌟:q | 退出Vim(如果文件有未保存的修改,会提示不能退出)(在命令行模式下输入) |
🌟:q! | 强制退出Vim,不保存文件的修改(在命令行模式下输入) |
🤔 𝑸𝒖𝒆𝒔𝒕𝒊𝒐𝒏:使用/查找模式后,按Enter开始搜索吗?如何退出呢?
🥳 𝑨𝒏𝒔𝒘𝒆𝒓:在Vim中使用
/
查找模式时,操作流程和退出方法如下:
开始搜索
- 进入查找模式:在普通模式下,按下
/
键,这将使Vim进入查找模式。此时,Vim的底部会出现一个输入框,等待我们输入要查找的文本内容。- 输入查找内容并回车:在底部的输入框中输入我们想要查找的文本,例如输入
error
来查找文档中所有的error
文本。输入完成后,按下Enter
键开始搜索。Vim会将光标移动到找到的第一个匹配位置,并且匹配的文本通常会高亮显示。退出查找模式:在完成查找操作后,有几种方法可以退出查找模式并返回到普通模式:
- 按
Esc
键:直接按下Esc
键可以退出查找模式,光标会停留在当前匹配位置,Vim回到普通模式。这是最直接的退出方式。- 按
Enter
键:如果我们已经查看了当前匹配项,并且想要快速回到普通模式,再次按下Enter
键也可以退出查找模式。不过,这种方式可能会因Vim的配置或版本而有所不同,在某些情况下可能需要先按Esc
键。- 使用查找快捷键:在查找模式下,我们可以使用
n
键查找下一个匹配项,使用N
键查找上一个匹配项。当我们通过这些键查看完所有匹配项后,按Esc
键退出查找模式。这种方式在我们想要浏览所有匹配项时非常有用。总之,使用
/
查找模式后,按Enter
键开始搜索,通过按Esc
键可以退出查找模式并返回到普通模式。在查找过程中,使用n
和N
键可以方便地在匹配项之间切换。
🤔 𝑸𝒖𝒆𝒔𝒕𝒊𝒐𝒏:查找模式没有高亮怎么办?
🥳 𝑨𝒏𝒔𝒘𝒆𝒓:如果在Vim中使用查找模式时没有高亮显示,可以按照以下步骤解决:
临时设置高亮显示:
- 进入命令行模式:在普通模式下,按下
:
键进入命令行模式。- 设置高亮显示:输入
set hlsearch
并按Enter
键。这将使当前文档中的查找结果高亮显示。永久设置高亮显示:
- 编辑
.vimrc
文件:打开终端,输入vim ~/.vimrc
命令来编辑.vimrc
文件。如果该文件不存在,Vim会自动创建一个。- 添加高亮显示设置:在
.vimrc
文件中添加以下行:set hlsearch
- 保存并退出:按
Esc
键,然后输入:wq
并按Enter
键保存并退出。取消高亮显示:
临时取消高亮显示:在命令行模式下,输入
:nohlsearch
或:noh
并按Enter
键。这将临时取消当前文档中的查找结果高亮显示。永久取消高亮显示:如果我们希望每次启动Vim时都不高亮显示查找结果,可以在
.vimrc
文件中添加以下行:set nohlsearch
,保存并退出.vimrc
文件。
2.1.2. 插入模式(Insert mode)
当用户需要输入文本时,需要从普通模式切换到插入模式。在插入模式下,键盘上的按键就像普通文本编辑器一样,用来输入字符。用户可以通过按i
键从普通模式进入插入模式。例如,当我们需要在文档中添加一段新的文字描述时,就可以进入插入模式进行输入。
快捷键 | 功能描述 |
---|---|
🌟Esc | 退出插入模式,返回到普通模式 |
Ctrl + [ | 同Esc键,退出插入模式,返回到普通模式 |
🌟Ctrl + o | 暂时退出插入模式,执行一个普通模式的命令后立即返回插入模式 |
Ctrl + u | 删除插入模式下当前行光标之前的内容 |
🌟Ctrl + w | 删除插入模式下光标前的一个单词 |
Ctrl + h | 删除插入模式下光标前的一个字符,相当于Backspace键 |
Ctrl + i | 插入一个Tab字符 |
🌟Ctrl + t | 在当前缩进级别上增加一个缩进(通常用于编程语言的代码缩进) |
🌟Ctrl + d | 在当前缩进级别上减少一个缩进 |
Ctrl + r + 寄存器名 | 插入寄存器中的内容,例如Ctrl + r + a 插入寄存器a的内容 |
Ctrl + y | 在插入模式下,从普通模式复制的内容可以使用此快捷键粘贴到当前光标位置的上一行 |
Ctrl + e | 在插入模式下,从普通模式复制的内容可以使用此快捷键粘贴到当前光标位置的下一行 |
Ctrl + n | 在插入模式下,进行单词补全(向下匹配) |
Ctrl + p | 在插入模式下,进行单词补全(向上匹配) |
2.1.3. 可视模式(Visual mode)
可视模式用于选择文本。用户可以通过在普通模式下按v
键进入普通可视模式,按V
键进入行可视模式,按Ctrl - v
键进入块可视模式。在可视模式下,可以通过移动光标来选择文本区域,然后对选中的文本进行复制、删除等操作。比如,要复制一段连续的代码,就可以先在可视模式下选中这段代码,然后使用复制命令。
快捷键 | 功能描述 |
---|---|
🌟v | 进入普通可视模式,可以选择任意文本 |
V | 进入行可视模式,可以选择整行 |
Ctrl + v | 进入块可视模式,可以选择列块 |
h | 向左扩展选择区域一个字符 |
j | 向下扩展选择区域一行 |
k | 向上扩展选择区域一行 |
l | 向右扩展选择区域一个字符 |
🌟gg | 扩展选择区域到文件的第一行 |
🌟G | 扩展选择区域到文件的最后一行 |
H | 扩展选择区域到屏幕的顶部 |
M | 扩展选择区域到屏幕的中间 |
L | 扩展选择区域到屏幕的底部 |
🌟0 | 扩展选择区域到行首 |
^ | 扩展选择区域到行首的第一个非空白字符 |
🌟$ | 扩展选择区域到行尾 |
w | 扩展选择区域到下一个单词的开始 |
🌟e | 扩展选择区域到当前单词的末尾 |
b | 扩展选择区域到上一个单词的开始 |
gg0 | 扩展选择区域到文件的开头 |
G$ | 扩展选择区域到文件的末尾 |
o | 跳转到选择区域的另一端 |
O | 跳转到选择区域的另一端,并保持光标在行首 |
: | 进入命令行模式,对选中的文本执行命令,如 :s/old/new/ 替换选中的文本 |
🌟d | 删除选中的文本 |
c | 修改选中的文本,进入插入模式 |
🌟y | 复制选中的文本到默认寄存器 |
🌟p | 粘贴寄存器中的内容到选中的文本位置 |
🌟u | 撤销对选中区域的上一次操作 |
Ctrl + r | 重做对选中区域的上一次撤销操作 |
🌟Esc | 退出可视模式,返回到普通模式 |
🤔 𝑸𝒖𝒆𝒔𝒕𝒊𝒐𝒏:如果我想任意复制,是不是应该用可视模式?
🥳 𝑨𝒏𝒔𝒘𝒆𝒓:是的,如果我们需要任意选择并复制文本,使用可视模式(Visual mode)会更加灵活和直观。可视模式允许我们通过移动光标来选择文本区域,然后进行复制、删除、修改等操作。
假设我们有以下文本:
Hello world, this is a test. This is another line of text.
进入普通可视模式
- 将光标移动到
world
这个单词的任意位置。- 按
v
进入普通可视模式。选择文本
- 按
w
选择world,
。- 按
w
再次选择this
。- 按
e
选择is
。复制选中的文本
- 按
y
复制选中的文本world, this is
到默认寄存器。退出可视模式
- 按
Esc
退出可视模式,返回到普通模式。粘贴文本
- 将光标移动到我们想要粘贴的位置。
- 按
p
粘贴选中的文本。通过使用可视模式,我们可以非常灵活地选择任意文本区域,并进行复制、删除、修改等操作。这使得文本编辑更加直观和高效。
2.1.4. 命令行模式(Command - line mode)
在命令行模式下,用户可以输入Vim的命令行命令。通过在普通模式下按:
键可以进入命令行模式。例如,要保存文件,可以在命令行模式下输入:w
命令;要退出Vim,可以输入:q
命令。命令行模式是Vim进行复杂操作和配置的重要入口。
快捷键 | 功能描述 |
---|---|
🌟: | 从普通模式进入命令行模式 |
🌟Esc | 从命令行模式返回到普通模式,不执行当前输入的命令 |
Ctrl + c | 从命令行模式返回到普通模式,不执行当前输入的命令(与 Esc 相同效果) |
Ctrl + u | 清除命令行中已输入的内容 |
Ctrl + w | 删除命令行中光标前的一个单词 |
Ctrl + h | 删除命令行中光标前的一个字符(相当于 Backspace 键) |
Ctrl + r | 在命令行中插入寄存器的内容,例如 Ctrl + r + a 插入寄存器 a 的内容 |
Ctrl + y | 在命令行中插入上一个命令行历史中的内容 |
Ctrl + n | 在命令行中插入下一个命令行历史中的内容 |
Ctrl + p | 在命令行中插入上一个命令行历史中的内容(与 Ctrl + y 相同效果) |
Ctrl + e | 将光标移动到命令行的末尾 |
Ctrl + a | 将光标移动到命令行的开头 |
Up | 浏览命令行历史,显示上一个命令 |
Down | 浏览命令行历史,显示下一个命令 |
Enter | 执行命令行中输入的命令 |
Tab | 自动补全命令行中的命令或文件名 |
🌟:%s/旧文本/新文本/ | 替换文本(一次) |
🌟:%s/旧文本/新文本/g | 替换文本(全部) |
⚠️在替换文本的操作下,如果提示模式错误,请使用
:%s/旧文本/新文本/
假设你有以下文本:
Hello world, this is a test.
This is another line of text.
This is a third line.
This is a fourth line.
This is a fifth line.
-
进入命令行模式
- 按
:
键进入命令行模式。
- 按
-
输入命令
- 输入
:w
保存文件。 - 输入
:q
退出Vim。 - 输入
:wq
保存文件并退出Vim。 - 输入
:s/old/new/
替换文件中的文本。
- 输入
-
使用快捷键
- 按
Ctrl + u
清除已输入的命令。 - 按
Ctrl + w
删除光标前的一个单词。 - 按
Ctrl + h
删除光标前的一个字符。 - 按
Up
和Down
浏览命令行历史。 - 按
Enter
执行当前输入的命令。
- 按
2.2. 缓冲区和寄存器
2.2.1. 缓冲区(Buffer)
Vim内部使用缓冲区来存储打开的文件内容。每个打开的文件都有一个对应的缓冲区。当用户对文件进行编辑时,实际上是修改缓冲区中的内容。只有当用户执行保存操作时,缓冲区中的内容才会写入到磁盘上的文件中。这种设计使得编辑操作更加灵活,用户可以在编辑过程中随时进行撤销、重做等操作,而不用担心文件内容的丢失。
2.2.2. 寄存器(Register)
寄存器用于存储文本片段,方便用户在编辑过程中进行复制、粘贴等操作。Vim有多个寄存器,包括默认寄存器、命名寄存器等。例如,当用户使用yy
命令(在普通模式下)复制一行文本时,复制的文本会被存储到默认寄存器中。然后,用户可以通过p
命令(粘贴命令)将寄存器中的内容粘贴到其他位置。寄存器的使用使得文本的移动和复制更加高效。
3. Vim的常用方法
3.1. 文件操作
3.1.1. 打开文件
使用命令vim 文件名
可以在终端中打开指定的文件。如果文件不存在,Vim会创建一个新文件。例如,要打开一个名为example.txt
的文件,就在终端输入:
# 使用vim打开文件,语法为:vim <filepath>
vim example.txt
3.1.2. 保存文件
在命令行模式下,输入:w
命令可以保存文件。如果要保存文件并退出Vim,可以输入:wq
命令。如果只是想退出Vim而不保存文件,可以输入:q!
命令。这些命令使得文件的保存和退出操作非常灵活。
# 保存内容(不退出)
:w# 保存并退出
:wq# 没有对文件修改,直接退出
:q# 不保存强制退出
:q!
3.1.3. 查看文件内容
在普通模式下,可以通过移动光标来查看文件内容。使用h, j, k, l
键可以分别实现光标向左、向下、向上、向右移动。还可以使用gg
命令跳转到文件的第一行,G
命令跳转到文件的最后一行,快速浏览文件的开头和结尾。
3.2. 文本编辑
3.2.1. 插入文本
在普通模式下,按i
键进入插入模式,就可以开始输入文本。如果要从当前光标位置的下一行开始输入文本,可以按o
键;要从当前光标位置的上一行开始输入文本,可以按O
键。这些命令使得文本的插入位置更加精确。
3.2.2. 删除文本
在普通模式下,按x
键可以删除光标所在位置的字符。按dd
键可以删除光标所在的一整行。如果要删除从光标位置到行尾的文本,可以按D
键。这些删除命令可以根据需要删除不同范围的文本。
3.2.3. 复制和粘贴文本
按yy
键可以复制光标所在的一行文本,按p
键可以将复制的文本粘贴到光标所在位置的下一行。如果要复制多行文本,可以先按数字键指定行数,再按yy
键。例如,3yy
表示复制光标所在位置的当前行以及下面的两行。然后使用p
键粘贴这些文本。
3.3. 查找和替换
3.3.1. 查找文本
在普通模式下,按/
键可以进入查找模式,然后输入要查找的文本内容,按回车键进行查找。Vim会高亮显示找到的文本内容,并将光标移动到找到的第一个匹配位置。按n
键可以查找下一个匹配项,按N
键可以查找上一个匹配项。这种查找功能非常方便,可以帮助用户快速定位到文件中特定的文本内容。
3.3.2. 替换文本
在命令行模式下,可以使用:s/旧文本/新文本/
命令来替换文本。这个命令会将当前行中第一个匹配的旧文本替换为新文本。如果要替换整行中的所有匹配项,可以使用:s/旧文本/新文本/g
命令。例如,:s/dog/cat/
会将当前行中的第一个dog
替换为cat
,:s/dog/cat/g
会将当前行中所有的dog
都替换为cat
。
# 替换一次
:%s/旧文本/新文本/# 全部替换
:%s/旧文本/新文本/g
⚠️在替换文本的操作下,如果提示模式错误,请使用
:%s/旧文本/新文本/
4. Vim的快捷键
4.1. 普通模式快捷键
- 光标移动
h
:光标向左移动一个字符。j
:光标向下移动一行。k
:光标向上移动一行。l
:光标向右移动一个字符。gg
:跳转到文件的第一行。G
:跳转到文件的最后一行。数字 + G
:跳转到指定行号的行。例如,10G
跳转到第10行。
- 文本编辑
i
:进入插入模式,在当前光标位置插入文本。o
:进入插入模式,在光标所在行的下一行插入文本。O
:进入插入模式,在光标所在行的上一行插入文本。x
:删除光标所在位置的字符。dd
:删除光标所在的一整行。D
:删除从光标位置到行尾的文本。yy
:复制光标所在的一行文本。p
:粘贴复制的文本到光标所在位置的下一行。u
:撤销上一次的编辑操作。Ctrl + r
:重做上一次撤销的编辑操作。
4.2. 命令行模式快捷键
-
文件操作
:w
:保存文件。:wq
:保存文件并退出Vim。:q
:退出Vim(如果文件有未保存的修改,会提示不能退出)。:q!
:强制退出Vim,不保存文件的修改。
-
查找和替换
/查找文本
:查找文件中的文本内容,按回车键后光标会移动到找到的第一个匹配位置。n
:查找下一个匹配项。N
:查找上一个匹配项。:s/旧文本/新文本/
:替换当前行中第一个匹配的旧文本为新文本。:s/旧文本/新文本/g
:替换当前行中所有匹配的旧文本为新文本。
⚠️在替换文本的操作下,如果提示模式错误,请使用
:%s/旧文本/新文本/
5. 参考
- KIMI
相关文章:
vim基本命令(vi、工作模式、普通模式、插入模式、可视模式、命令行模式、复制、粘贴、插入、删除、查找、替换)
1. Vim的作用 1.1. 文本编辑 1.1.1. 基础文本编辑功能 Vim是一个功能强大的文本编辑器,它可以用来创建、修改和保存各种文本文件。无论是编写简单的文本笔记,还是复杂的代码文件,Vim都能胜任。例如,我们可以用它来编写Python脚…...
Qt 自动根据编译的dll或exe 将相关dll文件复制到目标文件夹
Qt 自动根据编译的dll或exe 将相关dll文件复制到目标文件夹 如果你在使用 windeployqt 时遇到错误 “windeployqt 不是内部或外部命令”,说明你的命令行环境没有正确配置 Qt 工具路径。windeployqt 是 Qt 工具的一部分,它用于自动将所有必要的 Qt 库和插…...

探索新能源汽车“芯”动力:AUTO TECH China 2025广州国际新能源汽车功率半导体技术展盛况空前
广州,2025年11月20日 —— 在全球新能源车市场蓬勃发展的背景下,AUTO TECH China 2025 广州国际新能源汽车功率半导体技术展览会将于2025年11月20-22日在广州保利世贸博览馆盛大开幕。此次展会作为亚洲领先的车用功率半导体技术专业盛会,本…...

Kafka权威指南(第2版)读书笔记
目录 Kafka生产者——向Kafka写入数据生产者概览创建Kafka生产者bootstrap.serverskey.serializervalue.serializer 发送消息到Kafka同步发送消息 Kafka生产者——向Kafka写入数据 不管是把Kafka作为消息队列、消息总线还是数据存储平台,总是需要一个可以往Kafka写…...
WORD转PDF脚本文件
1、在桌面新建一个文本文件,把下列代码复制到文本文件中。 On Error Resume Next Const wdExportFormatPDF 17 Set oWord WScript.CreateObject("Word.Application") Set fso WScript.CreateObject("Scripting.Filesystemobject") Set fdsf…...
electron 打包后的 exe 文件,运行后是空白窗口
一、代码相关问题 1. 页面加载失败 1.1 原因 在 Electron 应用中,若loadFile或loadURL方法指定的页面路径或 URL 错误,就无法正确加载页面,导致窗口空白。 1.2. 解决 仔细检查loadFile或loadURL方法中传入的路径或 URL 是否正确…...
数据库重连 - 方案
要解决 SQL Server 连接失效后导致的错误问题,可以考虑以下几种解决方案: 1. 连接池机制: 通过实现一个连接池,确保连接失效后可以重新建立连接,而不会直接导致整个程序出错。连接池可以帮助在连接中断时自动恢复连接,而不必每次手动重连。 例如,可以通过以下方式定期…...
从 PostgreSQL 中挽救损坏的表
~/tmp-dir.dab4fd85-8b47-4d9a-b15c-18312ef61075 pg_dump -U postgres -h locathost www_p1 > wow_p1.sqlpg_dump:错误:转储表 “page_views” 的内容失败:PQgetResult() 失败。pg_dump:详细信息:来自服务器的错误…...

【Vue3 入门到实战】1. 创建Vue3工程
目录 编辑 1. 学习目标 2. 环境准备与初始化 3. 项目文件结构 4. 写一个简单的效果 5. 总结 1. 学习目标 (1) 掌握如何创建vue3项目。 (2) 了解项目中的文件的作用。 (3) 编辑App.vue文件,并写一个简单的效果。 2. 环境准备与初始化 (1) 安装 Node.js 和 …...

rtthread学习笔记系列(10/11) -- 系统定时器
文章目录 10. 系统定时器10.1 跳跃表[定时器跳表 (Skip List) 算法](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/timer/timer?id定时器跳表-skip-list-算法) 10.2 硬件定时器10.2.1 初始化&&删除10.2.2 sta…...

mock服务-通过json定义接口自动实现mock服务
go-mock介绍 不管在前端还是后端开发过程中,当我们需要联调其他服务的接口,而这个服务还没法提供调用时,那我们就要用到mock服务,自己按接口文档定义一个临时接口返回指定数据,以供本地开发联调测试。 怎么快速启动一…...

像JSONDecodeError: Extra data: line 2 column 1 (char 134)这样的问题怎么解决
问题介绍 今天处理返回的 JSON 的时候,出现了下面这样的问题: 处理这种问题的时候,首先你要看一下当前的字符串格式是啥样的,比如我查看后发现是下面这样的: 会发现这个字符串中间没有逗号,也就是此时的J…...
C#版 软件开发6大原则与23种设计模式
开发原则和设计模式一直是软件开发中的圣经, 但是这仅仅适用于中大型的项目开发, 在小型项目的开发中, 这些规则会降低你的开发效率, 使你的工程变得繁杂. 所以只有适合你的才是最好的. 设计模式六大原则1. 单一职责原则(Single Responsibility Principle࿰…...

java8 springboot 集成javaFx 实现一个客户端程序
1. 先创建一个springboot 程序(此步骤不做流程展示) 2. 更改springboot的版本依赖和导入所需依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.7</versio…...

MySQL(高级特性篇) 06 章——索引的数据结构
一、为什么使用索引 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比一本教科书的目录部分,通过目录找到对应文章的页码,便可快速定位到需要的文章。MySQL中也是一样的道理,进行数据查找时,首先查看查询条件…...
PanWeidb-使用BenchmarkSQL对磐维数据库进行压测
本文提供PanweiDb使用BenchmarkSQL进行性能测试的方法和测试数据报告。 BenchmarkSQL,一个JDBC基准测试工具,内嵌了TPC-C测试脚本,支持很多数据库,如PostgreSQL、Oracle和Mysql等。 TPC-C是专门针对联机交易处理系统(OLTP系统)的规范,一般情况下我们也把这类系统称为业…...
AR 在高校实验室安全教育中的应用
AR应用APP可以内置实验室安全功能介绍,学习并考试(为满足教育部关于实验室人员准入条件),AR主模块。其中AR主模块应该包括图形标识码的扫描,生成相应模型,或者火灾、逃生等应急处置的路线及动画演示。考试采…...

微信小程序实现个人中心页面
文章目录 1. 官方文档教程2. 编写静态页面3. 关于作者其它项目视频教程介绍 1. 官方文档教程 https://developers.weixin.qq.com/miniprogram/dev/framework/ 2. 编写静态页面 mine.wxml布局文件 <!--index.wxml--> <navigation-bar title"个人中心" ba…...
Spring Boot中的配置文件有哪些类型
在 Spring Boot 中,配置文件用于管理应用程序的设置和参数,通常存放在项目的 src/main/resources 目录下。Spring Boot 支持多种类型的配置文件,并通过这些文件来控制应用的行为和环境配置。 1. application.properties application.proper…...
Spring Boot 项目启动后自动加载系统配置的多种实现方式
Spring Boot 项目启动后自动加载系统配置的多种实现方式 在 Spring Boot 项目中,可以通过以下几种方式实现 在项目启动完成后自动加载系统配置缓存操作 的需求: 1. 使用 CommandLineRunner CommandLineRunner 是一个接口,可以用来在 Spring…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...

3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
Java求职者面试指南:计算机基础与源码原理深度解析
Java求职者面试指南:计算机基础与源码原理深度解析 第一轮提问:基础概念问题 1. 请解释什么是进程和线程的区别? 面试官:进程是程序的一次执行过程,是系统进行资源分配和调度的基本单位;而线程是进程中的…...

云原生安全实战:API网关Kong的鉴权与限流详解
🔥「炎码工坊」技术弹药已装填! 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关(API Gateway) API网关是微服务架构中的核心组件,负责统一管理所有API的流量入口。它像一座…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...