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

Vim插件配置

工欲善其事,必先利其器,倒腾一下vim的配置,做个记录。

".vimrc里的内容:""===============for base configure==============
set t_Co=256
if ! has("gui_running")set t_Co=256
endifif &diffhighlight DiffAdd    cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Redhighlight DiffDelete cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Redhighlight DiffChange cterm=bold ctermfg=10 ctermbg=17 gui=none guifg=bg guibg=Redhighlight DiffText   cterm=bold ctermfg=10 ctermbg=88 gui=none guifg=bg guibg=Red
endifset ts=4
set sw=4
" set mouse=a
set expandtab
set autoindent
autocmd BufNewFile, BufRead *.c, *.cpp, *.java :CFOLD
set nu
set smartindent
set showmatch
set ruler "??????????  
set nohls "?????????  
set incsearch "??????  
set foldenable "??????
set backspace=indent,eol,start  
syntax on "????
"set background=dark
"colorscheme gruvbox
set fileencodings=utf-8,gb2312,gb18030,gbk,ucs-bom,cp936,latin1
set termencoding=utf-8
set fileformats=unix
set encoding=prc
set hlsearch
"set nohlsearch
set encoding=utf-8
set clipboard=unnamedplus
set cursorline
"hi CursorLine term=bold cterm=bold ctermbg=237
filetype plugin on"ctags
set tags=tags;
set autochdir"" Set mapleader
let mapleader = ",""nnoremap / /\v
"nnoremap ? ?\v
"map w /\v<><Left>
"nnoremap <F3> :norm yiw<CR>:/<C-R>"<CR><CR>
nnoremap <F3> :/<C-R><C-W><CR><CR>"***********************************************
""键盘命令,
""若是搭配secureCRT用系统剪切复制功能需要安装xming
""否则容易出错:
""Error: Can't open display: localhost:x.0                                
"***********************************************
"nmap <leader>w :w!<cr>
"nmap <leader>f :find<cr>
" 映射全选+复制 ctrl+a
map <C-A> ggVGY
map! <C-A> <Esc>ggVGY
" 选中状态下 Ctrl+c 复制
"vmap <C-c> "+y"
vnoremap <C-c> :w !xclip -selection clipboard<CR>" ==================for plugin==================
call plug#begin('~/.vim/plugged')
Plug 'itchyny/lightline.vim'
Plug 'rking/ag.vim'
Plug 'mileszs/ack.vim'
Plug 'dyng/ctrlsf.vim'
Plug 'scrooloose/nerdtree'
Plug 'Valloric/YouCompleteMe'
Plug 'majutsushi/tagbar'
Plug 'vim-airline/vim-airline'
Plug 'preservim/nerdcommenter'
Plug 'frazrepo/vim-rainbow'
Plug 'junegunn/fzf', { 'dir': '~/.fzf', 'do': './install --all' }
Plug 'junegunn/fzf.vim'
Plug 'christoomey/vim-system-copy'
Plug 'Yggdroot/LeaderF', { 'do': './install.sh' }
Plug 'rrethy/vim-illuminate'
Plug 'yegappan/mru'
Plug 'vim-scripts/DrawIt'
Plug 'morhetz/gruvbox'
Plug 'ludovicchabant/vim-gutentags'
Plug 'airblade/vim-gitgutter'
Plug 'neoclide/vim-easygit'
Plug 'tpope/vim-fugitive'
Plug 'w0rp/ale'
Plug 'godlygeek/tabular'
Plug 'tpope/vim-surround'
Plug 'Yggdroot/indentLine'
call plug#end()"===================for ag search==============="
" for easy using sliver search
" nmap <leader>f :norm yiw<CR>:Ag! -t -Q "<C-R>""
nmap <leader>r :norm yiw<CR>:Ag! -t "\b<C-R>"\b""配置ag从当前项目开始搜寻
let g:ag_working_path_mode="r"
let g:ag_highlight=1
" for easy using sliver search
nmap <leader>f :norm yiw<CR>:Ag! -t -Q "<C-R>""
" Locate and return character "above" current cursor position.
function! LookUpwards()let column_num = virtcol('.')let target_pattern = '\%' . column_num . 'v.'let target_line_num = search(target_pattern . '*\S', 'bnW')if !target_line_numreturn""elsereturn matchstr(getline(target_line_num), target_pattern)endif
endfunction
imap <silent> <C-Y> <C-R><C-R>=LookUpwards()<CR>"ag
nnoremap <leader>ag :Ag! ""<left>"ack 
let g:ackprg = 'ag --nogroup --nocolor --column'"ctrlsf
nnoremap <Leader>c :CtrlSF <Space>
map <s-j> <c-j>p
map <s-k> <c-k>p
"let g:ctrlsf_ackprg = 'rg'
let g:ctrlsf_default_view_mode = 'compact'
let g:ctrlsf_search_mode = 'async'
let g:ctrlsf_auto_close = {\ "normal" : 1,\ "compact": 0\ }
let g:ctrlsf_auto_focus = {\ "at" : "start",\ }
let g:ctrlsf_absolute_file_path = 0
let g:ctrlsf_auto_preview = 1
let g:ctrlsf_confirm_save = 1" nmap     <C-F>f <Plug>CtrlSFPrompt
" vmap     <C-F>f <Plug>CtrlSFVwordPath
" vmap     <C-F>F <Plug>CtrlSFVwordExec
" nmap     <C-F>n <Plug>CtrlSFCwordPath
" nmap     <C-F>p <Plug>CtrlSFPwordPath
" nnoremap <C-F>o :CtrlSFOpen<CR>
" nnoremap <C-F>t :CtrlSFToggle<CR>
" inoremap <C-F>t <Esc>:CtrlSFToggle<CR>"plugin nerdtree===============================
let NERDChristmasTree=0
let NERDTreeWinSize=35
let NERDTreeChDirMode=2
let NERDTreeIgnore=['\~$', '\.pyc$', '\.swp$']
let NERDTreeShowBookmarks=1
let NERDTreeWinPos="left"
"鼠标模式:目录单击,文件双击
let NERDTreeMouseMode=2"Automatically open a NERDTree if no files where specified
"autocmd vimenter * if !argc() | NERDTree | endif
"Close vim if the only window left open is a NERDTree
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif
" Open a NERDTree
nmap <F1> :NERDTreeToggle<CR>
nmap <F2> :NERDTreeFind<CR>
"plugin nerdtree=============================="plugin ycm===================================
"设置跳转到方法/函数定义的快捷键 
nnoremap <leader>j :YcmCompleter GoToDefinitionElseDeclaration<CR>
"触发补全快捷键 
let g:ycm_key_list_select_completion = ['<TAB>', '<c-n>', '<Down>']
let g:ycm_key_list_previous_completion = ['<S-TAB>', '<c-p>', '<Up>']
let g:ycm_auto_trigger = 1
"最小自动触发补全的字符大小设置为 3 
let g:ycm_min_num_of_chars_for_completion = 3
"YCM的previw窗口比较恼人,还是关闭比较好 
set completeopt-=preview
"plugin ycm end================================"plugin tagbar=================================
nmap <F9> :TagbarToggle<CR>
" tagbar默认去这个目录中寻找ctags,ctags的默认安装路径也是这个目录
let g:tagbar_ctags_bin='/usr/bin/ctags'    " Proper Ctags locations
let g:tagbar_width=36                      " Default is 40, seems too wide
noremap <Leader>y :TagbarToggle<CR>        " Display panel with (,y)
"启动 时自动focus
let g:tagbar_autofocus = 1
"plugin tagbar end============================="plugin airline================================
let g:airline_powerline_fonts=1
"let g:airline#extensions#tabline#enabled = 1      "tabline中当前buffer两端的分隔字符
nmap <tab> :bn<cr> " 设置tab键映射"
"plugin airline end============================="plugin nerd comment============================
let NERDSpaceDelims=1           " 让注释符与语句之间留一个空格
let NERDCompactSexyComs=1       " 多行注释时样子更好看
let g:NERDDefaultAlign = 'left'  "将行注释符左对齐
" map <F4><leader>ci<cr>   "加注释
"nmap <leader>cu   "解开注释
"nmap <leader>ca   "切换注释的样式:/*....*/和//..的切换
"nmap <leader>c<space>  "加上/解开注释, 智能判断
"nmap <leader>cy   "先复制, 再注解(p可以进行黏贴)
"nmap <leader>cs   "'性感的'注释(我很喜欢这个!)
"plugin nerd comment end========================="plugin rainbow==================================
let g:rainbow_active = 1
let g:rainbow_load_separately = [\ [ '*' , [['(', ')'], ['\[', '\]'], ['{', '}']] ],\ [ '*.tex' , [['(', ')'], ['\[', '\]']] ],\ [ '*.cpp' , [['(', ')'], ['\[', '\]'], ['{', '}']] ],\ [ '*.{html,htm}' , [['(', ')'], ['\[', '\]'], ['{', '}'], ['<\a[^>]*>', '</[^>]*>']] ],\ ]let g:rainbow_guifgs = ['RoyalBlue3', 'DarkOrange3', 'DarkOrchid3', 'FireBrick']
let g:rainbow_ctermfgs = ['lightblue', 'lightgreen', 'yellow', 'red', 'magenta']
"plugin rainbow end=============================="plugin ale======================================
let g:ale_sign_column_always = 1
let g:ale_set_highlights = 0
"自定义error和warning图标
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚡'
"在vim自带的状态栏中整合ale
let g:ale_statusline_format = ['✗ %d', '⚡ %d', '✔ OK']
"显示Linter名称,出错或警告等相关信息
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
"普通模式下,sp前往上一个错误或警告,sn前往下一个错误或警告
nmap sp <Plug>(ale_previous_wrap)
nmap sn <Plug>(ale_next_wrap)
"<Leader>s触发/关闭语法检查
nmap <Leader>s :ALEToggle<CR>
"<Leader>d查看错误或警告的详细信息
nmap <Leader>d :ALEDetail<CR>
"文件内容发生变化时不进行检查
let g:ale_lint_on_text_changed = 'never'
let g:ale_lint_on_insert_leave = 0
"打开文件时不进行检查
let g:ale_lint_on_enter = 0
"对于Java如果安装在中文的系统上,错误和警告信息都会乱码,可以进行下面的设置
let g:ale_java_javac_options = '-encoding UTF-8  -J-Duser.language=en'"使用clang对c和c++进行语法检查,对python使用pylint进行语法检查
let g:ale_linters = {\   'c++': ['clang', 'gcc'],\   'c': ['clang', 'gcc'],\   'python': ['pylint'],\}"plugin ale end=================================="plug fzf=========================================
"<Leader>f在当前目录搜索文件
nnoremap <silent> <Leader>g :Files<CR>
""<Leader>b切换Buffer中的文件
nnoremap <silent> <Leader>b :Buffers<CR>
"<Leader>p在当前所有加载的Buffer中搜索包含目标词的所有行,:BLines只在当前Buffer中搜索
nnoremap <silent> <Leader>p :Lines<CR>
"<Leader>h,改造了下可以调出上次搜索的结果,fzf自身没提供solution,需要自己想办法
nnoremap <silent> <Leader>h :Find<CR>function! s:remember(command)execute a:command" Or save it to a file for persistencelet g:prev_command = a:command
endfunctioncommand! -nargs=* Remember call s:remember(<q-args>)
command! Redo execute g:prev_commandlet cmd = 'rg -g "*.cpp" -g "*.h" -g "*.c" -g "*.java" -g "*.bp" -g "*.mk" \ --glob "!.git/*" --glob "!.repo/*" --glob "!tags" --glob "!.go"  \ --column --line-number --no-heading --color=always --smart-case \ --no-ignore --no-ignore-dot 'command! -bang -nargs=* Rg \ call fzf#vim#grep(cmd.shellescape(<q-args>)."| tee /tmp/fzf-history/result", 1, <bang>0)command! -bang -nargs=* Find\ call fzf#vim#grep('cat /tmp/fzf-history/result | tr -d "\017"', 1, <bang>0)" Mapping selecting mappings
nmap <leader><tab> <plug>(fzf-maps-n)
xmap <leader><tab> <plug>(fzf-maps-x)
omap <leader><tab> <plug>(fzf-maps-o)
" Insert mode completion
imap <c-x><c-k> <plug>(fzf-complete-word)
imap <c-x><c-f> <plug>(fzf-complete-path)
imap <c-x><c-l> <plug>(fzf-complete-line)"nnoremap <silent> <Leader>z :Rg <C-R><C-W><CR>
xnoremap <silent> <Leader>z y:Rg <C-R>"<CR>
"plug fzf end======================================"plug leaderf======================================
map <leader>d :LeaderfFunction<CR>
let g:Lf_ReverseOrder = 1
let g:Lf_HideHelp = 1
let g:Lf_UseCache = 0
let g:Lf_UseVersionControlTool = 0 "0:rg or ag,1:gitgrep"
let g:Lf_IgnoreCurrentBufferName = 1
let g:Lf_RootMarkers = ['.repo'] 
let g:Lf_WorkingDirectoryMode = 'AF'
"let g:Lf_Gtagsconf='/etc/gtags/gtags.conf'
"let g:Lf_RememberLastSearch = 1" popup mode
let g:Lf_WindowPosition = 'popup'
let g:Lf_PreviewInPopup = 0
let g:Lf_StlSeparator = { 'left': "\ue0b0", 'right': "\ue0b2", 'font': "DejaVu Sans Mono for Powerline"  }
let g:Lf_PreviewResult = {'Function': 0, 'BufTag': 0 }
let g:Lf_WindowPosition = 'bottom'"let g:Lf_ExternalCommand = "rg --files --no-heading --glob '!.git/*' --glob '!.repo/*' --glob '!tags'"
let g:Lf_ExternalCommand = 'fd %s --exclude={.git,.gitignore,.img,.proto,.tags,.svn} --type f'" 快捷键绑定``
let g:Lf_ShortcutF = "<leader>ff"
"let g:Lf_ShortcutF = '<C-P>'
let g:Lf_ShortcutB = "<leader>fb"noremap <leader>fb :<C-U><C-R>=printf("Leaderf buffer %s", "")<CR><CR>
noremap <leader>fm :<C-U><C-R>=printf("Leaderf mru %s", "")<CR><CR>
noremap <leader>ft :<C-U><C-R>=printf("Leaderf bufTag %s", "")<CR><CR>
noremap <leader>fl :<C-U><C-R>=printf("Leaderf line %s", "")<CR><CR>noremap <C-B> :<C-U><C-R>=printf("Leaderf rg --current-buffer -e %s ", expand("<cword>"))<CR>
"noremap <C-F> :<C-U><C-R>=printf("Leaderf rg -e %s ", expand("<cword>"))<CR>
noremap <C-F> :<C-U><C-R>=printf("Leaderf rg -e %s ", expand("<cword>"))<CR>
" search visually selected text literally
xnoremap gf :<C-U><C-R>=printf("Leaderf rg -F -e %s ",leaderf#Rg#visual())<CR>
noremap go :<C-U>Leaderf rg --recall<CR>" should use `Leaderf gtags --update` first
let g:Lf_GtagsAutoGenerate = 0
let g:Lf_Gtagslabel = 'native-pygments'
noremap <leader>fr :<C-U><C-R>=printf("Leaderf gtags -r %s --auto-jump",expand("<cword>"))<CR><CR>
noremap <leader>fd :<C-U><C-R>=printf("Leaderf gtags -d %s --auto-jump",expand("<cword>"))<CR><CR>
noremap <leader>fo :<C-U><C-R>=printf("Leaderf gtags --recall %s","")<CR><CR>
noremap <leader>fn :<C-U><C-R>=printf("Leaderf gtags --next %s", "")<CR><CR>
noremap <leader>fp :<C-U><C-R>=printf("Leaderf gtags --previous %s","")<CR><CR>let g:Lf_RgConfig = [\"--glob=!tags",\"--glob=!tags.*",\"--no-messages",\"-g '*.cpp'",\"-g '*.c'",\"-g '*.java'",\"-g '*.bp'",\"-g '*.mk'",\"-g '*.h'",\"-g '*.hal'",\"--column",\"--line-number",\"--no-heading",\"--color=always",\"--smart-case",\]" 排除搜索的文件夹和文件
let g:Lf_WildIgnore = {\ 'dir': ['.repo','.svn','.git','.hg','venv','.vscode','.SpaceVim.d'],\ 'file': ['.proto','.img','.gitignore','*.sw?','~$*','*.bak','*.exe','*.o','*.so','*.py[co]']\}
let g:Lf_CommandMap = {'<C-K>': ['<Up>'], '<C-J>': ['<Down>']}
let g:Lf_PopupPalette = {\  'light': {\      'Lf_hl_match': {\                'gui': 'NONE',\                'font': 'NONE',\                'guifg': 'NONE',\                'guibg': '#303136',\                'cterm': 'NONE',\                'ctermfg': 'NONE',\                'ctermbg': '236'\      },\      'Lf_hl_cursorline': {\                'gui': 'NONE',\                'font': 'NONE',\                'guifg': 'NONE',\                'guibg': '#303136',\                'cterm': 'NONE',\                'ctermfg': 'NONE',\                'ctermbg': '236'\        },\      },\  }
"plug leaderf end==================================
"
"Plug easy-git====================================
let g:easygit_enable_command = 1
"Plug easy-git end================================
"let g:system_copy_enable_osc52 = 1
let g:system_copy#copy_command='xclip -sel clipboard'
let g:system_copy#paste_command='xclip -sel clipboard -o'

1、base vim 8.1 + Ubuntu20.04

Vim版本过低可以升级:
sudo add-apt-repository ppa:jonathonf/vim
sudo apt-get update
sudo apt-get install vim

2、vim-plugin的安装,之后的操作都是基于~/.vimrc进行配置

1、curl -fLo ~/.vim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
2、.vimrc档里加入想要的插件,命令模式输入:PlugInstall 安装插件

3、fd-find的安装

代替find,速度更快
1、sudo apt install fd-find
2、ln -s /usr/bin/fdfind /usr/bin/fd

4、bat or batcat的安装

代替cat
Ubuntu 22.04
sudo apt install bat
Ubuntu 20.04
sudo apt install batcat

5、rg和ag的安装

1、sudo apt install ripgrep
2、sudo apt install silversearcher-ag
rg目前速度是最快的,体验更好

6、xming server的安装,for vim能够正常使用系统剪切复制的功能

1、vim --version | grep clipboard,有提示+clipboard,剪切板是有的
2、vim输入:reg,却看不到 "+,意味着系统剪切板功能有异常,剪切复制不成功
3、secureCRT + 搭配x11使用有问题,需要安装xming,
http://sourceforge.net/projects/xming //windows可以显示远程linux gui界面
4、安装x11 server使用正常

7、fzf的安装配置

1、sudo apt install fzf
2、.bashrc里,加入: [ -f ~/.fzf.bash ] && source ~/.fzf.bash 下面内容再加到.fzf.bash里
export FZF_COMPLETION_TRIGGER='~~'
#export FZF_DEFAULT_COMMAND='fd --exclude={.git,.gitignore,.img,.proto,.tags,.svn} --type f'
export FZF_DEFAULT_COMMAND="rg --files --no-heading --glob '!.git/*' --glob '!.repo/*' --glob '!tags'"
export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND"
export FZF_DEFAULT_OPTS="--query --preview '[[ $(file --mime {}) =~ binary ]] && echo {} is a binary file || (rougify {}  || highlight -O ansi -l {} || coderay {} || cat {}) 2> /dev/null | head -500'"if [ ! -d "/tmp/fzf-history" ]; thenmkdir -p /tmp/fzf-historytouch /tmp/fzf-history/result
fifunction zz() {vim $(fzf)
}function fdc() {#fd -0 -e cpp -e c -e h -e java | xargs -0 rg "$1"rg -g=*.cpp -g=*.c -g=*.java -g=*.h --no-heading "$1"
}function fdm() {#fd -0 -e mk -e bp -e go -e Makefile | xargs -0 rg "$1"rg -g=*.bp -g=*.mk -g=*.xml -g=Makefile -g=*.go -g=*.sh --no-heading "$1"
}_fzf_compgen_path() {fd --hidden --follow --exclude ".git|.img|.proto" . "$1"
}_fzf_compgen_dir() {fd --type d --hidden --follow --exclude ".git|.img|.proto" . "$1"
}

 用的比较多的是fzf + rg + fd这个组合

参考:

[VIM] map语法_vim map_olihaha~的博客-CSDN博客

VIM中的<C-r>=是什么意思-CSDN博客

相关文章:

Vim插件配置

工欲善其事&#xff0c;必先利其器&#xff0c;倒腾一下vim的配置&#xff0c;做个记录。 ".vimrc里的内容&#xff1a;""for base configure set t_Co256 if ! has("gui_running")set t_Co256 endifif &diffhighlight DiffAdd ctermbold cte…...

函数参数的最佳传递方式与现代C++的规则

函数参数的最佳传递方式与现代C的规则 在C中&#xff0c;如何最佳地传递函数参数以及如何处理类的特殊成员函数&#xff0c;一直是优化性能和代码质量的重要话题。下面我将详细解释这些概念。 使用移动语义实现 Swap 函数 移动语义&#xff08;Move Semantics&#xff09;能…...

Asterisk Ubuntu 安装

更新环境 sudo apt update sudo apt install wget build-essential git autoconf subversion pkg-config libtool sudo contrib/scripts/get_mp3_source.sh A addons/mp3 A addons/mp3/common.c A addons/mp3/huffman.h A addons/mp3/tabinit.c A addons/mp3/Ma…...

rwkv模型lora微调之accelerate和deepspeed训练加速

目录 一、rwkv模型简介 二、lora原理简介 三、rwkv-lora微调 1、数据整理 2、环境搭建 a、Dockerfile编写 b、制造镜像 c、容器启动 3、训练代码修改 四、模型推理 1、模型推理 2、lora权重合并 3、推理web服务 五、总结 由于业务采用的ChatGLM模型推理成本太大了…...

分享一下在微信小程序里怎么做一个投票链接

在当今信息化社会&#xff0c;投票已成为各行各业收集意见、汇聚智慧的重要手段。传统的投票方式往往需要投入大量人力物力&#xff0c;而如今&#xff0c;借助微信小程序&#xff0c;我们可以在几分钟内创建一个高效、便捷的投票平台。本文将详细介绍如何在微信小程序中添加投…...

v-model语法糖

v-model原理 v-model实现双向绑定的语法糖&#xff0c;常用于表单与组件之间的数据双向绑定v-model本质上是 value属性和input事件的一层包装 v-model的作用&#xff1a;提供数据的双向绑定数据发生了改变&#xff0c;页面会自动变 v-bind:value页面输入改变 &#xff0c; 数据…...

纷享销客荣获最佳制造业数字营销服务商奖

2023年10月26日&#xff0c;第二届中国制造业数智化发展大会在上海盛大召开。本次大会汇聚了制造行业的顶尖企业和专家&#xff0c;共同探讨如何通过数字化转型赋能企业自身成长&#xff0c;实现信息化向数字化的升级转型。 在本次盛会上&#xff0c;纷享销客以其卓越的基本面、…...

蓝桥杯每日一题2023.11.3

题目描述 承压计算 - 蓝桥云课 (lanqiao.cn) 题目分析 将重量存入a中&#xff0c;每一层从上到下进行计算&#xff0c;用d进行计算列的重量&#xff0c;当前d的重量应为正上数组和右上数组的个半和并加上自身的重量 计算到30层记录最大最小值&#xff0c;进行比例运算即可 …...

中国电子云-隐私计算-云原生安全可信计算,物理-硬件-系统-云产品-云平台,数据安全防护

目录 联邦学习的架构思想 中国电子云-隐私计算-云原生安全...

PHP服务器端电商API原理及示例讲解(电商接口开发/接入)

下面小编就为大家分享一篇PHP服务器端API原理及示例讲解(接口开发)&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助 相信大家都做过PHP请求电商API接口获取数据&#xff0c;比如淘宝平台商品API接口&#xff0c;订单接口&#xff0c;京东接口&#xff0c;1688接…...

Spring Cloud应用- Eureka原理、搭建

初期对Spring Cloud的学习以应用搭建为主&#xff0c;所以内容不会太枯燥。 一直以来&#xff0c;自以为Spring全家桶的学习中&#xff0c;Spring framework是基础中的基础&#xff0c;部分内容也还是必须要读源码去理解底层原理&#xff0c;SpringMVC、SpringBoot&#xff0c…...

Servlet 设置启动时机(web.xml方式和@WebServlet方式)

1、通过web.xml方式 5)Servlet的启动时机 - 默认情况下&#xff0c;servlet是不会随着容器的启动而被实例化的&#xff0c;只有当第一次给我发请求时才会被实例化那么&#xff0c;这种情况对于第一次请求是不公平的因此&#xff0c;为了提高用户体验度&#xff0c;提高服务器的…...

