小烏龜操作Git

1、選擇小烏龜作為git客戶端
最近使用idea來操作git的時候頻頻出現問題,要么是提交代碼的時候少了某些文件,導致克隆下來無法運行,要么是提交速度太慢。

反正是在idea中操作git體驗非常不好,所以決定來換一種方式來操作git。從網上搜索一番之后,決定使用小烏龜來進行操作。

2、軟件
下面是全面使用流程,從git安裝、小烏龜安裝軟件到語言安裝包,這里做一個詳細的配置截圖。

2.1、軟件安裝
這里的軟件安裝包對應的百度網盤鏈接:

鏈接:百度網盤 請輸入提取碼 提取碼:16l0

git安裝:
除了修改一下對應的安裝路徑之外,全程不用做任何操作。永遠下一步,安裝完畢即可。

安裝完畢之后,輸入命令檢查一下是否安裝成功。

git --version
同時在空白區域右擊鼠標,可以看到git gui和git bash等命令。

在git bash窗口中操作等同于操作于Linux。

TortoiseGit安裝:
除了修改一下對應的安裝路徑、配置git的賬號和密碼之外,全程下一步;

在TortoiseGit安裝過程中有一步需要配置一下git的賬號和郵箱,隨便在一個位置打開Git bash ,輸入以下命令:

git config ?user.name
git config user.email ? ?
即可看到對應的賬號和郵箱,配置上即可。

在空白區域右擊,可以看到幾個TortoiseGit標志選項。

漢化包安裝
全程下一步即可。語言包安裝完畢后可以在TortoiseGit的”設置”中調整語言,設置language為中文簡體。

3、Git
Git是分布式版本控制系統,那么它就沒有中央服務器的,每個人的電腦就是一個完整的版本庫,這樣,工作的時候就不需要聯網了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了文件A,可以將文件A提交到本地版本庫;其他人也在電腦上改了文件A,也可以將文件A提交到自己的本地版本庫,這時,你們倆之間只需把本地版本庫的內容各自的修改推送給對方(使用共享版本庫,例如github、碼云...),就可以互相看到對方的修改了。

3.1、概念
3.2.1、版本庫和工作目錄

版本庫又名倉庫,英文名repository,你可以簡單理解成一個目錄,這個目錄里面的所有文件都可以被Git管理起來,每個文件的新增、修改、刪除,Git都能跟蹤,以便任何時刻都可以追蹤歷史,或者在將來某個時刻可以“還原”。由于git是分布式版本管理工具,所以git在不需要聯網的情況下也具有完整的版本管理能力。

創建一個版本庫非常簡單,可以使用git bash也可以使用TortoiseGit。首先,選擇一個合適的地方,創建一個空目錄(F:\repository)。

這時候直接使用TortoiseGit來創建

?版本庫創建成功,會在此目錄下創建一個.git的隱藏目錄(叫做版本庫),如下所示:

?

版本庫:這個.git就是版本庫將來文件都需要保存到版本庫中

工作目錄(工作區):包含“.git”目錄的目錄,也就是.git目錄的上一級目錄就是工作目錄。只有工作目錄中的文件或者是文件夾才能保存到版本庫中。

3.2、Git的使用步驟
1:創建版本庫

2:添加文件

3:修改文件

4:刪除文件

5:刪除文件并保留副本

6:將java工程提交到版本庫

7:忽略文件(提交版本庫時,可忽略某些文件)

1、創建版本庫
參考著上面的創建過程。

2、添加文件
在F:\repository目錄下創建一個mytest.txt文件

?

?

文本文件變為帶“+”號的圖標,表示該文件被放置到暫存區中:?

3.工作區和暫存區
Git和其他版本控制系統如SVN的一個不同之處就是有暫存區的概念。

什么是工作區(Working Directory)?

? 工作區就是你在電腦里能看到的目錄,比如我的reporstory/repo1文件夾就是一個工作區。

什么是版本庫?

? 在這個工作區目錄中的“.git”隱藏文件夾是版本庫。

? Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區,還有Git為我們自動創建的第一個分支master,以及指向master的一個指針叫HEAD。

這里的stage就是暫存區,master代表是主分支。

我們把文件往Git版本庫里添加的時候,是分兩步執行的:

