仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 782|回复: 11
打印 上一主题 下一主题

[学习教程] ASP.NET网站制作之.NET脏字过滤算法,晋级版仓酷云

[复制链接]
小妖女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:19:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
对于new隐藏成员的作用,往往是出于使用了一个第三方类库,而你又无法获得这个类库的源代码,当你继承这个类库的某个类时,你需要重新实现其中的一个方法,而又需要与父类中的函数使用同样的函数,这是就需要在自定义的子类中把那个同名函数(或成员)加上new标记,从而隐藏父类中同名的成员。再度改善,在脏字大概存在的情形下,比方呈现了多个脏字前Length-1部分时,功能比拟/dotnet/20111127/315436.html中形貌的又提拔了300%~400%。

间接贴出全体代码了,经由过程新增的一个byte[char.MaxValue]和BitArray(char.MaxValue),削减了大批的Substring和GetHashCode的挪用。耗的内存也不算多,除HashSet外,仅必要144k内存。

援用此文大概利用此代码请申明出处,感谢,以便于我未来的更新。

2008-02-02订正:if(index>0||(fastCheck[text[index]]&1)==0)应往失落index>0的判别,这个优化思索的不敷成熟。感激sumtec和灵感之源指堕落误。制止最短婚配时,能够在if(hash.Contains(sub))以后,能够到场判别if((fastLength[begin]>>Math.Min(j,7))==0),然后再returntrue。

2008-02-03订正:for轮回外部的if((fastCheck[current]&1)==0)应为if((fastCheck[current]&1)==0&&count==j)。修改bug并到场巨细写敏感后,效力下降1倍。
publicclassBadWordsFilter
{
privateHashSet<string>hash=newHashSet<string>();
privatebyte[]fastCheck=newbyte[char.MaxValue];
privatebyte[]fastLength=newbyte[char.MaxValue];
privateBitArraycharCheck=newBitArray(char.MaxValue);
privateBitArrayendCheck=newBitArray(char.MaxValue);
privateintmaxWordLength=0;
privateintminWordLength=int.MaxValue;

publicBadWordsFilter()
{

}

publicvoidInit(string[]badwords)
{
foreach(stringwordinbadwords)
{
maxWordLength=Math.Max(maxWordLength,word.Length);
minWordLength=Math.Min(minWordLength,word.Length);

for(inti=0;i<7&&i<word.Length;i++)
{
fastCheck[word]|=(byte)(1<<i);
}

for(inti=7;i<word.Length;i++)
{
fastCheck[word]|=0x80;
}

if(word.Length==1)
{
charCheck[word[0]]=true;
}
else
{
fastLength[word[0]]|=(byte)(1<<(Math.Min(7,word.Length-2)));
endCheck[word[word.Length-1]]=true;

hash.Add(word);
}
}
}

publicstringFilter(stringtext,stringmask)
{
thrownewNotImplementedException();
}

publicboolHasBadWord(stringtext)
{
intindex=0;

while(index<text.Length)
{
intcount=1;

if(index>0||(fastCheck[text[index]]&1)==0)
{
while(index<text.Length-1&&(fastCheck[text[++index]]&1)==0);
}

charbegin=text[index];

if(minWordLength==1&&charCheck[begin])
{
returntrue;
}

for(intj=1;j<=Math.Min(maxWordLength,text.Length-index-1);j++)
{
charcurrent=text[index+j];

if((fastCheck[current]&1)==0)
{
++count;
}

if((fastCheck[current]&(1<<Math.Min(j,7)))==0)
{
break;
}

if(j+1>=minWordLength)
{
if((fastLength[begin]&(1<<Math.Min(j-1,7)))>0&&endCheck[current])
{
stringsub=text.Substring(index,j+1);

if(hash.Contains(sub))
{
returntrue;
}
}
}
}

index+=count;
}

returnfalse;
}
}前几天同学问我学习方向的问题。有点想法,不知道对不对,怕误导同学,现在“开源一下”。注:括号内是我现在整理的时填加上的。
山那边是海 该用户已被删除
沙发
发表于 2015-1-20 14:55:41 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-25 22:03:03 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
再见西城 该用户已被删除
地板
发表于 2015-2-1 17:09:24 | 只看该作者
在asp.net虚拟主机的服务提供商中,目前首推的是CNNIC的其中一家域名注册机构---时代互联(www.now.net.cn),他们早在2001年微软刚推出Asp.net时就推出了对应的Asp.net虚拟主机了,经笔者的使用测试,他提供的Asp.net性能非常的稳定,版本也会定期的更新,目前他的
只想知道 该用户已被删除
5#
发表于 2015-2-5 03:30:04 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
变相怪杰 该用户已被删除
6#
发表于 2015-2-11 02:58:02 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
柔情似水 该用户已被删除
7#
发表于 2015-3-1 19:56:39 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
兰色精灵 该用户已被删除
8#
发表于 2015-3-3 23:06:29 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
谁可相欹 该用户已被删除
9#
发表于 2015-3-11 12:03:41 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
若天明 该用户已被删除
10#
发表于 2015-3-11 13:50:39 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
小魔女 该用户已被删除
11#
发表于 2015-3-18 15:14:05 | 只看该作者
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
分手快乐 该用户已被删除
12#
发表于 2015-3-26 01:12:26 | 只看该作者
虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-5 19:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表