Java的BigDecimal.pow(int)
方法只接受整数参数,没有BigDecimal
参数.
是否有像Apache的commons-lang这样的库支持BigDecimal.pow(BigDecimal)
?它应该能够计算"1.21".pow("0.5")
返回"1.1"
.
我有一个@Parameterized
junit测试,产生了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)的运行配置中配置类似或类似的东西.
如何在adoc
文件中渲染删除线(或直线)?
让我们假设我想写"技术是 - 废话 - 不完美".
在我的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)
我怎样才能做到这一点?
我有第三方jar(我无法改变)使用java.beans.Introspector
,java.beans.BeanInfo
和java.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) 假设我有一个这样的域模型:
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()
在模型上添加方法.
我有一套非常慢的测试,需要一周时间才能运行.(他们实际上运行了一些不停的代码大约一周).
当然,没有开发人员(甚至是默认的构建作业)想要运行这些测试.只有特定的单独构建作业才有时间运行它们.因此,默认情况下需要禁用这些测试.
JUnit的类别似乎是完美的:我用那些注释那些慢速测试@Category(SlowTests.class)
.问题是它们仍在运行,因为:
如何在不使用显式TestSuite的情况下,默认情况下排除一类慢速JUnit测试?
给定一个类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的最快方法是什么?
我需要计数a的小数位数BigInteger
.例如:
99
回报 2
1234
回报 4
9999
回报 4
12345678901234567890
回报 20
我需要做的这一个BigInteger
与184948
十进制数字多.我怎样才能快速,可扩展?
在转换到字符串的方法是缓慢的:
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)
有没有更快的方法?
假设我们的代码有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 ×8
eclipse ×2
junit ×2
reflection ×2
android ×1
asciidoc ×1
asciidoctor ×1
biginteger ×1
comparator ×1
concurrency ×1
freemarker ×1
java-8 ×1
jenkins ×1
jvm ×1
lambda ×1
maven-3 ×1