第一步是用git add把文件添加進去,實際上就是把文件修改添加到暫存區;

第二步是用git commit提交更改,實際上就是把暫存區的所有內容提交到當前分支(默認是master)。【后期講解提交到分支上】

默認分支master
因為我們創建Git版本庫時,Git自動為我們創建了唯一一個master分支,所以,現在,git commit就是往master分支上提交更改。

把暫存區的所有內容提交到當前分支可以簡單理解為,需要提交的文件修改通通放到暫存區,然后,一次性提交暫存區的所有修改

查看版本庫,可點擊“版本庫瀏覽器”

mytest.txt就是在當前版本庫中提交到本地倉庫中的文件。

如果只是添加到了暫存區,那么版本庫瀏覽器是看不到提交了的文件的

為什么需要暫存區

我們這樣子來進行思考,要開發一個功能需要一周時間,所以每天都需要來做點事情,但是不可能說每天開發完成之后都要將代碼提交到遠程倉庫。如果別人拉取了最新代碼,而且進行了上線,那么將會來造成錯誤。【其實這里來使用分支介紹比較好】

所以需要一個臨時區域存儲的地方來存儲修改的代碼,然后在將代碼修改完成之后,提交到分支上去。這樣的一個流程來說是比較合適的。

4、修改文件

被版本庫管理的文件不可避免的要發生修改,此時只需要直接對文件修改即可。修改完畢后需要將文件的修改提交到版本庫。

對文件進行修改之后,沒有添加文件時候的添加到暫存區,而且會有紅色的感嘆號標識已經修改。

在mytest.txt文件上點擊右鍵,然后選擇“提交”:

查看修改歷史

在開發過程中可能會經常查看代碼的修改歷史,或者叫做修改日志。來查看某個版本是誰修改的,什么時間修改的,修改了哪些內容。

甚至如果修改有誤,用于恢復到歷史版本。

可以在修改的文件上點擊右鍵選擇“顯示日志”來查看文件的修改歷史

比較版本差異

還可以看到兩次信息提交的版本差異,選中兩個文件,右擊:比較版本差異

導出指定版本

可以【導出】指定版本,如果編寫錯誤,用于還原到歷史版本。

導出指定版本之后,是一個文件,也就是對應著指定版本的文件。

還原修改[風險版本和安全版本]

這里分為兩種情況:

①沒有提交到本地倉庫就想還原;【無法還原已經修改的內容,沒有日志顯示】

②提交到本地倉庫之后還原;【安全,日志歷史中有顯示】

當文件修改后不想把修改的內容提交,還想還原到未修改之前的狀態。此時可以使用“還原”功能

注意:此操作會撤銷所有未提交的修改,所以當使用還原操作是需要慎重慎重!!!

但是我想針對的僅僅只是當前的這個文件的提交,不想波及到其他文件。那么還有很好的方式。

利用導出指定版本獲取得到指定版本的文件,進行覆蓋,就可以獲取得到指定版本的信息文件。

這樣子操作還沒有風險!非常方便使用。

通過日志歷史可以查看到對應的變化信息。

5、刪除文件
刪除文件第一種方式

需要刪除無用的文件時可以使用git提供的刪除功能直接將文件從版本庫中刪除。

如果真的想刪除文件,可以選擇【提交】

如果文件版本庫也被刪除,此時本地文件徹底丟失了。

刪除文件第二種方式

刪除文件并保留副本

此時文件刪除,但是本地參考仍然存在,執行【提交】可以刪除版本庫的文件,但是mytest3.txt在本地會保留。

【提交】后,查看倉庫,可以查看本地是存在副本文件。

但是本地還是有這個文件的。

4、將java工程提交到版本庫

這里是為了做一個測試,隨便將一個HelloWorld的項目放到一個目錄下

1、創建版本庫

利用小烏龜右鍵創建版本庫

2、將文件添加到版本庫

點擊【確定】完成暫存區添加。

忽略文件
在此工程中,并不是所有文件都需要保存到版本庫中的例如“out”目錄及目錄下的文件就可以忽略。好在Git考慮到了大家的感受,這個問題解決起來也很簡單,在Git工作區的根目錄下創建一個特殊的.gitignore文件,然后把要忽略的文件名填進去,Git就會自動忽略這些文件。

