不知道怎么使用IDEA,一篇文章带你快速上手

 

前言

  IDEA 是由 JetBrains 公司开发的软件产品,全称为 IntelliJ IDEA,一个 Java 语言的集成开发环境。它 —— 在业界被公认为是最好的 Java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、AntJUnitCVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。

  在官网上有这么一句宣传语,笔者认为名副其实:“Every aspect of IntelliJ IDEA has been designed to maximize developer productivity. Together, intelligent coding assistance and ergonomic design make development not only productive but also enjoyable.

  翻译一下:IntelliJ IDEA 的每个方面都旨在最大限度地提高开发人员的工作效率,例如通过智能编码辅助和人体工程学设计的结合,使软件开发不仅富有成效,而且令人感到轻松愉悦。

IDEA的官网

此外,该公司旗下还有一些其它产品。大多数人可能用过或者听过,例如:

  • WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术;

  • PyCharm:用于开发 Python

  • PhpStorm:用于开发 PHP

  • RubyMine:用于开发 Ruby/Rails

  • AppCode:用于开发 Objective - C/Swift

  • CLion:用于开发 C/C++

  • DataGrip:用于开发数据库和 SQL

  • Rider:用于开发.NET

  • GoLand:用于开发 Go

 

一、下载安装

  • 安装要求
  • 安装过程

 

1.1、安装要求

主要版本

和 Eclipse 不同的是,IDEA 有两个主要的版本:旗舰版(Ultimate)和社区版(Community),旗舰版收费 (功能更强大,但只有30天免费试用) ,社区版免费使用(供学生或社区人员使用)。

IDEA的版本

关于两个版本之间具体的区别,有兴趣的话,可以参考官网给出的具体对比,因为篇幅较长,这里就不过多赘述。

 

硬件要求
最低配置推荐配置
内存2 GB RAM8 GB RAM
硬盘2.5 GB 机械硬盘2.5 GB SSD 固态硬盘
屏幕1024 x 768 屏幕分辨率-

 

系统要求
  1. Windows 系统

    支持基于 64 位操作系统的 Win8、Win10 和 Win 11

  2. MacOS 系统

    支持 MacOS 10.14 或更高版本

  3. Linux 系统

    支持 GNOME 或 KDE 桌面

 

小提示

  电脑的配置越高越好,只达到推荐配置的话也可能会卡顿,因为IDEA本身是一个非常吃内存的软件,有了它也并不能减少电脑的卡顿。此外,如果你有选择困难症的话,笔者的建议是,学生社区版 (因为学生一般没有额外的金钱支持正版),企业人员旗舰版。

 

1.2、安装过程

具体步骤

  下载安装包后,双击安装包文件就可以开始安装,注意两个版本的安装文件名称可能会略有不同 (旗舰版一般以字母 U 结尾,而社区版一般以字母 C 结尾),这里我们以社区版为例进行安装,旗舰版也可参考这个安装过程,两个版本的安装包在安装上没有太大区别。

IDEA的安装文件

  此外,安装时推荐关闭空闲的其他应用程序,这样可以使得安装过程更快一些,安装完成后建议重启计算机,因为安装时可能会更新现有的系统文件。

 

  1. 点击 Next 下一步

IDEA的安装过程01

 

  1. 点击 Browse 打开并浏览文件夹窗口可以自定义 IDEA 的安装目录,设置完成后,点击 Next 下一步

IDEA的安装过程02

 

  1. 除了标注的三个框都一定要 选之外,最后一个多选框主要是确认是否将 .java.groovy.kt.kt 后缀的代码文件与 IDEA 进行关联,可以按需 选,勾选完成后,点击 Next 下一步

IDEA的安装过程03

 

  1. 点击 install 按钮正式开始安装 IDEA,此时可以先干一些别的事情(比如泡杯茶🍵什么的),安装过程可能耗时较长,十多分钟到半个小时不等,视电脑的性能为准。

IDEA的安装过程04

 

  1. 点击 Finish 按钮完成安装,之后就可以开始使用IDEA,注意,初次安装时,打开IDEA前会可能弹出提示框提示你自定义软件的界面

IDEA的安装过程05

 

小贴士

  如果想使用旗舰版的 IDEA 但是又支付不起正版软件的费用,可以考虑在万能的淘宝上买一个账号或续费自己注册的账号。很便宜也不用担心不安全,更重要的是省心,因为破解相对来说比较麻烦,而且也不安全,可能会有病毒,能好好用正版软件他不香吗?

 

二、软件配置

  • 运行参数调优
  • 软件基础设置
  • 开发工具配置

 

2.1、运行参数调优

设置一些软件的运行参数,让你的 IDEA 运行起来更流畅、顺滑且好用

打开软件的安装目录,我们可以看到主要的目录结构有以下几部分:

IDEA的目录结构

  1. bin:包含可执行目标文件和一些软件的启动参数
  2. help:帮助文档
  3. lib:IDEA依赖的类库
  4. license:安装的插件许可证
  5. plugins:插件所在目录

 

在 bin 目录下,这里面有 IDEA 的启动文件和 VM (虚拟机) 配置文件

IDEA的bin目录

使用编辑器打开 idea64.exe.vmoptions 配置文件

IDEA的VM配置文件

  这里以笔者当前的电脑系统为准(64位 Windows10 操作系统,16G内存),说明一下如何调整 Java 虚拟机的配置参数,以更好的使用 IDEA。注意,如果你的电脑是 8G 内存或以下的话,不需要修改配置文件,保持默认值就行。

# -Xms Java 虚拟机最小可用内存数:
# 16G 内存的话,可尝试设置为 -Xms512m 
# 设置该值可以提高 Java 程序的启动速度
-Xms128m 
# -Xmx Java 虚拟机最大可用内存数:
# 16G 内存的话,可尝试设置为 -Xms1500m
# 提高该值,可以减少垃圾收集的频率,间接提高程序的性能
-Xmx750m
# ReservedCodeCacheSize 保存的代码缓存大小:
# 16G 内存的话,可设置为 -XX:ReservedCodeCacheSize=512m
# 32G 内存的话,可设置为 -XX:ReservedCodeCacheSize=1024m
-XX:ReservedCodeCacheSize=512m
# 忽略无法识别的虚拟机选项
-XX:+IgnoreUnrecognizedVMOptions
# 使用G1垃圾回收器回收垃圾内存
-XX:+UseG1GC
## 关于软引用最近最少使用算法的每MB空闲内存的毫秒值的设置
## 默认50毫秒每mb,参数越大,软引用对象越不可能被回收
## 如果调整为零,所有的软引用对象都会尽快释放
-XX:SoftRefLRUPolicyMSPerMB=50
# 编译器运行的线程数,设置越大,JIT的编译速度越快,默认为2
-XX:CICompilerCount=2
# 当发生内存溢出时自动生成堆内存转存文件
-XX:+HeapDumpOnOutOfMemoryError
## 禁止使用FastThrow省略异常堆栈信息
## 从JDK5开始,HotSport VM对代码里面某个固定位置经常抛出的异常堆栈信息有优化,叫做FastThrow
## 如果有异常抛出,直接使用一个实现分配号的异常对象抛出,但是这个对象的错误信息和堆栈信息都是空的
-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

此外,在系统盘的当前目录位置下还存放有 IDEA 的配置保存目录

IDEA的配置保存目录

这两个目录是 IDEA 自动生成的,如果你想还原默认设置的话,可以删除它,然后再重启 IDEA

 

2.2、软件基础设置

  • 界面美化
  • 人性化开发

 

2.2.1、界面美化

软件界面的基础配置

 

2.2.1.1、主题更换

  IDEA 自带了四种软件主题:IntelliJ Light (白色明亮)、Windows 10 Light (基于 Win10 的白色明亮)、Darcula (黑色经典)、High contrast (高对比度)。可以在设置中进行更换,具体步骤如下所示:

File -> Settings -> Apppearance & Be havior -> Appearance -> Theme(主题)

