看java的hashmap实现,无法理解一些行背后的原因.在下面从这里复制的代码中,在365-367行中,我无法理解他们为什么先将e.key赋值给k然后将==与key [(k = e.key)== key进行比较].为什么不直接做(e.key == key).此模式在代码中出现多次.
359
360 final Entry<K,V> getEntry(Object key) {
361 int hash = (key == null) ? 0 : hash(key.hashCode());
362 for (Entry<K,V> e = table[indexFor(hash, table.length)];
363 e != null;
364 e = e.next) {
365 Object k;
366 if (e.hash == hash &&
367 ((k = e.key) == key || (key != null && key.equals(k))))
368 return e;
369 }
370 return null;
371 }
Run Code Online (Sandbox Code Playgroud) 我正在测试OpenJDK Panama Vector API jdk.incubator.vector 并在亚马逊 c5.4xlarge 实例上进行了测试。但在每种情况下,简单展开的矢量点积都无法执行 Vector API 代码。
我的问题是:为什么我无法获得如Richard Startin 的博客中所示的性能提升。同样的性能提升也在这次会议meetup中被英特尔人讨论过。有什么不见了?
JMH 基准测试结果:
Benchmark (size) Mode Cnt Score Error Units
FloatVector256DotProduct.unrolled 1048576 thrpt 25 2440.726 ? 21.372 ops/s
FloatVector256DotProduct.vanilla 1048576 thrpt 25 807.721 ? 0.084 ops/s
FloatVector256DotProduct.vector 1048576 thrpt 25 909.977 ? 6.542 ops/s
FloatVector256DotProduct.vectorUnrolled 1048576 thrpt 25 887.422 ? 5.557 ops/s
FloatVector256DotProduct.vectorfma 1048576 thrpt 25 916.955 ? 4.652 ops/s
FloatVector256DotProduct.vectorfmaUnrolled 1048576 thrpt 25 877.569 ? 1.451 ops/s
JavaDocExample.simpleMultiply 1048576 thrpt …Run Code Online (Sandbox Code Playgroud) 我正在开发一个应用程序,它将在2个点之间找到方向,在谷歌地图上显示它并将其存储在服务器端,以便我可以在需要时再次渲染它以将一条路线与另一条路线进行比较.
我已成功使用谷歌地图api web服务找到路线,我也使用谷歌地图javascript v3找到路线并使用DirectionsRenderer在地图上显示它.
这两个服务都返回类似的JSON,其中包含JSON属性名称的不同(参见下面的示例1).更重要的是,JS api将lat/lng的不同属性名称从一个调用返回到另一个调用(参见下面的示例2).
所以问题是我无法使用从服务器端Web服务调用获得的JSON并直接将其传递给javascripts DirectionRenderer类来显示路由.而且,每次我在地图上显示路线时,我都要进行JS调用.这将导致不必要的配额使用.有没有更好的方法来做到这一点.我已经完成了以下问题,但我实际上无法在这里和这里得到答案
例1:
Web服务呼叫结果:
{
"routes" : [
{
"bounds" : {
"northeast" : {
"lat" : 12.9198217,
"lng" : 77.6124895
},
"southwest" : {
"lat" : 12.912811,
"lng" : 77.60924989999999
}
},
.....
Run Code Online (Sandbox Code Playgroud)
这没有"路径"属性.
Javascript V3调用结果:
{
"routes": [
{
"bounds": {
"ta": {
"d": 12.91281,
"b": 12.919820000000001
},
"ga": {
"b": 77.60925,
"d": 77.61249000000001
}
},
......
"path": [
{
"d": 12.913920000000001, …Run Code Online (Sandbox Code Playgroud) 我正在用Java编写简单的程序来创建2个10亿大小的int数组。我用-Xms10G运行了该程序,即10GB的内存仍然出现OOM错误。以下是代码段。
public class TestBigIntArraySize {
public static int arraySize = 1000_000_000;
public static int [] firstArray = new int[arraySize];
public static int [] secondArray = new int[arraySize];
public static void main(String[] args) {
System.out.println(1000_000_000 * Integer.SIZE);
}
}
Run Code Online (Sandbox Code Playgroud)
就我所能想到的,用于十亿个int数组的内存将是System.out.println(1000_000_000 * Integer.SIZE); 返回1,935,228,928,小于2GB。因此,我的程序总要求最大为4GB。
即使我在方法调用中创建数组并返回数组或静态数组(如下所示)或在main()中,也会收到错误消息。工作所需的内存是12G,是我预期的3倍。我正在使用oracle java:jdk1.8.0_201
我尝试了-Xms10G -XX:NewRatio = 1 ---可行的选项。
但是我想进一步减少内存占用。
我尝试通过给eden提供更多内存的选项,-Xms9G -XX:NewRatio=0.5但是java抱怨非法参数。
我尝试通过选项将数组直接分配给旧gen的选项-Xms9G -XX:NewRatio=1 -XX:PretenureSizeThreshold=10000。但这也给OOM。
这只是一个实验项目,我只是在操纵阵列的位置。我想用最小的内存做到这一点。有人可以建议如何去做吗?什么Java选项,为什么?
我正在使用mongodb(v2.6.7)和mongo(2.6.7)shell客户端.
我试图使用insert和update命令返回的WriteResult对象.
根据mongodocs的错误,它返回一个带有writeError子文档的writeResult对象.但我无法在shell或mongo的javascript文件中访问此子文档.
以下是我的问题的说明.
有人可以解释为什么会发生这种情况,以及正确的方法是什么.
afv:PRIMARY>writeResult=db.sysinfo.insert({_id:"myid",otherData:"otherDataValue"})
WriteResult({ "nInserted" : 1 })
afv:PRIMARY>writeResult=db.sysinfo.insert({_id:"myid",otherData:"otherDataValue"})
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: afvadmin.sysinfo.$_id_ dup key: { : \"myid\" }"
}
})
afv:PRIMARY> printjson(writeResult)
{
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "insertDocument :: caused by :: 11000 E11000 duplicate key error index: afvadmin.sysinfo.$_id_ dup … 我正在使用codemirror在网页上显示一些代码.但是当我初始化codemirror编辑器时,编辑器的高度远远超过代码中的行数.请看到这个小提琴或低于图像明白我在说什么
下面是创建codemirror编辑器的代码.
var myCodeArea = document.getElementById("codeArea");
var myCodeMirror = CodeMirror(function(elt) {
myCodeArea.parentNode.replaceChild(elt, myCodeArea);
}, {value: myCodeArea.innerHTML,
lineNumbers:true, mode:"javascript"});
Run Code Online (Sandbox Code Playgroud)
我读了codemirror doc,但无法确定哪个属性控制高度.
请在这件事上给予我帮助
java ×3
codemirror ×1
dot-product ×1
google-maps ×1
hashmap ×1
jvm ×1
mongo-shell ×1
mongodb ×1