代码改变世界

随笔档案-2012年03月

Winform部署时强名称签名mshtml.dll无效的解决方案

2012-03-28 14:56 by 假面Wilson, 851 阅读, 收藏, 编辑
摘要: 在部署一个vs2008环境下的Winform应用程序时,因为引用一个Html编辑器,而用到了Microsoft mshtml.dll程序集, 版本为7.0.3300.0,对应文件在 C:\Vs2008的安装目录\Visual Studio Tools for Office\PIA\Office11\Microsoft.mshtml.dll C:\Vs2008的安装目录\Visual Studio Tools for Office\PIA\Office12\Microsoft.mshtml.dll 添加项目引用时可以在GAC程序集里选择,因为在安装Visual Studio Tools fo.. 阅读全文

数据库设计的三大范式

2012-03-18 11:59 by 假面Wilson, 252 阅读, 收藏, 编辑
摘要: 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。在实际开发中最为常见的设计范式有三个:1.第一范式第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如某些数据库系统中需要用到“地址”这个属性,本来直接将“地址”属性设计成一个数据库表的字段就行。但是如果系统经常会访问“地址”属性中的“城市”部分,那么就非要将“地址”这个属性重新拆分为省份、城市、详细地. 阅读全文

存储过程与函数的区别

2012-03-18 11:50 by 假面Wilson, 303 阅读, 收藏, 编辑
摘要: Oracle中差别SQL SERVER中:本质上没区别。只是函数有如:只能返回一个变量的限制。而存储过程可以返回多个。而函数是可以嵌入在sql中使用的,可以在select中调用,而存储过程不行。执行的本质都一样。 函数限制比较多,比如不能用临时表,只能用表变量.还有一些函数都不可用等等.而存储过程的限制相对就比较少 1. 一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。 2. 对于存储过程来说可以返回参数,而函数只能返回值或者表对象。 3. 存储过程一般是作为一个独立的部分来执行(EXEC执行),而函数可以作为查询语句的一个部分来调用(SELECT调用),由于... 阅读全文

数据库设计原则

2012-03-18 11:44 by 假面Wilson, 302 阅读, 收藏, 编辑
摘要: 1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。 在特殊情况下,它们可能是一对多或多对一的关系,即一张原始单证对应多个实体,或多张原始单证对应一个实体。 这里的实体可以理解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基本情况表、社会关系表、工作简历表。 这就是“一张原始单证对应多个实体”的典型例子。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E—R 图中, 处于叶子部位的实... 阅读全文

.net 构造器

2012-03-11 00:42 by 假面Wilson, 737 阅读, 收藏, 编辑
摘要: 构造器是为了创建一个类的实例。这个过程也可以在创建一个对象的时候用到:Platypus p1 = new Platypus(); 构造器可以用来在初始化对象时初始化数据成员,一个类可以有多个构造器。一个类的构造器的名称必须与该类的名称一致。要退出构造,可以使用返回语句“return;”。相反,方法的作用是为了执行java代码。 构造器和方法在下面三个方面的区别:修饰符,返回值,命名。和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用). 不同于方法的是,构造器不能有以下非访问性质的修饰:.. 阅读全文

命令式循环控制与声明式查询表达式(转)

2012-03-11 00:26 by 假面Wilson, 399 阅读, 收藏, 编辑
摘要: 转自:http://www.cnblogs.com/yangecnu/archive/2012/03/10/2389603.html For,do… while,while ,foreach是大多数编程语言中常用的循环控制语句,在C#中查询表达式也能实现同样的效果。 查询表达式使得编程风格从”命令式”变得更加的”声明式”。查询表达式定义想要的结果以及要达到该结果需要执行的方法,而不是具体的如何实现。这里重点是查询表达式,通过扩展方法,查询表达式使得能够比命令式循环构造更能够清楚的表达意图。 下面的语句显示了一个命令式风格的填充一个数组并打印到控制台上:int[] foo = new int[. 阅读全文

C#泛型

2012-03-11 00:21 by 假面Wilson, 413 阅读, 收藏, 编辑
摘要: 泛型是c#2.0的一个新增加的特性,它为使用c#语言编写面向对象程序增加了极大的效力和灵活性。不会强行对值类型进行装箱和拆箱,或对引用类型进行向下强制类型转换,所以性能得到提高。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设,所以泛型提高了程序的类型安全。它允许程序员将一个实际的数据类型的规约延迟至泛型的实例被创建时才确定。泛型为开发者提供了一种高性能的编程方式,能够提高代码的重用性,并允许开发者编写非常优雅的解决方案。 泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。泛型类和泛型方法同时具备... 阅读全文

