实时代码模板

Live Templates

更加高效的写一些固定模式的代码,以提高编码效率,同时也可以增加个性化
在输入 sys 后按 Tab 键,即立即生成预设语句。如果按 Ctrl + J 则会先提示与之匹配的实时代码模板介绍,然后还需按 Enter 才可完成预设语句的生成

环绕模板 - 还没学会怎么弄~~前端用的

文件代码模板

在项目中创建某些类型文件时,就已经在对应这些新文件中预设了代码内容
文件代码模板预设的变量

PACKAGENAMEthenameofthetargetpackagewherethenewclassorinterfacewillbecreated. P A C K A G E N A M E − t h e n a m e o f t h e t a r g e t p a c k a g e w h e r e t h e n e w c l a s s o r i n t e r f a c e w i l l b e c r e a t e d . <script type="math/tex" id="MathJax-Element-1">{PACKAGE_NAME} - the name of the target package where the new class or interface will be created. </script>{PROJECT_NAME} - the name of the current project.
FILENAMEthenameofthePHPfilethatwillbecreated. F I L E N A M E − t h e n a m e o f t h e P H P f i l e t h a t w i l l b e c r e a t e d . <script type="math/tex" id="MathJax-Element-2">{FILE_NAME} - the name of the PHP file that will be created. </script>{NAME} - the name of the new file which you specify in the New File dialog box during the file creation.
USERtheloginnameofthecurrentuser. U S E R − t h e l o g i n n a m e o f t h e c u r r e n t u s e r . <script type="math/tex" id="MathJax-Element-3">{USER} - the login name of the current user. </script>{DATE} - the current system date.
TIMEthecurrentsystemtime. T I M E − t h e c u r r e n t s y s t e m t i m e . <script type="math/tex" id="MathJax-Element-4">{TIME} - the current system time. </script>{YEAR} - the current year.
MONTHthecurrentmonth. M O N T H − t h e c u r r e n t m o n t h . <script type="math/tex" id="MathJax-Element-5">{MONTH} - the current month. </script>{DAY} - the current day of the month.
HOURthecurrenthour. H O U R − t h e c u r r e n t h o u r . <script type="math/tex" id="MathJax-Element-6">{HOUR} - the current hour. </script>{MINUTE} - the current minute.
PRODUCTNAMEthenameoftheIDEinwhichthefilewillbecreated. P R O D U C T N A M E − t h e n a m e o f t h e I D E i n w h i c h t h e f i l e w i l l b e c r e a t e d . <script type="math/tex" id="MathJax-Element-7">{PRODUCT_NAME} - the name of the IDE in which the file will be created. </script>{MONTH_NAME_SHORT} - the first 3 letters of the month name. Example: Jan, Feb, etc.
${MONTH_NAME_FULL} - full name of a month. Example: January, February, etc.

Emmet 一般前端工程师用得比较多
暂时没有研究

Postfix Completion
例子:

 public static void testPostfixCompletion(Integer num){
        if (num != null) {
            //输入num.notnull就可以生成了
        }
    }

Ctrl+Alt+s Editor - General - Postfix Completion
可以看到示例和使用方法

重要debug技巧

Ctrl+Alt+s
Build,Execution,Deployment - Debugger

设置 Debug 连接方式,默认是 Socket。Shared memory 是 Windows 特有的一个属性,一般在 Windows 系统下建议使用此设置,相对于 Socket 会快点

快捷键:整理起来

查看所选对象的方法常用有三种方式:
选中对象后,使用快捷键 Alt + F8。
选中对象后,拖动对象到 Watches。
选中对象后,鼠标悬停在对象上 2 秒左右。

需要过掉后面的所有断点的时候,我们不需要去掉这些断点,只需要点击左下角那个小圆点(mute breakpoint),点击小圆点之后,所有断点变成灰色,然后我们再在按快捷键 F9 即可过掉当前和后面所有的断点。

给断点设置进入的条件,ctrl+shift+F8,不满足条件就跳过这个断点

更复杂的步入条件,在上面的基础上,再按一次ctrl+shift+F8
Pass count 表示跳过多少次后开始步入,比如 for 循环中,我们要查看一个变量循环 3 次后的结果就可以使用该方式

对于某些不重要的断点,只要步入一次就够了,就可以勾选选项Remove once hit,让它步入之后自动删除。

