# IntelliJ IDEA 笔记
## IDEA的一些常用配置
### IDEA安装后的目录结构
![](https://img.kancloud.cn/aa/95/aa959a3a0c6e0353683f517ea75f9a69_618x324.png)
**bin:容器,执行文件和启动参数等**
**help:快捷键文档和其他帮助文档**
**jre64:64 位java 运行环境**
**lib:idea 依赖的类库**
**license:各个插件许可**
**plugin:插件**
### 调整 VM 配 置文件
在**bin**目录下找到**idea64.exe.vmoptions**
![](https://img.kancloud.cn/e1/eb/e1eb61f52ce766c6c940746fca04b0b4_415x209.png)
**我的电脑是16G内存**
**-Xms128m**:设置初始的内存数,增加该值可以提高 Java 程序的启动速度, 我这里设置为**512m** 。
**-Xmx750m:**设置最大内存数,提高该值,可以减少内存 Garage 收集的频率,提高程序性能。我这里设置为**1500m** 。
**-XX:ReservedCodeCacheSize:**保留代码占用的内存容量,我这里设置为**500m**。
### 相关设置的目录结构
![](https://img.kancloud.cn/83/16/8316641809835e76b5b81ee2c7f5b1e2_449x137.png)
这是 IDEA 的各种配置的保存目录。这个设置目录有一个特性,就是你删除掉整 个目录之后,重新启动 IntelliJ IDEA 会再自动帮你生成一个全新的默认配置, 所以很多时候如果你把 IntelliJ IDEA 配置改坏了,没关系,删掉该目录,一切 都会还原到默认。
#### config 目录
config 目录是 IntelliJ IDEA 个性化化配置目录,或者说是整个 IDE 设置目录。 此目录可看成是最重要的目录,没有之一,安装新版本的 IntelliJ IDEA 会自动扫描硬盘上的旧配置目录,指的就是该目录。 这个目录主要记录了:IDEA 主要配置功能、自定义的代码模板、自定义的文件 模板、自定义的快捷键、Project 的 tasks 记录等等个性化的设置。 比如,因为IDEA的代码格式化和QQ的快捷键冲突,所以我自己自定义过代码格式化的快捷键:
![](https://img.kancloud.cn/33/b1/33b1b9b5cb61448e6445862602398f18_744x136.png)
这个在配置文件中就是这样体现的:
![](https://img.kancloud.cn/a7/71/a7713b0b5c867fc795d96c30eafc60ae_522x135.png)
![](https://img.kancloud.cn/60/fe/60fe0df492e0e659ef11eb03683669e6_500x135.png)
#### system 目录
system 目录是 IntelliJ IDEA 系统文件目录,是 IntelliJ IDEA 与开发项目一个 桥梁目录,里面主要有:缓存、索引、容器文件输出等等。
## IDEA中的Module
在 Eclipse 中有 Workspace(工作空间)和 Project(工程)的概念,在 IDEA 中只有 Project(工程)和 Module(模块)的概念。这里的对应关系为:
![](https://img.kancloud.cn/0b/f6/0bf6b57ebb5f6fc9b9f9f2154c8aa022_667x190.png)
在 IntelliJ IDEA 中 Project 是最顶级的级别,次级别是 Module。一个 Project IntelliJ IDEA 的安装、配置与使用 可以有多个 Module。目前主流的大型项目都是分布式部署的,结构都是类似这 种多 Module 结构。
![](https://img.kancloud.cn/b7/c1/b7c1b102c6e61ec42e430a215524d045_610x210.png)
这类项目一般是这样划分的,比如:core Module、web Module、plugin Module、 solr Module 等等,模块之间彼此可以相互依赖。通过这些 Module 的命名也可 以看出,他们之间都是处于同一个项目业务下的模块,彼此之间是有不可分割的 业务关系的。举例:
![](https://img.kancloud.cn/a0/28/a02856ed23f36b9f63d65464f337e351_303x362.png)
### 创建一个Module
![](https://img.kancloud.cn/05/bc/05bc6aee452b2a111a0e3551b20027ce_615x541.png)
接着选择 Next:
![](https://img.kancloud.cn/4c/fc/4cfc8a5eca6e09003f84f97c5ec05854_647x435.png)
之后,我们可以在 Module 的 src 里写代码,此时 Project 工程下的 src 就没什么 用了。可以删掉。
### 删除一个Model
![](https://img.kancloud.cn/70/a7/70a724dffe70f1e74698b00e4883bccb_634x833.png)
![](https://img.kancloud.cn/e7/59/e75976291eb8fa9b3c8a22b034e695f1_476x437.png)
此时的删除,会从硬盘上将此 module 删除掉。
## 查看项目配置
![](https://img.kancloud.cn/f0/76/f0763074bdd5235b0387936d432e2209_321x279.png)
进入项目结构:
![](https://img.kancloud.cn/8c/c3/8cc322c07fb0f6023c2c4321c05510ef_652x349.png)
## 常用配置
### Appearance & Behavior
#### 设置主题
![](https://img.kancloud.cn/4b/3a/4b3a99b276a1880b0607053aad7f3b58_577x215.png)
#### 设置窗体及菜单的字体及字体大小
![](https://img.kancloud.cn/23/00/230080e2ef9361759cf6f72e2e4ea632_577x173.png)
#### 设置编辑区主题
IDEA 默认提供了两个编辑区主题,可以通过如下的方式进行选择。
一个不错的主题下载网站:
[http://www.riaway.com/]: http://www.riaway.com/
##### 下载以后,导入主题
file –> import setttings –> 选中下载的主题 jar 文件 –> 一路确认 –> 重启。 重启以后,新主题会自动启用。如果没有启用,可以如下方式选择:
![](https://img.kancloud.cn/a5/3e/a53e8b67cb4f563145dbe14023b8a6bc_618x251.png)
![](https://img.kancloud.cn/dc/0a/dc0ad476110ea41f987c48f4383ce8c0_638x181.png)
##### 通过插件(plugins)更换主题
推荐使用Material Theme UI
### Editor - General
#### 设置鼠标滚轮修改字体大小
![](https://img.kancloud.cn/17/a1/17a16b30692e2d2f1f719ebee8bacec3_577x210.png)
#### 设置鼠标悬浮提示
![](https://img.kancloud.cn/32/e5/32e5ccc22e5161060a786a4158d26c16_574x332.png)
#### 设置自动导包功能
![](https://img.kancloud.cn/94/02/9402212f18312042282ef849e96ef281_574x358.png)
**Add unambiguous imports on the fly:**自动导入不明确的结构 **Optimize imports on the fly:**自动帮我们优化导入的包
#### 设置显示行号和方法间的分隔符
![](https://img.kancloud.cn/6f/74/6f741d97617de1912a8569048fb32cfd_575x332.png)
**Show line numbers:**显示行数。我建议一般这个 要勾选上。 **Show method separators:** 显示方法分隔线。这 种线有助于我们区分开方法,所以建议勾选上。
#### 忽略大小写提示
![](https://img.kancloud.cn/7a/17/7a17f53b437135cb654953a0f02e7e3e_575x339.png)
IntelliJ IDEA 的代码提示和补充功能有一个特性:区分大小写。如上图标注所 示,默认就是 First letter 区分大小写的。
区分大小写的情况是这样的:比如我们在 Java 代码文件中输入 stringBuffer, IntelliJ IDEA 默认是不会帮我们提示或是代码补充的,但是如果我们输入 StringBuffer 就可以进行代码提示和补充。 如果想不区分大小写的话,改为 None 选项即可。
#### 设置取消单行显示 tabs 的操作
![](https://img.kancloud.cn/eb/b4/ebb476314e77304a9c5171ba56b869bc_576x267.png)
如上图标注所示,在打开很多文件的时候,IntelliJ IDEA 默认是把所有打开的文 件名 Tab 单行显示的。但是我个人现在的习惯是使用多行,多行效率比单行高, 因为单行会隐藏超过界面部分 Tab,这样找文件不方便。
### Editor – Font
#### 设置默认的字体、字体大小、字体行间距
![](https://img.kancloud.cn/77/4a/774af59e53370a2b0e4001b2f75ff069_650x205.png)
### Editor – Color Scheme
#### 修改当前主题的字体、字体大小、字体行间距
如果当前主题不希望使用默认字体、字体大小、字体行间距,还可以单独设置:
![](https://img.kancloud.cn/09/37/0937ae7b97d0d13c2340ad2e79708cd2_644x189.png)
#### 修改当前主题的控制台输出的字体及字体大小(可忽略)
![](https://img.kancloud.cn/cb/10/cb1014e05588c2f3a76a097d0247b4cd_639x248.png)
#### 修改代码中注释的字体颜色
![](https://img.kancloud.cn/7e/7d/7e7ded7fff846d77eeb552fc022d1306_643x346.png)
**Doc Comment – Text:**修改文档注释的字体颜色。
**Block comment:**修改多行注释的字体颜色 。
**Line comment:**修改当行注释的字体颜色。
### Editor – Code Style
#### 设置超过指定 import 个数,改为*
![](https://img.kancloud.cn/02/27/02274706495bf4b82830d182b7c525e8_647x227.png)
### Editor – File and Code Templates
#### 修改类头的文档注释信息
![](https://img.kancloud.cn/3f/57/3f5773d96393d06c3b975919b974a6ae_579x218.png)
```java
/**
@author hs96.cn@Gmail.com
@create ${YEAR}-${MONTH}-${DAY} ${TIME}
*/
```
常用的预设的变量,这里直接贴出官网给的:
```
${PACKAGE_NAME} - the name of the target package where the new class or interface will be created.
${PROJECT_NAME} - the name of the current project.
${FILE_NAME} - the name of the PHP file that will be created.
${NAME} - the name of the new file which you specify in the New File dialog box during the file creation.
${USER} - the login name of the current user.
${DATE} - the current system date.
${TIME} - the current system time.
${YEAR} - the current year.
${MONTH} - the current month.
${DAY} - the current day of the month.
${HOUR} - the current hour.
${MINUTE} - the current minute.
${PRODUCT_NAME} - the name of the IDE in which the file will be created.
${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.
```
### Editor – File Encodings
#### 设置项目文件编码
![](https://img.kancloud.cn/68/8d/688da19d9ee452773e91609a38197a13_648x380.png)
说明:**Transparent native-to-ascii conversion** 主要用于转换 ascii,一般都要勾选, 不然 Properties 文件中的注释显示的都不会是中文。
#### 设置当前源文件的编码
![](https://img.kancloud.cn/85/0d/850db0e24786c1cf15d7d6b080e4dd79_570x500.png)
对单独文件的编码修改还可以点击右下角的编码设置区。如果代码内容中包含中 文,则会弹出如上的操作选择。其中:
1. Reload 表示使用新编码重新加载,新编码不会保存到文件中,重新打开此文 件,旧编码是什么依旧还是什么。
2. Convert 表示使用新编码进行转换,新编码会保存到文件中,重新打开此文件, 新编码是什么则是什么。
3. 含有中文的代码文件,Convert 之后可能会使中文变成乱码,所以在转换成请 做好备份,不然可能出现转换过程变成乱码,无法还原。
### Build,Execution,Deployment
#### 设置自动编译
![](https://img.kancloud.cn/f7/0d/f70d0113b118bdf7862b23a6111715f5_581x339.png)
构建就是以我们编写的 java 代码、框架配置文件、国际化等其他资源文件、 JSP 页面和图片等资源作为“原材料”,去“生产”出一个可以运行的项目的 过程。
**Intellij Idea 默认状态为不自动编译状态,Eclipse 默认为自动编译:**
*很多朋友都是从 Eclipse 转到 Intellij 的,这常常 导致我们在需要操作 class 文件时忘记对修改后 的 java 类文件进行重新编译,从而对旧文件进 行了操作。*
![](https://img.kancloud.cn/65/0f/650ff91a2aebe323baf1fd2ce0df5830_252x257.png)
### 设置为省电模式
![](https://img.kancloud.cn/1c/6c/1c6c2fb5f3e6605210ae43e0a04a508e_288x533.png)
如上图所示,IntelliJ IDEA 有一种叫做 省电模式 的状态,开启这种模式之后 IntelliJ IDEA 会关掉代码检查和代码提示等功能。所以一般也可认为这是一种 阅 读模式,**如果你在开发过程中遇到突然代码文件不能进行检查和提示**,可以来看 看这里是否有开启该功能。
### 设置代码水平或垂直显示
![](https://img.kancloud.cn/3f/c2/3fc299d4bf3acf3eb8aa8566b1f96ea1_504x288.png)
### 快捷键
#### 设置快捷为 Eclipse 的快捷键
![](https://img.kancloud.cn/25/fe/25fe4e76cccb3c8114a3f074e7f509b6_651x393.png)
#### 通过快捷键功能修改快捷键设置
![](https://img.kancloud.cn/11/6d/116d8d1ddd87593fda1a810d997a3440_642x390.png)
#### 通过指定快捷键,查看或修改其功能
![](https://img.kancloud.cn/6c/f1/6cf183e3b41e5c6c6ae3cca6bdf2978c_578x345.png)
#### 导入已有的设置
![](https://img.kancloud.cn/f0/e8/f0e859d15902264d7e51d14cfadda62e_276x269.png)
点击 0K 之后,重启 IDEA 即可。
#### 常用快捷键
| 序号 | 功能 | 按键 |
| :--: | :-------------------------------------: | :----------------------------------------------: |
| 1 | 执行(run) | alt+r |
| 2 | 提示补全 | (Class Name Completion) alt+/ |
| 3 | 单行注释 | ctrl + / |
| 4 | 多行注释 | ctrl + shift + / |
| 5 | 向下复制一行 | (Duplicate Lines) ctrl+alt+down |
| 6 | 删除一行或选中行 | (delete line) ctrl+d |
| 7 | 向下移动行 | (move statement down) alt+down |
| 8 | 向上移动行 | (move statement up) alt+up |
| 9 | 向下开始新的一行 | (start new line) shift+enter |
| 10 | 向上开始新的一行 | (Start New Line before current) ctrl+shift+enter |
| 11 | 如何查看源码 | (class) ctrl + 选中指定的结构 或ctrl + shift + t |
| 12 | 万能解错/生成返回值变量 | alt + enter |
| 13 | 退回到前一个编辑的页面 | (back) alt + left |
| 14 | 进入到下一个编辑的页面(针对于上条) | (forward) alt + right |
| 15 | 查看继承关系 | (type hierarchy) F4 |
| 16 | 格式化代码(reformat code) | ctrl+shift+F |
| 17 | 提示方法参数类型(Parameter Info) | ctrl+alt+/ |
| 18 | 选中数行,整体往后移动 | tab |
| 19 | 查看类的结构:类似于 eclipse 的 outline | ctrl+o |
| 20 | 重构:修改变量名与方法名(rename) | alt+shift+r |
| 21 | 大写转小写/小写转大写(toggle case) | ctrl+shift+y |
//TODO 用到其他快捷键再后续更新
### 关于模板(Templates)
**(Editor – Live Templates 和 Editor – General – Postfix Completion)**
#### Live Templates(实时代码模板)功能介绍
它的原理就是配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固 IntelliJ IDEA 的安装、配置与使用 定模式的代码,使得开发效率大大提高,同时也可以增加个性化。最简单的例子 就是在 Java 中输入 sout 会出现 System.out.println();
官方介绍 Live Templates: https://www.jetbrains.com/help/idea/using-live-templates.html
#### 已有的常用模板
**Postfix Completion 默认如下:**
![](https://img.kancloud.cn/8a/4b/8a4b2896451269ca32b0c840fc5f6b23_607x518.png)
#### Live Templates 默认如下:
![](https://img.kancloud.cn/aa/0f/aa0f5519a4dbacf290ed330e3f2427f3_650x351.png)
二者的区别:Live Templates 可以自定义,而 Postfix Completion 不可以。同时, 有些操作二者都提供了模板,Postfix Templates 较 Live Templates 能快 0.01 秒
#### 修改现有模板:Live Templates
##### 修改1
通过调用 psvm 调用 main 方法不习惯,可以改为跟 Eclipse 一样,使用 main 调取。
![](https://img.kancloud.cn/51/96/5196eb27522995d831d7f98f2c58adfa_659x360.png)
##### 修改2
![](https://img.kancloud.cn/c0/94/c094d4b9fc636bc8872474b7fbdf5bbd_549x367.png)
类似的还可以修改 psfs。
#### 自定义模板
IDEA 提供了很多现成的 Templates。但你也可以根据自己的需要创建新的Template。
![](https://img.kancloud.cn/88/ce/88ceabd3727fa58ae239f7793f80b0a0_622x684.png)
选中自定义的模板组,点击”+”来定义模板。
![](https://img.kancloud.cn/28/6a/286a357890639602a222c3628b42e34d_579x326.png)
- Abbreviation:模板的缩略名称
- Description:模板的描述
- Template text:模板的代码片段 4
- 应用范围。比如点击 Define。选择如下:
![](https://img.kancloud.cn/66/13/66138159a39e3bf0c936feeeb99158cd_239x165.png)
可以如上的方式定义个测试方法,然后在 java 类文件中测试即可。 类似的可以再配置如下的几个 Template:
![](https://img.kancloud.cn/06/e7/06e7d3d2a6f5a9dfc273148d5f2266c9_645x193.png)
//DOTO 自行定义即可
### 创建 Java Web Project 或 Module
#### 创建的静态 Java Web
![](https://img.kancloud.cn/9c/19/9c19d2587050533a3b51b03abacff181_528x358.png)
![](https://img.kancloud.cn/77/66/7766688b74c026c75a51ca7ca96a9d29_461x251.png)
#### 创建动态的 Java Web
工程栏空白处 new – module:
![](https://img.kancloud.cn/f8/25/f825765221730e69097ccc1f5bf0410f_571x289.png)
![](https://img.kancloud.cn/a7/55/a75580248e46830d7c09791253bc1182_576x422.png)
这里一定要勾选 Web Application,才能创建一个 Web 工程。
![](https://img.kancloud.cn/ee/1b/ee1b5def6526b9a74329bb5188c0f0be_575x205.png)
提供 Web 工程名。这里注意修改一下 Content root 和 Module file location。 创建以后的工程结构如下:
![](https://img.kancloud.cn/7f/a9/7fa9586bd50d2fc0d2593c0b5d5c28ab_331x191.png)
#### 配置 Tomcat
在 IDEA 中配置 Tomcat 之前,需要保证已经安装并配置了 Tomcat 的环境变量。 如果没有安装并配置,可以参考《尚硅谷_宋红康_Tomcat 快速部署.pdf》,配置完 成以后,在命令行输入:catalina run 。能够启动 tomcat,则证明安装配置成功。
下面看如何在 IDEA 中配置:
![](https://img.kancloud.cn/93/5e/935e01b985c2fec195546ef0dd133235_436x213.png)
点击 Edit Configurations:
![](https://img.kancloud.cn/d1/8c/d18c5bbf24739d3158d621232ddb2e21_462x385.png)
这里选择 TomEE Server 或者 Tomcat Server 都可以。接着选择 Local。
![](https://img.kancloud.cn/56/a6/56a60b92db7d7763cce18c7036cae351_647x416.png)
这里配置 Tomcat 的名称以及配置应用服务器的位置。根据自己 Tomcat 的安装位 置决定。
![](https://img.kancloud.cn/98/39/98392de66807eb07c49943cedcae11a5_590x403.png)
其它位置使用默认值(设置要启动的浏览器以及端口号),如上。
接着部署:
![](https://img.kancloud.cn/ad/f3/adf311e22a6a2c845dc6e2253b7047a6_643x413.png)
点击 OK 即可。此时:
![](https://img.kancloud.cn/3a/74/3a74ce2be6e69876bcbe40e973890517_637x214.png)
执行刚才创建的 index.jsp 即可:
![](https://img.kancloud.cn/95/7c/957c62fab47a1784dc85fb474026f9e7_393x92.png)
注意事项: 显示运行以后的 Tomcat 的信息:
![](https://img.kancloud.cn/ca/cd/cacd240b5f47ee98840dac914e9fa00b_580x168.png)
可以点击红框,刚点击完毕并不能马上关闭服务器,只是断开了与服务器的连接, 稍后当停止按钮显示为灰色,才表示关闭。
### 关联数据库
#### 关联方式
![](https://img.kancloud.cn/5b/b9/5bb9874dc72d32053f9c6a23fd60ab87_419x411.png)
![](https://img.kancloud.cn/24/0e/240e5819acf0b8f84d2e00038f69c8e8_505x416.png)
表面上很多人认为配置 Database 就是为了有一个 GUI 管理数据库功能,但是 这并不是 IntelliJ IDEA 的 Database 最重要特性。数据库的 GUI 工具有很多, IntelliJ IDEA 的 Database 也没有太明显的优势。IntelliJ IDEA 的 Database 最大特 性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等 等。
//TODO 这个很少使用,一般我们都有自己的连接工具,domain 后续补充
#### ### 版本控制(Version Control)
![](https://img.kancloud.cn/dd/b2/ddb242343f7f206150556185c3899587_580x450.png)
很多人认为 IntelliJ IDEA 自带了 SVN 或是 Git 等版本控制工具,认为只 要安装了 IntelliJ IDEA 就可以完全使用版本控制应有的功能。这完全是一种 错误的解读,IntelliJ IDEA 是自带对这些版本控制工具的插件支持,但是该 装什么版本控制客户端还是要照样装的。
![](https://img.kancloud.cn/19/1f/191fa186f2dacc8748ec9448273a13b1_635x202.png)
IntelliJ IDEA 对版本控制的支持是以插件化的方式来实现的。旗舰版默认支 持目前主流的版本控制软件:CVS、Subversion(SVN)、Git、Mercurial、Perforce、TFS。又因为目前太多人使用 Github 进行协同或是项目版本管理, 所以 IntelliJ IDEA 同时自带了 Github 插件,方便 Checkout 和管理你的 Github 项目。
在实际开发中,发现在 IDEA 中使用 SVN 的经历不算愉快,经常会遇到很多 问题,比如紧急情况下 IDEA 无法更新、提交等。所以这里,谈下在 IDEA 中使用 Git。
##### 提前安装好 Git 的客户端
Git 的 msysGit 官网下载:https://git-scm.com/
Git 客户端 TortoiseGit 官网下载:http://download.tortoisegit.org/tgit/
##### 关联 git.exe
![](https://img.kancloud.cn/86/7b/867b7b772be1e4a78b9580095b801d31_654x212.png)
##### 关联 GitHub 上的账户,并测试连接
![](https://img.kancloud.cn/4b/51/4b51eb7863a2f3a3043166277f4c6e6c_647x173.png)
##### 在 GitHub 上创建账户下的一个新的仓库作为测试:
![](https://img.kancloud.cn/47/04/47045431d821970cc516883e88066fde_640x381.png)
##### 支持从当前登录的 Github 账号上直接 Checkout 项目
![](https://img.kancloud.cn/af/d2/afd2b18af7495e5e88938c439014ca04_644x224.png)
##### 在 IDEA 中 clone GitHub 上的仓库:
![](https://img.kancloud.cn/76/0c/760c4a40d012dfa585275e23b0cef919_638x179.png)
这里需要在 GitHub 的自己的账户下,复制项目仓库路径,填写到上图 Git Repository URL 中。不再赘述。
##### 连接成功以后,会下载 github 上的项目
![](https://img.kancloud.cn/a5/bc/a5bce7f48ec72987412d229cd298954f_465x419.png)
![](https://img.kancloud.cn/81/71/8171f514dff90aacde59dd353b157891_481x430.png)
##### 除此之外,还可以通过如下的方式连接 GitHub
![](https://img.kancloud.cn/bc/50/bc50c38772ee24b8113c34754eeb3103_648x155.png)
##### 本地代码分享到 GitHub
![](https://img.kancloud.cn/fd/08/fd0866a6f2b49feddccce1f3a5e7f6e8_589x403.png)
![](https://img.kancloud.cn/11/1d/111d70fb7eb1e0d5bf5916b97e0f64c7_486x127.png)
此时会在 GitHub 上创建一个新的仓库,而非更新已经存在的仓库。
##### Git 的常用操作
![](https://img.kancloud.cn/1f/76/1f768a961980dcd669505d09baba6c69_639x262.png)
- clone:拷贝远程仓库
- commit:本地提交
- push:远程提交
- pull:更新到本地
##### 没有使用 Git 时本地历史记录的查看
![](https://img.kancloud.cn/62/53/62532b7cb3c40c29d87615ec04628d76_649x383.png)
![](https://img.kancloud.cn/30/d5/30d5c769722355788479e422917000b3_647x276.png)
即使我们项目没有使用版本控制功能,IntelliJ IDEA 也给我们提供了本地文件历 史记录
### 断点调试
#### Debug 的设置
![](https://img.kancloud.cn/d1/b5/d1b551ac7259a7fa227948e82adbd913_651x250.png)
设置 Debug 连接方式,默认是 Socket。Shared memory 是 Windows 特有的一 个属性,一般在 Windows 系统下建议使用此设置,内存占用相对较少。
#### 常用断点调试快捷键
![](https://img.kancloud.cn/85/8b/858bdd8dd4023ef25e7b285b506daa75_658x335.png)
#### 条件断点
选择行,ctrl + u。还可以在查看框中输入编写代码时的其他方法:
![](https://img.kancloud.cn/97/07/97074a550a9fa7abfb3f204a61c74874_521x274.png)
### 配置 Maven
#### Maven 的配置
maven 的下载 – 解压 – 环境变量的配置这里就赘述了,需要的参考 1-课件 中的《Maven 的配置》。下面直接整合 Maven。选择自己 Maven 的目录,和 settings 文件,然后配置自己的仓库 reposiroty。
![](https://img.kancloud.cn/0b/b4/0bb458cfdb670c3554cfa1f1de24a026_647x262.png)
**Maven home directory:**可以指定本地 Maven 的安装目录所在,因为我已经配置了 M2_HOME 系统参数,所以直接这样配置 IntelliJ IDEA 是可以找到的。但是假如你没有配 置的话,这里可以选择你的 Maven 安装目录。此外,这里不建议使用 IDEA 默认的。
**User settings file / Local repository**:我们还可以指定 Maven 的 settings.xml 位置和本地仓 库位置。
![](https://img.kancloud.cn/18/c1/18c11f79553573d1d74ecb473689ff0b_650x301.png)
**Import Maven projects automatically:**表示 IntelliJ IDEA 会实时监控项目的 pom.xml 文件, 进行项目变动设置。
**Automatically download:**在 Maven 导入依赖包的时候是否自动下载源码和文档。默认是 没有勾选的,也不建议勾选,原因是这样可以加快项目从外网导入依赖包的速度,如果我 们需要源码和文档的时候我们到时候再针对某个依赖包进行联网下载即可。IntelliJ IDEA 支持直接从公网下载源码和文档的。
**VM options for importer:**可以设置导入的 VM 参数。一般这个都不需要主动改,除非项 目真的导入太慢了我们再增大此参数。
#### 创建对应的 Module
![](https://img.kancloud.cn/e5/55/e555277f5ceb0eb397876f7f437d4447_644x103.png)
![](https://img.kancloud.cn/07/e2/07e2be04778242bf5cc172d7504c4ad7_647x698.png)
**Group:组织或公司域名,倒序**
**Artifact:项目模块名称**
**Version:默认 maven 生成版本:0.0.1-SNAPSHOT**
![](https://img.kancloud.cn/c3/65/c365122b38420fd1061dd85efe832960_657x271.png)
这里可以暂时先不选,后面开发需要了再进行设置。
![](https://img.kancloud.cn/c0/06/c00638666c6278d55b7c9c423c9de871_649x130.png)
点击 finish 即可完成创建
![](https://img.kancloud.cn/7a/4d/7a4d1ca767cdb237bde1f3b343c04e60_478x330.png)
创建完成以后,可以在 IDEA 右边看到创建的 Module。如果没有,可以刷新一下。 目录下也会有对应的生命周期。其中常用的是:clean、compile、package、install。
比如这里install,如果其他项目需要将这里的模块作为依赖使用,那就可以install。 安装到本地仓库的位置。
![](https://img.kancloud.cn/07/1d/071d7a591cc26b60c17d0ff8f065b755_645x217.png)
//TODO 关于Maven我再单独整理一份吧
### 其它设置
#### 生成 javadoc
![](https://img.kancloud.cn/8f/32/8f324c5ae89dfaea7273d5fe475f410a_288x233.png)
![](https://img.kancloud.cn/36/0a/360a64b70d323a85fd07711957fae139_527x594.png)
输入:
**Locale:**输入语言类型:zh_CN
**Other command line arguments:**-encoding UTF-8 -charset UTF-8
#### 缓存和索引的清理
IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的 文件多少成正比。在 IntelliJ IDEA 创建索引过程中即使你编辑了代码也是编译 不了、运行不起来的,所以还是安安静静等 IntelliJ IDEA 创建索引完成。
IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码 提示等操作的速度,所以 IntelliJ IDEA 的索引的重要性再强调一次也不为过。 但是,IntelliJ IDEA 的索引和缓存并不是一直会良好地支持 IntelliJ IDEA 的, 某些特殊条件下,IntelliJ IDEA 的缓存和索引文件也是会损坏的,比如:断电、 蓝屏引起的强制关机,当你重新打开 IntelliJ IDEA,很可能 IntelliJ IDEA 会报 各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。即使 没有断电、蓝屏,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓 存和索引出现了问题,这种情况还不少。遇到此类问题也不用过多担心。我们可 以清理缓存和索引。如下:
![](https://img.kancloud.cn/9d/39/9d39422def67f3fde84d5b2e5a73cdd3_290x383.png)
![](https://img.kancloud.cn/19/19/1919378f506c0e887c5254c4c248b445_647x161.png)
- 一般建议点击 Invalidate and Restart,这样会比较干净。
- 上图警告:清除索引和缓存会使得 IntelliJ IDEA 的 Local History 丢失。所以如果你项目没 有加入到版本控制,而你又需要你项目文件的历史更改记录,那你最好备份下你的 LocalHistory 目录。目录地址在: C:\Users\ 当 前 登 录 的 系 统 用 户 名 \.IntelliJIdea14\system\LocalHistory 建议使用硬盘的全文搜索,这样效率更高。
- 通过上面方式清除缓存、索引本质也就是去删除 C 盘下的 system 目录下的对应的文件 而已,所以如果你不用上述方法也可以删除整个 system。当 IntelliJ IDEA 再次启动项目的 时候会重新创建新的 system 目录以及对应项目缓存和索引。
#### 取消更新
![](https://img.kancloud.cn/70/19/70191bddb52347d354d1b0c1e299d534_576x201.png)
#### 插件的使用
在 IntelliJ IDEA 的安装讲解中我们其实已经知道,IntelliJ IDEA 本身很多功能也都 是通过插件的方式来实现的。 官网插件库:https://plugins.jetbrains.com/
![](https://img.kancloud.cn/ae/f9/aef92efcee9a61f693f8f7ab2d250633_640x470.png)
- Install JetBrains plugin:弹出 IntelliJ IDEA 公司自行开发的插件仓库列表,供下载安装。
- Browse repositories:弹出插件仓库中所有插件列表供下载安装。
- Install plugin from disk:浏览本地的插件文件进行安装,而不是从服务器上下载并安装。
![](https://img.kancloud.cn/67/91/6791e3c61ddfb7aad45cb95abf2ecdfd_574x330.png)
![](https://img.kancloud.cn/21/5a/215a6d8729f7dc0cc0ccabcf2916e33f_579x376.png)
如上图演示,在线安装 IntelliJ IDEA 插件库中的插件。安装完以后会提示重启, 才可以使用插件。
常用插件推荐:
| 插件名称 | 插件介绍 | 官网地址 |
| ---------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| Key promoter | 快捷键提示 | https://plugins.jetbrains.com/plugin/4455-key-promoter/ |
| CamelCase | 驼峰式命名和下划线命名 交替变化 | https://plugins.jetbrains.com/plugin/7160-camelcase/ |
| CheckStyle-IDEA | 代码样式检查 | https://plugins.jetbrains.com/plugin/1065-checkstyle-idea/ |
| FindBugs-IDEA | 代码 Bug 检查 | https://plugins.jetbrains.com/plugin/3847-findbugs-idea/ |
| Statistic | 代码统计 | https://plugins.jetbrains.com/plugin/4509-statistic/ |
| JRebel Plugin | 热部署 | https://plugins.jetbrains.com/plugin/4441-jrebel-and-xrebel-for-intellij/ |
| CodeGlance | 在编辑代码最右侧,显示一 块代码小地图 | https://plugins.jetbrains.com/plugin/7275?pr=idea |
| Eclipse Code Formatter | 使用 Eclipse 的代码格式 化风格,在一个团队中如果 公司有规定格式化风格,这 个可以使用。 | https://plugins.jetbrains.com/plugin/6546-eclipse-code-formatter/ |
| GsonFormat | 把 JSON 字符串直接实例 化成类 | https://plugins.jetbrains.com/plugin/7654-gsonformat/ |
//TODO 持续更新
- 微服务
- 服务器相关
- 操作系统
- 极客时间操作系统实战笔记
- 01 程序的运行过程:从代码到机器运行
- 02 几行汇编几行C:实现一个最简单的内核
- 03 黑盒之中有什么:内核结构与设计
- Rust
- 入门:Rust开发一个简单的web服务器
- Rust的引用和租借
- 函数与函数指针
- Rust中如何面向对象编程
- 构建单线程web服务器
- 在服务器中增加线程池提高吞吐
- Java
- 并发编程
- 并发基础
- 1.创建并启动线程
- 2.java线程生命周期以及start源码剖析
- 3.采用多线程模拟银行排队叫号
- 4.Runnable接口存在的必要性
- 5.策略模式在Thread和Runnable中的应用分析
- 6.Daemon线程的创建以及使用场景分析
- 7.线程ID,优先级
- 8.Thread的join方法
- 9.Thread中断Interrupt方法学习&采用优雅的方式结束线程生命周期
- 10.编写ThreadService实现暴力结束线程
- 11.线程同步问题以及synchronized的引入
- 12.同步代码块以及同步方法之间的区别和关系
- 13.通过实验分析This锁和Class锁的存在
- 14.多线程死锁分析以及案例介绍
- 15.线程间通信快速入门,使用wait和notify进行线程间的数据通信
- 16.多Product多Consumer之间的通讯导致出现程序假死的原因分析
- 17.使用notifyAll完善多线程下的生产者消费者模型
- 18.wait和sleep的本质区别
- 19.完善数据采集程序
- 20.如何实现一个自己的显式锁Lock
- 21.addShutdownHook给你的程序注入钩子
- 22.如何捕获线程运行期间的异常
- 23.ThreadGroup API介绍
- 24.线程池原理与自定义线程池一
- 25.给线程池增加拒绝策略以及停止方法
- 26.给线程池增加自动扩充,闲时自动回收线程的功能
- JVM
- C&C++
- GDB调试工具笔记
- C&C++基础
- 一个例子理解C语言数据类型的本质
- 字节顺序-大小端模式
- Php
- Php源码阅读笔记
- Swoole相关
- Swoole基础
- php的五种运行模式
- FPM模式的生命周期
- OSI网络七层图片速查
- IP/TCP/UPD/HTTP
- swoole源代码编译安装
- 安全相关
- MySql
- Mysql基础
- 1.事务与锁
- 2.事务隔离级别与IO的关系
- 3.mysql锁机制与结构
- 4.mysql结构与sql执行
- 5.mysql物理文件
- 6.mysql性能问题
- Docker&K8s
- Docker安装java8
- Redis
- 分布式部署相关
- Redis的主从复制
- Redis的哨兵
- redis-Cluster分区方案&应用场景
- redis-Cluster哈希虚拟槽&简单搭建
- redis-Cluster redis-trib.rb 搭建&原理
- redis-Cluster集群的伸缩调优
- 源码阅读笔记
- Mq
- ELK
- ElasticSearch
- Logstash
- Kibana
- 一些好玩的东西
- 一次折腾了几天的大华摄像头调试经历
- 搬砖实用代码
- python读取excel拼接sql
- mysql大批量插入数据四种方法
- composer好用的镜像源
- ab
- 环境搭建与配置
- face_recognition本地调试笔记
- 虚拟机配置静态ip
- Centos7 Init Shell
- 发布自己的Composer包
- git推送一直失败怎么办
- Beyond Compare过期解决办法
- 我的Navicat for Mysql
- 小错误解决办法
- CLoin报错CreateProcess error=216
- mysql error You must reset your password using ALTER USER statement before executing this statement.
- VM无法连接到虚拟机
- Jetbrains相关
- IntelliJ IDEA 笔记
- CLoin的配置与使用
- PhpStormDocker环境下配置Xdebug
- PhpStorm advanced metadata
- PhpStorm PHP_CodeSniffer