2011年11月5日

KMP 算法

摘要: 我们这里说的KMP不是拿来放电影的(虽然我很喜欢这个软件),而是一种算法。KMP算法是拿来处理字符串匹配的。换句话说,给你两个字符串,你需要回答,B串是否是A串的子串(A串是否包含B串)。比如,字符串A="I"m matrix67",字符串B="matrix",我们就说B是A的子串。你可以委婉地问你的MM:“假如你要向你喜欢的人表白的话,我的名字是你的告白语中的子串吗?”解决这类问题,通常我们的方法是枚举从A串的什么位置起开始与B匹配,然后验证是否匹配。假如A串长度为n,B串长度为m,那么这种方法的复杂度是O (mn)的。虽然很多时候复杂度达不 阅读全文

posted @ 2011-11-05 20:53 Terry@ 阅读(241) 评论(0) 推荐(0) 编辑

设置进程所关联的处理器核心.

摘要: ProcessThread.ProcessorAffinity设置关联线程可以在其上运行的处理器。属性值(十六进制)有效的处理器0x000110x000220x00031 或 20x000430x00051 或 30x00071、2 或 30x000F1、2、3 或 4还可以通过设置 IdealProcessor 属性为线程指定单个首选处理器。进程线程可以在处理器间迁移,每次迁移都重新加载处理器缓存。在系统负荷繁重的情况下,为线程指定处理器可以减少重新加载处理器缓存的次数,从而提高性能。 阅读全文

posted @ 2011-11-05 19:53 Terry@ 阅读(243) 评论(0) 推荐(0) 编辑

关于 C# 的 lock

摘要: 锁的本质 是互斥量.互斥量可以通俗的这么理解.(本质不同,但表像是相同的,这样描述更易理解,使用上也不容易出错)以一个以对象(指针)的值(指向地址)作为Key的集合作为基础.所有线程在进入锁的时刻,判断如果Key存在, 线程挂起并进入等待队列.否则 线程进入锁,并添加Key到集合. 线程执行结束,移除集合中的锁. 唤醒挂起的等待队列.MSDN规范通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。常见写法lock (this)、lock (typeof (MyType))、lock(“lockKey")、lock(obj)1 lock(this) 代码效果:以this 阅读全文

posted @ 2011-11-05 10:25 Terry@ 阅读(617) 评论(2) 推荐(0) 编辑

导航