Bulletproof 20151001 - 继续前行

多次尝试,xross 异常的原因很可能是存在两条斜率很接近而又相交的线时 JavaScript 的 number 运算精度不够导致无法分辨,或者是散列函数区分度太小。散列上,我原来用的是 x * 2147483647 + y 的形式,足以区分了吧;后来直接用 toString() 之后求字符串散列值(BKDR hash),这样理论上 JavaScript 的数字精度有多高散列就能做到多好。但是还是失败了……

感觉被朴素的二重循环方法狠狠地嘲笑了一把。


开始嵌入 libtess。在其示例页面嵌入的脚本中有这么一段:

var startTime = window.nowish();
polyTriangles = triangulate(contours);
initArrayBuffer(polyTriangles);
var endTime = window.nowish();

很好奇 window.nowish() 是个什么东西,于是我用 Chrome 尝试了一下:

> window.nowish
function () { [native code] }

说明这是原生的代码而不是自定义的 JavaScript 函数。然而这个 API 并没有公开,谷歌了一下,即使限定了搜索词(javascript window "nowish")都找不到。相比之下,Window.performance 要更为人所知一些。


还找到了一个对 Java 的 HashSet 进行散列攻击的例子:http://keary.cn/?p=845

分享到 评论