每次换电脑,最最最头疼的事情莫过于安装各种软件和搭建开发环境。这算是不想换电脑的一个原因吧(最主要还是穷)。除非是电脑坏了开不了机或者点一下卡一下,真不想换电脑。每次换电脑都得折腾好久。
趁着这次换电脑了,顺便整理下IDEA安装使用及配置。
官网提供的详细使用文档,英文好的可以直接上手了
https://www.jetbrains.com/help/idea/getting-started.html
IDEA,全称IntelliJ IDEA,是 Java 语言的集成开发环境, IDEA 在业界被公认为是最好的 java 开发工具之一,一旦用上了就会上瘾。尤其在智能代码助手、代码自动提示、重构、 J2EE
支持、 Ant、 JUnit、 CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
IDEA在官网是这样解释自己的
Excel at enterprise, mobile and web development with Java, Scala and Groovy,
with all the latest modern technologies and frameworks available out of the
box.
简明翻译: IntelliJ IDEA 主要用于支持 Java、 Scala、 Groovy 等语言的开发工
具,同时具备支持目前主流的技术和框架,擅长于企业应用、移动应用和 Web 应
用的开发
IntelliJ IDEA 相比于Eclipse的优势
https://www.jetbrains.com/idea/download/#section=windows
DEA 分为两个版本: 旗舰版(Ultimate)和社区版(Community)。
旗舰版:收费(限 30 天免费试用),功能全面,插件丰富,但是收费,按年收费;
社区版:免费试用,功能相对而言不是很丰富,但是不影响开发使用。
以现目前最新版为例(现在最新版是idea-2021.3.2)
个人建议配置: 内存 8G 或以上, CPU 最好 i5 以上, 最好安装块固态硬盘(SSD),将 IDEA
安装在固态硬盘上,这样流畅度会加快很多
idea64.exe.vmoptions 是比较重要的配置文件,这里以我个人电脑为例(win10 64位 16G内存)
-Xms512m # 设置初始的内存数,增加该值可以提高 Java 程序的启动速度
-Xmx1500m #设置最大内存数,提高该值,可以减少内存 Garage 收集的频率,提高程序性能
-XX:ReservedCodeCacheSize=512m #保留代码占用的内存容量
-XX:+IgnoreUnrecognizedVMOptions
-XX:+UseG1GC
-XX:SoftRefLRUPolicyMSPerMB=50
-XX:CICompilerCount=2
-XX:+HeapDumpOnOutOfMemoryError
-XX:-OmitStackTraceInFastThrow
-ea
-Dsun.io.useCanonCaches=false
-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.attach.allowAttachSelf=true
-Djdk.module.illegalAccess.silent=true
-Dkotlinx.coroutines.debug=off
路径
C:\Users\用户.IntelliJIdea2019.3
这是 IDEA 的各种配置的保存目录。 这个设置目录有一个特性,就是你删除掉整
个目录之后,重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置,
所以很多时候如果你把 IntelliJ IDEA 配置改坏了,删掉该目录,一切都会还原到默认值
① config 目录
此目录为IDEA最重要的目录。目录主要记录了: IDE 主要配置功能、自定义的代码模板、自定义的文件
模板、自定义的快捷键、 Project 的 tasks 记录等等个性化的设置
② system目录
system 目录是 IntelliJ IDEA 系统文件目录,是 IntelliJ IDEA 与开发项目一个
桥梁目录, 里面主要有:缓存、索引、容器文件输出等等
这里选择 Create New Project
IntelliJ IDEA 没有类似 Eclipse 的工作空间的概念( Workspaces),最大单元就是
Project。 这里可以把 Project 理解为 Eclipse 中的 Workspace。
在HelloWorld类里声明主方法,控制台打印Hello World! 到此成功完成
在 Eclipse 中我们有 Workspace(工作空间)和 Project(工程)的概念,在 IDEA
中只有 Project(工程)和 Module(模块)的概念
① Eclipse 中 workspace 相当于 IDEA 中的 Project
②Eclipse 中 Project 相当于 IDEA 中的 Module
eclipse在同一窗口可以管理 n 个项目,这在IntelliJ IDEA 是无法做到的。
IntelliJ IDEA 提供的解决方案是打开多个项目实例,
即打开多个项目窗口。 即: 一个 Project 打开一个 Window 窗口
在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。 一个 ProjectIntelliJ IDEA 的安装、 配置与使用可以有多个 Module。目前主流的大型项目都是分布式部署的, 结构都是类似这种多 Module 结构
下图为若依项目模块截图,根据model命名可以看出,他们之间处于同一项目下,彼此之间有着不可分割的业务关系
相比多个Module项目,小项目就没这么复杂,IntelliJ IDEA创建项目的时候默认的就是单Module结构的.
① 怎么建立Module?
之后,我们可以在 Module 的 src 里写代码,此时 Project 工程下的 src 就没什么用了。可以删掉。
② 如何删除一个Module呢?
直到第二步完成,Module将彻底从磁盘上删除
file–>Settings 进入设置界面
① 设置主题
② 设置窗体及菜单的字体及大小
② 设置鼠标悬浮提示
③ 设置自动导包
④ 设置显示行号和方法间的分隔符
⑥ 设置取消单行显示 tabs 的操作
在打开很多文件的时候, IntelliJ IDEA 默认是把所有打开的文件名 Tab 单行显示的。如果需要多行显示文件,超出部分不折叠,则按照上图设置即可
① 设置默认的字体、字体大小、字体行间距
① 修改代码中注释的字体颜色
① 修改类头的文档注释信息
/**
@author xiezhr
@create ${YEAR}-${MONTH}-${DAY} ${TIME}
*/
① 设置项目文件编码格式
① 设置自动编译
① 编辑类
快捷键 | 快捷键说明 |
---|---|
Ctrl + Space | 补全代码,由于经常与操作系统的输入法的切换冲突,所以实际很少用。一般直接在 idea 中开启输入自动补全机制 |
Ctrl + Shift + Space | 在列出的可选项中只显示出你所输入的关键字最相关的信息。⭐ |
Ctrl + Shift + Enter | 代码补全后,自动在代码末尾添加分号结束符 |
Ctrl + P | 在某个方法中,调用该按键后,会展示出这个方法的调用参数列表信息 |
Ctrl + Q | 展示某个类或者方法的 API 说明文档 |
Ctrl + mouse | 跳进到某个类或者方法源代码中进行查看⭐ |
Alt + Insert | 自动生成某个类的 Getters, Setters, Constructors, hashCode/equals, toString 等代码 ⭐ |
Ctrl + O | 展示该类中所有覆盖或者实现的方法列表 |
Ctrl + Alt + T | 自动生成具有环绕性质的代码,比如:if…else,try…catch, for, synchronized 等等,使用前要先选择好需要环绕的代码块⭐ |
Ctrl + / | 对单行代码,添加或删除注释。分为两种情况:如果只是光标停留在某行,那么连续使用该快捷键,会不断注释掉下一行的代码;如果选定了某行代码(选定了某行代码一部分也算这种情况),那么连续使用该快捷键,会在添加或删除该行注释之间来回切换⭐ |
Ctrl + Shift + / | 对代码块,添加或删除注释。它与 Ctrl + / 的区别是,它只会在代码块的开头与结尾添加注释符号⭐ |
Ctrl + W | 选中当前光标所在的代码块,多次触发,代码块会逐级变大⭐ |
Ctrl + Shift + W | 是 Ctrl + W 的反向操作,多次触发,代码块会逐级变小,最小变为光标 |
Alt + Q | 展示包含当前光标所在代码的父节点信息,比如在 java 方法中调用,就会展示方法签名信息 |
Alt + Enter | 展示当前当前光标所在代码,可以变化的扩展操作 |
Ctrl + Alt + L | 格式化代码⭐ |
Ctrl + Alt + O | 去除没有实际用到的包,这在 java 类中特别有用⭐ |
Ctrl + Alt + I | 按照缩进的设定,自动缩进所选择的代码段 |
Tab / Shift + Tab | 缩进或者不缩进一次所选择的代码段⭐ |
Ctrl + X 或 Shift Delete | 剪切当前代码⭐ |
Ctrl + C 或 Ctrl + Insert | 拷贝当前代码⭐ |
Ctrl + V 或 Shift + Insert | 粘贴之前剪切或拷贝的代码⭐ |
Ctrl + Shift + V | 从之前的剪切或拷贝的代码历史记录中,选择现在需要粘贴的内容⭐ |
Ctrl + D | 复制当前选中的代码⭐ |
Ctrl + Y | 删除当前光标所在的代码行⭐ |
Ctrl + Shift + J | 把下一行的代码接续到当前的代码行 |
Ctrl + Enter | 当前代码行与下一行代码之间插入一个空行,原来所在的光标不变⭐ |
Shift + Enter | 当前代码行与下一行代码之间插入一个空行,原来光标现在处于新加的空行上⭐ |
Ctrl + Shift + U | 所选择的内容进行大小写转换⭐ |
Ctrl + Shift + ]/[ | 从当前光标所在位置开始,一直选择到当前光标所在代码段起始或者结束位置 |
Ctrl + Delete | 删除从当前光标所在位置开始,直到这个单词的结尾的内容 |
Ctrl + NumPad(+/-) | 展开或收缩代码段⭐ |
Ctrl + Shift + NumPad(+) | 展开所有代码段 |
Ctrl + Shift + NumPad(-) | 收缩所有代码段 |
Ctrl + F4 | 关闭当前标签页 |
Shift + F6 | 修改名字⭐ |
② 查找替换
快捷键 | 快捷键说明 |
---|---|
Ctrl + F | 在当前标签页中进行查找,还支持正则表达式⭐ |
F3 | 如果找到了多个查找结果,每调用一次就会跳到下一个结果,很方便哦 |
Shift + F3 | 是 F3 的反向操作,即每调用一次就会跳到上一个结果 |
Ctrl + R | 在当前标签页中进行替换操作⭐ |
Ctrl + Shift + F | 通过路径查找⭐ |
Ctrl + Shift + R | 通过路径替换⭐ |
图示 | 说明 |
---|---|
向上箭头 | 就是 快捷键【Shift + F3】,每调用一次就会跳到上一个结果 |
向下箭头 | 就是 快捷键【F3】,每调用一次就会跳到下一个结果 |
加号符号 | 把当前的高亮项加入到选中的列表中 |
减号符号 | 把当前的高亮项从选中的列表中移除 |
勾选符号 | 把所有的查找结果同时选中,这很适合批量操作 |
文本内的向上箭头 | 打开查询结果列表面板 |
两个框加一个向下箭头 | 更多选项 |
Match Case | 是否大小写敏感 |
Regex | 正则表达式 |
Words | 匹配单词 |
x matches | x 表示的是找到的记录数 |
④ 查看使用情况
快捷键 | 快捷键说明 |
---|---|
Alt + F7 | 在当前项目中的使用情况,会打开一个使用情况面板 |
Ctrl + F7 | 在当前文件中的使用情况,找的内容会低亮显示 |
Ctrl + Shift + F7 | 在当前文件中的使用情况,找的内容会高亮显示 |
Ctrl + Alt + F7 | 打开使用情况列表⭐ |
④ 编译运行
快捷键 | 快捷键说明 |
---|---|
Ctrl + F9 | 编译项目(如果之前有编译过,那么只会编译那些修改的类或者依赖的包⭐ |
Ctrl + Shift + F9 | 编译选中的范围(如果在某个类中,那么只会编译当前类) |
Alt + Shift + F10 | 会打开一个已经配置的运行列表,让你选择一个后,再运行 |
Alt + Shift + F9 | 会打开一个已经配置的运行列表,让你选择一个后,再以调试模式运行 |
Shift + F10 | 立即运行当前配置的运行实例,这个在单元测试中特别好用⭐ |
Shift + F9 | 立即以编译模式运行当前配置的运行实例⭐ |
Ctrl + Shift + F10 | 按照编辑器绑定的文件类型,运行相关的程序。比如一个 html 页面,调用后,会直接打开一个浏览器 |
⑤ 调试
快捷键 | 快捷键说明 |
---|---|
F8 | 跳到当前代码下一行⭐ |
F7 | 跳入到调用的方法内部代码⭐ |
Shift + F7 | 会打开一个面板,让你选择具体要跳入的类方法,这个在复杂的嵌套代码中特别有用 |
Shift + F8 | 跳出当前的类,到上一级⭐ |
Alt + F9 | 让代码运行到当前光标所在处,非常棒的功能⭐ |
Alt + F8 | 打开一个表达式面板,然后进行进一步的计算 |
F9 | 结束当前断点的本轮调试(因为有可能代码会被调用多次,所以调用后只会结束当前的这一次);如果有下一个断点会跳到下一个断点中⭐ |
Ctrl + F8 | 在当前光标处,添加或者删除断点 |
Ctrl + Shift + F8 | 打开当前断点的面板,可以进行条件过滤哦 |
⑥ 导航
快捷键 | 快捷键说明 |
---|---|
Ctrl + N | 打开类查询框⭐ |
Ctrl + Shift + N | 打开文件查询框⭐ |
Ctrl + Alt + Shift + N | 打开文本查询框 |
Alt + 右箭头/左箭头 | 跳到下一个/上一个编辑器标签 |
F12 | 如果当前在编辑窗口,触发后,会跳到之前操作过的工具栏上 |
ESC | 从工具栏上,再跳回原来的编辑窗口,一般与 F12 配合使用 |
Shift + ESC | 隐藏最后一个处于活跃状态的工具窗口 |
Ctrl + Shift + F4 | 同时关闭处于活动状态的某些工具栏窗口 |
Ctrl + G | 跳转至某一行代码⭐ |
Ctrl + E | 打开曾经操作过的文件历史列表 |
Ctrl + Alt + 右箭头/左箭头 | 在曾经浏览过的代码行中来回跳 |
Ctrl + Shift + Backspace | 跳转到最近的编辑位置(如果曾经编辑过代码) |
Alt + F1 | 打开一个类型列表,选择后会导航到当前文件或者内容的具体与类型相关的面板中 |
Ctrl + B 或 Ctrl + 鼠标左键 | 如果是类,那么会跳转到当前光标所在的类定义或者接口;如果是变量,会打开一个变量被引用的列表⭐ |
Ctrl + Alt + B | 跳转到实现类,而不是接口⭐ |
Ctrl + Shift + I | 打开一个面板,里面包含类代码 |
Ctrl + Shift + B | 打开变量的类型所对应的类代码,只对变量有用 |
Ctrl + U | 打开方法的超类方法或者类的超类,只对有超类的方法或者类有效 |
Alt + 上/下箭头 | 在某个类中,跳到上一个/下一个方法的签名上 |
Ctrl + ]/[ | 移动光标到类定义的终止右大括号或者起始左大括号 |
Ctrl + F12 | 打开类的结构列表⭐ |
Ctrl + H | 打开类的继承关系列表 |
Ctrl + Shift + H | 打开某个类方法的继承关系列表 |
Ctrl + Alt + H | 打开所有类的方法列表,这些方法都调用了当前光标所处的某个类方法⭐ |
F2/Shift + F2 | 在编译错误的代码行中来回跳 |
F4 | 打开当前光标所在处的方法或类源码 |
Alt + Home | 激活包路径的导航栏 |
F11 | 把光标所处的代码行添加为书签或者从书签中删除⭐ |
Ctrl + F11 | 把光标所处的代码行添加为带快捷键的书签或者从快捷键书签中删除。 |
Shift + F11 | 打开书签列表⭐ |
Ctrl + N (打开类查询框)
Alt + F1(打开一个类型列表)
模板包含Live Templates 和 Postfix Completion
二者的区别: Live Templates 可以自定义,而 Postfix Completion 不可以
配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高.
Java 中输入 sout 会出现 System.out.println();
举例
① psvm
psvm 可生成 main 方法
② sout
sout 可生成 System.out.println()
③ fori
fori:可生成 for 循环
iter:可生成增强 for 循环
itar:可生成普通 for 循环
④ list.for
list.for 可生成集合 list 的 for 循环
List list = new ArrayList();
输入: list.for 即可输出
for(String s:list){
}
⑤ ifn
ifn 可生成 if(xxx = null)
inn:可生成 if(xxx != null)
xxx.nn 或 xxx.null
⑥ prsf
prsf 可生成 private static final
psf 可生成 public static final
psfi 可生成 public static final int
psfs 可生成 public static final String
① 定义一个模板的组
② 在上一步定义的模板组下定义一个模板
③ 选择应用范围
IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等等
不管是个人开发还是团队开发,都离不开版本控制,IntelliJ IDEA也集成了版本控制工具。
注:IntelliJ IDEA 虽然默认对这些版本控制工具提供插件支持,但是还需要我们自己安装版本控制客户端滴
① 下载和安装Git客户端
官网下载地址:https://git-scm.com/downloads
全部无脑下一步安装即可
默认安装完成后,右键出现下图所示图标即表示安装成功
安装完成后,还需要最后一步设置,在命令行输入:
# 注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"
因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址
② 关联 git.exe
③ 关联 GitHub 上的账户,并测试连接
④ 在 GitHub 上创建账户下的一个新的仓库作为测试
⑤ 从当前github 账号上checkout项目
按照以上步骤,在GitHub上的项目即克隆到了本地。是不是很简单哦
⑥ Git常用操作
clone:拷贝远程仓库
commit:本地提交
push:远程提交
pull:更新到本地
上面只提了最最最常用的命令,如果你想更加深入的了解git,建议参考
廖雪峰的Git教程
注:即使我们没有使用任何版本控制工具,IntelliJ IDEA也为我们提供了历史版本查看功能
设置 Debug 连接方式,默认是 Socket。Shared memory 是 Windows 特有的一个属性,一般在 Windows 系统下建议使用此设置,内存占用相对较少
图标 | 显示 | 说明 |
---|---|---|
step over | 进入下一步,如果当前行断点是一个方法,则不进入当前方法体内 | |
step into | 进入下一步,如果当前行断点是一个方法,则进入当前方法体内 | |
force step into | 进入下一步,如果当前行断点是一个方法,则进入当前方法体内 | |
step out | 跳出 | |
resume program | 恢复程序运行,但如果该断点下面代码还有断点则停在下一个断点上 | |
stop | 停止 | |
view breakpoints | 查看所有断点 |
在实际项目中,我们会遇到这样一种场景。我们已经定位问题(bug)就出在这个循环里,但是确定不了循环到第几次的时候报错,
当循环次数比较少,是3次或5次的时候,我们可以一次一次的调试。但当循环次数是100次,甚至1000次呢?这个时候我们就需要用到条件断点了。
在循环里增加条件判断,能大大提高我们的效率
我们在需要设置断点的语句前单击,当出现红色断点时,右键出现如下图所示,即可加入条件。
debug程序,程序在i=10的时候停止
在介绍maven 前,我们先了解下一个Java项目需要哪些东西。
这些工作难度不大,但是非常琐碎且耗时。如果每一个项目都自己搞一套配置,肯定是费时费力。我们需要的是一个标准化的Java项目管理和构建工具
Maven就是是专门为Java项目打造的管理和构建工具,Maven有以下功能
① 新建项目
②选择Maven项目
③设置项目参数
④配置本地Maven设置
⑤初始化项目
⑥项目构建完成
mysql 是我们日常开发中常用的数据库,这里我们以导入MySQL驱动包为例
①当我们执行App.java中代码时,由于没加mysql驱动包,所以会报如下错误
②修改pom.xml文件,添加如下内容
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.20version>
dependency>
注:dependency标签中的内容我们不用死记,我们只需要到https://mvnrepository.com/查询,然后复制即可
③ 等待驱动下载完成
④ 再次运行,成功
① 创建项目
②选择Maven webapp格式
③填写项目参数
④ 配置本地Maven相关参数
⑤配置java源代码目录
maven web项目默认是没有java源代码目录的,所以需要手动创建,并设置其为源代码目录
右键main目录-> New->Directory->输入java->右键java->Mark Directory as-> Sources Root
这样就创建了存放java源文件的目录了
⑥ 新建servlet
package com.xiezhr;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Date;
@WebServlet(name = "HelloServlet")
public class HelloServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("Hello Servlet! Hello xiezhr!
");
response.getWriter().println(new Date().toLocaleString());
}
}
⑦修改web.xml
DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Applicationdisplay-name>
<servlet>
<servlet-name>HelloServletservlet-name>
<servlet-class>com.xiezhr.HelloServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>HelloServletservlet-name>
<url-pattern>/hellourl-pattern>
servlet-mapping>
web-app>
⑧pom.xml添加servlet包依赖
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
dependency>
① 打开tomcat配置,并选择tomcat 路径
② 设置部署
③ 运行项目
④ 测试成功