ive Templates 是什么,聽上去感覺挺玄乎的。有的同學用過之后覺得簡直太好用了,不能說大大提高了開發(fā)效率吧,至少也是小小的提高一下,節(jié)省了很多敲重復代碼的時間。有的同學用過之后說:沒什么用,奇技淫巧罷了。
就算你沒聽過這個概念,但是或多或少你可能都用到過一點,就算沒有用過的話,也可能見到過一些,沒吃過豬肉可能也見過豬跑,就像下面這樣的操作。
總結一下呢,它就類似于一種快捷指令(神奇代碼),只要你在 IDEA 中輸入特定的字母組合,IDEA 就會幫你在當前輸入的位置插入一段預先定義好的代碼,代碼可以是固定的,也可以定義一些上下文變量,適用于那些常用的、使用頻率較高的聲明或重復代碼段。
比如聲明靜態(tài) final 的 String,在不用 Live Tmeplates 的情況下,我們會手動在 IDEA 中依次敲出 "public static final String" 這一行代碼,當然可能借助 IDEA 的只能提示,每個單詞只需要敲前兩個字母。在使用了 Live Tmeplates 的情況下, 我們只需要敲出 psfs這四個字母,然后按回車鍵,IDEA 就會幫我們在 psfs這個位置插入 "public static final String" 這一行。
沒用過的同學是不是趕緊打開 IDEA 試一下呢?在設置界面,輸入 Live Templates,然后找到右側的 Java就可以看到內置的模板。不光有 Java 的,對于多種文件類型都有支持,比如 SQL 、JavaScript、JSP 、Kotlin 等。
下面介紹幾個 IDEA 內置的、常用的模板。
main 和 psvm
main 方法插入,雖然我們已經(jīng)可以很熟練的盲打出下面這一段代碼,但是只敲四個字母是不是會更快呢。
public static void main(String[] args){
}
下面一些是常用的變量聲明
psfs
public static final String
psfi
public static final int
prsf
private static final
St
String
下面是控制臺輸出,還有一些,不一一列舉了。
sout
文本輸出,最常用到的。
System.out.println();
souf
帶格式化的文本輸出。
System.out.printf();
fori
輸入完,按回車后,光標會在 i<的位置,等待輸入臨界值。
for (int i=0; i < ; i++) {
}
iter
用 forEach 的方式循環(huán),在一個數(shù)組或者列表變量下方使用。
List<String> array=new ArrayList<>();
for (String s1 : array) {
}
itco
用迭代器的方式迭代,同樣是在一個列表變量下方使用。
List<String> array=new ArrayList<>();
for (Iterator<String> iterator=array.iterator(); iterator.hasNext(); ) {
String next=iterator.next();
}
這種模板是在選中一段代碼后,然后使用快捷鍵 option+command+j調出提示框,然后選擇一個模板類型。
這個快捷鍵是 MAC 系統(tǒng)下的,如果你用的是 windows,可以通過點擊 code菜單項,找到 Sorround With,看看快捷鍵是什么。
C
實現(xiàn)一個 Callable
Callable<Object> callable=new Callable<Object>() {
public Object call() throws Exception {
System.out.println("hello");
}
};
RL 和 WL
插入一段讀鎖或寫鎖加解鎖代碼。
// 要先聲明一個讀寫鎖實例
ReadWriteLock readWriteLock=new ReentrantReadWriteLock();
readWriteLock.readLock().lock();
try {
System.out.println("hello");
} finally {
readWriteLock.readLock().unlock();
}
有時候我們經(jīng)常會高頻詞的使用一段相似的代碼, 比如做網(wǎng)絡開發(fā)的同學,會經(jīng)常用到 Socket 相關的初始化代碼。
對于這種我們自己經(jīng)常要寫的某些類似的代碼段,就可以抽取出一個 Template 出來,方便我們使用。
下面我就實現(xiàn)一個自定的 Template,來看一下是不是大大簡化了重復性勞動。有的同學可能覺得無所謂的事兒,復制、粘貼也挺省事兒。見仁見智吧,覺得有用的可以嘗試一下,覺得雞肋的也無所謂,反正也不影響最后的功能實現(xiàn)。
比如我最新在做一些系統(tǒng)優(yōu)化的工作,這個過程中,我會頻繁的用 commons-lang3的 StopWatch來看某些方法或者某些代碼段的執(zhí)行時間。比如下面的代碼段:
StopWatch stopWatch=new StopWatch("代碼段");
stopWatch.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
stopWatch.stop();
System.out.printf("執(zhí)行時間 %s%n",stopWatch.toString());
由于我比較懶,所以我不想每次都敲重復的內容,連粘貼復制都不想。所以就想到了 Live Template。
1、打開 IDEA 的設置窗口,找到 Editor 下的 Live Templates,在右側找到 Java,點擊最右側的加號。
2、輸入這個 Template 的名字,到時候可以在編輯器中通過輸入這個名字來插入這個模板。
輸入描述,幫助我們記憶。
最后輸入模板的內容。
我給這個模板起名為 watch,模板內容如下:
StopWatch stopWatch=new StopWatch("$MESSAGE$");
stopWatch.start();
$SELECTION$
stopWatch.stop();
System.out.printf("執(zhí)行時間 %s%n",stopWatch.toString());
$SELECTION$表示選中的部分,我們要監(jiān)控的正好是某個方法或者某個代碼段,所以正好可以用 Surround Templates,并且在內容中用了 $SELECTION$,模板就默認為 Surround Templates了。
$MESSAGE$就是一個占位符的作用,當我們插入這個模板后,光標會定位到這個占位符,我們就可以在需要定制的地方輸入我們想要的內容了。在這里呢,由于我的一個方法中可能用到多個 StopWatch,所以正好在這兒占位,給不同的 StopWatch 賦予不同的名字。
可以通過下面的演示看一下效果。
有一些情況下,我們希望插入的內容不只是固定不變的代碼段,而是希望加入一些上下文相關的內容,比如當前方法的入?yún)ⅲ热绠斍邦惷热绠斍胺椒取S孟旅孢@個例子說明一下。
有一個內置的模板叫做 soutm,它的描述是這樣的:Prints current class and method names to System.out,打印當前類和方法名,我們看一下效果,直接將當前類和方法名 Study.main填充到了println參數(shù)位置上。
模板內容是這樣的,其中用到了兩個變量是表示當前類名的 $CLASS_NAME$和表示當前方法名的$METHOD_NAME$。
System.out.println("$CLASS_NAME$.$METHOD_NAME$");
更多的可用變量可以到 IDEA 官網(wǎng)查看,看到這些變量后,可能會打開你的思路,更近一步的為你提高開發(fā)效率。不過不用這些變量也沒關系,上面這寫其實差不多也夠用了。
官網(wǎng)地址:https://www.jetbrains.com/help/idea/template-variables.html#predefined_functions
文主要介紹Java程序員學習的一些基本和高級工具。如果你是一位經(jīng)驗豐富的Java開發(fā)人員,擁有5到10年的經(jīng)驗,你可能對這些工具很熟悉,但如果不是,現(xiàn)在就是是開始學習這些工具的好時機。
Java世界中存在許多工具,從Eclipse,NetBeans和IntelliJ IDEA等著名的IDE開始到Java開發(fā)人員應該知道的JVM分析和監(jiān)視工具,如JConsole,VisualVM,Eclipse Memory Analyzer等。
盡管如此,在本文中,我將重點介紹適用于各種Java開發(fā)人員的通用工具,例如核心Java 開發(fā)人員和Web開發(fā)人員。
1. JIRA
Atlassian的JIRA是當前敏捷開發(fā)領域最重要的工具之一。它用于錯誤跟蹤,問題跟蹤和項目管理。如果你遵循敏捷開發(fā)方法,例如Sprint和Scrum,那么你必須了解JIRA。它允許您創(chuàng)建Spring循環(huán)并跟蹤軟件開發(fā)的進度。
JIRA 是目前比較流行的基于Java架構的管理系統(tǒng),由于Atlassian公 司對很多開源項目實行免費提供缺陷跟蹤服務,因此在開源領域,其認知度比其他的產品要高得多,而且易用性也好一些。
2. Git
Git是Java程序員的另一個必備工具,它是一個免費的開源分布式版本控制系統(tǒng),旨在快速高效地處理從很小到非常大的項目版本管理。Git易于學習,占用空間小,具有超強的性能。
最初 Git 的開發(fā)是為了輔助 Linux 內核開發(fā)的過程,但是發(fā)現(xiàn)已經(jīng)在很多其他自由軟件項目中也使用了 Git。
3. Jenkins
Jenkins是一個用Java編寫的開源自動化服務器。它有助于自動化軟件開發(fā),例如編譯項目,運行單元測試,集成測試,生成文檔以及在本地和遠程存儲庫上載工件。主要用于:
● 持續(xù)、自動地構建/測試軟件項目,如CruiseControl與DamageControl。
● 監(jiān)控一些定時執(zhí)行的任務。
它是在項目中持續(xù)集成中最流行的工具之一。如果你還沒有開始使用Jenkins,那就從現(xiàn)在開始吧。
4. Selenium
Selenium是Web應用程序最好的軟件測試框架之一。它提供了一種用于創(chuàng)作測試的回放工具,而無需學習測試腳本語言。Java開發(fā)人員可以使用Selenium來測試他們的HTML和JSP文件。
它還為Web瀏覽器自動化提供了各種工具和庫。Selenium 現(xiàn)在存在2個版本,一個叫 selenium-core, 一個叫selenium-rc 。
5. Groovy
Groovy 是一種基于 JVM 的敏捷開發(fā)語言,它結合了 Python、Ruby 和 Smalltalk 的許多強大的特性。你可以使用它編寫構建腳本,測試腳本,甚至可以使用像Gradle和Spock這樣的流行框架。
6、Spock
Spock 是適合 Java 和 Groovy 應用程序的一個測試框架。由于其JUnit運行程序,Spock與大多數(shù)IDE,構建工具和持續(xù)集成服務器兼容。如果你想提高你的單元測試技能,那么多花點時間在學習Spock上總是沒錯的。
7. Maven
如果你是一位經(jīng)驗豐富的Java開發(fā)人員,那么你一定非常了解Maven了,Apache Maven是一個構建和項目管理工具,基于項目對象模型(POM)的概念,Maven可用于管理項目的生成、報告和文檔記錄。
Maven的另一個有用特性是依賴關系管理,由于我們在Java項目中使用了大量第三方庫,因此手動管理每個JAR及其依賴項可能非常麻煩,Maven通過自動為你下載正確的JAR來幫助你解決問題
8. Gradle
Gradle 是一個基于 Apache Ant 和 Apache Maven 概念的項目自動化構建工具。它也是Android的默認構建工具。
它引入了基于Groovy的特定于域的語言(DSL),而不是Apache Maven用于聲明項目配置的XML,這樣有利于配置項目依賴關系以及用戶的項目自定義
為什么選擇Gradle在Ant或Maven?因為它結合了其他構建工具的最佳特性,例如它具有Ant的靈活性和控制,Ivy的依賴管理,Maven的配置和插件的約定,以及可以在Ant上使用Groovy DSL。這使它成為Java項目的最佳構建工具。
9. Docker
Docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)。幾乎沒有性能開銷,可以很容易地在機器和數(shù)據(jù)中心中運行。最重要的是,他們不依賴于任何語言、框架或包裝系統(tǒng)。
10. Linux
初學Linux最好從Linux命令行基礎知識開始,Linux是一種自由和開放源碼的類Unix操作系統(tǒng),在你的職業(yè)生涯中起到重要的作用,每一個Java開發(fā)者都應該學Linux。
如果以上工具還有你沒學會的,那就不要再錯過了趕緊學起來。
來源:開源最前線(ID:OpenSourceTop)
文主要介紹Java程序員應該在2019年學習的一些基本和高級工具。如果你是一位經(jīng)驗豐富的Java開發(fā)人員,你可能對這些工具很熟悉,但如果不是,現(xiàn)在就是是開始學習這些工具的好時機。
Java世界中存在許多工具,從Eclipse,NetBeans和IntelliJ IDEA等著名的IDE開始到Java開發(fā)人員應該知道的JVM分析和監(jiān)視工具,如JConsole,VisualVM,Eclipse Memory Analyzer等。
盡管如此,在本文中,我將重點介紹適用于各種Java開發(fā)人員的通用工具,例如核心Java 開發(fā)人員和Web開發(fā)人員。
Atlassian的JIRA是當前敏捷開發(fā)領域最重要的工具之一。它用于錯誤跟蹤,問題跟蹤和項目管理。如果你遵循敏捷開發(fā)方法,例如Sprint和Scrum,那么你必須了解JIRA。它允許您創(chuàng)建Spring循環(huán)并跟蹤軟件開發(fā)的進度。
JIRA 是目前比較流行的基于Java架構的管理系統(tǒng),由于Atlassian公 司對很多開源項目實行免費提供缺陷跟蹤服務,因此在開源領域,其認知度比其他的產品要高得多,而且易用性也好一些。
Git是Java程序員的另一個必備工具,它是一個免費的開源分布式版本控制系統(tǒng),旨在快速高效地處理從很小到非常大的項目版本管理。Git易于學習,占用空間小,具有超強的性能。
最初 Git 的開發(fā)是為了輔助 Linux 內核開發(fā)的過程,但是發(fā)現(xiàn)已經(jīng)在很多其他自由軟件項目中也使用了 Git。
Jenkins是一個用Java編寫的開源自動化服務器。它有助于自動化軟件開發(fā),例如編譯項目,運行單元測試,集成測試,生成文檔以及在本地和遠程存儲庫上載工件。主要用于:
● 持續(xù)、自動地構建/測試軟件項目,如CruiseControl與DamageControl。
● 監(jiān)控一些定時執(zhí)行的任務。
它是在項目中持續(xù)集成中最流行的工具之一。如果你還沒有開始使用Jenkins,那就從現(xiàn)在開始吧。
Selenium是Web應用程序最好的軟件測試框架之一。它提供了一種用于創(chuàng)作測試的回放工具,而無需學習測試腳本語言。Java開發(fā)人員可以使用Selenium來測試他們的HTML和JSP文件。
它還為Web瀏覽器自動化提供了各種工具和庫。Selenium 現(xiàn)在存在2個版本,一個叫 selenium-core, 一個叫selenium-rc 。
Groovy 是一種基于 JVM 的敏捷開發(fā)語言,它結合了 Python、Ruby 和 Smalltalk 的許多強大的特性。你可以使用它編寫構建腳本,測試腳本,甚至可以使用像Gradle和Spock這樣的流行框架。
Spock 是適合 Java 和 Groovy 應用程序的一個測試框架。由于其JUnit運行程序,Spock與大多數(shù)IDE,構建工具和持續(xù)集成服務器兼容。如果你想提高你的單元測試技能,那么多花點時間在學習Spock上總是沒錯的。
如果你是一位經(jīng)驗豐富的Java開發(fā)人員,那么你一定非常了解Maven了,Apache Maven是一個構建和項目管理工具,基于項目對象模型(POM)的概念,Maven可用于管理項目的生成、報告和文檔記錄。
Maven的另一個有用特性是依賴關系管理,由于我們在Java項目中使用了大量第三方庫,因此手動管理每個JAR及其依賴項可能非常麻煩,Maven通過自動為你下載正確的JAR來幫助你解決問題
Gradle 是一個基于 Apache Ant 和 Apache Maven 概念的項目自動化構建工具。它也是Android的默認構建工具。
它引入了基于Groovy的特定于域的語言(DSL),而不是Apache Maven用于聲明項目配置的XML,這樣有利于配置項目依賴關系以及用戶的項目自定義
為什么選擇Gradle在Ant或Maven?因為它結合了其他構建工具的最佳特性,例如它具有Ant的靈活性和控制,Ivy的依賴管理,Maven的配置和插件的約定,以及可以在Ant上使用Groovy DSL。這使它成為Java項目的最佳構建工具。
Docker 是一個開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)布到任何流行的 Linux 機器上,也可以實現(xiàn)虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app)。幾乎沒有性能開銷,可以很容易地在機器和數(shù)據(jù)中心中運行。最重要的是,他們不依賴于任何語言、框架或包裝系統(tǒng)。
初學Linux最好從Linux命令行基礎知識開始,Linux是一種自由和開放源碼的類Unix操作系統(tǒng),在你的職業(yè)生涯中起到重要的作用,每一個Java開發(fā)者都應該學Linux。
如果以上工具還有你沒學會的,那就不要再錯過了趕緊學起來。
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。