小编akb*_*ram的帖子

如何格式化播放2.0模板中的数字/日期?

我在玩2.0模板系统上有点挣扎; 我有一个方法返回scala中的'Int',我想用"#,###"模式格式化它.

我曾尝试@order.itemCount().format("#,###")@( order.item.count() format "#,###" ),但没有爱.

我不确定在播放模板语法中是否有一个技巧,或者我是否只需要学习如何在Scala中执行此操作.

scala playframework-2.0

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

运行期间最终的非规范NaN双值更改

我正在编写与R交互的Java代码,其中"NA"值与NaN值区分开来.NA表示值"统计上缺失",即无法收集或无法获得.

class DoubleVector {
     public static final double NA = Double.longBitsToDouble(0x7ff0000000001954L);

     public static boolean isNA(double input) {
         return Double.doubleToRawLongBits(input) == Double.doubleToRawLongBits(NA);
     }

     /// ... 
}
Run Code Online (Sandbox Code Playgroud)

以下单元测试演示了NaN和NA之间的关系,并在我的Windows笔记本电脑上运行良好,但"isNA(NA)#2" 有时在我的ubuntu工作站上失败.

@Test
public void test() {

    assertFalse("isNA(NaN) #1", DoubleVector.isNA(DoubleVector.NaN));
    assertTrue("isNaN(NaN)", Double.isNaN(DoubleVector.NaN));
    assertTrue("isNaN(NA)", Double.isNaN(DoubleVector.NA));
    assertTrue("isNA(NA) #2", DoubleVector.isNA(DoubleVector.NA));
    assertFalse("isNA(NaN)", DoubleVector.isNA(DoubleVector.NaN));
}
Run Code Online (Sandbox Code Playgroud)

从调试开始,看起来DoubleVector.NA被更改为规范的NaN值7ff8000000000000L,但很难分辨,因为将它打印到stdout会给出与调试器不同的值.

此外,如果测试在之前的许多其他测试之后运行,则测试仅失败; 如果我单独运行这个测试,它总是通过.

这是一个JVM错误吗?优化的副作用?

测试总是传递:

java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java HotSpot(TM) Client VM (build 19.1-b02, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

测试有时会失败:

java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07)
Java …
Run Code Online (Sandbox Code Playgroud)

java jvm-crash

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

为方法链配置checkstyle?

我们的项目包含链接流畅风格的方法中的许多语句:

    int totalCount = ((Number) em
        .createQuery("select count(up) from UserPermission up where " +
            "up.database.id = :dbId and " +
            "up.user.id <> :currentUserId ")
        .setParameter("dbId", cmd.getDatabaseId())
        .setParameter("currentUserId", currentUser.getId())
        .getSingleResult())
        .intValue();
Run Code Online (Sandbox Code Playgroud)

我的checkstyle主要配置为匹配我们现有的代码样式,但现在它在这些代码片段上失败了,而是更喜欢:

    int totalCount = ((Number) em
        .createQuery("select count(up) from UserPermission up where " +
            "up.database.id = :dbId and " +
            "up.user.id <> :currentUserId ")
            .setParameter("dbId", cmd.getDatabaseId())
                .setParameter("currentUserId", currentUser.getId())
                    .getSingleResult())
                        .intValue();
Run Code Online (Sandbox Code Playgroud)

这完全不合适.反正配置checkstyle是否接受方法链接样式?是否有一个替代工具我可以从maven运行来强制执行这种缩进?

java checkstyle maven

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

如何说服JVM内联接口方法?

我有一个以接口为根的类层次结构,并使用抽象基类实现.它看起来像这样:

interface Shape {
  boolean checkFlag();
}

abstract class AbstractShape implements Shape {
  private boolean flag = false;

  protected AbstractShape() { /* compute flag value */ }

  public final boolean checkFlag() { return flag; }
}

interface HasSides extends Shape { 
  int numberOfSides();
}

interface HasFiniteArea extends Shape { 
  double area();
}

class Square extends AbstractShape implements HasSides, HasFiniteArea {

} 

class Circle extends AbstractShape implements HasFiniteArea { 
}

/** etc **/
Run Code Online (Sandbox Code Playgroud)

当我使用VisualVM对正在运行的代码进行采样时,似乎AbstractShape.checkFlag()从不内联并占用了总程序运行时间的14%,这对于一个简单的方法来说是个淫秽,即使对于一个经常调用的方法也是如此.

我在基类上标记了方法final,并且(当前)实现"Shape"接口的所有类都扩展了AbstractShape.

我能正确解释VisualVM样本结果吗?有没有办法说服JVM内联这个方法,还是我需要撕掉接口并使用抽象基类?(我不愿意,因为层次结构包括像HasFiniteArea和HasSides这样的接口,这意味着层次结构没有完美的树形式)

编辑:要清楚,这是一种在任何宇宙中 …

java optimization jvm compiler-optimization

2
推荐指数
1
解决办法
1054
查看次数

如何在dust.js中实现自定义渲染逻辑?

我正在使用dust.js来呈现有时长且包含下划线的变量名列表:

SUM_COUNT_LABOR_COUNTRIES_SMS_PAST

浏览器不会对下划线进行换行,因此它可能会变得难看.我希望我的灰尘模板在每个下划线后添加零宽度空间,以便浏览器可以包装它.这肯定属于模板层而不是模型,但我无法弄清楚如何使用dust.js正确实现这一点,而且它是将表示与逻辑分离的非常好的原则.

我是否创建了"帮手"功能?我在哪里放置辅助功能?我如何从模板中调用它?

javascript dust.js

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