- 博客(27)
- 收藏
- 关注
DWR2.0跨域访问
一、服务端web.xml: <init-param> <param-name>crossDomainSessionSecurity</param-name> <param-value>false</param-value></init-param><init-param> &
2011-02-15 09:49:14
208
设计模式概述
一、模式是什么?在某种环境下对某个问题的答案。这里有三个关键字:环境、问题和答案。当然只有那些重复出现的典型问题才有研究的价值。二、模式的分类1.创建模式创建模式是对类的实例化过程的抽象。2.结构模式结构模式描述如何将类或对象结合在一起形成更大的结构。3.行为模式行为模式是对不同对象之间划分责任和算法的抽象...
2011-01-14 13:37:21
121
迪米特法则
一、什么是迪米特法则?每个软件实体对其他的实体只有最少的了解,而且仅限于那些与本实体密切相关的软件实体 。 也可说成:只与直接的朋友通信 。二、狭义迪米特法则 如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中的一个类需要调用另一个类的方法,可通过第三者来转发。 狭义迪米特法则有一个明显的缺点:会在系统里产生大量的小方法,而且很可能散落在各个...
2011-01-13 17:22:27
130
合成/聚合复用原则
一、什么是合成/聚合复用原则?尽量使用合成/聚合,而不是使用继承。二、两种基本复用类型面向对象的设计里,复用已有的设计和实现有两种方式,一是继承,二是合成/聚合。使用继承复用有两个缺点:(1)超类的实现发生了改变,会影响到子类。(2)从超类继承而来的实现是静态的,不可能在运行时发生改变,不够灵活。由于这些缺点,推荐使用合成/聚合。...
2011-01-13 17:15:20
171
接口隔离原则
一、什么是接口隔离原则? 使用多个专门的接口比使用单一的总接口要好。二、接口隔离原则详解 “接口”这个词有两个意思,一是指Java语言中的interface语言结构;另一个就是一个类型的所有方法特性的集合。 对于第一种意思,接口隔离原则讲的是提供必要的接口,需要什么,提供什么。 对于第二种意思,每个接口只负责一种责任。...
2011-01-13 17:11:36
97
依赖倒转原则
一、什么是依赖倒转原则?抽象不应当依赖于细节;细节应当依赖于抽象 。或者说:要针对接口编程,不要针对实现编程 。二、为什么叫做依赖倒转原则? 传统的过程性系统设计倾向于使高层次的模块依赖于低层次的模块;抽象层次依赖于具体层次。依赖倒转原则就是要把这种依赖关系倒转。 抽象层包含的是系统的商务逻辑和宏观的、对整个系统来说最重要的战略性决定,是必然性的实现;而具体层次则含...
2011-01-13 17:06:25
136
里氏代换原则
一、什么是里氏代换原则? 一个软件实体如果使用的是一个基类的话,那么一定适用于其子类,而且它根本不能察觉出基类对象和子类对象的区别。 这条原则用来判断两个类之间是否是父子关系。如果不满足里氏代换原则,那么使用继承肯定有问题。 ...
2011-01-13 16:58:18
152
原创 开-闭原则
一、什么是开-闭原则?一个软件实体应当对扩展开放,对修改关闭。 也就是说,在设计一个模块时,应当使这个模块可在不被修改的前提下被扩展。换言之,就是在不必修改原有代码的情况下给模块添加新行为。开-闭原则是面向对象设计最核心的原则。 二、怎样做到开-闭原则? 关键是抽象化。可给系统定义出一个不再更改的抽象设计,然后在此抽象设计的基础上可提供任意数...
2011-01-13 16:56:00
146
软件的可维护性和可复用性
面向对象的软件设计的两个核心要素就是软件的可维护性和可复用性。在支持可维护性的同时,提高系统的复用性。 一、软件系统的可维护性 软件系统的可维护性具体体现在三个目标上:可扩展性 新的功能可很容易地加入到系统中灵活性 允许代码的修改平稳发生可插入性 可很容易地将一个模块抽出去,然后用另一个实现了同样接口的模块代替...
2011-01-13 16:37:39
424
原创 内联和外联的区别
1.内联a inner join b on a.id=b.id查两张表都有的id记录。2.左外联a left join b on a.id=b.id只要a表有,而b可没有对应的记录。此时b表中的所有字段用null代替。3.右外联a right join b on a.id=b.id和左外联相反,只要b表有,...
2011-01-13 13:23:16
2691
Shapefile格式
ESRI Shapefile是GIS中最常用的数据格式之一。但Shapefile格式并不是一个公开标准。 一个完整的Shapefile数据实际上最少包含3个独立却相互关联的文件。shp 存储矢量几何数据。Shapefile的地理数据必须是同一类型的。shx 索引文件。.shp文件中和每一条记录在.shx中都有一条对应的条目,它记录着偏移量和记录长度。...
2011-01-12 19:35:06
250
09 属性、资源过滤和profile
为了构建的灵活性, Maven支持属性、资源过滤和Profile。 一、属性1.属性的引用属性的引用很简单,如:${属性名}2.属性的分类(1)内置属性:常用的内置属性有:${basedir} 表示项目根目录 ${version} 表示项目版本(2)POM属性用户可使用该类属性引用POM文件中的对应元素的值。如:${project.artifacctId}就对应了<pro...
2010-12-26 07:38:05
189
08 使用Maven构件Web应用
一、创建web项目可以使用maven-archetype-webapp来创建一个最简单的web应用。 二、web项目配置<modelVersion>4.0.0</modelVersion><groupId>com.test</groupId><artifactId>demo</artifactId>...
2010-12-21 21:30:03
130
原创 07 使用Maven进行单元测试
一、maven-surefire-plugin简介 maven-surefire-plugin支持JUnit和TestNG。默认情况下,maven-surefire-plugin的test目标会自动执行测试源码路径下所有以Test开头、Test或TestCase结尾的的Java类。 二、跳过测试 如果想跳过测试阶段,可用:mvn package -DskipTes...
2010-12-16 22:03:53
217
原创 06 聚合和继承
一、Maven多模块 当我们一个项目有多个模块时,我们想使用一个命令即可对多个模块进行构建。Maven聚合就是为了满足该需求的。 假设我们有两个模块A和B。想使用一个命令就构建A和B两个模块,我们需要创建一个额外的名为C的模块,然后通过该模块构建整个项目的所有模块。作为一个模块,它必须有自己的POM文件,但作为一个聚合项目,它的POM又有其特殊地方。如:<projec...
2010-12-15 21:55:17
140
05 Maven插件
一、.插件目标 插件以独立的构件构件形式存在,为了能够利用代码,一个插件往往能够完成不能任务的多个功能。每个功能就是就是一个插件目录。 二、.插件绑定 Maven的生命周期和插件相互绑定,用以完成实际的构建任务。准确的说,是生命周期的阶段和插件的目标相互绑定。 1.内置绑定 为了让用户不使用任何配置就能构建Maven项目,Maven在核心为一些主要的生...
2010-12-15 20:07:53
138
04 生命周期
一.概述 Maven生命周期是为了对所有的构建过程进行统一和抽象。Maven的生命周期一套高度完善、易扩展的生命周期。几乎所有项目的构建,都能映射到这样一个生命周期上。 Maven的生命周期是抽象的,也就是说生命周期本身不做任何事。实际的任务是由插件来完成。 二.三套生命周期Maven中有三套相互独立的生命周期,分别是:clean 用于清理项目...
2010-12-15 08:30:45
121
03 Maven仓库
一、仓库的分类 Maven的仓库分成本地仓库和远程仓库。1.本地仓库 当Maven根据坐标寻找构件时,首先会从本地仓库寻找;默认情况下,每个操作系统用户在自己的用户目录下都有一个.m2/repositroy/仓库目录。如果想指定其他路径。修改~/.m2/setting.xml,设置localRepository 元素,如:<settings> <l...
2010-12-13 20:14:22
122
02 坐标和依赖
一、坐标Maven中的坐标用来标识构件。Maven中的任意构件都有一个唯一的坐标,Maven可以通过这个坐标在仓库中查找相关构件,我们开发自己的项目时也需要一个坐标。坐标由groupId、artifactid、version、packaging、classifier构成,如:<groupId>org.sonatype.nexus</groupId><artif...
2010-12-13 17:47:38
131
01 Maven安装和配置
一、在Windows上安装Maven1.JDK(1)要求1.4或以上版本;(2)要求JAVA_HOME环境变量。 2.下载Maven Maven3.0几乎完全兼容Maven 2,所以可以直接使用Maven 3。 3.安装(1)解压到任意目录下;(2)设置M2_HOME环境变量,指向Maven的安装目录;(3)如果想在CMD中执行运行mv...
2010-12-10 10:37:29
100
005 Python语法之流程控制
1.if语句x = int(input("Please enter an integer:")) if x<0: x = 0 print("不负,变成0")elif x == 0: print("Zero")elif x == 1: print("Single")else: print('More') 2.whi...
2010-12-05 22:29:56
111
004 Python语法之内置数据类型(三)——Iterator类型
1.概述 Python支持容器的迭代。这个是使用两种不同的方法来实现;这些方法允许用户自定义类支持迭代。序列全部支持迭代方法。一个container对象想支持迭代,需要方法:container.__iter__() 该方法返回一个iterator对象。这个对象必须支持后面所说的迭代协议。一个容器支持不同的迭代,可以提供额外方法。(例如树形结构支持深度优先...
2010-12-02 19:02:20
172
003 Python语法之内置数据类型(二)——布尔类型
1、概述布尔类型整数类型的一个子类型。有两具值True和False。 2、真值测试在if或while或者下面介绍的布尔操作中可以使用任意对象。下面的值被认为当作False:NoneFalse等于0的数值,0,0.0,0J空序列,'',(),[]空映射,{}自定义类的实例,如果有_bool__或__len()__方法返回值为False中0其他类型...
2010-11-30 23:15:09
105
002 Python语法之内置数据类型(一)——数字类型
1.整数概述有三种不同的数据类型:整数、浮点数和复数。布尔值是整数的子类型。(标准库还包含:fraction表示有理数、decimal表示自定义精度的浮点数。)三种数据的构造函数是int()、float()和complex()。Python支持数字类型的混合算术。此时,“窄类型”会被转化成另一种类型,整数比浮点“窄”,浮点数比复数“窄”。...
2010-11-30 22:40:26
103
001 Python入门之启动Python(未完成)
启动Python有三种办法。最简单的是交互式的启动解释器,每次输入一行Python代码来执行。另一种启动Python的方式是运行Python脚本。第三种办法就是在IDE中运行Python。 一.交互式解释器1.Unix衍生系统(Linux、MacOSX、Solaris、FreeBSD等)(1)把Python执行文件添加到系统搜索路径中(2)在shell终端输入python(2...
2010-11-28 21:41:58
133
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人