春天里,百花香...
			
			
				
					
			  
	#
	
		
	
		
			
			
			     摘要: Spring的AOP支持可以被用于从系统核心逻辑中分离交叉业务(cross-business)如日志,事务管理和安全等,使用AOP,你可以用各种功能层来覆盖核心业务层,这些功能层可以灵活的应用到你的系统中,甚至核心业务层都不知道它们的存在,这是一个强大的概念。
AOP(aspect-oriented programming)的核心就是动态代理,掌握它对于理解AOP尤为重要,犹如反射对理解IoC一样。
  
阅读全文
			
			
		 
	
		
			
			
			     摘要: 本文将试图讨论一些决定一个程序员一生的核心的东西,这是个人对程序员生涯的一孔之见,只代表作者的个人想法,其中疏漏甚至错误之处在所难免,希望大家多提宝贵意见。
前言
丰厚的薪水,高端的职位和有成就感的事业是人人都想要的,而这些都取决于你每天的认真工作,努力学习和灵活做人上。日子就像一块块砖,你就像是一个泥瓦匠每天在堆砌着你的人生,最终砌出一个宏伟的大厦或是一幢低矮的小屋甚至是堆成一堆瓦砾全取决于你自己。  
阅读全文
			
			
		 
	
		
	
		
			
			
			     摘要: 在上文的表单验证解决方案中,有这样几个问题:
1。页面中存在自定义标签,这通不过W3C验证。
2。自定义标签不能写在Struts标签中,造成此解决方案在Struts工程中不适用。
3。验证的方式和页面内容混合在一起,没有分开。
4。原反馈信息span的id必须符合一定规范,这是额外的负担。
为了解决这些问题,我采取了如下步骤:
1。建立一种数据结构,让它容纳文本框id,反馈span的id,验证正则表达式,是否必须输入等四个信息。这样页面就不会混杂自定义标签,w3c验证和struts标签不支持的问题就解决了。
2。建立一个包含多个这种数据结构的数组,其中元素与要验证的文本域一一对应。此数组在需要验证时建立。这里虽然要多些一些JS代码,但验证信息更集中更容易修改了。
3。需要验证时取得数组元素,挨个验证即可,需要的信息都可以从数组元素中取得。整个过程可以库化通用化,页面不需要写验证。
如此做完后,我认为原先的问题基本得到解决了。下面请看具体代码  
阅读全文
			
			
		 
	
		
			
			
			     摘要: 对于实现文件上传功能来说,Commons-fileupload组件是一个不错的选择,本文使用它实现了单个文件及多个文件上传,这里将实现过程写出来与大家共享。  
阅读全文
			
			
		 
	
		
			
			
			     摘要: 权限设计是很多系统重要的组成部分,主要用于控制功能和流程,本文将几种常见的权限设计方案(权限系统的名都是自己起的)的基本设计写出来,其中不恰当处还请大家指出,我们来讨论一下.  
阅读全文
			
			
		 
	
		
			
			
			下面的方法能解出九宫格,但对于更高阶只有理论可能性,因为耗时太长,不能作为通用解决方案。
输出:
2    7    6    
9    5    1    
4    3    8    
package com.sitinspring;
public class SquarePuzzle{
    /**
     * 阶数
     */
    private int n;
    
    /**
     * 方阵数组
     */
    private Integer[] arr;
    
    /**
     * 平均值
     */
    private int average;
    
    public SquarePuzzle(int n){
        this.n=n;
        
        // 建立数组并得到平均值
        arr=new Integer[n*n];
        
        average=0;
        for(int i=1;i<=n*n;i++){
            arr[i-1]=i;
            average+=i;
        }
        average=average/n;
        
        // 递归查看
        permutation(arr,0,arr.length);
    }
    
    private void permutation(Integer[] arr,int start,int end){
        if(start<end+1){
            permutation(arr,start+1,end);
            
            for(int i=start+1;i<end;i++){
                Integer temp;
                
                temp=arr[start];
                arr[start]=arr[i];
                arr[i]=temp;
                
                permutation(arr,start+1,end);
                
                temp=arr[i];
                arr[i]=arr[start];
                arr[start]=temp;
            }
        }
        else{
            /*for(int i=0;i<end;i++){
                System.out.print(arr[i]);
            }
            System.out.print("\n");*/
            
            int i,sum=0;
            
            for(i=0;i<n;i++){
                sum+=arr[i];
            }
            
            if(sum!=average){
                return;
            }
            
            // 查看是否纵横对角线值都相等
            checkAndPrint(arr);
        }
    }
    
    private void checkAndPrint(Integer[] arr){
        Integer[][] arr2=new Integer[n][n];
        int i,j,sum;
        
        for(i=0;i<n;i++){
            for(j=0;j<n;j++){
                arr2[i][j]=arr[i*n+j];
            }
        }
        
        // 横
        for(i=0;i<n;i++){
            sum=0;
            for(j=0;j<n;j++){
                sum+=arr2[i][j];
            }
            
            if(sum!=average){
                return;
            }
        }
        
        // 纵
        for(i=0;i<n;i++){
            sum=0;
            for(j=0;j<n;j++){
                sum+=arr2[j][i];
            }
            
            if(sum!=average){
                return;
            }
        }
        
        // 对角线
        sum=0;
        for(i=0;i<n;i++){
            sum+=arr2[i][i];        
        }
        
        if(sum!=average){
            return;
        }
        
        // 对角线
        sum=0;
        for(i=0;i<n;i++){
            sum+=arr2[i][n-i-1];        
        }
        
        if(sum!=average){
            return;
        }
        
        // 最终打印
        for(i=0;i<n;i++){
            for(j=0;j<n;j++){
                System.out.print(arr2[i][j]+"\t");;
            }
            
            System.out.print("\n");;
        }
        System.out.print("\n");;
        System.exit(0);
    }
    
    public static void main(String[] args){
        new SquarePuzzle(3);
    }
}
			
			
		 
	
		
			
			
			     摘要: 本文书写了使用JFreeChart生成平面饼图,3D饼图,折线图和柱状图的示例代码,并附有代码下载.  
阅读全文
			
			
		 
	
		
			
			
			     摘要: 在上一篇“Web页面表单域验证方式的改进“中,我们通过把验证法则(正则表达式和是否必填字段)写在表单域中,将验证过程和验证法则成功的分离,从而减少了重复代码,使验证变得简单易行,在实际使用中,我们可以把验证过程放在一个JS文件中,对于全输入验证界面,在页面的表单验证部分只需要调用其中的checkForm函数就能进行有效验证,页面上不再需要书写重复性高的JS验证代码;对于复杂的表单,比如其中含有复选框或是需要两个文本框比较的地方,这种方法也可让你不写通用验证代码而把主要精力放在特殊的验证上。这些能减轻不少工作量,让繁琐的工作变得轻松愉快起来。  
阅读全文
			
			
		 
	
				
			 
			
sitinspring(http://www.blogjava.net)原创,转载请注明出处.