主题更换01

  在 Theme 下拉框中可以下拉选择自己想要的主题 (如果没有喜欢的主题,可以点击 Get more themes 从插件中获取并安装新的主题),点击 OK 完成设置。此外,还可以勾选旁边的 Sync with OS(跟随系统) 选项并且选择白天模式使用的主题和夜间模式使用的主题,之后 IDEA 便会跟随系统自动切换显示的主题,白天显示白天模式的主题,到了晚上切换为夜间模式的主题

主题更换02

  除了上面提到的方法外,还可以在 File -> Settings -> Editor -> Color Scheme -> Scheme(方案) 中单独设置编辑区的主题,并不会影响到软件现有的全局主题设置

设置编辑区主题
  如果需要更多地编辑区主题,可以到这个网站下载:http://www.riaway.com/。下载完成后,点击设置右边的齿轮按钮: Export -> IntelliJ IDEA color scheme (.icls) or settings (.jar) 导入主题,然后选择刚导入的主题导入并重启 IDEA 即可。

 

2.2.1.2、自定义图片背景

  上面的四种主题样式可能没有办法满足大部分人的需求,所以 IDEA 也提供了基于自定义图片显示背景的功能,在此基础上,你可以设置一个好看的美女/风景的背景图片,编码效率UP++。具体步骤如下所示:

File -> Settings -> Apppearance & Be havior -> Appearance -> UI Options(UI可选项) | Background Image…(背景图片…)

设置自定义背景01

  这里还能设置为仅当前项目使用、调整图片的透明度以及加载样式。此外,如果想取消设置的自定义图片背景的话也很简单,在 Background Image 窗口中点击 Clear and Close 按钮,然后保存设置即可。

设置自定义背景02

 

2.2.1.3、设置软件字体和大小

如果不喜欢现有的软件字体样式和大小也可以在设置中更改,具体步骤如下所示:

File -> Settings -> Apppearance & Be havior -> Appearance -> User custom font(用户自定义字体)

设置软件字体和大小01

如果想还原字体设置,那么取消勾选 Use custom font (使用自定义字体),然后保存设置即可

设置软件字体和大小02

 

2.2.1.4、个性化代码的字体和大小

  如果你对现在代码的字体、大小或行高不满意的话, 也可以在设置中进行更改,具体步骤如下所示:

File -> Settings -> Editor -> Font -> Font | Size(字体大小)、Line height(行高)

个性化代码的字体和大小01

  此外,勾选了 File -> Settings -> Editor -> General -> Mouse Control(鼠标控制) | Change font size with Ctrl + Mouse Whell in: 中的设置项的话

个性化代码的字体和大小02

就可以通过按住 Ctrl 键 + 鼠标滚轮 实时调整编辑区代码的字体大小,往上滚动是放大,往下滚动是缩小

个性化代码的字体和大小03

 

2.2.1.5、控制台字体定制

  控制台的字体和大小可以在 File -> Settings -> Editor -> Color Scheme -> Console Font -> Size(字体大小)、Line height(行高) 中进行修改

修改控制台输出的字体和大小

 

2.2.1.6、优化注释的样式

设置中还提供了对代码注释的样式的修改功能,具体步骤如下所示:

File -> Settings -> Editor -> Color Scheme -> Language Defaults -> Comments | Block comment(块注释,即多行注释)、Doc comment(文档注释)、Line comment(行注释)

优化注释的样式

你可以按照预定的设置 DIY 注释,将其修改成自己喜欢的样式

 

小贴士

  设置窗口的 OK 按钮仅起到保存设置的作用,关闭窗口才能看到变更设置的效果,而 Apply 按钮则是先将变更的设置应用于软件然后再保存。

2.2.2、人性化开发

这些配置可以让软件开发变的更加轻松愉悦,提升编码效率

 

2.2.2.1、鼠标悬浮提示

  设置此项后,当光标停留在类名或方法名上时,附近会出现一个包括类/方法的详细信息和注释的小窗口,具体步骤如下所示:

File -> Settings -> Editor -> General Editing -> Quick Documentation(快速文档) | √ Show quick documentation on hover(光标处展示快速文档)

设置鼠标悬浮提示01

找到之后,勾选此位置然后保存即可

设置鼠标悬浮提示02

 

2.2.2.2、自动导包

  设置此项后,在写代码的时候无需手动撰写 import 导包语句,IDEA自动帮我们进行导入,而且还会智能移除未使用的 import 语句,具体步骤如下所示:

File -> Settings -> Editor -> General -> Auto Import -> Java | insert imports on paste(新增导入) Always | √ Add unambiguous imoprts on the fly(实时添加无歧义的导入) | √ Optimize imports on the fly(实时优化导入)

设置自动导包01

设置之后的效果如下图所示:

设置自动导包02

  此外,IDEA 还支持修改 import 语句导入某个包的类超过一定数量之后改为 import * 的设置,具体步骤如下所示:

File -> Settings -> Editor -> Code Style -> Java -> Import | Class count to use import with *、Names count to use static import with *

import导入数量限制

第一个设置非静态导入使用 * 的类数量 ,另外一个是设置静态导入使用 *的类数量,当达到这个数量级后就会改用 * 进行导入。

 

2.2.2.3、显示行号和方法分割符

  行号的显示有助于快速定位代码和理清代码层级,而方法分隔符可以区分开方法,进而提高代码的可读性,具体步骤如下所示:

File -> Settings -> Editor -> General -> Appearance -> √ show line numbers(显示行号) | √ show method separators(显示方法分隔符)

显示行号和方法分隔符01

设置之后的效果如下图所示:

显示行号和分隔符02

 

2.2.2.4、忽略大小写提示

  IDEA 的代码提示和补充功能默认区分大小写,但是大多数的时候,人们更习惯输入小写字母,来回切换大小写很麻烦,因此忽略大小写可以提高输入的容错性,具体步骤如下所示:

File -> Settings -> Editor -> General -> Code Completion -> Match case:(全部匹配情况) | First letter only(首字母), All letters(全部字母)

忽略大小写提示

 

2.2.2.5、显示多行 tab 页面

  IDEA默认所有打开的文件都显示在同一行,当打开多个文件之后放不下的会隐藏,但是这样的话有的时候找某个文件不是很方便,因此可以我们可以将文件设置为多行显示,具体步骤如下所示:

File -> Settings -> Editor -> General -> Editor Tabs -> Appearance(外观) | Show tabs in one row(单行展示tab页面)

显示多行tab页面

 

2.2.2.6、自定义类头注释信息

  在设置中可以自定义每次创建类时自带的文件头注释信息,企业人员的话可能会经常用到此设置,因为一般的互联网公司都对程序员的代码有固定排版的要求,具体步骤如下所示:

File -> Settings -> File and Code Template -> Include -> File Header(文件头)

自定义类头注释信息

这是笔者的类文件头注释模板,大家可以参考一下

/**
 * @author: ${USER}
 * @email: cafebaby@foxmail.com
 * @date: ${DATE} ${TIME}
 * @version: 1.0
 * @description: 类功能的描述写在这里 
 */

 

2.2.2.7、统一项目的文件编码

  总所周知,在项目的管理中,不一致的文件编码一直是一件很令人头痛的事情,一不小心就很容易造成乱码。例如 Eclipse 的默认编码是 GBK,而 IDEA 的默认编码是 UTF-8,今天笔者就来说说怎么统一 IDEA 项目文件的编码,具体步骤如下所示:

File -> Settings -> Editor -> File Encodings

统一项目的文件编码01

此外,在 File -> Settings -> Tools -> SSH Terminal 中还有个配置项需要配置,这里配置的是SSH终端的默认编码

统一项目的文件编码02

如果你想手动修改某个文件的字符编码,也可以像这样:

统一项目的文件编码03

打开文件后,在右下角选择需要转换的编码格式,在弹出的窗口中按 Convert 确定进行转换,如果点的是 Reload 的话,会以选定的编码加载文件内容,但是文件本身的编码不会改变。

2.2.2.8、开启自动编译

  IDEA 默认修改代码之后不自动编译,重新修改代码之后需要手动编译或构建再运行才是最新的代码,不过我们可以在设置中开启自动编译,具体步骤如下所示:

File -> Settings -> Build, Execution, Deployment -> Compiler √ Build project automatically(自动搭建项目) | √ Compile independent modules in parallel(并行编译依赖的模块)

