【Linux進階】vim的用法

1.什么是vi/vim?

????????簡單來說,vi是老式的文本編輯器,不過功能已經很齊全了,但是還是有可以進步的地方。vim則可以說是程序開發者的一項很好用的工具,就連 vim的官方網站( http://www.vim.org)自己也說vim是一個程序開發工具而不是文本處理軟件。

????????Vim是從 vi 發展出來的一個文本編輯器。代碼補全、編譯及錯誤跳轉等方便編程的功能特別豐富,在程序員中被廣泛使用,和Emacs并列成為類Unix系統用戶最喜歡的文本編輯器。

????????vim的設計理念是命令的組合。用戶學習了各種各樣的文本間移動/跳轉的命令和其他的普通模式的編輯命令,并且能夠靈活組合使用的話,能夠比那些沒有模式的編輯器更加高效的進行文本編輯。同時VIM與很多快捷鍵設置和正則表達式類似,可以輔助記憶。并且vim針對程序員做了優化。

2.為何要學vi/vim?

其實是有原因的,因為:

  • 很多軟件的編輯接口都會主動調用vi(例如crontab、visudo、edquota等命令);
  • 所有的UNIX-like系統都會內置vi文本編輯器,其他的文本編輯器則不一定會存在;
  • vim 具有程序編輯的能力,可以主動地以字體顏色辨別語法的正確性,方便程序設計;
  • 因為程序簡單,編輯速度相當快速;

其實重點是上述的第二點,因為有太多Linux上面的命令都默認使用vi作為數據編輯的接口,所以你一定要學會Vi,否則很多命令你根本就無法操作。

3.vim的使用

由于啊這個vi和vim的用法基本一樣,我們就講一樣就行了

基本上vim共分為3種模式,分別是一般命令模式、編輯模式與命令行模式。

這3種模式的作用分別是:

  • 一般命令模式(command mode)

以vi打開一個文件就直接進入一般命令模式了(這是默認的模式,也簡稱為一般模式)。

????????在這個模式中,你可以使用【上下左右】按鍵來移動光標,你可以使用【刪除字符】或【刪除整行】來處理文件內容,也可以使用【復制、粘貼】來處理你的文件內容。

  • 編輯模式/插入模式(insert mode)

在一般命令模式中可以進行刪除、復制、粘貼等的操作,但是卻無法編輯文件的內容。要等到你按下【i、I(大寫i)、o、O(大寫o)、a、A、R】等任何一個字母之后才會進入編輯模式。

????????注意了,通常在Linux中,按下【i、I(大寫i)、o、O(大寫o)、a、A】時,在界面的左下方會出現【INSERT】,按下【R】時會出現【REPLACE】的字樣,此時才可以進行編輯,

而如果要回到一般命令模式時,則必須要按下【Esc】這個按鍵即可退出編輯模式。

  • 命令行模式/底行模式(command-line mode)

在一般模式當中,輸入【:? /? ?】三個中的任何一個按鈕,就可以將光標移動到最下面那一行。

????????在這個模式當中,可以提供你【查找數據】的操作,而讀取、保存、批量替換字符、退出vi、顯示行號等的操作則是在此模式中完成。

簡單地說,我們可以將這3個模式想成下面的圖例來表示:


注意到上面的圖例,你會發現一般命令模式可與編輯模式及命令行模式切換但編輯模式與命令行模式之間不可互相切換,這非常重要。

閑話不多說,我們下面以一個簡單的例子來進行說明吧!

3.1.簡易執行范例

如果你想要使用vim來建立一個名為welcome.txt的文件時,你可以這樣做:

  • 1.使用【vim filename】進入一般命令模式



直接輸入【vim文件名】就能夠進入vi的一般命令模式。另外,請注意,記得vim后面一定要加文件名,不管該文件名存在與否。沒有的話vim會自己創建一個新文件

進去之后底行就會出現下面這些字樣

整個界面主要分為兩部分,上半部分與最下面一行兩者可以視為獨立的。上半部分顯示的是文件的實際內容,最下面一行則是狀態顯示行(圖所示的[New File]信息),或是命令執行行。

我們使用vim打開一個新文件

如果使用vim打開的文件是已經存在的文件,則可能會出現如下的信息:

如圖所示,底行的那個【"letc/man_db.conf"[readonly] 131L,5171℃】代表的是現在打開的文件名為/etc/man_db.conf,由于打開者的身份緣故,目前文件為只讀狀態,且文件內有131行以及具有5171個字符的意思。

那一行的內容并不是在文件內,而是 vi 顯示一些信息的地方,此時是在一般命令模式的環境下,接下來開始來輸入吧!

  • ?2.按下i進入編輯模式,開始編輯文字

在一般命令模式之中,只要按下【i、o、a】等字符就可以進入編輯模式了,在編輯模式當中,你可以發現在左下角狀態欄中會出現--INSERT--的字樣,那就是可以輸入任意字符的提示。

這個時候,鍵盤上除了[Esc]這個按鍵之外,其他的按鍵都可以視作為一般的輸入按鈕,所以你可以進行任何的編輯。

當然,除了按【i、o、a】等字符之外,我們還可以按【R】,只不過R進入的是替換模式,意思就是只能替換

  • 3.按下[Esc]鍵回到一般命令模式

好了,假設我已經按照上面的樣式給它編輯完畢了,那么應該要如何退出呢?是的,沒錯,就是給它按下[Esc]這個鍵即可,馬上你就會發現界面左下角的-INSERT-不見了。

  • 4.進入命令行模式,文件保存并退出vi環境

OK,我們要保存了,保存(write)并退出(quit)的命令很簡單,輸入【:wq】即可保存退出。(注意了,按下:該光標就會移動到最下面一行去)

這時你在提示字符后面輸入【Is-l】即可看到我們剛剛建立的test2文件,整個圖有點像下面這樣:


如此一來,你的文件 test2 就已經建立。

????????需要注意的是,如果你的文件權限不對,例如為-r--r-—r--時,那么可能會無法寫入,此時可以使用【強制寫入】的方式嗎?

可以,使用【:wq!】多加一個感嘆號即可。不過,需要特別注意,那個是在你的權限可以改變的情況下才能成立的。

3.2按鍵說明

除了上面簡易示范的i、[Esc]、:wq 之外,其實vim還有非常多的按鍵可以使用。

在介紹之前還是要再次強調,vi的三種模式只有一般命令模式可以與編輯、命令行模式切換,編輯模式與命令行模式之間并不能切換。

下面就來談談vi軟件中會用到的按鍵功能吧!

第一部分:一般命令模式可用的功能按鍵說明,光標移動、復制粘貼、查找替換等

移動光標的方法
h? 或向左箭頭鍵光標向左移動一個字符
j? ?或向下箭頭鍵光標向下移動一個字符
k? ?或向上箭頭鍵光標向上移動一個字符
i? ?或向右箭頭鍵光標向右移動一個字符
[Ctrl]+[f]屏幕【向下】移動一頁,相當于[PageDown]按鍵(常用)
[Ctrl]+[b]屏幕【向上】移動一頁,相當于[PageUp]按鍵(常用)
[Ctrl]+[d]屏幕【向下】移動半頁
[Ctrl] + [u]屏幕【向上】移動半頁
+光標移動到非空格符的下一行
-光標移動到非空格符的上一行
n<space>那個n表示【數字】,按下數字n后再按空格鍵,光標會向右移動這一行的n個字符,例如20<space>則光標會向后面移動20個字符距離
0或功能鍵[Home]

這是數字【0】:移動到這一行的最前面字符處(常用)

$或功能鍵[End]移動到這一行的最后面字符(常用)
H光標移動到這個屏幕的最上方那一行的第一個字符
M光標移動到這個屏幕的中央那一行的第一個字符
L光標移動到這個屏幕的最下方那一行的第一個字符
G移動到這個文件的最后一行(常用)
nGn為數字,移動到這個文件的第n行,例如20G則會移動到這個文件的第20行(可配合:set nu)
gg移動到這個文件的第一行,相當于1G(常用)
n<Enter>n為數字,光標向下移動n行(常用)

注意:如果你將右手放在鍵盤上的話,你會發現hjki是排行在一起的,因此可以使用這四個按鍵來移動光標。

????????如果想要進行多次移動的話,例如向下移動30行,可以使用“30j”或“30↓”的組合按鍵,亦即加上想要進行的次數(數字)后,按下操作即可

查找和替換
/word

向光標之下尋找一個名稱為word的字符串。

例如要在文件內查找vbird 這個字符串,就輸入/vbird即可(常用)

?word向光標之上尋找一個字符串名稱為word的字符串
n

這個n是英文按鍵,代表【重復前一個查找的操作】。

舉例來說,

如果剛剛我們執行/bird去向下查找vbird這個字符串,則按下n后,會向下繼續查找下一個名稱為vbird的字符串.

如果是執行?vbird的話,那么按下n則會向上繼續查找名稱為vbird的字符串

N這個N是英文按鍵,與n剛好相反,為【反向】進行前一個查找操作,例如/vbird后,按下N則表示【向上】查找vbird
:n1,n2s/word1/word2/g

n1與n2為數字,在第n1與n2行之間尋找word1這個字符串,并將該字符串替換為word2,

舉例來說,在100到200行之間查找 vbird 并替換為 VBIRD則:“:100,200s/vbird/VBIRD/g”(常用)

:1,$s/word1/word2/g從第一行到最后一行尋找word1字符串,并將該字符串替換為word2(常用)
:1,$s/word1/word2/gc從第一行到最后一行尋找word1字符串,并將該字符串替換為word2,且在替換前顯示提示字符給用戶確認(confirm)是否需要替換(常用)

刪除,復制,粘貼
x和X在一行當中,x為向后刪除一個字符(相當于[del]按鍵),X為向前刪除一個字符(相當于[Backspace]即退格鍵)(常用)
nx

n為數字,連續向后刪除n個字符。

舉例來說,我要連續刪除 10個字符,【10x】

dd刪除(剪切)光標所在的那一整行(常用)
nddn為數字,刪除(剪切)光標所在的向下n行,例如20dd則是刪除(剪切)20行(常用)
d1G刪除(剪切)光標所在處到第一行的所有數據
dG刪除(剪切)光標所在處到最后一行的所有數據
d$刪除(剪切)光標所在處,到該行的最后一個字符
d0那個是數字的0,刪除(剪切)光標所在處,到該行的最前面一個字符
yy復制光標所在的那一行(常用)
nyyn為數字,復制光標所在的向下n行,例如20yy則是復制20行(常用)
y1G復制光標所在行到第一行的所有數據
yG復制光標所在行到最后一行的所有數據
y0復制光標所在的那個字符到該行行首的所有數據
y$復制光標所在的那個字符到該行行尾的所有數據
p和P

p為將已復制的數據在光標下一行粘貼,P則為貼在光標上一行。

舉例來說,我目前光標在第20行,且已經復制了10行數據,則按下p后,那10行數據會貼在原本的20行之后,即由21行開始貼,但如果是按下P呢?那么原本的第20行會被推到變成30行(常用)

J將光標所在行與下一行的數據結合成同一行
c重復刪除多個數據,例如向下刪除10行,[10cj]
u恢復前一個操作(常用)
[Ctrl]+r重做上一個操作(常用)
.

不要懷疑,這就是小數點,意思是重復前一個操作的意思。

如果你想要重復刪除、重復粘貼等操作,按下小數點【.】就好(常用)

這個u與[Ctrl]+r是很常用的命令。一個是恢復,另一個則是重做一次,利用這兩個功能按鍵,你的編輯,嘿嘿,很快樂的啊。

第二部分:一般命令模式切換到編輯模式的可用的按鍵說明

進入插入或替換模式的編輯模式
i和I

進入插入模式(Insert mode):

i為【從目前光標所在處插入】,|為【在目前所在行的第一個非空格符處開始插入】(常用)

a和A進入插入模式(Insert mode ):
a為【從目前光標所在的下一個字符處開始插入】,A為【從光標所在行的最后一個字符處開始插入】(常用)
o和O進入插入模式(Insert mode):
這是英文字母o的大小寫,o為【在目前光標所在的下一行處插入新的一行】;O為在目前光標所在處的上一行插入新的一行(常用)
r和R進入替換模式(Replace mode):
r只會替換光標所在的那一個字符一次;R會一直替換光標所在的文字,直到按下Esc為
止(常用)
Esc退出編輯模式,回到一般命令模式中(常用)

上面這些按鍵中,在vim界面的左下角處會出現【--INSERT-】或【--REPLACE--】的字樣。由名稱就知道該操作了吧!

特別注意的是,我們上面也提過,你想要在文件里面輸入字符時,一定要在左下角處看到 INSERT 或 REPLACE才能輸入。

第三部分:一般命令模式切換到命令行模式的可用按鍵說明

命令行模式的保存,退出等命令
:w將編輯的數據寫入硬盤文件中(常用)
:w!若文件屬性為【只讀】時,強制寫入該文件。不過,到底能不能寫入,還是跟你對該文件的文件權限有關
:q退出vim(常用)
:q!

若曾修改過文件,又不想保存,使用!為強制退出不保存

注意一下,那個感嘆號(!)在vim當中,常常具有【強制】的意思。

:wq保存后退出,若為:wq!則為強制保存后退出(常用)
ZZ這是大寫的Z,若文件沒有修改,則不保存退出,若文件已經被修改過,則保存后退出
:w? [filename]將編輯的數據保存成另一個文件(類似另存新文件)
:r [filename]在編輯的數據中,讀入另一個文件的數據,亦即將【filename】這個文件內容加到光標所在行后面
:n1,n2 w [filename]將n1到n2的內容保存為filename 這個文件
:! command暫時退出vim到命令行模式下執行command的顯示結果。例如【:!ls /home 】即可在vi當中查看/home下面以Is輸出的文件信息
set? nu顯示行號,設置之后,會在每一行的前綴顯示該行的行號
set nonu與set nu相反,為取消行號

特別注意,在Vim中,【數字】是很有意義的,數字通常代表重復做幾次的意思,也有可能是代表去到第幾個什么什么的意思

舉例來說,要刪除(剪切)50行,則是用【50dd 】。數字加在操作之前,那我要向下移動20行呢?那就是【20j】或是【20↓】即可。

????????OK,會這些命令就已經很厲害了,因為常用到的命令也只有不到一半。通常vim的命令除了上面鳥哥注明“常用”的幾個外,其他是不用背的,你可以做一張簡單的命令表在你的屏幕壁紙上,一有疑問可以馬上查詢。


3.3. vim的緩存、恢復與打開時的警告信息

????????目前主要的文本編輯軟件都會有恢復的功能,即當你的系統因為某些原因而導致類似宕機的情況時,還可以通過某些特別的機制來讓你將之前未保存的數據【救】回來,這就是鳥哥這里所謂的恢復功能。

那么vim有沒有恢復功能?有的,vim就是通過緩存來恢復。

????????當我們在使用vim 編輯時,vim會在與被編輯的文件的目錄下,再建立一個名為filename.swp的文件。

????????比如說編輯/tmp/vitest/man_db.conf這個文件時,vim會主動的建立/tmp/vitest/.man_db.conf.swp的緩存,你對man_db.conf 做的操作就會被記錄到這個.man_db.conf.swp當中。如果你的系統因為某些原因掉線了,導致你編輯的文件還沒有保存,這個時候.man_db.conf.swp就能夠發揮恢復功能了。

我們來測試一下吧!下面的練習有些部分的命令

我們尚未談到,沒關系,你先照著做,后續再回來了解。



我們使用vim打開vitest,此時會進入到vim的界面,在vim的一般命令模式下按下【[ctrl]-z】的組合鍵就會退出來,就像下面這樣子


????????當我們在vim的一般命令模式下按下[ctl]-z的組合按鍵時,你的vim會被丟到后臺去執行。這部分的功能我們會在進程管理當中談到,你這里先知道一下即可。

回到命令提示字符后,接下來我們來模擬將 vim的工作不正常的中斷吧!


我們看最后一行那個.vitest.swp

我們來模擬vim停止工作


這個 kil 可以模擬將系統的vim工作刪除的情況,你可以模擬宕機。

由于vim的工作被不正常地中斷,導致緩存無法借由正常流程來結束,所以緩存就不會消失,而繼續保留下來,此時如果你繼續編輯那個vitest,會出現什么情況?會出現如下所示的狀態:

????????由于緩存存在的關系,因此 vim會主動的判斷你的這個文件可能有些問題,在上面的圖例中vim提示兩點主要的問題與解決方案,分別是這樣的:

  • 問題一:可能有其他人或程序同時在編輯這個文件:

由于 Linux是多人多任務的環境,因此很可能有很多人同時在編輯同一個文件。如果在多人共同編輯的情況下,萬一大家同時保存,那么這個文件的內容將會變的亂七八糟。為了避免這個問題,因此vim會出現這個警告窗口,解決的方法則是:

  1. 找到另外那個程序或人員,請它將該vim的工作結束,然后你再繼續處理。
  2. 如果你只是要看該文件的內容并不會有任何修改編輯的操作,那么可以選擇開啟成為只讀(O)文件,即上述界面反白部分輸入英文【o】即可,其實就是[O]pen Read-Only的選項。
  • 問題二:在前一個 vim 的環境中,可能因為某些不知名原因導致vim 中斷(crashed):

這就是常見的不正常結束vim產生的后果,解決方案依據不同的情況而不同,常見的處理方法為:

  • 如果你之前的vim 處理操作尚未保存,此時你應該要按下【R】,亦即使用(R)ecover 的選項,此時vim會加載.vitest.swp的內容,讓你自己來決定要不要保存,這樣就能夠救回來你之前未保存的信息。不過這個.vitest.swp 并不會在你結束vim 后自動刪除,所以你退出vim后還得要自行刪除,.vitest.swp才能避免每次打開這個文件都會出現這樣的警告。
  • 如果你確定這個緩存是沒有用的,那么你可以直接按下【D】刪除掉這個緩存,即(D)elete it 這個選項即可。此時vim會加載.vitest.swp,并且將舊的.vitest.swp刪除后,建立這次會使用的新的.vitest.swp。

至于這個發現緩存警告信息的界面中,有出現六個可用按鍵,各按鍵的說明如下:

  1. [O]pen Read-Only:打開此文件成為只讀文件,可以用在你只是想要查看該文件內容并不想要進行編輯操作時。一般來說,在上課時,如果你是登錄到同學的計算機去看它的配置文件,結果發現其實同學它自己也在編輯時,可以使用這個模式;
  2. (E)dit anyway:還是用正常的方式打開你要編輯的那個文件,并不會加載緩存的內容,不過很容易出現兩個用戶互相改變對方的文件等問題。
  3. (R)ecover:就是加載緩存的內容,用在你要救回之前未保存的工作,不過當你救回來并且保存退出vim后,還是要手動自行刪除那個緩存。
  4. (D)elete it:你確定那個緩存是無用的,那么打開文件前會先將這個緩存刪除,這個操作其實是比較常做。因為你可能不確定這個緩存是怎么來的,所以就刪除掉它吧!。
  5. (Q)uit:按下q就退出vim,不會進行任何操作回到命令提示字符。
  6. (A)bort:忽略這個編輯操作,感覺上與quit 非常類似,也會送你回到命令提示字符。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43480.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43480.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43480.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

獨享代理VS共享代理,新手選擇攻略

隨著互聯網的廣泛普及和應用&#xff0c;涉及網絡隱私、數據安全和網絡訪問控制的問題變得越來越重要。代理服務器作為一種常見的網絡工具&#xff0c;可以在跨境電商、海外社媒、SEO投放、網頁抓取等領域發揮作用&#xff0c;實現匿名訪問并加強網絡安全。在代理服務器類別中&…

Nginx在線安裝與啟動

Nginx在線安裝與啟動 系統環境&#xff1a;中科方德桌面操作系統 3.1 內核&#xff1a; SMP CDOS 4.9.25-11cdos44 (2019-12-20) x86_64 GNU/Linux 使用連接工具&#xff1a;FinalShell3.9.5.7 1、下載nginx sudo apt-get update2、安裝命令 sudo apt-get install nginx安裝…

面向對象編程在Perl中的實現:解鎖Perl的OOP潛力

面向對象編程在Perl中的實現&#xff1a;解鎖Perl的OOP潛力 Perl作為一種多范式編程語言&#xff0c;支持過程式編程、面向對象編程&#xff08;OOP&#xff09;以及函數式編程等多種編程范式。盡管Perl在過程式編程方面非常強大&#xff0c;但在面向對象編程方面同樣具有獨特…

occ geo

隨筆 - 12 文章 - 18 評論 - 117 閱讀 - 13萬 opencascade造型引擎功能介紹 現今的CAD 系統大多通常都基于CAD 系統提供的二次開發包&#xff0c;用戶根據要求定制符合自己要求的功能。AutoCAD就提供了AutoLISP、ADS 等都是比較通用的開發工具包。UG 也提供了多種二次開發…

【力扣: 15題: 三數之和】

15題: 三數之和 給你一個整數數組 nums &#xff0c;判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足 i ! j、i ! k 且 j ! k &#xff0c;同時還滿足 nums[i] nums[j] nums[k] 0 。請 你返回所有和為 0 且不重復的三元組。 注意: 答案中不可以包含重復的三元組。 …

小米攝像頭黃燈常亮,小米攝像頭不好用了刷機

我是MJSXJ05CM型號 一不小心更新了系統結果就不好用了&#xff0c;這種東西真是要小心&#xff0c;一不小心更新不成就成磚頭了。 我按下面方法試了不好用&#xff0c;但是下載鏈接很多收藏一下!某種程度上說如果服務端故意發布一個錯誤鏡像會導致很多攝像頭變成磚頭&#xff0…

名企面試必問30題(二十七)——你能為公司帶來什么呢?

回答一&#xff1a; “首先&#xff0c;我具備扎實的軟件測試專業知識和豐富的實踐經驗。我能夠運用各種測試方法和工具&#xff0c;確保公司產品的質量&#xff0c;降低產品上線后的風險。 其次&#xff0c;我善于發現問題和解決問題。在測試過程中&#xff0c;我不僅能找出軟…

Pytest中的鉤子函數

在pytest框架中&#xff0c;鉤子函數&#xff08;Hooks&#xff09;是一種強大的機制&#xff0c;允許用戶擴展和定制pytest的行為。鉤子函數在pytest的測試執行生命周期的特定點上被調用&#xff0c;提供了一種靈活的方式來修改或增強測試過程的各個方面。以下是對pytest鉤子函…

桌面弄一個透明的記事本怎么弄?電腦桌面透明記事本

每次坐在電腦前&#xff0c;我總會被桌面上密密麻麻的圖標和文件弄得眼花繚亂。多么希望能有一個透明的記事本&#xff0c;既能隨時記錄我的想法和任務&#xff0c;又不會遮擋我桌面上的其他內容。 有一天&#xff0c;我偶然發現了透明記事本工具。它不僅解決了我的記事本需求…

cf 7.9 div3

AProblem - A - Codeforces ac代碼 #include<bits/stdc.h> typedef long long ll;#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0) const ll N1e5; using namespace std;int main() {IOS;int t;cin>>t;while(t--){int sum,ansINT16_MAX;int a[3];for…

RK3588 Android12實現UVC輸出功能詳解

首先需要在相關部分添加uvc的功能&#xff0c;這里參考一下&#xff1a;rockchip rk3588添加uvc及uvc,adb的復合設備_uvc.gs6-CSDN博客 setprop sys.usb.config none;setprop sys.usb.config uvc 或者setprop sys.usb.config none;setprop sys.usb.config uvc,adb 使rk3588 進…

Python實現動態銀河系:模擬旋轉的銀河動畫

文章目錄 引言準備工作前置條件 代碼實現與解析導入必要的庫初始化Pygame定義星系類主循環 完整代碼 引言 銀河系的旋轉動畫是一個迷人且富有挑戰性的項目。通過模擬星系的旋轉&#xff0c;我們可以更好地理解天文學現象&#xff0c;并創造出視覺上令人驚嘆的效果。在這篇博客…

jar 生成的jar包去掉-plain后綴

問題&#xff1a; 使用gradle8.6版本的&#xff0c; jar {enabled(true)manifestContentCharset utf-8metadataCharset utf-8exclude(**/**Application.class, **/application**,**/bootstrap**) } 生成的jar&#xff1a; staff-core-1.2.2-SNAPSHOT-plain.jar 多了-p…

springboot考研培訓機構管理系統-計算機畢業設計源碼16042

目錄 摘要 1 緒論 1.1 選題背景與意義 1.2國內外研究現狀 1.3論文結構與章節安排 2系統分析 2.1 可行性分析 2.2 系統流程分析 2.2.1系統開發流程 2.2.2 用戶登錄流程 2.2.3 系統操作流程 2.2.4 添加信息流程 2.2.5 修改信息流程 2.2.6 刪除信息流程 2.3 系統功能…

Python中的類和對象:如何定義一個類以及如何創建類的實例(對象)

在Python中&#xff0c;定義類是通過關鍵字class實現的&#xff0c;而創建類的實例&#xff08;也稱為對象&#xff09;則是通過調用這個類來實現的。下面是一個簡單的例子來展示如何定義一個類以及如何創建這個類的實例。 定義類 定義類時&#xff0c;你需要指定類名&#x…

Linux——網絡編程——UDP

網絡編程之 UDP 用戶數據報 1、特性&#xff1a; 無鏈接 不可靠 大數據 2、框架&#xff1a; C/S模式 server&#xff1a;socket() >bind()>recvfrom()>close() client&#xff1a;socket() >bind()>sendto() >close() 注意&#xff1a;socket(&…

編譯libmp3lame支持SSE指令

碰到的編譯錯誤如下&#xff1a; lame/libmp3lame/vector/xmm_quantize_sub.c:72:18: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi]72 | const __m128 vec_fabs_mask _mm_loadu_ps(&fabs_mask._float[0]);| ^~~~~~~~…

【NLP】利用 RAG 模分塊技術提升文檔處理效能

將大型文檔劃分為較小的部分是一項至關重要但又復雜的任務&#xff0c;它對檢索增強生成 (RAG) 系統的性能有重大影響。這些系統旨在通過結合基于檢索和基于生成的方法&#xff0c;提高輸出的質量和相關性。有效的分塊&#xff0c;即將文檔拆分為可管理的片段的過程&#xff0c…

音頻demo:使用開源項目lame來將MP3數據解碼出PCM數據

1、README 前言 本demo是使用開源項目lame來將MP3數據解碼成PCM數據。&#xff08;環境&#xff1a;x86_64 Ubuntu16.04 64位&#xff09; 注&#xff1a;在下面【參考文章】中的第1篇里面提到解碼出現過異常情況&#xff08;hip: bitstream problem, resyncing skipping xxx…

顯示渲染-OSG框架解析

1.背景介紹 1.1 OSG介紹 OSG的全稱&#xff1a;OpenSceneGraph&#xff0c;它是一個開放源碼&#xff0c;跨平臺的圖形開發包&#xff0c;它為諸如飛行器仿真&#xff0c;游戲&#xff0c;虛擬現實&#xff0c;科學計算可視化這樣的高性能圖形應用程序開發而設計。 它基于場…