我正在寻找一个切入点来匹配类中的方法执行,这些类将类与特定的注释子类化.优秀的AspectJ备忘单帮我创建了以下切入点:
within(@my.own.annotations.AnnotationToMatch *) && execution(* *(..))
Run Code Online (Sandbox Code Playgroud)
这匹配带有@AnnotationToMatch的类A的所有方法调用,但不匹配扩展A的类B的方法.如何匹配两者?
除了JAR规范之外,Java JAR中的MANIFEST.MF文件是否有任何约定?我可能想要包含的有趣信息是:构建日期和其他构建信息,SVN修订版,也许是描述.我还没有找到如何命名相应键的建议.对于规范未涵盖的事项,是否有任何事实上的标准或至少常用的密钥名称用于清单?
是否可以使用Scala解析器组合器反转匹配?我试图将行与不以一组关键字开头的解析器匹配.我可以用一个恼人的零宽度负先行的正则表达式(例如,做到这一点"(?!h1|h2).*"),但我宁愿用Scala的解析器做到这一点.我能想出的最好的是:
def keyword = "h1." | "h2."
def alwaysfails = "(?=a)b".r
def linenotstartingwithkeyword = keyword ~! alwaysfails | ".*".r
Run Code Online (Sandbox Code Playgroud)
这个想法在这里我用〜!禁止回溯到所有匹配的正则表达式,然后用正则表达式继续"(?= A)B" .R匹配什么.(顺便说一下,有一个预定义的解析器,总是失败?)这样,如果一个关键字被发现,但如果关键字不匹配将匹配行不会匹配.
我想知道是否有更好的方法来做到这一点.在那儿?
我有一个用maven构建的项目层次结构.如何从eclipse中立刻运行整个层次结构中的所有测试并轻松地进入故障状态?
在Maven的万无一失插件喷出在控制台输出的负载,但它是烦人找到故障出现.它还生成XML报告文件,我可以在普通的eclipse JUnit视图中轻松打开 - 但这些文件很多,很难找到失败测试的文件.该行家万无一失报告插件允许聚合所有的测试结果mvn surefire-report:report-only -Daggregate=true,但仅在HTML格式.我喜欢的是eclipse JUnit视图中所有测试结果的聚合 - 就像我使用"Run as JUnit-Test"一样.
(理想情况下,我会使用"Run as JUnit-Test"启动所有单元测试,但我只能对一个项目执行此操作,而不是对工作区中的所有项目执行此操作.)
Java 7 更改了排序算法,使其抛出一个
java.lang.IllegalArgumentException:"比较方法违反了它的一般合同!"
在某些情况下,使用的比较器是有缺陷的.是否可以判断比较器中的哪种错误导致这种情况?在我的实验中,如果x!= x无关紧要,如果x <y和y <z但z <x也没关系,但是如果x = y且y = z但是x <z对于某些值确实很重要x,y,z.这通常是这样吗?
(如果对此有一般规则,可能更容易在比较器中查找错误.但当然最好修复所有错误.:-))
特别是,以下两个比较器没有让TimSort抱怨:
final Random rnd = new Random(52);
Comparator<Integer> brokenButNoProblem1 = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 < o2) {
return Compare.LESSER;
} else if (o1 > o2) {
return Compare.GREATER;
}
return rnd.nextBoolean() ? Compare.LESSER : Compare.GREATER;
}
};
Comparator<Integer> brokenButNoProblem2 = new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
if (o1 == o2) …Run Code Online (Sandbox Code Playgroud) 我怀疑我们的一个应用程序中的一些性能问题是由于休眠过度急切加载某些关联而引起的,这可以通过切换到延迟加载来解决。不幸的是,跟踪这些关联的实际使用方式和时间非常困难,更不用说“平均”使用它们的频率了。是否有一些工具(休眠日志记录选项?)可以帮助决定哪些急切加载的关联应该更好地延迟加载和/或切换到其他获取策略?
例如,我可以想象一个工具,它可以记录每个休眠会话的日志,显示每个类加载了多少个对象,以及应用程序实际访问了其中的多少个对象,甚至生成一些有关这些的统计信息。当然,最终只有负载测试才能决定哪个更好,但这可能会给您一些尝试的想法。或者也许还有更好的工具。
对于某些实体,我们需要将成千上万个独立实体的负载永久保存在内存中。它们的许多属性来自一组有限的字符串(尽管不足以将其放入枚举中)。休眠是否可以将String.intern用于这些属性以节省空间?
理想情况下,这应该通过注释来实现,我可以在每个属性上加上一些容易更改的属性,而不会因实现问题而使源代码过于混乱。
Java 8 语言规范在注释类型元素的讨论中说:
注解类型中声明的方法的返回类型必须是以下之一,否则会发生编译时错误:
...类或类的调用(第 4.5 节)
“调用类”是什么意思?只是类似的东西Class<Number>,还是更多?
有没有办法自动找出实际加载的Java类(在编译期间,在可能的情况下,或在应用程序的运行时),并从JAR中抛出所有其他类以创建更小的JAR ?这在实践中真的有意义吗?
我在谈论应用程序JAR的应用程序类.通常,应用程序中有许多库,应用程序很少需要这些库的所有功能.所以我怀疑这会使一个相当小的应用程序.从理论上讲,可以通过Java代理来完成,该代理记录一个或多个应用程序运行(或者甚至只是java -verbose:class)读取哪些类和资源,以及抛出所有其他类的maven插件来自jar-with-dependencies.有这样的东西吗?
澄清:我不是在谈论未使用的依赖项(根本没有使用的JAR),而是关于删除每个包含的JAR的未使用部分.
我试图为图形布局编写自己的小算法,该算法仅创建节点布局,但未定义边缘路线。当我使用Graphviz将生成的点文件转换为图形时,边缘是穿过节点甚至彼此重叠的直线。有没有一种方法可以像点算法那样使用Graphviz很好地布局边缘,但是节点处于预定的固定位置?
您可以在下图上看到实例的效果:
digraph test {
"a" [pos="0.0,0.0"];
"b" [pos="50.0,50.0"];
"c" [pos="100.0,100.0"];
"a" -> "b";
"a" -> "c";
"b" -> "c";
}
Run Code Online (Sandbox Code Playgroud)
当用dot -Knop -Tpng -otest.png test.dottya和c之间的线绘制时,与b交叉。我想要的是所有节点都保持其位置,但是a和c之间的线围绕b。