上一页 1 ··· 48 49 50 51 52 53 54 55 56 ··· 58 下一页
  2012年10月18日
摘要: 解决的问题:一个应用程序是一个进程,一个进程包含几个线程,其中有一个是主线程,其余的是工作线程。在WPF应用程序中,主线程负责接收输入、处理事件、绘制屏幕等工作,为了使主线程及时响应,用户创建一些工作线程,工作线程做一些耗费时间和资源的事情,比如解码和接受网络数据。这里存在一个问题,由于UI元素是主线程创建的,工作线程不能更新主线程维护的UI元素的显示。DIspatcher就是解决这个问题的。如何解决问题:通过调用主线程的Dispatcher,执行Invoke (同步)或者BeginInvoke方(异步)方法,比如public delegate void NextPrimeDelegate() 阅读全文
posted @ 2012-10-18 20:48 Andy Niu 阅读(3921) 评论(0) 推荐(1)
  2012年9月6日
摘要: 1、首先明确一点,对于单核CPU,任意一个时刻只有一个线程在运行。那么既然这样,多线程还有什么意义呢? 举例来说,现在只有一个人,要做好几个任务。单线程就是,任务一个一个地做,必须做完一个任务后,再去做另一个任务。多线程就是一会做这个任务,一会做那个任务,每个任务做一会,不停的切换。显然,最后把所有的任务做完,多线程必定比单线程更耗费时间。为什么?因为,多线程要在不同的任务之间切换,切换肯定是要耗费时间的。那么问题来了,既然多线程比单线程更耗费时间,为什么还要多线程? 单线程有一个致命的问题,就是一个线程运行的整个过程中,其他线程必须等待,不能响应用户的命令,用户体验太差,好像电脑死机一样。假 阅读全文
posted @ 2012-09-06 11:27 Andy Niu 阅读(14504) 评论(1) 推荐(3)
  2012年9月5日
摘要: C# 相等性判断有四个方法:1 public static bool ReferenceEquals(object left, object right);2 public static bool Equals(object left, object right);3 public virtual bool Equals(object right);4 public static bool operator ==(MyClass left, MyClass right);ReferenceEquals方法:使用场景是比较两个变量是否为同一个引用。对于引用类型,比较两个变量是否为同一个引用。对于 阅读全文
posted @ 2012-09-05 14:00 Andy Niu 阅读(4192) 评论(0) 推荐(2)
  2012年8月29日
摘要: 数据库事务并发带来的问题有:更新丢失、脏读、不可重复读、幻象读。假设张三办了一张招商银行卡,余额100元,分别说明上述情况。1、更新丢失:一个事务的更新覆盖了另一个事务的更新。事务A:向银行卡存钱100元。事务B:向银行卡存钱200元。A和B同时读到银行卡的余额,分别更新余额,后提交的事务B覆盖了事务A的更新。更新丢失本质上是写操作的冲突,解决办法是一个一个地写。2、脏读:一个事务读取了另一个事务未提交的数据。事务A:张三妻子给张三转账100元。事务B:张三查询余额。事务A转账后(还未提交),事务B查询多了100元。事务A由于某种问题,比如超时,进行回滚。事务B查询到的数据是假数据。脏读本质上 阅读全文
posted @ 2012-08-29 11:08 Andy Niu 阅读(7516) 评论(0) 推荐(2)
  2012年8月24日
摘要: IComparable 接口,里面含有比较方法 intCompareTo(Objectobj ),可以调用.sort()方法进行排序。类如果实现了这个接口中的CompareTo(),就可以说明该类对象是可以比较的。IComparer 接口,提供另一种排序方式,intCompareTo(Objectx, Objecty),将实现了IComparer接口的实例作为参数传递给sort,进行排序。需要说明的是,上述情况比较的是Object,类型不安全,因此实际应用中应该使用泛型接口。 阅读全文
posted @ 2012-08-24 15:01 Andy Niu 阅读(226) 评论(0) 推荐(0)
摘要: 扇入:该模块被调用的次数,扇入大,说明该模块的复用性好。扇出:该模块调用其他模块的个数,扇出大,说明该模块的业务逻辑复杂。因此,扇入大是好事,扇出大是坏事。 阅读全文
posted @ 2012-08-24 14:24 Andy Niu 阅读(850) 评论(1) 推荐(0)
摘要: 常用的设计模式有哪些?很多时候一时想不起来。因此编个顺口溜方便记忆。组织(组合模式)经过观察(观察者模式),命令(命令者模式)我,找个代理(代理模式),建个工厂(工厂模式),生产单例产品(单例模式),然后迭代(迭代模式)检查所有的产品,不合格的产品要适配(适配器模式)一下。 阅读全文
posted @ 2012-08-24 14:17 Andy Niu 阅读(258) 评论(0) 推荐(0)
  2012年8月15日
摘要: 我们在编码中,经常使用foreach遍历集合,能够遍历的集合必定实现了 IEnumerator接口,IEnumerator接口如下: 1 public interface IEnumerator 2 { 3 // 方法 4 //移到集合的下一个元素。如果成功则返回为 true;如果超过集合结尾,则返回false。 5 bool MoveNext(); 6 // 将集合设置为初始位置,该位置位于集合中第一个元素之前 7 void Reset(); 8 9 // 属性:获取集合中的当前元素10 object Cur... 阅读全文
posted @ 2012-08-15 16:50 Andy Niu 阅读(260) 评论(0) 推荐(0)
  2012年8月13日
摘要: 1、委托是优化的观察者模式观察者模式定义了一种一对多的关联关系,subject维护一个observer的集合,每个observer 内部引用subject,每次当subject发生变化,subject 遍历observer集合,通知observer 进行更新。实际上,为了面向抽象编程,会引入抽象subject和抽象observer,这里为了简单说明,就忽略抽象subject和抽象observer。观察者存在的问题:1、 要求observer具有相同的父类,但现实中,observer可能是风马牛不相及的类。2、 observer更新的方法名相同,但现实中,observer的更新方法名也可能不同。 阅读全文
posted @ 2012-08-13 14:58 Andy Niu 阅读(399) 评论(0) 推荐(0)
  2012年8月10日
摘要: 泛型分为以下几类:1、泛型类:指定类中的字段为T,方法就是操作T类型的参数。2、泛型接口:指定接口中操作T类型的参数。3、泛型方法:操作T类型的参数。4、泛型委托:委托操作T类型的参数。T是类型参数,泛型的约束就是针对类型参数T进行约束。List<T> 是开放类型,不允许实例化,类似于接口。List<string>是封闭类型,每个封闭类型都有自己的静态成员。而且需要注意的是,List<string>与List<int>是两个毫无关系的类型。List<T>继承Object,List<string>和List<int&g 阅读全文
posted @ 2012-08-10 12:03 Andy Niu 阅读(233) 评论(0) 推荐(0)
上一页 1 ··· 48 49 50 51 52 53 54 55 56 ··· 58 下一页