快捷键
作用 | 快捷键 |
---|---|
单行注释 | Ctrl+/ |
多行注释 | Ctrl+Shift+/ |
封装-设置get和set方法 | Fn+Alt+Insert |
构造方法快捷键 | Fn+Alt+Insert选择:constructor |
重写toString()/equals()/hashCode()方法 | Fn+Alt+Insert |
折叠注释 | 定位到注释区内按住Ctrl+Alt+T,选择第二个选项 |
try catch final块等的生成 | 用鼠标框选代码后按住Ctrl+Alt+T进行选择 |
查看源代码 | Ctrl+鼠标左键 |
提取方法 | 使用鼠标圈上要独立成方法的代码,按Ctrl+Alt+M |
重写方法 | Ctrl+O |
批量修改变量名 | 鼠标左键双击,选中要修改的变量,按Shift+F6重命名后按Enter键即可 |
向下移动当前行内容 | Ctrl+Shift+↓ |
向上移动当前行内容 | Ctrl+Shift+↑ |
向右移动代码 | Tab |
向左移动代码 | Shift+Tab |
代码格式美化 | Ctrl+Alt+L |
向下复制当前行(或当前选中)代码 | Ctrl+D |
删除代码 | Ctrl+Y |
撤销 | Ctrl+Z |
反撤销(恢复) | Ctrl+Shift+Z |
查看源码 | F4 |
代码大小写转换 | Ctrl+Shift+U |
断点调试 | 打断点Ctrl+F8 |
结束程序 | Ctrl+F2 |
换行 | Shift+Enter |
查看一个类的继承体系 | Ctrl+H |
查看继承接口关系图 | Ctrl+Alt+U |
函数参数提示 | 把光标放到方法的小括号内按Ctrl+P |
查看源码(进入方法) | Ctrl+鼠标左键 |
跳转到方法实现处 | Ctrl+Alt+鼠标左键 |
搜索 | 双击Shift两次 |
在源码中查看某类所有的方法 | Ctrl+F12 |
从源码中返回上一级 | Ctrl+alt+ ← |
从源码中返回下一级 | Ctrl+alt+ → |
生成返回值变量 | Alt+Enter |
将局部变量提取为成员变量 | Ctrl+Alt+F |
在打开的多个Class类之间快速切换 | Alt+左右箭头 |
查看最近打开或修改过哪些文件 | Ctrl+E |
关闭当前窗口 | Ctrl+F4 |
关闭所有窗口 | Ctrl+Alt+Shift+F4 |
快速定位错误或警告 | F2 |
查看方法在哪里被调用过 | Alt+F7 |
打开设置面板 | Ctrl+Alt+S |
添加至Favorites | Alt+Shift+F |
开启服务器 | Shift+F10 |
断开服务器 | Ctrl+F2 |
查找 | Ctrl+F |
查找替换 | Ctrl+R |
全局查找 | Ctrl+Shift+F |
快速定位到哪行 | Ctrl+G |
正常运行程序 | Shift+F10 |
debug运行程序 | Shift+F9 |
在HTML页面打开浏览器 | Alt+R |
清除未导入的包 | Ctrl+Alt+O |
打开依赖树 | Ctrl+Alt+Shift+U |
重新编译刷新当前项目的所有代码 | Ctrl+F9 |
重新编译刷新当前文档的代码 | Ctrl+Shift+F9 |
折叠所有的方法体 | Ctrl+Shift+数字键-号 |
展开所有的方法体 | Ctrl+Shift+数字键+号 |
打开控制台 | F12 |
打开文件所在磁盘路径 | Ctrl+Alt+F12 然后按Enter |
查看某个方法在那些地方使用到了 | Ctrl+Alt+h |
鼠标点击接口方法进入接口实现类对应方法 | Ctrl+Alt |
commit代码 | Ctrl+K |
push代码 | Ctrl+Shift+K |
同时编辑多处 | 按住Alt+Shift,然后鼠标左键移动光标 |
IDEA全局配置(对所有项目都有效)
以后对IDEA进行的配置, 都弄成全局配置, 这样所有项目都有效. 不然有些配置可能只在当前项目中有效, 重新打开另一个项目就没有效果了.
IDEA全局配置, 需要在打开IDEA并还未进行到某个项目的时候进行设置,
如下图所示, 配置maven的全局配置(以后新建或打开的所有maven项目都会默认采用这个配置)
IDEA中Debug
debug模式下的图标和对应的意思
- show execution point(Alt+F10) 如果你的光标在其它行或其它页面,点击这个按钮可跳转到当前代码执行的行。
- step over(F8) 步过,一行一行地往下走,如果这一行上有方法不会进入方法。
- step into(F7) 步入,如果当前行有方法,可以进入方法内部,一般用于进入自定义方法内,不会进入官方类库的方法,如第25行的put方法。
- force step into(Alt+Shift+F7) 强制步入,能进入任何方法,查看底层源码的时候可以用这个进入官方类库的方法。
- step out(Shift+F8) 步出,从步入的方法内退出到方法调用处,此时方法已执行完毕,只是还没有完成赋值。
- drop frame回退断点
- run to cursor(Alt+F9) 运行到光标处,你可以将光标定位到你需要查看的那一行,然后使用这个功能,代码会运行至光标行,而不需要打断点。
- evaluate expression(Alt+F8) 计算表达式
- 不知道
- 重新运行Rerun ‘xxxx’(Ctrl+F5):重新运行程序,会关闭服务后重新启动程序。
- rerun failed tests重新运行失败了的测试
- toggle auto test切换自动测试
- resume program(F9) 恢复程序,比如,你在第20行和25行有两个断点,当前运行至第20行,按F9,则运行到下一个断点(即第25行),再按F9,则运行完整个流程,因为后面已经没有断点了
- Pause Program:暂停程序
- Stop ‘xxx’ (Ctrl + F2):连续按两下,关闭程序。有时候你会发现关闭服务再启动时,报端口被占用,这是因为没完全关闭服务的原因,你就需要查杀所有JVM进程了。
- View Breakpoints (Ctrl + Shift + F8):查看所有断点
- Mute Breakpoints:哑的断点,选择这个后,所有断点变为灰色,断点失效,按F9则可以直接运行完程序。再次点击,断点变为红色,有效。如果只想使某一个断点失效,可以在断点上右键取消Enabled
IDEA 远程调试linux服务器上的代码
准备工作
- 明确远程服务器的 IP 地址,比如我是:192.168.92.128
- 关掉服务器防火墙:service iptables stop
本地 Remote Server 配置
添加 Remote Server,如下图
复制 Remote Server 自动生成的 JVM 参数,等下有用,如下图,
比如我的是:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
如下图,在 Host 添加服务器的 IP 地址:192.168.92.128。
把刚刚复制参数加个前缀,变成:
Linux(有单引号):export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
Windows(没有单引号):set JAVA_OPTS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
服务器 Tomcat 配置
- 以 Linux 环境为例
- Tomcat 安装在 /usr/program/tomcat7
- Tomcat 的执行程序:/usr/program/tomcat7/bin/catalina.sh
- 编辑 Tomcat 执行程序:vim /usr/program/tomcat7/bin/catalina.sh(Windows 是编辑:catalina.bat)
- 在该文件的最上面,添加我们刚刚复制的那句话:
export JAVA_OPTS='-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005'
- 如果你的项目有特殊 JVM 参数,那你就把你的那部分参数和这部分参数合并在一起
- 如下图所示:
开始调试
- 启动服务器 Tomcat
- 启动本地 Remote Server
- 如果可以看到如下图效果,表示已经连接成功了,接下里就是跟往常一样,
在本地代码上设置断点,然后你访问远程的地址,触发到该代码自动就会在本地停住。
- 如下图,可以看到调试效果
IDEA中Git&GitHub
idea中修改commit提交的信息
折叠所有代码,展开所有代码
在代码内任意位置鼠标右键选择expand all展开所有代码, collapse all折叠所有代码
模板
模板位置
快速补全模板位置:Settings———Editor————General————Postfix Completion
文件模板位置:Settings———Editor————Live Templates(可修改模板)
常用的模板:
模板1:main方法 psvm
public static void main(String[] args) {
}
模板2:输出语句 sout
System.out.println();
// 控制台打印语句快捷键的另外一种用法
//"a".sout
System.out.println("a");
// 输出语句的变形1:soutv——打印变量的值
int num =10;
System.out.println("num = " + num);
// 输出语句的变形2:XXXsout——打印XXX变量的值
int num1 =10;
int num2 =12;
//下面语句由num1.sout打印出
System.out.println(num1);
模板3:for循环语句 fori
for (int i = 0; i < ; i++) {
}
模板4:增强for循环 iter
for (String arg : args) {
}
模板5:实现List接口的集合类的遍历 集合名.for
ArrayList<String> arraylist = new ArrayList<>();
for (String s : arraylist) {//这个增强for循环是使用:arraylist.for生成
}
```
**模板6:if条件判断语句**
```java
// 如果条件为空:条件.null
String str = "hello";
//str.null
if (str == null) {
}
// 如果条件不为空:条件.nn
String str = "hello";
//str.nn
if (str != null) {
}
模板7:生成private static final
- 生成private static final:prsf
- 生成public static final:psf
- 生成public static final int:psfi
- 生成public static final String:psfs
private static final
模板8:自定义的模板生成方法
// 生成public static void method(){}:psvo
public static void method(){
}
模板9: 生成lock代码块 输入trylock
lock.lock();
try {
} catch (Exception e) {
e.printStackTrace();
} finally {
lock.unlock();
}
模板10: 获取当前线程的线程名 输入mycurr
Thread.currentThread().getName()
模板11: 使用lambda表达式创建一个线程 输入newthread02
new Thread(() -> {
},"threadName").start();
模板12: 使用匿名内部类创建一个线程 输入newthread01
new Thread(new Runnable() {
@Override
public void run() {
}
}, "threadName").start();
模板13: 使用for循环快速创建10个线程 forthread10
for (int i = 1; i <= 10; i++) {
new Thread(() -> {
}, "thread" + i).start();
}
模板14: try-catch-finally代码块 trycf
try {
}catch (Exception e){
e.printStackTrace();
}finally {
}
模板15: 生成thread sleep代码块 threadsleep
try { Thread.sleep(); } catch (InterruptedException e) { e.printStackTrace(); }
模板16: 生成带@Test注解的test方法 输入test回车即可
模板17: threadsleep
try { Thread.sleep(); } catch (InterruptedException e) { e.printStackTrace(); }
模板18: 生成springboot主启动类模板
创建模板
使用模板
输入主启动类的类名即可
package com.atguigu.springcloud;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class OrderMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderMain80.class,args);
}
}
使得创建的class文件自带作者信息(alibaba代码检查要求类需要有作者信息)
mybatis-config.xml文件模板
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties"/>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<typeAliases>
<package name="xx.xx.domain"/>
</typeAliases>
<environments default="dev">
<environment id="dev">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/xx/xxMapper.xml"/>
</mappers>
</configuration>
mybatis-mapper.xml文件模板
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="">
</mapper>
db.properties数据源文件模板
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatisdemo
jdbc.username=root
jdbc.password=root
log4j.properties日志配置文件模板
log4j.rootLogger=ERROR,stdout
log4j.logger.whichPackage=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
logback.xml配置文件模板
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 定义日志的根目录(根据实际情况修改,此处./log会生成在当前项目根目录下) -->
<property name="LOG_HOME" value="./log"/>
<!-- 定义日志文件名称(根据实际情况修改) -->
<property name="appName" value="parkour-mybatis"></property>
<!-- 设置控制台输出的日志格式 -->
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<!--
日志输出格式说明:
%d 输出日期时间
%thread 输出当前线程名
%-5level 输出日志级别,左对齐5个字符宽度
%logger{50} 输出全类名最长50个字符,超过按照句点分割
%msg 日志信息
%n 换行符
-->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ==== [%thread] ==== %-5level ==== %logger{50} - %msg%n</pattern>
</layout>
</appender>
<!-- 设置应用日志文件输出的格式 配置成每天生成一个日志文件,滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件 -->
<appender name="appLogAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
<!-- 指定日志文件的名称 -->
<file>${LOG_HOME}/${appName}.log</file>
<!--
当发生滚动时,决定 RollingFileAppender 的行为,涉及文件移动和重命名
TimeBasedRollingPolicy: 最常用的滚动策略,它根据时间来制定滚动策略,既负责滚动也负责触发滚动。
-->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!--
滚动时产生的文件的存放位置及文件名称 %d{yyyy-MM-dd}:按天进行日志滚动
%i:当文件大小超过maxFileSize时,按照i进行文件滚动
-->
<fileNamePattern>${LOG_HOME}/${appName}-%d{yyyy-MM-dd}-%i.log</fileNamePattern>
<!--
可选节点,控制保留的归档文件的最大数量,超出数量就删除旧文件。
假设设置每天滚动,且maxHistory是365,则只保存最近365天的文件,删除之前的旧文件。
注意,删除旧文件是,那些为了归档而创建的目录也会被删除。
-->
<MaxHistory>365</MaxHistory>
<!-- 当日志文件超过maxFileSize指定的大小是,根据上面提到的%i进行日志文件滚动(即按照i递增新创建一个文件记录日志) -->
<timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
<maxFileSize>100MB</maxFileSize>
</timeBasedFileNamingAndTriggeringPolicy>
</rollingPolicy>
<!-- 日志输出格式: -->
<layout class="ch.qos.logback.classic.PatternLayout">
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} ------ [ %thread ] ------ [ %-5level ] [ %logger{50} : %line ] -
%msg%n
</pattern>
</layout>
</appender>
<!-- root代表默认的日志级别, 设置默认的日志级别为info 既要在控制台输出,也要记录日志文件 -->
<root level="info">
<appender-ref ref="stdout"/>
<appender-ref ref="appLogAppender"/>
</root>
<!-- 将日志保存到数据库的配置(使用c3p0连接池) -->
<!-- <appendername="DB"class="ch.qos.logback.classic.db.DBAppender">
<connectionSourceclass="ch.qos.logback.core.db.DriverManagerConnectionSource">
<dataSourceclass="com.mchange.v2.c3p0.ComboPooledDataSource">
<driverClass>com.mysql.jdbc.Driver</driverClass>
<url>jdbc:mysql://127.0.0.1:3306/databaseName</url>
<user>root</user>
<password>root</password>
</dataSource>
</connectionSource>
</appender> -->
</configuration>
pom.xml文件模板
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xxx</groupId>
<artifactId>xxx</artifactId>
<version>1.0-SNAPSHOT</version>
</project>
SpringBootMain主启动类模板
#if (${PACKAGE_NAME} && ${PACKAGE_NAME} != "")package ${PACKAGE_NAME};#end
#parse("File Header.java")
@SpringBootApplication
public class ${NAME} {
public static void main(String[] args){
SpringApplication.run(${NAME}.class,args);
}
}
web.xml模板
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
</web-app>
xml文件模板
<?xml version="1.0" encoding="UTF-8"?>
问题处理
1.Class文件图标上出现红色的J
按两下Shift键(或者按Ctrl+Alt+Shift+S)
输入project structure找到Modules点击以下Sources即可
2.IDEA中添加本地约束文件schema或dtd(可以解决XML文件写标签没有提示的问题)
File–>Settings–>Languages & Frameworks–>Schemas and DTDs,点击右上角的绿色加号
出现添加本地xsd文件弹窗,URI是你xml文件里引用该xsd文件的地址,File是你本地的xsd文件的所在目录
配置好之后,重启IDEA
3.IDEA中添加类注释和方法注释
类头注释:打开file->setting->Editor->Filr and Code Templates->Includes->File Header
直接在右边的文件框里编辑你说需要注释的东西,然后应用保存之后,当你创建类的时候就会自动生成注释。
方法注释:打开file->setting->Editor->LiveTemplates点击右边上面那个绿色的+号,选择Template Group双击,
然后弹出一个窗口,随便添加一个名字,我这里添加的是MyGroup然后点击OK
还是在file->setting->Editor->LiveTemplates这个路径下点击一下刚刚你添加的那个名字(我这是MyGroup),
然后点击右边上面那个绿色的+号,选择LiveTemplate双击,填写下面的图上的框
最后点击右下角的Edit variables 按钮,然后弹出一个窗口,如下:
设置完参数保存退出设置即可
4.IDEA中将单行注释与代码对齐
修改步骤:Settings–>Editor–>Code Style–>Java,然后按下图勾选。
IDEA中Maven的操作
1.IDEA中右边的maven projects窗口找不到了如何调出来
点击菜单栏View->Tool Windows->Maven projects
2.IDEA中进行maven清理clean打包package部署install时跳过测试test
3.Maven中的profile
- Maven 中有一个概念叫做:profile,它的诞生主要是为了解决不同环境所需的不同变量、配置等问题。
- 有了 profile,可以根据激活的条件,启动不同条件下的配置信息。
- profile 是可以有多个的,也可以同时激活多个 profile,方便自由组合。
- profile 一般可以在三个地方:settings.xml,pom.xml,profiles.xml(这个不常用)
- 在 settings.xml 上,一般大家用来做仓库的选择,比如以下 settings.xml 代码:
<?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>D:\maven\my_local_repository</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <url>http://192.168.1.73:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <url>http://192.168.1.73:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> <profile> <id>aliyun</id> <repositories> <repository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> </settings>
- 以上代码中 profile 就做一件事:设置全局的 profile,一个是 nexus 仓库,一个是 aliyun 仓库,默认激活的是 nexus 仓库。(activeProfiles)
- 在 pom.xml 中,一般用来激活环境配置,比如以下代码:
4.创建pom文件中tomcat插件坐标,和jdk1.8坐标模板<profiles> <profile> <id>dev</id> <properties> <package.environment>dev</package.environment> </properties> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/env/${package.environment}</directory> <includes> <include>**/*</include> </includes> <filtering>true</filtering> </resource> </resources> <finalName>${project.artifactId}</finalName> </build> </profile> <profile> <id>product</id> <properties> <package.environment>product</package.environment> </properties> <activation> <activeByDefault>false</activeByDefault> </activation> <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/env/${package.environment}</directory> <includes> <include>**/*</include> </includes> <filtering>true</filtering> </resource> </resources> <finalName>${project.artifactId}</finalName> </build> </profile> </profiles> ``` 以上代码中 profile 就做一件事:打包的时候,默认是 dev 模式,打包 src/main/env/dev 下的配置文件, 如果选择 product 则打包 src/main/env/product 下的配置文件 **IntelliJ IDEA 使用 Maven Profile 的案例** 在 IntelliJ IDEA 上调用 profile 简单,如下图勾选对应的复选框即可,可以多选。  只使用 aliyun 仓库可以这样配置 settings.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>D:\maven\my_local_repository</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <profiles> <profile> <id>aliyun</id> <repositories> <repository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>aliyun</activeProfile> </activeProfiles> </settings> ``` 使用 nexus + aliyun 仓库可以这样配置 settings.xml: ```xml <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository>D:\maven\my_local_repository</localRepository> <pluginGroups> </pluginGroups> <proxies> </proxies> <profiles> <profile> <id>nexus</id> <repositories> <repository> <id>nexus</id> <url>http://192.168.1.73:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>nexus</id> <url>http://192.168.1.73:8081/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> <profile> <id>aliyun</id> <repositories> <repository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>aliyun</id> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles> </settings>
在pom文件中
<!--插件配置-->
<build>
<plugins>
<!-- 输入tomcat7后按回车键即可补全 -->
<!-- 输入jdk1.8后按回车键即可补全 -->
</plugins>
</build>
idea启动tomcat报端口冲突,比如JMX port的1099端口被占用,解决办法
cmd命令查看端口被哪个程序占用了 netstat -aon|findstr 1099
根据进程id杀死该进程 taskkill -f -pid 16648
idea控制台中文乱码解决办法
- 打开idea安装目录,选择
打开文件,末尾添加-Dfile.encoding=UTF-8
- 打开IntelliJ IDEA>File>Setting>Editor>File Encodings,
将Global Encoding、Project Encoding、Default encodeing for properties files这三项都设置成UTF-8
- 设置vm option参数为: -Dfile.encoding=utf-8
如果是web项目,在菜单栏找到run->Edit Configrations,设置 vm option为 -Dfile.encoding=utf-8
如果是普通java项目,在菜单栏找到run->Edit Configrations,设置 vm option为 -Dfile.encoding=utf-8
- 重启IDEA
到这里,如果还是不行,可能是你无意中点了右下角或者那里的编码,改了一下,或者就被idea记录到 encodings.xml 中。
当你再次访问的时候,它就会用那种编码打开项目目录下的.idea的文件夹。解决办法是里面有个encodings.xml 的文件,然后除了UTF-8 的都删了。
通过mybatis-generator生成mapper.xml,但是主键id提示error
如下图, 运行起来没问题, 这是idea的一个小bug不用管
idea中删除项目
- 首先选中项目右键remove module
- 然后选中项目右键show in explorer打开项目所在文件夹,将其整个删除
- 最后点击菜单栏上的Fileclose project在idea开始界面将左边该项目的名称删除即可
插件
JRebel热部署插件
setting中找到插件市场下载,下载后需要激活,激活方法如下
在线生成GUID地址 https://www.guidgen.com/
使用方法: 需要勾选enable启用,并生成一个rebel.xml文件
Springboot环境下如何使用JRebel实现热部署
实际上Springboot已经提供了实现热部署的方法了。那就是你只需要引入依赖【springboot-devtools】就可以了。
那为什么我们还需要JRebel呢?
额外引入的依赖实际上生产环境并不需要,开发者引入后容易误提交到线上。
springboot-devtools方式的热部署在功能上有限制。如在方法内的修改可以实现热部署,但是新增的方法或者修改方法参数之后热部署是不生效的。
相对于JRebel,springboot-devtools方式热部署的速度可能有点慢
安装好JRebel之后工具栏会多两个图标。
安装完之后就可以使用下面两种方式来run了。之后的所有修改就都可以实现热部署啦。
使用JRebel插件注意点
由于JRebel是实时监控class文件的变化来实现热部署的,所以在idea环境下需要打开自动变异功能才能实现随时修改,随时生效。
在设置中打开自动编译. 如图,在设置中打开即可
2.打开运行时编译
按快捷键 Shift+Ctrl+Alt+/ ,选择 Registry
勾选如图所示
IDEA中使用external tools 中的javap -c查看类的字节码文件的时候 报错”class not found”异常 解决办法
先用javac 将class文件编译之后, 在使用javap -c class文件即可解决
IDEA中添加Java虚拟机运行参数
EasyCode插件
自动生成代码
lombok插件
IDEA中lombok不生效记得开启注解处理器
在IDEA中如何查看一个类的class文件反编译后的结果
方式1: 将一个XXX.class文件直接拉入idea工程中就能看见class文件反编译的结果
方式2: 在IDEA中将一个类(java文件)编译成class文件之后,直接点击这个class文件就能查看这个class文件反编译后的结果
第一步, 选中要编译的java类文件, 右键选择recompile命令, 编译该java文件, 底层调用的是javac命令
比如上面会将Student.java编译成Student.class
直接双击打开Student.class就能看到Student.class反编译的结果
Student.java文件的内容如下
public class Student
{
private String name;
private int age;
}
```
使用IDEA打开Student.class文件显示的内容如下
```java
public class Student {
private java.lang.String name;
private int age;
public Student() { /* compiled code */ }
}
可以看到, 如果我们不显示的写无参的构造方法, 编译器(javac)底层会默认为我们加上一个无参的构造方法
IDEA导入导出设置
stash和unstash
待补充, 出现stash之后项目结构出现问题的解决办法
IDEA Maven无法引入spring-boot-start-web => hibernate-validator =>org.openjfx:javafx.base:11.0.0-SNAPSHOP
今天手欠更新了下IDEA最新版,结果导致引入spring-boot-starter-web包爆红,org.openjfx:javafx.base jar下载失败
打开发现是这个org.openjfx:javafx.base子包没有引入,找到maven仓库删除该包,重下还是失败,网上页没找到解决方案,
最后对比了下发现以前的项目同版本spring-boot-starter-web下没有这个jfx依赖,于是怀疑是设置问题,打开设置,如图找到maven设置
注意到JRE被改成了11,现在用的是1.8,于是改回1.8,重新刷新导入
没有了org.openjfx:javafx.base:11.0.0-SNAPSHOP这个依赖,恢复正常!
IDEA自动生成序列化ID
默认情况下Intellij IDEA是关闭了继承了Serializable接口的类生成serialVersionUID的警告。
如果需要IDE提示生成serialVersionUID,那么需要做以下设置:
- setting->Inspections->Serialization issues,将serialzable class without “serialVersionUID”打上勾;
- 将光标放到类名上,按atl+enter键,就会提示生成serialVersionUID了
点击类名,alt+enter
IDEA编译工程时出现Error:java: 无效的目标发行版: 1.8
见图,从上述可以看出工程用的jdk1.7,而idea编译时采用的是1.8版本(应该idea新版本内置的jre是1.8吧,默认编译采用1.8)
修改:如下图
IDEA中的HTTP Clinet工具的使用
点击test restful web service会在项目的Scratches目录下新创建一个rest-api.http的文件并打开,
里面有一个restful风格的GET请求示例, 我们可以在该文件中写自己的请求
点击open http requests collection会打开一个各种请求的示例汇总
点击上面的get requests会打开所有restful风格的各种get请求示例
点击上面的post requests会打开所有restful风格的各种post请求示例
点击上面的request with authorization会打开所有restful风格的各种带授权的请求示例
点击上面的get requests会打开所有restful风格的各种get请求示例
点击show http requests history 可以查看所有的请求历史记录
点击convert cURL to http request 可以将linux上curl方式的请求转换为http请求
注意: 旧版的IDEA打开restful clinet是在IDEA的左下发,新版IDEA废除了这种方式, 改为了像上面所述的那种在文件中添加请求的方式
IDEA中连接Linux的远程管理工具
连接成功,但发现乱码了, 点击设置SHH terminal 修改默认编码为UTF-8保存后重新打开一个terminal发现就没有乱码了
向linux服务器上传或下载文件, 首先需要配置一下上传的路径
按照下面步骤打开右侧的remote host菜单
点击打开, 直接在IDEA中左右拖拽即可实现文件的上传与下载
也可以直接在idea中copy然后粘贴到对应的linux目录下也行
同理: 可以copy服务器linux上的文件,粘贴到idea项目中
在IDEA中打开linux上的某个文件修改后保存(直接双击打开文件修改后点击上传即可)
IDEA Project Structure讲解
项目的左侧面板
项目设置->Project
Project Settings -> Modules
Sources面板
Paths面板
dependencies面板
Project Settings - > Libraries
Project Settings - > Facets
Project Settings -> artifacts
关于添加依赖包
可以在Libraries标签页中增加架包,也可以在对应的module里添加架包。前者可以将架包集中在一起并起个别名,便于自己对架包的管理。
IDEA中的Scratches and Consoles
Intellij IDEA 提供了两种临时的文件编辑环境,通过这两种临时的编辑环境,你可以写一些文本内容或者一些代码片段。
两种 Scratches 分别是:Scratch files 和 Scratch buffers。
这个功能是idea用来测试一小段代码的或者是某个语句某个api等,非常的方便;
Scratch files:Scratch files 有着完整的运行和 debug 功能等等,这些文件需要指定编程语言类型并且指定后缀。
Scratch buffers: Scratch buffers 仅仅是为了简单的编辑记录,所以不需要指定编程语言并且指定后缀,
默认文件类型是 .txt。需要注意的是,Scratch buffers 最多只能创建 5 个,超过 5 个将开始重用以前的,并且以前文件的内容会被重置。
创建 Scratches:
菜单(Main Menu)上选择 File | New | Scratch File
Ctrl + Shift + Alt + Insert 快捷键
在 Project 视窗中右键任何地方,然后选择 New | Scratch File/buffer
按下 Ctrl + Shift + A 快捷键,然后输入scratch file/buffer ,选择搜索到的新建选项,创建 Scratch File。
IDEA部署tomcat时Edit Configuration无artifact选项
解决办法:
- 打开Project Structure;
- 选择Aritfacts选项:点击+号,选择Web Application:Exploded->From Modules:选择你的项目即可:
再次进入Edit Configration->Deployment,点击+号,即可看到Artifact选项了
如何让idea的项目显示或不显示iml文件(显示或不显示其他文件的原理类似)
IDEA连接MySQL/Oracle/MongoDB操作数据库
注意:
- 密码选择永远记住(免得自己本地用的使用每次输入)
- 如果没有驱动, 联网直接点击下载即可, 下载完毕点击test connection
- 新创建的数据库连接默认是项目数据源, 点击左上角的按钮将其转成全局数据源
连接MySQL
IDEA连接mysql数据库报时区错误的解决办法
更改mysql的时区:
1.查询当前时区:
win+r 输入下面内容
mysql -uroot -proot123 //登录mysql
show variables like’%time_zone’; //查看mysql中设置的时区值
备注:配置环境变量:
在path中添加安装目录,到/bin
C:\Program Files\MySQL\MySQL Server 5.7\bin
打开my.ini,搜索[mysqld]
,在[mysql]
节点下加上这一行
重启mysql服务 ,重新查询时区
修改成功,重新再idea中测试连接,成功!
连接Oracle
连接MongoDB
IDEA中mapper.xml文件去掉屎黄色背景
打开Settings。找到Editor -> Inspections的配置页面,
去掉SQL中No data sources configured(没有配置数据源) 选项 和 SQL dialect detection(SQL方言检测) 选项,点击 OK
继续打开Settings。找到Editor -> General的配置页面,选择Injected language fragment,去掉Background选项,点击OK
设置IDEA自动将mapper中写的SQL语句中的小写关键字转换成大写
IDEA连接Mysql数据库之后,编写Mapper.xml时不会自动提示表信息问题
IDEA中设置不区分大小写也能智能提示
去掉下图的勾选即可
IDEA设置启动后不直接进入项目而是打开最近打开的项目列表供选择
项目很多,想着切换不方便,希望IDE启动后,不进入上次使用的项目,而进入如图
Settings -> SystemSettings 去掉 Reopen last project on startup 的勾即可
IDEA使用springboot项目时调出run dashboard
1、springboot多个项目的时候会run dashboard的弹框,你点击同意展示就会出现
但是假如你关闭了还想要调出来怎么办呢?或者单个springboot项目根本就没有弹框提醒,
那么你可以这样做:来到项目.idea文件夹里面, 打开workspace.xml文件
然后找到<component name="RunDashboard">
标签
然后增加
<option name="configurationTypes">
<set>
<option value="SpringBootApplicationConfigurationType" />
</set>
</option>
```
这样就能弹出run dashboard的框了,如果不能即时弹出,那么closed project后再重新打开即可
**IDEA运行项目报错:Command line is too long. Shorten command line for className or also for JUnit defaultconfiguration**
解决方法:
在该项目文件夹.idea/workspace.xml中找到
```xml
<component name="PropertiesComponent">
...
</component>
然后在其中添加:
<property name="dynamic.classpath" value="true" />
IDEA创建项目
创建一个基于severlet的web项目
点击ok后即生成了一个基于serverlet的web项目(点击Tomcat启动即可)
创建一个maven项目
上面创建完后还需要做一些修改
增加存放java源码目录
main目录下再创建一个 resources 目录,并标识为 Resources Root , 用于存放资源文件
部署运行
查看tomcat启动后,控制台打印信息,CATALINA_BASE与CATALINA_HOME
这里,主要关注CATALINA_BASE和CATALINA_HOME两个目录,这两目录有什么区别?
简单来说,
CATALINA_BASE是idea为当前项目建立的工作目录,我们部署的项目就放在这里(上面的设置介绍中,我有提到),
使用war exploded部署项目时,并没有把项目打包到tomcat的webapps目录下,我们的项目部署的位置就在这儿!!! 查看这个目录有什么?
看看conf目录里面有什么?竟然还有tomcat的配置文件server.xml
对比一下tomcat的安装目录:
看到这里就明白了一件事,idea为每个部署的项目新创建了一个tomcat实例,这就是一个工作目录,
这个实例与我们的tomcat相比,没有bin和lib库等信息,只有一些配置信息,仍然与原来tomcat共用bin和lib目录。
CATALINA_HOME则是tomcat的安装目录。
创建一个父子工程的maven项目
参见: maven.docx文档中的 创建Maven父子工程
IDEA对项目进行打包
对maven项目进行打包
对非maven项目进行打包
选中非maven的项目,打开项目结构视图
选择artifacts后点击+号,选择JAR–>empty
修改jar包的名字,和项目打成jar包后保存的路径
点击+号选择module output
选择要对那些module进行打包,可以多选
选择后点击ok,关闭choose module模态框后
再点击apply–>ok关闭project structure模态框
然后点击build—>build artifacts
最后选择要打包的项目后点击build即可
调整分配给IDEA更多的运行内存
如果电脑运行IDEA卡或经常闪退,则需要调整多分配给IDEA一些内存
IDEA安装与激活(针对ideaIU-2018.2.1版本)
相关资源可以到百度云下载: 我保存到百度云了
要习惯经常使用TODO清单
可以在项目中写TODO和内容,然后点击下方的这个TODO即可看到还未做完的待做事项
IDEA中删除module
第一步: 从项目中移除该module
第二步: 选中文件夹再按一次delete(这一步才真正将该module从硬盘中删除)
综上所述: 要删除一个module直接选中该module按两次delete即可
自动清除未导入的包
设置IDEA自动编译java文件, 不用每次ctrl+shift+9去手动编译
IDEA缓存和索引的清理
IntelliJ IDEA 首次加载项目的时候,都会创建索引,而创建索引的时间跟项目的 文件多少成正比。在 IntelliJ
IDEA 创建索引过程中即使你编辑了代码也是编译 不了、运行不起来的,所以还是安安静静等 IntelliJ IDEA 创
建索引完成。
IntelliJ IDEA 的缓存和索引主要是用来加快文件查询,从而加快各种查找、代码 提示等操作的速度,所以
IntelliJ IDEA 的索引的重要性再强调一次也不为过。
但是,IntelliJ IDEA 的索引和缓存并不是一直会良好地支持 IntelliJ IDEA 的,某些特殊条件下,IntelliJ IDEA 的
缓存和索引文件也是会损坏的,比如:断电、 蓝屏引起的强制关机,当你重新打开 IntelliJ IDEA,很可能
IntelliJ IDEA 会报各种莫名其妙错误,甚至项目打不开,IntelliJ IDEA 主题还原成默认状态。即使没有断电、
蓝屏,也会有莫名奇怪的问题的时候,也很有可能是 IntelliJ IDEA 缓存和索引出现了问题,这种情况还不少。
(比如我公司的电脑IDEA经常卡死和闪退有可能和缓存和索引损坏有关)
遇到此类问题也不用过多担心。我们可以清理缓存和索引。如下:
一般建议点击 Invalidate and Restart ,这样会比较干净。
通过上面方式清除缓存、索引本质就是去删除 C 盘下的 system 目录下的对应的文件而已,所以如果你不用上述方法也可以删除整个 system。
当 IntelliJ IDEA 再次启动项目的 时候会重新创建新的system 目录以及对应项目缓存和索引。
IDEA报Out of Memory
一、问题现象
IDEA一启动就弹出如下:
二、解决方案
1、点击图中的Continue按钮,然后快速的点开help按钮
2、点击help,找到如图按钮:
点开按钮以后,修改这三项的值,尽量调大一些,如图我的设置就够用了,重启IDEA即可