IDEA使用 磨刀霍霍向代码
工欲善其事,必先利其器 ,当下有数不清的 Java 程序员将石器时代的 Eclipse 替换成了现代化的智能开发工具 InteliJ IDEA ,写代码的小日子过得不亦乐乎(玩笑话,两者各有千秋,看个人习惯使用)
可每次看到别人用IDEA 的时候,都会发现,哇哦,还能这样操作,还有每次注册码失效的时候,我都为自己在用盗版软件而“悔恨为什么不多赚钱支持正版”,然后到处找注册码,所以这篇文章来啦来啦~~。。。安装和写hello world 部署到服务器这些就不记录了,
点赞+收藏 就学会系列,文章收录在 GitHub JavaEgg ,N线互联网开发必备技能兵器谱
InteliJ IDEA 介绍
IDEA,全称 IntelliJ IDEA,是 Java 语言的集成开发环境,IDEA 在业界被公认为是最好的 java 开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。
IDEA是 JetBrains 公司的产品,公司旗下还有其它产品,比如: WebStorm、DataGrip、GoLand...
优势
- 强大的整合能力。比如:Git、Maven、Spring 等
- 提示功能的快速、便捷
- 提示功能的范围广
- 好用的快捷键和代码模板 private static final psf
- 精准搜索( IDEA 会将您的源代码编入索引 )
- 不需要频繁的Ctrl+S(自动保存)
- 自带反编译器,方便查看源码
在 Eclipse 中我们有 Workspace(工作空间)和 Project(工程)的概念,在 IDEA 中只有 Project(工程)和 Module(模块)的概念 。Eclipse 中 workspace 相当于 IDEA 中的 Project ,Eclipse 中 Project 相当于 IDEA 中的 Module
IDEA 和 Eclipse 的术语对比
Eclipse | IntelliJ IDEA |
---|---|
Workspace | Project |
Project | Module |
Facet | Facet |
Library | Library |
JRE | SDK |
Classpath variable | Path variable |
模板
实时代码模板 (Live Templates)
它的原理就是配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固 定模式的代码,使得开发效率大大提高,同时也可以增加个性化。最简单的例子 就是在 Java 中输入 sout 会出现 System.out.println();
Editor – General – Postfix Completion 查看已经存在的模板(不可修改)
Editor — Live Templates 查看或自定义模板(可以添加方式注释、类注释)
*
* @description:
* @param $param$
* @return $return$
* @date $time$ $date$
**/
类注释一般通过 File — Setting — Editor — Live Templates — File and Code Templates 设置
断点调试
程序猿么,每天都在写bug,所以这个功能一定得用的溜
配置通用调试属性和行为 : Settings/Preferences | Build, Execution, Deployment | Debugger
1. 断点类型
断点有四种类型:
- 行断点(Line Breakpoints):最经常用的方式, 可以设置在任何可执行的代码行上
- 方法断点(Method Breakpoints): 在进入或退出指定的方法或其实现之一时挂起程序,允许您检查方法的进入/退出条件
- 字段断点(Field Watchpoints): 当指定的字段被读取或写入时,挂起程序。需要注意的是,默认只有写才会停下,想要让读取时也停下,需要右击断点,在Watch的Field access上打勾才行
- 异常断点(Exception Breakpoints): 当抛出Throwable或其子类时挂起程序 。可以在 **Run — View Breakpoints **中的 Java Exception Breakpoints 里添加异常的具体类型。这样的话,程序中一旦发生了这种异常马上就会停下来
2. 设置断点
左键点击行号栏(快捷键: Ctrl+F8
)
设置异常断点
点击Debug工具窗口左侧的的 View Breakpoints 或者快捷键 Ctrl+Shift+F8
,可以新建异常检测,或者检测所有异常(Any Exception) 情况,这样只要程序有相应异常,就会挂起
条件断点
有时候我们在循环处理数据时候,可能只关心某个条件的数据,就可以在断点位置右键,设置断点条件,(下图,在i==6 的时候挂起程序)
多线程断点
在调试多线程代码时候,只能串行调试,因为IDEA在Debug时默认阻塞级别是ALL,会阻塞其它线程,只有在当前调试线程走完时才会走其它线程。如果像下图一样是lambda表达式的行,可以选择断点类型。
可以在 View Breakpoints 里选择 Thread (右键断点),这样就可以Frames 切换线程debug了。
3. 逐步执行程序
- step over —— 步过,如果当前行断点是一个方法,则不进入当前方法体内
- step into —— 步入,如果当前行断点是一个方法,则进入当前方法体内,一般用于进入自定义方法内,不会进入官方类库的方法
- force step into
Shift+Alt+F7
—— 强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法 - step out
Shift+F8
—— 步出, 从步入的方法内退出到方法调用处 - Drop frame —— 回退到上一步
- Run to cursor
Alt+F9
—— 运行到光标处,可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点
断点这块有好多功能,可以分析JVM中堆对象、Java8的Stream操作,留个传送门。。。TODO
某大佬总结的: 在Intellij IDEA中使用Debug
官方教程: https://www.jetbrains.com/help/idea/debugging-code.html
配置Tomcat远程调试
有时候会有一些服务器差异问题导致的问题,不好排查,这个时候就想远程调试下服务器上的代码。
① 配置tomcat, 在tomcat/bin下的 catalina.sh 上边添加下边的一段设置
-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9527
② IDEA设置
③ 在IDEA上启动远程 tomcat后,就能debug了
还有一种复制Startup/Connection 中的内容到 JAVA_OPTS 中,没有尝试
书签
书签在翻看源码或者大佬代码的时候,可以方便记录代码的调用链路。
书签有匿名书签(可以有无数个)和标记书签(有数字或者字母助记符的书签)两种
操作书签:Navigate | Bookmarks 可以创建匿名书签 Toggle Bookmark。创建标技书签 Toggle Bookmark With Mnemonic,查看标签 Show Bookmarks
插件
Lombok —— 开发神器,可以简化你的实体类
Maven Helper —— 方便显示maven的依赖树,处理冲突的好帮手
.ignore —— 忽略不需要提交的文件
FindBugs-IDEA —— 代码审查
Alibaba Java Coding Guidelines —— 阿里的开发设计规范
Alibaba Cloud Toolkit —— 帮助开发者更高效地开发、测试、诊断并部署应用。通过插件,可以将本地应用一键部署到任意服务器或云端;并且还内置了 Arthas 诊断、Dubbo工具、Terminal 终端、文件上传、函数计算和 MySQL 执行器等工具
Easy Code —— 支持自定义模板的代码生成插件
RestfulToolkit —— RESTful 服务开发辅助工具集(安利,可以直接在右侧的RestServices查看,所有项目的restful接口,还可以通过
Ctrl \
全局搜索 )
IDEA 主题和插件排行榜: https://plugins.jetbrains.com/search?orderBy=downloads&products=idea
激活
仅供个人学习使用~~
下载补丁文件
jetbrains-agent.jar
并将它放置到 Idea安装目录的bin目录下,https://pan.baidu.com/s/1Zy-vQGOdKoqDdB8sWIcQOg免费试用,进入IDEA, 点击最上面的菜单栏中的 **Help - Edit Custom VM Options **,在
idea.exw.vmoptionos
文件中加入-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2019.2.4\bin\jetbrains-agent.jar
(换成你的jar包目录),重启重启IDEA 后,打开**Help — Register **,在License Server 填上, http://jetbrains-license-server ,失败的话就输入下边的注册码
520E5894E2-eyJsaWNlbnNlSWQiOiI1MjBFNTg5NEUyIiwibGljZW5zZWVOYW1lIjoicGlnNiIsImFzc2lnbmVlTmFtZSI6IiIsImFzc2lnbmVlRW1haWwiOiIiLCJsaWNlbnNlUmVzdHJpY3Rpb24iOiJVbmxpbWl0ZWQgbGljZW5zZSB0aWxsIGVuZCBvZiB0aGUgY2VudHVyeS4iLCJjaGVja0NvbmN1cnJlbnRVc2UiOmZhbHNlLCJwcm9kdWN0cyI6W3siY29kZSI6IklJIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUlMwIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiV1MiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJSRCIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlJDIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiREMiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJEQiIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlJNIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiRE0iLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJBQyIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IkRQTiIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IkdPIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUFMiLCJwYWlkVXBUbyI6IjIwODktMDctMDcifSx7ImNvZGUiOiJDTCIsInBhaWRVcFRvIjoiMjA4OS0wNy0wNyJ9LHsiY29kZSI6IlBDIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In0seyJjb2RlIjoiUlNVIiwicGFpZFVwVG8iOiIyMDg5LTA3LTA3In1dLCJoYXNoIjoiODkwNzA3MC8wIiwiZ3JhY2VQZXJpb2REYXlzIjowLCJhdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlLCJpc0F1dG9Qcm9sb25nYXRlZCI6ZmFsc2V9-DZ/oNHBfyho0XrrCJJvAOKg5Q1tLBgOdbCmzCKwkuM+Yryce0RoOi3OOmH6Ba/uTcCh/L37meyD0FJdJIprv59y4+n+k2kIeF/XKrKqg0dEsDUQRw0lUqqMt99ohqa+zmbJ44Yufdwwx/F1CtoRGvEQ2Mn0QjuqRoZJZ3wiT5Am22JiJW8MaNUl3wg9YPj+OPGARKKJUdUJ0NGUDQBcBAv5ds8LhbSbJSbPkbkwH/a1QMz4nEdn6lRDKI1aFIn43QhBSCFqvUq6TPJlbIJ0ZjE+PyZjHFBKCgkry0DHPXU2BbtIZPsksQnN3fx240a9K6sN7peZnLpEoMoq23FEz4g==-MIIElTCCAn2gAwIBAgIBCTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTE4MTEwMTEyMjk0NloXDTIwMTEwMjEyMjk0NlowaDELMAkGA1UEBhMCQ1oxDjAMBgNVBAgMBU51c2xlMQ8wDQYDVQQHDAZQcmFndWUxGTAXBgNVBAoMEEpldEJyYWlucyBzLnIuby4xHTAbBgNVBAMMFHByb2QzeS1mcm9tLTIwMTgxMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5ndaik1GD0nyTdqkZgURQZGW+RGxCdBITPXIwpjhhaD0SXGa4XSZBEBoiPdY6XV6pOfUJeyfi9dXsY4MmT0D+sKoST3rSw96xaf9FXPvOjn4prMTdj3Ji3CyQrGWeQU2nzYqFrp1QYNLAbaViHRKuJrYHI6GCvqCbJe0LQ8qqUiVMA9wG/PQwScpNmTF9Kp2Iej+Z5OUxF33zzm+vg/nYV31HLF7fJUAplI/1nM+ZG8K+AXWgYKChtknl3sW9PCQa3a3imPL9GVToUNxc0wcuTil8mqveWcSQCHYxsIaUajWLpFzoO2AhK4mfYBSStAqEjoXRTuj17mo8Q6M2SHOcwIDAQABo4GZMIGWMAkGA1UdEwQCMAAwHQYDVR0OBBYEFGEpG9oZGcfLMGNBkY7SgHiMGgTcMEgGA1UdIwRBMD+AFKOetkhnQhI2Qb1t4Lm0oFKLl/GzoRykGjAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBggkA0myxg7KDeeEwEwYDVR0lBAwwCgYIKwYBBQUHAwEwCwYDVR0PBAQDAgWgMA0GCSqGSIb3DQEBCwUAA4ICAQBonMu8oa3vmNAa4RQP8gPGlX3SQaA3WCRUAj6Zrlk8AesKV1YSkh5D2l+yUk6njysgzfr1bIR5xF8eup5xXc4/G7NtVYRSMvrd6rfQcHOyK5UFJLm+8utmyMIDrZOzLQuTsT8NxFpbCVCfV5wNRu4rChrCuArYVGaKbmp9ymkw1PU6+HoO5i2wU3ikTmRv8IRjrlSStyNzXpnPTwt7bja19ousk56r40SmlmC04GdDHErr0ei2UbjUua5kw71Qn9g02tL9fERI2sSRjQrvPbn9INwRWl5+k05mlKekbtbu2ev2woJFZK4WEXAd/GaAdeZZdumv8T2idDFL7cAirJwcrbfpawPeXr52oKTPnXfi0l5+g9Gnt/wfiXCrPElX6ycTR6iL3GC2VR4jTz6YatT4Ntz59/THOT7NJQhr6AyLkhhJCdkzE2cob/KouVp4ivV7Q3Fc6HX7eepHAAF/DpxwgOrg9smX6coXLgfp0b1RU2u/tUNID04rpNxTMueTtrT8WSskqvaJd3RH8r7cnRj6Y2hltkja82HlpDURDxDTRvv+krbwMr26SB/40BjpMUrDRCeKuiBahC0DCoU/4+ze1l94wVUhdkCfL0GpJrMSCDEK+XEurU18Hb7WT+ThXbkdl6VpFdHsRvqAnhR2g4b+Qzgidmuky5NUZVfEaZqV/g==
- Help — About,搞定
参考
IntelliJ IDEA 2019.3官方指南 https://www.jetbrains.com/help/idea/installation-guide.html
idea2019激活 https://segmentfault.com/a/1190000021488264
干了这杯 Java 你可能会提升一些功力
IDEA使用 磨刀霍霍向代码的更多相关文章
- 基于虎书实现LALR(1)分析并生成GLSL编译器前端代码(C#)
基于虎书实现LALR(1)分析并生成GLSL编译器前端代码(C#) 为了完美解析GLSL源码,获取其中的信息(都有哪些in/out/uniform等),我决定做个GLSL编译器的前端(以后简称编译器或 ...
- 日期格式代码出现两次的错误 ORA-01810
错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...
- 可爱的豆子——使用Beans思想让Python代码更易维护
title: 可爱的豆子--使用Beans思想让Python代码更易维护 toc: false comments: true date: 2016-06-19 21:43:33 tags: [Pyth ...
- iOS代码规范(OC和Swift)
下面说下iOS的代码规范问题,如果大家觉得还不错,可以直接用到项目中,有不同意见 可以在下面讨论下. 相信很多人工作中最烦的就是代码不规范,命名不规范,曾经见过一个VC里有3个按钮被命名为button ...
- Jquery的点击事件,三句代码完成全选事件
先来看一下Js和Jquery的点击事件 举两个简单的例子 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&q ...
- redux-amrc:用更少的代码发起异步 action
很多人说 Redux 代码多,开发效率低.其实 Redux 是可以灵活使用以及拓展的,经过充分定制的 Redux 其实写不了几行代码.今天先介绍一个很好用的 Redux 拓展-- redux-amrc ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序
直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...
- jsp前端实现分页代码
前端需要订一page类包装,其参数为 private Integer pageSize=10; //每页记录条数=10 private Integer totalCount; //总记录条数 priv ...
随机推荐
- springboot 配置文件中属性变量引用方式@@解析
这种属性应用方式是field_name=@field_value@. 两个@符号是springboot为替代${}属性占位符产生,原因是${}会被maven处理,所以应该是起不到引用变量的作用. @@ ...
- P1023 活动安排
题目描述 某个人可以在n个活动中选择一些出来参加.每个活动都有起止时间.而且每个时间段只能参加一个活动.问,这个人最多能加参加几个活动. 可以在活动结束时,立即开始新的活动. 输入格式 第一行是一个整 ...
- 打地鼠游戏(2)之定义地鼠函数及函数原型 prototype
在JavaScript中,prototype对象是实现面向对象的一个重要机制. 每个函数就是一个对象(Function),函数对象都有一个子对象 prototype对象,类是以函数的形式来定义的.pr ...
- H3C STP可选配置
- ASP.NET MVC 实现页落网资源分享网站+充值管理+后台管理(10)之素材管理
源码下载地址:http://www.yealuo.com/Sccnn/Detail?KeyValue=c891ffae-7441-4afb-9a75-c5fe000e3d1c 素材管理模块也是我们这个 ...
- 2019-2-27-win10-uwp-去掉-Flyout-边框
title author date CreateTime categories win10 uwp 去掉 Flyout 边框 lindexi 2019-02-27 17:48:46 +0800 201 ...
- C++动态数组中的C6385, C6386警告
警告 C6385 从“m”中读取的数据无效: 可读大小为“col*sizeof(int)”个字节,但可能读取了“8”个字节. 警告 C6386 写入到“m”时缓冲区溢出: 可写大小为“col*size ...
- Checkpoint checkup中文报告模板使用
步骤: Step1:下载中文版语言包和字体 https://supportcenter.checkpoint.com/supportcenter/portal?action=portlets.DCFi ...
- js获取url参数值的方式
定义方法: function getParam(paramName) { paramValue = ""; isFound = false; paramName = paramNa ...
- IAP升级
一.IAP原理 1.在正常情况下,程序运行路流程: 和STM32类似,STM8内部闪存(FLASH)地址起始于 0x8000(STM32是0x08000000),一般情况下,程序文件就从此地 址开始写 ...