介绍五个很实用的IDEA使用技巧
日常开发中,相信广大 Java 开发者都使用过 IntelliJ IDEA 作为开发工具,IntelliJ IDEA 是一款优秀的 Java 集成开发环境,它提供了许多强大的功能和快捷键,可以帮助开发者提高编码效率和质量。除了一些常见的技巧,如自动导包、智能补全、重构工具等。IntelliJ IDEA 还有一些不为人知的技巧,可能很多开发者都没有注意到或者使用过。本文就在为你介绍博主常用的五个 IntelliJ IDEA 使用技巧,希望能够给你带来一些工作效率上的提升。本文内容大纲如下:
- 注释对齐
- 快速创建包目录/文件夹
- 快付复制类代码生成 Java 类
- 多实例启动
- 分支比较
注意:本文的示例截图以及操作演示都是基于 IntelliJ IDEA 2023.2 版本而来。过低版本可能不尽相同,大家注意。
注释对齐
日常开发中,相信大家在添加注释时都知道使用快捷键 ctrl + / ,不过大家可能会遇见下面这种情况,
public DiamondJumpContext(List<DiamondJumpType> diamondJumpTypes) {
//添加注释
for (DiamondJumpType diamondJumpType : diamondJumpTypes) {
// map.put(diamondJumpType.getType(), diamondJumpType);
}
}
可以看到,使用快捷键 ctrl + / 添加注释代码或者注释已有代码时,默认是在首行位置,无法与下方 for 循环代码自动对齐,造成了视觉上的不美观,那如何解决这个问题嘞?其实解决方法就藏在 IDEA 里,我来告诉大家如何设置。
打开 IDEA 设置 Editor -> Code Style -> Java -> Code Generation,找到下方的 Comment code 区域, 取消 Line comment at first column 的默认勾选,将 Add a space at line comment start 以及 Enforce on reformat 打上勾就可以了。如下图所示,
然后我们重新给上面的示例代码打赏注释时,效果就是下面这样了,
public DiamondJumpContext(List<DiamondJumpType> diamondJumpTypes) {
// 添加注释
for (DiamondJumpType diamondJumpType : diamondJumpTypes) {
// map.put(diamondJumpType.getType(), diamondJumpType);
}
}
大家可以很明显的看到,此时添加的注释默认是跟当前代码对齐,并且自动留出一个空格,代码的可阅读性有了很大提升。
快速创建包目录/文件夹
创建包目录
日常开发时,当大家想新建 Java 类时,考虑到项目的包目录划分可能需要新建一个包目录,那么大家是如何操作的嘞?是先创建好包目录后,在创建 Java 类吗?其实在 IDEA 中创建 Java 类时,是可以直接顺带创建包目录的,具体操作如下。
在创建 Java 类时,直接写出包目录名称通过 . 拼接即可,如下图新建 Java 类时填上 controller.TestController ,
效果如下,
可以看到,包目录自动创建成功。
创建文件夹
快速创建文件夹的方式跟快速创建包目录差不多,只不过将 . 拼接改为 / 即可,如下图新建文件时填上 template/test.csv,
效果如下,
可以看到,文件夹自动创建成功。
快付复制类代码生成 Java 类
日常中有个场景,博主经常在上网浏览网上的技术资料,看到感兴趣的文章时,想要复制文章中的 demo 代码在本地跑一遍验证一下。于是就有了这个快付复制代码生成 Java 类的需求。起初博主老老实实通过常规操作在本地手动创建 Java 类,然后拷贝 demo 代码进行验证。后来了解到其实在 IDEA 中是有快付复制类代码生成 Java 类的功能,这里分享给大家。
假如当前我们想要快速复制下方的 Java 类代码到 IDEA 项目中,那改如何操作嘞?
/**
* 金刚位跳转策略配置
*/
@Component
public class DiamondJumpContext {
private final Map<Integer, DiamondJumpType> map = new HashMap<>();
/**
* 由spring自动注入DiamondJumpType子类
*
* @param diamondJumpTypes 金刚位跳转类型集合
*/
public DiamondJumpContext(List<DiamondJumpType> diamondJumpTypes) {
for (DiamondJumpType diamondJumpType : diamondJumpTypes) {
map.put(diamondJumpType.getType(), diamondJumpType);
}
}
public DiamondJumpType getInstance(Integer jumpType) {
return map.get(jumpType);
}
}
其实操作是很简单的,我们可以通过全选复制上述 Java 类代码,然后打开 IDEA,鼠标选中指定的包目录后通过 ctrl + v 粘连即可。
效果如下,
可以看到,我们已经将 Java 类代码快速复制到本地文件中。
多实例启动
日常本地开发微服务项目时,博主想要验证一下网关的负载均衡以及感知服务上下线能力时,需要用到多实例启动。
那么什么是多实例启动嘞?简单说就是能在本地同时启动多个同一服务。打个比方项目中有一个 MobileApplication 服务,我现在想要同时启动两个 MobileApplication 服务,通过不同端口区分,该如何操作嘞?IDEA 中其实是支持这个操作的。我将给大家介绍如何启用多实例功能。
打开服务配置,点击 Modify options 选项,
勾选打开 Operation System -> Alow multiple instance ,继续勾选打开 Java -> Program arguments,然后在 Program arguments 输入框中指定端口,在 Spring 项目中通过 --server.port=9999,如下图(注意每次启动实例时,这里的端口不能相同),
效果图如下,
可以看到,这里多实例启动的功能就 OK 了,在 Modify options 选项中还有许多常用功能,对于日常开发都是很多帮助的,比如 Java -> add VM options 可以用来添加 jvm 启动参数等。
分支比较
日常开发中,当项目上线时,博主经常会使用这个功能,用于比较当前新功能分支与 master 分支的代码差异。
假如新功能分支上线前经历了多个人员参与迭代以及冲突修复,作为项目主程的你需要在项目上线前进行代码 review,以确保代码质量,那该如何操作嘞? 其实 IDEA 已经贴心的为我们做好了一切,这里我将给大家介绍远程分支比较功能。
右键项目根目录,找到 Git -> Compare with Branch 选项,点击打开,
此时 IDEA 会显示项目的所有分支列表,我们从中找到 master 分支,点击即可,
最后 IDEA 会显示所有的文件差异在项目左侧栏目,我们点击某个文件即可查看某个具体差异。
效果如下,
可以看到,通过 IDEA 提供的分支比较功能,为我们进行代码 review,提供了非常便利的操作。
总结
其实本文所讲解的五个实用技巧不光在 IDEA 里可以使用,在 PhpStorm、PyCharm 中都是通用的,欢迎大家在浏览完本文后实践体验下。最后希望本文在日常工作中能够帮助到大家,感谢阅读。
关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!
介绍五个很实用的IDEA使用技巧的更多相关文章
- 一个鲜为人知但很实用的Windows使用技巧
作为一个电脑党,最无法忍受的就是每次开机都要手动打开那些必要的程序.有没办法让这些程序自动打开呢?今天小编意外地得到了一个方法,现在分享给大家. (以腾讯桌面整理为例) 1,Win + R 2,输入t ...
- Connectify是一款很实用的免费软件。能把计算机变成一个无线路由器
Connectify是一款很实用的免费软件.能把计算机变成一个无线路由器.它能通过您计算机上的无线网卡发射一个无线AP,让有WiFi功能的设备(手机.笔记本)上网.3.0版以前仅支持32位Window ...
- Redis集群方案怎么做?大牛给你介绍五种方案!
Redis集群方案 Redis数据量日益增大,而且使用的公司越来越多,不仅用于做缓存,同时趋向于存储这块,这样必促使集群的发展,各个公司也在收集适合自己的集群方案,目前行业用的比较多的是下面几种集群架 ...
- {python之协程}一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二
python之协程 阅读目录 一 引子 二 协程介绍 三 Greenlet 四 Gevent介绍 五 Gevent之同步与异步 六 Gevent之应用举例一 七 Gevent之应用举例二 一 引子 本 ...
- 45个很实用的 Oracle 查询语句小结
这里我们介绍的是 40+ 个很实用的 Oracle 查询语句,主要涵盖了日期操作,获取server信息.获取运行状态.计算数据库大小等等方面的查询. 这些是全部 Oracle 开发人员都必备的技 ...
- 很实用的50个CSS代码片段
原文:50 Useful CSS Snippets Every Designer Should Have 面对每年如此多的 新趋势 ,保持行业的率先是个非常困难问题. 站点设计者和前 ...
- OpenTiny 的这些特色组件,很实用,但你应该没见过
大家好,我是 Kagol,OpenTiny 开源社区运营,TinyVue 跨端.跨框架组件库核心贡献者,专注于前端组件库建设和开源社区运营. 前面给大家介绍了 OpenTiny 快速创建 Vue Ad ...
- Web 开发中很实用的10个效果【附源码下载】
在工作中,我们可能会用到各种交互效果.而这些效果在平常翻看文章的时候碰到很多,但是一时半会又想不起来在哪,所以养成知识整理的习惯是很有必要的.这篇文章给大家推荐10个在 Web 开发中很有用的效果,记 ...
- 分享15款很实用的 Sass 和 Compass 工具
Sass 是 CSS 的扩展,增加了嵌套规则,变量,混入功能等很多更多.它简化了组织和维护 CSS 代码的成本.Compass 是一个开源的 CSS 框架,使得使用 CSS3 和流行的设计模式比以往任 ...
- 一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件
一款很实用的jQuery鼠标悬浮有动画效果的响应式瀑布流插件 在线预览 下载地址 实例代码 <!doctype html> <html lang="zh"> ...
随机推荐
- 终于把 7 年前的 Docker Hub 账号恢复了
折腾 docker,向 Docker Hub 提交镜像的时候发现原来自己在 2014 年就已经注册过 Docker Hub 的账号了,而且在 https://hub.docker.com/u/shen ...
- Java 输入字符串,统计大写字母,小写字母,数字字符的个数
代码如下: public static void main(String[] args) { String str = "AaFsECvcS12483fs+-*/"; int bi ...
- 多模态大语言模型 LlaVA 论文解读:Visual Instruction Tuning
代码:https://github.com/haotian-liu/LLaVA 总览 在这篇论文中,作者首次尝试使用纯语言 GPT-4 生成多模态语言图像指令遵循数据(insruction-follo ...
- 3 分钟为英语学习神器 Anki 部署一个专属同步服务器
原文链接:https://icloudnative.io/posts/anki-sync-server/ Anki 介绍 Anki 是一个辅助记忆软件,其本质是一个卡片排序工具--即依据使用者对卡片上 ...
- 从Kafka中学习高性能系统如何设计
1 前言 相信各位小伙伴之前或多或少接触过消息队列,比较知名的包含Rocket MQ和Kafka,在京东内部使用的是自研的消息中间件JMQ,从JMQ2升级到JMQ4的也是带来了性能上的明显提升,并且J ...
- 实时阴影技术(Real-time Shadows)
目录 Shadow Mapping 基本实现 Shadow Bias Peter Panning 问题 & 简单 Trick Slope Scale Based Depth Bias Casc ...
- 电子表格vlookup函数使用
vlookup是常用的辅助查找函数,但是这个函数的参数定义和解释非常的难以理解,即使用向导也很难搞清楚哪个参数是啥意思.放到编程圈里面应该也算bad design的典型了.下面是函数的定义,每次看到这 ...
- 调用内部或私有方法的N种方法
非公开的类型或者方法被"隐藏"在程序集内部,本就不希望从外部访问,但是有时候调用一个内部或者私有方法可能是唯一的"救命稻草",这篇文章列出了几种具体的实现方式. ...
- Lakehouse: A New Generation of Open Platforms that Unify Data Warehousing and Advanced Analytics
在Delta Lake官网上提到的一篇新一代湖仓架构的论文. 这篇论文由Databricks团队2021年发表于CIDR会议. 这个会议是对sigmod和vldb会议的补充. 可以看到这篇论文和前一篇 ...
- linux内核vmlinux的编译过程之 --- vmlinux.o详解(八)
内核构建系统之所以要在链接 vmlinux 之前,去链接出vmlinux.o.其原因并不是要将 vmlinux.o 链接进 vmlinux,而是要在链接 vmlinux.o 的过程中做完两个动作: e ...