IDEA的基本使用

  • 一、Java开发利器:IDEA的安装与使用(上)
    • 前言:
      • 【Why IDEA ?】
      • 【Why IDEA 2022.x】
    • 1.认识IntelliJ IDEA
      • 1.1 JetBrains 公司介绍
      • 1.2 IntelliJ IDEA 介绍
      • 1.3 IDEA的主要优势:(vs Eclipse)
      • 1.4 IDEA 的下载
    • 2. 卸载与安装
      • 2.1 卸载过程
      • 2.2 安装前的准备
      • 2.3 安装过程
      • 2.4 注册
      • 2.5 闪退问题
    • 3. HelloWorld的实现
      • 3.1 新建Project - Class
      • 3.2 编写代码:
      • 3.3 运行:
    • 4. JDK相关设置
      • 4.1 项目的JDK设置:
      • 4.2 out目录和编译版本:
    • 5. 详细设置
      • 5.1 如何打开详细配置界面:
      • 5.2 系统设置:
      • 5.3 设置整体主题:
      • 5.4 设置编辑器主题样式:
      • 5.5 显示行号与方法分隔符
      • 5.6 代码智能提示功能
      • 5.7 自动导包配置
      • 5.8 设置项目文件编码(一定要改)
      • 5.9 设置控制台的字符编码
      • 5.10 修改类头的文档注释信息
      • 5.11 设置自动编译
      • 5.12 设置为省电模式 (可忽略)
      • 5.13 取消双击shift搜索
      • 5.14 其它设置:
    • 6. 工程与模块管理
      • 6.1 IDEA项目结构:
      • 6.2 Project和Module的概念
      • 6.3 创建Module
      • 6.4 删除模块
      • 6.5 导入老师的模块
      • 6.6 同时打开两个IDEA项目工程
      • 6.7 导入前几章非IDEA工程代码
    • 7. 代码模板的使用
      • 7.1 查看Postfix Completion模板(后缀补全):
      • 7.2 查看Live Templates模板(实时模板):
      • 7.3 常用代码模板:
      • 7.4 自定义代码模板(了解)
        • 7.4.1 自定义后缀补全模板:
        • 7.4.2 自定义Live Templates:
  • 二、Java开发利器:IDEA的安装与使用(下)
    • 1. 快捷键的使用
      • 1.1 常用快捷键:
        • (1)第1组:通用型
        • (2)第2组:提高编写速度(上)
        • (3)第3组:提高编写速度(下)
        • (4)第4组:类结构、查找和查看源码
        • (5)第5组:查找、替换与关闭
        • (6)第6组:调整格式
        • (7) Debug快捷键
      • 8.2 查看快捷键:
      • 1.3 自定义快捷键:
      • 8.4 使用其它平台快捷键:
    • 2 . IDEA断点调试(Debug)
      • 2.1 为什么需要Debug:
      • 2.2 Debug的步骤:
        • (1)添加断点
        • (2)启动调试
        • (3)单步调试工具介绍:
      • 2.3 多种Debug情况介绍:
        • (1) 行断点:
        • (2)方法断点:
        • (3)字段断点:
        • (4) 条件断点:
        • (5)异常断点:
        • (6)线程调试:
        • (7)强制结束:
      • 2.4 自定义调试数据视图:
      • 2.5 常见问题:
    • 3.创建不同类型的工程
      • 3.1 创建Java工程:
      • 3.2 创建Java Web工程:
        • 3.2.1 IDEA中配置Tomcat:
        • 3.2.2 创建Web工程:
        • 3.2.3 配置web工程并运行:
        • 3.2.4 乱码的解决:
      • 3.3 创建Maven Java工程:
        • 3.3.1 Maven的介绍:
        • 3.3.2 Maven的配置:
        • 3.3.3 Maven Java工程的创建:
        • 3.3.4 编写代码及测试:
      • 3.4 创建Maven Web工程:
        • 3.4.1 创建Maven的Web工程步骤:
        • 3.4.2 开发jsp依赖jar包:
    • 4.关联数据库
      • 4.1 关联方式:
      • 4.2 常用操作:
    • 5. IDEA常用插件
      • 推荐1:Alibaba Java Coding Guidelines
      • 推荐2:jclasslib bytecode viewer
      • 推荐3:Translation
      • 推荐4:GenerateAllSetter
      • 插件5:Rainbow Brackets
      • 推荐6:CodeGlance Pro
      • 推荐7:Statistic
      • 推荐8:Presentation Assistant
      • 推荐9:Key Promoter X
      • 推荐10:JavaDoc
      • 推荐11: LeetCode Editor
      • 推荐12:GsonFormatPlus
      • 插件13:Material Theme UI

一、Java开发利器:IDEA的安装与使用(上)

  • 讲师:尚硅谷-宋红康(江湖人称:康师傅)
  • 官网:尚硅谷

前言:

【Why IDEA ?】

【注】JetBrains官方说明:

  • 尽管我们采取了多种措施确保受访者的代表性,但结果可能会略微偏向 JetBrains 产品的用户,因
    为这些用户更有可能参加调查。

此外,2022年,某美国软件开发商在对近千名专业的Java开发者调研后,发布了《2022年Java开发者生
产力报告》。报告提到:JetBrains 的 IntelliJ IDEA是最受欢迎的 Java IDE,占 48% ,其次是 Eclipse,占24%,Visual Studio Code 占 18%。


【Why IDEA 2022.x】

在Java 17正式发布之前,Java开发框架Spring率先在官博宣布,Spring Framework 6和Spring Boot 3计划
在2022年第四季度实现总体可用性的高端基线:

  • Java 17+(来自 Spring Framework 5.3.x 线中的 Java 8-17)
  • Jakarta EE 9+(来自Spring框架5.3.x 线中的 Java EE 7-8)

Spring 官方说明: https://spring.io/blog/2022/01/20/spring-boot-3-0-0-m1-is-now-available

意味着:springboot3.0 是需要用java17和spring6.0为基础建设。如果从企业选型最新springboot3.0
作为架构来说,它搭配jdk17肯定是标配了。


本着" 工欲善其事必先利其器 "的精神,本套课程从IDEA的介绍、安装、设置入手,讲解IDEA中项目的创建、快捷键与模板的使用、断点调试、常用插件等。

