Home

next_permutation

产生一个数列的全排列,自己想了一个实现算法,和stl里面的实现算法一样,具体的思路都在注释中。代码中还实现了一种递归的做法,参考了网上的资料,递归的做法代码简短很多,但可操作性而言,没有next方式好。因为实际应用中需要针对每个permutation作相应的操作。用递归的话需要把操作写在permutation的实现中,耦合性很高。另外,递归的方式受限于系统栈空间的大小,N只能在一定范围内处理。理论上,next的方式N可以无限大。

Just for fun.用线程池并行处理ACM多组输入加快运算速度(对于算法提高不推荐)

做一道google code jam的题目来试试看我的线程池构想,看看速度会不会快很多。 其实这题我的算法并不是最优的,所以才会导致10分钟还出不了答案,要是真在code jam上比赛的话妥妥的跪了。但就算算法不好,我如果充分利用CPU的资源,使用多线程框架,会不会出结果时间快很多呢?试试看吧! 这个纯粹是玩玩的,如果要提高算法能力的话,不建议这么搞 code jam 原题地址戳这里注:需要翻墙的哦

nodejs 源码浅析(三)——用户模块编译加载原理

继上一篇:这篇将会对C++用户模块以及js用户模块的加载流程作一个简单的分析。 3.js用户模块只要是用户自己写的js模块,都归在这一类,包括通过npm install得到的模块也属于这个部分。在_load()接口中,会首先判断要加载的模块是不是js核心模块,在这里逻辑就不走进去了,而是直接新建一个模块对象,并且把它放进缓存中,以加快下次加载的速度。

nodejs 源码浅析(二)——核心模块编译加载原理

模块加载原理nodejs中,一共有四种类型的模块,C++核心模块(内建模块),js核心模块,C++用户模块,js用户模块。这部分来分别探讨下这些模块的编译加载流程。问题:1.require、exports、module这些对象用户没有声明过,但用户还是可以直接用require(),exports,这是为什么?2.引入别的模块的流程如何? 1.js核心模块加载原理每个js模块都是一个文件,一个文件一个模块,在js代码中就是一个Module对象。至于那些整个包构成的模块,也是有一个对外的文件,如果没有指定默认是index.js作为出口文件,该文件内部又会使用require去包含其它的文件。

nodejs 源码浅析(一)——进程启动过程

项目文件结构 node项目结构比较简单,主要是两个文件夹,src和lib。其中src文件夹是node的C++源文件所在的目录,里面是进程的入口以及C++核心模块的代码。lib文件夹是js核心模块所在的目录,在编译的时候会使用v8自带的js2c.py(在tools目录下)将这些js代码编译成c代码,然后再编译进二进制可执行文件中。

Nodejs 调用 C++(addon的学习)

先来看一段略有脑洞的js代码:12345678var geek = require('GeekIt');console.log(geek);console.log(geek());console.log(geek()());console.log(geek()()());console.log(geek()()()());console.log(geek()()()()());console.log(geek()()()()()());

红黑树实现

闲来无事,自己实现一个红黑树玩玩,顺便加深一下红黑树的理解实现了红黑树的构造操作,删除节点留待日后更新贴上代码: