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