春风博客

春天里,百花香...

导航

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

统计

公告

MAIL: junglesong@gmail.com
MSN: junglesong_5@hotmail.com

Locations of visitors to this page

常用链接

留言簿(11)

随笔分类(224)

随笔档案(126)

个人软件下载

我的其它博客

我的邻居们

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

#

求阶乘数中尾后零的个数

主要是利用了10=2*5,一个数中5的因子个数必定比2的因子个数少的原理。

代码如下:

package com.sitinspring;

/**
 * 求阶乘数中尾后零的个数
 * 如10!的尾后零的个数为2
 * 
@author sitinspring(junglesong@gmail.com)
 * 
@since 2008-6-10 上午11:57:45
 * @vsersion 1.00 创建 sitinspring 2008-6-10 上午11:57:45
 
*/

public class PowerZeroCount{
    
public static void main(String[] args){
        
int sum=0;
        
for(int i=1;i<=100;i++){
            
int count=getDivisorCount(i,5);
            sum
+=count;
        }

        
        System.out.println(
"100阶乘尾后0的个数为:"+sum);
    }

    
    
/**
     * 取得除数在被除数中的可整除次数,如5在25中的可整除个数为2
     * 
@param Dividend 被除数
     * 
@param divisor 除数
     * 
@return
     
*/

    
public static int getDivisorCount(int Dividend,int divisor){
        
if(Dividend==0){
            
return 0;
        }

        
        
int count=0;
        
        
if(Dividend % divisor==0){
            count
=1;
            count
+=getDivisorCount(Dividend/divisor,divisor);
        }

        
        
return count;
    }

    
    
/**
     * 求某数阶乘,但很快会溢出,扩大int为long也很快会溢出,放在这里只是做个演示
     * 
@param n
     * 
@return
     
*/

    
public static int power(int n){
        
if(n<=1){
            
return 1;
        }

        
else{
            
return n*power(n-1);
        }

    }

}

输出:
100阶乘尾后0的个数为:24

posted @ 2008-06-10 12:14 sitinspring 阅读(615) | 评论 (0)编辑 收藏

动态代理机制初探

     摘要: Spring的AOP支持可以被用于从系统核心逻辑中分离交叉业务(cross-business)如日志,事务管理和安全等,使用AOP,你可以用各种功能层来覆盖核心业务层,这些功能层可以灵活的应用到你的系统中,甚至核心业务层都不知道它们的存在,这是一个强大的概念。
AOP(aspect-oriented programming)的核心就是动态代理,掌握它对于理解AOP尤为重要,犹如反射对理解IoC一样。
  阅读全文

posted @ 2008-05-28 00:06 sitinspring 阅读(2356) | 评论 (3)编辑 收藏

程序员之路探究

     摘要: 本文将试图讨论一些决定一个程序员一生的核心的东西,这是个人对程序员生涯的一孔之见,只代表作者的个人想法,其中疏漏甚至错误之处在所难免,希望大家多提宝贵意见。

前言
丰厚的薪水,高端的职位和有成就感的事业是人人都想要的,而这些都取决于你每天的认真工作,努力学习和灵活做人上。日子就像一块块砖,你就像是一个泥瓦匠每天在堆砌着你的人生,最终砌出一个宏伟的大厦或是一幢低矮的小屋甚至是堆成一堆瓦砾全取决于你自己。  阅读全文

posted @ 2008-05-27 11:05 sitinspring 阅读(4687) | 评论 (14)编辑 收藏

按钮按下效果的左侧导航栏实现

在“http://neic.usgs.gov/neis/qed/”看到了一个不错的按钮按下效果的左侧导航栏,自己模拟实现了一个,效果如下,目前在ie下效果可以,但FireFox下走形,以后再调吧:


一。左菜单右内容的实现。
本例中使用一个虚表格实现了左右两列的效果,代码如下:
<body>
    
<div id="bodyDiv">
        
<div id="header">
            
<jsp:include page="/web/page/branch/header.jsp"/>
        
</div>
        
<div id="content">
            
<table border="0" cellspacing="0" cellpadding="0" width="100%" height="100%">
                
<tr>
                    
<td width="200" valign="top" bgcolor="#d4e4f0">
                        
<div id="leftMenu">
                            
<jsp:include page="/web/page/branch/menubar.jsp"/>
                        
</div>
                    
</td>
                    
<td>
                        
<div id="rightContent">
                            内容。。。。
                        
</div>
                    
</td>
                
</tr>
            
</table>
        
</div>
        
<div id="footer">
            
<jsp:include page="/web/page/branch/footer.jsp"/>
        
</div>
    
</div>
</body>

二。CSS部分设置代码。
body{
    margin
:2px;
    text-align
:center;
    background
:#7b869a;
}


#bodyDiv
{
    margin
:0 auto;
    text-align
:left;
    background
:#ffffff;
}


#header
{
    height
:100px;
}


#content
{
    height
:500px;
}


#rightContent
{
    height
:500px;
    padding
:20px;
}


#leftMenu
{
    height
:500px;
    background
:#d4e4f0;
    border-bottom
:0px solid #000000;
    border-left
:0px solid #000000;
    border-right
:0px solid #000000;
    border-top
:0px solid #bad5e8;
}


#footer
{
    clear
:both;
    background
:#7b869a;
}