开启自动编译01

如果你的电脑配置不是很高的话,也可以选择只勾选第一项。

 

小提示

  1. 如果你是第一次使用 IDEA 找不到设置在哪的话,可以使用 Ctrl + Alt + S 快键键直接打开 Settings

    快速打开设置界面01

也可以按两次 Shift 键,在弹出的窗口中搜索 Settings,选择第三项

快速打开设置界面02

  1. 如果不记得具体的配置项的位置在哪的话,IDEA 也提供了搜索某项设置的功能,十分的贴心有木有!

    搜索具体的设置项

 

2.3、开发工具配置

主要包含一些开发工具的配置,比如 JDK、Git、Maven 和 Gradle 等等

 

2.3.1、JDK

介绍

  JDK 全称 Java Development Kit,意为 Java 开发工具,是 Java 语言开发者不可或缺的工具没有之一。在 IDEA 中项目的 JDK 的配置没有全局的,所以每个项目都需要在 Project Structure (项目结构) 窗口中进行单独的配置 (如果是从Gitee或者GitHub上面拉取下来的项目则不用再配置)。此外,如果有需要的话,我们也可以在这个窗口中导入一些外部库或者依赖文件。

  • 如何设置JDK?打开 Project Structure (项目结构) 窗口即可

设置项目的SDK01

   顺便一提,此窗口可以使用快捷键 Ctrl + Alt + Shift + S 快速打开,也可以从 File 菜单项中选择 Project Structure 菜单项手动打开。如果你的电脑没有安装JDK或者你还不知道如何安装JDK,可以参考笔者写的这一篇文档:JDK的安装和配置。

 

2.3.2、Maven

介绍

  Maven 是集依赖管理与项目自动化搭建为一体的“集大成者”,有了它我们可以很方便地管理项目的各个模块、导入第三方库并且统一每个依赖的版本,与它一样好用的还有 Gradle,不过 Gradle 国外用的多,比如 Spring 的源码就是基于Gradle的,国内一般使用 Maven 作为项目的依赖管理工具。

  • 如何设置Maven?打开 Settings 窗口搜索 Maven

设置本地Maven01

  • 注意,覆盖目录时,要勾选 Override 框表示覆盖默认的配置 (初次配置时,IDEA 有默认配置)

 

小提示

  你知道 Maven 都有哪些常用命令?它的核心概念是什么?你真的了解 Maven 嘛?如果还不知道的话,那就快来看看这篇文章吧:什么是Maven

 

2.2.3、Gradle

  Gradle 是一个专注于灵活性和性能的开源构建自动化工具,使用 Groovy 或 KotlinDSL 编写构建脚本。此外,它和 Maven 一样,也是通过实现约束使常见类型的项目(例如Java项目)易于构建。 此外,应用适当的插件,我们还可以轻松地为许多项目使用精简的构建脚本。

设置项目的Gradle

  • 注意,此处有默认配置,使用自定义的安装路径会覆盖IDEA的默认设置

小贴士

  • 提高效率的小技巧 -> 输入法使用双拼可以提高输入代码的速度 (写BUG的速度也越来越快🐶)

 

2.2.4、Git

有了 Maven,Git 自然是不可或缺的,对于程序员来说每天的代码提交合并推送是家常便饭。

 

2.2.4.1、配置本地Git

设置本地Git地址

配置Git

如果细心一些,你会发现下面还有一个 Github 的配置。实际上,这个是配置Github账号的,有了它,就可以非常方便地使用IDEA拉取Github上的代码库了,步骤如下:

1.打开设置窗口搜索Git或者点击Version Control

配置Github账号01

 

2.点击左上角的 + 按钮或者点击下方的 Add acount 打开添加GitHub账号的菜单添加GitHub账号

配置Github账号02

2.2.4.2、关联Github账号的三种方式

说到关联GitHub账号,又有三种不同的方式

① 第一种是通过登录GitHub获取授权,点击 Login In via Github 浏览器会自动弹出如下窗口。

配置Github账号03

同时 IDEA 会打开一个登录加载框,表示正在登录 GitHub 中

配置Github账号04

当浏览器弹出这个窗口时,点击 Authorize in Github 登录并授权你自己的 GitHub 账号

配置Github账号05

有时点击 Authorizize in Github 可能会显示此窗口,不要急这可能是网络原因,按照上面的步骤再来一次即可

配置Github账号06

当登录并授权成功后,网页端就会提示:“You have been successfully authorized in GitHub. You can close the page.”,这就表示授权成功了

配置Github账号07

同时 IDEA 的设置窗口会显示出来你刚才授权的 Github 账号

配置Github账号08

 

② 第二种则是通过 token 获取授权,点击 login with Token 打开如下窗口

配置Github账号09

这里输入 token(访问令牌)就可以关联你自己的GitHub账号,如果你的GitHub账号没有生成 token (访问令牌),可以点击窗口中的 GNERATE 按钮,点击按钮后,浏览器会自动弹出此窗口,让你登录GitHub,登录完成之后跳到生成token的页面

配置Github账号10

当然,如果你如果已经在浏览器中登录GitHub,那么就会直接跳到生成token的这个页面

配置Github账号11

跳到此页面之后,可以设置token的名称、token的有效期以及token的可用范围,这里有一点要说的是,token的可用范围如果你不知道如何设置那就全部勾上,其他的话按需设置就行,所有的东西都设置完成后点击 Generate token 生成访问令牌

配置Github账号12

访问令牌生成后可以点击进行复制,如果不满意的话,可以点击 Delete 删除然后重新生成

配置Github账号13

把生成好的访问令牌复制到此窗口后,点击 ADD ACCOUNT 添加你的GitHub账号

配置Github账号14

添加成功后 IDEA 的设置窗口会显示出来你刚才授权的 GitHub 账号

 

③ 最后一种方法其实和第二种方法是一样的,只不过这里可以通过指定的企业GitHub服务器获取授权,点击 Login in to GitHub Enterprise… 出现如下界面

配置Github账号15

这里需要输入指定的企业GitHub服务器地址来生成对应的token,具体步骤可以参考第二种方式,因为两种方式其实本质上是差不多的,这里就不再复述了

 

2.2.4.3、如何添加Gitlab账号

2023版本及以上的IDEA还可以关联GitLab账号,快速拉取Gitlab上的项目文件

配置Gitlab账号01

点击左上角的左上角的 + 按钮或者点击下方的 Add account 添加Gitlab账号

配置Gitlab账号02

点击之后会打开如下窗口,这里可以设置Gitlab企业服务器的地址(如果有的话),这里笔者以企业服务器为例,点击GENERATE打开生成token的地址

配置Gitlab账号03

点击 GENERATE 之后浏览器会自动打开此窗口,可以在这个窗口中设置token的相关信息,设置完成后,点击创建个人访问令牌即可创建token(如果没有登录的话,会先跳到登录页)

配置Gitlab账号04

看到此界面之后,表示你的token已经成功生成,点击复制到IDEA中保存即可

配置Gitlab账号05

保存成功后,IDEA的设置界面就会展示出你刚刚关联的Gitlab账号

配置Gitlab账号06

三、敏捷开发

  • 常用快捷键
  • 代码模板
  • 项目创建
  • 神级插件

 

3.1、常用快捷键

IDEA 被公认为是最好的 Java 开发工具的部分原因也是因为有着各式各样、种类繁多的快键键,这些快键键不仅能提高编码的效率,也能让你写起代码来更怡然自得,浑然天成,仿佛代码就应该这么写一样

keyboard

 

3.1.1、编码相关

这里将会介绍到一些编写代码时经常会用到的一些快键键,使用频率很高,包括但不限于复制、注释、撤销以及生成代码方面的。

 

3.1.1.1、Ctrl + D 复制当前行
功能:复制当前行

此快键键的作用是复制当前行的代码,使用频率极高,非常好用,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl+D复制当前行

 

3.1.1.2、Ctrl + X 删除当前行
功能:删除当前行

此快捷键和 Ctrl+D 是成对的,同样非常好用,主要用于删除当前行的代码,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl+X删除当前行

 

3.1.1.3、Alt + Insert 生成代码
功能:生成构造器、setter、getter和toString方法等

