
算法与数据结构
文章平均质量分 94
tinyid
Java/Python
Hadoop/Spark/Presto/Kafka/Druid
numpy/matplotlib/pandas/scipy
展开
-
观察者模式
我认为这个模式名称有先天的残疾!如果你确实理解了观察者模式你就能体会到了!福尔摩斯不止一次对华生说:“我是在观察,而你是在看”。福尔摩斯那可真叫观察呀,对周围的事物简直观察到了极致了...可观察者模式里的这群观察者可是不折不扣的懒汉!他们从不主动观察!他们只是等待被通知呢!所以我一直认为“订报模式”更能说明这个模式的意思,因为订报的人都很懒,他们就在家等着报纸送来。所以我们就订报吧!一般订报...原创 2011-09-15 18:54:32 · 939 阅读 · 0 评论 -
策略模式
策略模式!对于办一件事情,你可以有不同的“策略”,而做事情的主体(比如你)可以随时调用不同的策略来做事情!这里有个关键点,就是做事情的主体在这个过程中是不变的。你还是你,比如让你做一件事情:制造点声音。这个任务可以有很多策略!你可以大喊一声;你可以摔个碗什么的;你可以弹钢琴....,反正又没有规定你“怎么”制造声音,其中的“怎么”就是策略。很简单吧。就拿让你“制造点声音”这个例子写点代码吧:...原创 2011-09-15 18:55:02 · 606 阅读 · 0 评论 -
依赖抽象,不要依赖具体
这是OO设计中的一个原则。到底是什么意思呢?理解一下:抽——————抽出来的东西;这个东西,总之你不能把它想的很神秘,它就是一种经验的总结 。下面有一个例子啊:时下喜欢小狗,小猫的人多了,开个宠物店肯定有的赚!在这里我就有个疑问了,为什么人们要开宠物店而不开个什么小狗店,小猫店什么的?你要开个小狗店,那意思就说你只能卖小狗了,小猫店类似;呵呵,现在我们站在顾客的角度去想想这个问题,顾客...原创 2011-09-15 18:55:35 · 2107 阅读 · 0 评论 -
复合设计模式—MVC
很强大,但让我很头疼的东西,弄懂它!这个东西无非就是模型-视图-控制器。还有什么——关系,更确切一点就是这三者之间的关系。首先明确谁能和谁通信:现在你是一个播放器:我的视图上有按钮,当别人按了播放按钮的时候,这个信号应该传递到控制器,所以视图能向控制器传递信息;这个时候,控制器就应该调用模式里的代码,去播放音乐,所以控制器能向模型传递信息;与此同时,控制器可能将播放按钮原创 2011-09-15 18:56:39 · 926 阅读 · 0 评论 -
装饰器模式
很多东西在装饰 着你:比如你的衣服...所谓装饰吗,仅仅是装饰而已。假如你有一只狗,给它系了跟红领巾,变漂亮了,这就是装饰了。可是狗该跑还是跑,该叫还是叫,总之你装饰不能(至少大多数情况下不能)把原来的东西给装饰没了吧。还有,你小时候看过那些小人在机器人里的动画片吧,看看,人家叫来了机器人,钻到里面,手上就能开火了,两只脚也变成了火箭推进器,功能是大大地增加了呀 !看到了吧,装饰不仅仅是花架子。...原创 2011-09-15 18:56:13 · 1072 阅读 · 1 评论 -
使用异或运算实现两处内存的原地值交换
^(异或运算)与|(或)和&(与)的一个显著的不同点在于,异或运算能够保存两个位串一种关系,举个简单的例子,比如对于a=10,b=01这两个二进制数来说,他们的异或结果为11, 从这个结果上我们就可以非常直观地得出a与b在两个位上的都是“相异”的,所以如果我们知道了两个位串的异或结果(也就是两个位串的关系),和其中的一个位串,我们就能根据它们之间的关系来推导出另一个位串的结果,这个结果是确定的,比原创 2015-03-23 12:57:00 · 2425 阅读 · 0 评论 -
Python中使用threading.Event协调线程的运行
threading.Event机制类似于一个线程向其它多个线程发号施令的模式。原创 2014-11-05 14:03:52 · 22495 阅读 · 0 评论 -
实现一个非确定性下推自动机(NDPDA - None-Deterministic PushDown Automaton)
一个非确定下推自动机,是一个在有限状态机的基础上,辅之以一个栈数据结构作为外部存储,而非确定性来自于DPDA每一步计算后,其机器配置的不确定性。一个应用DPDA的典型例子是确定一个字符串是否是回文字符串,类似于aba, abba, babbaabbab等。下面我们就使用Python语言来一步步来实现一个简单的对于DPDA的模拟。我们实现DPDA的第一步,首先要抽象出一个栈的数据结构,而为了保证每次...原创 2018-05-07 19:58:35 · 5367 阅读 · 2 评论