ul.pressEffectUl
{    
    color
: #000000; 
    margin
:0px;    
    padding
:0px;
    list-style-type
:none;
    background
:#d4e4f0;
}


ul.pressEffectUl a
{
    padding-left
:20px;
    text-decoration
:none;
    color
:#8d4f10;
    width
:200px;
    border-left
:0px solid #000000;
    border-right
:0px solid #000000;
    border-top
:1px solid #ffffff;
    border-bottom
:1px solid #bad5e8;
}


ul.pressEffectUl a.currentLink
{
    padding
:2px;
    padding-left
:20px;
    text-decoration
:none;
    color
:#000000;
    background
:#ffffff;
    width
:200px;
    border-left
:0px solid #000000;
    border-right
:0px solid #000000;
    border-top
:1px solid #ffffff;
    border-bottom
:0px solid #bad5e8;
}


ul.pressEffectUl a:hover
{
    color
:#000033;
    background
:#e1effa;
    border-left
:0px solid #000000;
    border-right
:0px solid #000000;
    border-top
:1px solid #e1effa;
    border-bottom
:1px solid #e1effa;
}


h1 
{
    font-size
: 18px; 
    margin
: 10px 0px 5px; 
    color
: #eeeeee; 
    text-align
: center;
}


h2 
{
    font-size
: 24px; 
    margin
: 10px 0px 5px; 
    color
: #000000; 
    text-align
: center;
}


.feedbackShow
{
visibility
: visible;
}


.feedbackHide
{
visibility
: hidden;
}

三。代码下载;
http://www.blogjava.net/Files/sitinspring/PressButtonMenu20080523130024.rar 

以上

posted @ 2008-05-23 13:16 sitinspring 阅读(4375) | 评论 (0)编辑 收藏

通用化Web表单验证方式的改进方案

     摘要: 在上文的表单验证解决方案中,有这样几个问题:
1。页面中存在自定义标签,这通不过W3C验证。
2。自定义标签不能写在Struts标签中,造成此解决方案在Struts工程中不适用。
3。验证的方式和页面内容混合在一起,没有分开。
4。原反馈信息span的id必须符合一定规范,这是额外的负担。

为了解决这些问题,我采取了如下步骤:
1。建立一种数据结构,让它容纳文本框id,反馈span的id,验证正则表达式,是否必须输入等四个信息。这样页面就不会混杂自定义标签,w3c验证和struts标签不支持的问题就解决了。
2。建立一个包含多个这种数据结构的数组,其中元素与要验证的文本域一一对应。此数组在需要验证时建立。这里虽然要多些一些JS代码,但验证信息更集中更容易修改了。
3。需要验证时取得数组元素,挨个验证即可,需要的信息都可以从数组元素中取得。整个过程可以库化通用化,页面不需要写验证。

如此做完后,我认为原先的问题基本得到解决了。下面请看具体代码  阅读全文

posted @ 2008-05-21 14:09 sitinspring 阅读(3772) | 评论 (7)编辑 收藏

使用commons-fileupload实现单个和多个文件上传

     摘要: 对于实现文件上传功能来说,Commons-fileupload组件是一个不错的选择,本文使用它实现了单个文件及多个文件上传,这里将实现过程写出来与大家共享。  阅读全文

posted @ 2008-04-12 14:16 sitinspring 阅读(34013) | 评论 (13)编辑 收藏

三种权限设计方案的归纳和比较

     摘要: 权限设计是很多系统重要的组成部分,主要用于控制功能和流程,本文将几种常见的权限设计方案(权限系统的名都是自己起的)的基本设计写出来,其中不恰当处还请大家指出,我们来讨论一下.  阅读全文

posted @ 2008-04-10 10:20 sitinspring 阅读(17683) | 评论 (15)编辑 收藏

使用全排列方法解九宫格问题

下面的方法能解出九宫格,但对于更高阶只有理论可能性,因为耗时太长,不能作为通用解决方案。

输出:
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);
    }
}

posted @ 2008-04-08 22:16 sitinspring 阅读(2083) | 评论 (1)编辑 收藏

JFreeChat四种图表的绘制例程

     摘要: 本文书写了使用JFreeChart生成平面饼图,3D饼图,折线图和柱状图的示例代码,并附有代码下载.  阅读全文

posted @ 2008-04-08 13:00 sitinspring 阅读(3587) | 评论 (6)编辑 收藏

表单验证方式的通用化

     摘要: 在上一篇“Web页面表单域验证方式的改进“中,我们通过把验证法则(正则表达式和是否必填字段)写在表单域中,将验证过程和验证法则成功的分离,从而减少了重复代码,使验证变得简单易行,在实际使用中,我们可以把验证过程放在一个JS文件中,对于全输入验证界面,在页面的表单验证部分只需要调用其中的checkForm函数就能进行有效验证,页面上不再需要书写重复性高的JS验证代码;对于复杂的表单,比如其中含有复选框或是需要两个文本框比较的地方,这种方法也可让你不写通用验证代码而把主要精力放在特殊的验证上。这些能减轻不少工作量,让繁琐的工作变得轻松愉快起来。  阅读全文

posted @ 2008-04-07 21:41 sitinspring 阅读(2326) | 评论 (7)编辑 收藏

仅列出标题
共13页: First 上一页 2 3 4 5 6 7 8 9 10 下一页 Last 
sitinspring(http://www.blogjava.net)原创,转载请注明出处.