RSS 2.0 Feed
2008-05 Entries
摘要:我们在应对网站的恶意请求时候,一个解决方法就是把有问题的请求IP封杀掉。 如果想快速处理这种问题,就需要编写一段代码,达到一定门槛,自动封杀。再复杂点就是不是永久封杀,还可以自动在一定时间后解封。 封杀的逻辑代码看后面提供的。 需要说明的是:IIS7时,情况发生了不同。   下面的代码,在处理封杀IP时候,不论IIS6还是IIS7 都可以把需要封杀的IP加入封杀列表。但是需要注意的是我们代码写的是全部替换原先的数据。但是在IIS7下,执行的效果是原先的不替换,新加一批封杀IP。当然IIS7下,如果新加的IP原来就有了,则会报如下异常: System.Runtime.InteropServices.COMException was caught   Message="当文件已存在时,无法创建该文件。 (异常来自 HRESULT:0x800700B7)"   Source="System.DirectoryServices"   ErrorCode=-2147024713   StackTrace:        在 System.DirectoryServices.DirectoryEntry.CommitChanges()        在 IIS_Security_ConsoleApplication.Program.IPDeny() 位置 D:\MyCodes\IIS_Security_ConsoleApplication\IIS_Security_ConsoleApplication\Program.cs:行号 109   InnerException: 这就是说,IIS7, 我们可以通过编程接口增加封杀IP名单,但是没发通过编程接口剔出封杀IP。   参考代码: 这里提供了两套参考代码,其实原理都是一样的。 在IIS 6 下,都没有任何问题, IIS 7 下都会有没发删除原先已有数据的问题。 代码一: using System.DirectoryServices; using System.Reflection; using......[阅读全文]

posted @ | Feedback (2) | Filed Under [ 技术随笔 网站开发管理相关内容 ]

摘要: 分类统计时候,我们可能经常会碰到这样的需求,每个分类按照一定顺序,取几条数据,然后在一起显示。 这个问题的解决方法,我们通过搜索引擎,可以找到很多中。但是不是SQL语句过于复杂,就是在数据量比较大时候,性能特别成问题。 今天我就碰到这样一个需求。而我自己的解决方案就是SQL过于复杂,或者性能比较差的。为此我在CSDN论坛发了个帖子,看有没有更好的解决方案。 http://topic.csdn.net/u/20080504/14/5c5866c3-8b91-45ef-ab17-f994f88f8e42.html CSDN的 SQL Server 板块  不愧是高手云集,问题发出不到半小时,就获得了近10种解决方案。经过测试,我把性能最高,且SQL不复杂的方案整理出来。特别感谢 jinjazz 的解答。   问题详细描述如下: 比如,假设我们有下面这样结构的一张表,这张表的数据量非常巨大。 CREATE TABLE table1( [ID] [bigint] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](128) NOT NULL, [class] int not null, [date] datetime not null) class 表示分类编号。 分类数不固定, 至少有上千种分类 date 表示该条记录被更新的时间 我们现在想获得每个分类最新被更新的5条记录。   解决方案 select id,name,class,date from(select id,name,class,date ,row_number() over(partition by class order by date desc)as rowindex from table1) awhere rowindex <= 5   解决方案简单说明: 这个解决方案的关键就是使用了SQL 2005 的 ROW_NUMBER 这个全新的函数。 ROW_NUMBER ( ) 函数的语法如下: ROW_NUMBER ( )     OVER ( [......[阅读全文]

posted @ | Feedback (1) | Filed Under [ 数据库开发管理心得 ]