对于某些场景的断点,需要其他断点先触发之后再进行触发,可以选择此项
Disabled until selected bradkpoint is hit。默认选择的是: None

有时候当我们步入方法体之后,还想回退到方法体外。断点进入 addNum 方法后,点击 Drop Frame 按钮之后,断点重新回到方法体之外。

重要的重构

Refactor菜单
文件重命名shift+F6
移动或者复制 F6 F5,或者直接拖动文件到其他文件夹
Extract - 提取Java类代码

找个时间尝试一下

数据库管理工具

IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等等

对于数据库需要的依赖包,IntelliJ IDEA 可以自动帮我们下载,所以我们只要配置对应的连接参数即可

Database 常用的四个操作。

第一个按钮是:同步当前数据库连接。这个是最重要的操作,有一些情况下,当我们配置好连接之后,没有显示数据表,那就是需要点击该按钮进行同步。还有一种情况就是我们在 IntelliJ IDEA 之外用其他工具操作数据库,比如新建表。而此时 IntelliJ IDEA 的 Database 如果没有同步到新表,也是需要点击此按钮进行同步的。
第二个按钮是:配置当前连接,跟我们首次设置连接的界面是一样的。
第三个按钮是:断开当前的连接。

右键数据库,可以使用diagrams看到结构图

远程调试

Run/Debug Configurations
添加一个Remote
复制这句:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
端口不用改

把刚刚复制参数加个前缀,变成:

Linux(有单引号):export JAVA_OPTS=’-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005’
Windows(没有单引号):set JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

服务器端的配置:

Tomcat配置:
Tomcat 安装在 /usr/program/tomcat7
Tomcat 的执行程序:/usr/program/tomcat7/bin/catalina.sh
编辑 Tomcat 执行程序:vim /usr/program/tomcat7/bin/catalina.sh(Windows 是编辑:catalina.bat)
在该文件的最上面,添加我们刚刚复制的那句话:export JAVA_OPTS=’-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005’

Jetty配置:还没学用过,找个时间研究研究
jetty 不像Tomcat那样需要安装,只要有jetty的jar包就可以启动我们想要启动的应用
在启动应用的时候加入之前上边我们copy的-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005就可以了。
就像这样:java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar {your jetty path} {your port} –path {your war} 1>/dev/null 2>&1 &

IntelliJ IDEA 常用设置

代码提示和补充功能有一个特性:区分大小写
区分大小写的情况是这样的:比如我们在 Java 代码文件中输入 stringBuffer IntelliJ IDEA 是不会帮我们提示或是代码补充的,但是如果我们输入 StringBuffer 就可以进行代码提示和补充
设置为None

最右下角的图标:
Inspections 为最高等级检查,可以检查单词拼写,语法错误,变量使用,方法之间调用等。
Syntax 可以检查单词拼写,简单语法错误。
None 不设置检查。
一般设置为none

默认 IntelliJ IDEA 是没有开启自动 import 包的功能
设置为勾选开启,2个勾选

当我们 Java 类中导入的某个包下类超过这里设置的指定个数,就会换成用 * 号来代替
在Editor-Code Style-Java-Imports修改即可

IntelliJ IDEA 默认是会折叠空包的,在project设置小图标那里改Compact Empty选项即可
结构都是完整树状

省电模式:File - Power Save Mode 开启这种模式之后 IntelliJ IDEA 会关掉代码检查和代码提示等功能

按 Ctrl + Shift + N 进行打开某个文件的时候,我们可以直接定位到该文件的行数上,
比如file:10

对指定代码类型进行默认折叠或是展开的设置
ctrl+alt+s
editor - general - code folding

对代码进行垂直或是水平分组
一般在对大文件进行修改的时候,有些修改内容在文件上面,有些内容在文件下面,如果来回操作可能效率会很低,用此方法就可以好很多
在打开的文件页签上,右键-split垂直或者水平

拼写检查是一个很好的功能
ctrl+alt+s
editor - Inspections - spelling

Ctrl+D 复制当前行

默认 Ctrl + 空格 快捷键是基础代码提示、补充快捷键,但是由于我们中文系统基本这个快捷键都被输入法占用了,所以我们发现不管怎么按都是没有提示代码效果的,原因就是在此。我个人建议修改此快捷键为 Ctrl + 逗号

显示内存使用情况 Appearance - show memory indicator 在右下角会出现内存使用情况

