2012年5月4日

ZBox字符串匹配算法

摘要: Zbox 的意思:一个字符串 S ,它的子串 S[i..n], 用 Z[i] 表示 S[i..n] 与 S 精确匹配的最长前缀的长度。如:abcdabce , Z[5] = 3。如图 1:1 2 3 4 5 6 7 8 a b c d a b c e |___| |___| zbox那么如何把 S中所有的 Z[i]找出来呢?并且让它的时间是线性的。如图 2: |____|___|_____________|____|___|______|1 22 31100 121 130 n k'|_g_| k Z[100] = 31,求 Z[121] = ?可以看出,因为 Z[100] = 31, 阅读全文

posted @ 2012-05-04 16:53 梦想Sky 阅读(1172) 评论(0) 推荐(0) 编辑

2012年4月27日

Sunday字符串匹配算法

摘要: Sunday算法是Daniel M.Sunday于1990年提出的一种比BM算法搜索速度更快的算法。其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率。Sunday的算法思想和Horspool有些相似,但是。当出现不匹配的时候,却不是去找匹配串中不匹配的字符在模式串的位置,而是直接找最右边对齐的右一位的那个字符在模式串的位置。如果该字符没有在匹配串中出现则直接跳过,即移动步长= 匹配串长度+1;否则,同BM算法一样其移动步长=匹配串中最右端的该字符到末尾的距离+1。比如: . 阅读全文

posted @ 2012-04-27 14:17 梦想Sky 阅读(2069) 评论(0) 推荐(1) 编辑

2012年4月26日

Shift And/Or字符串匹配算法

摘要: Shift-And算法是一种基于前缀的单字符串匹配算法,采用位运算。其算法思想比KMP简单得多。在最简单的brute force算法中,在文本串的每个位置都要进行m(模式串长度)次比较,而SHIFT AND算法则是利用位运算提高这个过程。现在计算机的字长一般为32,64位也开始流行了。一次比较的值为true or false,只需要一位即可存储,所以计算机可以在一次运算里完成位长次的比较。通过此思路可以把brute force的速度提高位长倍。Shift-And算法思想:设模式字符串为P,文本为text。它主要通过维护一个字符串集合D(D中记录了P中所有与当前已读text的某个后缀相匹配的.. 阅读全文

posted @ 2012-04-26 09:15 梦想Sky 阅读(3220) 评论(0) 推荐(0) 编辑

BNDM字符串匹配算法

摘要: horspool算法从右往左匹配,它跳转的时候只利用了一个字符的信息,这样使得跳转会比较短,速度比较慢。BNDM算法是一种跳转时考虑子串的算法。具体实现的时候,为了提高速度,用了跟SHIFT AND一样的技巧。对于字符集里的每个字符,计算它在模式串的哪些位置出现,然后用一个整数表示这个集合。用一个整数D表示当前活跃的状态,第i位为1,表示在模式串i的位置有一个子串匹配到了,子串的具体长度取决于源串匹配的情况。如果D里第m位为1,这时候表示找到了模式串的一个前缀,如果这时候源串也匹配了m个字符,则表示找到了模式串,否则,只是一个子串,这时候要调整一个跳转的长度。跳转的长度为m-这个前缀的长度。每 阅读全文

posted @ 2012-04-26 08:56 梦想Sky 阅读(7853) 评论(0) 推荐(0) 编辑

2012年4月24日

Horspool字符串匹配算法

摘要: Horspool是后缀搜索,也就是搜索已读入文本中是否含有模式串的后缀;如果有,是多长,显然,当后缀长度等于模式串的长度时,我们就找到了一个匹配。Horspool算法认为:对于每个文本搜索窗口,将窗口内的最后一个字符(C)与模式串的最后一个字符进行比较。如果相等,则继续从后向前验证其他字符,直到完全相等或者某个字符不匹配。然后,无论匹配与否,都将根据在模式串的下一个出现位置将窗口向右移动。匹配串:abcbcsdxzcxx模式串:cbcac这个时候我们从右向左进行对暗号,c-c,恩对上了,第二个b-a,不对啊,我们应该怎么办?难道就这么放弃么。于是,模式串从不匹配的那个字符开始从右向左寻找匹配串 阅读全文

posted @ 2012-04-24 10:43 梦想Sky 阅读(7150) 评论(1) 推荐(0) 编辑

MS SQL Server:分区表、分区索引详解

摘要: 1. 分区表简介使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。 大型表:数据量巨大的表。 访问模式:因目的不同,需访问的不同的数据行集,每种目的的访问可以称之为一种访问模式。分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。注意:只能在 SQL Server Enterprise Edition 中创建分区函数。只有 SQL Server Enterprise Edition 支持分区。2. 创建分区表或分区索引的步骤可以 阅读全文

posted @ 2012-04-24 10:27 梦想Sky 阅读(400) 评论(0) 推荐(0) 编辑

2012年4月23日

HASH表解决冲突的两种方式

摘要: HASH表解决冲突有两种方式,一种是开放地址,一种是链表。后者的删除比较简单,就是从链表上删除一个数据。但是很多场合下,前者更适合应用。前者的优点是,CACHE命中率高,内存管理简单。但是从前者删除数据却很困难。如果简单地把待删除结点删除,则因为冲突,而被放到它后面的结点将会无法访问。可以设一个简单的删除标志,这样查询的时候,直接访问它的下一位,增加的时候,把它当空闲节点。但是,经过大量的增删之后,假设每次增删都是随机的,将会有大量被标志为删除的结点,这样会降低查找的速度。一种方案是,经过一定次数的删除后,重组HASH,把这些标志位去掉,这个过程也会比较麻烦,而且会导致,系统在一段时间内压力过 阅读全文

posted @ 2012-04-23 16:53 梦想Sky 阅读(465) 评论(0) 推荐(0) 编辑

2012年4月19日

KMP字符串匹配算法

摘要: 我们从一个普通的串的模式匹配算法开始讲起,这样你才能更深入的了解KMP算法及其优点。咱们先来看看普通的串的模式匹配算法是怎么进行比较的主串 (S) a b a b c a b c a c b a b子串 (T)a b c a c (子串又被称为模式串)红色表示当前这趟比较指针所在位置,兰色表示当前这趟比较中匹配的部分第一趟(详细过程)ab a b c a b c a c b a bab c a caba b c a b c a c b a babc a ca bab c a b c a c b a ba bca c遇到不匹配的地方时指针回朔,子串向前移动一位(下同),变成如下形式aba b c 阅读全文

posted @ 2012-04-19 15:21 梦想Sky 阅读(600) 评论(0) 推荐(0) 编辑

2012年4月6日

XSS跨站测试代码大全

摘要: '><script>alert(document.cookie)</script>='><script>alert(document.cookie)</script><script>alert(document.cookie)</script><script>alert(vulnerable)</script>%3Cscript%3Ealert('XSS')%3C/script%3E<script>alert('XSS')< 阅读全文

posted @ 2012-04-06 15:24 梦想Sky 阅读(137470) 评论(83) 推荐(10) 编辑

同源策略

摘要: 概念:同源策略是客户端脚本(尤其是Javascript)的重要的安全度量标准。它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。这里的同源指的是:同协议,同域名和同端口。精髓: 它的精髓很简单:它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。为什么要有同源限制? 我们举例说明:比如一个黑客程序,他利用IFrame把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,他的页面就可以通过Javascript读取到你的表单中 阅读全文

posted @ 2012-04-06 07:47 梦想Sky 阅读(9118) 评论(1) 推荐(3) 编辑

导航