1.认识IntelliJ IDEA

1.1 JetBrains 公司介绍

IDEA,是 JetBrains公司的产品,该公司成立于2000年,总部位于捷克的布
拉格,致力于为开发者打造最高效智能的开发工具。

公司旗下还有其它产品,比如:

  • WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术
  • PyCharm:用于开发 python
  • PhpStorm:用于开发 PHP
  • RubyMine:用于开发 Ruby/Rails
  • AppCode:用于开发 Objective - C/Swift
  • CLion:用于开发 C/C++
  • DataGrip:用于开发数据库和 SQL
  • Rider:用于开发.NET
  • GoLand:用于开发 Go

用于开发 Android的Android Studio,也是Google 基于 IDEA 社区版进行迭代的。

1.2 IntelliJ IDEA 介绍

IDEA,全称 IntelliJ IDEA ,是 Java 语言的集成开发环境,目前已经(基本)代替了Eclipse的使
用。IDEA 在业界被公认为是最好的 Java 开发工具(之一),因其 功能强悍设置人性化 ,而深受
Java、大数据、移动端程序员的喜爱。尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、
JUnit、CVS 整合、代码审查、创新的 GUI 设计等方面的功能可以说是超常的。

IntelliJ IDEA 在 2015 年的官网上这样介绍自己:

Excel at enterprise, mobile and web development with Java, Scala and Groovy,with all the latest
modern technologies and frameworks available out of thebox.

1.3 IDEA的主要优势:(vs Eclipse)

(1)功能强大

  • 强大的整合能力。比如:Git、Maven、Spring等;

  • 开箱即用的体验(集成版本控制系统、多语言支持的框架随时可用,无需额外安装插件)

(2)符合人体工程学

  • 高度智能(快速的智能代码补全、实时代码分析、可靠的重构工具):

  • 提示功能的快速、便捷、范围广

  • 好用的快捷键和代码模板;

  • 精准搜索;

1.4 IDEA 的下载

  • 下载网址
  • IDEA 分为两个版本: 旗舰版(Ultimate)社区版(Community)
  • IDEA的大版本每年迭代一次,大版本下的小版本(如:2022.x)迭代时间不固定,一般每年3个小版本。

    两个版本的对比
    官网提供的详细使用文档

2. 卸载与安装

2.1 卸载过程

  • 这里以卸载2022.1.2版本为例说明。在【控制面板】找到【卸载程序】
  • 右键点击或左键双击IntelliJ IDEA 2022.1.2进行卸载:
  • 如果需要保留下述数据,就不要打√。如果想彻底删除IDEA所有数据,那就打上√
  • 软件卸载完以后,还需要删除其它几个位置的残留:

2.2 安装前的准备


  • 64 位 Microsoft Windows 11、10、8
  • 最低 2 GB 可用 RAM,推荐 8 GB 系统总 RAM
  • 2.5 GB 硬盘空间,推荐 SSD
  • 最低屏幕分辨率 1024x768

从安装上来看,IntelliJ IDEA 对硬件的要求 似乎不是很高 。可是在实际开发中并不是这样的,因为 IntelliJ
IDEA 执行时会有大量的缓存、索引文件,所以如果你正在使用 Eclipse / MyEclipse,想通过 IntelliJ IDEA
来解决计算机的卡、慢等问题,这基本上是不可能的,本质上你应该对自己的硬件设备进行升级。

2.3 安装过程

(1)下载完安装包,双击直接安装;
(2)欢迎安装

(3)是否删除电脑上低版本的IDEA(如果有,可以选择忽略)

  • 如果电脑上有低版本的IDEA,可以选择删除或保留。
  • 这里没有卸载旧版本,如果需要卸载,记得勾选下面的保留旧的设置和配置。

(4)选择安装目录

  • 选择安装目录,目录中要避免中文和空格。

(5)创建桌面快捷图标等

  • 确认是否与.java、.groovy、.kt 格式文件进行关联。这里建议不关联。

6)在【开始】菜单新建一个文件夹(这里需要确认文件夹的名称),来管理IDEA的相关内容。

(7)完成安装

  • 安装完成以后,单击桌面的IDEA图标即可打开

2.4 注册

(1)首先,需要通过用户协议:

  • 是否同意发送用户数据(特性、使用的插件、硬件与软件配置等),建议选择:不发送。

(2)接着,会提示我们进行注册。

  • 选择1:适用30天。在IDEA2022.1.2版本中,需要先登录,才能开启适用。
  • 选择2:付费购买旗舰版

  • 选择3:(推荐)

进行注册(对应IDEA相应的版本号)

2.5 闪退问题

问题描述1:2022.1启动不了,双击桌面图标,没有响应。

问题描述2:进入到安装目录…\IntelliJ IDEA 2022.1.2\bin,打开CMD。输入idea,发现报错。

(1)解决办法:

  • 打开C:\Users\songhk\AppData\Roaming\JetBrains\IntelliJIdea2022.1\idea64.exe.vmoptions这个文件。
  • 内容如下所示:- 删除红框的数据以后,再登录即可正常进入。

原因

  • 之前使用过的比如2021.2.2版本,pojie了。新版IEDA太智能了,把现有的启运参数也都复制过去了。又因为最新的IDEA,不兼容pojie程序-javaagent:D:\develop_tools\IDEA\IntelliJ IDEA
    2021.2.2\bin\jetbrains-agent.jar了,所以报错了,所以JVM结束了,所以没有启动画面,凉凉了。

3. HelloWorld的实现

3.1 新建Project - Class

注意:以下举例dk17来说明,别的版本只需要修改jdk即可;

(1)选择“New Project”:

(2)指名工程名、使用的JDK版本等信息。如下所示:

(3)接着创建Java类:


3.2 编写代码:

public class HelloWorld {public static void main(String[] args) {System.out.println("Hello,World!");}
}

3.3 运行:

4. JDK相关设置

4.1 项目的JDK设置:

File–>Project Structure…–>Platform Settings -->SDKs

  • 注1:SDKs全称是Software Development Kit ,这里一定是选择JDK的安装根目录,不是JRE的目录。
  • 注2:这里还可以从本地添加多个JDK。使用“+”即可实现。

4.2 out目录和编译版本:

