小编ded*_*dek的帖子

所有junit测试后清理

在我的项目中,我必须在所有测试之前进行一些存储库设置.这是使用一些棘手的静态规则完成的.然而,我不知道在所有测试之后如何进行清理.我不想保留一些神奇的静态数字来指代所有测试方法的数量,我应该一直保持这些数字.

最受欢迎的方法是添加一些在所有测试之后调用的监听器.JUnit4中是否有任何接口?


编辑:这与@BeforeClass和@AfterClass无关,因为我必须知道最后一次是否调用了使用@AfterClass注释的方法.

java testing unit-testing junit4

39
推荐指数
3
解决办法
5万
查看次数

是否可以在java switch/case语句中使用类名?

我想使用一个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

java final const class-names switch-statement

16
推荐指数
2
解决办法
2万
查看次数

如何在Storm Trident拓扑中关闭由IBackingMap实现打开的数据库连接?

我正在为我的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)

trident apache-storm

10
推荐指数
1
解决办法
343
查看次数

Solr/Lucene用上下文查询词形还原

我已成功为Lucene实施捷克语引理器.我正在使用Solr对它进行测试,它在索引时非常适合.但是当用于查询时它不能很好地工作,因为查询解析器不向引理器提供任何上下文(前后的单词).

例如,pila vodu在索引时比在查询时不同地分析短语.它使用含糊不清的词pila,这可能意味着pila (看到例如电锯)或pít(动词的过去时"喝").

pila vodu - >

  • 索引时间: pít voda
  • 查询时间: pila voda

..所以pila找不到单词,也没有在文档片段中突出显示.

这个行为记录在solr wiki上(引用贝娄),我可以通过调试我的代码来确认它(只有孤立的字符串"pila"和"vodu"传递给引理器).

... Lucene QueryParser在向分析器提供任何文本之前在空白区域上进行标记,因此如果一个人搜索单词sea biscit,分析器将单独给出单词"sea"和"biscit",...

所以我的问题是:

是否有可能以某种方式更改,配置或调整查询解析器,以便引理器可以看到整个查询字符串,或者至少是单个单词的某些上下文?我想为dismaxedismax等不同的solr查询解析器提供解决方案.

我知道像"pila vodu"(引号)这样的短语查询没有这样的问题,但是如果没有确切的短语(例如带有"pilavíno"或甚至"pila dobrou vodu"的文档),我将丢失文档.


编辑 - 尝试解释/回答以下问题(谢谢@femtoRgon):

如果这两个术语不是一个短语,所以不一定会在一起,那么为什么要在上下文中对它们进行分析呢?

当然,最好只分析一起出现的术语.例如,在索引时,引理器检测输入文本中的句子,并且它仅一起分析来自单个句子的单词.但是如何在查询时实现类似的东西呢?实现我自己的查询解析器是唯一的选择吗?我很喜欢pf2pf3的选项edismax解析器,我会在我自己的解析器的情况下,再次实施呢?

背后的想法实际上更深一点,因为即使对于具有相同词汇基础的词语,词形除法也在进行词义消歧.例如,这个词bow在英语中有大约7种不同的感官(参见维基百科),并且这种词义可以区分这种感官.所以我想利用这种潜力使搜索更加精确 - 只返回包含bow查询所需的具体意义上的单词的文档.所以我的问题可以扩展到:如何获得<lemma;sense>查询词的正确对?如果单词在其共同的上下文中呈现,则引理器通常能够分配正确的意义,但是当没有上下文时它就没有机会.

lucene solr lemmatization query-parser word-sense-disambiguation

7
推荐指数
1
解决办法
565
查看次数

如何在Eclipse调试器中显示数组长度?

在Eclipse中调试java程序时,我可以看到(例如在Variables视图中)任意数组的内容,请参见下面的图片(带ByteArrayInputStream.buf字段).

带有数组的Eclipse Variables视图

但我无法在任何地方找到数组长度字段.有没有办法在Eclipse调试器中显示数组的长度?我该怎么做?

java eclipse arrays debugging

5
推荐指数
1
解决办法
859
查看次数

在绘图中的点周围绘制圆圈

我有两个矩阵

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轴.

matlab plot border matlab-figure

3
推荐指数
1
解决办法
1055
查看次数