如果使用TortoiseGit的話可以使用菜單項直接進行忽略。

選擇保留本地文件。完成后在此文件夾內會多出一個.gitignore文件,這個文件就是文件忽略文件,當然也可以手工編輯。其中的內容就是把.idea和out目錄忽略掉。

打開.gitinore文件

3、提交代碼到本地倉庫

將代碼添加到master分支上,其中.gitignore文件也需要添加到暫存區,然后提交到版本庫。

然后通過版本庫瀏覽器來進行觀察,可以看到對應的java工程下的文件夾。

5、以上步驟總結

這里只是大致羅列了上面的信息。具體的可以參考上面的過程。

6、遠程倉庫
遠程倉庫可以是Github,可以是Gitee,也可以是自己公司自己搭建的。

那么必須要來介紹一下現在的遠程倉庫都支持的協議。HTTPS和SSH方式

6.1、HTTP協議
HTTP操作的時候每次提交的時候都需要傳輸賬號密碼校驗。這種比較簡單,就不來進行過多說明。

基于賬號+密碼

6.1.1、使用tortoiseGit同步代碼到遠程倉庫
在遠程倉庫中新建一個倉庫,然后使用https方式同步到遠程倉庫。

因為這里使用的是賬號密碼,所以這里不需要來進行配置。

這時候推送需要輸入“用戶名”和“密碼”,對應注冊遠程倉庫的賬號和密碼。但是一般來說,在控制面板中會來記錄一下對應的賬號密碼:

然后查看對應的倉庫中,是否有對應的代碼操作。

6.2、SSH協議
SSH 為 Secure Shell(安全外殼協議)的縮寫,由 IETF 的網絡小組(Network Working Group)所制定。SSH 是目前較可靠,專為遠程登錄會話和其他網絡服務提供安全性的協議。利用 SSH 協議可以有效防止遠程管理過程中的信息泄露問題。

使用ssh協議通信時,推薦使用基于密鑰的驗證方式。你必須為自己創建一對密匙(第1步),并把公用密匙放在需要訪問的服務器上(第2步)。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在該服務器上你的主目錄下尋找你的公用密匙,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)并把它發送給客戶端軟件。客戶端軟件收到“質詢”之后就可以用你的私人密匙解密再把它發送給服務器。

來畫個圖具體說明一下這里的流程:

從上面可以看到,是基于公鑰私鑰的,而沒有基于賬號密碼。

6.2.1、SSH秘鑰生成

在windows下我們可以使用 Git Bash.exe來生成密鑰,可以通過開始菜單或者右鍵菜單打開Git Bash

?

git bash 執行命令,生命公鑰和私鑰

命令: ssh-keygen -t rsa -C ‘郵箱’
其中’郵箱’為注冊github的登錄賬號的郵箱(也可使用github注冊的賬號)
當你創建ssh的時候:-t 表示密鑰的類型 ,-b表示密鑰的長度,-C 用于識別這個密鑰的注釋 ,這個注釋你可以輸入任何內容,很多網站和軟件用這個注釋作為密鑰的名字

一路回車

執行命令完成后,在window本地用戶.ssh目錄C:\Users\用戶名.ssh下面生成如下名稱的公鑰和私鑰:

?

6.2.2、秘鑰設置
密鑰生成后需要在遠程倉庫上配置公鑰才可以順利訪問。公鑰也就是id_rsa.pub文件中的內容設置進去。

6.2.3、使用ssh協議同步到遠程倉庫
同步到遠程倉庫可以使用git bash也可以使用tortoiseGit

6.2.3.1、使用tortoiseGit同步本地代碼到遠程倉庫
由于TortoiseGit使用的ssh工具是“PuTTY”,git Bash使用的ssh工具是“openSSH”,如果想讓TortoiseGit也使用剛才生成的密鑰可以做如下配置:

右鍵,選擇“git 同步”

點擊管理:

注意】:首先保證:ssh客戶端需配置成git使用的客戶端

也就是git的安裝目錄中的usr/bin下面的ssh.exe文件配置。

這里只是配置了工具連接遠程倉庫的方式,而并沒有指定遠程倉庫的地址。所以還需要來進行修改。

說明:

origin:可以隨便寫的

