小编Vik*_*ang的帖子

高性能并发MultiMap Java/Scala

我正在寻找一个高性能,并发的MultiMap.我到处搜索但是我找不到使用与ConcurrentHashMap相同的方法的解决方案(仅锁定哈希数组的一部分).

多图表将经常被读取,添加和删除.

multimap键将是一个String,它的值将是任意的.

我需要O(1)来查找给定键的所有值,O(N)可以删除,但O(logN)将是首选.

删除给定键的最后一个值将从键中删除值容器至关重要,以免泄漏内存.

这是我建立的解决方案,在ApacheV2下可用: 索引(多图)

java concurrency scala multimap

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

基于Java的应用程序的Discovery mechanics API

我目前参与的项目中,我们/应用程序需要能够发现具有在LAN上运行的相同应用程序名称的应用程序的其他实例(以下称为节点).

先决条件:所有节点都知道自己的IP地址和TCP端口号所有节点都有一个名称所有节点都可以访问局域网

我需要的:

所有节点都需要知道每个其他节点的IP地址和TCP端口.如果节点出现故障,我将不得不以编程方式通知此情况.如果出现新节点,我将不得不以编程方式通知此情况.它的基本原理是不需要主服务器或其他应用程序,它必须是我可以集成到当前应用程序中的API.此外,它必须是开源的,并且最好是许可的MIT或ApacheV2.

就这样!

该应用程序是基于JVM的,因此任何API都可以.我一直在看ZooKeeper,但它似乎是我们需要的小功能的一个很大的依赖.

并且,如果你不知道任何API,但是有一些很好的链接可以分享如何通过自己编写来实现这一点(白皮书,博客,书籍等等),我会非常乐意接受这样的事情.

所以问题是,我该怎么做?

java api udp tcp cluster-computing

7
推荐指数
1
解决办法
992
查看次数

Netty SslHandler头疼

我浪费了几天时间试图追踪新添加的Akka传输加密中的间歇性错误.

注意:我已经尝试在服务器和客户端中的任何一个或两个上设置setIssueHandshake(true),但它根本没有帮助.

我们的密码规范测试了来自不同套件的几个不同密码,以确保我们支持的设置实际上有效.但是,测试有时会通过10次,然后开始每次测试失败,它确实是SecureRandomly失败;-)请注意,即使在SHA1PRNG上测试也会失败,因此它显然与我们提供的其他密码无关.

创建SslHandler的代码:https://github.com/akka/akka/blob/wip-ssl-unbroken-%E2%88%9A/akka-remote/src/main/scala/akka/remote/netty/ NettySSLSupport.scala

构造管道的代码:https://github.com/akka/akka/blob/wip-ssl-unbroken-%E2%88%9A/akka-remote/src/main/scala/akka/remote/netty/ NettyRemoteSupport.scala#L66

测试:https://github.com/akka/akka/blob/wip-ssl-unbroken-%E2%88%9A/akka-remote/src/test/scala/akka/remote/Ticket1978CommunicationSpec.scala

回退配置(上面的测试没有覆盖的内容):https://github.com/akka/akka/blob/wip-ssl-unbroken-%E2%88%9A/akka-remote/src/主/资源/ reference.conf

用于测试的密钥库和信任库:https://github.com/akka/akka/tree/wip-ssl-unbroken-%E2%88%9A/akka-remote/src/test/resources

未通过测试的根异常是:

**java.security.InvalidKeyException: No installed provider supports this key: (null)**
    at javax.crypto.Cipher.a(DashoA13*..)
    at javax.crypto.Cipher.init(DashoA13*..)
    at javax.crypto.Cipher.init(DashoA13*..)
    at com.sun.net.ssl.internal.ssl.CipherBox.<init>(CipherBox.java:88)
    at com.sun.net.ssl.internal.ssl.CipherBox.newCipherBox(CipherBox.java:119)
    at com.sun.net.ssl.internal.ssl.CipherSuite$BulkCipher.newCipher(CipherSuite.java:369)
    at com.sun.net.ssl.internal.ssl.Handshaker.newReadCipher(Handshaker.java:410)
    at com.sun.net.ssl.internal.ssl.SSLEngineImpl.changeReadCiphers(SSLEngineImpl.java:550)
    at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readRecord(SSLEngineImpl.java:1051)
    at com.sun.net.ssl.internal.ssl.SSLEngineImpl.readNetRecord(SSLEngineImpl.java:845)
    at com.sun.net.ssl.internal.ssl.SSLEngineImpl.unwrap(SSLEngineImpl.java:721)
    at javax.net.ssl.SSLEngine.unwrap(SSLEngine.java:607)
    at org.jboss.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:969)
    at org.jboss.netty.handler.ssl.SslHandler.decode(SslHandler.java:670)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:333)
    at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:214)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
    at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
    at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:91)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.processSelectedKeys(AbstractNioWorker.java:373)
    at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:247)
    at …
Run Code Online (Sandbox Code Playgroud)

scala netty

6
推荐指数
1
解决办法
1414
查看次数

标签 统计

java ×2

scala ×2

api ×1

cluster-computing ×1

concurrency ×1

multimap ×1

netty ×1

tcp ×1

udp ×1