窗口设置为pinned mode之后,在切换到其他组件窗口的时候,已设置该属性的窗口不会自动隐藏

再打开的文件页签上,右键 可以添加到收藏夹

通过 Alt + F1 + 1 快捷键来定位当前文件所在 Project 组件窗口中的位置

在editor-general中勾选 Change font size(Zoom) with Ctrl+Mouse 选项
Ctrl + 鼠标滚轮 快捷键来控制代码字体大小显示
同理,图片的在editor-Images中设置

默认 IntelliJ IDEA 是没有勾选 Show line numbers 显示行数的,勾选
默认 IntelliJ IDEA 是没有勾选 Show method separators 显示方法线的,勾选
在Editor-general-appearance中

选中要被折叠的代码按 Ctrl + Alt + T 快捷键,选择自定义折叠代码区域功能,如加上try-catch

project窗口设置:autoscroll from source,在切换文件页签的时候,project窗口会自动定位到文件位置

即使我们项目没有使用版本控制功能,IntelliJ IDEA 也给我们提供了本地文件历史记录。除了简单的记录之外,我们还可以给当前版本加标签
文件标签页上 右键 show history即可
加标签put label
对文件可以查看历史,文件夹也是可以查看各个文件变化的历史

代码检查功能 Analyze- inspect code

自带模拟请求工具 Rest Client,在开发时用来模拟请求是非常好用的,Tools-REST Client

自定义 TODO 功能非常好用,强烈建议平时开发要经常使用上
//todo
是系统自带的标签
在todo窗口,可以编辑自定义的todo标签,倒数第二个按钮,edit filter,按照提示添加即可

//todo
System.out.println("-----------YouMeek.com-----------todo测试值=" + todo测试 + "," + "当前类=DebuggerTest.main()");
//copywangtodo
System.out.println("-----------YouMeek.com-----------自定义tudo值=" + 自定义tudo + "," + "当前类=DebuggerTest.main()");

批量删除断点:点击两个叠在一起的红色球球图片,选择断点,取消即可

在打开很多文件的时候,IntelliJ IDEA 默认是把所有打开的文件名 Tab 单行显示的
在editor-general-editor tabs,把show tabs in single row去掉勾选
多行效率比单行高,因为单行会隐藏超过界面部分 Tab,这样找文件不方便

默认 IntelliJ IDEA 对于 Java 代码的单行注释是把注释的斜杠放在行数的最开头,我个人觉得这样的单行注释非常丑,整个代码风格很难看,所以一般会设置为单行注释的两个斜杠跟随在代码的头部
在editor - code style - Java - code generation中,去掉勾选 Line comment at first column

如果在 make 或 rebuild 过程中很慢,可以增加此堆内存设置,在Compiler中的heap size

横向太长的代码,在行数码的旁边右键,使用soft软分行查看即可

一个 Maven 多模块项目,在开发多模块的时候,经常会改到其他模块的代码,而模块与模块之间是相互依赖,如果不进行 install 就没办法使用到最新的依赖。
所以,为了减少自己手动 install 的过程,可以把 install 过程放在项目启动之前
edit configuration,选择maven,配置before launch即可,一般是clean install命令

默认 IntelliJ IDEA 是没有开启自动帮你生成 serialVersionUID 的,需要我们自行设置
需要先勾选:Serializable class without serialVersionUID
菜单位置 ctrl+alt+s editor-inspections-Java-Serialization issues
在已经继承了 Serializable 接口的类名上,把光标放在类名上(必须这样做),按 Alt + Enter,即可提示帮你生成 serialVersionUID 功能

设置默认浏览器,Tools - web browsers

推荐插件

如果 IntelliJ IDEA 打开一个它可以识别并且支持的文件类型,它会提示你它有对应的插件进行支持,你可以安装对应的插件来加以兼容此类文件
https://github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/plugins-settings.md

热部署

在 Java Web 开发中, 一般更新了 Java 文件后要手动重启 Tomcat 服务器, 才能生效, 浪费不少生命啊, 自从有了 JRebel 这神器的出现, 不论是更新 class 类还是更新 Spring 配置文件都能做到立马生效,大大提高开发效率

安装方法有两种
直接在 Tomcat 启动参数上面加上 JRebel 的参数
以插件的形式装到 IntelliJ IDEA 上
https://github.com/judasn/IntelliJ-IDEA-Tutorial/blob/master/jrebel-setup.md

== 第二部分到此结束 ==

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。