在一篇名为"AOP Fundamentals"的文章中,我要求King的英文解释AOP是什么,以及它做了什么.我收到了一些非常有用的答案和链接到文章,这些文章帮助我了解了所有理论.
但是现在AOP得到了我的全部关注,所有这些文章和章节摘录都很棒,但在每一个案例中,它们都包含了崇高的理论,模糊的UML模型,以及抽象的顺序,这些都是我喜欢的.
这是我对AOP理论的理解,只是为了澄清,所以如果你看到一些看起来不对的东西,请告诉我!
诸如日志记录,身份验证,同步,验证,异常处理等交叉问题在非AOP系统中变得高度耦合,因为它们几乎被代码库中的每个组件/模块使用.
AOP定义了使用连接点,建议和切入点来抽象这些横切关注点的方面(类/方法).
一个.建议 - 实现跨领域关注(即进行实际记录,验证,验证等)的实际代码(方面的方法,可能?)
湾 加入点 - 在非AOP代码中触发的事件,导致特定方面的建议被执行("编织"到非AOP代码中)
C.切入点 - 基本上是连接点(触发事件)到建议执行的映射
所有方面都模块化(LoggingAspect,AuthenticationAspect,ValidationAspect等)到组件中并使用AspectWeaver注册.当非AOP/POJO代码遇到连接点时,AspectWeaver会围绕非AOP代码"编织"(集成)映射的建议:
public class LoggingAspect
{
// ...
public void log(String msg) { ... }
}
public class ExceptionHandlingAspect
{
// ..
public void handle(Exception exc) { ... }
}
public class NonAOPCode
{
// ...
@LoggingAspect @ExceptionHandlingAspect
public void foo()
{
// do some stuff... … 我想为我的Java代码(一种单线程,本地,复杂的算法)制定一些性能测量(主要是运行时).(所以我不想要宏基准来衡量JVM实现.)
有了这个工具,我想
为此,我想使用一个工具或框架
哪些工具/框架满足这些要求?哪一个适合复杂性和趋势分析,为什么?
我正在尝试用java创建基准测试.目前我有以下简单的方法:
public static long runTest(int times){
long start = System.nanoTime();
String str = "str";
for(int i=0; i<times; i++){
str = "str"+i;
}
return System.nanoTime()-start;
}
Run Code Online (Sandbox Code Playgroud)
我目前在另一个多次发生的循环中多次进行此循环,并获得运行此方法所需的最小/最大/平均时间.然后我在另一个线程上开始一些活动并再次测试.基本上我只想获得一致的结果......如果我有一千万次runTest循环,它似乎非常一致:
Number of times ran: 5
The max time was: 1231419504 (102.85% of the average)
The min time was: 1177508466 (98.35% of the average)
The average time was: 1197291937
The difference between the max and min is: 4.58%
Activated thread activity.
Number of times ran: 5
The max time was: 3872724739 (100.82% of the average) …Run Code Online (Sandbox Code Playgroud)