08 2012 档案
摘要:定义为其他对象提供一种代理以控制对这个对象的访问。理解代理模式也是经常在我们生活中会发生的和编程中经常会接触到的事情。也许你没意识到这就是代理模式,但我想你应该接触过和使用过了。1、比如你喜欢一个女孩子,你不敢直接表白,于是你找了一个朋友代你去表白,那个代你表白的朋友就相当于一个代理。2、再从宏观一点的角度看,我们的操作系统也是一个代理模式,它是基于硬件和软件之间这么一个中间层、代理层。3、如果你接触过三层架构,那我想你一定知道哪三层,模型层(Model)、数据访问层(DAL)、业务逻辑层(BLL)。其实业务逻辑层就是相当于一个代理层。4、再比如生活中的这么一个例子,在大学校园里有些同学会做这
阅读全文
摘要:定义策略模式定义一系列算法,把它们一个个封装起来,并且使它们可互相替换,该模式使得算法可独立于使用它的客户而变化。动机在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中,将会使对象变得异常复杂;而且有时候支持不使用的算法也是一个性能负担。如何在运行时根据需要透明地更改对象的算法?将算法与对象本身解耦,从而避免上述问题?看下面的策略者模式的结构图和基本代码,策略者模式比较简单,下面只是给出基本的代码实现。策略者模式结构图:策略模式的定义说的实在太抽象了,可能你读过去的时候捉不住他的要点。在大话设计模式里这么说的,更好理解一些:策略模式是一种定义了一系列算法的
阅读全文
摘要:适配器模式分为两种,一种是对象的适配器模式,另一种是类的适配器模式。我们知道C#是单继承的,C++是多继承的。类的适配器适合用于多继承的,所以这篇文章就只讲对象的适配器。我们先来理解一下什么是适配器模式?1、在我们的生活中其实经常需要用到适配器模式的地方,例如我们的手机充电器,我们知道我国的电源电压是220V的,但是手机电池能接受的电压是3-7V,为了使得手机电池能接受220V的电源电压,需要一个变压器,把220V电压转成3-7V的电压,那么这个变压器我们就可以理解成是一个适配器。(将不适合的电压变成适合手机电池的电压)(手机充电器)2、再举个例子,春晓家里有三个房间,一开始这三个房间都是睡房
阅读全文
摘要:其实有很多设计模式并没有像网上一些文章那样写的很复杂,理解了一下后发现他的实现原理很清晰。比如建造者设计模式。 建造者设计模式又叫生成器模式,我们不要叫他生成器模式,我觉的这个名字不好听。我比较喜欢建造者设计模式这个名字。 先来了解一下建造者设计模式是什么? 假设你是一个帮别人组装电脑主机的人,那么可以说,这时你就是充当建造者设计模式里指挥者这么一个角色。试想一下你要怎么样帮客户组装一台主机?装主机的人一般会先确定客户需要的主机配置,例如客户要求主板用华硕的,内存用金斯顿的,硬盘用西部数据的,CPU用因特尔的,电源用航嘉的,机箱用长城的……,先确定好后,再进行组装主机。 作为装主机...
阅读全文
摘要:我接触的设计模式不多,在我接触不多的设计模式里,我觉的单例模式和模板方法模式是最好理解的两种设计模式了。我们先通过文字简单的理解一下什么是模板方法模式,然后用C#代码来写一个小例子加深一下了解,当然所谓的加深是相对初学者的加深。先从字面上理解一下什么是模板方法设计模式,什么是模板?1、我想很多人都懂甚至接触过,特别是对于大多数中学时考试成绩不理想的同学包括我,在那时候总是希望优秀的同学完成的作业借我们抄一下,然后我们只是在自己的作业本上改上自己的名字和简单的必要修改,那便可以交作业了,优秀同学已经写好的作业我们可以看作是模板,简单的必要修改和改名字这部份我们可以当作需要实现的虚类。2、还有例如
阅读全文
摘要:昨晚有去想一下,实现数据库切换的其他方法。这个方法不是我想到,以前看过别人这么做过。然后回忆回忆着就写出来了。 好了,说一下他实现的方法。当然他有一个比较大的缺点在后面说一下。在ADO.NET里有很多操作数据库的类。 1、例如以MSSQLSERVER来讲就有SqlConnection、SqlDataReader、SqlCommand等操作数据库相关的类,只要你VS里面右键这些类名选转到定义,不停转到定义后会发现,SqlConnection实现的是IDbConnection接口,SqlDataReader实现IDataReader接口,SqlCommand实现的是IDbCommand接口...
阅读全文
摘要:目前我对设计模式方面了解的不多,会的设计模式五根手指头就能数完。怎么写好设计模式让读者看懂真的要讲究一下技巧,不能单纯的贴代码并对代码作解释,我觉的《大话设计模式》就是一本讲设计模式很好的书,那本书通过故事的形式讲解让人联想思考下去。由于水平有限,所有这篇文章没什么讲解的,只是写一下自己使用抽象工厂实现多数据库切换的实现过程。例子的目的 有时候项目里使用的是ACCESS数据库,可是突然有一天想更改成MSSQLSERVER数据库,为了防止整站代码重写这种局面,可以使用抽象工厂+反射实现修改一下配置字符串就能实现ACCESS的MSSQLSERVER数据库的切换。实现过程1、数据库的建立为了例子的.
阅读全文
摘要:就在不久前,我在博客园看到一个名为英雄默问出处的博客。他里面有两篇是介绍用C#来操作事务的。用C#来操作事务和用SQL语句来操作事务原理是一模一样的。总结起来有三个步骤:1.开启事务 2.判断执行的SQL语句有没有出错,如果没有就将执行完SQL语句后提交事务3.如果有错,那么就回滚事务 在操作事务上还分为本地事务和分布式事务。我从网上百度下来他们的定义,如下: 本地事务:将多项任务绑定在一起,使其作为单个工作单元来执行。 分布式事务:分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。 上面的定义没看懂也没关系,其实我看这些定义...
阅读全文
摘要:我接触.NET编程已经有两年了,在这之前就会一点ASP和SQL语句。刚接触时在网上请教一个从事ASP.NET工作不久的网友,什么是事务? 当时他没答上。事实上我接触.NET这两年里,做一些小例子,也不用到事务。所以我对事务是什么?为什么要有事务?还是这几天才清楚。在理解什么是事务前,先来考虑这么一个问题。为什么要有事务? 假设我们在进行银行转帐的时候,至少会执行两条SQL语句,一条SQL语句是减少转帐人里帐户的钱,一条是增加收帐人里帐户钱。 例如有一个朋友要转帐1000元:1、那么转帐人的银行里的钱减少1000 2、那么收帐人的银行里的钱增加100...
阅读全文
摘要:写这篇存储过程的前参看了五六篇别人写的文章,看完后学到一些以前没有发现的东西,原来存储过程里有系统存储过程,原来存储过程还可以有返回值,我将把我从别人那里看到的,重新总结一下写出来。 什么是存储过程 如果你接触过其他的编程语言,那么就好理解了,存储过程就像是方法一样。竟然他是方法那么他就有类似的方法名,方法要传递的变量和返回结果,所以存储过程有存储过程名有存储过程参数也有返回值。存储过程的优点: 存储过程的能力大大增强了SQL语言的功能和灵活性。 可保证数据的安全性和完整性。 通过存储过程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。 通过存储过程可以使相关的动作在...
阅读全文
摘要:当作学习总结吧!以下的内容很早以前就有人写过。但我还是要再写一下,一是练一下自己写这方面文章的能力,二是对知识点的学习有一下重温和加深。SQL语言也跟其他编程语言一样,拥有变量、分支、循环等控制语句。之前我不清楚应该把这些归到哪个名词上,直到前晚我看到有篇文章是在讲SQL语句批处理,所有我就把SQL里的变量、分支、循环等控制语句归到批处理来。在SQL语言里面把变量分为局部变量和全局变量,全局变量又称系统变量。先来看一下局部变量: 局部变量使用declare关键字给变量声明,语法非常简单:declare @<变量名> <变量类型> [,@<变量名> <变
阅读全文
摘要:“视图是由基于一个或多个表的一个查询所定义的虚拟表,它将查询的具体定义保存起来,视图不包含任何数据。” 前面这句是我在网上找的视图的定义,对于初接触MSSQLSERVER视图的人,一眼读过去,可能也不解其意,不过没有关系,大概记住就行了,在实际使用过后再来看这句,你就知道他在讲什么了。 视图在操作上和数据表没有什么区别,但两者的差异是在其本质上的。数据表是实际存储记录的地方,然而视图并不是保存任何记录,它存储的实际上是查询语句。相同的数据表,根据不同用户的不同需求,可以创建不同的视图。 视图的作用主要是用来查询,但也可以对视图进行增删改的操作,对视图的增删改操作实际是通过视图的变化引起基表数.
阅读全文
摘要:SQL提供了很多内置的函数,通过这些函数能进行各种复杂的运算和操作。对数据的处理变得灵活。在学习的过程中没有必要记住那么多的数学函数,记住一些常用的就行,在实际的应用中需要到哪些再进行查找。SQL函数的分类可以分为:字符串函数聚合函数数学函数日期函数字符串函数其他函数字符串函数字符串长度:LENGTH字符串转换为小写:LOWER字符串转换为大写:UPPER截去字符串左侧空格:LTRIM截去字符串左侧空格:RTRIM截去字符串两侧空格:TRIM取子字符串:SUBSTRING从左侧取子字符串:LEFT从右侧取子字符串:RIGHT字符串的替换:REPLACE由字符得到ASCII码:ASCII由ASC
阅读全文
摘要:为了减少数据冗余和使数据库内容变的严谨,MSSQL数据库里引入了关系和约束。我们平时做一些小程序,需要使用到MSSQL数据库的时候大多没有严格去规划一下数据库的设计,但是真正开发的时候需要你严格的进行需求分析后再进行数据库设计,好的数据库设计对于维护和未来对程序的扩展有着非常大的好处。 所以我觉的学习一下约束和关系还是挺重的。我是现学现卖,将学习的过程记录一下:在学习之前先背几个单词,在需要在SQL语句写的时候用到:Alter:改变Primary:主要Constraint:约束Unique:唯一的、独特的Foreign::外国的,外交的Reference:参考,引用,提及Cascade:层叠.
阅读全文