Maven

  • java世界最流行的自动化构建工具之一
  • java没有十分流行的脚手架工具,但是maven可以完成这样的工作
  • maven定义了一个默认的声明周期,各个插件可以把工作内容绑定在各个声明周期上,maven在各个阶段执行时执行被绑定的插件,每个阶段都可以绑定多个目标,执行顺序取决于声明顺序
  • maven执行某个声明周期命令时,回从声明周期开始运行到这个生命周期
  • https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

image.png

特性

  • 生命周期管理
  • 依赖解析
  • 构建自动化

    IDEA

    快捷键 keymap

  • alt + enter 任何不明白的地方皆可使用,用以提供提示

  • 双击shift 快速搜索
  • 查看定义 declaration
  • 查看文件 navigate - file
  • 高级查找 find in path
  • 快速生成 generate
  • 格式化 reformat code
  • 优化导入 optimize imports
  • 导航 navigate back\forward
  • 谁调用这个方法 call hierarchy
  • 所有的实现类 implementation
  • 文件大纲 file structure
  • 下一处错误 next highlighted error
  • 高级重命名 rename
  • 调试器快捷键 f5\f6\f7\f8

    git集成

  • 查找背锅侠 annotate\blame

  • 查看文件历史版本
  • 高级筛选方式查找commit记录
  • 显示差异 show diff
  • open in github

    其他

  • psvm 缩写public static void main

  • sout、soutv
  • fori

    Debugger调试器

    优点

  • 利于算法的学习

  • 理解程序执行的过程
  • 理解jvm的内部构造
  • 非常方便的检查在任意时间点jvm的内部状态

    原理

  • 调试器在jvm在断点停止运行时,通过接口与jvm进行通信

    用法

  • 条件断点

image.png

  • step over 无论该行需要调用几层函数栈,都直接跳过,完成当前行的执行
  • step into 执行一个语句,一层一层的进入方法栈帧,呈现更加精细的执行过程
  • resume 当前执行流程前进至下一个断点
  • step out 跳出一个方法 与step into反之
  • 显示方法栈,jvm主要有两部分组成,堆与栈
  • 方法栈每个方块为一个栈帧,局部变量只存在于栈帧中 stack frame
  • evaluate expression可以在jvm的任意状态下执行表达式
  • 调试器甚至可以改程序结果等
  • 跳转源代码

    高级用法

  • 调试maven compile的过程

    • 通过github找到源代码 git clone
    • 使用idea打开pom,进而打开整个项目
    • 使用mvnDebug compile 在某个端口监听 listening for transport dt_socket at address: 8000
    • 打开源代码 edit configuration 设置remote http 通信,例如8000端口
    • 选择正确的源代码版本,避免断点不一致的情况,设置断点进行调试即可