摘要:
数学之美——快排为什么快(转载)转载标签:杂谈目录0. 前言1. 猜数字2. 称球3. 排序3.1 为什么堆排比快排慢3.2 为什么快排其实也不是那么快3.3 基排又为什么那么快呢4. 信息论!信息论?5. 小结0.前言知道这个理论是在TopLanguage上的一次讨论,先是g9转了David MacKay的一篇文章,然后引发了牛人们的一场关于信息论的讨论。Anyway,正如g9很久以前在Blog里面所说的:有时无知是福。俺看到一点新鲜的科普也能觉得造化神奇。刚才读Gerald Jay Sussman(SICP作者)的文章,Building Robust Systems – an essay, 阅读全文
摘要:
【算法05】左旋转字符串题目:字符串的左旋转操作:把字符串前面的若干字符移到字符串的后面。例如:字符串abcdefg左旋转2位得到cdefgab。请实现左旋转字符串函数,要求对于长度为n的字符串,时间复杂度为O(n),辅助内存为O(1)。分析1:看到这道题我们最直观的思路就是:如果要把长度为n的字符串左移k位,那么我们可以动态分配长度为k的临时数组,存储前面k个字符,然后将后面的字符逐一向前移动k位,然后将临时数组中的字符拷贝到后面k位。但是这种方法使用的k个额外位置产生了过大的存储空间的消耗。分析2:我们也可以定义一个子函数,该函数的功能是将一个字符串左旋转1位(其时间正比于n),然后调用该 阅读全文
摘要:
UML建模之用例图关系Posted on 2011-11-16 22:37ShadowSpy阅读(71)评论(0)编辑收藏一.UML简介 UML(统一建模语言,Unified Modeling Language)是一种定义良好、易于表达、功能强大且普遍适用的可视化建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发的全过程。在系统分析阶段,我们一般用UML来画很多图,主要包括用例图、状态图、类图、活动 图、序列图、协作图、构建图、配置图等等,要画哪些图要根据具体情况而定。其实简单的理解,个人理解,UML的作用就是用很. 阅读全文
摘要:
高效率编辑器 VIM-操作篇,非常适合 VIM 新手2007-01-27ToyPosted inFeatured,Text Editor,TutorialsRSSTrackback虽然从很久前就开始用 VIM 了,但一直都是半调吊子,翻来覆去只用自己会的命令。最近为了提高书写代码的效率,还有 coding 时候的乐趣,又重新钻研了一下 VIM,发现了一篇很好的 VIM 入门的文章,原文是英文版的,我觉得非常适合 VIM 使用入门,所以翻译了过来。这里是简单的介绍了 VIM 的操作方式,并没有说为什么要用 VIM,如果你想知道答案可以去 Google,VIM 被誉为编辑器之神。这篇教程写了在不同 阅读全文
摘要:
【算法01】寻找丑数 题目:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数。 分析:寻找一个数是不是满足某种数(质数,水仙数)等,最简单的方法就是遍历,对于任意一个丑数必定可以写成2^m*3^n*5^p,因而对于一个丑数,只含有2,3,5因子,也就意味着该数number%2==0;number%3==0;number%5==0,如果一个数能被2整除,我们就连续除以2;能被3整除,我们就连续除以3;能被5整除,我们就连续除以5;如果最后得到1,则该数是素数.. 阅读全文
摘要:
一般函数指针和类的成员函数指针转载请注明原文网址:http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员函数的指针和一般函数的指针的表现形式不一样。1、指向一般函数的指针函数指针的声明中就包括了函数的参数类型、顺序和返回值,只能把相匹配的函数地址赋值给函数指针。为了封装同类型的函数,可以把函数指针作为通用接口函数的参数,并通过函数 阅读全文
摘要:
const限定修饰符用法总结(常量,指针,迭代器,函数参数,成员函数)2011-11-22 23:04 by AnnieKim, 933 visits,收藏,编辑在这里总结一下const限定修饰符的各种用法,都已经过vs2010测试。1) 声明及初始化const常量。在声明一个const常量时,必须对其初始化,否则会报错。1 const int constvar; //error2 const int constvar = 10; //ok但是,有一个例外的情况,就是extern进来的const常量不需要初始化(如果该常量其他地方确实有出现,这时将它extern进来并且初... 阅读全文
摘要:
多线程的那点儿事(之C++锁)分类:多线程编程2011-11-27 21:53370人阅读评论(2)收藏举报【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 编写程序不容易,编写多线程的程序更不容易。相信编写过多线程的程序都应该有这样的一个痛苦过程,什么样的情况呢?朋友们应该看一下代码就明白了,view plainvoiddata_process(){EnterCriticalSection();if(/*errorhappens*/){LeaveCriticalSection();return;}if(/*othererrorhappen 阅读全文
摘要:
海量存储系列之五2011年11月27日 22:24http://qing.weibo.com/1765738567/693f08473300067j.html 上一篇在上一章节,我们一起浏览了如何进行单机事务操作。下面我们来看一下分布式场景中我们碰到的问题吧。需要说明的一点是,这里涉及到的权衡点非常的多。就我短短的工作经验里面,也只是能够简单的涉猎一部分,因为在事务这个领域,目 前大家都在尝试提出各种各样的不同的方法,而在taobao,我们目前也没有完美的解决这个问题,更多的是在权衡,在金钱和开发成本之间,做出选择。那么,我们就先从问题开始,来看一下原来的事务出了什么问题。在事务中,有ACID 阅读全文
摘要:
海量存储系列之四2011年11月26日 22:17标签: 海量存储检索原理上一篇 事务原理http://qing.weibo.com/1765738567/693f084733000672.html单机事务:其实在上面介绍ACID的时候我们已经提到了一种最简单的实现方式,就是锁的实现方式。从原理来看,事务是个变态而复杂的事情。其实如果是序列化的话呢,那么实现起来一定是非常简单的。但问题就在于,这样性能实在比较低,于是,就有了非常多的方案,为了能哪怕减少一个地方的锁,或者降低一个地方的锁的级别,就付出大量的时间和代码加以实现。那么,让我们以崇敬的心情,去拜读一下他们的劳动成果吧~-------- 阅读全文