小编san*_*ity的帖子

如何有效地计算二项式累积分布函数?

让我们说我知道"成功"的概率是P.我进行了N次测试,我看到了S的成功.测试类似于抛掷不均匀加权的硬币(也许头部是成功的,尾部是失败的).

我想知道看到S成功的大概概率,或者比S成功的可能性要小得多.

因此,例如,如果P为0.3,N为100,并且我获得20次成功,我正在寻找获得20次或更少次成功的概率.

如果,另一方面没有,P是0.3,N是100,我获得40次成功,我正在寻找获得40次成功的可能性.

我知道这个问题与找到二项式曲线下的区域有关,但是:

  1. 我的数学不能完成将这些知识转化为有效代码的任务
  2. 虽然我理解二项式曲线会给出精确的结果,但我得到的印象是它本身效率低下.计算近似结果的快速方法就足够了.

我应该强调这个计算必须很快,理想情况下应该可以通过标准的64或128位浮点计算来确定.

我正在寻找一个带P,S和N的函数,并返回一个概率.由于我比代码更熟悉数学符号,我更喜欢任何答案都使用伪代码或代码.

algorithm math probability binomial-cdf

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

配置Jetty以获得高请求量

在我们的应用程序中,我们需要处理超过每秒5,000个请求的请求量.我们被告知,Jetty在我们的应用程序类型中是可行的(我们必须将JSON-HTTP API暴露给远程系统,然后远程系统将启动入站请求和连接到我们).

我们收到数千个入站HTTP连接,每个连接都是持久的,持续时间大约为30秒.然后,远程服务器会立即向我们发出请求,因为我们可以在每个连接上对它们做出响应.30秒后,连接关闭,另一个打开.我们必须在不到100毫秒(包括网络传输时间)内做出响应.

我们的服务器在EC2中运行,内存为8GB,其中4GB分配给我们的Java VM(过去的研究表明,不应该将超过一半的可用RAM分配给JVM).

以下是我们目前如何根据我们在网上阅读的各种提示初始化Jetty:

Server server = new Server();
SelectChannelConnector connector = new SelectChannelConnector();
connector.setPort(config.listenPort);
connector.setThreadPool(new QueuedThreadPool(5120));
connector.setMaxIdleTime(600000);
connector.setRequestBufferSize(10000);
server.setConnectors(new Connector[] { connector });
server.setHandler(this);
server.start();
Run Code Online (Sandbox Code Playgroud)

请注意,我们最初在我们的线程池中只有512个线程,我们尝试增加到5120,但这没有明显的帮助.

我们发现,通过这种设置,我们很难处理每秒超过300个请求.我们不认为问题是我们的处理程序,因为它只是做一些快速计算,以及Gson序列化/反序列化.

当我们在尝试处理此负载时手动执行我们自己的HTTP请求时,我们发现它可能需要几秒钟才能开始响应.

我们使用的是Jetty版本7.0.0.pre5.

任何建议,无论是解决方案,还是隔离瓶颈的技术,都将受到赞赏.

java performance http jetty

17
推荐指数
1
解决办法
4万
查看次数

需要一个分布式键值查找系统

我需要一种方法来跨越(可能)数百GB的数据进行键值查找.理想情况下基于分布式散列表的东西,与Java很好地协作.它应该是容错的,并且是开源的.

商店应该是持久的,但理想情况下会将数据缓存在内存中以加快速度.

它应该能够支持来自多台机器的并发读写(尽管读取将是100倍).基本上,目的是快速初始查找Web服务的用户元数据.

谁能推荐任何东西?

java database bigtable key-value-store distributed-database

16
推荐指数
2
解决办法
5533
查看次数

偶尔经历长时间的垃圾收集延迟,为什么?

我很难处理Java垃圾收集问题,并解释日志.

我的应用程序要求GC不需要超过2秒,理想情况下小于100毫秒.

根据以前的一些建议,我正在尝试以下命令行选项:

 java -XX:MaxGCPauseMillis=100 -XX:NewRatio=9 -XX:+UseConcMarkSweepGC  -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -server -Xmx9g -Xms9g 
Run Code Online (Sandbox Code Playgroud)

该应用程序具有大量长期存储的对象,这些对象保存在ConcurrentLinkedHashMap中.我偶尔会看到长时间停顿,最糟糕的情况是长达10秒(这是下面的GC日志中的第二个)!

以下是我得到的一些输出:

16938.968: [GC 16938.968: [ParNew: 153343K->17022K(153344K), 7.8608580 secs] 6184328K->6122510K(9420160K) icms_dc=7 , 7.8614100 secs] [Times: user=0.63 sys=0.01, real=7.86 secs] 
16947.087: [GC 16947.087: [ParNew: 153342K->17022K(153344K), 7.2604030 secs] 6258830K->6198642K(9420160K) icms_dc=7 , 7.2609780 secs] [Times: user=0.44 sys=0.00, real=7.27 secs] 
16954.614: [GC 16954.614: [ParNew: 153342K->17024K(153344K), 8.4307620 secs] 6334962K->6274625K(9420160K) icms_dc=7 , 8.4313150 secs] [Times: user=0.62 sys=0.01, real=8.43 secs] 
16963.310: [GC 16963.310: [ParNew: 153344K->17023K(153344K), 6.2588760 secs] 6410945K->6350748K(9420160K) icms_dc=7 , 6.2594290 secs] [Times: user=0.48 …
Run Code Online (Sandbox Code Playgroud)

java garbage-collection

16
推荐指数
2
解决办法
6854
查看次数

如何在Java应用程序中嵌入Scala 2.8解释器?

我希望能够以交互方式在我的Java应用程序中操作内存中的对象以进行调试.我非常希望使用Scala的2.8解释器,利用tab-completion等功能.我该怎么做呢?

scala

16
推荐指数
1
解决办法
3924
查看次数

使用RSA可以加密的数据量有多少限制?

通常,建议使用RSA加密对称密钥,然后将其用于加密"有效负载".

对于可以使用RSA加密的数据量的实际(或理论)限制是什么(我使用的是2048位RSA密钥大小).

特别是,我想知道使用(不同的)RSA公钥加密RSA公钥(256字节)是否安全?我正在使用Java中的Bouncy Castle加密库.

java encryption cryptography

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

Java日志框架中有哪些最新选项?

定期询问这个问题,但我一直觉得现有的Java日志框架过于复杂和过度设计,我想看看有什么新东西.

我对当前项目有一个更为关键的问题,因为我们将JSON标准化为人类可读的数据编码,而且我见过的大多数日志框架都需要XML.我宁愿避免在95%的应用程序配置中使用JSON,而仅仅因为日志框架而使用XML(事实上,我不喜欢用于除文本标记以外的任何其他用途的XML).

是否有任何热门的新Java日志框架,这些框架都是主动维护的,功能相当强大,有maven仓库,可以在不重新启动应用程序的情况下重新配置,并且不会将您绑定到XML?

java logging frameworks

15
推荐指数
1
解决办法
1万
查看次数

如何在Play Framework中存储cookie?

我想在Play Framework中存储一个比当前会话更长的身份验证令牌,可能持续数天甚至数周 - 这样用户就不必每次都登录.

建议的方法是什么?

java cookies playframework

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

Java VM是否在内存中移动对象,如果是这样 - 如何?

Java虚拟机是否曾在内存中移动对象,如果是,它如何处理更新对移动对象的引用?

我问,因为我正在探索以分布式方式存储对象的想法(即跨越多个服务器),但出于效率原因,我需要能够在服务器之间移动对象.对象需要能够包含指向彼此的指针,甚至包含远程服务器上的对象.我正在尝试考虑更新对移动对象的引用的最佳方法.

到目前为止我的两个想法是:

  1. 在对象的生命周期内不会移动的某处保持引用间接,如果对象移动,我们会更新该间接.但是 - 这些间接是如何管理的?
  2. 保留每个对象的反向引用列表,以便我们知道在移动对象时必须更新的内容.当然,这会产生性能开销.

我对这些方法的反馈以及对替代方法的任何建议感兴趣.

java garbage-collection jvm memory-management

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

哪些编程语言拥有最容易实现的解释器?

我需要为编程语言实现一个解释器,作为我正在进行的项目的一部分.我不认为这个项目的细节太相关,除了它要求我从头开始实现一个解释器,我不能使用现有的编程语言(要求包括支持便携式分隔连续,并能够编写一个在Javascript和Java中解释它.

显然我宁愿避免发明一种全新的编程语言,所以我希望有一些非常简单的语言可以复制,或者至少从中汲取灵感.

我的第一个想法是Forth或一种基本的类似Lisp的语言,但是我更喜欢这种语言的语法更接近更流行的编程语言,如Java,Python或Ruby.特别是,这意味着支持中缀运算符(a + b),以及a = b变量赋值.

换句话说,我希望这种语言对于今天用PHP编程的人来说感觉相当熟悉,我不相信Forth或Lisp都符合这个标准.

任何人都可以为这种语言提供任何建议吗?

lisp programming-languages language-design forth

14
推荐指数
4
解决办法
1276
查看次数