当前位置: 首页 > news >正文

基础开发工具-编辑器vim

vim操作键盘图

下图是比较基础的vim操作键盘图 (IDE例子)

  • vi/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,⽽且还有⼀些新的特性在⾥⾯。例如语法加亮,可视化操作不仅可以在终端运⾏,也可以运⾏于x window、 mac os、 windows。

vim的基本概念

vim本质是一款多模式的编辑器,vim是所有Linux操作系统自带的,是一款使用成本,配置成本比较高的编辑器,在操作上,也就是说虽然前期比较不好上手,但是学熟后,也就没有什么编辑器可以为难到我们了,在配置上还有一款更复杂的:VSCode。

vim的三种模式(其实有好多模式,⽬前掌握这3种即可),分别是命令模式(command mode)、插⼊模式(Insert mode)和底⾏模式(last line mode),各模式的功能区分如下:

  • 正常/普通/命令模式(Normal mode)

控制屏幕光标的移动,字符、字或⾏的删除,移动复制某区段及进⼊Insert mode下,或者到 lastline mode(是一种指令的快捷方式)

  • 插⼊模式(Insert mode)

只有在Insert mode下,才可以做⽂字输⼊,按「ESC」键可回到命令⾏模式。该模式是我们后⾯⽤的最频繁的编辑模式。

  • 末⾏模式(last line mode)

⽂件保存或退出,也可以进⾏⽂件替换,找字符串,列出⾏号等操作。在命令模式下,*shift+:* 即可进⼊该模式。要查看你的所有模式:打开 vim,底⾏模式直接输⼊:help vim-modes

  • 我这⾥⼀共有12种模式:six BASIC modes和six ADDITIONAL modes.
关系转换图

vim的基本操作 

我们刚开始使用vim,一个裸的vim进行代码的编写,他是没有经过任何配置的,最多会给我们带一点点语法提醒;补全,提示,语法报错是完全没有的。

下面我们演示一下:

我们touch一个code.c文件,并代开code.c进行编辑:

lfz@hcss-ecs-ff0f:~/lesson/code$ touch code.c
lfz@hcss-ecs-ff0f:~/lesson/code$ vim code.c

我们刚开始进入vim的时候是命令模式,我们想要进行编辑代码需要切换成插入模式,最简单的切换方法是:输入 i 就可以啦!(简单的切换就是上面那张图示)(想要推出的话切换成底行模式,输入wq:w是保存,q是退出)

我们可以不通过touch一个文件,我们直接vim就能创建一个新的文件,但是如果什么都不写,按q,该文件不会创建,如果什么都不写,wq后,是会创建一个空文件;

我们应该注意的是:我们无法从插入模式直接切换到底行模式 

其实命令模式是很重要的;和在我们使用Ctrl+c/v的操作,这种快捷键一样,本质就是对应vim的命令模式:

就假如当前处于命令模式下,当前光标在第7行(我们可以使用底行模式:set nu/nonu 来设置/取消行号)我们可以:

gg:使光标直接回到第一行(初始位)

Shift+g=G:使光标直接回到第一行

指定行+G:使光标定位到指定行

Shift+4=$:直接定位到结尾

命令模式切换到插入模式

  • i:在当前光标之前插入字符
  • I:在行首插入字符
  • a:在当前光标之后插入字符
  • A:在行末插入字符
  • o:在下一行新建一行并且插入字符
  • O:在上一行新建一行并且插入字符

命令模式下的文本编辑

  • dd:剪切当前行(剪切后不粘贴即为删除)
  • 数字+dd:删除从当前行开始的几行
  • yy:复制当前行
  • 数字+yy:从当前行开始复制几行
  • p:粘贴到光标的下一行
  • D:剪切从光标处到行末的字符
  • d0:剪切从当前光标开始到行首的字符
  • x:删除当前光标所指的字符
  • X:删除当前光标之前的一个字符
  • Shift+~:字母大小写的转换

命令模式下的撤销与导航

  • u:撤销
  • Ctrl+r:反撤销
  • Ctrl+f:向下翻一页
  • Ctrl+b:向上翻一页
  • Ctrl+u:向上翻半屏
  • Ctrl+d:向下翻半屏
  • H:调到屏幕的第一行
  • M:调到屏幕的中央一行
  • L:调到屏幕的最后一行
  • h:向左移动光标
  • j:向下移动光标
  • k:向上移动光标
  • l:向右移动光标
  • G:调到整个代码的最后一行
  • 数字+G:调到整个代码的指定行
  • gg:调到整个代码的第一行
  • w:跳到下一个单词开头
  • b:跳到上一个单词开头