此快键键可用于生成很多跟类相关的一些方法,比如构造器方法、setter方法、getter方法等等,在功能性上我愿称之为最强,比 Eclipse 的自动生成强太多了,在入门期间这个快捷键超实用,对新手超友好。注意,如果你使用的是笔记本的自带键盘,那么需要按 Fn + Alt + Insert 键才有用,实用程度:⭐️⭐️⭐️⭐️⭐️

Alt+Insert生成代码

如果不想动键盘的话,也可以将鼠标光标移动到代码空白区域右击,然后左键选中Generate,再选择想要生成的方法

鼠标操作生成代码

 

插一句题外话,自从学会使用 Lombok 之后,这个快键键就用的比较少了,不过这是后话了,笔者后面会介绍到,大家先不要急

 

3.1.1.4、Ctrl + Z 撤销代码更改
功能:撤销代码更改

此快捷键的作用是撤销更改,实用性不用我多说了,笔者也经常使用,敲错一些字母或者符号的时候能经常使用到,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl+Z撤销代码更改

小贴士

  这个快键键也是Windows系统的撤销操作的快键键

 

3.1.1.5、Ctrl + Shift + Z 还原代码更改
功能:还原代码更改

这个按钮和 Windows 的还原更改快键键不一样,Windows 还原更改的快键键是 Ctrl +Y,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl+Shift+Z还原代码更改

 

3.1.1.6、Ctrl + Shift + U 大小写转换
功能:将变量名称、类名和字段名称转换为全部大写或全部小写

这个快捷键在定义常量类或枚举的时候非常好用,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl + Shift + U 大小写转换

 

3.1.1.7、CTRL+ALT+L 格式化代码
功能:格式化代码

此快捷键可以用于格式化选中的代码块,实用程度:⭐️⭐️⭐️⭐️

CTRL+ALT+L 格式化代码

上面这个快捷键只适用于单个方法或单个文件,如果想格式化多个文件,或者某个包下的所有文件,那么可以将光标移动到类名/包名上,右键选择Reformat code批量格式化代码文件。

鼠标操作批量格式化代码

Reformat code会弹出一些格式化的选项,但是一般默认的就行

代码批量格式化选项

 

3.1.1.8、Ctrl+Alt+V 自动创建变量名
功能:编写代码时自动根据类名创建默认的变量名称

这个快键键在创建类变量的时候经常用到,夸张的说每 new 一个对象,就会使用一次,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl+Alt+V 自动创建变量名

3.1.1.9、Shift+F6 重构类名、变量名
功能:可以重命名类名、变量名、模块名等等

此快捷键可以给很多东西重命名,就这么说吧,只要项目里面的东西,无论是文件还是目录、无论是模块还是项目名称、无论是变量名还是类名都可以使用这个快键键进行重命名,适用范围很广,非常好用,实用程度:⭐️⭐️⭐️⭐️⭐️

Shift+F6 重构类名、变量名

 

3.1.1.10、行注释 Shift + /
功能:注释光标当前行

行注释的快键键,使用频率很高的,实用性自然不用多说,实用程度:⭐️⭐️⭐️⭐️⭐️

行注释 Shift + 斜线

 

3.1.1.11、块注释 Shift + Ctrl + /
功能:注释光标选中区域

相比于行注释的快键键,块注释的快键键可能比较少用,因为注释代码块的场景不多,且行注释也是可以给多行代码进行注释的,不过块注释显然更适合干这事,实用程度:⭐️⭐️⭐️⭐️

块注释 Shift + Ctrl + 斜线

 

3.1.1.12、Ctrl+ Alt + I 自动缩进
功能:如果某段代码块的缩进格式不对,可以使用这个快捷键对齐代码格式

这个功能算是 Ctrl+Alt+L 快键键功能的阉割版,只能用于代码块,不能应用于多个文件,使用频率不高,实用程度:⭐️⭐️⭐️

Ctrl+ Alt + I 自动缩进

 

3.1.1.13、Ctrl + Alt + T 使用模板代码包裹指定代码块
功能:将选中的代码块放入for循环、if语句或try/catch异常处理中

此快捷键使用频率不高,只是偶尔会用到,它的作用主要是将选中的代码快使用指定的模板代码包裹起来,比如说for循环、if语句、try/catch异常处理等。在我们处理某些抛出异常的代码快时还是非常实用的,所以笔者还是把它罗列出来了,实用程度:⭐️⭐️⭐️

Ctrl + Alt + T 使用模板代码包裹指定代码块

 

3.1.1.14、Ctrl + Shift + Delete 取消使用模板代码包裹指定代码块
功能:将被for循环、if语句或try/catch异常处理包裹的代码块拿出来

这个快键键和上面是一对的,上面那个快键键是放进去,这个是拿出来,使用频率较低,笔者几乎没怎么用过,实用程度:⭐️⭐️

Ctrl + Shift + Delete 取消使用模板代码包裹指定代码块

3.1.1.15、Alt + J 选中当前行插入符号/选中下一行插入符号
功能:选中当前行的指定符号,如果已经选中,那么就会选中下一行的插入符号

此快键键可以用来批量修改不同行的相同插入符号,比如说修改xml文件的,也可以用来修改代码中不同行的相同插入符号,实用程度:⭐️⭐️⭐️⭐️

Alt + J 选中当前行插入符号或选中下一行插入符号

3.1.1.16、Alt Shift + J 取消选中的插入符号
功能:取消已选中的插入符号

此快捷键可以取消已选中的插入符号,和上面的快键键是一对的,每次取消完就会回到上一级插入符号的为止,直到所有插入符号都未选中为止,实用程度:⭐️⭐️⭐️⭐️

Alt Shift + J 取消选中的插入符号

顺便一提,这些插入符号也可以用其他的方式取消,但是不推荐

使用其他方式取消选中的插入符号

3.1.1.17、Ctrl + Alt + Shift + J 选中所有行的插入符号
功能:选中所有行的插入符号

这个快键键比上面两个快键键使用频率要高一点,因为大部分时候我们都需要把所有的地方都改了,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl + Alt + Shift + J 选中所有行的插入符号

 

3.1.2、阅读代码

众所周知,一段完整的代码调用都是有层次的,类与类环环相扣,相互调用,尤其是一些第三方框架的源码,比如Spring的SpringMVC框架,不仅逻辑非常复杂,结构也非常让人摸不着头脑,如果没有合理的快捷键帮助查看和阅读,那么只会更让人劝退。

reading

 

3.1.2.1、Ctrl + Alt+ ← (左方向键)跳到上一次查看/更改代码的位置
功能:跳到上一次查看/更改代码的位置

当代码的层次较深时,如果想跳回最开始的代码,可以使用这个快键键多次跳回到上一次查看/修改的位置,直到返回最初调用的地方,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl+Alt+←(左方向键)跳到上一次查看或更改代码的位置

 

3.1.2.2、Ctrl + Alt + → (右方向键) 跳到下一次查看/更改代码的位置
功能:跳到下一次查看/更改代码的位置

这个快捷键和上面的快键键通常是成对出现的,上面地快键键可以往前回溯,这个快捷键则能往后回溯,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl+Alt+→(右方向键)跳到下一次查看或更改代码的位置

 

3.1.2.3、Ctrl+P 查询方法参数
功能:查看方法参数

调用一些第三库的工具类方法时,可以使用这个快键键查询方法的参数,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl+P 查询方法参数

 

3.1.2.4、Alt + ← (左方向键) 向左切换窗口
功能:切换左边的tab页面

如果同时打开了多个代码页面,可以通过此快键键向左切换打开过的页面,实用程度:⭐️⭐️⭐️⭐️

Alt +  ← (左方向键) 向左切换窗口

 

3.1.2.5、Alt + →(右方向键) 向右切换窗口
功能:切换右边的tab页面

如果同时打开了多个代码页面,可以通过此快键键向右切换页面,实用程度:⭐️⭐️⭐️⭐️

Alt + →(右方向键) 向右切换窗口

 

3.1.3、查找替换

查找和替是一种常用的软件功能,很多软件都会提供这些功能或者是类似的,学习这些(快捷键)可以让我们写代码时更加得心应手,从容不迫

 