一个使用uniapp+vue3+ts+pinia+uview-plus开发小程序的基础模板

uniappuviewPlusvue3tspiniavite 开发基础模板 使用 uniapp vue3 ts pinia vite 开发基础模板&#xff0c;拿来即可使用&#xff0c;不要删除 yarn.lock 文件&#xff0c;否则会启动报错&#xff0c;这个可能和 pinia 的版本有关&#xff0c;所以不要随意修改。 拉取代码…...

Kali安装docker

第一步&#xff1a;kali添加Docker官方的GPG密钥 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add 第二步&#xff1a;进入root更新源&#xff1a; su rootecho ‘deb https://download.docker.com/linux/debian stretch stable’> /etc/ap…...

Maven第七章:Maven工程最佳实践

Maven第七章:Maven工程最佳实践 前言 本章重点,通过一个maven工程最佳实践案例,熟悉和掌握maven在项目中的应用基本思路,让你的技能值瞬间暴涨。 最佳实践 确定项目的坐标和依赖 在Maven中,项目的坐标定义了项目的唯一标识符,包括groupId、artifactId和version。因此,在…...

【深度学习】【pytorch】对卷积层置零卷积核进行真实剪枝

最近需要对深度学习模型进行部署,因此需要对模型进行压缩,博主取舍了很多大佬的博文并亲测有效,分享笔记邀大家共同学习讨论 文章目录 前言卷积层剪枝总结 前言 深度学习剪枝(Pruning)是一种用于减少神经网络模型大小、减少计算量和提高推理效率的技术&#xff0c;通过去除神经…...