Url:遠程倉庫的地址

推送URL:也是相同的(可以不填寫)

Putty密鑰:選擇剛才生成的密鑰中的私鑰

私鑰可以直接選擇對應的文件進來即可。

推送】:即push指令

查看遠程倉庫,即可看到最新的代碼。

7、從遠程倉庫獲取克隆代碼

克隆遠程倉庫也就是從遠程把倉庫復制一份到本地,克隆后會創建一個新的本地倉庫。選擇一個任意部署倉庫的目錄,然后克隆遠程倉庫。使用遠程倉庫的mytest3為例,使用https協議克隆。

在任意目錄點擊右鍵:

查看:F/repository/clone_repo目錄

?

8、從遠程倉庫獲取拉取代碼

Git中從遠程的分支獲取最新的版本到本地有這樣2個命令:

1. git fetch:相當于是從遠程獲取最新版本到本地,不會自動merge(合并代碼)
?
2. git pull:相當于是從遠程獲取最新版本并merge到本地,上述命令其實相當于git fetch 和 git merge

在實際使用中,git fetch更安全一些,但是不常用!因為在merge前,我們可以查看更新情況,然后再決定是否合并。

git pull更常用,因為即得代碼又可以自動合并

如果使用TortoiseGit的話可以從右鍵菜單中點擊“拉取”(pull)或者“獲取”(fetch)

8.1、版本沖突
這個是在提交代碼中經常遇到的事情。因為不同的開發人員再對同一個文件來進行操作之后,最終git也無法判斷到底使用哪個開發者提交的代碼來解決問題。所以交給開發者們自己來進行決定選擇哪個作為最終版本。

版本沖突是怎么產生的?分析一波:

開發者A需要在F文件做一些修改,開發者B也需要在F文件中做一些修改。

開發者A先提交,那么沒有任何問題;開發者B后提交,那么就有了問題。因為上一個版本中,開發者A\B的代碼是一樣的,但是對于開發者A來說,他只不過是在上一個版本中做了一個修改成為了一個新版本;而對于開發者B來說,也成了一個新版本,而不是在開發者A的基礎之上衍生的新版本。所以導致了沖突。

沖突也很好解決,到底是采用你的?采用我的?還是二者都采用?取決于開發者。

演示一下具體的案例:

這個時候,出現版本沖突,先拉取(pull)遠程倉庫的代碼到本地。

編輯沖突:

合并成一個新的文件。如上所示,將會合并成一個新文件。

這里的新文件,我們可以自行來進行修改即可!!!!

修改完成然后提交本地倉庫,再次提交到遠程倉庫中去。

9、分支介紹
在我們每次的提交,Git都把它們串成一條時間線,這條時間線就是一個分支。截止到目前,只有一條時間線,在Git里,這個分支叫主分支,即master分支。HEAD指針嚴格來說不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是當前分支。

如圖:只要有本地倉庫就有master分支:

一開始的時候,master分支是一條線,Git用master指向最新的提交,再用HEAD指向master,就能確定當前分支,以及當前分支的提交點:

那么也就是說,只要來操作分支,就可以知道當前分支的提交點在哪里。

切換分支,實際上就是切換HEAD的指向,指向當前分支最新的提交。

每次提交,master分支都會向前移動一步,這樣,隨著你不斷提交,master分支的線也越來越長。

當我們創建新的分支,例如dev時,Git新建了一個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表示當前分支在dev上:

你看,Git創建一個分支很快,因為除了增加一個dev指針,改改HEAD的指向,工作區的文件都沒有任何變化!

不過,從現在開始,對工作區的修改和提交就是針對dev分支了,比如新提交一次后,dev指針往前移動一步,而master指針不變:

假如我們在dev上的工作完成了,就可以把dev合并到master上。Git怎么合并呢?最簡單的方法,就是直接把master指向dev的當前提交,就完成了合并:?

所以Git合并分支也很快!就改改指針,工作區內容也不變!

合并完分支后,甚至可以刪除dev分支。刪除dev分支就是把dev指針給刪掉,刪掉后,我們就剩下了一條master分支

9.1、使用TortoiseGit實現分支管理

使用TortoiseGit管理分支就很簡單。

1、創建分支

在本地倉庫文件夾中點擊右鍵,然后從菜單中選擇“創建分支”:

