fhjxp同学在看完我的Struts2.0+Spring+Hibernate的在线音乐系统的代码时:
fhjxp 写道
引用
看了一下源码,问一下,dao,service定义每个都定一个接口有什么用啊?有什么好处?
基于接口而不是类编程,这样Service层依赖于dao层的接口而不是实现,可以方便的替换dao的实现。基于接口 编程提供了可插拔的松耦合的编程方式。Spring倡导基于接口编程的方式,这是一种良好的编程习惯,在Spring中使 用接口是自然的,被鼓励的。
fhjxp 写道:
引用
你的回答里面我只看到一个理由:方便替换实现。为什么要松耦合、面向接口、好习惯还是为了这个。
真的方 ...
- 16:38
- 浏览 (177)
- 评论 (1)
- 分类: Design Pattern
今天有一同学问我,java怎么没有拷贝构造函数呢,java的clone就是c++的拷贝构造
函数么?
下面我分析一下这个问题:
而java中的clone是c++中的拷贝构造函数么?事实上并不是这样的,java是在
语言层面对prototype模式的支持。java事实上很少需要拷贝,除非你需要显示的得到
对象的拷贝。因为java中从来都不会有显示的对象,对象都是由引用来持有,所以无论
是你在试图传递对象或把对象作为返回值,实际传递或返回的是引用,所以生成的副本
都是引用本身,这个特点从根本上避免了对象无谓的生成副本和对拷贝构造函数的需要。
而c++是有显示对象对象存在的,我们经常一不小心把对象毫 ...
在论坛中有好几位同学都比较了Iterator和visitor模式,我也小小总结一下:
Iterator和visitor模式都是对对象聚集进行访问,并对访问的元素进行操作,
它们都是把访问的职责从集合\元素类中分离出来。
但Iterator在遍历集合、树形结构时,往往只是遍历元素,而对元素的
操作通常在其职责之外,并且在一个遍历过程外在的对元素操作通常是单一的
至少不会是每个元素一种不同的操作(否则需要大量的if...else判断),而
visitor模式则通常是遍历的同时对元素进行操作,而这种操作在一次遍历过程中
可以对不同元素进行专门的定制。
所以Iterator和visitor的使用情形是 ...
- 15:13
- 浏览 (155)
- 评论 (0)
- 分类: Design Pattern
类似超级玛莉的游戏安装方法:sudo apt-get install supertux 类似红警的一个游戏:安装方法:Deb包下载:
http://www.getdeb.net/release.php?id=1285
是要先安装数据包,再安装程序包的。
这个游戏也是支持多系统的,其他操作系统版本下载:
http://www.boswars.org/download.shtml类似泡泡卡丁车的游戏:安装方法:sudo apt-get install supertuxkart
0-1背包问题:给定n种物品和一背包.物品i的重量是wi, 其价值为ui,背包的容量为C.
问如何选择装入背包的物品,使得装入背包中物品的总价值最大?
分析:
0-1背包是子集合选取问题,一般情况下0-1背包是个NP问题.
第一步 确定解空间:装入哪几种物品
第二步 确定易于搜索的解空间结构:
可以用数组p,w分别表示各个物品价值和重量。
用数组x记录,是否选种物品
第三步 以深度优先的方式搜索解空间,并在搜索的过程中剪枝
我们同样可以使用子集合问题的框架来写我们的代码,和前面子集和数问题相差无几。
#include<iostream>
#include<algorithm> ...
八皇后问题是一个古老而著名的问题,是回溯算法的典型例题。该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上.
问题分析:
第一步 定义问题的解空间
这个问题解空间就是8个皇后在棋盘中的位置.
第二步 定义解空间的结构
可以使用8*8的数组,但由于任意两个皇后都不能在同行,我们可以用数组下标表示
行,数组的值来表示皇后放的列,故可以简化为一个以维数组x[9]。
第三步 以深度优先的方式搜索解空间,并在搜索过程使用剪枝函数来剪枝
根据条件:x[i] == x[k]判断处于同一列
...
- 14:49
- 浏览 (151)
- 评论 (0)
回溯法其实也是一种搜索算法,它可以方便的搜索解空间。
回溯法解题通常可以从以下三步入手:
1、针对问题,定义解空间
2、确定易于搜索的解空间结构
3、以深度优先的方式搜索解空间,并在搜索的过程中进行剪枝
回溯法通常在解空间树上进行搜索,而解空间树通常有子集树和排列树。
针对这两个问题,算法的框架基本如下:
用回溯法搜索子集合树的一般框架:
void backtrack(int t){
if(t > n) output(x);
else{
for(int i = f(n,t); i <= g(n,t);i++){
x[t] = h(i);
...
- 浏览: 50670 次
- 性别:

- 来自: 长春

- 详细资料
搜索本博客
我的相册
RSS Reader1
共 6 张
共 6 张
链接
最新评论
-
使用Struts2+Hibernate+Sp ...
很好很强大
-- by andy54321 -
Java Persistence with Hi ...
昨天买的, 不错
-- by lklkdawei -
使用Struts2+Spring+Hiber ...
不过整个工程都没有一条注释啊。。。 这个比较郁闷,万一以后你写了个框架,那下面 ...
-- by yyphzc -
使用Struts2+Spring+Hiber ...
总体感觉还行,不过部分代码需要优化为好 1.DAO既然使用泛型,那就干脆点。想想 ...
-- by yeshucheng -
使用Struts2+Spring+Hiber ...
这儿有个好同志: http://www.javaeye.com/topic/12 ...
-- by drinkjava






评论排行榜