机器人仿真-gazebo学习笔记(3)URDF和机器人模型

1.URDF简介 URDF(统一机器人麦哦书格式)是ROS中的重要机器人模型描述格式&#xff0c;ROS提供了URDF文件的c解析器&#xff0c;可以解析URDF文件中使用XML格式的机器人模型。 urdf - ROS Wiki 自己查阅ros官方对URDF的介绍其实会强于大部分网上流传的文章。 1.URDF文件常用的…...

lua-resty-request库写入爬虫ip实现数据抓取

根据提供的引用内容&#xff0c;正确的库名称应该是lua-resty-http&#xff0c;而不是lua-resty-request。使用lua-resty-http库可以方便地进行爬虫&#xff0c;需要先安装OpenResty和lua-resty-http库&#xff0c;并将其引入到Lua脚本中。然后&#xff0c;可以使用lua-resty-h…...

gitlab Activating and deactivating users

原文&#xff1a;Redirecting... Deactivating a userActivating a user Activating and deactivating users GitLab 管理员可以停用和激活用户. Deactivating a user 在 GitLab 12.4 中引入 . 为了临时阻止没有最近活动的 GitLab 用户访问&#xff0c;管理员可以选择停用…...

linux入门到精通-第五章-动态库和静态库

目录 参考概述1、静态链接2 、动态链接3 、静态、动态编译对比 静态库和动态库简介传统编译 静态库制作和使用1、创建静态库的过程2、使用静态库 动态库制作和使用1、创建动态库的过程1&#xff09;、生成目标文件&#xff0c;此时要加编译选项&#xff1a;-fPIC &#xff08;f…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

