代码改变世界

线性结构基础总结

2011-09-10 01:09 by lujiao_cs, 579 阅读, 0 推荐, 收藏, 编辑
摘要:线性结构基础总结一:线性结构的存储1)连续存储(数组) 什么叫做数组:元素类型相同、大小相等2)离散存储(链表) 树和图的基础二:链表1.什么叫链表 n个结点离散分配,彼此通过指针相连。每个结点只有一个前驱结点,各个结点只有一个后驱结点(首结点没有前驱结点,尾结点没有后驱结点)2. 专业术语 首节点:第一个有效节点 尾节点:最后一个有效节点 头节点:在首节点前面,不存放数据,它指向首节点,目的是简化算法,并不存放有效数据头指针:指向头结点的指针变量 尾节点:指向尾结点的指针变量2)链表的分类 单链表: 双链表:每个节点有两个指针域(可以同时指向前后结点) 循环链表:能通过... 阅读全文

C#面向对象设计模式纵横谈 笔记15 Command 命令(行为型模式)

2011-09-10 00:09 by lujiao_cs, 380 阅读, 0 推荐, 收藏, 编辑
摘要:耦合与变化耦合是软件不能抵御变化灾难的根本性原因。不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系。动机(Motivation)在软件构建过程中,“行为请求者”与“行为实现者”通常呈现一种“紧耦合”。但在某些场合——比如需要对行为进行“记录、撤销/重做(undo/redo)、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,可以实现二者之间的松耦合。(“直接依赖”——>“间接依赖”)意图(Intent)将一个请求封装为一个对象,从而使你可用不同的请求对客户(行为的请求者)进行参数化; 阅读全文

数据访问技术系列课程 笔记(6) 处理数据集

2011-09-08 23:53 by lujiao_cs, 367 阅读, 0 推荐, 收藏, 编辑
摘要:一)构建DataSet和DataTableDataSet、DataTable和DataColumn的概念1)数据集(DataSet)a)与关系数据库相似的对象模型保存数据:表、行、列b)可以在数据集中定义约束条件与关联2)数据表(DataTable)a)代表了数据集中的表,可以从数据源加载数据b)由数据列组成3)数据列(DataColumn)a)由DataType属性指定对应的数据类型b)需要保持数据列的数据类型与数据库列的类型匹配DataSet对象模型1)普通集合a)数据库中的表(DataTable对象的集合)b)关联(数据关联对象的集合)2)支持数据绑定到Web或者Windows控件3)数 阅读全文

C#面向对象设计模式纵横谈 笔记8 Bridge 桥接(结构型模式)

2011-09-04 21:41 by lujiao_cs, 269 阅读, 0 推荐, 收藏, 编辑
摘要:抽象与实现 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。抽象B ——稳定实现细节b ——变化问题在于如果抽象B由于固有的原因,本身并不稳定,也有可能变化,怎么办?举例来说假如我们需要开发一个同时支持PC和手机的坦克游戏,游戏在PC和手机上功能都一样,都有同样的类型,面临同样的功能需求变化,比如坦克可能有多种不同的型号:T50,T75,T90等。对于其中的坦克设计,我们可能很容易设计出来一个Tank的抽象基类,然后各种不同型号的Tank继承自该类(利用抽象类和具体类表达变化)://抽象部分public abstract class Tank{ public abstract ... 阅读全文

一个小算法

2011-09-04 00:31 by lujiao_cs, 250 阅读, 0 推荐, 收藏, 编辑
摘要:要求:将一个整数数组中的奇数和偶数分别放置到数组的前部和后部( 算法复杂度为O(n) ) /// <summary> /// 将数组中的奇数和偶数分别放置到前部和后部 /// </summary> public class OddAndEvenExchange { /// <summary> /// 待处理的数组 /// </summary> public int[] numberLst; /// <summary> ... 阅读全文

C#面向对象设计模式纵横谈 笔记7 Adapter 适配器(结构型模式)

