- 博客(92)
- 收藏
- 关注
原创 Thinking in UML实践——系统分析
一、确定系统用例 1.确定用例 我们可以从业务用例中抽象出系统用例,首先要分析业务用例场景,从中提取出可以用计算机处理的单元 2.描述用例 描述系统用例的方式和描述业务用例的方式一样,不同的是视角不同,视角应该偏向于理解系统、描述系统。 二、分析业务规则 分析业务规则的目的是发现那些对系...
2012-03-16 16:08:12
174
原创 Thinking in UML实践——需求分析
一、关键概念分析 需求分析的主要工作就是找到关键业务用例,分析并建立业务模型。 1.建立概念模型 1.1获取概念用例 首先找出与核心业务相关的关键业务用例,然后为这些关键业务用例找出概念用例。 1.2分析概念用例 分析概念用例的方法与分析业务用例的方法一致,...
2012-03-16 15:47:02
231
原创 Thinking in UML实践——获取需求
一、准备工作 1、了解问题领域 1.1了解业务概况 业务概况可以在《前景》文档中体现 1.2整理业务目标 2、涉众分析 2.1发现和定义涉众 编写涉众分析报告,包括《涉众概要》和《涉众简档》 3、制定需求调研计划 ...
2012-03-16 14:12:52
306
原创 HibernateDaoSupport和JdbcDaoSupport
HibernateDaoSupport与JdbcDaoSupport 博客分类:数据库应用Java配置管理Spring编程Hibernate Dao 的支持类可以有好多,如: JdbcDaoSupport , HibernateDaoSupport ,JdoDaoSupport等,下面对最常用的HibernateDaoSupport与JdbcDaoSu...
2012-03-07 10:14:52
135
原创 Spring中使用HibernateCallback
HibernateTemplate还提供一种更加灵活的方式来操作数据库,通过这种方式可以完全使用Hibernate的操作方式。这种灵活方式主要是通过如下两个方法完成的: (1) Java代码 Object execute(HibernateCallback action) Object execute(HibernateCallback action)(2...
2012-03-07 10:05:00
106
原创 CGLIB简介
CGlib是什么? CGlib是一个强大的,高性能,高质量的Code生成类库。它可以在运行期扩展Java类与实现Java接口。 当然这些实际的功能是asm所提供的,asm又是什么?Java字节码操控框架,具体是什么大家可以上网查一查,毕竟我们这里所要讨论的是cglib, cglib就是封装了asm,简化了asm的操作,实现了在运行期动态生成新的class。 可能大家还感觉不到它的强大,现在就告诉你...
2012-03-02 14:57:50
158
原创 final方法参数
在看《java编程思想》final这一块时,发现final方法参数这个在项目中应该比较常用到的,所以在博客上记录下。 先直接上代码: Java代码 public class ParamTest { public void getParamName(final User user){ //...
2012-03-02 09:57:27
139
原创 JVM内存管理:深入Java内存区域与OOM
Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来。 概述:对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们即是拥有最高权力的皇帝又是执行最基础工作的劳动人民——拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的维护责任。 对于Java程序员来说,不需要在为每一个new操作去写配对的delete/f...
2011-12-30 16:15:57
94
原创 Apache+Tomecat集群配置
早前就解了Apache和Tomcat可以搭建集群,可以负载均衡,升级就不需要停交易,真是强大。昨晚看了google reader的收藏又再次看到这篇文章,于是今天在星巴克研究了一把,发现真的很强大,负载均衡、session复制都可以做到,以后再也不用为升级系统而烦恼了。 下面就来讲讲是搭建集群的过程,首页需要下载apahce和tomcat(当然需要安装jdk,这就不多讲了,大家应该懂...
2011-12-30 15:57:03
142
原创 UML图一览
UML包括了一些可以相互组合图表的图形元素。1.类图一个类(class)是一类或一组具有类似属性和共同行为的事物。矩形方框代表类的图标,它被分成3个区域。最上面的区域中是类名,中间区域是类的属性,最下面区域里列的是类的操作。举一个例子,属于洗衣机(washing machine)类的事物都具有诸如品牌(brand name)、型号(model name)、序列号(serial nu...
2011-12-30 13:37:50
216
原创 UML类图关系表示方法
这是一堂关于UML基础知识的补习课;现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了;本篇主要就以前自己一直感觉很迷糊的几种class之间的关系进行整理,让我们在真正用UML进行比如类图设计时能够更加清晰明了;以下就分别介绍这几种关系:继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己...
2011-12-30 13:10:45
111
原创 SQL优化二
Oracle SQL的优化规则:尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替 用IN写出来的SQL的优点是比较容易写及清晰易懂,但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别: ORACLE 试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外...
2011-12-29 14:35:13
103
原创 SQL优化一
优化oracle sql的些注意项 (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersecti...
2011-12-29 13:54:43
87
十八、单利模式
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 在多线程环境下使用单例模式时,要考虑到加锁,要保证一个线程进入代码的临界区时,另一个线程不进入临界区。也可以使用双重锁定的方式,先判断该实例是否为null,如果为null,则加锁后再次判断是否为null,如果为null,则创建实例。同时,也可以采用将该实例声明为静态成员,也可以解决线程安全的...
2011-11-23 09:40:43
97
十七、迭代器模式
迭代器模式(Iterator),提供一种方法数据访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。当你需要对集合有多种方式遍历时,可以考虑迭代器模式,比如售票员可以选择从车头或车尾开始售票。 迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。...
2011-11-23 09:17:33
102
十六、组合模式
组合模式(composite),将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 当需要体现整体与部分层次的结构时,当希望用户可以忽略组合对象与单个对象的不同,统一地使用组合结构中的所有对象时,就应该考虑用组合模式了。...
2011-11-23 09:05:51
112
十五、备忘录模式
备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。备忘录模式主要用于还原或可撤销时。...
2011-11-23 08:54:49
102
十四、适配器模式
适配器模式(adapter),将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
2011-11-23 08:45:10
171
十三、状态模式
状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中。 Statepublic abstract class State { public abstract void handle(Context co...
2011-11-18 14:19:41
113
十二、观察者模式
观察者模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。 Subjectpublic class Subject { private List<Observer> observers = new ArrayList<Observer>...
2011-11-18 10:14:18
90
十一、建造者模式
1.什么是建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 2.为什么要使用建造者模式 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。如果用了建造者模式,那么用户只需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。 ...
2011-11-17 09:30:24
94
十、外观模式
1.什么是外观模式 Facade 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 2.为什么要使用外观模式 层与层之间建立外观模式,这样可以为复杂的子系统建立一个简单的接口,使得耦合大大降低,减少依赖。 3.怎样使用外观模式 Facade类public ...
2011-11-16 09:13:30
78
九、模板方法模式
1.什么是模板方法模式 定义一个操作中算法的骨架,而将一些步骤延迟到子类中。 2.为什么要用模板方法模式 模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 模板方法模式是通过把不变行为搬迁的超类,去除子类中的重复代码来体现它的优势,它提供了一个很好的代码复用平台。 3.怎样用模板方法模式 ...
2011-11-15 13:41:22
79
4.分布式应用
1.什么是分布式应用 将构建放到不同的计算机中,而形成不同松散而又耦合的集成应用就是分布式应用。 2.SCA节点 用来进行SCA装配的构件可以位于一个节点中,也可以位于多个节点中,节点中运行着一个个实用的功能模块,每个节点的.composite文件中有着完成这些功能的构件描述,而一个节点运行在单个的JVM中。计算器组合构件运行在节点中,而节点又运行在一个SCA域...
2011-11-13 17:42:38
112
3.WebService实战
1.WebService模型 WebService是解决应用程序之间相互通信的一项技术,它描述一系列操作的接口,它使用规范的、标准的XML描述接口。描述中包括了消息格式、传输协议和服务位置。在对外的接口中隐藏了服务实现的细节。 2.Webservice模型中的角色 *服务提供者 *服务请求者 *服务注册中心 3.怎样实现WebServic...
2011-11-12 18:45:06
80
2.Tuscany初体验
1.Tuscany Java SCA体系结构 Tuscany Java SCA中的模块分为两大类: 内核类模块:提供了SCA的运行时内核、数据绑定框架、SCA编程模型等。 扩展类模块:集成SOA环境下的各种不同的技术。 通过该体系结构,可以将任一技术实现的组件发布为RMI、Webservice等服务。 ...
2011-11-12 18:28:46
150
1.SOA的核心概念
1.什么是SOA SOA(Service Oriented Architecture,面向服务的架构)是一种面向服务的架构方法。SOA的核心概念是重用和互操作,它将企业的IT资源整合成可操作的、基于标准的服务,使其能够重新组合和应用。与传统的紧耦合IT架构相比,SOA的松耦合架构更能适应企业的变化。 服务并非单指WebService,比如EJB、JMS、JavaBean...
2011-11-12 18:09:01
250
八、原型模式
1.什么是原型模式 Prototype 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原形模式其实就是从一个对象再创建另外一个可定制的对象;而且不需要知道任何创建的细节。 2.为什么要使用原型模式 使用原型模式克隆对象的方法,即隐藏了对象创建的细节,又对性能是大大的提高。注意对象的复制有潜复制和深复制两种,潜复制是值对象...
2011-11-11 14:45:11
78
七、工厂方法模式
1.什么是工厂方法模式 Factory Method 工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。 2.为什么要使用工厂方法模式 在简单工厂方法中,如果添加新的创建功能,可能要修改工厂类,这就违背了开发-封闭原则,而工厂模式解决了这个问题。 3.怎样使用工厂方法模式 ...
2011-11-11 14:20:41
84
六、代理模式
1.什么是代理模式 Proxy 为其他对象提供一种代理以控制这个对象的访问。 2.为什么要使用代理模式 第一,远程代理,为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实,WebService就使用的代理。 第二,虚拟代理,是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真是对象。这样可以...
2011-11-11 10:19:48
75
UML汇总
1.组件图 Component 主要目的是呈现系统在实战上如何把设计的类分配给不同实体组件的。一般来说,组件图中每一个特定的组件,应该都必须对应到特定的一组类或接口。组件图一般由组件(Component)、提供接口 (Provided Interface)、需求接口(required Interface)、依赖关系(Dependency)组成。 ...
2011-11-10 15:12:27
130
五、装饰模式
1.什么是装饰模式 装饰模式(Decorator),动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。装饰模式是为已有功能添加更多功能的一种方式。 2.为什么使用装饰模式 当系统需要新功能的时候,是向旧的类中添加新的代码。这些新的代码通常装饰了原有类的核心职责或主要行为,这种做法增加了主类的复杂度。而装饰模式可以很好的解决这个问题,它把每个需要装饰的...
2011-11-10 14:29:14
73
四、依赖倒转原则
1.什么是依赖倒转原则 依赖倒转原则,即抽象不应该依赖细节,细节应该依赖抽象。要针对接口编程,不要针对实现编程。高层模块不应该依赖低层模块,两个都应该依赖抽象。 2.为什么要遵循依赖倒转原则 ...
2011-11-09 14:25:16
98
三、开放-封闭原则
1.什么是开发封闭原则 开放-封闭原则(Open-Closed Principle),是说软件实体(类、模块、函数等等)应该可以扩展,但是不可修改。 2.为什么要遵循开放-封闭原则 在做任何系统的时候,需求都是在不断变化的,为了在需求发生变化时,设计的软件可以相对容易修改,设计对于需求的变化可以相对稳定,从而使得系统可以在第一个版本后不断推出新的版本。...
2011-11-09 14:08:43
99
二、单一职责原则
1.什么是单一职责原则SRP 单一职责原则,就一个类而言,应该仅有一个引起它变化的原因。 2.为什么要遵守单一职责原则 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。...
2011-11-09 13:47:51
84
原创 一、策略模式
1.什么是策略模式Strategy 策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式就是用来封装算法的,在实践中,可以用它来封装任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。 2.为什么要使用策略模式? 策略模式是定义一系列...
2011-11-09 10:45:39
89
原创 Oracle删除重复数据
我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,那么,如何对重复的数据进行删除呢?重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样。一、对于部分字段重复数据的删除 先来谈谈如何查询重复的数据吧。 下面语句可以查询出那些数据是重复的: select 字段1,字段2,count(*) from 表名 group by 字段1,字段2 ...
2011-08-24 13:09:35
91
原创 oracle递归加多表连接查询
写了一段Oracle的递归查询结合多表连接查询的SQL,记录下来,备忘 select a.ar_file_name,a.ar_depart_id,b.depart_no,b.depart_name from t_archives a left join csr_department b on(a.ar_depart_id = b.depart_no) where a.ar_dep...
2011-07-20 17:49:14
1788
原创 JavaScript控制页面全屏,并且禁止使用ALT+TAB键切换
最近在做一个考试系统,客户要求考试页面打开后需要全屏显示,并且除本页面外不能进行其他操作,我查了一些相关资料了解到,利用Javascript并不能真正屏蔽掉ALT+TAB键,因为这是系统级快捷键,所以我使用了其他方法进行处理,当窗口失去焦点时自动触发窗口关闭事件,然后再询问用户是提交并完成考试还是取消关闭,通过这个方法初步达到了禁止用户切换窗口的操作,具体代码如下:aaa.html<...
2011-05-11 09:20:37
2261
原创 润乾报表动态改变SQL语句
最近做了一个润乾报表动态拼接SQL语句的功能,之前做的都是固定SQL传参数的形式。但是项目上有一个特殊需求,一个开发人员没做过,我就帮着就研究了一下,可能写的还不是很完美,但是以实现功能为主,留下来备用。//开始需要导入润乾用到的包<%@page import="com.sun.org.apache.bcel.internal.generic.NEW"%><%@pag...
2011-05-10 10:32:06
1256
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人