摘要:1、问题定义可以简化如下:在不知道文件总行数的情况下,如何从文件中随机的抽取一行? 首先想到的是我们做过类似的题目吗?当然,在知道文件行数的情况下,我们可以很容易的用C运行库的rand函数随机的获得一个行数,从而随机的取出一 行,但是,当前的情况是不知道行数,这样如何求呢?我们需要一个概念来帮助我们做出猜想,来使得对每一行取出的概率相等,也即随机。这个概念即蓄水池抽样(Reservoir Sampling)。 有了这个概念,我们便有了这样一个解决方案:定义取出的行号为choice,第一次直接以第一行作为取出行 choice ,而后第二次以二分之一概率决定是否用第二行替换 choice ,...
阅读全文
摘要:Writing Reentrant and Thread-Safe Code原文地址: http:/unet.univie.ac.at/aix/aixprggd/genprogc/writing_reentrant_thread_safe_code.htm译者:Love. Katherine,2007-03-28译文地址:http://blog.csdn.net/lovekatherine/archive/2007/03/28/1544585.aspx转载时务必以超链接形式标明文章原始出处及作者、译者信息。在单线程程序中,只有单一控制流,程序所执行的代码不必是可重入或线程安全的。在多线程程序中
阅读全文
摘要:学习的过程中发现这两个概念真的是有点区分不开,尽管可以很感性的说bridge模式要比strategy模式更复杂更具可塑性,更“高级”,但是如何清晰阐述两者区别,却实是优点困难。套用伟人的一句话,站在巨人的肩膀上看得更远,下边三段分别来自CSDN论坛的贴子和一篇blogjava的文章,看了之后令我茅塞顿开,为表尊重不在冗述,直接贴原文了。实际上所有模式可以只分为类模式和对象模式两种,类模式是用继承而对象模式是用委托 Bridge模式和Strategy模式相似就是因为他们都将任务委托给了另外一个接口的具体实现, 他们之间的区别在于Bridge的目的是让底层实现和上层接口可以分别演化,从而提高移..
阅读全文