ASP.NET网页设计(再发).NET脏字过滤算法 仓酷云
我也不知道,我原来理解的,NET就是C++编程,只是与net网页编程相对,呵呵。以为.ET就是高级C++编程。感激sumtech的复兴和会商,底本的效力已充足网站有用了,固然也想到一些改善办法,可是一向懒得往做。sumtech经由过程邮件跟我会商,我也终究抽了工夫做了改善,改善后的算法效力比本来的算法进步了400%,也就是仅必要本来的1/5工夫。拜见/dotnet/20111127/315434.html。
算法关头是将两个BitArray兼并成了byte,个中7个bit用来判别前7个字符,另外一个bit判别其他字符。而且增添了minWordLength和charCheck,用来过滤太短的判别,和唯一一个字符时的疾速判别。
利用的数据:
privateHashSet<string>hash=newHashSet<string>();
privatebyte[]fastCheck=newbyte;
privateBitArraycharCheck=newBitArray(char.MaxValue);
privateintmaxWordLength=0;
privateintminWordLength=int.MaxValue;初始化数据的代码:
foreach(stringwordinbadwords)
{
maxWordLength=Math.Max(maxWordLength,word.Length);
minWordLength=Math.Min(minWordLength,word.Length);
for(inti=0;i<7&&i<word.Length;i++)
{
fastCheck]|=(byte)(1<<i);
}
for(inti=7;i<word.Length;i++)
{
fastCheck]|=0x80;
}
if(word.Length==1)
{
charCheck]=true;
}
else
{
hash.Add(word);
}
}判别是不是包括脏字的代码:
publicboolHasBadWord(stringtext)
{
intindex=0;
while(index<text.Length)
{
if((fastCheck]&1)==0)
{
while(index<text.Length-1&&(fastCheck]&1)==0);
}
if(minWordLength==1&&charCheck])
{
returntrue;
}
for(intj=1;j<=Math.Min(maxWordLength,text.Length-index-1);j++)
{
if((fastCheck]&(1<<Math.Min(j,7)))==0)
{
break;
}
if(j+1>=minWordLength)
{
stringsub=text.Substring(index,j+1);
if(hash.Contains(sub))
{
returntrue;
}
}
}
index++;
}
returnfalse;
}2008-02-01订正:发明Bug,一个字符的charCheck应当放到for轮回外,往失落j==1的判别,外层的判别改成if(j+1>minWordLength)。
PS:如今婚配的是最小长度,而且是辨别巨细写的,这部分功效在脏字交换时必要完成。
中间码是基于一个虚拟机器。源代码是最高层的,理论上从源代码开始直接编译成本地码能提供最大优化的。而中间码只能是转译成本地码,效率上难免受到损耗。根据虚拟机器所设定的体系结构的特点,和本地机器的差异的多少。 通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境! 我的意思是.net好用,从功能上来说比JAVA强还是很明显的。 市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。 有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 Servlet却在响应第一个请求的时候被载入,一旦Servlet被载入,便处于已执行状态。对于以后其他用户的请求,它并不打开进程,而是打开一个线程(Thread),将结果发送给客户。由于线程与线程之间可以通过生成自己的父线程(ParentThread)来实现资源共享,这样就减轻了服务器的负担,所以,JavaServlet可以用来做大规模的应用服务。 ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。 同时也感谢博客园给我们这个平台,也感谢博客园的编辑们做成专题引来这么多高人指点。
页:
[1]