3.1.3.1、双击 Shift 全局搜索
功能:全局搜索

可以使用此快键键搜索类、文件什么的,但不能用来搜索文件内容,实用程度:⭐️⭐️⭐️⭐️⭐️

双击 Shift 全局搜索

如果想全局搜索指定的类、文件、符号,可以使用以下的快键键:

快键键作用
Ctrl + N全局搜索 class
Ctrl + Shift + N全局搜索文件
Ctrl + Shift + Alt + N全局搜索 symbol

 

3.1.3.2、Ctrl + Shift + F 文件内容搜索
功能:搜索指定范围内的文件内容

如果你需要经常检索文件内容,那么这个快键键绝对非常好用,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl + Shift + F 文件内容搜索

 

3.1.3.3、Ctrl + F 单个文件内容查找
功能:在文件中搜索指定内容

如果需要在文件查找某些东西,可以使用这个快键键,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl + F 单个文件内容查找

 

3.1.3.4、Ctrl + Shift + R 文件内容更换
功能:全局替换所有文件的指定内容

此快捷键可替换指定范围内的文件的内容的指定内容,如果需要批量改一些文件中的东西的话,就能用上这个快键键了,实用程度:⭐️⭐️⭐️⭐️

Ctrl + Shift + R 文件内容更换

3.1.4.5、Ctrl + R 单个文件内容替换
功能:替换当前文件内指定的内容

和上面那个快键键略有区别,此快捷键只能替换当前文件内的指定内容,实用程度:⭐️⭐️⭐️⭐️⭐️

Ctrl + R 单个文件内容替换

此外,替换时也有一些选项可以手动选择以过滤不必要的东西,让你更精确地查找到指定的内容

单个文件内容替换详解

 

小贴士

  如果你开启了IDEA的每日提示,有时候可能看见下面这个提示:

每日提示中出现的课程01

  如上图所示,这是IDEA内部的一个互动课程,如果你想熟练使用IDEA,可以学习此课程。

每日提示中出现的课程02

 

3.2、代码模板

Live Templates(代码模板)可以生成固定格式的内容,可以将其用于快速创建方法注释,测试方法、main方法等等。IDEA有大量自带的代码模板,不过也可以定义自己的代码模板,有了这些代码模板可以节省大量的时间🚀

Live Templates

 

3.2.1、如何使用

键入模板缩写 + Tab(可修改) 输出指定格式的代码模板,这里以IDEA自带的 Java 代码模板为例

IDEA自带的Java代码模板

 

用途

1.假如说我们要写一个 “helloword”,那么首先需要创建一个 main 方法,如下所示:

创建main方法01

但是这种方式需要敲好几下键盘才能写完,而有了代码模板就不一样了,只需要敲完 “main” 再按 tab 键就可以快速生成 main 方法,如下所示:

创建main方法02

此外,键入 “psvm” + tab 键也可以快速生成 main 方法,如下所示:

创建main方法03

 

2.还比如我们要测试写好的用户接口是否有bug,那么就会用到测试方法,这里我们可以利用代码模板快速生成标准的测试方法来测试用户相关的接口,如下所示:

快速生成测试方法

 

3.此外,我们还可以使用代码模板来快速创建一些固定格式的变量或属性,比如说日志变量、私有字段等,如下所示:

创建固定格式的变量

 

4.当然,最最最实用的地方,笔者认为是在方法注释上,使用代码模板来快速生成方法注释真是太方便了

快速生成方法注释

3.2.2、如何创建

那么既然代码模板这么好用,那应该怎么创建一个代码模板呢,这里笔者以方法注释模板为例

1.首先新增一个名为 “ MyTemplates ” 的模板组,一个模板组中可以放好几个代码模板

点击左上角的 + 按钮再选择子菜单中的 Template Gruop 新增模板组

新增代码模板01

在打开的窗口中输入 MyTemplates 并点击 OK。

新增代码模板02

2.接着在此模板组上新增一个缩写为 * ,描述为方法注释的代码模板

新增代码模板03

模板内容的话,输入下面这串文字即可

*
 * $var1$
 * $params$ $var2$
 * @author $user$
 * @date $date$ $time$ 
 * @return $return$
 */

注意上面的一个星号不是写错了,必须这么写,变量用$$包起来,下面还会设置变量。

3.然后点击 EDIT VARIABLES… 编辑模板内用到的变量

新增代码模板04

其中params变量需要写一段groovy脚本,内容如下:

groovyScript("def result=''; def params=\"${_1}\".replaceAll('[\\\\[|\\\\]|\\\\s]', '').split(',').toList(); for(i = 0; i < params.size(); i++) {if(params[i] == '') return result;if(i==0) result += '\\n'; result+=' \* @param ' + params[i] + ((i < params.size() - 1) ? '\\n' : '')}; return result", methodParameters())

4.最后修改模板的作用范围,并点击OK保存模板

总所周知,模板都是有一个固定的作用范围,在没有设置的时候是这样的

新增代码模板05

这时点击 define 可以设置模板的作用范围,如果已经设置过了,想修改作用范围,这里会变成 change ,点击 change 进入此二级菜单修改作用范围

新增代码模板06

一些在模板变量中使用的函数

