sunfruit[请访问http://www.fruitres.cn]

--我相信JAVA能走得更远 QQ:316228067

#

成长感悟--生命的价值

    --sunfruit

    成长中的应该知道的。。。生命的价值

    不要让昨日的沮丧令明天的梦想黯然失色!
    在一次讨论会上,一位著名的演说家没讲一句开场白,手里却高举着一张20美元的钞票。
    面对会议室里的200个人,他问:“谁要这20美元?”一只只手举了起来。他接着说:“我打算把这20美元送给你们中的一位,但在这之前,请准许我做一件事。”他说着将钞票揉成一团,然后问:“谁还要?”仍有人举起手来。
    他又说:“那么,假如我这样做又会怎么样呢?”他把钞票扔到地上,又踏上一只脚,并且用脚碾它。尔后他拾起钞票,钞票已变得又脏又皱。
    “现在谁还要?”还是有人举起手来。
    “朋友们,你们已经上了一堂很有意义的课。无论我如何对待那张钞票,你们还是想要它,因为它并没贬值,它依旧值20美元。人生路上,我们会无数次被自己的决定或碰到的逆境击倒、欺凌甚至碾得粉身碎骨。我们觉得自己似乎一文不值。但无论发生什么,或将要发生什么,在上帝
的眼中,你们永远不会丧失价值。在他看来,肮脏或洁净,衣着齐整或不齐整,你们依然是无价之宝。”
    温馨提示:生命的价值不依赖我们的所作所为,也不仰仗我们结交的人物,而是取决于我们本身!我们是独特的——永远不要忘记这一点!

posted @ 2006-02-19 17:35 sunfruit 阅读(340) | 评论 (1)编辑 收藏

[原创]JAVA基本数据类型的传递方式

    --sunfruit

    java中的基本的数据类型如int,float,long,String[这个是一个特殊的类,有基本的数据类型的特性]等,在方法的参数传递的时候不存在引用传递,只有值传递方式,下面有一个实例

    public class  Test
{
 public Test()
 {
  int j=9;
  setInt(j);
  System.out.println(j);
  j=setInt(j);
  System.out.println(j);

  String str2="abc";
  setString(str2);
  System.out.println(str2);
  str2=setString(str2);
  System.out.println(str2);

  StringBuffer buff=new StringBuffer();
  buff.append("abcbuff");
  setStringBuffer(buff);
  System.out.println(buff.toString());
 }

 public static void main(String[] args)
 {
  new Test();
 }
 private int setInt(int i)
 {
  i+=2;
  return i;
 }
 private String setString(String str1)
 {
  str1+=" test";
  return str1;
 }

 private StringBuffer setStringBuffer(StringBuffer buff1)
 {
  buff1.append(" test");
  return buff1;
 }
}

运行结果

9
11
abc
abc test
abcbuff test

    可以看到基本数据类型的传递方式是值传递

posted @ 2006-02-19 17:34 sunfruit 阅读(464) | 评论 (0)编辑 收藏

[原创]用JAVA写的整形动态数组

    --sunfruit

    用java实现了整形数字的动态数组


JDK版本
        1.3.1
    功能
        实现了添加整数到动态数组中,JDK(1.5以下)不提供整形类型的集合,比如ArrayList这样的集合不允许添加整数,
        但是在编程过程中会遇到需要整形的动态数组的情况,所以这个类实现了这样的功能
       
    欢迎大家提意见,交流
   
    代码如下:
/**
 * Title: 整形动态数组
 * Description: 实现了整形数字的动态添加
 * Copyright: Copyright (c) 2003
 * Company: LingTu
 * @author cuijiang
 * @version 2.0
 */
public class DynArrayInt {
 /**
  * 原始数组
  */
 private int[] data_All;

 /**
  * 计数器(数组长度)
  */
 private int size_count;

 /**
  * 构造器,初始长度默认为10
  */
 public DynArrayInt() {
  this(10);
 }

 /**
  * 构造器,设置数组的初始长度
  *
  * @param iniSize  int 数组的初始长度
  */
 public DynArrayInt(int iniSize) {
  data_All = new int[iniSize];
 }

 /**
  * 添加数据,调用checkAdd(int i)
  * @param i   int 一个整形数字
  */
 public void addInt(int i) {
  //判断是否增长
  this.checkAdd(size_count + 1);
  //赋值
  data_All[size_count++] = i;
  //添加时数组长度加一
 }

 /**
  * 添加数字,判断是否增长
  * @param i   int 一个整形数字
  */
 private void checkAdd(int i) {
  //获得原来的大小
  int star = data_All.length;
  //判断是否增长
  if (i > star) {
   int starData[] = data_All;
   //设定增长大小
   int endall = star * 2;
   data_All = new int[endall];
   System.arraycopy(starData, 0, data_All, 0, size_count);
  }
 }

 /**
  * 获取数据
  * @param i    int 索引号
  * @return int
  */
 public int getInt(int i) {

  if (i < 0 || i >= size_count) {
   throw new IndexOutOfBoundsException("超出最大或最小索引值,无法取得数据");
  } else {
   return data_All[i];
  }
 }

 /**
  * 获取数据转换成字符串模式
  * @param i  int 索引号
  * @return String
  */
 public String getIntToString(int i) {

  if (i < 0 || i >= size_count) {
   throw new IndexOutOfBoundsException("超出最大或最小索引值,无法取得数据");
  } else {
   return String.valueOf(data_All[i]);
  }
 }

 /**
  * 删除数据
  * @param j int 一个要删除的整数        
  */
 public void remove(int j) {
  for (int i = 0; i < size_count; i++) {
   if (data_All[i] == j) {
    System.arraycopy(data_All, i+1, data_All, i, size_count-i-1); // 复制数据
    --size_count;
    return;
   }
  }
 }

 /**
  * 删除数据
  * @param j int 一个要删除的索引        
  */
 public void removeIndex(int j) {
  if (j < 0 || j >= size_count) {
   throw new IndexOutOfBoundsException("超出最大或最小索引值,无法删除数据");
  } else {
   System.arraycopy(data_All, j + 1, data_All, j, size_count -j- 1); // 复制数据
   --size_count;
   return;
  }
 }

 /**
  * 获取大小
  * @return int 获得数组长度
  */
 public int getSize() {
  return size_count;
 }

 /**
  * 获取数组对象
  * @return int[] 获得数组对象
  */
 public int[] getAllInt() {
  int[] starData = new int[size_count];
  System.arraycopy(data_All, 0, starData, 0, size_count);
  return starData;
 }

 /**
  * 获得数组对象,String格式
  * @return String[] 获得数组的对象
  */
 public String[] getAllIntToString() {
  int[] tempint = getAllInt();
  String[] starData = new String[tempint.length];
  for (int i = 0; i < starData.length; i++) {
   starData[i] = String.valueOf(tempint[i]);
  }
  return starData;
 }

 /**
  * 删除全部内容
  */
 public void removeAll() {
  data_All = new int[10];
  size_count = 0;
 }
}

posted @ 2006-02-19 17:33 sunfruit 阅读(1409) | 评论 (0)编辑 收藏

开源软件好,但是写开源软件也有要注意的

    --sunfruit

    说了开源软件的一些想法

    注:转贴

    开源软件不要求代码有多么的漂亮,但是设计的架构必须要很精简,很清晰。这样别人才能在了解架构的前提下做出扩充。不要指望有人通过修改源代码来扩展功能,没有人会愿意去完全读懂一堆source,即使是大师级的source code。Apache的Avalon虽然功能很多,但是由于落后的架构,也不得不惨淡收场。
所以开源软件必然是个优秀的产物,就像是个受到各方严格监督的孩子,虽然现在还弱小,但将来不可限量啊!
    不过光靠基金会的支持也还不足以让这个孩子茁壮成长,商业化才是最终的出路

posted @ 2006-02-19 17:31 sunfruit 阅读(168) | 评论 (0)编辑 收藏

原码、补码和反码

    --sunfruit

    说明了原码、补码和反码的关系以及算法

原码、补码和反码
 
1)原码表示法

    原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x

    例如,X1= 1010110

          X2= 1001010

    其原码记作:

            X1=[1010110]=01010110

            X2=[1001010]=11001010

    原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:

      最大值为0.1111111,其真值约为(0.9910

      最小值为1.1111111,其真值约为(一0.9910

当用8位二进制来表示整数原码时,其表示范围:

      最大值为01111111,其真值为(12710

      最小值为11111111,其真值为(-12710

      在原码表示法中,对0有两种表示形式:

          +0=00000000

           [0] =10000000

 

2)补码表示法

    机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X

      例如,[X1]=1010110

            [X2]= 1001010

            [X1]=01010110

            [X1]=01010110

          [X1]=[X1]=01010110

            [X2] = 11001010

            [X2] =10110101110110110

    补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:

      最大为0.1111111,其真值为(0.9910

      最小为1.0000000,其真值为(一110

采用8位二进制表示时,整数补码的表示范围:

      最大为01111111,其真值为(12710

      最小为10000000,其真值为(一12810

      在补码表示法中,0只有一种表示形式:

        [0]=00000000

        [0]=111111111=00000000(由于受设备字长的限制,最后的进位丢失)

所以有[0]=[0]=00000000

 

 

3)反码表示法

    机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作[X

    例如:X1= 1010110

          X2= 1001010

        X1=01010110

         [X1]=X1=01010110

         [X2]=11001010

         [X2]=10110101

    反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。

1. 已知[X]=10011010,求[X]

分析如下:

[X][X]的原则是:若机器数为正数,则[X]=[X];若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]=[X]1,即

          [X]=10011010

          [X]=11100101

     十)         1     

 

          [X]=11100110

 

 

2. 已知[X]=11100110,求[X

         分析如下:

     对于机器数为正数,则[X=X

     对于机器数为负数,则有[X=[[X

现给定的为负数,故有:

            X=11100110

        [[X=10011001

              十)         1   

 

        [[X=10011010=X

posted @ 2006-02-19 17:30 sunfruit 阅读(2256) | 评论 (1)编辑 收藏

IOC模式和JAVA的反射机制

    --sunfruit

    简述了IOC的意义和JAVA的反射机制

IOC模式:
看到很多Java的文档都谈到了Ioc,原来IoC就是Inverse of Control啊,就是所谓的控制反转。
即由外部传入所需的对象,而非在内部定义。好处自然就是灵活性了。当然对传入的参数的要求就是面向接口了。

Java的反射机制:
通过Class类,实现动态的生成Instance(可以使用class.newInstance调用无参数的constructor或者取得特定的Constructor,再通过Constructor.newInstance。),以及动态调用Methods和设置Fields。不过对于调用特定的Method似乎也没什么很大意义,除非是已知实现了某些interface的情况下,调用指定的Method。
相比之下,C++就不能在给定class名的情况下生成Instance了,更不要谈之后的调用Method了

posted @ 2006-02-19 17:28 sunfruit 阅读(410) | 评论 (0)编辑 收藏

Oracle优化你的查询--关于避免索引隐式失效

    --sunfruit

    说明了Oracle数据库中的索引隐式失效的问题

1、隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.
    由于表的字段tu_mdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给Oracle,这样会导致索引失效.
    错误的例子:select * from test where tu_mdn=13333333333;
    正确的例子:select * from test where tu_mdn='13333333333';
   
2、对索引列进行运算导致索引失效,我所指的对索引列进行运算包括(+,-,*,/,! 等)
    错误的例子:select * from test where id-1=9;
    正确的例子:select * from test where id=10;
   
3、使用Oracle内部函数导致索引失效.对于这样情况应当创建基于函数的索引.
    错误的例子:select * from test where round(id)=10; 说明,此时id的索引已经不起作用了
    正确的例子:首先建立函数索引,create index test_id_fbi_idx on test(round(id));
                     然后 select * from test where round(id)=10; 这时函数索引起作用了

posted @ 2006-02-19 17:26 sunfruit 阅读(1197) | 评论 (0)编辑 收藏

Oracle日期函数的一些总结

    --sunfruit

    总结了Oracle中关于日期函数的一些用法和技巧

上月末天:
SQL> select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from
  2  dual
  3  ;
 
LASTDAY
----------
2004-09-30
 
上月今天
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual
  2  ;
 
PRETODAY
----------
2004-09-29
 
上月首天
SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') FirstDay
  2  from dual;
 
FIRSTDAY
----------
2004-09-01
 
 
 
以下转贴:
 Oracle
在日期使用上允许极大的灵活性。由于可以在日期字段存储时间和日期,从而有函数可以既引用日期又引用时间。
Oracle 所提供的一些日期函数如下所示。
1. SYSDATE
返回当前的日期和时间。
示例
SELECT sysdate FROM dual;

SYSDATE
----------
05-3月 -03

2. ADD_MONTHS(d, no_of_month)
当前日期"m"后推"no_of_month" 个月。参数"no_of_month"可为任何整数。
示例
SELECT add_months(sysdate,2) FROM dual;

ADD_MONTHS
----------
05-5月 -03

SELECT add_months(sysdate,-2) FROM dual;

ADD_MONTHS
----------
05-1月 -03

3. LAST_DAY(month_day)
返回变量"month_day"中所指定月份的最后一天的日期。
示例
SELECT last_day(sysdate) FROM dual;

LAST_DAY(S
----------
31-3月 -03

4. MONTHS_BETWEEN(d1, d2)
返回日期 d1 和 d2 之间的月份数。如果 d1 晚于 d2,结果为正,否则返回负数。
示例
SELECT months_between(sysdate,to_date('20030101','YYYYMMDD')) FROM dual;

MONTHS_BETWEEN(SYSDATE,TO_DATE('20030101','YYYYMMDD'))
------------------------------------------------------
                                           2.15773932

5. NEXT_DAY(d, day_of_week)
返回由"day_of_week"命名的,在变量"d"指定的日期之后的第一个工作日的日期。参数"day_of_week"必须为该星期中的某一天。
示例
-- 2003.3.2 是星期日
SELECT next_day(to_date('20030226','YYYYMMDD'),1) FROM dual;

NEXT_DAY(T
----------
02-3月 -03

日期格式
格式元素        说明
AD 或 A.D.      带有或不带有句号的 AD 标记
BC 或 B.C.      带有或不带有句号的 BC 标记
D               一周中的天 (1-7)
DAY             天的名称 (Sunday - Saturday)
DD              一月中的天 (1 - 31)
DDD             一年中的天 (1 - 366)
DY              天的缩写 (Sun - Sat)
HH              一天中的小时 (1 - 12)
HH24            一天中的小时 (0 - 23)
MI              分钟 (0-59)
MM              月 (01-12)
MON             月名称的缩写
MONTH           月的名称
SS              秒 (0-59)
YYYY            4 个数字表示的年

posted @ 2006-02-19 17:22 sunfruit 阅读(910) | 评论 (0)编辑 收藏

[原创]用JAVA做的FTP上传软件

    --sunfruit

    java做的ftp上传软件,可以定时上传文件


    JDK版本
        1.4.x 推荐1.4.2
    服务端软件
        目前只能支持SERVER_U
    参数配置
        在xmlfile/config.xml里面配置连接参数
    功能
        可以使用FTP协议上传文件,建立文件夹,建立定时上传任务

    欢迎大家提意见,交流

    下载链接
    http://blog.blogchina.com/upload/2005-03-03/20050303145205983322.rar

posted @ 2006-02-19 17:22 sunfruit 阅读(235) | 评论 (0)编辑 收藏

[JAVA]三层结构--JSF教程

    --sunfruit

    非常好的JSF教程,推荐

    由于本站不允许上传zip、rar文件,所以把压缩好的文件做成doc的内置对象了,打开doc解压即可

    下载地址:http://sunfruit.blogchina.com/inc/JSF.doc

posted @ 2006-02-19 17:20 sunfruit 阅读(3214) | 评论 (6)编辑 收藏

仅列出标题
共11页: First 上一页 3 4 5 6 7 8 9 10 11 下一页