我试图理解回调是如何工作的,所以我创建了一个函数并传递了一个名为'callback'的第二个参数,我在函数的末尾用'callback(arr)'调用它.但是我收到的错误是:"回调不是函数"?你能告诉我我做错了什么吗?
UPDATE
vo是一个nodejs库,它接受一个生成器函数*()并运行它的所有产量.它基本上是一种处理异步代码并减少回调的方法(是的,我知道我也使用了回调,但这几乎是一个选择).一个更受欢迎的图书馆做同样的事情是co.链接到vo:https://github.com/matthewmueller/vo
var Nightmare = require('nightmare');
var vo = require('vo');
function* MyFunction(query, callback) {
arr = [];
for (i = 0; i < 1; i++) {
arr.push(yield Nightmare({
show: true
}).goto(`http://google.com`)
.inject('js', 'jquery-3.1.0.js')
.evaluate(() => {
var title;
title = 1
extend = 2
var img;
img = 3
var par;
par = 4
url = window.location.href;
var par_arr = [5, 5, 5, 5];
return {
title: title,
img: img,
par: par,
par_arr: par_arr,
url: url …Run Code Online (Sandbox Code Playgroud) 我有一个随机字符串的50gb txt文件,其中我想计算该文件中子字符串的出现次数..很多次,对于不同的非预定义随机子字符串.
我想知道是否有另一种方法可以解决这个问题.
概率方式
类似于布隆过滤器,但我们可以进行概率计数,而不是概率成员检查.该数据结构将用于计数估计.
其他统计方法(?)
我可以使用任何虚拟方法来估计文本文件中字符串的出现次数?对替代品开放.
如果可以在<=对数时间内完成,那将是很好的,因为我将多次执行相同的任务.
更新1
两个集合都包含最大长度为20的字符串,只能从'abcdefghijklmnopqrstuvwxyz'获取值
更新2
我通过使用名为ujson的库(类似于simplejson)从磁盘读取2个文件然后将返回的列表转换为集合来构建集合.
我试图区分2组,每组包含1亿个元素.
此代码在2分钟内执行:
temp = set() #O(1)
for i in first_100_million_set: #O(N)
temp.add(i) #O(1)
Run Code Online (Sandbox Code Playgroud)
此代码在6小时内执行:
temp = set() #O(1)
for i in first_100_million_set: #O(N)
if i in second_100_million_set: #O(1)
temp.add(i) #O(1)
Run Code Online (Sandbox Code Playgroud)
我所做的就是添加会员资格检查,如果我没有弄错,可以在O(1)中完成吗?这种大规模减少来自哪里?
我知道set(a) - set(b),它实际上正在完成我的第二个代码块正在做的事情,也需要6个小时来完成,我只是想编写整个过程来证明我的困惑点.
您是否认为我正在努力做出更好的解决方案?