很多朋友体验了“给哥三十五次机会,哥就能猜中你的手机号”,反馈还不错。有些明眼的朋友,一眼就看出来所用的算法。D瓜哥表示很佩服。另外有一些朋友也问所使用的算法,D瓜哥今天就把源代码和算法全部揭晓。
其实,这个代码很简单。不过也有三个看点:二分查找算法、面向对象编程和对数的计算。下面我们一一讲解。
二分查找算法
基本原理是二分查找算法。首先,我们先简要介绍一下“二分查找算法”。
二分查找又称折半查找,它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下时间复杂度是 阅读全文…
先说明一下,这篇可能算是水文,只有一些吐槽。不喜勿拍。不过,下面的小游戏,可以试试。
前段时间给朋友当“红娘”,给他介绍女朋友。给他介绍女朋友,谁知道那货有点放不开,没怎么和人家联系。和D瓜哥相比,太差劲了!D瓜哥的女朋友也是朋友介绍的,哥第一次和她联系时,只用了三十五次机会,就把她的手机号猜出来了。然后,顺理成章就发展下去了。所以,D瓜哥想对希望让人介绍女朋友的哥们说一句:第一次和人家联系的时候,一定要聪明一次,先给人家留个好印象,再慢慢发展。另外,D瓜哥正在学习关于JavaScript模块化编程的知识,正好可以把这个“猜数游戏”写出来练练手。
就在前两天,D瓜哥的一个朋友半夜发信息给我说,他问一个女同事的生日,人家说涉及银行卡密码,不告诉他。问我,这个意味着啥。当时,哥的“猜数游戏”已经完成。D瓜哥就给他吹牛逼说,不需要问, 阅读全文…
今天在Github上发布了一个开源的数据库模型对比工具:CompareDatamodel。写篇文章做个说明。希望对需要使用的朋友有所帮助。
其实这个项目,早在今年三月份就开发完了。当时,创建这个项目也是缘于”工作所迫”。鉴于我们在进行项目实施时,经常需要对比新旧模型的差异。而且,这些工作繁琐,极易出错。需要特别小心。所以,开发了这个工具, 阅读全文…
谷歌在2003到2006年间连续发表了三篇非常有影响力的文章,分别是2003年在SOSP上发布的GFS,2004年在OSDI上发布的MapReduce,以及2006年在OSDI上发布的BigTable。GFS是文件系统相关的,其对后来的分布式文件系统设计具有指导意义;MapReduce是一种并行计算的编程模型,用于作业调度;BigTable是一个用于管理结构化数据的分布式存储系统,构建在GFS、Chubby、SSTable等Google技术之上。相当多的Google应用使用了这三种技术,比如Google Search、Google Earth和Google Analytics等等。因此这三种技术并称为谷歌技术”三宝”。今天,D瓜哥班门弄斧,对MapReduce来个”庖丁解牛”! 阅读全文…
上一篇文章“JavaScript模块化编程(一):模块原型和理论概念详解”,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战。
我采用的是一个非常流行的库require.js。
一、为什么要用require.js?
最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了。后来,代码越来越多,一个文件不够了, 阅读全文…
随着网站逐渐变成"互联网应用程序",嵌入网页的Javascript代码越来越庞大,越来越复杂。
网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等等……开发者不得不使用软件工程的方法,管理网页的业务逻辑。
Javascript模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心的业务逻辑, 阅读全文…
现在随着Githut和SNS的流行,Social Code也像Facebook在世界中流行一样,在程序猿中流行开来。而且有犹如星星之火,在程序猿中燎原开来。有Linus这样的大牛作为发明人,有Linux Kernel这样的庞大应用作为“小白鼠”做测试,再有Github这样开放的网络交流平台,Git想不火都难。所以,今天D瓜哥也赶赶时髦,玩转一下Git,这个版本管理工具。
Git,这个版本管理工具是美国发明的,所以对中文的原生支持性不是很好。在使用时,主要会遇到三个场景对中文的支持性比较差,严重影响用户体验。下面,D瓜哥就针对这三个使用场景进行分别的描述。 阅读全文…
前两天在逛CSDN的时候,无意间看到一篇帖子,觉得不错。今天整理一下,发布出来,和大家一起讨论讨论。
SQL的逻辑很简单:查询一张表中列A不是aValue或者列B不是bValue的记录。这样说可能不是太明白,我们直接用SQL来描述吧。SQL如下:
SELECT *
FROM test
WHERE id NOT IN
(SELECT id
FROM test
WHERE columnA = 'aValue'
AND columnB = 'bValue');
学过数理逻辑的童鞋们应该知道经过逻辑推理还可以又下面三种写法。 阅读全文…
我们在学习JavaScript中,难免都会去网上查一些资料。也许偶尔就会遇到“事件委托”(也有的称我“事件代理”,这里不评论谁是谁非。以下全部称为“事件委托”),尤其是在查JavaScript的事件处理的时候。但是,大多数时说的是“事件绑定”,对于“事件委托”,或是不提,或是浅尝辄止。对于我这个比较好奇的人来说,实在很蛋疼。尤其是想更多的了解“事件委托”的时候。
这次干脆一劳永逸,自己把查出来的资料整理成一篇日志,总结这块的知识,也方便需要的朋友查阅。
JavaScript中事件传播过程那些事儿 阅读全文…
修订补遗一下,说明见文章末尾。
最近半年多的时间里,比较关注Web开发尤其是JavaScript编程,在网上也遇到了不少的资料,感觉不错的,D瓜哥都攒了下来,所以就收集了的一些不错的资料,今天就把这些资料整理了一下,拿出来和大家分享。希望对大家有所帮助。 阅读全文…