IEnumerable和IEnumerable<T>接口

2012-03-10 23:45 by 假面Wilson, 521 阅读, 收藏, 编辑
摘要: IEnumerable和IEnumerable<T>接口在.NET中是非常重要的接口,它允许开发人员定义foreach语句功能的实现并支持非泛型方法的简单的迭代,IEnumerable和IEnumerable<T>接口是.NET Framework中最基本的集合访问器,这两个接口对于LINQ的理解是非常重要的。在面向对象的开发过程中,常常需要创建若干对象,并进行对象的操作和查询,在创建对象前,首先需要声明一个类为对象提供描述,示例代码如下所示。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;//使 阅读全文

C#的自定义事件

2012-03-08 17:22 by 假面Wilson, 328 阅读, 收藏, 编辑
摘要: 创建一个事件驱动的程序需要下面的步骤: 1. 声明关于事件的委托; 2. 声明事件; 3. 编写触发事件的函数; 4. 创建事件处理程序; 5. 注册事件处理程序; 6. 在适当的条件下触发事件。现在我们来编写一个自定义事件的程序。主人养了一条忠实的看门狗,晚上主人睡觉的时候,狗负责看守房子。一旦有小偷进来,狗就发出一个Alarm事件,主人接到Alarm事件后就会采取相应的行动。//事件发送者classDog{//1.声明关于事件的委托;publicdelegatevoidAlarmEventHandler(objectsender,EventArgse);//2.声明事件;publiceve 阅读全文

String.Format和StringBuilder的效率

2012-03-08 14:48 by 假面Wilson, 664 阅读, 收藏, 编辑
摘要: 到底String.Format还是StringBuilder效率更高一点?至于这个问题,直接叫他用强大的武器Reflector了解一下String.Format的方法.结果他很快就找出相关的代码: publicstaticstringFormat(IFormatProviderprovider,stringformat,paramsobject[]args){if((format==null)||(args==null)){thrownewArgumentNullException((format==null)?"format":"args");}Str 阅读全文

在VS2008中计算代码度量值

2012-03-08 11:43 by 假面Wilson, 278 阅读, 收藏, 编辑
摘要: 从VS2008开始,有一个新的工具可以帮助开发人员更好地了解自己编写的代码。这个工具就是“计算代码度量值” 关于该功能及几个指标的具体介绍,请参考下面的官方文档 代码度量是一组软件度量值,使开发人员可以更好地了解他们正在开发的代码。利用代码度量,开发人员可以了解哪些类型和/或方法应该返工或进行更彻底的测试。开发团队可以识别潜在的风险、了解项目的当前状态,并跟踪软件开发的进度。 软件度量值 下面的列表显示了 Visual Studio 计算的代码度量结果: 可维护性指数 – 计算一个介于 0 和 100 之间的指数值,表示维护代码的相对容易度。值越大表示可维护性越好... 阅读全文

UML小结以及基于领域模型的系统设计初步

2012-03-06 12:12 by 假面Wilson, 379 阅读, 收藏, 编辑
摘要: UMLUML不是OOA/D 也不是方法,它仅仅是一种图形表示法。其目的就是让人能看懂你的东西。每一种图,都相当于一种角度。不同的图就是从不同角度来观察系统。比如交通图和行政区划图,从不同角度观察中国。必要性是画图的原则,虽然有这种关系,但不一定要画出来,如果非要画出来,则应考虑不要影响图形的美观。活动图活动图表示的是一种流程。例子:顺序图顺序图的目的是为对象分配职责,而不是步骤的罗列。上图中,ActionServlet是没有必要画出来的,它是一个很稳定,也不是我们自己提供的,没有必要来说明它的对象职责。插在这里显然多余.如下图这样就可以了:用例和用例图用例的定义:文本形式的情节描述。用例用于需 阅读全文

UML建模-------包

2012-03-06 11:59 by 假面Wilson, 413 阅读, 收藏, 编辑
摘要: 什么是包包可直接理解为命名空间,文件夹,是用来组织图形的封装,包图可以用来表述功能组命名空间的组织层次。•在面向对象软件开发的视角中,类显然是构建整个系统的基本构造块。但是对于庞大的应用系统而言,其包含的类将是成百上千,再加上其间“阡陌交纵”的关联关系、多重性等,必然是大大超出了人们可以处理的复杂度。这也就是引入了“包”这种分组事物构造块。•包的作用是:1)对语义上相关的元素进行分组;2)定义模型中的“语义边界”;3)提供配置管理单元;4)在设计时,提供并行工作的单元;5)提供封装的命名空间,其中所有名称必须惟一在VS2010中,就用文件夹直接代表包在EA中可以想下面这样新建包•名称:每个包都 阅读全文

步步为营UML建模系列总结

2012-03-06 11:57 by 假面Wilson, 264 阅读, 收藏, 编辑
摘要: 转载自:http://www.cnblogs.com/springyangwc/archive/2012/01/16/2323723.html软件开发为什么需要UML(软件越来越复杂),开发人员仍然沿用25年前的方法来开发,这就是问题的根本所在 。--IvarJacobson掌握软件开发的方法就能不断的复制成功。你应该使用UML吗?一个字:是!旧的面向对象符号正在快速地消逝。它们还会残留在UML稳固前出版的书上面,但新的书、文章等等将会全部以UML作为符号。如果你正在使用旧的符号,你就应该在1998年间转换到UML。如果你正要开始使用建模符号,你就该直接学习UML。 --Martin Fowl 阅读全文

步步为营UML建模系列七、表图(Data model diagram)

2012-03-06 11:56 by 假面Wilson, 340 阅读, 收藏, 编辑
摘要: 转载自:http://www.cnblogs.com/springyangwc/archive/2012/01/13/2321687.html概述数据模型Profile是Enterprise Architect的UML扩展来支持关系数据库建模。它包括一些定制扩展,如:表,数据库图表,表键,触发器和约束。它是一种在UML中对关系数据库建模的技术。数据建模不仅可以对象的属性建模(比如E-R图),也可以对数据的行为建模(比如触发器Trigger、存储过程Stored Procedure).在进行数据库设计时,设计到如下几个概念:模式 Schema、主键 Primary、外键 Foreign key、 阅读全文

步步为营UML建模系列六、类图(Class diagram)

2012-03-06 11:55 by 假面Wilson, 486 阅读, 收藏, 编辑
摘要: 转载自:http://www.cnblogs.com/springyangwc/archive/2012/01/10/2317771.html概述类图(Class Diagram)是描述类、接口、协作以及它们之间关系的图,用来显示系统中各个类的静态结构。类图是定义其他图的基础,在类图基础上,可以使用状态图、协作图、组件图和配置图等进一步描述系统其他方面的特性。类图包括7个元素:类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realiza 阅读全文

步步为营UML建模系列五、时序图(Squence diagram)

2012-03-06 11:53 by 假面Wilson, 497 阅读, 收藏, 编辑
摘要: 转载自:http://www.cnblogs.com/springyangwc/archive/2011/12/29/2306034.html概述顺序图是一种详细表示对象之间以及对象与参与者实例之间交互的图,它由一组协作的对象(或参与者实例)以及它们之间可发送的消息组成,它强调消息之间的顺序。顺序图是一种详细表示对象之间以及对象与系统外部的参与者之间动态联系的图形文档。它详细而直观地表现了一组相互协作的对象在执行一个(或少量几个)用况时的行为依赖关系,以及操作和消息的时序关系。类图对对象之间的消息(交互情况)表达不够详细;详细说明对消息的表达虽然详细,但不够直观;顺序图既详细又直观,但通常只能 阅读全文

步步为营UML建模系列三、用例图(Use Case)

2012-03-06 11:52 by 假面Wilson, 335 阅读, 收藏, 编辑
摘要: 转载自:http://www.cnblogs.com/springyangwc/archive/2011/12/27/2303105.html概述用例试图描概括了用例中角色和系统之间的关系,描述了系统功能需求,角色和系统的交互以及系统的反应。官方定义:用例定义了一组用例示例,其中每个示例都是系统所执行的一系列操作,这些操作生成特定主角可以观测的值.简单的说法:一个用例就是与参与者交互的,并且给参与者提供可观测的意义的结果的一系列活动的集合,所谓的用例就是一件事情,要完成这件事情,需要做的一系列的活动;而做一件事情可以有很多不同的办法和步骤,也可能会遇到各种各样的意外情况,因此这件事情是由很多不 阅读全文

步步为营UML建模系列四、状态图(State)

2012-03-06 11:52 by 假面Wilson, 450 阅读, 收藏, 编辑
摘要: 转载自:http://www.cnblogs.com/springyangwc/archive/2011/12/27/2303842.html概述状态图(Statechart Diagram)主要用于描述一个对象在其生存期间的动态行为,表现为一个对象所经历的状态序列,引起状态转移的事件(Event),以及因状态转移而伴随的动作(Action)。一般可以用状态机对一个对象的生命周期建模,状态图用于显示状态机(State Machine Diagram),重点在与描述状态图的控制流。状态图元素(State Diagram Elements)1、状态(States) 指在对象的生命周期中的某个条件或 阅读全文

