系列文章目录
java程序员开发技巧总结: link
1 IDEA篇
1.1 IDEA调用Restful接口
get请求带@RequestParam和@RequestHeader的请求
1.在写好的接口上点击下面的圆形图标后点击’Generate request in HTTP Client’
会生成下面的文件
点击Examples->Post Requests
参考生成的get请求填充到requests.http
点击运行:
post请求:
返回:
1.2 流式调试
点击Evaluate Expression
分步查看流式的运算
也可以整体查看
1.3 回退栈
版本小于IDEA2021的是Drop Frame
版本大于2021的是Reset Frame
1.4 减少废数据强制return
小于版本2021
大于版本2021
1.5 断点种类
1.LineBreakPoint,单行断点
2.Method BreakPoint,接口方法断点
3.Field Watchpoint,变量断点
4.Exception BreakPoint,异常断点
1.View Breakpoints
2.点加号->java Exeption Breakpoints
3.选择需要监控的异常
做完这些操作后如果程序出现空指针异常会自动定位到目标行
1.6 debug案例
jdk174版本ArrayList默认初始值是10,第二次扩容容量是多少?
1.设置条件断点
2.强制进入方法内Force step into
3.条件成立调用grow()
4.在newCapacity变量上点右键选Add to Watches 监控
5.往下走完计算发现变为15
6.增到第15的时候再次进入
7.开始第二次扩容
8.第二次扩容后变为22
1.7 自定义单元测试
package com.ge.healthcare.cn.apm.report.utils;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface AtzkTest {
}
package com.ge.healthcare.cn.apm.report.utils;
public class CalcHelpDemo {
public int mul(int x,int y){
return x*y;
}
@AtzkTest
public int div(int x, int y){
return x/y;
}
public void thank(int x, int y){
System.out.println("3ks, help me test bug");
}
}
@Slf4j
public class AutoTestClient {
public static void main(String[] args) {
CalcHelpDemo calcHelpDemo = new CalcHelpDemo();
int para1 = 10;
int para2 = 0;
Method[] methods = calcHelpDemo.getClass().getMethods();
AtomicInteger bugCount = new AtomicInteger();
//要写入的文件路径(如果不存在会创建该文件)
String filePath = "BugReport"+(DateUtil.format(new Date(),"yyyyMMddHHmmss"))+".txt";
for(int i =0;i<methods.length;i++){
if(methods[i].isAnnotationPresent(AtzkTest.class)){
try {
methods[i].invoke(calcHelpDemo,para1,para2);
}catch (Exception e){
bugCount.getAndIncrement();
FileUtil.writeString(methods[i].getName()+"\t"+"出现了异常"+"\n",filePath,"UTF-8");
FileUtil.appendString("异常名称"+e.getCause().getClass().getSimpleName()+"\n",filePath,"UTF-8");
FileUtil.appendString("异常原因"+e.getCause().getMessage()+"\n",filePath,"UTF-8");
}finally {
FileUtil.appendString("异常数:"+bugCount.get()+"\n",filePath,"UTF-8");
}
}
}
}
}