File–>Project Structure…–>Project Settings -->Project

5. 详细设置

5.1 如何打开详细配置界面:

(1)显示工具栏

(2)选择详细配置菜单或按钮


5.2 系统设置:

(1)默认启动项目配置

  • 启动IDEA时,默认自动打开上次开发的项目?还是自己选择?
  • 如果去掉Reopen last project on startup前面的对勾,每次启动IDEA就会出现如下界面:

(2)取消自动更新

  • Settings–>Appearance & Behavior->System Settings -> Updates

    -默认都打√了,建议检查IDE更新的√去掉,检查插件更新的√选上。

5.3 设置整体主题:

(1)选择主题

(2)设置菜单和窗口字体和大小

(3)设置IDEA背景图

  • 选择一张合适的图片作为背景,即可。

5.4 设置编辑器主题样式:

(1)编辑器主题

(2)字体大小

  • 更详细的字体与颜色如下:

温馨提示

  • 如果选择某个font字体,中文乱码,可以在fallback font(备选字体)中选择一个支持中文的字体。

(3)注释的字体颜色

  • Block comment:修改多行注释的字体颜色
  • Doc Comment –> Text:修改文档注释的字体颜色
  • Line comment:修改单行注释的字体颜色

5.5 显示行号与方法分隔符

5.6 代码智能提示功能

IntelliJ IDEA 的代码提示和补充功能有一个特性

  • 区分大小写 。 如果想不区分大小写的话,就把这个对勾去掉。 建议去掉勾选

5.7 自动导包配置

(1)默认需要自己手动导包,Alt+Enter快捷键

(2)自动导包设置

  • 动态导入明确的包:Add unambiguous imports on the fly,该设置具有全局性;
  • 优化动态导入的包:Optimize imports on the fly,该设置只对当前项目有效;

5.8 设置项目文件编码(一定要改)

  • 说明: Transparent native-to-ascii conversion主要用于转换ascii,显式原生内容。一般都要勾选。

5.9 设置控制台的字符编码

5.10 修改类头的文档注释信息

  • 比如
/**
* ClassName: ${NAME}
* Package: ${PACKAGE_NAME}
* Description:
* @Author 尚硅谷-宋红康
* @Create ${DATE} ${TIME}
* @Version 1.0
*/
  • 常用的预设的变量,这里直接贴出官网给的:
${PACKAGE_NAME} - the name of the target package where the new class or interface will
be created.
${PROJECT_NAME} - the name of the current project.
${FILE_NAME} - the name of the PHP file that will be created.
${NAME} - the name of the new file which you specify in the New File dialog box during
the file creation.
${USER} - the login name of the current user.
${DATE} - the current system date.
${TIME} - the current system time.
${YEAR} - the current year.
${MONTH} - the current month.
${DAY} - the current day of the month.
${HOUR} - the current hour.
${MINUTE} - the current minute.
${PRODUCT_NAME} - the name of the IDE in which the file will be created.
${MONTH_NAME_SHORT} - the first 3 letters of the month name. Example: Jan, Feb, etc.
${MONTH_NAME_FULL} - full name of a month. Example: January, February, etc.

5.11 设置自动编译

Settings-->Build,Execution,Deployment-->Compiler

5.12 设置为省电模式 (可忽略)

注意

  • IntelliJ IDEA 有一种叫做省电模式的状态,开启这种模式之后 IntelliJ IDEA 会关掉代码检查代码提示 等功能。所以一般也可认为这是一种 阅读模式 ,如果你在开发过程中遇到突然代码文件不能进行检查和提示,可以来看看这里是否有开启该功能。

5.13 取消双击shift搜索

  • 因为我们按shift切换中英文输入方式,经常被按到,总是弹出搜索框,太麻烦了。可以取消它。

(1)方式1:适用于IDEA 2022.1.2版本

在2022.1版本中,采用如下方式消双击shift出现搜索框:搜索double即可,勾选Disable double modifier
key shortcuts,禁用这个选项。


(2)方式2:适用于IDEA 2022.1.2之前版本

  • 双击shift 或 ctrl + shift + a,打开如下搜索窗口:
  • 选择registry…,找到"ide.suppress.double.click.handler",把复选框打上勾就可以取消双击shift出现搜索框了。

5.14 其它设置:

  • 是否在单行显式编辑器选项卡(建议去掉勾选)
  • 设置代码样式:比如,设置import显示"*"时的个数

总结

  • 以上这些设置看似只是针对当前Project设置的,但是新建的其它Project也是同样适用的。

6. 工程与模块管理

6.1 IDEA项目结构:

层级关系

project(工程) - module(模块) - package(包) - class(类)

具体的

一个project中可以创建多个module
一个module中可以创建多个package
一个package中可以创建多个class

这些结构的划分,是为了方便管理功能代码。

6.2 Project和Module的概念

在 IntelliJ IDEA 中,提出了Project和Module这两个概念。

(1)在 IntelliJ IDEA 中Project是最顶级的结构单元 ,然后就是Module。目前,主流的大型项目结构基本都是多Module的结构,这类项目一般是按功能划分 的,比如:user-core-module、user-facade-module和userhessian-module等等,模块之间彼此可以 相互依赖 ,有着不可分割的业务关系。因此,对于一Project来说:

  • 当为单Module项目的时候,这个单独的Module实际上就是一个Project。
  • 当为多Module项目的时候,多个模块处于同一个Project之中,此时彼此之间具有互相依赖的关联关系。
    -当然多个模块没有建立依赖关系的话,也可以作为单独一个“小项目”运行。

6.3 创建Module

建议创建“Empty空工程”,然后创建多模块,每一个模块可以独立运行,相当于一个小项目。JavaSE阶段
不涉及到模块之间的依赖。后期再学习模块之间的依赖。

(1)步骤

  • ①选择创建模块
  • ②选择模块类型:这里选择创建Java模块,给模块命名,确定存放位置
  • ③ 模块声明在工程下面:

6.4 删除模块

(1)移除模块



(2)彻底删除模块

6.5 导入老师的模块

(1)将老师的模块 teacher_chapter04 整个的复制到自己IDEA项目的路径下

  • 接着打开自己IDEA的项目,会在项目目录下看到拷贝过来的module,只不过不是以模块的方式呈现。

    (2)查看Project Structure,选择import module:


    (3)选择要导入的module


    (4)接着可以一路Next下去,最后选择Overwrite:

  • 最后点击OK即可了。