命令模式下的文本选择与缩进

  • v:按照字符来一个一个选择代码片段
  • V:按照行来选择代码片段(以上两个是用来重命令模式转为视图模式的V-BLOCK,返回也是通过Esc)

通过hjkl进行区域的选择,在通过Shift+i=I就转换到了插入模式,再通过Esc返回命令模式,这样可以达到批量化注释的效果。

当让也可在不进入插入模式下,使用命令模式当中的快捷键进行批量化处理:就比如V后进行配量化选择,再对选择的范围输入d,就可以进行删除选中的nei'r

  • <<:将选中的片段整体左移
  • >>:将选中的片段整体右移
  • {:跳到上一个代码段
  • }:跳到下一个代码段

命令模式下的替换与搜索

  • r:替换一个字符
  • R:替换一段字符(其实这是一种模式:替换模式(进入替换模式(REPLACE):Ctrl+r;退回命令模式:Esc))
  • /+搜索内容:搜索指定内容,并且高亮
  • n:往下走一个搜索对象
  • N:往上走一个搜索对象

命令模式下的保存与退出

  • Shift+zz:保存并且退出

底行模式下的替换

  • :%s/123/abc/g:将代码中所有的123替换成abc
  • :数字,数字s/123/abc/g:将数字指定的行之间的123全部替换成abc

底行模式下

  • 执行命令

输入 : 进入底行模式,可以在这里输入单个或多个命令。

  • 保存文件

:w:保存当前文件。

:wq 或 :x:保存文件并退出 Vim。

  • 退出 Vim

:q:退出 Vim,如果文件被修改过,会提示保存。

:q!:强制退出 Vim,不保存修改。

  • 查找替换

:s/old/new/g:将当前行中的“old”替换为“new”,g 表示全局替换。

:%s/old/new/g:将整个文件中的“old”替换为“new”。

:数字,数字s/123/abc/g:将数字指定的行之间的123全部替换成abc

  • 跳转到行

:数字:跳转到指定行号,例如 :10 跳转到第10行。

  • 设置选项

:set nu:显示行号。

:set nonu:关闭行号显示。

  • 执行外部命令

:!命令:在 Vim 内部执行外部命令,例如 :!ls 列出目录内容。

  • 搜索内容

/搜索内容:向下搜索指定内容。

?搜索内容:向上搜索指定内容。

  • 删除行

:数字d:删除指定行号的行,例如 :10d 删除第10行。

  • 复制和移动行

:数字m数字:将指定行移动到另一行号,例如 :10m20 将第10行移动到第20行。

:数字t数字:将指定行复制到另一行号,例如 :10t20 将第10行复制到第20行。

  • 折叠代码

:fold:创建一个折叠。

:foldopen:打开一个折叠。

  • 执行宏

:@寄存器:执行寄存器中的宏,例如 :@a 执行寄存器 a 中的宏。

  • 分屏操作:

:vs 文件名:进行分屏的多模块操作,编辑代码

对于多窗口,光标在哪一个窗口,那么所执行的操作是对应的窗口,那我们怎么进行窗口操作进行光标切换呢?

最简单的做法是:Ctrl+w+w(Ctrl按住别动,w按两下)(在命令模式下)

有了上面的做法,当然就可以进行窗口间的互相编写,命令的交接使用,比如左窗口代码拷贝到右窗口。

使用vim的一个小技巧:

vim 文件 +n:上次光标+n行,打开文件就是到达原来光标位置+n行对应的光标位置;

!关键字:执行最近一次含有该关键字的指令。

vim的配置

在我们的普通用户,也就是自己创建的,使用的账号下,会存在一些隐藏文件,其中有一个文件叫做:.vimrc

