必先利其器之 IDEA 磨刀好杀猪
必先利其器之 IDEA 磨刀好殺豬
- 1. idea 的安裝
- 1.1 idea 的安裝
- 1.2 idea 的XX
- 2. idea 的常用設置
- 2.1 JDK 設置
- 2.2 MAVEN 設置
- 2.3 字體大小設置
- 2.4 自動導包設置
- 2.5 顯示行號設置
- 2.6 Tab 頁多行顯示設置
- 2.6 文件編碼設置
- 2.7 自動提示不區分大小寫
- 2.8 解決 Tomcat 中文亂碼
- 2.9 設置代碼行寬度
- 3. idea 的常用插件
- 3.1 Material Theme UI
- 3.2 codota
- 3.3 Free Mybaties Plugin
- 3.4 MybatiesX
- 3.5 Mybaties Log Plugin
- 3.6 GenerateSerialVersionUID
- 3.7 Grep Console
- 3.8 Gson Format
- 3.9 JavaBeanToJson
- 3.10 JRebel For IntelliJ
- 3.11 Key Permoter X
- 3.12 Lombok
- 3.13 Maven Hepler
- 3.14 QAplug - FindBugs
- 3.15 RestfulToolkit
- 3.16 SequenceDiagram
- 3.17 UML Support
- 3.18 Translation
- 4. idea 的常用快捷鍵
- 4.1 Mac 鍵盤符號和修飾鍵說明:
- 4.2 編輯快捷鍵
- 4.3 查詢替換快捷鍵
- 4.4 使用搜索快捷鍵
- 4.5 Debug 調試快捷鍵
- 4.6 Navigation(導航)快捷鍵
- 4.6 General(通用)快捷鍵
- 5. idea 的 Debug 技巧
- 5.1 Debug開篇
- 5.2 基本用法&快捷鍵
- 5.3 變量查看
- 5.4 計算表達式
- 5.5 智能步入
- 5.6 斷點條件設置
- 5.7 多線程調試
- 5.8 回退斷點
- 5.9 中斷Debug
1. idea 的安裝
1.1 idea 的安裝
??idea 的安裝非常簡單,可以直接去官網下載(官網地址:https://plugins.jetbrains.com/),目前版本都已經到達2020版本了,不過本篇文章是以 2019.3.5 版本技術演示。下載好軟件安裝直接下一步下一步安裝完成。
??
1.2 idea 的XX
??idea 的XX 可以私聊我哈,涉及版權問題,審核不通過!
??
2. idea 的常用設置
2.1 JDK 設置
??進行項目 JDK 和全局 JDK 的設置:
??
2.2 MAVEN 設置
??設置 maven 的地址、配置文件和倉庫地址:
??
2.3 字體大小設置
??可以設置字體、字號和行間距:
??
2.4 自動導包設置
??自動導包時,對于 1 √ 來說,IDEA 將在我們書寫代碼的時候自動幫我們優化引入的包,比如自動去掉一些沒有用到的包;對于 2 √ 來說,IDEA 將在我們書寫代碼的時候自動幫我們導入需要用到的包。但是對于那些同名的包,還是需要手動 Alt + Enter 進行導入的。
??
2.5 顯示行號設置
??設置代碼顯示行號及方法分隔:
??
2.6 Tab 頁多行顯示設置
??idea 默認一行顯示所有打開的頁面,一行展示不下就會關掉之前打開的頁面,這點對于開發人員來說很不爽,所有需要設置多 tab 展示頁面:1,關閉一行顯示;2.設置顯示 tab 頁上限
??
2.6 文件編碼設置
??idea 有的文件類型默認編碼為 GBK,而且對于 properties 文件的編碼也不是 UTF-8。如果我們隊 properties 文件進行中文的話,那么將會是一行看不懂的代碼。
??
2.7 自動提示不區分大小寫
??idea 默認自動提示區分大小寫,這種提示很不人道,極其考驗我的英文基礎,這里設置自動提示不區分大小寫:
??
2.8 解決 Tomcat 中文亂碼
??在 idea 中配置完 Tomcat 后,啟動 Tomcat 你會發現在 console 里面中文亂碼,通過如下設置可以解決亂碼問題:
??
2.9 設置代碼行寬度
??在編寫代碼的時候,有時候我們的一行代碼特別長,這樣就影響了代碼的可讀性,下面設置代碼行寬度,在代碼行超過設置的寬度時自動換行。(感覺效果不是特別的好)
??
3. idea 的常用插件
??idea 自帶不僅很多插件,而且還有很多優秀的插件供我們選擇,這些插件極大的提高了我們的開發效率,對于一個資深而又“”懶散的”開發人員來說,簡直是莫大的福音。對于插件我們可以在 idea 上直接下載安裝(估計沒有 VPN 話會很慢很痛苦);還可以直接去官網上下載安裝(地址:https://plugins.jetbrains.com/),下載完成,選擇 install plugins from disk 安裝。下面是我電腦上安裝的一些常用插件:
??
3.1 Material Theme UI
??最美主題:
??
3.2 codota
??智能提示(ctrl + shift + o)和尋找案例(ctrl + shift + Y):
??
3.3 Free Mybaties Plugin
??一款 idea 對 mybatis 的增強插件,主要可以功能如下:生成 mapper.xml 文件;快速從代碼到 mapper 文件的相互跳轉;mybatis 自動補全及錯誤提示。
??
3.4 MybatiesX
??這個插件的功能和上面Free Mybaties Plugin 插件功能大同小異,這里就不做演示了。
??
3.5 Mybaties Log Plugin
??該插件可以將執行的 SQL 完成的打印出來,效果如下:
??
3.6 GenerateSerialVersionUID
??當一個類 implements Serializable 的時候,我們都是加上 serialVersionUID,這個插件可以幫助我們快速實現:
??
3.7 Grep Console
??可以通過expression表達式過濾日志、給不同級別的日志或者給不同pattern的日志加上背景顏色與上層顏色。
??
3.8 Gson Format
??一鍵根據 Json 生成 Java 類:
??
3.9 JavaBeanToJson
??將一個類轉換成 Json 格式:
??
3.10 JRebel For IntelliJ
??idea 熱部署插件,以后啟動調試都是已 JReble 來啟動,tomcat 就可以放在一邊了,相對于 tomcat 的熱部署和 springboot 的熱部署要好用的多,不過要激活和配置:
??
3.11 Key Permoter X
??Key Promoter X 是一個提示插件,當你在IDEA里面使用鼠標的時候,如果這個鼠標操作是能夠用快捷鍵替代的,那么Key Promoter X會彈出一個提示框。
??
3.12 Lombok
??ombok 提供了簡單的注解的形式來幫助我們簡化消除一些必須有但顯得很臃腫的 java 代碼。通過使用對應的注解,可以在編譯源碼的時候生成對應的方法,所以不會影響任何運行效率,常見注解可以參考這一篇文章《Lombok 常用注解》。
??
3.13 Maven Hepler
??一般用這款插件來查看maven的依賴樹。在不使用此插件的情況下,要想查看maven的依賴樹就要使用Maven命令maven dependency:tree來查看依賴。想要查看是否有依賴沖突也可以使用mvn dependency:tree -Dverbose -Dincludes=:只查看關心的jar包,但是這樣還是需要我執行命令,并且當項目比較復雜的時候,這個過程是比較漫長的。maven helper就能很好的解決這個問題。
??一旦安裝了Maven Helper插件,只要打開pom文件,就可以打開該pom文件的Dependency Analyzer視圖(在文件打開之后,文件下面會多出這樣一個tab),進入Dependency Analyzer視圖之后有三個查看選項,分別是Conflicts(沖突)、All Dependencies as List(列表形式查看所有依賴)、All Dependencies as Tree(樹結構查看所有依賴)。并且這個頁面還支持搜索。很方便!并且使用該插件還能快速的執行maven命令。
??
3.14 QAplug - FindBugs
??幫助方向系統代碼隱藏的 bugs
??
3.15 RestfulToolkit
??接口自測工具;可以根據 Control URL 跳轉到對應的方法定義,可以替代 Postman 和 Postwoman :
??
3.16 SequenceDiagram
?? idea 自動生成時序圖,選中方法,查看時序圖:
??
3.17 UML Support
??可以查看 UML 類圖,是查看源碼的一大利器:
??
3.18 Translation
?? idea 翻譯插件,是英文不好的開發人員的一大福利:
??
4. idea 的常用快捷鍵
4.1 Mac 鍵盤符號和修飾鍵說明:
| ? Command | ?Shift | ? Option | ? Control |
| ?? Return/Enter | ? Delete | ? 向前刪除鍵(Fn+Delete) | ↑ 上箭頭 |
| ↓ 下箭頭 | ← 左箭頭 | → 右箭頭 | ? Page Up(Fn+↑) |
| ? Page Down(Fn+↓) | Home Fn + ← | End Fn + → | ? 右制表符(Tab鍵) |
| ? 左制表符(Shift+Tab) | ? Escape (Esc) |
4.2 編輯快捷鍵
| 基本的代碼補全(補全任何類、方法、變量) | Ctrl +Space | ? Space |
| 智能代碼補全(過濾器方法列表和變量的預期類型) | Ctrl+Shift+Space | ? ? Space |
| 補全語句 | Ctrl+Shift+Enter | ??? |
| 顯示方法參數 | Ctrl+P | ?P |
| 顯示提示、警告、錯誤等信息 | Ctrl+F1 | ?F1 |
| 生成代碼,生成 Getter、Setter、構造器等 | Alt+Insert | ?N / ?? / ?N |
| 重寫父類方法 | Ctrl+O | ?O |
| 實現接口方法 | Ctrl+I | ?I |
| 使用(if…else, try…catch, for, synchronized 等)包圍選中語句 | Ctrl+Alt+T | ??T |
| 使用“//”注釋或取消注釋 | Ctrl+/ | ?/ |
| 使用“/** **/”注釋或取消注釋 | Ctrl+Shift+/ | ??/ |
| 選擇代碼塊,連續按會增加選擇外層的代碼塊 | Ctrl+W | ?↑ |
| 與“Ctrl+W”相反,減少選擇代碼塊 | Ctrl+Shift+W | ?↓ |
| 顯示快速修復列表 | Alt+Enter | ?? |
| 格式化代碼 | Ctrl+Alt+L | ??L |
| 優化 Imports | Ctrl+Alt+O | ??O |
| 自動優化代碼縮進 | Ctrl+Alt+I | ??I |
| 縮進代碼/取消縮進代碼 | Tab/Shift+Tab | ? / ?? |
| 剪切代碼,未選擇代碼時剪切當前行 | Ctrl+X or Shift+Delete | ?X |
| 復制代碼,未選擇代碼時復制當前行 | Ctrl+C or Ctrl+Insert | ?C |
| 重復代碼,未選擇代碼時重復當前行 | Ctrl+D | ?D |
| 對選中內容進行大小寫切換 | Ctrl+Shift+U | ??U |
| 展開或收折疊碼塊 | Ctrl+NumPad+/- | ?+ / ?- |
| 展開所有代碼塊 | Ctrl+Shift+NumPad+ | ??+ |
| 折疊所有代碼塊 | Ctrl+Shift+NumPad- | ??- |
| 關閉當前編輯頁 | Ctrl+F4 | ?W |
| 查找接口的實現類 | CTRL+ALT+B | ??B |
| 復制類的全類名 | CTRL+ALT+SHIFT+C | ???C |
4.3 查詢替換快捷鍵
| 查詢任何東西 | Double SHIFT | Double ? |
| 文件內查找 | Ctrl+F | ?F |
| 文件內替換 | Ctrl+R | ?R |
| 全局查找(根據路徑) | Ctrl+Shift+F | ??F |
| 全局替換(根據路徑) | Ctrl+Shift+R | ??R |
4.4 使用搜索快捷鍵
| 查找被使用處 | Alt+F7 | ?F7 |
| 查找當前文件中的使用處 | Ctrl+F7 | ?F7 |
4.5 Debug 調試快捷鍵
| 單步調試,不進入函數內部 | F8 | F8 |
| 單步調試,進入函數內部 | F7 | F7 |
| 選擇要進入的函數/強制進入函數 | Shift+F7/Alt+Shift+F7 | ?F7 |
| 跳出函數 | Shift+F8 | ?F8 |
| 運行到斷點 | Alt+F9 | ?F9 |
| 執行表達式查看結果 | Alt+F8 | ?F8 |
| 繼續執行,進入下一個斷點或執行完程序 | F9 | ??R |
| 設置/取消當前行斷點 | Ctrl+F8 | ?F8 |
| 查看斷點 | Ctrl+Shift+F8 | ??F8 |
??
4.6 Navigation(導航)快捷鍵
| 查找所有 | Double Shift | Double? |
| 查找類 | Ctrl+N | ?O |
| 查找所有類型文件 | Ctrl+Shift+N | ??O |
| 左右切換打開的編輯tab頁 | Alt+Right/Left | ?← / ?→ |
| 關閉當前 Tab | Ctrl+Shift+F4 | ??F4 |
| 跳到指定行 | Ctrl+G | ?L |
| 顯示最近打開的文件 | Ctrl+E | ?E |
| 退回 / 前進到上一個操作的地方 | Ctrl+Alt+Left / Right | ??← / ??→ |
| 跳到實現類/方法 | Ctrl+Alt+B | ??B |
| 顯示文件結構 | Ctrl+F12 | ?F12 |
| 顯示類層級 | Ctrl+H | ?H |
| 顯示方法層級 | Ctrl+Shift+H | ??H |
| 顯示類/方法調用層級 | Ctrl+Alt+H | ??H |
4.6 General(通用)快捷鍵
| 切換全屏模式 | ??F | |
| 切換最大化編輯器 | Ctrl+Shift+F12 | ??F12 |
| 打開IDEA系統設置 | Ctrl+Alt+S | ?, |
| 打開項目結構對話框 | Ctrl+Alt+Shift+S | ?; |
| 打開命令終端 | Alt+F12 | ?F12 |
??
5. idea 的 Debug 技巧
5.1 Debug開篇
??首先看下IDEA中Debug模式下的界面。如下是在IDEA中啟動Debug模式,進入斷點后的界面。就簡單說下圖中標注的8個地方:
以Debug模式啟動服務,左邊的一個按鈕則是以Run模式啟動。在開發中,我一般會直接啟動Debug模式,方便隨時調試代碼。
斷點:在左邊行號欄單擊左鍵,或者快捷鍵Ctrl+F8 打上/取消斷點,斷點行的顏色可自己去設置。
Debug窗口:訪問請求到達第一個斷點后,會自動激活Debug窗口。如果沒有自動激活,可以去設置里設置。
調試按鈕:一共有8個按鈕,調試的主要功能就對應著這幾個按鈕,鼠標懸停在按鈕上可以查看對應的快捷鍵。在菜單欄Run里可以找到同樣的對應的功能。
服務按鈕:可以在這里關閉/啟動服務,設置斷點等。
方法調用棧:這里顯示了該線程調試所經過的所有方法,勾選右上角的[Show All Frames]按鈕,就不會顯示其它類庫的方法了,否則這里會有一大堆的方法。
[1] Variables:在變量區可以查看當前斷點之前的當前方法內的變量。
[2] Watches:查看變量,可以將Variables區中的變量拖到Watches中查看
??
5.2 基本用法&快捷鍵
??Debug調試的功能主要對應著圖一中4和5兩組按鈕:
1、首先說第一組按鈕,共8個按鈕,從左到右依次如下:
2、第二組按鈕,共7個按鈕,從上到下依次如下:
??
5.3 變量查看
??在Debug過程中,跟蹤查看變量的變化是非常必要的,這里就簡單說下IDEA中可以查看變量的幾個地方,相信大部分人都了解。
??1、如下,在IDEA中,參數所在行后面會顯示當前變量的值。
??2、光標懸停到參數上,顯示當前變量信息。點擊打開詳情如圖。我一般會使用這種方式,快捷方便。
??3、在Variables里查看,這里顯示當前方法里的所有變量。
??4、在Watches里,點擊New Watch,輸入需要查看的變量。或者可以從Variables里拖到Watche里查看。
??如果你發現你沒有Watches,可能在下圖所在的地方。
??
5.4 計算表達式
??在前面提到的計算表達式如圖的按鈕,Evaluate Expression (Alt + F8) 。可以使用這個操作在調試過程中計算某個表達式的值,而不用再去打印信息。
??1、按Alt + F8或按鈕,或者,你可以選中某個表達式再Alt + F8,彈出計算表達式的窗口,如下,回車或點擊Evaluate計算表達式的值。
??這個表達式不僅可以是一般變量或參數,也可以是方法,當你的一行代碼中調用了幾個方法時,就可以通過這種方式查看查看某個方法的返回值。
??2、設置變量,在計算表達式的框里,可以改變變量的值,這樣有時候就能很方便我們去調試各種值的情況了不是。
??
5.5 智能步入
??想想,一行代碼里有好幾個方法,怎么只選擇某一個方法進入。之前提到過使用Step Into (Alt + F7) 或者 Force Step Into (Alt + Shift + F7)進入到方法內部,但這兩個操作會根據方法調用順序依次進入,這比較麻煩。
??那么智能步入就很方便了,智能步入,這個功能在Run里可以看到,Smart Step Into (Shift + F7),如圖:
??按Shift + F7,會自動定位到當前斷點行,并列出需要進入的方法,如圖,點擊方法進入方法內部。如果只有一個方法,則直接進入,類似Force Step Into。
??
5.6 斷點條件設置
??通過設置斷點條件,在滿足條件時,才停在斷點處,否則直接運行。
通常,當我們在遍歷一個比較大的集合或數組時,在循環內設置了一個斷點,難道我們要一個一個去看變量的值?那肯定很累,說不定你還錯過這個值得重新來一次。
??1、在斷點上右鍵直接設置當前斷點的條件,如圖,我設置exist為true時斷點才生效。
??2、點擊View Breakpoints (Ctrl + Shift + F8),查看所有斷點。
????Java Line Breakpoints 顯示了所有的斷點,在右邊勾選Condition,設置斷點的條件。
????勾選Log message to console,則會將當前斷點行輸出到控制臺,如圖6.3
勾選Evaluate and log,可以在執行這行代碼是計算表達式的值,并將結果輸出到控制臺。
??
5.7 多線程調試
??一般情況下我們調試的時候是在一個線程中的,一步一步往下走。但有時候你會發現在Debug的時候,想發起另外一個請求都無法進行了?
??那是因為IDEA在Debug時默認阻塞級別是ALL,會阻塞其它線程,只有在當前調試線程走完時才會走其它線程。可以在View Breakpoints里選擇Thread,如圖,然后點擊Make Default設置為默認選項,也可以在斷點出右鍵進行設置。
??切換線程,在圖7.2中Frames的下拉列表里,可以切換當前的線程,如下我這里有兩個Debug的線程,切換另外一個則進入另一個Debug的線程。
??
5.8 回退斷點
??在調試的時候,想要重新走一下流程而不用再次發起一個請求?
??1、首先認識下這個方法調用棧,如圖8.1,首先請求進入DemoController的insertDemo方法,然后調用insert方法,其它的invoke我們且先不管,最上面的方法是當前斷點所在的方法。
??2、斷點回退
??所謂的斷點回退,其實就是回退到上一個方法調用的開始處,在IDEA里測試無法一行一行地回退或回到到上一個斷點處,而是回到上一個方法。
??回退的方式有兩種,一種是Drop Frame按鈕(圖8.2),按調用的方法逐步回退,包括三方類庫的其它方法(取消Show All Frames按鈕會顯示三方類庫的方法,如圖8.3)。
??第二種方式,在調用棧方法上選擇要回退的方法,右鍵選擇Drop Frame(圖8.4),回退到該方法的上一個方法調用處,此時再按F9(Resume Program),可以看到程序進入到該方法的斷點處了。
但有一點需要注意,斷點回退只能重新走一下流程,之前的某些參數/數據的狀態已經改變了的是無法回退到之前的狀態的,如對象、集合、更新了數據庫數據等等。
??
5.9 中斷Debug
??想要在Debug的時候,中斷請求,不要再走剩余的流程了?
??有些時候,我們看到傳入的參數有誤后,不想走后面的流程了,怎么中斷這次請求呢(后面的流程要刪除數據庫數據呢…),難道要關閉服務重新啟動程序?嗯,我以前也是這么干的。
??確切的說,我也沒發現可以直接中斷請求的方式(除了關閉服務),但可以通過Force Return,即強制返回來避免后續的流程,如圖9.1。
??點擊Force Return,彈出Return Value的窗口,我這個方法的返回類型為Map,所以,我這里直接返回 results,來強制返回,從而不再進行后續的流程。或者你可以new HashMap<>()。
總結
以上是生活随笔為你收集整理的必先利其器之 IDEA 磨刀好杀猪的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 工欲善其事必先利其器——AWS认证是你最
- 下一篇: P1_M4_L5 Lateral Dyn