小编Geo*_*met的帖子

Java的BigDecimal.power(BigDecimal指数):是否有Java库可以做到这一点?

Java的BigDecimal.pow(int)方法只接受整数参数,没有BigDecimal参数.

是否有像Apache的commons-lang这样的库支持BigDecimal.pow(BigDecimal)?它应该能够计算"1.21".pow("0.5")返回"1.1".

java

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

JUnit参数化测试:如何仅从IntelliJ/Eclipse运行1个特定测试?

我有一个@Parameterizedjunit测试,产生了50个测试:

@RunWith(Parameterized.class)
public class NurseRosteringSolveAllTurtleTest ... {

    @Parameterized.Parameters(name = "{index}: {0}")
    public static Collection<Object[]> getSolutionFilesAsParameters() {
        return ... // returns 50 Files.
    }

    public NurseRosteringSolveAllTurtleTest(File unsolvedDataFile) {
        ...
    }

    ...

    @Test
    public void solveDataFile() {
        ...
    }

}
Run Code Online (Sandbox Code Playgroud)

运行它需要一个小时(并且不可能缩短那个时间,它们是集成测试).测试28失败.

如何在不运行其他49个测试的情况下单独运行测试28?无需更改实际代码,只需-D在IntelliJ(或Eclipse)的运行配置中配置类似或类似的东西.

java eclipse junit intellij-idea

32
推荐指数
2
解决办法
9973
查看次数

我如何在asciidoc中做删除线(直通)?

如何在adoc文件中渲染删除线(或直线)?

让我们假设我想写"技术是 - 废话 - 不完美".

asciidoc asciidoctor

22
推荐指数
3
解决办法
3703
查看次数

Freemarker:if语句中的枚举

在我的if语句中,我想将一个变量(JDK 1.5枚举)与枚举文字进行比较.例如:

<#if type == ProblemStatisticType.BEST_SOLUTION_CHANGED>
  ...
</#if>
Run Code Online (Sandbox Code Playgroud)

但是我得到了这个例外:

freemarker.core.InvalidReferenceException: Expression ProblemStatisticType is undefined on line 430, column 87 in index.html.ftl.
at freemarker.core.TemplateObject.assertNonNull(TemplateObject.java:125)
at freemarker.core.TemplateObject.invalidTypeException(TemplateObject.java:135)
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

java freemarker

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

使用使用java.beans类的jar(Introspector,BeanInfo或PropertyDescriptor)

我有第三方jar(我无法改变)使用java.beans.Introspector,java.beans.BeanInfojava.beans.PropertyDescriptor.

如何在我的Android应用程序中使用该jar?

它无法Introspector从第3方jar 加载类(使用):

WARN/dalvikvm(780): VFY: unable to resolve static method 6325: Ljava/beans/Introspector;.getBeanInfo (Ljava/lang/Class;)Ljava/beans/BeanInfo;
WARN/dalvikvm(780): VFY: unable to resolve exception class 962 (Ljava/beans/IntrospectionException;)
WARN/dalvikvm(780): Verifier rejected class Lorg/thirdpartyjar/SomeClass;
Run Code Online (Sandbox Code Playgroud)

java reflection android

18
推荐指数
2
解决办法
8026
查看次数

Comparator.comparing(...)嵌套字段

假设我有一个这样的域模型:

class Lecture {
     Course course;
     ... // getters
}

class Course {
     Teacher teacher;
     int studentSize;
     ... // getters
}

class Teacher {
     int age;
     ... // getters
}
Run Code Online (Sandbox Code Playgroud)

现在我可以像这样创建一个教师比较器:

    return Comparator
            .comparing(Teacher::getAge);
Run Code Online (Sandbox Code Playgroud)

但是,我如何比较Lecture的嵌套字段,像这样?

    return Comparator
            .comparing(Lecture::getCourse::getTeacher:getAge) 
            .thenComparing(Lecture::getCourse::getStudentSize);