lfz@hcss-ecs-ff0f:~$ ls -al
total 60
drwxr-x--- 4 lfz  lfz   4096 Dec 14 19:06 .
drwxr-xr-x 4 root root  4096 Oct  8 23:34 ..
-rw------- 1 lfz  lfz  12418 Dec 13 16:09 .bash_history
-rw-r--r-- 1 lfz  lfz    220 Oct  3 15:14 .bash_logout
-rw-r--r-- 1 lfz  lfz   3771 Oct  3 15:14 .bashrc
-rw------- 1 lfz  lfz     20 Dec 12 19:10 .lesshst
drwxrwxr-x 5 lfz  lfz   4096 Dec 12 19:04 lesson
drwxrwxr-x 3 lfz  lfz   4096 Oct  3 19:54 .local
-rw-r--r-- 1 lfz  lfz    807 Oct  3 15:14 .profile
-rw-r--r-- 1 lfz  lfz      0 Oct  3 15:42 .sudo_as_admin_successful
-rw------- 1 lfz  lfz  12042 Dec 14 19:06 .viminfo

这里我们可以自己touch一个.vimrc文件:

lfz@hcss-ecs-ff0f:~$ touch .vimrc

然后我们通过vim默认打开.vimrc文件:

lfz@hcss-ecs-ff0f:~$ vim .vimrc

接下来我们就可以通过对.vimrc的文件编辑进行对该用户(lfz)的vim工具的配置

我们需要在.vimrc中编辑配置信息,比如配置信息:

set nu

然后我们保存退出后(wq),再打开(vim)文件,就直接显示行号了。

我们通过:

lfz@hcss-ecs-ff0f:~$ which vim
/usr/bin/vim

可以发现,其实vim是我们在/user/bin/vim目录下给我们安装的一款软件,使用vim,就是把该目录进行打开了,该软件在默认情况下,会自动在你当前用户的home目录里搜索配置文件.vimrc,如果没有,vim就使用默认行为,如果有,vim在打开时就会读取.vimrc这个配置文件来进行配置,在.vimrc文件,我们想要注释掉信息的话,使用  " :(如下例子)

  1 "set nu

这样,我们再次通过vim打开文件就不会再直接显示行号了。

还有系统默认,全局公用的vimrc,这是默认存在的,不管在普通用户还是root用户,我们在Ubuntu下,可以打开该文件进行了解:

lfz@hcss-ecs-ff0f:~$ vim /etc/vim/vimrc

我们推荐的是配置自己home目录下的.vimrc就行,由于权限的存在,该配置文件只有我这个用户(lfz)可以使用,这样就不会影响到其他普通用户。 

我们可以在网上找几个配置项,下面是我的配置项,可以参考参考的,如果愿意的话:

我的系统版本是:

lfz@hcss-ecs-ff0f:~$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.4 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy
lfz@hcss-ecs-ff0f:~$ cat /etc/issue
Ubuntu 22.04.4 LTS \n \l

配置项:(about:Ubuntu)

在此之前:

Vim-Plug未安装.vimrc 文件中使用了Vim-Plug作为插件管理器,如果您的系统中没有安装Vim-Plug,那么插件将无法安装。您可以通过以下命令安装Vim-Plug:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

手动安装 gruvbox: 如果 Vim-Plug 没有成功安装 gruvbox,你可以尝试手动安装它。使用以下命令克隆 gruvbox 仓库到你的 Vim 插件目录:

git clone https://github.com/morhetz/gruvbox.git ~/.vim/plugged/gruvbox

手动复制颜色文件:如果gruvbox插件已经安装,但是Vim仍然无法找到颜色方案,你可以尝试手动将gruvbox.vim文件复制到~/.vim/colors目录下。

mkdir -p ~/.vim/colors
cp ~/.vim/plugged/gruvbox/colors/gruvbox.vim ~/.vim/colors/

打开.vimrc配置:

