我在不同的分支中有两个不同的文件.如何在一个命令中区分它们?
就像是
# git diff branch1/foo.txt branch2/foo-another.txt
Run Code Online (Sandbox Code Playgroud)
我可以看看另一个文件,差异并恢复,但这是非常脏的解决方案.
当使用相同的名称定义多个Spring bean时,哪一个会隐藏其他的?
假设我@Component("bean")在包org.example中有几个带注释的类,另外还有一个applicationContext.xml,它包含:
<context:component-scan base-package="org.example"/>
<alias name="aliasedBean" alias="bean"/>
<bean id="aliasedBean" class="org.example.AliasedBean"/>
<bean id="bean" class="org.example.XmlBean"/>
<import resource="otherApplicationContext.xml"/>
Run Code Online (Sandbox Code Playgroud)
我做的时候会取回applicationContext.getBean("bean")哪个豆子?
根据Spring文档:
每个bean都有一个或多个标识符.这些标识符在托管bean的容器中必须是唯一的.
但是,我知道(因为我测试过),Spring完成后不会抱怨.一个定义将隐藏其他定义.但我无法找出规则是什么.
我想这样做是为了测试目的.我使用基于注释的配置来定义真实(生产)bean.然后我想使用特定于测试的XML配置文件来覆盖这些定义并注入模拟bean.
编辑:由于你有几个要求日志,我花了一些时间创建一些.他们是:
0 INFO org.springframework.context.support.ClassPathXmlApplicationContext - Refreshing org.springframework.context.support.ClassPathXmlApplicationContext@3934f69a: startup date [Wed Mar 06 23:04:35 CET 2013]; root of context hierarchy
45 INFO org.springframework.beans.factory.xml.XmlBeanDefinitionReader - Loading XML bean definitions from class path resource [applicationContext.xml]
223 INFO org.springframework.beans.factory.support.DefaultListableBeanFactory - Overriding bean definition for bean 'bean': replacing [Generic bean: class [org.example.AnnotatedBean]; scope=singleton; abstract=false; lazyInit=false; autowireMode=0; dependencyCheck=0; autowireCandidate=true; …Run Code Online (Sandbox Code Playgroud) 我最近被问及java 8 Optional的性能.经过一番搜索,我发现了这个问题和几篇博文,但答案相互矛盾.所以我用JMH对它进行了基准测试,我不明白我的发现.
以下是我的基准代码的要点(完整代码可在GitHub上获得):
@State(Scope.Benchmark)
public class OptionalBenchmark {
private Room room;
@Param({ "empty", "small", "large", "full" })
private String filling;
@Setup
public void setUp () {
switch (filling) {
case "empty":
room = null;
break;
case "small":
room = new Room(new Flat(new Floor(null)));
break;
case "large":
room = new Room(new Flat(new Floor(new Building(new Block(new District(null))))));
break;
case "full":
room = new Room(new Flat(new Floor(new Building(new Block(new District(new City(new Country("France"))))))));
break;
default:
throw new …Run Code Online (Sandbox Code Playgroud) 在我的 Mac 上,我无法打开 JNLP 文件。双击它们会打开一个弹出窗口,其中包含以下消息:
\n\n\n无法完成操作\xe2\x80\x99。无法找到支持 javaws 的 Java 运行时。\n请访问http://www.java.com以获取有关安装 Java 的信息。
\n
从终端:
\n$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_333.jdk/Contents/Home/\n$ /usr/bin/java -version\njava version "1.8.0_333"\nJava(TM) SE Runtime Environment (build 1.8.0_333-b02)\nJava HotSpot(TM) 64-Bit Server VM (build 25.333-b02, mixed mode)\n$ /usr/bin/javaws \nThe operation couldn\xe2\x80\x99t be completed. Unable to locate a Java Runtime that supports javaws.\nPlease visit http://www.java.com for information on installing Java.\nRun Code Online (Sandbox Code Playgroud)\n我知道 Java Web Start 在 Java 9 中已被弃用,并在 Java 11 中被删除。但这是一个 Oracle JDK 8。我相信它应该提供 Java Web Start。那么发生了什么? …
Javadoc 指出Stream.flatMap (Function <T, Stream<U>> mapper):
每个映射的流在其内容放入该流后都会关闭。
好的。但是异常处理呢?
考虑以下:
public List<Path> search (List<Path> paths) {
return paths.stream ()
.flatMap (dir -> {
try {
return Files.list (dir);
} catch (IOException e) {
throw new UncheckedIOException (e);
}
})
.filter (this::mightThrowException)
.collect (toList ());
}
Run Code Online (Sandbox Code Playgroud)
如果Files.list (Path)在第一次调用时抛出异常,则它的流永远不会首先打开,因此不需要关闭。如果它在以后的调用中抛出异常,则先前调用生成的流都已按照.flapMap ()其规范完全处理并关闭。
但是如果过滤器抛出异常会发生什么?我们正在处理文件列表流,所以我想我需要在某处关闭某些内容,但我不知道到底是什么。最初的paths.stream ()也许?然后哪个会调用派生流上的 close 方法?
注意:对于任何不熟悉Files.list (Path)静态方法的人来说,它返回一个Stream<Path>需要关闭的值(与大多数流不同)。
java ×4
exception ×1
git ×1
git-diff ×1
java-stream ×1
macos ×1
optional ×1
performance ×1
spring ×1