数据库事务并发带来的问题
摘要:数据库事务并发带来的问题有:更新丢失、脏读、不可重复读、幻象读。假设张三办了一张招商银行卡,余额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
阅读(7503)
推荐(2) 编辑
IComparable 与 IComparer
摘要:IComparable 接口,里面含有比较方法 intCompareTo(Objectobj ),可以调用.sort()方法进行排序。类如果实现了这个接口中的CompareTo(),就可以说明该类对象是可以比较的。IComparer 接口,提供另一种排序方式,intCompareTo(Objectx, Objecty),将实现了IComparer接口的实例作为参数传递给sort,进行排序。需要说明的是,上述情况比较的是Object,类型不安全,因此实际应用中应该使用泛型接口。
阅读全文
posted @
2012-08-24 15:01
Andy Niu
阅读(221)
推荐(0) 编辑
扇入与扇出
摘要:扇入:该模块被调用的次数,扇入大,说明该模块的复用性好。扇出:该模块调用其他模块的个数,扇出大,说明该模块的业务逻辑复杂。因此,扇入大是好事,扇出大是坏事。
阅读全文
posted @
2012-08-24 14:24
Andy Niu
阅读(831)
推荐(0) 编辑
常用的设计模式
摘要:常用的设计模式有哪些?很多时候一时想不起来。因此编个顺口溜方便记忆。组织(组合模式)经过观察(观察者模式),命令(命令者模式)我,找个代理(代理模式),建个工厂(工厂模式),生产单例产品(单例模式),然后迭代(迭代模式)检查所有的产品,不合格的产品要适配(适配器模式)一下。
阅读全文
posted @
2012-08-24 14:17
Andy Niu
阅读(252)
推荐(0) 编辑
理解 IEnumerable 与 IEnumerator
摘要:我们在编码中,经常使用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
阅读(255)
推荐(0) 编辑
理解委托
摘要: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
阅读(394)
推荐(0) 编辑
理解泛型
摘要:泛型分为以下几类: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
阅读(226)
推荐(0) 编辑
理解内连接和外连接 引用
摘要:在实际项目中对数据库进行查询是再常见不过的东西了,但是根据不同的条件查询所用的语句也是千差万别的,最常见的便是数据库中多表之间的联合查询。说到联合查询就不得不提一下查询语句中的表连接关系。我们所用的多表查询语句中表间关系无非有两种,一种为内连接(inner join),另一种为外连接(outer join)。具体细分一下外连接又可分为:左外连接(left join)、右外连接(right join)、全连接(full join),另外还常见的形式有left outer join,right outer join,full outer join。他们之间的具体关系可以下图简单表示: ...
阅读全文
posted @
2012-08-10 11:38
Andy Niu
阅读(556)
推荐(0) 编辑
C# 理解 abstract、virtual、override
摘要:abstract、virtual、override三个关键字涉及到继承,采用父亲和儿子类比。abstract : 父亲告诉儿子,我只是声明要做这个事情,自己没有做,所以你必须去做这个事情。virtual : 父亲告诉儿子三种情景,a) 这个事情我做了,如果你满意的话,就不需要做了,直接继承就好了;b) 这个事情我做了,如果你有些不满意,可以在我的基础上,修改一下(使用override重写);c) 这个事情我做了,如果你非常不满意,就自己重新做一遍吧(使用new 隐藏父亲的实现)。override : 父亲使用virtual修饰方法,儿子对父亲做的事情不满意,在父亲的基础上,使用override
阅读全文
posted @
2012-08-10 11:34
Andy Niu
阅读(285)
推荐(0) 编辑