02 2012 档案
摘要:这些天项目改版,时间比较紧,博客也就没跟得上,还望大家见谅。 好,今天分享下mongodb中关于索引的基本操作,我们日常做开发都避免不了要对程序进行性能优化,而程序的操作无非就是CURD,通常我们又会花费50%的时间在R上面,因为Read操作对用户来说是非常敏感的,处理不好就会被人唾弃,呵呵。 从算法上来说有5种经典的查找,具体的可以参见我的算法速成系列,这其中就包括我们今天所说的“索引查找”,如果大家对sqlserver比较了解的话,相信索引查找能给我们带来什么样的性能提升吧。 我们首先插入10w数据,上图说话:一:性能分析函数(explain)好了,数据已经插入成功,既然我们要做分...
阅读全文
摘要:今天跟大家分享一下mongodb中比较好玩的知识,主要包括:聚合,游标。一: 聚合 常见的聚合操作跟sql server一样,有:count,distinct,group,mapReduce。<1> count count是最简单,最容易,也是最常用的聚合工具,它的使用跟我们C#里面的count使用简直一模一样。<2> distinct 这个操作相信大家也是非常熟悉的,指定了谁,谁就不能重复,直接上图。<3> group 在mongodb里面做group操作有点小复杂,不过大家对sql server里面的group比较熟悉的话还是一眼能看的明白的,其实gro
阅读全文
摘要:看过上一篇,相信大家都会知道如何开启mongodb了,这篇就细说下其中的增删查改,首先当我们用上一篇同样的方式打开mongodb,突然傻眼了,擦,竟然开启不了,仔细观察“划线区域“的信息,发现db文件夹下有一个类似的”lock file”阻止了mongodb的开启,接下来我们要做的就是干掉它,之后,开启成功,关于mongodb的管理方式将在后续文章分享。一: Insert操作 上一篇也说过,文档是采用“K-V”格式存储的,如果大家对JSON比较熟悉的话,我相信学mongodb是手到擒来,我们知道JSON里面Value可能是“字符串”,可能是“数组”,又有可能是内嵌的一个JSON对象,相...
阅读全文
摘要:关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中“集合” 就是对应关系数据库中的“表”,“文档”对应“行”。 一: 下载 上MongoDB官网 ,我们发现有32bit和64bit,这个就要看你系统了,不过这里有两点注意: ①:根据
阅读全文
摘要:今天写最后一篇来结束这个系列,我们知道很多算法解决问题的步骤都是固定的,而概率算法每一步的选择都是随机的,当在某些领域问题中通常比最优选择省时,所以就大大提高了算法的效率,降低了复杂度。一:思想 这里主要讲一下“数值概率算法”,该算法常用于解决数值计算问题,并且往往只能求得问题的近似解,同一个问题同样的概率算法求解两次可能得到的结果大不一样,不过没关系,这种“近似解”会随时间的增加而越接近问题的解。二:特征 现实生活中,有很多问题我们其实都得不到正确答案,只能得到近似解,比如“抛硬币”求出正面向上的概率,”抛骰子“出现1点的概率,再如:求“无理数π”的值,计算"“定积分”等等。针..
阅读全文
摘要:今天跟大家分享下算法思想中比较难的一种"动态规划",动态规划给人像是作战时常用的“迂回战术”,或者说是游击战,在运动中寻找突破口。一: 思想 首先要了解”动态规划“,必须先知道什么叫做”多阶段决策“,百科里面对这个问题解释的很全,我就load一段出来,大家得要好好品味,好好分析。上面图中最后一句话就定义了动态规划是要干什么的问题。二:使用规则 现在我们知道动态规划要解决啥问题了,那么什么情况下我们该使用动态规划呢? ① 最优化原理(最优子结构性质): 如果一个问题的最优策略它的子问题的策略也是最优的,则称该问题具有“最优子结构性质”。 ② 无后效性: 当一个问题被划分为多.
阅读全文
摘要:记得广告中经常听到过,抱着试试看的态度买了3个疗程,效果不错........ 也经常听人说过什么车到山前必有路,船到桥头自然直。哈哈,这种思想就是回溯思想,也可称为试探思想。一: 思想 有时我们要得到问题的解,先从其中某一种情况进行试探,在试探过程中,一旦发现原来的选择是错误的,那么就退回一步重新选择, 然后继续向前试探,反复这样的过程直到求出问题的解。二:场景 回溯思想是一个非常重要的思想,应用场景也是非常广泛。 ① “下棋”: 每一次走棋的位置都要考虑到是否是损人利己,如果是害人害己的走法就要回撤,找下一步损人利己的走法。 ② “迷宫”: 这种问题用试探法来...
阅读全文
摘要:由于最近工作比较忙,好长时间都没有更新博客了,今天就分享下分治思想。一: 思想 有时候我们处理一个复杂的问题,可能此问题求解步骤非常杂,也可能是数据非常多,导致我们当时很难求出或者无法求出,古语有云:步步为营,各个击破,这个思想在算法中称为分治思想,就是我们可以将该问题分解成若干个子问题,然后我们逐一解决子问题,最后将子问题的答案组合成整个问题的答案。二: 条件 当然各个思想都有它的使用领域,所以玩这场分治游戏就要遵守它的游戏规则。 ① 求解问题确实能够分解成若干个规模较小的子问题,并且这些子问题最后能够实现接近或者是O(1)时间求解。 ② 各个子问题之间不能有依赖关系,并...
阅读全文