代码改变世界

Nodejs开发环境搭建

2012-03-17 02:37 by BlueDream, 23847 阅读, 0 推荐, 收藏, 编辑
摘要:由于还是习惯win7环境。所以搭建的环境是:win7为开发环境。Vbox虚拟机+Ubuntu搭建nodejs编译环境。然后通过securecrt远程连接到虚拟机进行开发。如果securecrt远程链接被拒绝需要sudo apt-get install openssh-server第一步:安装依赖包1. 安装python 2.6版或者更高(ubuntu默认都已安装,可以在terminal中使用 python -v 命令查看python版本)。2. 安装其他依赖包:sudo apt-get install g++ curl libssl-dev apache2-utils3. 安装git工具:su 阅读全文

Underscore骨骼

2011-07-02 15:49 by BlueDream, 2398 阅读, 4 推荐, 收藏, 编辑
摘要:上次写过一篇QWrap骨骼的文章,个人认为,想要了解一个库或框架,首先从他的核心思想入手,理解其思想,那么剩余的就仅仅是方法的堆砌。近年比较火的一个jsMVC框架backbone他的核心强依赖库为underscore。抽空提取了一下他的骨骼,其实主要就是他的链式操作的实现,别个剩下的就是具体函数的实现了,当然对于Underscore函数式也是它的最大亮点,可以好好看下函数的实现。<!DOCTYPEhtml><html><head><title>Underscore骨骼</title></head><body>& 阅读全文

【思维】中位数与顺序统计

2011-04-28 00:08 by BlueDream, 1630 阅读, 0 推荐, 收藏, 编辑
摘要:算法定义在统计学中,中值(又称中位数)代表一个样本、种群或概率分布中的一个数值,其可将数值集合划分为相等的上下两部分。对于有限的数集,可以通过把所有观察值高低排序后找出正中间的一个作为中值。如果观察值有偶数个,则中值不唯一,通常取最中间的两个数值的平均数作为中值。一个数集中最多有一半的数值小于中值,也最多有一半的数值大于中值。如果大于和小于中值的数值个数均少于一半,那麽数集中必有若干值等同于中值。设连续随机变量X的分布函数为F(X),那么满足条件P(X≤m)=F(m)=1/2的数称为X或分布F的中位数。对于一组有限个数的数据来说,它们的中位数是这样的一种数:这群数据里的一半的数据比它大,而另外 阅读全文

【思维】基数排序

2011-04-17 23:35 by BlueDream, 1824 阅读, 0 推荐, 收藏, 编辑
摘要:算法定义基数排序(Radix sort)是一种排序算法,它是这样实现的:将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零. 然后, 从最低位开始, 依次进行一次排序.这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列.基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。算法描述基数排序的简单描述就是将数字拆分为个位十位百位,每个位依次排序。因为这对算法稳定要求高。所以我们对数位排序用到上一个排序方 阅读全文

【思维】计数排序

2011-04-14 23:10 by BlueDream, 1390 阅读, 0 推荐, 收藏, 编辑
摘要:算法定义计数排序(Counting sort)是一种稳定的排序算法。计数排序使用一个额外的数组C,其中第i个元素是待排序数组A中值等于i的元素的个数。然后根据数组C来将A中的元素排到正确的位置。当输入的元素是 n 个 0 到 k 之间的整数时,它的运行时间是 Θ(n+k)。计数排序不是比较排序,排序的速度快于任何比较排序算法。由于用来计数的数组C的长度取决于待排序数组中数据的范围(等于待排序数组的最大值与最小值的差加上1),这使得计数排序对于数据范围很大的数组,需要大量时间和内存。例如:计数排序是用来排序0到100之间的数字的最好的算法,但是它不适合按字母顺序排序人名。但是,计数排序可以用在基 阅读全文

【思维】快速排序

2011-04-14 00:34 by BlueDream, 1171 阅读, 0 推荐, 收藏, 编辑
摘要:算法定义快速排序是一种排序算法,由C. A. R. Hoare所发展的,以平均效能来说,排序n个项目要Θ(nlogn)次比较。然而,在最坏的效能下,它需要Θ(n2)次比较。一般来说,快速排序实际上明显地比其他Θ(nlogn) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。算法描述快速排序使用分治法(Divide and conquer)策略来把一个串行(list)分为两个子串行(sub-lists)。步骤为: 从数列中挑出一个元素,称为 "基准"(pi 阅读全文

【思维】堆排序

2011-04-13 01:35 by BlueDream, 1162 阅读, 0 推荐, 收藏, 编辑
摘要:算法定义堆排序(Heapsort)是指利用(堆)这种数据结构所设计的一种排序算法。堆积树是一个近似完全二叉树的结构,并同时满足堆属性:即子结点的键值或索引总是小于(或者大于)它的父节点。 最差时间复杂度 O(nlogn) 最优时间复杂度 O(nlogn) 平均时间复杂度 Θ(nlogn) 算法描述在堆积树的数据结构中,堆积树中的最大值总是位于根节点。堆积树中定义以下几种操作: 最大堆积调整(Max_Heapify):将堆积树的末端子结点作调整,使得子结点永远小于父结点 创建最大堆积(Build_Max_Heap):将堆积树所有数据重新排序 堆积排序(HeapSort):移除位在第一个数据的根结 阅读全文

【思维】插入排序

2011-04-09 12:23 by BlueDream, 1163 阅读, 0 推荐, 收藏, 编辑
摘要:算法定义插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。算法描述一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下:从第一个元素开始,该元素可以认为已经被排序取出下一个元素,在已经排序的元素序列中从后向前扫描如果该元素(已排序)大于新元素,将该元素移到下一位置重复步骤3,直到找到已排序 阅读全文

关于设计启发

2011-03-12 23:29 by BlueDream, 1004 阅读, 0 推荐, 收藏, 编辑
摘要:下面是对主要的设计中的启发式方法的总结:寻找现实世界中的对象(object,物体)形成一致的抽象封装实现细节在可能的情况下继承藏住秘密(信息隐藏)找出容易改变的区域保持松散耦合探寻通用的设计模式高内聚性构造分层结构严格描述类契约分配职责为测试而设计避免失误有意识的选择绑定时间创建中央控制点考虑使用蛮力画一个图保持设计模块化 阅读全文

如何向妻子解释OOD【转】

2011-01-25 23:46 by BlueDream, 1885 阅读, 1 推荐, 收藏, 编辑
摘要:译者原文地址:http://www.cnblogs.com/niyw/archive/2011/01/25/1940603.html如何向妻子解释OOD前言  此文译自CodeProject上How I explained OOD to my wife一文,该文章在Top Articles上排名第3,读了之后觉得非常好,就翻译出来,供不想读英文的同学参考学习。  作者(Shubho)的妻子(Farhana)打算重新做一名软件工程师(她本来是,后来因为他们孩子出生放弃了),于是作者就试图根据自己在软件开发设计方面的经验帮助她学习面向对象设计(OOD)。  自作者从事软件开发开始,作者常常注意 阅读全文