仓酷云

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

[学习教程] ASP.NET网页编程之.NET脏字过滤算法仓酷云

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

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

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

x
其实net网页编程之所以在曾经独步天下,就是因为他的跨平台、安全性,这两方面,效率可不是net网页编程的强项,反而是他最短的一块挡板,虽然net总是用理论证明比.NET快。但在我这里测试的时分,RegEx要快一倍摆布。可是仍是不太中意,由于我们网站上脏字过滤用的相称多,对效力已有了一些影响,经由一番思索后,本人做了一个算法。在本人的呆板上测试了一下,利用原文中的脏字库,0x19c的字符串长度,1000次轮回,文本查找耗时1933.47ms,RegEx用了1216.719ms,而我的算法只用了244.125ms.

原文见/dotnet/20111127/315432.html,良多网站都转载了。
更新:新增一个BitArray,用于判别某char是不是在一切脏字中呈现过。总工夫由244ms降到了34ms.

次要算法如代码所示
privatestaticDictionarydic=newDictionary();
privatestaticBitArrayfastcheck=newBitArray(char.MaxValue);

staticvoidPrepare()
{
string[]badwords=

//readfromfile
foreach(stringwordinbadwords)
{
if(!dic.ContainsKey(word))
{
dic.Add(word,null);
maxlength=Math.Max(maxlength,word.Length);
fastcheck[word[0]]=true;
}
}
}
利用的时分
  1. intindex=0;while(index<target.Length){if(!fastcheck[target[index]]){while(index<target.Length-1&&!fastcheck[target[++index]]);}for(intj=0;j<Math.Min(maxlength,target.Length-index);j++){stringsub=target.Substring(index,j);if(dic.ContainsKey(sub)){sb.Replace(sub,"***",index,j);index+=j;break;}}index++;}
复制代码
有专家说:net网页编程不是跨平台,net网页编程就是平台,这很好的定义了net网页编程的特点。有了net网页编程,你只需要等待net网页编程平台在新平台上移植。这还不错吧!只是,net网页编程不是一个平台,而是多个平台。你需要在这个net网页编程平台移植到另一个net网页编程平台。
沙发
发表于 2015-1-20 20:42:16 | 只看该作者
碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-23 23:08:52 | 只看该作者
能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。
透明 该用户已被删除
地板
发表于 2015-1-25 13:03:03 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
第二个灵魂 该用户已被删除
5#
发表于 2015-1-25 17:04:32 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
乐观 该用户已被删除
6#
发表于 2015-2-3 11:54:35 来自手机 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
再现理想 该用户已被删除
7#
发表于 2015-2-6 17:14:22 | 只看该作者
由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。
简单生活 该用户已被删除
8#
发表于 2015-2-7 03:59:38 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
精灵巫婆 该用户已被删除
9#
发表于 2015-2-10 22:21:03 | 只看该作者
比如封装性、继承性、多态性等等,这就解决了刚才谈到的ASP的那些弱点。封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变。
小魔女 该用户已被删除
10#
发表于 2015-3-1 16:35:12 | 只看该作者
HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了.
海妖 该用户已被删除
11#
发表于 2015-3-1 20:08:52 | 只看该作者
代码的可重用性差:由于是面向结构的编程方式,并且混合html,所以可能页面原型修改一点,整个程序都需要修改,更别提代码重用了。
飘飘悠悠 该用户已被删除
12#
发表于 2015-3-5 21:50:01 | 只看该作者
ASP.Net和ASP的最大区别在于编程思维的转换,而不仅仅在于功能的增强。ASP使用VBS/JS这样的脚本语言混合html来编程,而那些脚本语言属于弱类型、面向结构的编程语言,而非面向对象。
小女巫 该用户已被删除
13#
发表于 2015-3-12 15:35:49 | 只看该作者
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
活着的死人 该用户已被删除
14#
发表于 2015-3-19 23:27:44 | 只看该作者
主流网站开发语言之CGI:CGI就是公共网关接口(CommonGatewayInterface)的缩写。它是最早被用来建立动态网站的后台技术。这种技术可以使用各种语言来编写后台程序,例如C,C++,Java,Pascal等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-6-13 20:20

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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