我最近在闲暇时间学习了不同的算法,而我遇到的似乎非常有趣的算法叫做HyperLogLog算法 - 它可以估算列表中有多少独特的项目.
这对我来说特别有趣,因为它让我回到了我的MySQL时代,当我看到"基数"值时(我总是假设它直到最近计算得不是估计的).
所以我知道如何在O(n)中编写一个算法来计算数组中有多少个唯一项.我用JavaScript写了这个:
function countUniqueAlgo1(arr) {
var Table = {};
var numUnique = 0;
var numDataPoints = arr.length;
for (var j = 0; j < numDataPoints; j++) {
var val = arr[j];
if (Table[val] != null) {
continue;
}
Table[val] = 1;
numUnique++;
}
return numUnique;
}
Run Code Online (Sandbox Code Playgroud)
但问题是我的算法,而O(n),使用了大量的内存(存储值Table).
我一直在阅读这篇论文,关于如何在O(n)时间内使用最少的内存来计算列表中的重复项.
它解释了通过散列和计数比特或某事物,可以在一定概率内(假设列表均匀分布)估计列表中的唯一项目的数量.
我读过这篇论文,但我似乎无法理解它.有人能给出更多非专业人士的解释吗?我知道什么是哈希,但我不明白它们如何在这个HyperLogLog算法中使用.
可能重复:
您何时会使用不同的git合并策略?
当git合并我正在处理的文件时,我看到:
Merge made by the 'recursive' strategy
Run Code Online (Sandbox Code Playgroud)
什么是递归策略?还有哪些其他策略(如果有的话)?使用一个优于另一个会有什么好处?不同的策略有不同的表现吗?或者两种不同的策略会导致不同的合并结果?
如何在Golang中检查字符串值是否为整数?
就像是
v := "4"
if isInt(v) {
fmt.Println("We have an int, we can safely cast this with strconv")
}
Run Code Online (Sandbox Code Playgroud)
注意:我知道strconv.Atoi返回错误,但还有其他功能吗?
的问题strconv.Atoi是,它会返回7的"a7"
所以此刻(但很可能不会很久)Reddit,Meetup,Fark,LinkedIn,Yelp,4Chan都失败了.Netflix显然也出现了一段时间.
根据Reddit的推文,他们在2012年6月30日之前遇到了与闰秒有关的问题:https://twitter.com/redditstatus/status/219244389044731904
"我们在太平洋标准时间下午5点有一些与闰秒有关的Java/Cassandra问题.我们正在尽快恢复服务."
显然,影响其他网站的问题都与闰秒问题有关.
在阅读了关于闰秒的维基百科文章之后,我想我明白闰秒是什么......但是我不知道如果不考虑闰秒会发生什么样的怪异行为呢?作为程序员,我们应该如何在编码和配置服务器时为闰秒做准备?
我的意思是它只有一秒钟不是吗?
我在用
window.addEventListener("touchstart", function(ev){
console.log(ev.touches); // good
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能将其转换为jQuery?我试过了:
$(window).bind("touchstart",function(ev){
console.log(ev.touches); // says ev.touches is undefined
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我试图在Go中使用负向前瞻:
以下正则表达式: BBB(((?!BBB).)*)EEE
http://rubular.com/r/Zw1vopp1MF
但是在Go中我得到:
error parsing regexp: invalid or unsupported Perl syntax: `(?!`
Run Code Online (Sandbox Code Playgroud)
还有其他选择吗?
我正在使用java库(jar文件).该文件的作者放入了一堆System.out.print和System.out.printlns.有没有办法隐藏特定对象的这些消息?
*编辑:看起来jar文件似乎创建了一堆线程,每个线程都有自己的System.out.println ...
我有一个存储在文件中的大量JSON数组("file.json")我需要遍历数组并对每个元素执行一些操作.
err = json.Unmarshal(dat, &all_data)
Run Code Online (Sandbox Code Playgroud)
导致内存不足 - 我猜是因为它首先将所有内容加载到内存中.
有没有办法按元素流式传输JSON元素?
我想出了如何在threejs中绘制一条线,问题是我需要动态地将顶点添加到线上.当我动态地向行添加顶点时,场景不会更新.
我试过了geometry.verticesNeedUpdate = true,这似乎不起作用.
我有一个像这样的行的文件:
{"items":["blue","green"]}
{"items":["yellow","green"]}
{"items":["blue","pink"]}
Run Code Online (Sandbox Code Playgroud)
如何使用jq选择并仅显示其"items"数组中具有"blue"的JSON值?
所以输出将是:
{"items":["blue","green"]}
{"items":["blue","pink"]}
Run Code Online (Sandbox Code Playgroud)