在我的项目中,我必须在所有测试之前进行一些存储库设置.这是使用一些棘手的静态规则完成的.然而,我不知道在所有测试之后如何进行清理.我不想保留一些神奇的静态数字来指代所有测试方法的数量,我应该一直保持这些数字.
最受欢迎的方法是添加一些在所有测试之后调用的监听器.JUnit4中是否有任何接口?
编辑:这与@BeforeClass和@AfterClass无关,因为我必须知道最后一次是否调用了使用@AfterClass注释的方法.
我想使用一个java switch语句,它使用class名称作为case常量.有可能吗?或者我是否必须复制类名?
由于编译器错误,以下代码不起作用:
case表达式必须是常量表达式
String tableName = "MyClass1";
...
switch (tableName) {
case MyClass1.class.getSimpleName():
return 1;
case MyClass2.class.getSimpleName():
return 2;
default:
return Integer.MAX_VALUE;
}
Run Code Online (Sandbox Code Playgroud)
以下是该问题的在线演示(openjdk 1.8.0_45):http://goo.gl/KvsR6u
我正在为我的Trident拓扑实现一个IBackingMap,以便将元组存储到ElasticSearch(我知道GitHub上已存在多个Trident/ElasticSearch集成实现,但我决定实现一个更适合我的任务的自定义实现).
所以我的实现是一个经典的工厂:
public class ElasticSearchBackingMap implements IBackingMap<OpaqueValue<BatchAggregationResult>> {
// omitting here some other cool stuff...
private final Client client;
public static StateFactory getFactoryFor(final String host, final int port, final String clusterName) {
return new StateFactory() {
@Override
public State makeState(Map conf, IMetricsContext metrics, int partitionIndex, int numPartitions) {
ElasticSearchBackingMap esbm = new ElasticSearchBackingMap(host, port, clusterName);
CachedMap cm = new CachedMap(esbm, LOCAL_CACHE_SIZE);
MapState ms = OpaqueMap.build(cm);
return new SnapshottableMap(ms, new Values(GLOBAL_KEY));
}
};
}
public ElasticSearchBackingMap(String host, int port, String clusterName) …Run Code Online (Sandbox Code Playgroud) 我已成功为Lucene实施捷克语引理器.我正在使用Solr对它进行测试,它在索引时非常适合.但是当用于查询时它不能很好地工作,因为查询解析器不向引理器提供任何上下文(前后的单词).
例如,pila vodu在索引时比在查询时不同地分析短语.它使用含糊不清的词pila,这可能意味着pila (看到例如电锯)或pít(动词的过去时"喝").
pila vodu - >
pít vodapila voda..所以pila找不到单词,也没有在文档片段中突出显示.
这个行为记录在solr wiki上(引用贝娄),我可以通过调试我的代码来确认它(只有孤立的字符串"pila"和"vodu"传递给引理器).
... Lucene QueryParser在向分析器提供任何文本之前在空白区域上进行标记,因此如果一个人搜索单词
sea biscit,分析器将单独给出单词"sea"和"biscit",...
是否有可能以某种方式更改,配置或调整查询解析器,以便引理器可以看到整个查询字符串,或者至少是单个单词的某些上下文?我想为dismax或edismax等不同的solr查询解析器提供解决方案.
我知道像"pila vodu"(引号)这样的短语查询没有这样的问题,但是如果没有确切的短语(例如带有"pilavíno"或甚至"pila dobrou vodu"的文档),我将丢失文档.
编辑 - 尝试解释/回答以下问题(谢谢@femtoRgon):
如果这两个术语不是一个短语,所以不一定会在一起,那么为什么要在上下文中对它们进行分析呢?
当然,最好只分析一起出现的术语.例如,在索引时,引理器检测输入文本中的句子,并且它仅一起分析来自单个句子的单词.但是如何在查询时实现类似的东西呢?实现我自己的查询解析器是唯一的选择吗?我很喜欢pf2和pf3的选项edismax解析器,我会在我自己的解析器的情况下,再次实施呢?
背后的想法实际上更深一点,因为即使对于具有相同词汇基础的词语,词形除法也在进行词义消歧.例如,这个词bow在英语中有大约7种不同的感官(参见维基百科),并且这种词义可以区分这种感官.所以我想利用这种潜力使搜索更加精确 - 只返回包含bow查询所需的具体意义上的单词的文档.所以我的问题可以扩展到:如何获得<lemma;sense>查询词的正确对?如果单词在其共同的上下文中呈现,则引理器通常能够分配正确的意义,但是当没有上下文时它就没有机会.
lucene solr lemmatization query-parser word-sense-disambiguation
在Eclipse中调试java程序时,我可以看到(例如在Variables视图中)任意数组的内容,请参见下面的图片(带ByteArrayInputStream.buf字段).
但我无法在任何地方找到数组长度字段.有没有办法在Eclipse调试器中显示数组的长度?我该怎么做?
我有两个矩阵
timeline = [0.0008 0.0012 0.0016 0.0020 0.0024 0.0028];
Run Code Online (Sandbox Code Playgroud)
Origdata =
79.8400 69.9390 50.0410 55.5082 34.5200 37.4486 31.4237 27.3532 23.2860 19.3039
79.7600 69.8193 49.8822 55.3115 34.2800 37.1730 31.1044 26.9942 22.8876 18.9061
79.6800 69.6996 49.7233 55.1148 34.0400 36.8975 30.7850 26.6352 22.4891 18.5084
79.6000 69.5799 49.5645 54.9181 33.8000 36.6221 30.4657 26.2762 22.0907 18.1108
79.5200 69.4602 49.4057 54.7215 33.5600 36.3467 30.1464 25.9173 21.6924 17.7133
79.4400 69.3405 49.2469 54.5249 33.3200 36.0714 29.8271 25.5584 21.2941 17.3159
Run Code Online (Sandbox Code Playgroud)
当我绘制它们时,我会得到如下图.
plot(timeline, Origdata, '.');
Run Code Online (Sandbox Code Playgroud)
如何在每个点周围绘制一个半径为0.3524的圆?该半径应仅相对于y轴.
java ×3
apache-storm ×1
arrays ×1
border ×1
class-names ×1
const ×1
debugging ×1
eclipse ×1
final ×1
junit4 ×1
lucene ×1
matlab ×1
plot ×1
query-parser ×1
solr ×1
testing ×1
trident ×1
unit-testing ×1