小编Jos*_*ess的帖子

移动源代码文件的SVN合并

我觉得我拥有SVN世界上最简单的用例:

  • 我有一个文件,Test.javatrunkSVN的.
  • 我分支trunkdev-branch.
  • Test.java进入了com/mycompany文件夹trunk.
  • 我改变Test.javadev-branch.
  • 我合并dev-branchtrunk.
  • 树冲突结果.

为什么,为什么,SVN不能处理这个?我们做错了吗?这感觉应该很容易,但我公司的每个工程师都受到了阻碍.

在这里寻找面向SVN的答案(不是'移动到git'等).

svn merge

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

使用接口调用的Java方法重载

我确信这是基本的,但我很难过.这个例子非常过于简化,但归结为以下几点.我在类中有一些重载方法,如下所示:

public void build(MyImplOneOfAnInterface item);
public void build(MyImplTwoOfAnInterface item);
Run Code Online (Sandbox Code Playgroud)

然后,我有另一种方法,执行以下操作:

public void buildIt(MyInterface item) {
     build(item);
}
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时,我收到以下错误:

找不到标志

这是因为JVM无法在编译时确定接口的实现,因此它知道要调用哪个重载方法.

如何在运行时决定?似乎JVM应该能够解决这个问题.

PS:我不想定义一个以接口作为参数的方法,然后使用instanceof运算符执行一堆if/else语句.

java overloading interface

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

传递 Infinispan 远程异常会产生过多的网络流量

当我们的 Infinispan 集群(版本 9.4.8.Final)发生异常时,发生异常的节点会将此信息发送到集群中的其他节点。这似乎是设计使然。

此活动可能会导致大量流量,从而导致超时异常,进而使节点希望将其超时异常传达给其他节点。在生产中,我们的 3 节点 Infinispan 集群完全饱和了 20 Gb/s 的链路。

例如,在 2 节点 QA 集群中,我们观察到以下情况:

节点 1:

ISPN000476: Timed out waiting for responses for request 7861 from node2

节点 2:

ISPN000217: Received exception from node1, see cause for remote stack trace

在节点 2 上打印的堆栈跟踪的进一步下方,我们看到:

Timed out waiting for responses for request 7861 from node2

其中有很多。我们在此期间进行了数据包捕获,可以看到有 50 KB 数据包包含远程错误列表及其整个 Java 堆栈跟踪。

当这种情况发生时,这是一场“完美风暴”。每次超时都会产生一个通过网络发送的错误。这会增加拥塞和超时。从那里事情恶化得非常快。

我知道我需要解决超时问题 - 寻找 GC 收集暂停等,并可能考虑增加超时。但是,我想知道在发生这些事件时是否有办法阻止这种行为的发生。仔细想想,节点 1 与节点 2 对话超时,然后通过网络向节点 2 发送错误副本,告诉它“我与你对话超时”似乎很奇怪。

有没有办法避免这些远程堆栈跟踪的传输?非常感谢您提供任何见解或建议。

编辑

示例堆栈跟踪:

2019-12-06 …
Run Code Online (Sandbox Code Playgroud)

infinispan keycloak

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

Java守护程序线程是否与产生进程共享堆或Perm Gen?

如果我从我的程序(非守护程序进程)创建一个守护程序线程,堆和perm gen内存空间是否与新线程共享或是否重新分配?

如果守护程序线程有自己的空间,那么在新线程的创建中是否遵守了最大堆大小等JVM内存调整算法?

java heap multithreading daemon permgen

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