《信号与系统》第 6 章 信号与系统的时域和频域特性

目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...

Mysql故障排插与环境优化

前置知识点 最上层是一些客户端和连接服务&#xff0c;包含本 sock 通信和大多数jiyukehuduan/服务端工具实现的TCP/IP通信。主要完成一些简介处理、授权认证、及相关的安全方案等。在该层上引入了线程池的概念&#xff0c;为通过安全认证接入的客户端提供线程。同样在该层上可…...

嵌入式面试常问问题

以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...

Java中HashMap底层原理深度解析:从数据结构到红黑树优化

一、HashMap概述与核心特性 HashMap作为Java集合框架中最常用的数据结构之一&#xff0c;是基于哈希表的Map接口非同步实现。它允许使用null键和null值&#xff08;但只能有一个null键&#xff09;&#xff0c;并且不保证映射顺序的恒久不变。与Hashtable相比&#xff0c;Hash…...

el-amap-bezier-curve运用及线弧度设置

文章目录 简介示例线弧度属性主要弧度相关属性其他相关样式属性完整示例链接简介 ‌el-amap-bezier-curve 是 Vue-Amap 组件库中的一个组件,用于在 高德地图 上绘制贝塞尔曲线。‌ 基本用法属性path定义曲线的路径,可以是多个弧线段的组合。stroke-weight线条的宽度。stroke…...

软件工程教学评价

王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中&#xff0c;您通过丰富的实例&#xff0c;将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻&#xff0c;让这些理论不再是停留在纸面的名词&#xff0c;而是可以指导…...

STM32 低功耗设计全攻略:PWR 模块原理 + 睡眠 / 停止 / 待机模式实战(串口 + 红外 + RTC 应用全解析)

文章目录 PWRPWR&#xff08;电源控制模块&#xff09;核心功能 电源框图上电复位和掉电复位可编程电压监测器低功耗模式模式选择睡眠模式停止模式待机模式 修改主频一、准备工作二、修改主频的核心步骤&#xff1a;宏定义配置三、程序流程&#xff1a;时钟配置函数解析四、注意…...