数据结构和算法
文章平均质量分 79
youkuwanhuo
这个作者很懒,什么都没留下…
展开
-
BM模式匹配算法-原理(图解)
首先,先简单说明一下有关BM算法的一些基本概念。 BM算法是一种精确字符串匹配算法(区别于模糊匹配)。 BM算法采用从右向左比较 的方法,同时应用到了两种启发式规则,即坏字符规则 和好后缀规则 ,来决定向右跳跃的距离。 BM算法的基本流程: 设文本串T,模式串为P。首先将T与P进行左对齐,然后进行从右向左比较 ,如下图所示: 若是某趟比较不匹配时,BM算法就采用两条启发式规则,即坏字符规则 和好后缀规则 ,来计算模式串向右移动的距离,直到整个匹配过程的结束。 下面,来详细介绍一下坏字符规原创 2010-07-24 17:26:00 · 790 阅读 · 0 评论 -
BM模式匹配算法-实现(C语言)
BM算法的实现很复杂,但是高手程序员就是能写出令人敬佩的代码。 当然,高手程序员不是指我自己,是SNORT2.7.0的设计者/实现者之一。 下面是SNORT2.7.0中提取出的代码。 我将以行注的形式进行讲解。 /* 函数:int* MakeSkip(char *, int) 目的:根据坏字符规则做预处理,建立一张坏字符表 参数: ptrn => 模式串P PLen => 模式串P长度原创 2010-07-24 17:39:00 · 476 阅读 · 0 评论 -
C语言:内存字节对齐详解(转载)
一、什么是对齐,以及为什么要对齐:1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。2. 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况, 但是最常见的是如果不按照适合其平台的要求对数据存放进行对齐,会在存取效率上原创 2010-07-24 17:50:00 · 293 阅读 · 0 评论