ive Templates 是什么,听上去感觉挺玄乎的。有的同学用过之后觉得简直太好用了,不能说大大提高了开发效率吧,至少也是小小的提高一下,节省了很多敲重复代码的时间。有的同学用过之后说:没什么用,奇技淫巧罢了。
就算你没听过这个概念,但是或多或少你可能都用到过一点,就算没有用过的话,也可能见到过一些,没吃过猪肉可能也见过猪跑,就像下面这样的操作。
总结一下呢,它就类似于一种快捷指令(神奇代码),只要你在 IDEA 中输入特定的字母组合,IDEA 就会帮你在当前输入的位置插入一段预先定义好的代码,代码可以是固定的,也可以定义一些上下文变量,适用于那些常用的、使用频率较高的声明或重复代码段。
比如声明静态 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 方法插入,虽然我们已经可以很熟练的盲打出下面这一段代码,但是只敲四个字母是不是会更快呢。
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 的方式循环,在一个数组或者列表变量下方使用。
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 系统下的,如果你用的是 windows,可以通过点击 code菜单项,找到 Sorround With,看看快捷键是什么。
C
实现一个 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();
}
有时候我们经常会高频词的使用一段相似的代码, 比如做网络开发的同学,会经常用到 Socket 相关的初始化代码。
对于这种我们自己经常要写的某些类似的代码段,就可以抽取出一个 Template 出来,方便我们使用。
下面我就实现一个自定的 Template,来看一下是不是大大简化了重复性劳动。有的同学可能觉得无所谓的事儿,复制、粘贴也挺省事儿。见仁见智吧,觉得有用的可以尝试一下,觉得鸡肋的也无所谓,反正也不影响最后的功能实现。
比如我最新在做一些系统优化的工作,这个过程中,我会频繁的用 commons-lang3的 StopWatch来看某些方法或者某些代码段的执行时间。比如下面的代码段:
StopWatch stopWatch=new StopWatch("代码段");
stopWatch.start();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
stopWatch.stop();
System.out.printf("执行时间 %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("执行时间 %s%n",stopWatch.toString());
$SELECTION$表示选中的部分,我们要监控的正好是某个方法或者某个代码段,所以正好可以用 Surround Templates,并且在内容中用了 $SELECTION$,模板就默认为 Surround Templates了。
$MESSAGE$就是一个占位符的作用,当我们插入这个模板后,光标会定位到这个占位符,我们就可以在需要定制的地方输入我们想要的内容了。在这里呢,由于我的一个方法中可能用到多个 StopWatch,所以正好在这儿占位,给不同的 StopWatch 赋予不同的名字。
可以通过下面的演示看一下效果。
有一些情况下,我们希望插入的内容不只是固定不变的代码段,而是希望加入一些上下文相关的内容,比如当前方法的入参,比如当前类名,比如当前方法名等。用下面这个例子说明一下。
有一个内置的模板叫做 soutm,它的描述是这样的:Prints current class and method names to System.out,打印当前类和方法名,我们看一下效果,直接将当前类和方法名 Study.main填充到了println参数位置上。
模板内容是这样的,其中用到了两个变量是表示当前类名的 $CLASS_NAME$和表示当前方法名的$METHOD_NAME$。
System.out.println("$CLASS_NAME$.$METHOD_NAME$");
更多的可用变量可以到 IDEA 官网查看,看到这些变量后,可能会打开你的思路,更近一步的为你提高开发效率。不过不用这些变量也没关系,上面这写其实差不多也够用了。
官网地址:https://www.jetbrains.com/help/idea/template-variables.html#predefined_functions
文主要介绍Java程序员学习的一些基本和高级工具。如果你是一位经验丰富的Java开发人员,拥有5到10年的经验,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机。
Java世界中存在许多工具,从Eclipse,NetBeans和IntelliJ IDEA等著名的IDE开始到Java开发人员应该知道的JVM分析和监视工具,如JConsole,VisualVM,Eclipse Memory Analyzer等。
尽管如此,在本文中,我将重点介绍适用于各种Java开发人员的通用工具,例如核心Java 开发人员和Web开发人员。
1. JIRA
Atlassian的JIRA是当前敏捷开发领域最重要的工具之一。它用于错误跟踪,问题跟踪和项目管理。如果你遵循敏捷开发方法,例如Sprint和Scrum,那么你必须了解JIRA。它允许您创建Spring循环并跟踪软件开发的进度。
JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公 司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。
2. Git
Git是Java程序员的另一个必备工具,它是一个免费的开源分布式版本控制系统,旨在快速高效地处理从很小到非常大的项目版本管理。Git易于学习,占用空间小,具有超强的性能。
最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是发现已经在很多其他自由软件项目中也使用了 Git。
3. Jenkins
Jenkins是一个用Java编写的开源自动化服务器。它有助于自动化软件开发,例如编译项目,运行单元测试,集成测试,生成文档以及在本地和远程存储库上载工件。主要用于:
● 持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
● 监控一些定时执行的任务。
它是在项目中持续集成中最流行的工具之一。如果你还没有开始使用Jenkins,那就从现在开始吧。
4. Selenium
Selenium是Web应用程序最好的软件测试框架之一。它提供了一种用于创作测试的回放工具,而无需学习测试脚本语言。Java开发人员可以使用Selenium来测试他们的HTML和JSP文件。
它还为Web浏览器自动化提供了各种工具和库。Selenium 现在存在2个版本,一个叫 selenium-core, 一个叫selenium-rc 。
5. Groovy
Groovy 是一种基于 JVM 的敏捷开发语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。你可以使用它编写构建脚本,测试脚本,甚至可以使用像Gradle和Spock这样的流行框架。
6、Spock
Spock 是适合 Java 和 Groovy 应用程序的一个测试框架。由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。如果你想提高你的单元测试技能,那么多花点时间在学习Spock上总是没错的。
7. Maven
如果你是一位经验丰富的Java开发人员,那么你一定非常了解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 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。
10. Linux
初学Linux最好从Linux命令行基础知识开始,Linux是一种自由和开放源码的类Unix操作系统,在你的职业生涯中起到重要的作用,每一个Java开发者都应该学Linux。
如果以上工具还有你没学会的,那就不要再错过了赶紧学起来。
来源:开源最前线(ID:OpenSourceTop)
文主要介绍Java程序员应该在2019年学习的一些基本和高级工具。如果你是一位经验丰富的Java开发人员,你可能对这些工具很熟悉,但如果不是,现在就是是开始学习这些工具的好时机。
Java世界中存在许多工具,从Eclipse,NetBeans和IntelliJ IDEA等著名的IDE开始到Java开发人员应该知道的JVM分析和监视工具,如JConsole,VisualVM,Eclipse Memory Analyzer等。
尽管如此,在本文中,我将重点介绍适用于各种Java开发人员的通用工具,例如核心Java 开发人员和Web开发人员。
Atlassian的JIRA是当前敏捷开发领域最重要的工具之一。它用于错误跟踪,问题跟踪和项目管理。如果你遵循敏捷开发方法,例如Sprint和Scrum,那么你必须了解JIRA。它允许您创建Spring循环并跟踪软件开发的进度。
JIRA 是目前比较流行的基于Java架构的管理系统,由于Atlassian公 司对很多开源项目实行免费提供缺陷跟踪服务,因此在开源领域,其认知度比其他的产品要高得多,而且易用性也好一些。
Git是Java程序员的另一个必备工具,它是一个免费的开源分布式版本控制系统,旨在快速高效地处理从很小到非常大的项目版本管理。Git易于学习,占用空间小,具有超强的性能。
最初 Git 的开发是为了辅助 Linux 内核开发的过程,但是发现已经在很多其他自由软件项目中也使用了 Git。
Jenkins是一个用Java编写的开源自动化服务器。它有助于自动化软件开发,例如编译项目,运行单元测试,集成测试,生成文档以及在本地和远程存储库上载工件。主要用于:
● 持续、自动地构建/测试软件项目,如CruiseControl与DamageControl。
● 监控一些定时执行的任务。
它是在项目中持续集成中最流行的工具之一。如果你还没有开始使用Jenkins,那就从现在开始吧。
Selenium是Web应用程序最好的软件测试框架之一。它提供了一种用于创作测试的回放工具,而无需学习测试脚本语言。Java开发人员可以使用Selenium来测试他们的HTML和JSP文件。
它还为Web浏览器自动化提供了各种工具和库。Selenium 现在存在2个版本,一个叫 selenium-core, 一个叫selenium-rc 。
Groovy 是一种基于 JVM 的敏捷开发语言,它结合了 Python、Ruby 和 Smalltalk 的许多强大的特性。你可以使用它编写构建脚本,测试脚本,甚至可以使用像Gradle和Spock这样的流行框架。
Spock 是适合 Java 和 Groovy 应用程序的一个测试框架。由于其JUnit运行程序,Spock与大多数IDE,构建工具和持续集成服务器兼容。如果你想提高你的单元测试技能,那么多花点时间在学习Spock上总是没错的。
如果你是一位经验丰富的Java开发人员,那么你一定非常了解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 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。
初学Linux最好从Linux命令行基础知识开始,Linux是一种自由和开放源码的类Unix操作系统,在你的职业生涯中起到重要的作用,每一个Java开发者都应该学Linux。
如果以上工具还有你没学会的,那就不要再错过了赶紧学起来。
*请认真填写需求信息,我们会在24小时内与您取得联系。