我有一个在内部循环中经常调用的函数.它看起来像这样:
import qualified Data.Vector.Storable as SV
newtype Timedelta = Timedelta Double
cklsLogDens :: SV.Vector Double -> Timedelta -> Double -> Double -> Double
cklsLogDens p (Timedelta dt) x0 x1 = if si <= 0 then -1e50 else c - 0.5*((x1-mu)/sd)^2
where
al = p `SV.unsafeIndex` 0
be = p `SV.unsafeIndex` 1
si = p `SV.unsafeIndex` 2
xi = p `SV.unsafeIndex` 3
sdt = sqrt dt
mu = x0 + (al + be*x0)*dt
sd = si * (x0 ** xi) * …
Run Code Online (Sandbox Code Playgroud) 何时合理的时间来做第4行而不是第3行?或者它们是完全冗余的调用?
1 Object o1 = new Object();
2
3 int hcObj = o1.hashCode();
4 int hcSys = System.identityHashCode(o1);
Run Code Online (Sandbox Code Playgroud) 我想知道一个典型的while(true)
ServerSocket监听循环是否需要整个核心等待并接受客户端连接(即使实现runnable和使用Thread .start()
)
我正在实现一种分布式计算集群,每台计算机都需要它拥有的每个核心用于计算.主节点需要与这些计算机通信(调用修改算法功能的静态方法).
我需要使用套接字的原因是跨平台/跨语言功能.在某些情况下,PHP将调用这些java静态方法.
我使用了一个java profiler(YourKit),我可以看到我正在运行的ServerSocket监听线程,它永远不会睡觉而且它总是在运行.有没有更好的方法来做我想要的?或者,性能影响是否可以忽略不计?
如果你能想到一个更好的方法,请随时提供任何建议(我已尝试过RMI,但不支持跨语言.
感谢大家
在一本关于Core Java的书中,我发现了这个摘录:
想想Object类可以实现克隆的方式.它根本不了解对象,因此它只能进行逐个字段的复制.如果对象中的所有数据字段都是数字或其他基本类型,则复制字段就可以了.但是,如果对象包含对子对象的引用,则复制该字段会为您提供对子对象的另一个引用,因此原始对象和克隆对象仍然共享一些信息.
读完之后我很想知道 How is the clone method originally implemented in Object Class?
让我困扰的是:如何在一个方法Object
类的子类对象的领域克隆做出场,当它并不了解这门课吗?
java中引用变量的大小是多少?我很确定它不会依赖于架构或是吗?它与C中的指针概念有什么相似之处吗?我尝试但无法得到任何令人信服的答案.
有一个Java核心转储; 运行jmap:
/usr/java/jdk1.8.0_25/bin/jmap -dump:format=b,file=dump.hprof /usr/bin/java core.31497
Run Code Online (Sandbox Code Playgroud)
给出以下例外:
Attaching to core core.31497 from executable /usr/bin/java, please wait...
...
JVM version is 25.25-b02
...
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at sun.tools.jmap.JMap.runTool(JMap.java:201)
at sun.tools.jmap.JMap.main(JMap.java:130)
Caused by: sun.jvm.hotspot.utilities.AssertionFailure: can not get class data for sun/nio/ch/ThreadPool$$Lambda$10x00000007c0214428
at sun.jvm.hotspot.utilities.Assert.that(Assert.java:32)
at sun.jvm.hotspot.utilities.HeapHprofBinWriter.writeInstance(HeapHprofBinWriter.java:803)
...
at sun.jvm.hotspot.tools.Tool.start(Tool.java:223)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:83)
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
在我的机器上,Windows 7 - Enterprise 1 x Intel Xeon E5-1660 0 @ 3.30Ghz(激活超线程的6核/ CPU),Environment.ProcessorCount返回12,这是准确的.
在具有2 x Intel Xeon E5-2697 v3 @ 2.60GHz的Windows Server 2012上(启动了超线程的14核/ CPU(我认为因为任务管理器显示:2个插槽,28个核心,56个逻辑处理器)),Environment.ProcessorCount返回因为2x14x2 = 56,我们认为这是错误的.
为什么在Windows Server 2012 c#方法Environment.ProcessorCount没有返回正确数量的逻辑处理器?
作为附加信息,环境变量如下:NUMBER_OF_PROCESSORS = 28
更新2015-05-26:
在我的另一个问题中有更多关于此相关错误的详细信息/原因:无法在C#应用程序中为我的线程使用多个处理器组.主要是我认为C#只使用一个处理器组.有什么问题,在我们的服务器上,有2个处理器组,尽管只有56个逻辑处理器.但是这个惠普客户咨询解释了为什么我们的服务器BIOS配置导致错误的窗口.
查看这些代码,它们具有相同的注释,表明它们执行相同的操作:
/// <summary>
/// Configures the port and base path the server should listen on when
/// running behind AspNetCoreModule. The app will also be configured
/// to capture startup errors.
/// </summary>
Run Code Online (Sandbox Code Playgroud)
UseIIS
在Microsoft.AspNetCore.Server.IIS
包中,而UseIISIntegration
在中Microsoft.AspNetCore.Server.IISIntegration
。
两者有什么区别?什么时候需要使用一个与另一个?(或两者皆有?)
更新: github上有一个类似的问题,但是那里没有有用的答案:https : //github.com/aspnet/AspNetCore/issues/6197
我刚刚将clojure.core.cache 0.6.1添加到我的项目中,做了一个lein deps,遵循这里非常简短明了的例子:https://github.com/clojure/core.cache它只是扁平化不起作用.
例:
$lein repl
REPL started; server listening on localhost port 20513
user=> (require '[clojure.core.cache :as cache])
nil
user=> (def fifoc (cache/fifo-cache-factory {}))
#'user/fifoc
user=> (cache/has? fifoc :foo)
false
user=> (cache/miss fifoc :foo "bar")
{:foo "bar"}
user=> (cache/has? fifoc :foo)
false
Run Code Online (Sandbox Code Playgroud)
这里出了什么问题?我完全忽视了这一点吗?我已经尝试了其他缓存后端所有相同的结果.尝试用不同的键,不同的值,不同的命名空间,不同的别名 - nada.运行测试给我这个:
$ lein test clojure.core.cache.tests
Testing clojure.core.cache.tests
Ran 13 tests containing 273 assertions.
0 failures, 0 errors.
Run Code Online (Sandbox Code Playgroud)
这使得这更加神秘.我查看了测试,虽然他们:导入缓存后端并以java方式实例化它们(miss(BasicCache.{})...),我也尝试过,这对我来说也是以完全相同的方式失败了.
在我实施一个有效的方法之前的任何帮助?
intel core i5处理器属于哪个系列?x86_64或i686.
我正在安装MinGW.我知道它会自动选择i686.但是i686都是32位吗?而intel i5实际上是一款64位处理器.这引发了对它属于哪个家族的怀疑?
谢谢