函数名称作用函数说明
annotated(<annotation>)返回所有被指定注解注释的类、方法或字段此函数返回带有指定名称注解的类、方法、或字段,如果项目中有多个带有指定注解的程序元素,那么就会展示为一个列表,可以从中选择。
例如,annotated('java.lang.Deprecated') 返回所有带有 @Deprecated 注解的程序元素
RESTful Web ServicesWeb Services 模板组中一些预定义的代码模板使用到了 annotated() 函数
arrayVariable()返回当前作用域中最近声明的数组此函数返回当前作用域中最近声明的数组(作为方法变量或类字段),如果在当前作用域中声明了多个数组,它就会显示一个列表,可以从中进行选择。
例如,如果你有以下方法,并且在两个数组声明后使用 arrayVariable() 函数的变量展开模板,那么默认情况下,它将返回b数组,并建议选择a数组定义为类字段的其他数组:
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传iterations 模板组中一些预定义的代码模板使用到了 arrayVariable() 函数
blockCommentEnd()块注释结束字符此函数返回当前语言上下文环境下块注释的结束字符。
例如,在Java文件中,它返回 */
blockCommentStart()块注释开始字符此函数返回当前语言上下文环境下块注释的开始字符。
例如,在Java文件中,它返回 /*
camelCase(<String>)小驼峰法将字符串转换为驼峰拼写法。
例如,camelCase("my-text-file"), camelCase("my text file"), 和camelCase("my_text_file") 这些都返回 myTextFile
capitalize(<String>)首字母大写将字符串的首字符转为大写。
例如,``capitalize(“name”)返回Name。也可以组合成 capitalize(camelCase(“my awesome class”))得到MyAwesomeClass`。
capitalizeAndUnderscore(<String>)全大写+下划线(常量)将字符串的所有字符转成大写,并且在每个部分之间插入一个下划线。
例如,capitalizeAndUnderscore("FooBar"), capitalizeAndUnderscore("foo bar"), 和capitalizeAndUnderscore("foo-bar") 这些都返回FOO_BAR
castToLeftSideType()左侧表达式转换如果有必要的话,此函数将会把右侧表达式转换为左侧表达式的类型
iterations 模板组中一些预定义的代码模板使用 castToLeftSideType() 函数为原生类型和泛型类型提供一个模板,
rightSideType() 函数进行比较。
className()类的全限定名此函数返回当前类(展开模板)的名称,可用于构造函数模板
clipboard()粘贴板内容此函数返回系统粘贴板内容
commentEnd()行注释结束字符此函数返回当前语言上下文环境下注释结束的字符。对于带有行注释的语言,返回值为空。
commentStart()行注释开始字符此函数返回当前语言上下文环境下注释开始的字符。对于带有行注释的语言,返回值是行注释的开头,和 lineCommentStart() 函数相同
complete()代码补全在变量的位置上调用代码补全
completeSmart()智能代码补全在变量的位置上调用智能代码补全
componentTypeOf(<array>)返回数组的组件类型此函数返回数组类型的组件。
例如,使用 arrayVariable() 函数的返回值调用 componentTypeOf() 函数, 或者通过 itar 模板使用此逻辑正确指定数组的迭代元素
concat(<String>, ...)字符串连接此函数返回由所有字符串参数的连接而成的字符串。
currentPackage()当前包名此函数返回当前包名称(带有展开模板的类)
date([format])当前系统日期此函数返回当前系统日期
在默认情况下(无参),返回当前系统格式的日期。要使用其他的时间格式,请根据 SimpleDateFormat 类的规范提供参数。
例如 date("Y-MM-d, E, H:m") 返回格式化日期 2020-02-27, Thu, 16:11
dbColumns()字段清单此函数返回表或视图的字段清单,常被用于上下文代码模板(例如 ins),右击对象并选择 SQL Scripts 可以访问上下文代码模板

 

3.3、项目创建

  • Java项目
  • Maven项目
  • Spring Boot项目

 

3.3.1、Java项目

前言

IDEA是一款开发Java语言的软件,如果我们只想简单的创建一个Java文件然后使用IDEA运行它是不行的,这时候我们就需要创建一个Java项目,把所有的文件都创建在这个Java项目里面就行。

 

前置操作(以2023版IDEA为例)

首先需要通过以下操作进入创建项目的窗口,然后再进行创建

File -> New -> Project…

用于创建项目的二级菜单项

 

具体步骤

  1. 设置项目信息,比如项目名称、所属位置等等

    这个是创建JavaFX项目的生成器,不要和Java项目的混淆了

    创建JavaFX项目

    创建Java项目的是下面这个

    创建Java项目01

 

  1. 设置完成后,点击 CREATE 完成创建

    创建Java项目02

     

  2. 点击 THIS WINDOW 或 NEW WINDOW 打开新创建的项目窗口

创建Java项目03

 

  1. 之后就可以愉快的玩耍了,打开项目后直接就能开始写代码

    创建Java项目04

 

小贴士

如果不小心关闭了某个窗口不知道怎么打开,可以点击菜单中的 View 菜单,再点击 Tool Windows 查看其二级菜单页面,查看哪个工具窗口被你关掉了,你就点哪个

不小心关闭某个窗口怎么办

如果找不到工具栏,也可以查看下面 Appearance 的二级菜单页面,这里可以开关工具栏和一些其他的菜单栏

如何打开某些菜单栏

 

3.3.2、Maven项目

前置操作(以2023版IDEA为例)

首先需要通过以下操作进入创建项目的窗口,然后再进行创建

File -> New -> Project…

用于创建项目的二级菜单项

 

具体步骤

  1. 设置Maven项目的具体信息,比如JDK、项目名称以及所在路径

    创建Maven项目页面详解

  2. 设置完成后,点击 CREATE 创建 Maven 项目

    Maven项目创建模板

  3. 选择 NEW WINDOWTHIS WINDOW 打开刚创建的项目

打开Maven项目提示窗口

  1. 如果你创建Maven项目时有选择某一个项目模板的话,打开项目后可能会下载相应的Maven依赖,这里只需等待下载完成即可

    新创建的Maven项目

 

一些概念

名词解释作用
archetype项目模板archetype 是一个 Maven 的项目模板,它提供了一种可以快速创建的方式。有了它,我们在创建 Maven 项目时,可以快速开发指定模板类型的项目
catalog模板日志catalog 是存储 archetype 信息的 XML 文件,如果你不理解的话,可以将之理解为是 Maven 的配置文件

 

3.3.3、Spring Boot项目

Spring Boot 是 Spring 官方的一个子框架,集成了 Spring 的很多框架包括但不限于 Spring、Spring MVC等等,它有一个内置的嵌入式容器 Tomcat,无需外置容器即可自行启动

前置操作(以2023版IDEA为例)

首先需要通过以下操作进入创建项目的窗口,然后再进行创建

File -> New -> Project…

用于创建项目的二级菜单项

具体步骤

1.设置项目使用开发语言、项目名称,具体位置等

使用Spring initializer 创建Spring Boot项目01

 

  1. 设置完成后,点 next 下一步

    使用Spring initializer 创建Spring Boot项目02

 

  1. 设置 Spring Boot 的版本,以及项目依赖,Spring Boot 3及以上 最低要求JDK17,这里我们版本号选择 2.7.17,设置好后,点 CREATE 下一步

    使用Spring initializer 创建Spring Boot项目03

  2. 如果你之前打开过一个项目,那么就会弹出这个提示框,点 NEW WINDOW 就会在新的项目窗口打开新创建的项目了

使用Spring initializer 创建Spring Boot项目04

  1. 现在,你就成功创建了一个 Spring Boot 项目,可以开始开发应用了

    使用Spring initializer 创建Spring Boot项目05

小贴士

  IDEA中的Spring Boot项目创建默认是通过 Spring 官网的初始化器实现的

3.4、神级插件

  • JRebel and XRebel
  • Translation
  • MybatisX
  • Rainbox Brackets
  • Bito
  • Maven Helper
  • LeetCode Editor

 

3.4.1、JRebel and XRebel

介绍

  JRebel 是一个允许开发者即刻重载代码更改的生产力工具,它跳过了Java开发中常见的重构、重启以及重新部署的周期。使得开发人员能在相同的时间下完成更多的工作并且始终维持在 coding 的状态下。此外,它支持大多数现实世界的企业Java堆栈而且易于安装到现有的开发环境中。

  XRebel 是一种用于Java开发的性能分析工具,它可以为Java开发人员提供实时接口性能分析,帮助他们在开发阶段更快、更早的定位和解决潜在的问题。

JRebel and XRebel

说到 JRebel and XRebel 肯定会有人不服气说 Spring 不是有热部署依赖嘛引入依赖开启自动编译就可以自动热部署,这个插件有什么厉害的地方吗?同学,你要知道,Spring 的热部署本质上就是热重启,你改动代码之后,Spirng 检测到了就会重启服务,而 JRebel and XRebel 不需要重启服务,只需要重新编译文件即刻,是真真正正的热部署。Spring 的那个热部署只能算是个假的。不过 JRebel and XRebel 是一个收费插件,所以有些人即使知道也不会使用它,但是没关系,我们可以破解,破解之后它就很香了,具体怎么破解可以百度,有很多方案我这里就不详细说了

 

如何使用

  1. 开启自动构建

在使用此插件前,我们需要先到设置中开启自动构建,勾选图中这两项即可,中间那项内存(64G内存)多的话可以考虑勾选

如何使用热部署插件01

  1. 修改项目设置

开启自动构建之后,我们还需要对项目进行设置,这里我以2023版为例

修改项目的运行配置,点运行配置项,选中On ‘Update’ action,选择 Update classes and resources

如何使用热部署插件02

在JRebel 面板中勾选所有的模块

如何使用热部署插件03

接着我们需要修改JRebel的代理,点下面这个框

如何使用热部署插件04

再选择 JRebel + XRebel,就可以同时使用这两个插件了

如何使用热部署插件05

启动项目的时候,我们要点下面这两个地方的任一图标启动项目,热部署才能生效

如何使用热部署插件06

看到控制台打印了下面的信息,就说明项目成功使用插件启动了

如何使用热部署插件07

Xrebel 不用配置直接使用,服务启动时会在控制台打印XRebel的访问地址,点击就可通过浏览器访问

如何使用热部署插件08

这里可以查看每个调用的接口的具体操作,耗时,调用流程等等,包含日志还可以导出非常详细,它可以帮助我们更好的分析接口性能,从而找出项目中潜在的问题

如何使用热部署插件09

3.4.2、Translation

  顾名思义就是翻译软件,有的时候程序员会为了变量名称、字段名称而就纠结,这时候有一个翻译插件就很方便,你也可以用来它来翻译API文档,非常简单且容易上手。

此外,这个插件还集成了很多翻译引擎:

  • 微软翻译
  • 谷歌翻译
  • DeepL翻译
  • OpenAI翻译
  • 有道翻译
  • 阿里巴巴翻译
  • 百度翻译

Translation

使用也很简单,默认的翻译引擎是微软翻译,不过我们可以可以去配置其他的翻译引擎,比如百度,只要注册百度账号,百度开放平台中申请通用文本翻译_服务信息接口,普通版免费5万字符/月,高级版免费100万字符/月

申请百度通用翻译API

正常使用的话,这些免费用量是完全够用,申请好之后,直接在设置中配置好百度翻译的APPID和密钥就行

百度翻译引擎配置

 

3.4.3、MybatisX

话不多说,上图

MybatisX官方介绍

上面这张图是我从官方网站上找到的,从图中我们可以直观地看到MybatisX的用法以及用途,其实就是映射mapper层的接口,方便我们定位与查找SQL语句。

此外,在撰写方法时,还能自动提示XML文件的相关方法,是一个非常实用的插件,安装完也不用配置什么,直接就能使用。

3.4.4、Rainbox Brackets

介绍

Brainbox Brackets 直译为彩虹括号,事实上这就是它最主要的功能,为代码中各种类型的括号提供不同的色彩,这些色彩可以通过颜色生成器来配置,还支持自定义颜色、当前代码块高亮显示,JSX支持等等,此外,还支持很多的编程语言,包括:Java, Scala, Clojure, Kotlin, Python, Haskell, Agda, Rust, JavaScript, TypeScript, Erlang, Go, Groovy, Ruby, Swift, Elixir, ObjectiveC, PHP, HTML, XML, SQL, Apex language, C#, F#, Dart, Pug/Jade, Bash, Vue.js, C# Razor Pages, GLSL(the OpenGL Shading Language), Go Template, C++, C, Solidity 等等

Rainbow Brackets

不过有一点要注意的是,这个插件是收费的,但是没关系,有免费版本,如果有想白嫖的同学可以下载早先的免费版本使用,只有最新版本是收费的

使用Rainbox Brackets之后的效果

从上图中我们可以看出,有了这个插件之后,代码的层级变得非常明显,因而代码也变得养眼美观,这有助于提升我们编写代码的速度

 

3.4.5、Bito

Bito 是一个基于 ChatGPT GPT-4AI 代码助手,这款插件是由 ChatGPT 官方团队研发的,被誉为是开发人员的最佳 AI 代码助手,有付费的功能(每月$15),但是免费功能对一般的开发者而言够用了。

它的特点是:提升 31% 编码效率、每月的使用量是搜索的 200 倍以上,每天节省至少 2 个小时的时间

Bito

 

那么Bito能干什么呢?
  • 回答你的所有问题,例如:How to rebase a branch in git? ( git 中如何 rebase 分支?)

How to rebase a branch in git

  • 与AI一起编码

Bito AI 现在可以理解你的代码库,只需在聊天框中输入代码。或者问一些问题,比如mapper层的mapper文件是干什么的?

不过这个功能需要付费才能使用,这里就不作展示了

  • 使用预构建命令,如下图:使用预构建命令解析main方法

使用预构建命令解析main方法

此外,我们还能使用预构建指令为代码生成注释(英文),解析代码等等

 

小提示

实际上它可以回答你的所有问题,不过你需要掌握好一定的技巧,问问题也是需要方法的

  1. 首先需要使用英文进行提问,中文也可以,但是英文可以描述的更专业,回答的内容也较为准确

  2. 尽量多在细节上描述一下你的问题,比如你问“如何隐藏非必填项”?,这个问题就问的不好,描述的不细致

 

3.4.6、Maven Helper

这是一个使用 Maven 必备的插件,它可以:

Maven Helper

  1. 使用简单的方式分析和排除冲突的依赖关系
  2. 为包含当前文件的模块或主模块运行或调试 Maven 命令
  3. 在当前 Maven 模块路径下打开终端
  4. 运行或调试当前的测试文件

 

自从使用之后,感觉确实不错,有的时候依赖冲突了也不好解决,有了它就方便多了

使用插件查看依赖冲突

使用的时候,要先打开POM文件,在打开的POM文件下面,有 TEXTDependency Analyzer,点击 Dependency Analyzer ,再点击 Conflicts 可以查看当前POM文件是否有冲突, 然后尝试解决

使用插件解决依赖冲突

 

3.4.7、LeetCode Editor

LeetCode

LeetCode Editor

这个插件可以用来练习力扣网站的算法题目,闲来无事的时候用它来刷刷题是再好不过了,支持 leetcode.com 和 leetcode.cn,可以登录自己的账号同步刷题进度

刷题插件绑定力扣账号01

 

当看到下面这个提示时,说明你已经成功登录了,可以开始愉快的刷题了

刷题插件绑定力扣插件02

 

 

3.4.8、Lombok

Lombok 其实是一个第三方依赖库,有了它我们可以不用再生成Getter、Setter等方法,此插件是IDEA专门为此设计的,更是在最新版本中变成了内置插件,足可见此插件的实用性

Lombok

Lombok 依赖配合此插件简直无敌,不过大部分人可能只知道 Lombok 可以让你不用为实体类生成对应的getter、setter以及toString方法

 

链式风格

什么是链式风格呢?举个例子

/**
 * 用户实体类
 *
 * @author wl
 * @date 2023/11/8 14:49
 */