?

如果想創建完畢后直接切換到新分支可以勾選“切換到新分支”選項或者從菜單中選擇“切換/檢出”來切換分支:

右鍵查看,再提交,指向新的分支。?

?

2、合并分支
分支切換到dev后就可以對工作區的文件進行修改,然后提交到dev分支,原來的master分支不受影響。例如我們修改mytest.txt中的內容,然后提交到dev分支。

注意:兩個分支在進行生成之后就是彼此獨立的。

切換到dev分支上,修改文件,同時提交到dev的分支上

?

切換到master分支,我們在修改mytest.txt,同時新建master.txt文件,并同時提交,發現沒有報錯信息。

不難發現,我們切換到master分支/dev分支后還是原來的內容:2個分支的開發互不影響,相互獨立的。

最后,我們將dev分支的內容合并到master分支,當前分支為master。從右鍵菜單中選擇“合并”:

再查看mytest.txt、dev.txt、master.txt的內容就已經更新了:?

總結?

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

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

相關文章

藍橋杯算法題匯總

一.線性表:鏈式 例題:旋轉鏈表 二.棧: 例題:行星碰撞問題 三.隊列 三.數組和矩陣 例題:

FPGA-VGA成像原理與時序

什么是VGA: VGA, Video Graphics Array。即視頻圖形陣列,具有分辨率高、顯示速率快、顏色豐富等優點。VGA接口不但是CRT顯示設備的標準接口,同樣也是LCD液晶顯示設備的標準接口,具有廣泛的應用范圍。在FGPA中,常廣泛用于圖像處理等領域。 VGA 顯示器成像原理 在 VGA 標準剛興…

C語言 vs Rust應該學習哪個?

C語言 vs Rust應該學習哪個? 在開始前我有一些資料,是我根據網友給的問題精心整理了一份「C語言的資料從專業入門到高級教程」, 點個關注在評論區回復“888”之后私信回復“888”,全部無償共享給大家!!&am…

bun 文件類型

Typescript Bun 原生支持開箱即用的 TypeScript。所有文件在執行之前都由 Bun 的快速本機轉譯器即時轉譯。與其他構建工具類似,Bun 不執行類型檢查;它只是從文件中刪除類型注釋。 bun index.js bun index.jsx bun index.ts bun index.tsxBun 運行時行為的某些方面…

linux系統如何安裝nginx

首先下載nginx安裝包 wget -c http://nginx.org/download/nginx-1.23.1.tar.gz然后解壓安裝包 tar -zxvf nginx-1.23.1.tar.gz如果服務器沒有wget,可以安裝一下,有的話可以跳過 yum install -y wget 然后安裝相關依賴 yum install -y gcc-c zlib zl…

最新企微hook開源版

