public void send(String userName) {
try {
// qps 上报
qps(params);
long startTime = System.currentTimeMillis();
// 构建上下文(模拟业务代码)
ProcessContext processContext = new ProcessContext();
UserModel userModel = new UserModel();
userModel.setAge("22");
userModel.setName(userName);
//...
// rt 上报
long endTime = System.currentTimeMillis();
rt(endTime - startTime);
} catch (Exception e) {
// 出错上报
error(params);
}
}
@Around("@annotation(com.sanwai.service.openapi.monitor.Monitor)")
public Object antispan(ProceedingJoinPoint pjp) throws Throwable {
String functionName = pjp.getSignature().getName();
Map<String, String> tags = new HashMap<>();
logger.info(functionName);
tags.put("functionName", functionName);
tags.put("flag", "done");
monitor.sum(functionName, "start", 1);
//方法执行开始时间
long startTime = System.currentTimeMillis();
Object o = null;
try {
o = pjp.proceed();
} catch (Exception e) {
//方法执行结束时间
long endTime = System.currentTimeMillis();
tags.put("flag", "fail");
monitor.avg("rt", tags, endTime - startTime);
monitor.sum(functionName, "fail", 1);
throw e;
}
//方法执行结束时间
long endTime = System.currentTimeMillis();
monitor.avg("rt", tags, endTime - startTime);
if (null != o) {
monitor.sum(functionName, "done", 1);
}
return o;
}
Статья объяснена с точки зрения чистого интервью, поэтому многие детали не проложены.
такие как отражение,.java文件
Процесс для jvm, что такое АОП и т.д... Это в [Java3y] Существуют подробные базовые руководства и даже электронные книги, поэтому я не буду вдаваться в подробности.
Добро пожаловать в мой публичный аккаунт WeChat【Интервью для постройки ракеты] Давайте поговорим об интервью по Java