6.6 同时打开两个IDEA项目工程

(1)两个IDEA项目工程效果

  • 有些同学想要把上课练习代码和作业代码分开两个IDEA项目工程。



(2)新建一个IDEA项目

  • 注意:第一次需要新建,之后直接打开项目工程即可

  • 最后在点击Create

(3)打开两个IDEA项目


6.7 导入前几章非IDEA工程代码

(1)创建chapter01、chapter02、chapter03等章节的module

  • 将相应章节的源文件粘贴到module的src下。

  • 打开其中各个源文件,会发现有乱码。比如:

(2)设置编码

  • 当前项目是UTF-8。如果原来的.java文件都是GBK的(如果原来.java文件有的是GBK,有的是UTF-8就比较麻烦了)。
  • 可以单独把这两个模块设置为GBK编码的。
  • 改为GBK,确认即可。如图:

7. 代码模板的使用

7.1 查看Postfix Completion模板(后缀补全):

7.2 查看Live Templates模板(实时模板):

7.3 常用代码模板:

(1)非空判断

  • 变量.null:if(变量 == null)
  • 变量.nn:if(变量 != null)
  • 变量.notnull:if(变量 != null)
  • ifn:if(xx == null)
  • inn:if(xx != null)

(2)遍历数组和集合

  • 数组或集合变量.fori:for循环
  • 数组或集合变量.for:增强for循环
  • 数组或集合变量.forr:反向for循环
  • 数组或集合变量.iter:增强for循环遍历数组或集合

(3)输出语句

  • sout:相当于System.out.println
  • soutm:打印当前方法的名称
  • soutp:打印当前方法的形参及形参对应的实参值
  • soutv:打印方法中声明的最近的变量的值
  • 变量.sout:打印当前变量值
  • 变量.soutv:打印当前变量名及变量值

(4)对象操作

创建对象

  • Xxx.new .var :创建Xxx类的对象,并赋给相应的变量
  • Xxx.new .field:会将方法内刚创建的Xxx对象抽取为一个属性
    强转
  • 对象.cast:将对象进行强转
  • 对象.castvar:将对象强转后,并赋给一个变量

(5)静态常量声明

  • psf:public static final
  • psfi:public static final int
  • psfs:public static final String
  • prsf:private static final

7.4 自定义代码模板(了解)

7.4.1 自定义后缀补全模板:


7.4.2 自定义Live Templates:

例如:定义sop代表System.out.print();语句

  • ①在Live Templates中增加模板
  • ②先定义一个模板的组,这样方便管理所有自定义的代码模板
  • ③在模板组里新建模板
  • ④定义模板(以输出语句为例)
  • Abbreviation:模板的缩略名称
  • Description:模板的描述
  • Template text:模板的代码片段
  • 模板应用范围。比如点击Define。选择如下:应用在java代码中。

其它模板1:单元测试模板

@Test
public void test$var1$(){$var2$
}


其它模板2:创建多线程

new Thread(){public void run(){$var$}
};


其它模板3:冒泡排序

for(int $INDEX$ = 1; $INDEX$ < $ARRAY$.length; $INDEX$++) {for(int $INDEX2$ = 0; $INDEX2$ < $ARRAY$.length-$INDEX$; $INDEX2$++) {if($ARRAY$[$INDEX2$] > $ARRAY$[$INDEX2$+1]){$ELEMENT_TYPE$ temp = $ARRAY$[$INDEX2$];$ARRAY$[$INDEX2$] = $ARRAY$[$INDEX2$+1];$ARRAY$[$INDEX2$+1] = temp;}}
}

二、Java开发利器:IDEA的安装与使用(下)

1. 快捷键的使用

1.1 常用快捷键:

(1)第1组:通用型
快捷键 说明
ctrl + c 复制代码-copy
ctrl + v 粘贴-paste
ctrl + x 剪切-cut
ctrl + z 撤销-undo
ctrl + shift + z 反撤销-redo
ctrl + s 保存-save all
ctrl + a 全选-select all
(2)第2组:提高编写速度(上)
快捷键 说明
alt + enter 智能提示-edit
ctrl+j 提示代码模板-insert live template
ctrl+alt+t 使用xx块环绕-surround with …
alt+insert 调出生成getter/setter/构造器等结构-generate …
ctrl+alt+v 自动生成返回值变量-introduce variable …
ctrl+d 复制指定行的代码-duplicate line or selection
ctrl+y 删除指定行的代码-delete line
shift + enter 切换到下一行代码空位-start new line
ctrl +alt+ enter 切换到上一行代码空位-start new line before current
ctrl+shift+↑ 向上移动代码-move statement up
ctrl+shift+↓ 向下移动代码-move statement down
alt+shift+↑ 向上移动一行-move line up
alt+shift+↓ 向下移动一行-move line down
ctrl+p 方法的形参列表提醒-parameter info
(3)第3组:提高编写速度(下)
快捷键 说明
shift+f6 批量修改指定的变量名、方法名、类名等-rename
ctrl+alt+m 抽取代码重构方法-extract method …
ctrl+o 重写父类的方法-override methods …
ctrl+i 实现接口的方法-implements methods …
ctrl+shift+u 选中的结构的大小写的切换-toggle case
ctrl+alt+o 批量导包-optimize imports
(4)第4组:类结构、查找和查看源码
快捷键 说明
ctrl + 选中指定的结构 或 ctrl+n 如何查看源码-go to class…
ctrl+f12 显示当前类结构,支持搜索指定的方法、属性等-file structure
ctrl+alt+← 退回到前一个编辑的页面-back
ctrl+alt+→ 进入到下一个编辑的页面-forward
alt+←/→ 打开的类文件之间切换-select previous/next tab
ctrl+h 光标选中指定的类,查看继承树结构-Type Hierarchy
ctrl+q 查看方法文档-quick documentation
ctrl+alt+u 类的UML关系图-show uml popup
ctrl+g 定位某行-go to line/column
ctrl+alt+b 回溯变量或方法的来源-go to implementation(s)
ctrl+shift+ - 折叠方法实现-collapse all
ctrl+shift+ + 展开方法实现-expand all
(5)第5组:查找、替换与关闭
快捷键 说明
ctlr+f 查找指定的结构
ctrl+l 快速查找:选中的Word快速定位到下一个-find next
ctrl+r 查找与替换-replace
home 直接定位到当前行的首位-move caret to line start
end 直接定位到当前行的末位 -move caret to line end
ctrl+f7 查询当前元素在当前文件中的引用,然后按 F3 可以选择
ctrl+shift+f 全项目搜索文本-find in path …
ctrl+f4 关闭当前窗口-close
(6)第6组:调整格式
快捷键 说明
ctrl+alt+l 格式化代码-reformat code
ctrl + / 使用单行注释-comment with line comment
ctrl + shift + / 使用/取消多行注释-comment with block comment
tab 选中数行,整体往后移动-tab
shift + tab 选中数行,整体往前移动-prev tab
(7) Debug快捷键
快捷键 说明
F8 单步调试(不进入函数内部)- step over
F7 单步调试(进入函数内部)- step into
alt+shift+f7 强制单步调试(进入函数内部) - force step into
shift + F7 选择要进入的函数 - smart step into
shift + F8 跳出函数 - step out
alt + F9 运行到断点 - run to cursor
F9 继续执行,进入下一个断点或执行完程序 - resume program
Ctrl+F2 停止 - stop
Ctrl+Shift+F8 查看断点 - view breakpoints
Ctrl+F4 关闭 - close

