如果我创建自己的线程(即不是线程池)和我调用的某个地方sleep
或任何其他可中断的方法,如果我知道代码中没有其他人在线程上执行中断,则可以忽略InterruptedException .
换句话说,如果线程应该和JVM一样长,这意味着线程不可中断,是否可以安全地假设InterruptedException 永远不会被调用,因此可以吞下异常?
java multithreading exception-handling thread-safety interrupted-exception
在git中是否可以在git仓库中拥有指向特定文件的"链接"?就像git子模块对文件夹所做的那样,但我的问题是关于特定文件,而不是完整目录:
my-project/
class1.java
class2.java
logback.xml (link to a particular file, say https://github.com/theHilikus/JRoboCom/blob/master/jrobocom-core/src/main/resources/logback.xml)
Run Code Online (Sandbox Code Playgroud)
可以看出,在这种情况下,拥有一个完整的子模块文件夹是没有意义的,它只是一个文件.
我很好,链接被锁定到一个特定的提交,但如果它在它自己的项目的生命周期中发生变化,它会更好
需要注意的是,这与文件系统的符号链接无关; 我在谈论对另一个项目,repo,branch或任何东西中的文件的引用.如果文件的内容是重复的而不是文件系统符号链接,那就没问题
我有一种感觉,我在这里遗漏了一些东西.我发现自己做了以下事情
private static int getHighestValue(Map<Character, Integer> countMap) {
return countMap.values().stream().mapToInt(Integer::intValue).max().getAsInt();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是从愚蠢的转换Stream
到 IntStream
通过mapToInt(Integer::intValue)
有没有更好的转换方式?这一切都是为了避免使用max()
从Stream
,这需要传递一个Comparator
但问题是专门对的皈依Stream
到IntStream
在参数化的Jenkins工作中,String Parameter
和之间有什么区别Text Parameter
?我甚至没有在文档中看到文本参数的提及
要检查与模拟的交互次数,其中方法调用中的参数是某种类型,可以做
mock.someMethod(new FirstClass());
mock.someMethod(new OtherClass());
verify(mock, times(1)).someMethod(isA(FirstClass.class));
Run Code Online (Sandbox Code Playgroud)
这将通过感谢调用isA
自从someMethod
被调用两次,但只有一次与参数FirstClass
但是,使用ArgumentCaptor时,这种模式似乎是不可能的,即使Captor是为特定参数创建的 FirstClass
这不起作用
mock.someMethod(new FirstClass());
mock.someMethod(new OtherClass());
ArgumentCaptor<FirstClass> captor = ArgumentCaptor.forClass(FirstClass.class);
verify(mock, times(1)).someMethod(captor.capture());
Run Code Online (Sandbox Code Playgroud)
它说模拟不止一次被召唤.
在获取进一步检查的参数时,有没有办法完成此验证?
在我的项目中有一个实现接口的类.接口来自依赖.我有另一个依赖项,它本身依赖于一个jar,它也包含相同的接口,除了一个有更多方法的版本; 包含相同package-interface的两个jar不具有相同的groupId或artifactId.
编译失败,因为编译器抱怨我的项目中的类没有实现所有方法.我意识到这是因为编译器从错误的jar中获取接口引用.我的问题是,为什么maven使用传递依赖的接口而不是我在项目POM中明确提到的jar中的接口?我可以看到使用的jar出现在定义的前面(所以我想象在类路径中),但我认为在这些情况下,maven通过使用来自具有最短路径的依赖项的碰撞类/接口来解决它
这是依赖树的一部分.请注意,这是grepped但仍然可以看到javax.servlet:servlet-api
(实际使用的那个)在树中比tomcat:servlet
(应该使用的那个)更深
[builder@ca-rd-build11 proj]$ mvn dependency:tree | grep servlet
[INFO] | +- javax.servlet:servlet-api:jar:2.4:compile
[INFO] +- tomcat:servlet:jar:4.0.6:compile
Run Code Online (Sandbox Code Playgroud)
我正在使用maven 3.0.4
它只是我或cobertura-maven-plugin不适用于java 8?当它运行我得到
[INFO] --- cobertura-maven-plugin:2.6:instrument (default) @ provider-impl ---
[INFO] Cobertura 2.0.3 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
[cobertura] WARN [main] net.sourceforge.cobertura.instrument.CoberturaInstrumenter - Unable to instrument file /var/lib/jenkins/workspace/BranchBuilder/implementations/provider-impl/target/generated-classes/cobertura/com/foo/impl/internal/ServiceProviderImpl$JoinRunner.class
java.lang.IllegalArgumentException
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at org.objectweb.asm.ClassReader.<init>(Unknown Source)
at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.instrumentClass(CoberturaInstrumenter.java:147)
at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.instrumentClass(CoberturaInstrumenter.java:121)
at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.addInstrumentationToSingleClass(CoberturaInstrumenter.java:234)
at net.sourceforge.cobertura.instrument.Main.addInstrumentationToSingleClass(Main.java:298)
at net.sourceforge.cobertura.instrument.Main.addInstrumentation(Main.java:307)
at net.sourceforge.cobertura.instrument.Main.parseArguments(Main.java:399)
Run Code Online (Sandbox Code Playgroud)
我知道ASM和java 8存在问题所以我怀疑问题是maven-plugin还没有更新为使用兼容java-8的ASM版本
有没有人设法使用java 8的cobertura-maven-plugin?
我正在阅读关于字符串重复数据删除的Java 8更新20中的功能(更多信息),但我不确定这是否基本上String.intern()
已经过时了.
我知道这个JVM功能需要G1垃圾收集器,这对许多人来说可能不是一个选项,但假设一个人正在使用G1GC,那么JVM自动重复数据删除与手动拥有intern
你的字符串有什么区别/优势/劣势(一个明显的优点是不必通过调用来污染您的代码intern()
)?
考虑到Oracle可能使G1GC成为java 9中的默认GC,这一点尤为有趣
如果我VOLUME
在docker文件中使用它,它会创建一个匿名卷.有没有办法从dockerfile创建命名卷?
我正在寻找相当于Dockerfile的
docker run -v my-named-volume:/mnt/something repo/my-img
Run Code Online (Sandbox Code Playgroud)
我通过Dockerfile设法获得的相当于
docker run -v /mnt/something repo/my-img
Run Code Online (Sandbox Code Playgroud)
我认为它不受支持; 然而,医生说这个
VOLUME指令创建具有指定名称的安装点,并将其标记为从本机主机或其他容器保存外部安装的卷.
这似乎意味着有一种方法可以命名音量,但它没有说明如何
经过Atlassian 决定停止使用Eclipse Connector for Jira之后,我觉得在Eclipse Neon中没有办法使用Mylyn与Jira集成.只有我吗?有没有解决方法?
我尝试安装Tasktop Dev Pro,但它没有抱怨在更新站点中找不到jar.此外,它似乎不是一个合适的解决方案,因为它带来了比我们需要的更多
java ×6
maven ×2
cobertura ×1
docker ×1
dockerfile ×1
eclipse ×1
eclipse-neon ×1
git ×1
jar ×1
java-8 ×1
java-stream ×1
jenkins ×1
jira ×1
jvm-hotspot ×1
mocking ×1
mockito ×1
mylyn ×1
string ×1
unit-testing ×1