public class User {

    /** 账号 */
    private String account;

    /** 密码 */
    private String password;

    /** 昵称 */
    private String nickName;
    
    
    
    /** setter、getter 方法 */
    
    public String getNickName() {
        return nickName;
    }

    public User setNickName(String nickName) {
        this.nickName = nickName;
        return this;
    }
    
    public String getAccount() {
        return account;
    }
    
    public User setAccount(String account) {
        this.account = account;
        return this;
    }

    public String getPassword() {
        return password;
    }

    public User setPassword(String password) {
        this.password = password;
        return this;
    }

}

仔细看看 setter 方法,这样的代码就是链式风格的,调用的时候,可以像下面这样使用:

User user = new User()
    .setAccount("admin")
    .setPassword("admin123")
    .setNickName("超级管理员");

就像”链条“一样,可以无限调用,相信如果程序员合理使用这样的链式风格的写法,会大大提升代码的可读性。那如果使用 Lombok 进行改善呢?又是怎么样的呢?请看以下代码:

/**
 * @author wl
 * @date 2023/11/8 14:49
 */
@Accessors(chain = true)
@Setter
@Getter
public class User {

    /** 账号 */
    private String account;

    /** 密码 */
    private String password;

    /** 昵称 */
    private String nickName;

}

使用 Lombok 简化后,代码在变得清爽简洁的情况下,可读性也大大提升了。

 

静态构造方法

静态构造方法的语义和简洁程度往往高于直接 new 一个对象,比如 new 一个 HashMap 集合,我们一般会这么写:

Map<String, Object> map = new HashMap<>();

但是上面这样写语义不够明确,guava 就简洁多了

Map<String, Object> map = Maps.newHashMap();

一般来说,约定优于配置,像 Map 命名就是一个约定,Maps 就指的是 Map 这个类的一个工具类,那么使用 Map 的工具类去创建 Map,这样的语义是不是比直接 new 一个 Map 的子类来的简单明了?答案是肯定的。再比如有一个工具类叫 Sets,你肯定能联想到创建 Set 的方法

Set<String> set = Sets.newHashSet();

我们再回头看看刚刚的 User,很多时候,我们在写 User 这个实体类的时候,往往会有一些必填的字段,比如 User 中的 account,一般是创建一个只有 account 的构造器方法,只有传入 account,才能创建一个 User 对象。

Lombok中刚好就有一个 RequiredArgsConstructor 注解可以实现,如此,我们可以通过它将 User 改成下面的这种写法:

@Accessors(chain = true)
@Setter
@Getter
@RequiredArgsConstructor(staticName = "ofName")
public class User {

    /** 账号 */
    @NonNull
    private String account;

    /** 密码 */
    private String password;

    /** 昵称 */
    private String nickName;
    
}

代码示例如下:

// new User(); 这一段代码会报错
User user = User.ofName("admin");

这样构建的一个类是要比直接 new 一个带参的构造器方法要好得多,不过看过很多源码之后,我发现把静态构造方法 ofName 换成 of 会显得更优雅,比如JDK8的 Stream 就有 of 的静态构造方法:

User user = User.of("admin");