Run Code Online (Sandbox Code Playgroud)

我无法Lecture.getTeacherAge()在模型上添加方法.

java lambda comparator java-8

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

默认情况下,不要在Maven和每个IDE(Eclipse,IntelliJ,...)中运行一类慢速JUnit测试,而不使用显式的TestSuite

我有一套非常慢的测试,需要一周时间才能运行.(他们实际上运行了一些不停的代码大约一周).

当然,没有开发人员(甚至是默认的构建作业)想要运行这些测试.只有特定的单独构建作业才有时间运行它们.因此,默认情况下需要禁用这些测试.

JUnit的类别似乎是完美的:我用那些注释那些慢速测试@Category(SlowTests.class).问题是它们仍在运行,因为:

  • 我不想维护TestSuite类,因为我们每天都会添加测试.我有0个TestSuite类:Maven,IntelliJ和Eclipse只运行我的模块中的所有Test类.包括所有那些慢速测试.
  • 即使我们有TestSuite类,大多数开源贡献者仍然会尝试从IntelliJ或Eclipse运行所有Test类,认为它挂起并放弃运行测试.默认情况下,需要排除那些缓慢的测试.最好在IntelliJ或Eclipse中没有任何额外配置.

如何在不使用显式TestSuite的情况下,默认情况下排除一类慢速JUnit测试?

eclipse junit intellij-idea maven-3 jenkins

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

通过反射调用Java中的getter:重复调用它的最快方法是什么(性能和可伸缩性)?

给定一个类Foo和一个属性bar,我在编译时都不知道,我需要多次重复调用getter Foo.getBar().

假设我有:

Method barGetterMethod = ...; // Don't worry how I got this
Run Code Online (Sandbox Code Playgroud)

我需要做这样的事情:

for (Object foo : fooList) { // 1000000000 elements in fooList
    Object bar = barGetterMethod.invoke(foo);
    ...
}
Run Code Online (Sandbox Code Playgroud)

与没有反射调用它相比,上面的实现仍然很慢.有更快的方法吗?

用Java反射调用getter的最快方法是什么?

java reflection

15
推荐指数
2
解决办法
8808
查看次数

BigInteger:计算可伸缩方法中的小数位数

我需要计数a的小数位数BigInteger.例如:

  • 99 回报 2
  • 1234 回报 4
  • 9999 回报 4
  • 12345678901234567890 回报 20

我需要做的这一个BigInteger184948十进制数字多.我怎样才能快速,可扩展?

转换到字符串的方法是缓慢的:

public String getWritableNumber(BigInteger number) {
   // Takes over 30 seconds for 184948 decimal digits
   return "10^" + (number.toString().length() - 1);
}
Run Code Online (Sandbox Code Playgroud)

这种循环 - 十分之一的方法甚至更慢:

public String getWritableNumber(BigInteger number) {
    int digitSize = 0;
    while (!number.equals(BigInteger.ZERO)) {
        number = number.divide(BigInteger.TEN);
        digitSize++;
    }
    return "10^" + (digitSize - 1);
}
Run Code Online (Sandbox Code Playgroud)

有没有更快的方法?

java biginteger

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

Java中的多线程状态可见性:有没有办法将JVM变成最坏的情况?

假设我们的代码有2个线程(A和B)在某个地方引用了这个类的同一个实例:

public class MyValueHolder {

    private int value = 1;

    // ... getter and setter

}
Run Code Online (Sandbox Code Playgroud)

当线程A执行时myValueHolder.setValue(7),无法保证线程B将读取该值:myValueHolder.getValue()理论上 - 可以1永远返回.

然而,在实践中,硬件迟早会清除二级缓存,因此线程B将7迟早读取(通常更早).

是否有任何方法可以使JVM模拟最坏情况下它1为线程B永远返回的情况?在这些情况下使用我们现有的测试测试我们的多线程代码非常有用.

java concurrency jvm jvm-arguments race-condition

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