8.2 查看快捷键:

(1)已知快捷键操作名,未知快捷键

(2)已知快捷键,不知道对应的操作名

1.3 自定义快捷键:

8.4 使用其它平台快捷键:

注意

  • 苹果电脑或者是用惯Eclipse快捷的,可以选择其他快捷键插件。

2 . IDEA断点调试(Debug)

2.1 为什么需要Debug:

编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢?简单的代码直接就可以看出来,但
如果代码比较复杂,就需要借助程序调试来查找错误了。

运行编写好的程序时,可能出现的几种情况:
> 情况1:没有任何bug,程序执行正确!
====================如果出现如下的三种情况,都又必要使用debug=============================
> 情况2:运行以后,出现了错误或异常信息。但是通过日志文件或控制台,显示了异常信息的位置。
> 情况3:运行以后,得到了结果,但是结果不是我们想要的。
> 情况4:运行以后,得到了结果,结果大概率是我们想要的。但是多次运行的话,可能会出现不是我们想要的情况。
比如:多线程情况下,处理线程安全问题。

2.2 Debug的步骤:

Debug(调试)程序步骤如下

  • 添加断点
  • 启动调试
  • 单步执行
  • 观察变量和执行流程,找到并解决问题
(1)添加断点

在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点。

(2)启动调试

IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run –> Debug)、图标(“绿色臭虫” 等等

(3)单步调试工具介绍:



  • ①Step Over(F8):进入下一步,如果当前行断点是调用一个方法,则不进入当前方法体内
  • ②Step Into(F7):进入下一步,如果当前行断点是调用一个自定义方法,则进入该方法体内
  • ③Force Step Into(Alt +Shift + F7):进入下一步,如果当前行断点是调用一个核心类库方法,则进入该方法体内
  • ④Step Out(Shift + F8):跳出当前方法体
  • ⑤Run to Cursor(Alt + F9):直接跳到光标处继续调试
  • ⑥Resume Program(F9):恢复程序运行,但如果该断点下面代码还有断点则停在下一个断点上
  • ⑦Stop(Ctrl + F2):结束调试
  • ⑧View Breakpoints(Ctrl + Shift + F8):查看所有断点
  • ⑨Mute Breakpoints:使得当前代码后面所有的断点失效, 一下执行到底

说明:在Debug过程中,可以动态的下断点。

2.3 多种Debug情况介绍:

(1) 行断点:
  • 断点打在代码所在的行上。执行到此行时,会停下来。
package com.atguigu.debug;/**
* ClassName: Debug01
* Package: com.atguigu.debug
* Description: 演示1:行断点 & 测试debug各个常见操作按钮
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:44
* @Version 1.0
*/
public class Debug01 {public static void main(String[] args) {//1.int m = 10;int n = 20;System.out.println("m = " + m + ",n = " + n);swap(m, n);System.out.println("m = " + m + ",n = " + n);//2.int[] arr = new int[] {1,2,3,4,5};System.out.println(arr);//地址值char[] arr1 = new char[] {'a','b','c'};System.out.println(arr1);//abc}public static void swap(int m,int n){int temp = m;m = n;n = temp;}
}
(2)方法断点:
  • 断点设置在方法的签名上,默认当进入时,断点可以被唤醒。
  • 也可以设置在方法退出时,断点也被唤醒
  • 在多态的场景下,在父类或接口的方法上打断点,会自动调入到子类或实现类的方法
package com.atguigu.debug;import java.util.HashMap;
/**
* ClassName: Debug02
* Package: com.atguigu.debug
* Description: 演示2: 方法断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:15
* @Version 1.0
*/public class Debug02 {public static void main(String[] args) {//1.Son instance = new Son();instance.test();//2.Father instance1 = new Son();instance1.test();//3.Consumer con = new ConsumerImpl();con.accept("atguigu");//4.HashMap map = new HashMap();map.put("Tom",12);map.put("Jerry",11);map.put("Tony",20);}}class Father{public void test(){System.out.println("Father : test");}}class Son extends Father{public void test(){System.out.println("Son : test");}
}interface Consumer{void accept(String str);
}class ConsumerImpl implements Consumer{@Overridepublic void accept(String str) {System.out.println("ConsumerImple:" + str);}
}
(3)字段断点:
  • 在类的属性声明上打断点,默认对属性的修改操作进行监控
package com.atguigu.debug;
/**
* ClassName: Debug03
* Package: com.atguigu.debug
* Description: 演示3:字段断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:34
* @Version 1.0
*/
public class Debug03 {public static void main(String[] args) {Person p1 = new Person(3);System.out.println(p1);}
}
class Person{private int id = 1;private String name;private int age;public Person() {}{id = 2;}public Person(int id) {this.id = id;}public Person(int id, String name, int age) {this.id = id;this.name = name;this.age = age;
}
public int getId() {return id;
}public void setId(int id) {this.id = id;
}public String getName() {return name;
}public void setName(String name) {this.name = name;
}public int getAge() {return age;
}public void setAge(int age) {this.age = age;
}
@Override
public String toString() {return "Person{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}
(4) 条件断点:
package com.atguigu.debug;
/**
* ClassName: Debug04
* Package: com.atguigu.debug
* Description: 演示4:条件断点
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 21:49
* @Version 1.0
*/
public class Debug04 {public static void main(String[] args) {int[] arr = new int[]{1,2,3,4,5,6,7,8,9,10,11,12};for (int i = 0; i < arr.length; i++) {int target = arr[i];System.out.println(target);}}
}
  • 针对上述代码,在满足arr[i] % 3 == 0的条件下,执行断点。
(5)异常断点:
  • 对异常进行跟踪。如果程序出现指定异常,程序就会执行断点,自动停住。
package com.atguigu.debug;
import java.util.Date;/*** ClassName: Debug05* Package: com.atguigu.debug* Description: 演示5:异常断点** @Author: 尚硅谷-宋红康* @Create: 2022/10/20 22:01* @Version 1.0*/
public class Debug05 {public static void main(String[] args) {int m = 10;int n = 0;int result = m / n;System.out.println(result);// Person p1 = new Person(1001);// System.out.println(p1.getName().toUpperCase());}
}
  • 通过下图的方式,对指定的异常进行监控:
(6)线程调试:
package com.atguigu.debug;
/**
* ClassName: Debug06
* Package: com.atguigu.debug
* Description: 演示6:线程调试
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 22:46
* @Version 1.0
*/
public class Debug06 {public static void main(String[] args) {test("Thread1");test("Thread2");
}
public static void test(String threadName) {new Thread(() -> System.out.println(Thread.currentThread().getName()),threadName).start();  //java8新特性Lambda表达式}
}

(7)强制结束:
package com.atguigu.debug;
/**
* ClassName: Debug07
* Package: com.atguigu.debug
* Description: 演示7:强制结束
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 23:15
* @Version 1.0
*/
public class Debug07 {public static void main(String[] args) {System.out.println("获取请求的数据");System.out.println("调用写入数据库的方法");insert();System.out.println("程序结束");}private static void insert() {System.out.println("进入insert()方法");System.out.println("获取数据库连接");System.out.println("将数据写入数据表中");System.out.println("写出操作完成");System.out.println("断开连接");}
}

2.4 自定义调试数据视图:

package com.atguigu.debug;
import java.util.HashMap;
/**
* ClassName: Debug08
* Package: com.atguigu.debug
* Description: 演示8:用户自定义数据视图
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 23:21
* @Version 1.0
*/
public class Debug08 {public static void main(String[] args) {HashMap<Integer,String> map = new HashMap<>();map.put(1,"高铁");map.put(2,"网购");map.put(3,"支付宝");map.put(4,"共享单车");System.out.println(map);}
}
  • 设置如下:

2.5 常见问题:

(1)问题:使用Step Into时,会出现无法进入源码的情况。如何解决?

  • 方案1:使用 force step into 即可
  • 方案2:点击Setting ->Build,Execution,Deployment -> Debugger -> Stepping 把Do not step into the classess中的 java.* 、 javax.* 取消勾选即可。

    (2)小结

经验

  • 初学者对于在哪里加断点,缺乏经验,这也是调试程序最麻烦的地方,需要一定的经验。简单来说,在可能发生错误的代码的前面加断点。如果不会判断,就在程序执行的起点处加断点。

3.创建不同类型的工程

3.1 创建Java工程:

(1)在工程上,右键- New - Module,如下:


(2)指明Java工程的名称及使用的JDK版本:

(3)创建包:

(4)提供包名:

(5)在包下创建类,即可:

(6)提供类名:

(7)测试代码:

(8)点击运行即可:

3.2 创建Java Web工程:

3.2.1 IDEA中配置Tomcat:

注意

  • 在IDEA中配置Tomcat之前,需要保证已经安装并配置了Tomcat的环境变量。
  • 配置完成以后,在命令行输入:catalina run 。能够启动tomcat,则证明安装配置成功。

(1)下面看如何在IDEA中配置:

(2)配置Tomcat Server的位置:

  • 这里配置Tomcat的名称以及配置应用服务器的位置。根据自己Tomcat的安装位置决定。
  • 配置好后,如下图所示:
3.2.2 创建Web工程:

(1)选择New Module,指明当前工程的名称:

(2)选中当前创建的工程,添加框架支持:

(3)选择:Web Application,选择Create web.xml,如下

3.2.3 配置web工程并运行:


(1)部署当前的web项目:

  • 选择第2项:
  • 可以修改Application context,如下:

(2)配置当前web工程的详细信息,如下:

(3)配置好后,可以直接运行:

3.2.4 乱码的解决:

(1)如果Tomcat日志出现乱码,需要配置:


(2)解决方案:

  • 1) 点击Help => Edit custom VM Options,在最后面添加
-Dfile.encoding=UTF-8
  • 2) 在当前Tomcat实例中配置 VM option,添加
-Dfile.encoding=UTF-8

注意

  • 在第二步的Startup/Connection页签的Run和Debug添加一个key为 JAVA_TOOL_OPTIONS , value为“ -Dfile.encoding=UTF-8 ”的环境变量**
  • 3) 保存后重启IDEA,可以发现控制台中文乱码显示正常了。

3.3 创建Maven Java工程:

3.3.1 Maven的介绍:


(1)Maven是一款自动化构建工具,专注服务于Java平台的 项目构建 和 依赖管理 。在JavaEE开发的历史上构建工具的发展也经历了一系列的演化和变迁:

Make→Ant→Maven→Gradle→其他……

(2)构建环节:

①清理:删除以前的编译结果,为重新编译做好准备。
②编译:将Java源程序编译为字节码文件。
③测试:运行单元测试用例程序,确保项目在迭代开发过程中关键点的正确性。
④报告:测试程序的结果。
⑤打包:将java项目打成jar包;将Web项目打成war包。
⑥安装:将jar包或war包安装到本地仓库中。
⑦部署:将jar或war从Maven仓库中部署到Web服务器上运行。

3.3.2 Maven的配置:

下面直接整合Maven。选择自己Maven的目录,和settings文件,然后配置自己的仓库reposiroty。

3.3.3 Maven Java工程的创建:


(1)指明当前maven工程的名称、模板等信息。这里要求一个项目组的jdk版本必须一致。

  • 通过坐标,就可以定位仓库中具体的jar包。如下:

(2)新创建的maven 的java工程缺少相应的resources文件目录,需要创建如下:

(3)指明main下resources的文件目录类型:


(4)类似的操作test目录下,提供resources即可。

  • 这里说明Maven的java工程的目录结构:
工程名src----main--------java--------resources----test--------java--------resourcespom.xml
  • main目录用于存放主程序。
  • test目录用于存放测试程序。
  • java目录用于存放源代码文件。
  • resources目录用于存放配置文件和资源文件。
3.3.4 编写代码及测试:

(1)第1步:创建Maven的核心配置文件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.0http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.atguigu.maven</groupId><artifactId>maven-01</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.18</version></dependency></dependencies>
</project>

(2)第2步:编写主程序代码

  • 在src/main/java/com/atguigu/java目录下新建文件HelloMaven.java
package com.atguigu.java;
/**
* ClassName: HelloMaven
* Package: com.atguigu.java
* Description:
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:20
* @Version 1.0
*/
public class HelloMaven {public String sayHello(String message) {return "Hello, " + message + "!";}
}

(3)第3步:编写测试代码

  • 在/src/test/java/com/atguigu/java目录下新建测试文件HelloMavenTest.java
package com.atguigu.java;
import org.junit.Test;
/**
* ClassName: HelloMavenTest
* Package: com.atguigu.java
* Description:
*
* @Author: 尚硅谷-宋红康
* @Create: 2022/10/20 18:21
* @Version 1.0
*/
public class HelloMavenTest {@Testpublic void testHelloMaven() {HelloMaven helloMaven = new HelloMaven();System.out.println(helloMaven.sayHello("Maven"));}
}

(4)第4步:运行几个基本的Maven命令

  • 目录下也会有对应的生命周期。其中常用的是:clean、compile、package、install。
  • 比如这里install,如果其他项目需要将这里的模块作为依赖使用,那就可以install。安装到本地仓库的位
    置。

3.4 创建Maven Web工程:

3.4.1 创建Maven的Web工程步骤:

(1)指明Maven的web工程的名称和模板。如下:

(2)在Tomcat上进行部署:

(3)配置部署的详细信息:

3.4.2 开发jsp依赖jar包:

(1)找不到HttpServlet错误

  • 如果看到JSP报错: The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 可以加入如下依赖解决。
<dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope>
</dependency>

(2)EL表达式没有提示问题

  • ${pageContext}这个EL表达式中通过pageContext对象访问reuqest属性时本身是应该有提示的,但如果没
    有的话加入下面依赖即可。
<dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.1.3-b06</version><scope>provided</scope>
</dependency>
  • 同时,针对index.jsp文件,修改一下文件头信息为:
<%@page language="java" pageEncoding="utf-8" contentType="text/html;UTF-8" %>

4.关联数据库

4.1 关联方式:

(1)找到数据库选项:


(2)添加指定数据库:

(3)配置MySQL数据库的详细信息:

  • 表面上很多人认为配置 Database 就是为了有一个 GUI 管理数据库功能,但是这并不是 IntelliJ IDEA 的
    Database 最重要特性。数据库的 GUI 工具有很多,IntelliJ IDEA 的 Database 也没有太明显的优势。
  • IntelliJ IDEA 的 Database 最大特性就是对于 Java Web 项目来讲,常使用的 ORM 框架,如 Hibernate、Mybatis 有很好的支持,比如配置好了 Database 之后,IntelliJ IDEA 会自动识别 domain 对象与数据表的关系,也可以通过 Database 的数据表直接生成 domain 对象等。

4.2 常用操作:

图标1:同步当前的数据库连接。这个是最重要的操作。配置好连接以后或通过其他工具操作数据库以后,需要及时同步
图标2:配置当前的连接
图标3:断开当前的连接
图标4:显示相应数据库对象的数据
图标5:编辑修改当前数据库对象

(1)展示ER图:

(2)可以导出文件:

5. IDEA常用插件

推荐1:Alibaba Java Coding Guidelines

  • 阿里巴巴Java编码规范检查插件,检测代码是否存在问题,以及是否符合规范。
  • 使用:在类中,右键,选择编码规约扫描,在下方显示扫描规约和提示。根据提示规范代码,提高代码
    质量。

推荐2:jclasslib bytecode viewer

可视化的字节码查看器
使用

  1. 在 IDEA 打开想研究的类。
  2. 编译该类或者直接编译整个项目( 如果想研究的类在 jar 包中,此步可略过)。
  3. 打开“view” 菜单,选择“Show Bytecode With jclasslib” 选项。
  4. 选择上述菜单项后 IDEA 中会弹出 jclasslib 工具窗口。


英文设置:

  • 在 Help -> Edit Custom VM Options …,加上
-Duser.language=en

推荐3:Translation

  • 注册翻译服务(有道智云、百度翻译开放平台、阿里云机器翻译)帐号,开通翻译服务并获取其应用ID
    和密钥 绑定应用ID和密钥:偏好设置(设置) > 工具 > 翻译 > 常规 > 翻译引擎 > 配置…
  • 使用:鼠标选中文本,点击右键即可自动翻译成多国语言。
  • 注:请注意保管好你的应用密钥,防止其泄露。

推荐4:GenerateAllSetter

实际开发中还有一个非常常见的场景: 我们创建一个对象后,想依次调用 Setter 函数对属性赋值,如果
属性较多很容易遗漏或者重复。

可以使用这 GenerateAllSetter 提供的功能,快速生成对象的所有 Setter 函数(可填充默认值),然后自
己再跟进实际需求设置属性值。

插件5:Rainbow Brackets

给括号添加彩虹色,使开发者通过颜色区分括号嵌套层级,便于阅读

推荐6:CodeGlance Pro

在编辑器右侧生成代码小地图,可以拖拽小地图光标快速定位代码,阅读行数很多的代码文件时非常实
用。

推荐7:Statistic


代码统计工具。

推荐8:Presentation Assistant

推荐9:Key Promoter X

快捷键提示插件。当你执行鼠标操作时,如果该操作可被快捷键代替,会给出提示,帮助你自然形成使
用快捷键的习惯,告别死记硬背。

推荐10:JavaDoc

  • alt+insert ,执行操作:

推荐11: LeetCode Editor



在 IDEA 里刷力扣算法题

推荐12:GsonFormatPlus

  • 根据 json 生成对象。
  • 使用:使用alt + s 或 alt + insert调取。
  • 举例:
{"name": "tom","age": "18","gender": "man","hometown": {"province": "河北省","city": "石家庄市","county": "正定县"}
}

插件13:Material Theme UI

对于很多人而言,写代码时略显枯燥的,如果能够安装自己喜欢的主题将为开发工作带来些许乐趣。
IDEA 支持各种主题插件,其中最出名的当属 Material Theme UI。

  • 安装后,可以从该插件内置的各种风格个选择自己最喜欢的一种。

IDEA的安装与使用学习笔记(尚硅谷----宋红康老师)相关推荐

  1. JVM学习笔记汇总:结合尚硅谷宋红康老师视频教程及PPT

    JVM学习笔记汇总:结合尚硅谷宋红康老师视频教程及PPT 第一章:JVM虚拟机的介绍 1.1虚拟机的分类 虚拟机通常分为两类:系统虚拟机和程序虚机.其中,系统虚拟机是指完全对物理计算机的仿真,而程序虚 ...

  2. 尚硅谷 宋红康老师 Java视频全程课程目录

    尚硅谷 Java 语言全程课程目录, 尚硅谷 Java&大数据研究院 宋红康 B站视频链接 已看完,感谢宋红康老师! [视频很长,但看完你一定会收获很多] 30天课程目录 Java 编程基础部 ...

  3. 【MySQL入门到高级之基础篇(参考尚硅谷宋红康老师2022版)】

    文章目录 第一章数据库概述 为什么要使用数据库 数据库与数据库管理系统 数据库的相关概念 数据库与数据库管理系统的关系 常见的数据库管理系统排名(DBMS) 常见的数据库介绍 MySQL介绍 概述 M ...

  4. Java基础(四)(根据尚硅谷宋红康老师Java基础第四部分)(重点)

    Java面向对象编程(中) 主要讲解宋老师里面课后题(无答案的),以便后期复习使用.(可以私信我要文档资料 简答题 Object类的使用说明: 为什么要重写toString()方法? 在Object类 ...

  5. JDBC学习笔记(1)---B站尚硅谷宋红康

    JDBC学习笔记(1)-B站尚硅谷宋红康 JDBC学习笔记(2)-B站尚硅谷宋红康 文章目录 软件架构方式介绍 JavaWeb技术概览 第1章:JDBC概述 1.1 数据的持久化 1.2 Java中的 ...

  6. 尚硅谷-宋红康-JVM上中下篇完整笔记-JVM上篇_内存与垃圾回收篇

    前言 一.jvm及java体系结构 1. Java及JVM简介 TIOBE语言热度排行榜 https://www.tiobe.com/tiobe-index/ 世界上没有最好的编程语言,只有最适用于具 ...

  7. 尚硅谷 宋红康 JVM教程_02_字节码与类的加载篇

    本系列相关链接 尚硅谷 宋红康 JVM教程_01_内存与垃圾回收篇--01 (20210103-20210110) https://blog.csdn.net/wei198621/article/de ...

  8. 尚硅谷-宋红康-MySQL高级性能篇

    尚硅谷-宋红康-MySQL高级性能篇 第1章 Linux下MySQL的安装与使用 1. 安装前说明 1.1 Linux系统及工具准备 二级目录 三级目录 第1章 Linux下MySQL的安装与使用 1 ...

  9. 尚硅谷 宋红康 JVM教程_01_内存与垃圾回收篇——02

    本系列相关链接 尚硅谷 宋红康 JVM教程_01_内存与垃圾回收篇--01 (20210103-20210110) https://blog.csdn.net/wei198621/article/de ...

  10. JVM从入门到精通(尚硅谷宋红康)

    不动笔墨不读书,先把书读厚,再把书读薄是我学习方式. 所以等理解了再整理一次笔记,目前笔记和视频一一对应. 笔记连载中 <尚硅谷2020最新版宋红康JVM> 第1章:JVM与Java体系结 ...

最新文章

  1. linux隐藏文件的方法,Linux下隐藏文件的操作方法
  2. 怎么把本地项目和远程git仓库相连通
  3. unity 编辑器存档_Unity教程 | 自制简易的游戏存档系统
  4. 滚动条滚动加载图片或则请求的实现方法
  5. SAP生产订单预留(下)
  6. 『数据库』朴实无华且枯燥的数据库文章--关系数据理论
  7. 雅诗兰黛天猫超级品牌日:未央唇膏、红装小棕瓶“当红不让”
  8. [召集令]-Dijkstra的单源最短路径算法
  9. canvas入门实战--邀请卡生成与下载
  10. leetcode 关于树的题目
  11. mysql 多对多_mysql多对一、多对多查询实践
  12. SCOM 2012知识分享-16:管理任务窗格
  13. Markdown制作表格
  14. 如何把手机变成你的救生设备
  15. Matlab 工作区变量和 MAT 文件
  16. unity的RectTransform
  17. librtmp的简单安装使用
  18. 英文网站推广推荐一些很好的SEO优化工具
  19. rosbridge-suite安装教程和下载安装失败的问题解决
  20. 瞬时极性法判断反馈类型

热门文章

  1. 如何建设现代化智慧档案馆【八防十防】、及相关的一些规定
  2. Android 防抖的添加
  3. ctfshow 网络迷踪-三秦套餐
  4. android9之前(android8以及之前)的版本WebView不兼容H5部分界面,发生白屏的处理办法。
  5. 第4章 开发架构设计
  6. 飞信现状原因分析及脱困策略
  7. 自动完成淘宝618活动任务:使用autojs脚本代码轻松实现
  8. html编写头部,mata的含义
  9. 华为云云耀云服务器L实例评测|云服务体验实战之Docker使用
  10. Gephi源码编译环境搭建记录