2011-08-22 00:59 by lujiao_cs, 299 阅读, 0 推荐, 收藏, 编辑
摘要:适配(转换)的概念无处不在 适配,即在不改变原有实现的基础上,将原先不兼容的接口转换为兼容的接口。动机(Motivation)在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。如何应对这种“迁移的变化”?如何既能利用现有对象的良好实现,同时又能满足新的应用环境所要求的接口?意图(Intent)将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 ——《设计模式》GoF例说Adapter应用Codesin.NET /// <summary> 阅读全文

C#面向对象设计模式纵横谈 笔记6 Prototype 原型(创建型模式)

2011-08-20 23:38 by lujiao_cs, 267 阅读, 0 推荐, 收藏, 编辑
摘要:依赖关系的倒置抽象不应该依赖于实现细节,实现细节应该依赖于抽象。1)抽象A直接依赖于实现细节b(很容易出现这种情况)人 ——> 陶瓷水杯2)抽象A依赖于抽象B,实现细节b依赖于抽象B(将实现细节b抽象出一个抽象B)人 ——> 水杯 <——陶瓷水杯动机(Motivation) 在软件系统中,经常面临着“某些结构复杂的对象”的创建工作;由于需求的变化,这些对象经常面临着剧烈的变化,但是它们却拥有比较稳定一致的接口。 如何应对这种变化?如何向“客户程序(使用这些对象的程序)”隔离出“这些易变对象”,从而使得“依赖这些易变对象的客户程序”不随着需求改变而改变?意图(Intent)使用 阅读全文

C#面向对象设计模式纵横谈 笔记5 Factory Method 工厂方法(创建型模式)

2011-08-19 18:40 by lujiao_cs, 264 阅读, 0 推荐, 收藏, 编辑
摘要:写在前面对设计模式的误区:对设计模式结构和代码的追求,不能抓住设计模式的要点,遇到变化的情况可能就不知道设计模式如何应用、代码改如何变化。因为不同的代码可能表示相同的设计模式,而相似的代码可能表示不同的设计模式。所以,设计模式应该关注耦合关系。设计模式和语言关系不大,任何语言都可以表达设计模式,只不过面向对象语言更加富于表现力。对代码的关注应该在理解了设计模式本身理念之后。从耦合关系谈起耦合关系直接决定着软件面对变化时的行为:1)模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改。<图1>2)模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其 阅读全文

C#面向对象设计模式纵横谈 笔记4 Builder 生成器(创建型模式)

2011-08-14 21:47 by lujiao_cs, 263 阅读, 0 推荐, 收藏, 编辑
摘要:Builder模式的缘起1)假设创建游戏中的一个房屋House设施,该房屋的构建由几个部分组成,且各个部分要富于变化。2)如果使用最直观的设计方法,每一个房屋部分的变化,都将导致房屋构建的重新修正。动机(Motivation) 在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定。 如何应对这种变化?如何提供一种“封装机制”来隔离出“复杂对象的各个部分”的变化,从而保持系统中的“稳定构建算法”不随着需求改变而改变?(在新的需求动态变化的过程中,分析处系统比 阅读全文

数据访问技术系列课程 笔记(5) ADO.NET 非连接方式进行数据访问

2011-07-09 19:00 by lujiao_cs, 484 阅读, 0 推荐, 收藏, 编辑
摘要:一)配置DataAdapter以检索信息:SelectDataAdapter的作用: 填充数据集合,将数据的更改提交到数据源。可以使用多个适配器去填充,也可以将不同的数据源的数据集成到数据集中(数据集成),然后提供给前端程序使用。<图1>1)数据适配器是数据集与数据源交互的桥梁 a)使相当于数据源本地拷贝的数据集可以与数据源进行交互2)为数据库提供的主要两种数据适配器 a)SqlDataAdapter:不经过OLEDB层(标准访问层)直接与SQLServer交互,速度较OleDbDataAdapter快 b)OleDbDataAdapter:适用于任何可以用OLEDB数据提供者访问 阅读全文