- 浏览: 120519 次
- 性别:
- 来自: 上海
最新评论
-
donaldfischer:
能够解释下 为什么afterReturning 不能改变返回值 ...
Spring 后置通知 -
蒲公英的约定:
提示 $Proxy0 cannot be cast to ...
Spring 异常通知 -
xuhang1128:
这里有例子
http://blog.csdn.net/shuq ...
异常链 -
jaystarba:
受益匪浅 以前简直搞不懂的 现在又清晰了些
谢谢了 楼主 ...
InputStream与Reader -
wu_yong988:
...
Spring 环绕通知
文章列表
虽然标题说是finally 语句的妙用,但其实是finally 的错误用法。我们在编写的时候应该时刻的避免这种情况的发生!
言归正传,finally 语句的这个妙用的用途是丢失异常。
代码如下:
class VeryImportantException extends Exception {
}
class HoHumException extends Exception {
}
public class LostMessage {
void f()throws VeryImportantException {
throw new VeryImportantExcepti ...
- 2008-06-05 21:48
- 浏览 745
- 评论(0)
容器是Srping 框架的核心,由此我们学习Spring 时首先先要了解Spring 容器。
Spring 容器要点介绍:
1)Spring 容器使用Ioc 管理所有组成应用系统的组建。(Ioc 可以简单的理解为JNDI 的反转)。
2)Spring 有两种容器:Bean工厂和应用上下文。虽然Spring 只有两种容器,但Spring 有几种Bean工厂和应用上下文的实现,他们各自用于不同的环境种。
Bean 工厂要点介绍:
1)Bean工厂如其名称所暗示的,采用了工厂设计模式。但与其他的工厂模式的不同之处在于:普通的工厂模式只发布一种类型的对象,而Bean工厂可以创建和发布 ...
- 2008-06-04 16:57
- 浏览 757
- 评论(0)
在Java 中finally 语句只用于try-catch 语句之后,用于清理的目的。但是我们可以通过finlly 语句的妙用达到goto 语句的效果(java 中没有goto 语句,只有goto 这个保留字。)
代码如下:
/**
* 通过finally 语句的妙用
* 在Java 中达到goto语句的效果
*/
public class Goto {
static int count = 0;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-genera ...
- 2008-06-03 21:53
- 浏览 815
- 评论(0)
Java异常虽然使用非常方便且浅显易懂,但还是有些值得我们关注的知识点或者可以说是“小技巧”。
1)在捕获异常的过程中,应该将Exception异常要放于捕获异常的最后。因为Exception可以捕获任何可以捕获的异常,如果它放于其他的异常之前,那么在Exception异常之后的异常捕获代码永远不会执行,因此Exception异常要放于捕获异常的最后!
2)重新抛出异常
将捕获的异常重新抛出将忽略同一try 块的后续catch 子句。
为了获取重新抛出异常点的信息可以使用“throw e.fillInStackTrace();”语句,但是新的异常信息将丢失原先的异常信息错误!
3)异常链
...
- 2008-06-02 22:22
- 浏览 896
- 评论(0)
刚才看了一篇关于背包问题的解决之道,文章中使用了递归的方法对背包问题的求解。看完之后,我背包问题有所了解,背包问题是一种常见组合的问题:组合一定量的已知数据使其等于某个特定数的组合问题(如2,4,6,10数据,数据相加为14的组合)。
首先,我先将文章中提到某些“关键词”进行列举:
1)源数据:
2)背包:已选中的数据
接下来,介绍下背包的算法思路:
针对第n个数据,有两种情况1)选中第n个数据。2)不选中第n个数据
选中第n个数据:背包问题变成为对指定数据减去第n个数据的背包问题。
不选中第n个数据:背包问题成为剩下数据的背包问题。
代码如下:
/**
* 背包求解
* @ ...
- 2008-05-29 16:50
- 浏览 2495
- 评论(0)
Struts1.1的MVC框架中对视图层和控制层提供了对异常处理的支持。
控制层:Struts的控制器捕获到异常之后,在异常处理代码块中通过创建ActionMessage对象保存异常信息,并把它保存在ActionMessages(或其子类ActionErrors)对象中,然后将其存入request范围(或session范围中)。
视图层:通过<html:errors>标签显示控制器保存的的异常信息。
由于Struts1.1中向用于显示的错误信息来自与资源文本,因此在Struts1.1中异常实现了国际化。
Java Web容器
首先介绍下Java Web容器处理异常的机制,因为如 ...
- 2008-05-28 13:45
- 浏览 3084
- 评论(0)
最近的一段时间,我参考了别人的博客写了不少关于递归的排序方法,如全排序,背包等。在写这些好程序之后有所感悟趁空写下,以便日后回顾。
其实在数组的全排序中完全可以使用更加易懂简便的写法——for循环,但是通过for循环编写数组全排序需要有一个先决条件——知道数组全排序的个数,因为有n个数据全排序就需要写n个嵌套for循环。因此在写全排序时一般使用递归方法。这就是我的第一个关于递归排序的见解——递归排序可以无需已知排序数组的长度,即排序个数!
其二,不管是使用递归进行数组排序还是使用for循环进行数组的排序,它们都是本质都是使用枚举,因此可以得出这样一个结论:枚举可以确保找出每一种可能的排序规则 ...
- 2008-05-26 22:47
- 浏览 1149
- 评论(0)
可以使用Validator框架对Struts 1.1的表单进行验证。为何使用Validator框架对表单进行验证而不使用ActionForm的validate方法对表单进行验证呢?
ActionForm的validate方法对表单进行验证的方式有三个局限:
1)必须通过程序代码来实现验证逻辑
2)代码的可重用性低
3)必须在服务器端进行表单的验证
而Validator框架确克服了上述的局限,且它同样对国际化进行支持。
在struts中要使用Validator框架首先需要两个jar文件:jakarta-oro.jar和commons-validator.jar和两个XML文件:validato ...
- 2008-05-26 11:30
- 浏览 1188
- 评论(0)
线程的优越性:
1)程序实现并发。并发可以优化程序的吞吐量。
2)使程序更加的松散耦合,提高代码的重用性。
Java线程的实现:
1)通过继承Java的Thread类实现线程所要的必要架构。
Thead类方法介绍:
构造器:通过构造器可 ...
- 2008-05-25 20:15
- 浏览 1261
- 评论(0)
全排序编程思想:轮流使数组中的元素放于数组的一个位置,并对数组剩余的数组元素进行全排序以形成递归。
方法介绍:
/**
* 数组元素全排序
* 全排列思想:轮流使数组中的元素放于数组的一个位置,并对数组剩余的数组元素进行全排序以形成递归
* @param array 数组
* @param offset 数组全排列的开始位置
* @param isRepeat 是否重复排序
*/
public static List arrange(int[] array, int offset, boolean isRepeat) {
List list = new ...
- 2008-05-21 16:36
- 浏览 1931
- 评论(0)
某些情况下我们可以不使用循环而达到循环求解的效果。这里我想介绍一种for循环的优化。
实例情况:已知变量n值,求i值
int sum = 0, int i = 0;
while(sum < n)
sum += ++i;
System.out.println("i = " + i);
注:
int sum = 0, int i = 1;
while(sum < n)
sum += i++;
System.out.println("i = " + i);
上面的这段代码错误!!!原因在于i值比要求的值大1!
继续正题,从实 ...
- 2008-05-19 21:37
- 浏览 1130
- 评论(0)
动态创建方法原型的优点:
1)属性不会共享
2)方法只产生一个
3)方法和属性一起定义
例子:
function DynaPrototype() {
this.name = "test";
if(typeof DynaPrototype.flag == "undefined") {
alert("execute...");
DynaPrototype.prototype.execute = function() {
alert("na ...
- 2008-05-16 17:22
- 浏览 788
- 评论(0)
快速排序的基本思路:
1)获取排序集合的中位置在中间的数据
2)把左侧数据中大于中间数据的数放置右侧,而右侧数据小于中间数据的数放于左侧
3)将左侧最后一个置换数据的位置与排序的起始位置之间的数据集合再次进行快速排序(递归)
4)将右侧最初的一个置换数据的位置与排序的终止位置之间的数据集合再次进行快速排序(递归)
方法如下:
/**
* 快速排序(升序)
* @param arg 数组
* @param left 左边界
* @param right 右边界
*/
public static void quickSort(int[] arg, int lef ...
- 2008-05-16 15:13
- 浏览 1021
- 评论(0)
Cantor证明了自然数和有理数之间有着一一对应的关系。这意味在集合论的意义下,自然数和有理数是一样多的。关系如下:
1/1 1/2 1/3 1/4 1/5 ...
2/1 2/2 2/3 2/4 ...
3/1 3/2 3/3 ...
4/1 4/2...
5/1 ...
...
由图得知以下几个规律:
1)第K条斜线上经过K个数(45°的斜线)
2)斜线K上数,其分子与分母的和为(K + 1)
3)沿斜线从上往下看,分子总是从1增长到K,分母从K减小到1;沿斜线从下往上看反之。
则自然数与有理数的关系算法为:
public class Cantor {
public static ...
- 2008-05-15 22:07
- 浏览 733
- 评论(1)
在Java中字符串转换成数字的方式有很多。如Integer.parseInt方法等等。在这里我想介绍一个关于NumberFormat类,它可以用于格式化和分析任何语言环境的数字。
NumberFormat方法介绍:
1)getInstance():获取NumberFormat对象
2)format():格式化数字,方法返回字符串对象
3)parse():将字符串解析为数字,方法返回Number对象
4)setParseIntegerOnly(boolean):当设置为true时:字符串解析到“.”之后的字符再不进行解析
- 2008-05-13 17:17
- 浏览 732
- 评论(0)