摘要: 其实在jQuery1.5中已有这东西,cssHooks,或者更早之前的jQuery.event.special, 或者 Sizzle.selectors里面更多的对象。它们共同的特点是包含了许多相关的函数,cssHooks是专门处理css属性的获取与设置,如IE的opacity,event.special用于装载与卸载submit, change, focus ,mouseenter等特别事件与自定义事件, Sizzle.selectors里面的过滤器与候选集获取器就更不用说了。由于JS用对象做为表进行查找是比if条句与switch语句快很多,加之,适配器这种模式对于扩展新功能非常有利,因为j 阅读全文
posted @ 2011-04-27 18:28 hanmos 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 委托是C#中非常重要的一个概念,并在C#中得到了丰富的应用,如事件,线程等。那什么是委托呢?具体来说,委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托方法的使用可以像其他任何方法一样,具有参数和返回值。委托具有以下特点:委托类似于 C++ 函数指针,但它是类型安全的。委托允许将方法作为参数进行传递。委托可用于定义回调方法。委托可以链接在一起;例如,可以对一个事件调用多个方法。方法不需要与委托签名精确匹配。有关更多信息,请参见协变和逆变。C# 2.0 版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。在C#中使用委托分为三步:. 阅读全文
posted @ 2011-04-27 18:23 hanmos 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 事件,是C#编程模型中重要的一个概念,通过对事件的理解,可以更好的了解C#程序运行机制。C#中的事件,可以简单的理解为类或者对象发生了一件事,并且把这件事通知给了其他的类或者对象,其他的类或者对象可以根据事件的消息有所反应。这非常类似设计模式中的观察者模式。引发事件的类或对象,可以称之为事件源,注册并对处理事件的类或者对象可以称为事件订阅者或者事件监听者,我比较喜欢称之为事件监听者。比如:构建一个winform应用,在窗体Form1简单放置一个按钮控件,然后,双击按钮,则可以进入代码视图中按钮click事件处理程序。 private void button1_Click(object send 阅读全文
posted @ 2011-04-27 18:21 hanmos 阅读(335) 评论(0) 推荐(0) 编辑
摘要: lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Thread t = new Thread(LockObject.MonitorIncrement); 6 Thread t1=new Thread(new ThreadStart(LockObject.LockIncrement)); 7 t.Start(); 8 t1.Start(); 9 }10 }11 12 13 public class LockObject14 {15 /. 阅读全文
posted @ 2011-04-27 18:20 hanmos 阅读(217) 评论(0) 推荐(0) 编辑
摘要: 延迟加载,亦称延迟实例化,延迟初始化等,主要表达的思想是,把对象的创建将会延迟到使用时创建,而不是在对象实例化时创建对象,即用时才加载。这种方式有助于提高于应用程序的性能,避免浪费计算,节省内存的使用等。针对于这种做法,似乎称之为即用即创建更为合适些。先来看一下在Framework4.0中如何实现延迟加载。Framework4.0提供了一个包装类Lazy<T>,可以轻松的实现延迟加载。 ///这行代码表明:要创建一个延迟加载的字符串对象s ///原型为Lazy<T> 对象名=new Lazy<T>(Fun<T>) ///采用泛型委托进行构造,实例 阅读全文
posted @ 2011-04-27 18:19 hanmos 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 在多线程或单线程任务中,让线程带传入参数一直是个麻烦的问题,通常有种方法就是以类,对像的变量来传参数,这种方法理解上很简单不过在某些场合使用很麻烦,这里就不介绍了,我们主要介绍一种.NET2.0中新增加的带参数运行线程的方法,示例程序如下:ParameterizedThreadStartParStart = newParameterizedThreadStart(ThreadMethod);Thread myThread = new Thread(ParStart);object o ="hello";myThread.Start(o);ThreadMethod如下:pub 阅读全文
posted @ 2011-04-27 10:34 hanmos 阅读(2395) 评论(0) 推荐(0) 编辑
摘要: SQL Server 2008将包含用于合并两个行集(rowset)数据的新句法。根据一个源数据表对另一个数据表进行确定性的插入、更新和删除这样复杂的操作,运用新的MERGE语句,开发者用一条命令就可以完成…… SQL Server 2008将包含用于合并两个行集(rowset)数据的新句法。根据一个源数据表对另一个数据表进行确定性的插入、更新和删除这样复杂的操作,运用新的MERGE语句,开发者用一条命令就可以完成。 对两个表进行信息同步时,有三步操作要进行。首先要处理任何需要插入目标数据表的新行。其次是处理需要更新的已存在的行。最后要删除不再使用的旧行。这个过程中需要维护大量重复的逻辑,并. 阅读全文
posted @ 2011-04-27 10:32 hanmos 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 1. 案例起因 公司门店应用程序每天都要出一份报表,用来统计所有商品当天的期初库存数量、入库数量、出库数量 及当天的期末库存数量。运行半年以后,这份报表运行越来越慢,到现在,每次运行该报表显示当天数据时需要近20秒的时间。于是开发人员找到我,希望我看看,是不是可以使该报表运行的时间更短。 该报表就是一段SQL语句,主要由三部分组成,第一部分是计算每个商品的期初数量,第二部分是计算每个商品的当天发生(包括入库和出库的)数量,第三部分是计算每个商品的期末数量,也就是当天的余额。每个部分使用UNION ALL连接起来。 我看到该报表,第一个感觉就是这段SQL里的每个部分都要对表进行扫描,明显成本过高 阅读全文
posted @ 2011-04-27 10:29 hanmos 阅读(847) 评论(0) 推荐(0) 编辑