当然,这也是支持链式风格的:

User user = User.of("admin").setNickName("超级管理员").setPassword("admin123");

 

关于 Lombok 的更多用法,可以移步这篇公众号文章:你见过哪些目瞪口呆的 Java 代码技巧?,这位大佬是真的厉害👏,Lombok 的其他用法我也是从这篇文章中发掘出来的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/285757.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构--队列【详解】~(˶‾᷄ꈊ‾᷅˵)~

目录 队列定义&#xff1a; 队列的声明与头文件的包含&#xff1a; 队列的声明&#xff1a; 头文件的包含&#xff1a; 队列的基本操作: 初始化队列 : 摧毁队列&#xff1a; 入队列&#xff1a; 出队列&#xff1a; 返回队头数据&#xff1a; 返回队尾数据&#xff1…

如何使用Docker部署Swagger Editor结合内网穿透实现远程编辑API文档

文章目录 Swagger Editor本地接口文档公网远程访问1. 部署Swagger Editor2. Linux安装Cpolar3. 配置Swagger Editor公网地址4. 远程访问Swagger Editor5. 固定Swagger Editor公网地址 Swagger Editor本地接口文档公网远程访问 Swagger Editor是一个用于编写OpenAPI规范的开源编…

Sectigo怎么把多个网站地址改为https

随着电脑以及手机的普及&#xff0c;全世界的人都已经习惯在互联网提问、购物、浏览资讯等&#xff0c;越来越多的用户开始担心自己的信息(银行卡号、电话、支付密码等)被窃取以及篡改。SSL数字证书将http明文传输协议改为https加密传输协议&#xff0c;可以对网站传输信息加密…

electron自定义菜单

创建menu.js const { app, Menu } require("electron"); const createMenu () > {const menu [{label: "菜单",submenu: [{label: "新增",click: () > {},}, ],},{label: "关于",submenu: [{label: "新增",click:…

不要坑老实人,搭建自己的知识付费小程序平台应该选哪一个?

明理信息科技知识付费saas租户平台 随着知识经济的兴起&#xff0c;知识付费已经成为一种趋势。越来越多的人开始将自己的知识和技能进行变现&#xff0c;而知识付费小程序平台则成为了一个重要的渠道。然而&#xff0c;市面上的知识付费小程序平台琳琅满目&#xff0c;其中不…

进阶学习——Linux系统磁盘管理与文件系统

目录 一、磁盘 1.认识磁盘 2.分区 2.1MBR&#xff08;Master Boot Record&#xff09;——主引导记录 2.2GPT分区 2.3磁盘分区结构 3.文件系统 3.1文件系统组成 3.1.1XFS ext4 3.1.2swap 3.1.3FAT16、FAT32 3.1.4NTFS&#xff08;xfs&#xff09; 3.1.5EXT4 3…

2024年运动款蓝牙耳机哪个品牌好?运动蓝牙耳机排行榜10强

​选择一款适合运动的耳机&#xff0c;可以让你的锻炼变得更加高效和愉快。运动耳机不仅需要具备出色的音质&#xff0c;还要有良好的防水防汗能力和舒适的佩戴体验。市面上有许多种运动耳机可供选择&#xff0c;但哪款才是最适合你的呢&#xff1f;下面我来给大家推荐几款值得…

高可用解决方案 Keepalived 概述

概述 Keepalived 介绍 Keepalived 是 Linux 下一个轻量级别的高可用解决方案&#xff0c;通过 **VRRP 协议&#xff08;虚拟路由冗余协议&#xff09;**来实现服务或者网络的高可用&#xff0c;可以利用其来解决单点故障。 起初是为 LVS 设计的&#xff0c;一个 LVS 服务会有 …

C++:继承(这一篇就够了)

C&#xff1a;继承&#xff08;这一篇就够了&#xff09; 一、继承的概念及定义1.1 继承的概念1.2 继承定义1.2.1定义格式1.2.2 继承关系和访问限定符1.2.3 继承基类成员访问方式的变化 二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与静态…

竞赛保研 基于情感分析的网络舆情热点分析系统

文章目录 0 前言1 课题背景2 数据处理3 文本情感分析3.1 情感分析-词库搭建3.2 文本情感分析实现3.3 建立情感倾向性分析模型 4 数据可视化工具4.1 django框架介绍4.2 ECharts 5 Django使用echarts进行可视化展示5.1 修改setting.py连接mysql数据库5.2 导入数据5.3 使用echarts…

C++正则表达式全攻略:从基础到高级应用

C正则表达式全攻略&#xff1a;从基础到高级应用 一、基础知识二、正则表达式的基本匹配三、C中使用正则表达式四、高级正则表达式五、实践示例六、性能优化6.1、编译正则表达式6.2、避免过度使用回溯6.3、优化匹配算法 七、总结 一、基础知识 正则表达式是一种用于匹配、搜索…

【如何选择Mysql服务器的CPU核数及内存大小】

文章目录 &#x1f50a;博主介绍&#x1f964;本文内容&#x1f4e2;文章总结&#x1f4e5;博主目标 &#x1f50a;博主介绍 &#x1f31f;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作…

【数据结构-单链表】(C语言版本)

今天分享的是数据结构有关单链表的操作和实践&#xff08;图解法&#xff0c;图变化更利于理解&#xff09; 记录宗旨&#x1f4dd;&#xff1a; 眼&#xff08;脑&#xff09;过千遍&#xff0c;不如手过一遍。 我们都知道单链表是一种常见的链表数据结构&#xff0c;由一系列…

关于标准那些事——第六篇 四象之“白虎”(要素的编写)

两仪生四象——东方青龙&#xff08;木&#xff09;、西方白虎&#xff08;金&#xff09;、南方朱雀&#xff08;火&#xff09;、北方玄武&#xff08;水&#xff09; 分别对应标准编写之四象——层次的编写、要素的编写、要素的表述、格式的编排。 今天来分享一下 要素的编…

【零基础入门TypeScript】TypeScript - 环境设置

目录 本地环境设置 文本编辑器 TypeScript 编译器 安装 Node.js 在 Windows 上安装 在 Mac OS X 上安装 IDE支持 视觉工作室代码 在 Windows 上安装 在 Mac OS X 上安装 在 Linux 上安装 括号 括号的 TypeScript 扩展 var message:string "Hello World"…

如何使用Node.js快速创建本地HTTP服务器并实现公网访问服务端

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

WPF+Halcon 培训项目实战(8-9):WPF+Halcon初次开发

文章目录 前言相关链接项目专栏运行环境匹配图片WPF Halcon组件HSmartWindowControlWPF绑定读取图片运行代码运行结果 抖动问题解决运行结果 绘制矩形绘制图像会消失 绘制对象绑定事件拖动事件 前言 为了更好地去学习WPFHalcon&#xff0c;我决定去报个班学一下。原因无非是想…

试用了所有热门的报表工具,终于找到这款好用的报表工具,太赞了

经常有朋友向我咨询&#xff0c;有没有哪个报表工具既简单易上手&#xff0c;又适合绝大多数普通职场人使用。经过我的一番研究&#xff0c;我发现大家在选择报表工具时&#xff0c;主要关注以下3点&#xff1a; 1. 简单易上手&#xff1a;大家希望报表工具的学习门槛低&#…

怎样才能找到合适的产品说明书模板?方法献上

制作一份专业而吸引人的产品手册对于企业来说至关重要。然而&#xff0c;对于许多企业和个人而言&#xff0c;制作产品手册可能是一个挑战&#xff0c;因为需要一定的设计和排版能力。为了帮助大家更轻松地制作出优质的产品手册&#xff0c;下面将向大家推荐三款优秀的产品手册…

杭州默医宠物医院:猫咪应激,铲屎官一定要重视!

“猫咪应激”铲屎官们都略有耳闻&#xff0c;甚至自家猫主子也有出现过&#xff0c;但很多铲屎官对猫咪应激不重视。猫咪应激的程度可能远超出我们的想象。 一、猫应激的原因有以下方面&#xff1a; ①外出 ②搬家 ③洗澡 ④猫群不合 ⑤强迫猫咪做某些行为 ⑥主人的一惊…