让我们说我知道"成功"的概率是P.我进行了N次测试,我看到了S的成功.测试类似于抛掷不均匀加权的硬币(也许头部是成功的,尾部是失败的).
我想知道看到S成功的大概概率,或者比S成功的可能性要小得多.
因此,例如,如果P为0.3,N为100,并且我获得20次成功,我正在寻找获得20次或更少次成功的概率.
如果,另一方面没有,P是0.3,N是100,我获得40次成功,我正在寻找获得40次成功的可能性.
我知道这个问题与找到二项式曲线下的区域有关,但是:
我应该强调这个计算必须很快,理想情况下应该可以通过标准的64或128位浮点计算来确定.
我正在寻找一个带P,S和N的函数,并返回一个概率.由于我比代码更熟悉数学符号,我更喜欢任何答案都使用伪代码或代码.
在我们的应用程序中,我们需要处理超过每秒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.
任何建议,无论是解决方案,还是隔离瓶颈的技术,都将受到赞赏.
我需要一种方法来跨越(可能)数百GB的数据进行键值查找.理想情况下基于分布式散列表的东西,与Java很好地协作.它应该是容错的,并且是开源的.
商店应该是持久的,但理想情况下会将数据缓存在内存中以加快速度.
它应该能够支持来自多台机器的并发读写(尽管读取将是100倍).基本上,目的是快速初始查找Web服务的用户元数据.
谁能推荐任何东西?
我很难处理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应用程序中操作内存中的对象以进行调试.我非常希望使用Scala的2.8解释器,利用tab-completion等功能.我该怎么做呢?
通常,建议使用RSA加密对称密钥,然后将其用于加密"有效负载".
对于可以使用RSA加密的数据量的实际(或理论)限制是什么(我使用的是2048位RSA密钥大小).
特别是,我想知道使用(不同的)RSA公钥加密RSA公钥(256字节)是否安全?我正在使用Java中的Bouncy Castle加密库.
定期询问这个问题,但我一直觉得现有的Java日志框架过于复杂和过度设计,我想看看有什么新东西.
我对当前项目有一个更为关键的问题,因为我们将JSON标准化为人类可读的数据编码,而且我见过的大多数日志框架都需要XML.我宁愿避免在95%的应用程序配置中使用JSON,而仅仅因为日志框架而使用XML(事实上,我不喜欢用于除文本标记以外的任何其他用途的XML).
是否有任何热门的新Java日志框架,这些框架都是主动维护的,功能相当强大,有maven仓库,可以在不重新启动应用程序的情况下重新配置,并且不会将您绑定到XML?
我想在Play Framework中存储一个比当前会话更长的身份验证令牌,可能持续数天甚至数周 - 这样用户就不必每次都登录.
建议的方法是什么?
Java虚拟机是否曾在内存中移动对象,如果是,它如何处理更新对移动对象的引用?
我问,因为我正在探索以分布式方式存储对象的想法(即跨越多个服务器),但出于效率原因,我需要能够在服务器之间移动对象.对象需要能够包含指向彼此的指针,甚至包含远程服务器上的对象.我正在尝试考虑更新对移动对象的引用的最佳方法.
到目前为止我的两个想法是:
我对这些方法的反馈以及对替代方法的任何建议感兴趣.
我需要为编程语言实现一个解释器,作为我正在进行的项目的一部分.我不认为这个项目的细节太相关,除了它要求我从头开始实现一个解释器,我不能使用现有的编程语言(要求包括支持便携式分隔连续,并能够编写一个在Javascript和Java中解释它.
显然我宁愿避免发明一种全新的编程语言,所以我希望有一些非常简单的语言可以复制,或者至少从中汲取灵感.
我的第一个想法是Forth或一种基本的类似Lisp的语言,但是我更喜欢这种语言的语法更接近更流行的编程语言,如Java,Python或Ruby.特别是,这意味着支持中缀运算符(a + b),以及a = b变量赋值.
换句话说,我希望这种语言对于今天用PHP编程的人来说感觉相当熟悉,我不相信Forth或Lisp都符合这个标准.
任何人都可以为这种语言提供任何建议吗?
java ×7
algorithm ×1
bigtable ×1
binomial-cdf ×1
cookies ×1
cryptography ×1
database ×1
encryption ×1
forth ×1
frameworks ×1
http ×1
jetty ×1
jvm ×1
lisp ×1
logging ×1
math ×1
performance ×1
probability ×1
scala ×1