步步为营UML建模系列二、部署图(Deployment Diagram)

2012-03-06 11:51 by 假面Wilson, 279 阅读, 收藏, 编辑
摘要: 转载自:http://www.cnblogs.com/springyangwc/archive/2011/12/26/2302238.html概述部署图(deployment diagram,配置图)是用来显示系统中软件和硬件的物理架构。从部署图中,您可以了解到软件和硬件组件之间的物理关系以及处理节点的组件分布情况。使用部署图可以显示运行时系统的结构,同时还传达构成应用程序的硬件和软件元素的配置和部署方式。 一个UML部署图(对象管理组织2001)描述了一个运行时的硬件结点,以及在这些结点上运行的软件组件的静态视图。 部署图显示了系统的硬件,安装在硬件上的软件,以及用于连接异构的机器之间的中间 阅读全文

步步为营UML建模系列一

2012-03-06 11:50 by 假面Wilson, 180 阅读, 收藏, 编辑
摘要: 转自:http://www.cnblogs.com/springyangwc/archive/2011/12/21/2296232.html概述如果想搭一个狗窝,备好木料、钉子和一些基本工具(如锤子、锯和卷尺)之后,就可以开始工作了。从制定一点初步计划到完成一个满足适当功能的狗窝,可能不用别人帮助,在几个小时内就能够实现。只要狗窝够大且不太漏水,狗就可以安居。如果未能达到希望的效果,返工总是可以的,无非是让狗受点委屈。如果想为家庭建造一所房子,备好木料、钉子和一些基本工具之后,也能开始工作,但这将需要较长的时间,并且家庭对于房子的需求肯定比狗对于狗窝的需求要多。在这种情况下,除非曾经多次建造过 阅读全文

方法参数关键字:params、ref及out

2012-03-06 10:57 by 假面Wilson, 256 阅读, 收藏, 编辑
摘要: 如果在为方法声明参数时未使用 ref 或 out,则该参数可以具有关联的值。可以在方法中更改该值,但当控制传递回调用过程时,不会保留更改的值。通过使用方法参数关键字,可以更改这种行为。 params params 关键字可以指定在参数数目可变处采用参数的方法参数。在方法声明中的 params 关键字之后不允许任何其他参数,并且在方法声明中只允许一个 params 关键字。 usingSystem;classApp{publicstaticvoidUseParams(paramsobject[]list){for(inti=0;i<list.Length;i++){Console.Writ 阅读全文

Visual studio集成单元测试工具TestDriven.NET (转)

2012-03-02 17:02 by 假面Wilson, 414 阅读, 收藏, 编辑
摘要: 转自:http://www.cnblogs.com/dudu/archive/2004/12/18/78838.htmlTestDriven.NET网址:http://www.testdriven.net/下载地址:http://www.testdriven.net/Default.aspx?tabid=27博客园下载地址:http://downloads.cnblogs.com/TestDriven.NET-1.0.915d.zip使用帮助:http://www.testdriven.net/Default.aspx?tabid=29使用感受:1、与VS.NET集成得很不错, 使用起来很方便 阅读全文

图解VS2008单元测试及查看代码覆盖率(转)

2012-03-02 17:00 by 假面Wilson, 246 阅读, 收藏, 编辑
摘要: 转自:http://www.cnblogs.com/yangyancheng/archive/2010/02/25/1673410.htmlVS2008本身集成有单元测试工具,我们可以拿来用一下,首先在创建测试的方法上右键,选择创建单元测试,如下图示:在弹出的对话框中,选择要测试的方法,如下图示:单击OK按钮,即可创建一个测试工程,工程创建好后,会看到如下代码:代码这就是自动为我们创建好的代码了,很简单,可以自己修改一下测试用例,然后点击运行工程就可以运行了,会看到如下图示的运行结果:这里显示了测试的情况,还可以双击查看具体测试报告,并且可以将测试报告导出。当然,如果我们还想再添加被测试的方法 阅读全文

VS2008单元测试之NUnit集成与应用(转)

2012-03-02 16:55 by 假面Wilson, 223 阅读, 收藏, 编辑
摘要: 转自:http://www.cnblogs.com/yangyancheng/archive/2010/02/22/1671185.html首先下载NUnit,我这里用的是2.5的版本,可以去http://www.nunit.org下载最新版本。安装版:http://launchpad.net/nunitv2/2.5.3/2.5.3/+download/NUnit-2.5.3.9345.msi解压版:http://launchpad.net/nunitv2/2.5.3/2.5.3/+download/NUnit-2.5.3.9345.zip我这里用的是解压版。然后,打开VS2008,新建一个类 阅读全文
点击右上角即可分享
微信分享提示