" 基本设置
set nocompatible              " 必须
syntax enable                " 启用语法高亮
set background=dark           " 背景色
colorscheme gruvbox          " 颜色方案" 界面设置
set number                    " 显示行号
"set relativenumber            " 显示相对行号
set cursorline                " 高亮当前行
set nowrap                    " 不自动换行
set linebreak                 " 在换行处断行
set autoread                  " 文件在外部被修改后自动重新读取
set mouse=a                   " 启用鼠标支持
set clipboard=unnamedplus     " 允许vim使用系统剪贴板
set expandtab                 " 将制表符展开为空格
set tabstop=4                 " 设置制表符宽度为4
set shiftwidth=4              " 设置缩进宽度为4
set softtabstop=4             " 设置软制表符宽度为4
set list                      " 显示特殊字符
set listchars=tab:▸\ ,eol:¬,trail:⋅,extends:❯,precedes:❮
set wildmenu                  " 增强命令行自动补全
set wildmode=list:longest,full
set scrolloff=3               " 保持三行距离
set sidescrolloff=15          " 侧边滚动距离
set foldmethod=indent         " 代码折叠方式
set foldlevel=1               " 默认折叠级别
set laststatus=2              " 总是显示状态栏
"set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P" 插件管理
call plug#begin('~/.vim/plugged')Plug 'preservim/nerdtree'         " 文件浏览器Plug 'Xuyuanp/nerdtree-git-plugin' " NERDTree的git插件Plug 'airblade/vim-gitgutter'      " GitGutterPlug 'vim-airline/vim-airline'     " 状态栏增强Plug 'vim-airline/vim-airline-themes'Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }Plug 'junegunn/fzf.vim'Plug 'tpope/vim-fugitive'Plug 'jiangmiao/auto-pairs'Plug 'godlygeek/tabular'Plug 'AndrewRadev/splitjoin.vim'Plug 'tomtom/tcomment_vim'Plug 'sbdchd/neoformat'Plug 'junegunn/vim-easy-align'Plug 'terryma/vim-multiple-cursors'Plug 'tpope/vim-surround'Plug 'preservim/vim-commentary'Plug 'sheerun/vim-polyglot'        " 多语言支持
call plug#end()" 代码格式化工具配置
" 使用neoformat自动格式化代码
autocmd FileType * nnoremap <leader>f :Neoformat<CR>
let g:neoformat_try_formatprg = 1
" 对于C/C++,使用clang-format
autocmd FileType c,cpp nnoremap <leader>f :0,$!clang-format<CR>
" 对于Python,使用autopep8
autocmd FileType python nnoremap <leader>f :0,$!autopep8<CR>" 其他个人设置
" 这里可以添加其他个人化的设置

其实现在对于CentOS是较全的,对于CentOS,我们通过该网站,可以得到较为全面的插件:

(就是在卸载的时候有点卸不干净)

一键部署Vim 从入门到精通. Contribute to wsdjeg/vim-galore-zh_cn development by creating an account on GitHub.icon-default.png?t=O83Ahttps://github.com/wsdjeg/vim-galore-zh_cn

 

相关文章:

基础开发工具-编辑器vim

vim操作键盘图 下图是比较基础的vim操作键盘图 &#xff08;IDE例子&#xff09; vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;⽽且还有⼀些新的特性在⾥⾯。例如语法加亮&a…...

C#速成(文件读、写操作)

导包 using System.IO;1、写入文件&#xff08;重要&#xff09; StreamWriter sw new StreamWriter("C:\Users\29674\Desktop\volumn.txt");//创建一个TXT的文件 sw.WriteLine(textBox2.Text);//写入文件的内容 sw.Close();//关闭2、读取文件&#xff08;不重要&…...

11、多态

1、多态介绍 1.1、认识多态 “一个接口&#xff0c;多种状态”。 接口在运行期间&#xff0c;根据传入的参数来决定具体调用的函数&#xff0c;最终采取不同的执行策略。 比如&#xff1a;一个系统的后台&#xff0c;管理员登录后进入的界面和普通用户进入的界面是不一样的。 …...

bain.js(十二):RNN神经网络实战教程 - 音乐乐谱生成 -人人都是作曲家~

系列文章&#xff1a; &#xff08;一&#xff09;&#xff1a;可以在浏览器运行的、默认GPU加速的神经网络库概要介绍&#xff08;二&#xff09;&#xff1a;项目集成方式详解&#xff08;三&#xff09;&#xff1a;手把手教你配置和训练神经网络&#xff08;四&#xff09…...

嵌入式硬件-- 元器件焊接

1.锡膏的使用 锡膏要保存在冰箱里。 焊接排线端子&#xff1b;138度的低温锡&#xff08;锡膏&#xff09;&#xff0c; 第一次使用&#xff0c;直接拿东西挑一点涂在引脚上&#xff0c;不知道多少合适&#xff0c;加热台加热到260左右&#xff0c;放在上面观察锡融化&#…...

java_多态

问题引导 使用传统的方法来解决&#xff08;private 属性&#xff09;传统的方法带来的问题是什么? 如何解决? 问题是&#xff1a; 代码的复用性不高&#xff0c;而且不利于代码维护 解决方案&#xff1a; 引出我们要讲解的多态 多态的基本介绍 方法或对象具有多种形态。是…...

如何设计一款智能手表的电子系统:从选择MCU到PCB设计

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;趣享先生的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&…...