免費的企微框架 支持文本消息,圖片消息,視頻消息,文件消息。 其他可自行下載測試。 有興趣可以進群交流。720192224 。群內不定期開源氣味hook源碼 BOOL WxWorkSendData(string data) { WX_GETOBJDATA obj { 0 }; //參數結構…

MATLAB練習題:排隊論問題的模擬

?講解視頻:可以在bilibili搜索《MATLAB教程新手入門篇——數學建模清風主講》。? MATLAB教程新手入門篇(數學建模清風主講,適合零基礎同學觀看)_嗶哩嗶哩_bilibili 下面我們來看一道排隊論的題目。假設某銀行工作時間內只有一個…

Kubernetes/k8s的核心概念

一、什么是 Kubernetes Kubernetes,從官方網站上可以看到,它是一個工業級的容器編排平臺。Kubernetes 這個單詞是希臘語,它的中文翻譯是“舵手”或者“飛行員”。在一些常見的資料中也會看到“ks”這個詞,也就是“k8s”&#xff…

如何解決代理ip服務器連接問題

在當今的數字化時代,互聯網連接已成為生活和工作中不可或缺的一部分。然而,在嘗試訪問互聯網資源時,用戶有時會遇到“代理服務器可能有問題,或地址不正確(你尚未連接)”的錯誤提示。這種情況通常表明計算機的網絡設置存在問題&…

自然語言處理之語言模型(LM):用c++通過自然語言處理技術分析語音信號音高

要通過自然語言處理技術分析語音信號音高,我們可以采用以下步驟: 首先,我們需要獲取語音信號的原始音頻數據。可以使用C中的音頻處理庫(例如PortAudio或ALSA)來捕獲音頻輸入并將其轉換為數字音頻數據。 接下來&#x…

python統計分析——廣義線性模型的評估

參考資料:用python動手學統計學 殘差是表現數據與模型不契合的程度的重要指標。 1、導入庫 # 導入庫 # 用于數值計算的庫 import numpy as np import pandas as pd import scipy as sp from scipy import stats # 導入繪圖的庫 import matplotlib.pyplot as plt i…

mybatis中if的test如何判斷雙等號(==)

我們在寫mybatis.xml時往往會寫!&#xff0c;如&#xff1a; <if test"validType ! null and validType ! "> </if>當時如何判斷等于某一個值呢&#xff0c;如下將test的雙引號改為單引號&#xff0c;值用雙引號&#xff1a; <if testvalidType &q…

面經 | Java創建線程的三種方式

利用JUC包創建線程的三種方式&#xff1a; 通過繼承Thread類創建線程類實現Runnable接口創建線程類通過Callable和Future接口創建線程 繼承Thread類創建線程 class Thread1 extends Thread {Overridepublic void run() {System.out.println("啟動線程1");} }實現R…

第七篇:微信小程序的跳轉頁面

前提&#xff1a;建議還沒學HTML、CSS、JavaScript、JSON、vue、Ajax的兄弟姐妹們&#xff0c;先去把這些基礎補好過一遍&#xff0c;不然不好理解微信小程序 前面這一篇已經講過一次<navigator>跳轉頁面的用法了&#xff0c;今天詳細講解一下 回顧&#xff1a; 小程序…

Lesson 1 introduction of machine /deep learning

聽課&#xff08;李宏毅老師的&#xff09;筆記&#xff0c;方便梳理框架&#xff0c;以作復習之用。本節課主要介紹了什么是機器學習&#xff0c;機器學習的類型和流程&#xff0c;用一個現實中的例子詳細地展示了整個工作流程。 1. 機器學習的定義 2. 不同的函數類型 預測數…

MyBatis 學習(四)之 SQL 映射文件

目錄 1 SQL 映射文件介紹 2 select 元素 3 insert 元素 4 update 和 delete 元素 5 sql 元素 6 parameterType 元素 7 resultType 元素 8 resultMap 元素&#xff08;重要&#xff09; 9 參考文檔 1 SQL 映射文件介紹 映射器是 MyBatis 中最復雜并且是最重要的…

【軟考中級】系統集成項目管理工程師—案例分析基礎

軟考中級——系統集成項目管理工程師 案例分析基礎 考試時間及要求 中級考試案例分析5道題&#xff0c;時間150分鐘&#xff0c;時間充裕。&#xff08;高級考試案例分析3道題【高級一般第一題都是找錯、第二題改錯、第三題默寫】&#xff0c;時間90分鐘、平均每道題花30分鐘…

Vue(3.3.4)+three.js(0.161.0)實現3D可視化地圖

一.前言 由于最近在學習three.js,所以觀摩了一下掘金&#xff0c;csdn等網站上的有關這部分的內容&#xff0c;剛好看到一個帶你入門three.js——從0到1實現一個3d可視化地圖 - 掘金 (juejin.cn)&#xff0c;再加上我的專業屬性是地理相關&#xff0c;可以說是專業對口&#xf…

Java使用ffmpeg指令實現音頻格式轉換

針對Linux環境下如何安裝ffmpeg請看上一篇文章Linux上搭建并使用ffmpeg&#xff08;Java&#xff09;-CSDN博客 public static void voiceChangeFormat(String localPath, String targetPath) {List<String> command new ArrayList<>();command.add("ffmpeg…

存儲xss實現獲取cookie(本地實戰)

實戰更能體驗收獲&#xff01;&#xff01;&#xff01; 環境準備&#xff1a; 1.phpstudy 2.dvwa靶場 實戰 首先我們在phpstudy指定的localhost網站目錄下編寫一個xss.php文件&#xff0c;內容如下&#xff1a; <?php $cookie $_GET[cookie]; $ip getenv (REMOTE_…