摘要: Entity Framework是微软借鉴ORM思想开发自己的一个ORM框架。ORM就是将数据库表与实体对象(相当于三层中的Model类)相互映射的一种思想。最大的优点就是非常方便的跨数据库平台。因为该技术不需要知道用的是什么数据库,这也是.net中Linq能To任何对象的原因。这门技术为什么可以跨平台呢?是因为它只需要修改一下config文件就可以了,只要指定连接字符串,驱动程序,就可以根据不同数据库生成不同的Sql语句,当你的项目用户用到不同的数据库时,就不需要像修改SQL语句了。Entity Framwork本质还是ADO.NET操作,只是它将ADO.NET封装的更加高级了而已。学习En 阅读全文
posted @ 2013-07-02 20:41 小丑鱼1 阅读(284) 评论(0) 推荐(0) 编辑
摘要: SQL 不同于与其他编程语言的最明显特征是处理代码的顺序。在大数编程语言中,代码按编码顺序被处理,但是在SQL语言中,第一个被处理的子句是FROM子句,尽管SELECT语句第一个出现,但是几乎总是最后被处理。 每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入。这些虚拟表对调用者(客户端应用程序或者外部查询)不可用。只是最后一步生成的表才会返回 给调用者。如果没有在查询中指定某一子句,将跳过相应的步骤。下面是对应用于SQL server 2000和SQL Server 2005的各个逻辑步骤的简单描述。(8)SELECT(9)DISTINCT(11)(1)FROM[left_table 阅读全文
posted @ 2013-07-02 18:02 小丑鱼1 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 泛型是CLR 2.0的一个新特性,在CLR 1.0中,要创建一个灵活的类或方法,但该类或方法在编译期间不知道使用什么类,就得以Object类为基础。而Object在编译期间没有类型安全性, 因此必须进行强制类型转换,同时,给值类型使用Object类会有性能损失。泛型类使用泛型类型,并可以根据需要用特定的类型替换泛型类型。这就保证了类 型安全性:如果某个类型不支持泛型类,编译器就会报错。 一、泛型有以下几个优点: 1)性能 对值类型使用非泛型集合类,在把值类型转换为引用类型,和把引用类型转换为值类型时,需要进行装箱和拆箱操作。装箱和拆箱的操作很容易实现,但是性能损失较大。假如使用泛型,就可... 阅读全文
posted @ 2013-07-02 07:04 小丑鱼1 阅读(2815) 评论(0) 推荐(0) 编辑
摘要: 读了《大话设计模式》,摘录该书中讲到的设计模式几大原则,供日后使用。一、单一职责原则 就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的 职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭 受到意想不到破坏。软件真正要做的许多内容,就是发现职责并把那些职责相互分离。如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的 职责,就应该考虑类的职责分离。二、开放-封闭原则 软件实体(类、模块、函数等)应该可以扩展,但是不可以修改,即对于扩展是开放的,对于更改是封闭的。运 用开放.. 阅读全文
posted @ 2013-07-02 06:59 小丑鱼1 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 最近在学设计模式,学到创建型模式的时候,碰到单例模式(或叫单件模式),现在整理一下笔记。 在《Design Patterns:Elements of Resuable Object-Oriented Software》中的定义是:Ensurea class only has one instance,and provide a global point of access to。它的主要特点不是根据客户程序调用生成一个新的实例,而是控制某个类型的实例数量-唯一一个。(《设计模式-基于C#的工程化实现及扩展》,王 翔)。也就是说,单例模式就是保证在整个应用程序的生命周期中,在任何时刻,被指定的. 阅读全文
posted @ 2013-07-02 06:53 小丑鱼1 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 在软件设计相关领域,“堆(Heap)”的概念主要涉及到两个方面:一种是数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。另一种是垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆指的是前者,另外,这篇文章中堆中元素的值均以整形为例堆排序的时间复杂度是O(nlog2n),与快速排序达到相同的时间复杂度. 但是在实际应用中,我们往往采用快速排序而不是堆排序. 这是因为快速排序的一个好的实现,往往比堆排序具有更好的表现. 堆排序的主要用途,是在形成和处理优先级队列方面. 另外, 如果计算要求是类优先级队列(比如, 只要返回最大或者最小元素, 只有有限的插入要求等), 堆同样是 阅读全文
posted @ 2013-07-01 20:53 小丑鱼1 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 插入排序算法主要分为:直接插入算法,折半排序算法(二分插入算法),希尔排序算法,后两种是直接插入算法的改良。因此直接插入算法是基础,这里先进行直接插入算法的分析与编码。直接插入算法的排序思想:假设有序数组从小到大为array[0],array[1],array[2],....,array[n-2],array[n-1],那么将待排数值array[n]与前面的有序数组从后向前依次比较,直到在有序数组中找到小于待排数值array[n]的位置,将array[n]插入到此位置,并入组合成新的有序数组。直接插入算法--代码如下所示://直接插入排序算法(传递待排数组名,即:数组的地址。故形参数组的各种操 阅读全文
posted @ 2013-07-01 20:52 小丑鱼1 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。归并排序有两种方式:1): 自底向上的方法 2):自顶向下的方法1、 自底向上的方法(1) 自底向上的基本思想 自底向上的基本思想是:第1趟归并排序时,将待排序的文件R[1..n]看作是n个长度为1的有序子文件,将这些子文件两两归并,若n为偶数,则得到n/2个长度为2的有序子文件;若n为奇数,则最后一个子文件轮空(不参与归并)。故本趟归并完成后,前n/2 - 1个有序子文件长度为2,但最后一个子文件长度仍为1;第2趟归并则是将第1趟归并所得到的n/2个有序的子文 阅读全文
posted @ 2013-07-01 20:51 小丑鱼1 阅读(291) 评论(0) 推荐(0) 编辑
摘要: 简单的冒泡排序算法,代码如下://冒泡排序(从数组的起始位置开始遍历,以大数为基准:大的数向下沉一位)privatestaticvoid BubbleSortFunction(int[] array) { try { int length = array.Length; int temp; bool hasExchangeAction; //记录此次大循环中相邻的两个数是否发生过互换(如果没有互换,则数组已经是有序的) ... 阅读全文
posted @ 2013-07-01 20:49 小丑鱼1 阅读(473) 评论(0) 推荐(0) 编辑
摘要: 想到了快速排序,于是自己就用C#实现了快速排序的算法:快速排序的基本思想:分治法,即,分解,求解,组合 .分解:在 无序区R[low..high]中任选一个记录作为基准(通常选第一个记录,并记为keyValue,其下标为keyValuePosition),以此为基准划分成两个较小的 子区间R[low,keyValuePosition- 1]和R[keyValuePosition+ 1 , high],并使左边子区间的所有记录均小于等于基准记录,右边子区间的所有记录均大于等于基准记录,基准记录无需参加后续的排序。而划分的关键是要求出 基准记录所在的位置keyValuePosition.求解:通过 阅读全文
posted @ 2013-07-01 20:48 小丑鱼1 阅读(256) 评论(0) 推荐(0) 编辑