Vue Web开发(七)

1. echarts介绍 echarts官方文档 首先我们先完成每个页面的路由&#xff0c;之前已经有home页面和user页面&#xff0c;缺少mail页面和其它选项下的page1和page2页面。在view文件夹下新建mail文件夹&#xff0c;新建index.vue&#xff0c;填充user页面的内容即可。在view下新建…...

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板&#xff08;米尔基于全志T527开发板&#xff09;的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt…...

洛谷 P10483 小猫爬山 完整题解

一、题目查看 P10483 小猫爬山 - 洛谷 二、解题思路 我们将采取递归 剪枝的思想&#xff1a; sum数组存放每辆车当前载重。 每次新考虑一只小猫时&#xff0c;我们尝试把它放进每个可以放进的缆车中&#xff08;需要回溯&#xff09; for (int i 0; i < k; i) {if (sum[i]…...

Vmware的网络适配器的NAT模式和桥接模式有何区别?如何给Uubunt系统添加桥接网卡?

Vmware的网络适配器的NAT模式和桥接模式有何区别&#xff1f; 如何给Uubunt系统添加桥接网卡? 步骤如下&#xff1a;...

Vue导出报表功能【动态表头+动态列】

安装依赖包 npm install -S file-saver npm install -S xlsx npm install -D script-loader创建export-excel.vue组件 代码内容如下&#xff08;以element-ui样式代码示例&#xff09;&#xff1a; <template><el-button type"primary" click"Expor…...

6.2 Postman接口收发包

欢迎大家订阅【软件测试】 专栏&#xff0c;开启你的软件测试学习之旅&#xff01; 文章目录 前言1 接口收发包的类比1.1 获取对方地址&#xff08;填写接口URL&#xff09;1.2 选择快递公司&#xff08;设置HTTP方法&#xff09;1.3 填写快递单&#xff08;设置请求头域&#…...

UE4_贴花_贴花基础知识一

贴花可以将材料和各种材料元素投影到表面上。您可以使用它们来添加独特的效果。贴花 是一种可以投射到网格体&#xff08;包括静态网格体和骨骼网格体&#xff09;上的材质。无论这些网格体的移动性&#xff08;Mobility&#xff09;是静态&#xff08;Static&#xff09;还是可…...

代码随想录day13 二叉树:二叉树的遍历(前中后序)(递归、迭代)、102.二叉树的层序遍历

二叉树简单讲解及题目讲解 代码随想录 144.二叉树前序遍历 145.二叉树后序遍历 94.二叉树中序遍历 102.二叉树的层序遍历 题目 给你二叉树的根节点root, 完成二叉树的前中后序遍历 二叉树遍历–递归法 思路 了解过二叉树的定义和遍历规则, 那么完成此题并没有什么难度, 采用…...

Kafka - 消息乱序问题的常见解决方案和实现

文章目录 概述一、MQ消息乱序问题分析1.1 相同topic内的消息乱序1.2 不同topic的消息乱序 二、解决方案方案一&#xff1a; 顺序消息Kafka1. Kafka 顺序消息的实现1.1 生产者&#xff1a;确保同一业务主键的消息发送到同一个分区1.2 消费者&#xff1a;顺序消费消息 2. Kafka 顺…...

俏生元,融汇传统智慧与现代科技,解析药食同源健康奥秘

在追求健康生活的今天&#xff0c;药食同源的理念正逐渐成为现代人滋养身心的新选择。俏生元&#xff0c;一直以来注重女性健康和多元需求&#xff0c;正以它独特的视角和匠心产品&#xff0c;助推着药食同源健康滋养的风尚。 俏生元葛根红参丰韵膏 药食同源&#xff0c;匠心独…...

【CUDA】CUBLAS

【CUDA】CUBLAS 在深入了解之前&#xff0c;提前运行预热&#xff08;warmup&#xff09;和基准测试&#xff08;benchmark runs&#xff09; 是获得准确执行时间的关键。如果不进行预热运行&#xff0c;cuBLAS 的首次运行会有较大的开销&#xff08;大约 45 毫秒&#xff09;…...

泛型编程--

auto自动推导数据类型 函数模板 定义和调用 函数模板具体化 函数模板通用版本之外的一个特殊版本 函数模板 具体化函数 &#xff0c;它们的声明和定义都可以分开写。 声明 定义 函数模板写变量 模板参数缺省 类成员函数作为函数模板 类构造函数是函数模板 函数模板重载 函数模…...

