
IDEA 常用设置https://wangmaoxiong.blog.csdn.net/article/details/80090193.IDEA 操作数据库IDEA 连接 Mysql 数据库Project DataSources 面板Name连接名称自定义即可Comment连接的描述可以为空HostMysql 服务器 IP 或者域名PortMysql 服务器端口默认 3306Databasemysql 数据库名称User登陆账户Password登陆密码URLMysql 连接地址对于像 5.x 等低版本的 Mysql 驱动时jdbc:mysql://localhost:3306/wangmx对于像 8.x 等高版本的 Mysql 驱动时jdbc:mysql://localhost:3306/wangmx?characterEncodingUTF-8serverTimezoneUTCTest Connection测试连接是否成功按钮。必须在下载好驱动之后才能测试连接。Drivers 驱动面板其余选项都可以默认以下几项需要注意Drivers files驱动文件连接数据库之前必须先下载驱动文件。第一次连接时会有下载提示链接直接点击即可下载。也可以从右侧的 号进行添加。Custom JARs指定本地下载好的驱动文件Provided Driver在线下载最新版本的驱动程序Class驱动的 class 路径。对于像 5.x 等低版本的 Mysql 驱动时com.mysql.jdbc.Driver对于像 8.x 等高版本的 Mysql 驱动时com.mysql.cj.jdbc.DriverIDEA 连接 Oracle 数据库Project DataSources 面板Name连接名称自定义即可Comment连接的描述可以为空HostOracle 服务器 IP 或者域名PortOracle 服务器端口默认 1521SIDOracle 数据库实例对应 url 中结尾的实例名如 orclDriver驱动方式对应 url 中的驱动方式默认为 ThinUser登陆账户Password登陆密码URLoracle 连接地址如jdbc:oracle:thin:localhost:1521:orcl亲测有一次连接19c时结尾必须使用 / 才行比如jdbc:oracle:thin:172.16.21.171:1521/ORCLTest Connection测试连接是否成功按钮。必须在下载好驱动之后才能测试连接。Drivers 驱动面板其余选项都可以默认以下几项需要注意Drivers files驱动文件连接数据库之前必须先下载驱动文件。第一次连接时会有下载提示链接直接点击即可下载。也可以从右侧的 号进行添加。Custom JARs指定本地下载好的驱动文件Provided Driver在线下载最新版本的驱动程序Class驱动的 class 路径。有两个可选值亲测两个都可以。oracle.jdbc.OracleDriver 继承于oracle.jdbc.driver.OracleDriverIDEA 连接达梦(dameng)数据库1、连接方式与其它 Mysql、Oracle 数据基本类似区别在于新建时没有达梦(dameng)数据库的默认选项所以也无法默认下载驱动需要手动配置驱动。2、下载达梦(dameng)数据库驱动 .jar 包随便在哪个 maven 项目中加入以下依赖即可下载到本地 Maven 仓库。!--达梦JDBC驱动版本说明-- !--1. DmJdbcDriver16 对应 Jdk1.6 及以上环境-- !--2. DmJdbcDriver17 对应 Jdk1.7 及以上环境-- !--3. DmJdbcDriver18 对应 Jdk1.8 及以上环境-- !-- https://mvnrepository.com/artifact/com.dameng/Dm7JdbcDriver18 -- dependency groupIdcom.dameng/groupId artifactIdDm7JdbcDriver18/artifactId version7.6.0.142/version /dependency3、View - Tool Windows - Database 打开数据库面板点击[]号选择 Driver Sources and Drivers(驱动源和驱动程序) -然后添加账号、密码、url再设置驱动即可。url 如: jdbc:dm://192.168.1.26:5236/QH_ELEMENT_225QH_ELEMENT_225是实例名称相当于Oracle的 orcl但是达梦的实例名必须要大写驱动 Class: dm.jdbc.driver.DmDriverIDEA 连接 H2 数据库1、Project DataSources 面板配置说明Name连接名称自定义即可Comment连接的描述可以为空Driver驱动配置。Pahth2 数据库文件路径填写了 url 后这里会自动回写。User登陆账户Password登陆密码URLh2 数据库连接地址。内存数据库的特殊性数据库不存在时会自动创建。如 url: jdbc:h2:~/mp_test;AUTO_SERVERTRUE1~ 表示系统当前登录用户的根目录创建数据库 mp_test。2auto_servertrue表示使用混合模式默认情况下H2 只允许一个进程访问true 表示可以多个进程可以访问同一个数据库。3更多详细 h2 URL 配置。Test Connection测试连接是否成功按钮。必须在下载好驱动之后才能测试连接。2、Drivers 驱动面板配置说明!--H2内存数据库依赖可以在任意Maven项目中添加然后下载即可-- !-- https://mvnrepository.com/artifact/com.h2database/h2 -- dependency groupIdcom.h2database/groupId artifactIdh2/artifactId version2.1.214/version scopetest/scope /dependency其余选项都可以默认以下几项需要注意Drivers files驱动文件连接数据库之前必须先下载驱动文件。第一次连接时会有下载提示链接直接点击即可下载。也可以从右侧的 号进行添加。Custom JARs指定本地下载好的驱动文件可以使用上面的 maven 依赖下载。Provided Driver在线下载最新版本的驱动程序Class驱动的 class 路径org.h2.DriverIDEA 连接 Sqlite 数据库IDEA 连接 Sqlite 数据库解决 IDEA 无法自动编译源码1、有些时候 IDEA 从 git 或者 svn 上下载的项目或者本地从其他地方拷贝的项目无法自动编译target 目录下没有 .class 编译文件导致启动报错。2、此时需要设置一下 IDEA2.1、File - Power Save Model结能模式如果开启了则手动将其关掉。2.2、开启自动编译File - Settings - Build,Execution,Deploment - Compiler勾选上 Build project automatically自动构建项目。2.3、通常开启自动编译后就会马上自动编译了target 下就能看到文件了如果还不行则可以选择Build - Build Project(编译项目)或者 Rebuild Project(重新编译项目)。java: OutOfMemoryError: insufficient memory1、因为项目比较大加上IDEA内存设置不当导致编码时总感觉有些卡顿后续又恰巧数据库从Oracle换成了达梦然后直接服务启动不了了一度以为是因为达梦数据库的原因。java: OutOfMemoryError: insufficient memoryjava: java.lang.OutOfMemoryError: GC overhead limit exceeded2、后面发现一启动服务就自动编译一编译就将target目录下class的文件全部删除然后编译接着就报错。3、原因IDEA 的【Java 编译进程】内存耗尽 导致的编译崩溃也就是说还没有启动就扛不住了。4、解决办法内存设置相关调整必要的内存设置、编译器Compiler关闭 Clear output directory on rebuild。Annotate 查看代码提交者1、IDEA 可以查看版本控制系统中每一行代码的提交者信息比如作者以及日期这样出现问题时再也不怕互相扯皮了。2、方式很简单在类中敲击 右键 选择 Git 或者 Subversion 然后选择 Annotate 即可查看类中每一行的提交者信息。Java 文件快速跳转到 Class 文件推荐使用插件Java To Class1、项目上线之后发现了问题本地需要优化代码改完之后就行去 target/out 编译输出目录下找对应的 xx.class 文件然后替类上生产。2、项目比较大或者文件比较多时这样肉眼找编译文件很是麻烦。于是根据 .java 文件快速调整到对应的 .class 文件的需求刻不容缓。3、IDEA 实现此功能只需要简单的设置即可实现不用额外的安装插件。功能设置IDEA201803版本Settings - Tools External Tools(外部工具) - 点击号(Create Tool)-输入下面的内容。idea64 $FileNameWithoutExtension$.class $OutputPath$/$FileDirRelativeToSourcepath$文件跳转在 .java 文件上右键 - External Tools(外部工具) - 选择添加好的外部工具即可跳转。为了更加快速的进行跳转还可以为其设置快捷键。IDEA Debug 调试详解1、Debug 面板各个页签说明如下Console控制台输出日志Variables变量区查看当前断点之前的当前方法内的变量Frames方法调用栈显示该线程调试所经过的所有方法Threads线程区Overhead开销/耗时Watches查看变量值可以将Variables区中的变量拖到Watches中查看或者手动添加Memory内存2、Debug 面板各个按钮说明如下Show Execution Point(Alt F10)如果光标在其它行或其它页面 点击这个按钮可跳转到当前代码执行的行Step Over (F6)步过一行一行地往下走不会进入行上的方法内部Step Into (F5)步入一行一行地往下走会进入行上的的方法内部但是只会进入JDK官方类库以外的方法如不会进入 .toString() 方法内部Force Step Into强制步入能进入任何方法包括官方类库的方法Step Out (F7)步出从步入的方法内退出到方法调用处Run to Cursor ( CtrlR)运行到光标处可以将光标定位到需要查看的那一行然后使用这个功能代码会运行至光标行而不需要打断点Drop Frame回退断点无法一行一行地回退或回到上一个断点处只能回到前一个调用方法如方法 A-B-C可以从 c 退到 b从 b 退到 aEvaluate Expression (CtrlU)计算表达式可以查看任意变量、表达式、方法的值还能修改它们的值直接选中需要查看的长表达式或者方法点击按钮即可查看特别适合那种没有使用变量接收的参数值Resume Program(F8)恢复程序执行到下一个断点没有下一个时则直接走完View Breakpoints(Ctrl Shift F8)查看程序中的所有断点然后可以对他们进行取消或者设置Mute Breakpoints临时关闭断点断点会变为灰色不再生效Smart Step Into (Ctrl F5)智能步入当一行代码里有好几个方法时可以用它选择进入某一个方法Restore Layout恢复/还原debug 窗口布局。3、Evaluate Expression计算表达式演示IDEA Debug 设置断点条件1、通过设置断点条件在满足条件时才停在断点处否则直接运行。比如当遍历一个比较大的集合或数组时在循环内设置了一个断点一次次的去看变量的值显然是比较麻烦的。2、在断点上右键然后设置当前断点的条件(Condition)即可点击 ‘More’ 还能进行更详细的设置。Log message to console则会将当前断点行输出到控制台。Evaluate and log可以在执行这行代码时计算表达式的值并将结果输出到控制台。IDEA Debug 中断调试1、有时候程序跑到一半发现参数不对不想让它继续执行了因为后面可能有删数据等操作此时除了关闭服务还可以中断调试。2、切换到 Frames 方法调用栈在当前高亮的方法上右键选择 Force Return 强制返回即可。如果方法需要有返回值则可以自己定义。IDEA Debug 流跟踪(Stream Trace)1、Java 8 的 Stream API 使用起来非常方便但是却不好调试IDEA 自带流跟踪功能专门调试 Stream。2、首先在 Stream 左侧打上端点与普通代码不一样它可以进行选择打在具体的某个 Stream 操作上也可以选择 all。3、还可以打开跟踪图看到整个执行的过程以及执行结果。多线程/子线程/子任务调试1、后台开发时经常会使用到多线程编程用于提升执行速度比如主线程执行到某处时新开一个子线程去发送邮件、发送短信或者是发送其它消息再比如使用多线程来对表中上千万的数据进行处理。2、IDEA进行 Debug 时默认情况下无法掌握子线程的执行顺序无法准确定位执行位置。3、解决办法在断点上右键(或者在断点面包上选择断点)然后可以看到下面几个选项其中 Suspend(暂停)类型分为ALL有线程进入该断点时暂停所有线程Thread有线程进入该断点时只暂停该线程。多线程调试时断点选择Thread调试时可以在Frames里面自由切换线程进行执行并逐步调试。4、下面说一下 Suspend(暂停/挂起) 在不同情况的区别假如Thread1会先进入断点1Thread2后进入断点2断点类型执行效果断点1暂停类型为All断点2暂停类型为All1断点1先遇到Thread1执行被暂停。由于断点1暂停类型为ALL,所以Thread2的执行也同时被暂停且无法达到断点2。2按F8对Thread1进行逐步调试,在Thread1在恢复执行时其他线程也开始恢复执行。如果在此期间Thread2会走入到断点2此时断点2并不会生效会被忽略。3当Thread1的一行代码执行完再次暂停时thread2也同步被暂停执行断点1暂停类型为All断点2暂停类型为Thread效果同上面。断点1暂停类型为Thread断点2暂停类型为All1Thread1与Thread2都会进入断点俩个线程的逐步诊断互不影响。2断点2还是会暂停其他线程。断点1暂停类型为Thread断点2暂停类型为Thread1Thread1与Thread2都会进入断点俩个线程的逐步诊断互不影响。2只有这俩个线程会被暂停其他线程均保持执行。总结1、同时只会有一个All类型的断点生效且在这个断点结束前其它线程遇到的任何断点均不生效。2、All类型断点和Thread类型断点可同时生效只能在先遇到Thread类型断点再遇到All类型断点且各自保持独立诊断3、Thread类型断点可同时生效不论先后且相互独立。IDEA 开启 SSH 会话连接 Linux 服务器1、项目通常部署在 Linux 上而每次要切换到 Xshell、SecureCRT 等 ssh 终端工具进行操作也比较麻烦于是 IDEA 自动集成了 ssh可以直接连接。2、Tools - Start SSH session..然后填写用户名密码即可登录到远程 Linux 服务器然后可以任意执行 Linux 命令。菜单栏固定展示1、虽然点击 Main Menu 或者 Alt \ (快捷键) 也会出现菜单栏但是鼠标移到别处又会自动隐藏。可以如下设置让其一直固定。清除项目缓存1、在使用 IntelliJ IDEA 编程时缓存和索引的效率对于加快文件查询、提升代码提示等功能至关重要。然而当 IntelliJ IDEA 缓存和索引出现损坏例如由于断电、蓝屏等特殊情况导致的强制关机可能会引发项目无法打开、主题还原至默认状态等问题。此时通过清除缓存和索引可以有效解决这些问题。2、清除缓存和索引的操作通常推荐选择“Invalidage and Restart”选项该操作实质上是删除系统盘的“system”目录及其对应文件从而重新创建新的缓存和索引文件。当 IntelliJ IDEA 重新启动项目时会自动生成新的缓存和索引文件恢复项目正常运行。3、点击File - Invalidate caches 点击之后在弹出框中点击确认之后软件就自动重启了。类图、UML 类图、类实现关系查看1、光标在接口名上 → 右键 → Diagrams → Show Diagram基础类图仅显示接口本身对应快捷键 Ctrl Alt Shift U2、在类图窗口中右键点击接口节点 → 选择 Show Implementations显示实现然后选择子类即可。3、类图中会自动画出虚线三角箭头UML 标准的「实现关系」接口在顶层所有实现类在下层层级关系一目了然。4、在类图的空白处 右键不要点在类 / 接口节点上选择 Export Diagram → Export to Image 即可导出为图片。Copy Diagram to Clipboard - 将图表复制到剪贴板Copy Selection to Clipboard - 将所选内容复制到剪贴板。操作演示https://gitee.com/wangmx1993/material/blob/master/doc/csdn/images/260123172640-min.gif报错Error: Cannot determine path to tools.jar library for 17 (D:\software\java报错原因当前的 IDEA 版本无法解析此 JDK 版本。比如 IntelliJ IDEA 2020.1 (Ultimate Edition) 版本无法开发 Java JDK 17 的项目。否则运行时就会报这个错。解决办法1降低 Java JDK 版本2提高 IDEA 版本。Error running xxx. Command line is too long.Shorten the command line via JAR manifest or via a classpath file and rerun.1、运行服务时出错。命令行参数过长。请通过JAR清单文件或类路径文件缩短命令行参数后重新运行。选项类型底层原理适用场景优点缺点JAR manifest推荐IDEA 生成一个临时 JAR 文件将完整的 classpath 写入该 JAR 的MANIFEST.MF命令行仅传递这个临时 JAR 的路径替代直接拼接所有 classpath。所有 JDK 版本7/8/11、非模块化 Java 项目绝大多数常规项目尤其是依赖较多的 Spring Boot/SSM 项目。兼容性最好全 JDK 支持、无需改代码 / 配置、稳定。启动时生成临时 JAR 文件占用少量磁盘可自动清理极少数场景下临时文件权限不足会报错。Classpath file把完整的 classpath 列表写入一个临时文本文件.txt命令行通过classpath.txt引用该文件Java 原生支持文件路径加载 classpath。JDK 8 的项目、classpath 超长的场景比 JAR manifest 更轻量。临时文件是纯文本体积更小、启动略快仅处理 classpath逻辑简单。仅支持 JDK 8旧 JDK 不识别语法无法缩短 JVM 参数 / 程序参数仅解决 classpath 长。ArgFile新版整合把所有命令行参数classpath JVM 参数 程序参数写入一个临时参数文件命令行仅传argfile.txt。JDK 8、不仅 classpath 长还包含大量 JVM 参数 / 程序参数的场景如微服务。彻底解决所有参数过长问题覆盖范围最广。参数不在命令行直观显示调试时需查看临时文件仅支持 JDK 8。Java 9 options利用 Java 9 的模块化系统JPMS用--module-path/--module替代传统classpath模块化参数解析方式无字符长度限制。Java 9 的模块化项目包含module-info.java。原生模块化支持、无参数长度限制、无需临时文件。仅适用于模块化项目非模块化项目无法使用会报错JDK 版本要求高。None不缩短直接将所有 classpath、JVM 参数、程序参数拼接在命令行中不做任何处理。依赖极少、路径极短的极简项目如单个 Main 类无外部依赖。命令行参数直观调试时能直接看到所有 classpath / 参数无额外处理。极易触发 Windows 8191 字符限制出现error206仅适用于极小项目。