Linux USB开发整理和随笔

目录 1 概述 2 硬件原理基础 2.1 USB发展 2.2 USB的拓扑 2.3 硬件接口 2.4 USB总线协议 2.4.1 通信过程 2.4.2 概念关系 2.4.3 管道PIPE 2.4.4 传输 2.4.5 事务 2.4.6 包结构与类型 2.4.6.1 令牌包 2.4.6.2 数据包 2.4.6.3 握手包 2.5 描述符 2.5.1 设备描述符…...

【实验】【H3CNE邓方鸣】交换机端口安全实验+2024.12.11

实验来源&#xff1a;邓方鸣交换机端口安全实验 软件下载&#xff1a; 华三虚拟实验室: 华三虚拟实验室下载 wireshark&#xff1a;wireshark SecureCRT v8.7 版本: CRT下载分享与破解 文章目录 dot1x 开启802.1X身份验证 开启802.1X身份验证&#xff0c;需要在系统视图和接口视…...

使用任务队列TaskQueue和线程池ThreadPool技术实现自定义定时任务框架详解

前言 在桌面软件开发中&#xff0c;定时任务是一个常见的需求&#xff0c;比如定时清理日志、发送提醒邮件或执行数据备份等操作。在C#中有一个非常著名的定时任务处理库Hangfire&#xff0c;不过在我们深入了解Hangfire 之前&#xff0c;我们可以手动开发一个定时任务案例&am…...

在IDE中使用Git

我们在开发的时候肯定是经常使用IDE进行开发的&#xff0c;所以在IDE中使用Git也是非常常用的&#xff0c;接下来以IDEA为例&#xff0c;其他的VS code &#xff0c;Pycharm等IDE都是一样的。 在IDEA中配置Git 1.打开IDEA 2.点击setting 3.直接搜索git 如果已经安装了会自…...

蓝桥杯新年题解 | 第15届蓝桥杯迎新篇

蓝桥杯新年题解 | 第15届蓝桥杯迎新篇 2024年的蓝桥杯即将拉开序幕&#xff01;对于许多编程爱好者来说&#xff0c;这不仅是一次展示自我能力的舞台&#xff0c;更是一次学习和成长的机会。作为一名大一新生的小蓝&#xff0c;对蓝桥杯充满了期待&#xff0c;但面对初次参赛的…...

Docker Swarm实战

文章目录 1、docker swarm介绍2、docker swarm概念与架构2.1 架构2.2 概念 3、docker swarm集群部署3.1 容器镜像仓库 Harbor准备3.2 主机准备3.2.1 主机名3.2.2 IP地址3.2.3 主机名与IP地址解析3.3.4 主机时间同步3.2.5 主机安全设置 3.3 docker安装3.3.1 docker安装3.3.2 配置…...

磁盘空间占用分析工具-wiztree【推荐】

磁盘空间占用分析工具-wiztree【推荐】 如果你遇到过磁盘空间占满、找大文件困难、线上服务器空间飙升等一系列磁盘的问题&#xff0c;并且需要分析文件夹占用空间&#xff0c;传统的方法就是一个一个去看&#xff0c;属实太费劲&#xff0c;效率太低。 而“WizTree”便可解决…...

Vuex在uniapp中的使用

文章目录 一、Vuex概述 1.1 官方解释 1.2 大白话 1.3 组件间共享数据的方式 1.4 再看Vuex是什么 1.5 使用Vuex统一管理好处 二、状态管理 2.1 单页面状态管理 2.2 多页面状态管理 2.3 全局单例模式 2.4 管理哪些状态 三、Vuex的基本使用 3.1 安装 3.2 导入 3.3 创建store对象…...

【含开题报告+文档+PPT+源码】基于微信小程序的点餐系统的设计与实现

开题报告 随着互联网技术的日益成熟和消费者生活水平与需求层次的显著提升&#xff0c;外卖点餐平台在中国市场上迅速兴起并深深植根于民众日常生活的各个角落。这类平台的核心在于构建了一个基于互联网的强大订餐服务系统&#xff0c;它无缝整合了餐饮商户资源与广大消费者的…...

Elasticsearch02-安装7.x

零、文章目录 Elasticsearch02-安装7.x 1、Windows安装Elasticsearch &#xff08;1&#xff09;JDK安装 Elasticsearch是基于java开发的&#xff0c;所以需要安装JDK。我们安装的Elasticsearch版本是7.15&#xff0c;对应JDK至少1.8版本以上。也可以不安装jdk&#xff0c;…...

【数据库】选择题+填空+简答

1.关于冗余数据的叙述中&#xff0c;不正确的是&#xff08;&#xff09; A.冗余的存在容易破坏数据库的完整新 B.冗余的存在给数据库的维护增加困难 C.不应该在数据库中存储任何冗余数据 D.冗余数据是指由基本数据导出的数据 C 2.最终用户使用的数据视图称为&#xff08;&…...

Spark执行计划解析后是如何触发执行的?

在前一篇Spark SQL 执行计划解析源码分析中&#xff0c;笔者分析了Spark SQL 执行计划的解析&#xff0c;很多文章甚至Spark相关的书籍在讲完执行计划解析之后就开始进入讲解Stage切分和调度Task执行&#xff0c;每个概念之间没有强烈的关联&#xff0c;因此这中间总感觉少了点…...

渗透测试-前端验签绕过之SHA256+RSA

本文是高级前端加解密与验签实战的第2篇文章&#xff0c;本系列文章实验靶场为Yakit里自带的Vulinbox靶场&#xff0c;本文讲述的是绕过SHA256RSA签名来爆破登录。 绕过 根据提示可以看出这次签名用了SHA2556和RSA两个技术进行加密。 查看源代码可以看到RSA公钥是通过请求服务…...

Maven完整技术汇总

额外知识点 IDE IDE是集成开发环境的缩写&#xff0c;它是一种软件应用程序&#xff0c;提供了编码、调试和部署软件的一站式解决方案。这些功能集成在一起&#xff0c;使开发人员能够在一个环境中完成整个软件开发过程&#xff0c;从编写代码到调试和测试&#xff0c;直到最终…...

NOI系列赛事LaTeX模板

NOI系列赛事 L a T e X LaTeX LaTeX 模板 照搬照抄&#xff1a; s y k s y k C C C syksykCCC syksykCCC 大佬写的&#xff0c;但是看得人不多。真的很好&#xff0c;比其他的板子优秀多了。现在我当一个校友搬运工&#xff0c;搬过来。 \documentclass[UTF8,a4paper]{ctex…...

JustTrustMe是什么

JustTrustMe是什么 JustTrustMe 是一个用于 Android 的 Xposed 模块&#xff0c;主要用于绕过应用程序的 SSL pinning&#xff08;SSL 证书锁定&#xff09;机制。SSL pinning 是一种安全措施&#xff0c;应用程序通过它来验证服务器返回的 SSL 证书是否与应用程序内置的证书匹…...

题解 - 工作分配

题目描述 在工厂里&#xff0c;如果每道工序让不同的工人来做&#xff0c;所要花费的时间往往不一样。精明的老板为了提高效率&#xff0c;总是把生产某一产品所需要的N道工序进行最佳搭配&#xff0c;使生产某一产品所花费的总时间最少。现在就给出N个工人分别做N道工序所要花…...

GLM-4-Plus初体验

引言&#xff1a;为什么高效的内容创作如此重要&#xff1f; 在当前竞争激烈的市场环境中&#xff0c;内容创作已成为品牌成功的重要支柱。无论是撰写营销文案、博客文章、社交媒体帖子&#xff0c;还是制作广告&#xff0c;优质的内容不仅能够帮助品牌吸引目标受众的注意力&a…...

【Python基础】Python知识库更新中。。。。

1、Python知识库简介 现阶段主要源于个人对 Python 编程世界的强烈兴趣探索&#xff0c;在深入钻研 Python 核心语法、丰富库函数应用以及多样化编程范式的基础上&#xff0c;逐步向外拓展延伸&#xff0c;深度挖掘其在数据分析、人工智能、网络开发等多个前沿领域的应用潜力&…...

【arm】程序跑飞,SWD端口不可用修复(N32G435CBL7)

项目场景&#xff1a; 国民N32G43X系列&#xff0c;烧录了一个测试程序&#xff0c;在DEBUG中不知什么原因挂掉&#xff0c;然后就无法连接SWD或JLINK。 问题描述 在SWD配置中不可见芯片型号&#xff0c;无法connect&#xff0c;无法烧录。但基本判断是芯片没有损坏。怀疑是程…...

C++如何读取包含空格在内的整行字符串s? ← getline(cin,s);

【问题描述】 问&#xff1a;请分析下面代码&#xff0c;在利用 cin 输入带空格的整行字符串时&#xff0c;会输出什么&#xff1f; #include <bits/stdc.h> using namespace std;int main() {string s;cin>>s;for(int i0; i<s.size(); i) {cout<<s[i];}…...

活动预告 | Microsoft 365 在线技术公开课:让组织针对 Microsoft Copilot 做好准备

课程介绍 通过Microsoft Learn免费参加Microsoft 365在线技术公开课&#xff0c;建立您需要的技能&#xff0c;以创造新的机会并加速您对Microsoft云技术的理解。参加我们举办的“让组织针对 Microsoft Copilot for Microsoft 365 做好准备” 在线技术公开课活动&#xff0c;学…...

tomcat被检测到目标URL存在htp host头攻击漏洞

AI越来越火了,我们想要不被淘汰就得主动拥抱。推荐一个人工智能学习网站,通俗易懂,风趣幽默,最重要的屌图甚多,忍不住分享一下给大家。点击跳转到网站 Tomcat被检测到目标URL存在http host头攻击漏洞,这个漏洞复现一下就是黑客访问你的网站,之后中修改请求头中的host属…...

【使用webrtc-streamer解析rtsp视频流】

webrtc-streamer WebRTC (Web Real-Time Communications) 是一项实时通讯技术&#xff0c;它允许网络应用或者站点&#xff0c;在不借助中间媒介的情况下&#xff0c;建立浏览器之间点对点&#xff08;Peer-to-Peer&#xff09;的连接&#xff0c;实现视频流和&#xff08;或&a…...

【数据结构——线性表】单链表的基本运算(头歌实践教学平台习题)【合集】

目录&#x1f60b; 任务描述 相关知识 测试说明 我的通关代码: 测试结果&#xff1a; 任务描述 本关任务&#xff1a;编写一个程序实现单链表的基本运算。 相关知识 为了完成本关任务&#xff0c;你需要掌握&#xff1a;初始化线性表、销毁线性表、判定是否为空表、求线性…...

华为FreeBuds Pro 4丢了如何找回?(附查找功能使用方法)

华为FreeBuds Pro 4查找到底怎么用&#xff1f;华为FreeBuds Pro 4有星闪精确查找和离线查找&#xff0c;离线查找功能涵盖播放铃声、导航定位、星闪精确查找、上线通知、丢失模式、遗落提醒等。星闪精确查找是离线查找的子功能&#xff0c;当前仅华为FreeBuds Pro 4充电盒支持…...

直流开关电源技术及应用

文章目录 1. 开关电源概论1.1 开关电源稳压原理1.1.1 开关电源稳压原理 1. 开关电源概论 1.1 开关电源稳压原理 为了提高效率&#xff0c;必须使功率调整器件处于开关工作状态。 作为开关而言&#xff0c;导通时压降很小&#xff0c;几乎不消耗能量&#xff0c;关断时漏电流很…...

langchain 结构化输出

主要流程 1. 使用 Pydantic 定义结构化输出&#xff1a; 定义 AnswerWithJustification 类&#xff0c;用于描述输出的结构&#xff0c;包含以下字段&#xff1a; answer&#xff1a;答案内容&#xff08;字符串类型&#xff09;。justification&#xff1a;答案的理由或解释…...

开源Java快速自测工具,可以调用系统内任意一个方法

java快速测试框架&#xff0c;可以调到系统内任意一个方法&#xff0c;告别写单测和controller的困扰。 开源地址&#xff1a;https://gitee.com/missyouch/Easy-JTest 我们在开发时很多时候想要测试下自己的代码&#xff0c;特别是service层或者是更底层的代码&#xff0c;就…...

挺详细的记录electron【V 33.2.0】打包vue3项目为可执行程序

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、直接看效果 二、具体步骤 1.安装配置electron 1.将 electron 包安装到应用的开发依赖中。 2.安装electron-packager依赖&#xff08;打包可执行文件&#…...

相比普通LED显示屏,强力巨彩软模组有哪些优势?

在科技技术的加持下&#xff0c;LED显示屏市场各类创新产品层出不穷&#xff0c;为市场带来了无限可能。其中&#xff0c;强力巨彩R系列H版&#xff08;软模组&#xff09;凭借其独特的技术优势&#xff0c;在行业内脱颖而出。那么&#xff0c;相比常规LED显示屏&#xff0c;强…...