This is Dony

2008年7月5日 #

SQL Basic

     摘要:   阅读全文

posted @ 2008-11-08 21:38 Dony 阅读(112) | 评论 (0)编辑 收藏

HSQLDB

     摘要:   阅读全文

posted @ 2008-11-07 17:27 Dony 阅读(209) | 评论 (0)编辑 收藏

改变Oracle XDB的http端口

sqlplus /nolog;
conn /@db as sysdba;
call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), '/xdbconfig/sysconfig/protocolconfig/httpconfig/http-port/text()', 7080));
commit;
EXEC dbms_xdb.cfg_refresh;

posted @ 2008-10-30 19:16 Dony 阅读(108) | 评论 (0)编辑 收藏

JAVA字符集(ZT)

     摘要:   阅读全文

posted @ 2008-10-07 10:23 Dony 阅读(118) | 评论 (0)编辑 收藏

递归示例(原创)

     摘要:   阅读全文

posted @ 2008-09-17 11:26 Dony 阅读(214) | 评论 (0)编辑 收藏

java5的学习总结(ZT)

1 循环操作的增强
import java.util.*;
public class GenericArrayExample {
    public static void main(String args[])
    {
        //Vector<Integer> vectorList[] = new Vector<Integer>[10];
        //Vector<Integer> vectorList[] = new Vector<Integer>[];
        //Vector vector[] = new Vector[10];
     int sum = 0;
     for ( int number: computeNumbers() )
         sum += number;
     System.out.println(sum);
    
     Integer[] numbers = computeNumbers();
     for (int i=0; i < numbers.length ; i++) {
         if (i != 0) System.out.print(",");
         System.out.print(numbers[i]);
     }
    }
 private static Integer[] computeNumbers() {
  // TODO Auto-generated method stub
  return new Integer[]{new Integer(1),new Integer(2),new Integer(3)};
 }
}


 2
注释(Annotations)

    注释是可以添加到代码中的修饰符,可以用于包声明、类型声明、构造函数、方法、字段、参数和变量。Tiger 包含内置注释,还支持您自己编写的定制注释。
      它的三种内置注释:SuppressWarnings, Deprecated, and Override。
      SuppressWarnings
      这种注释在类和方法级别阻止编译器抛出的警告。有时你知道使用一些不被推荐使用的方法更好一些或者必须执行一些存在型别安全的静态方法,如果使用这些方法将不断地收到根本无关的事情的警告。SuppressWarnings能使编译器不给您增添麻烦!
      SupressWarnings 是具有变量的 — 所以您将单一注释类型与该变量一起使用。可以以值数组来提供变量,其中每个值指明要阻止的一种特定警告类型。
   @SuppressWarnings("deprecation")//使用不被推荐的方法
   public static void selfDestruct() {
       Thread.currentThread().stop();
   }
  
   @SuppressWarings("unchecked")
   public void nonGenericsMethod() {
     List wordList = new ArrayList();    // 没有指明List中值的类型
     wordList.add("foo");                // 可能引发异常
    }

    SuppressWarnings 中变量的值采用数组,使您可以在同一注释中阻止多个警告。例如, 
@SuppressWarnings("unchecked", "fallthrough") 使用两个值的数组。此功能为处理
错误提供了非常灵活的方法,无需进行大量的工作。
    Deprecated
 Deprecated的用处不是很大。使用 Deprecated 来对不应再使用的方法进行注释。大多数
情况下@Deprecated和javadoc同时使用。
public class DeprecatedClass {
  @Deprecated public void doSomething() {
    // 代码
  }
  //替换doSomething()的方法,可能实现更好一点
  public void doSomethingElse() {
    // 代码  }
}
    如果通过覆盖或调用来使用声明为过时的方法,编译器将处理注释,发现不应该使用该
方法,并发出错误消息。
    Override
 Override 应该仅用于方法(不用于类、包声明或其他构造)。它指明注释的方法将覆盖超
类中的方法。
@Override
public int hashCode() {
    ...
}
     如果你将hashCode() 写成hashcode() "C",编译时不会出错,只有在运行时才会报错。
通过使用Override注释,如果实际没有执行重载编译时就会报错。Override注释在父类方法改
变时也会发生效用。比如父类方法新增了一个参数或者方法改名了,那么子类编译时就会出错,就
不会令人很迷惑了。
3 Enumerations 枚举
    Enums很像public static final int声明,它原来常被用于enum values。它比ints最大的优点在于它是类型安全的,你不能错误的用一种类型代替另一种类型的枚举(Enums),不同于ints,他们对编译器来说都是一样的。
    Enums只提供了一点点新增的功能。EnumMap 和 EnumSet这两个工具类,是对Enums进行了特殊优化的标准集合(collection )类。如果你确定你的集合(collection )里只包含(Enums),你就可以使用这两个经过优化的标准工具集合类来代替HashMap 或 HashSet。
    在很多情况下,你的程序里可以用Enums代替public static final int。他们的功能是相当的,你也可以静态引入Enums(那样它的调用和对public static final int的调用是一致的)即使是在内置类或内置enum中。注意:在比较Enums时,他们的排列顺序将代表他们的索引。
      隐含的静态方法
      两个静态方法将会隐含在你写的Enums声明中。他们不会实现在java.lang.Enum中,因为他们在java.lang.Enum的子类中,而不是声明在java.lang.Enum本身。
      第一个方法values()返回Enums的所有制的一个值数组。
      第二个方法valueOf()返回特定String对应的值,特定String必须精确的吻合。
      方法
      最令人兴奋的就是每一个enums都可以有自己的方法。过去你可能书写很多代码对public static final int(代表特定的数据库)执行switch 操作将其转换为JDBC连接字符串。现在你可以直接使用enums的方法达到你的目的。
       下面的例子DatabaseType enum有一个抽象方法,每个enum实例将会提供这个方法的实现。
public enum DatabaseType {
    ORACLE {
        public String getJdbcUrl() {...}
    },
    MYSQL {
        public String getJdbcUrl() {...}
    };
    public abstract String getJdbcUrl();
}
    现在你可以直接使用这个enum 提供的有效方法:
DatabaseType dbType = ...;
String jdbcURL = dbType.getJdbcUrl();
    一些完整的代码段:
EnumExample1.java
enum OperatingSystems {
    windows, unix, linux, macintosh
}
public class EnumExample1 {
    public static void main(String args[])
    {
        OperatingSystems os;
        os = OperatingSystems.windows;
        switch(os) {
            case windows:
                System.out.println("You chose Windows!");
                break;
            case unix:
                System.out.println("You chose Unix!");
                break;
            case linux:
                System.out.println("You chose Linux!");
                break;
            case macintosh:
                System.out.println("You chose Macintosh!");
                break;
            default:
                System.out.println("I don't know your OS.");
                break;
        }
    }
}
EnumBitmapExample.java
enum ProgramFlags {
    showErrors(0x01),
    includeFileOutput(0x02),
    useAlternateProcessor(0x04);
    private int bit;
    ProgramFlags(int bitNumber)
    {
        bit = bitNumber;
    }
    public int getBitNumber()
    {
        return(bit);
    }
}
public class EnumBitmapExample {
    public static void main(String args[])
    {
        ProgramFlags flag = ProgramFlags.showErrors;
        System.out.println("Flag selected is: " +
                                flag.ordinal() +
                           " which is " +
                                flag.name());
    }
}

posted @ 2008-07-05 23:05 Dony| 编辑 收藏

java.lang.UnsupportedClassVersionError

出现java.lang.UnsupportedClassVersionError错误的原因,是因为我们使用高版本的JDK编译的Java class文件试图在较低版本的JVM上运行,所报的错误。

因为,高版本的JDK生成的class文件使用的格式,可能与低版本的JDK的.class文件格式不同。这样,低版本的JVM无法解释执行这个.class文件,会抛出java.lang.UnsupportedClassVersionError不支持的Class版本错误。
这个错误尤其在JDK5与JDK5之前的版本上表现明显。因为,JDK5在Java语法上作了不少增强,引入了一些新的.class文件的元素,导致旧版本的JVM无法解释、执行.class文件。即使这个类并没有使用任何JDK5的新元素,但是JDK5生成的.class文件,JDK1.4及其以前的JVM都无法辨认!
所以,目前使用最广的,还是JDK1.4。很多软件和项目都无法使用JDK5。
 解决方法有如下两种方法:

第一种:

有一个名叫 Toby Reyelts 的开发人员决定消除 JDK 5.0 编译器限制。结果就是开放源代码的 Retroweaver 项目(参见 http://www-128.ibm.com/developerworks/cn/java/j-cwt07065/#resources#resources)。Retroweaver 使用 classworking 技术来修改由 JDK 5.0 编译器生成的二进制类表示,以便这些类可以与早期的 JVM 一起使用。
它通过修改JDK5生成的.class文件,将其变为JVM1.4及之前版本能够运行的.class文件。
目前,使用新版本的IDE编辑器可能会造成你遭遇java.lang.UnsupportedClassVersionError 错误。
比如,Eclipse3.2+MyEclipse5.0这个新版的IDE工具。进入首选项---Java---编译器,可以看到,默认的编译器依从等级是5.0,这里改为1.4,因为我们使用的软件需要运行在JDK1.4的JVM上。
同一配置区下的已安装JRE中,不要安装JRE,而是安装JDK,指定1.4或1.5的JDK。还是使用jdk1.4。
在MyEclipse----应用服务器下,指定Tomcat5。指定Tomcat使用jdk1.4。
这样,就全部指定使用Jdk1.4来编译和运行程序了。如果全部指定jdk5也是可以的。但是,绝对不能够使用jdk5编译程序,而又在jdk1.4上运行程序,那样将会抛出java.lang.UnsupportedClassVersionError不支持的Class版本错误。
这种情况下,不论是Eclipse生成的war包,还是ant文件生成war包,都使用jdk5编译,就会在运行时出现错误,该应用程序将无法启动。如果你查看Tomcat的日志文件,将会看到正是java.lang.UnsupportedClassVersionError错误发生了!
第二种:
1、右键点击工程文件,选择属性(properties),
2、在属性窗口中选择 Build-->Java,在右边的选项中有四个下拉框,就可以看到编译选项了,
3、其中Compiler和Debug Option可以不用管,只在Languege features和Target VM中选择相应的JDK版本就可以了,然后确定,一切OK。
附件中是配置的图片。
-----------------------------------------------------------
如果在Target VM中选择了All Java SDKs,那么你的class文件在使用JDK1.1的VM上都可以运行(Jbuilder2006帮助中是这么说的,估计没几个人的机子上还在用JDK1.1吧 :-)

2.
Eclipse3.1同样会出现相同的问题,这时候只需要把项目用的JDK与你安装的JDK搞成版本一样就解决了.
步骤:右击你的项目-->属性-->Java Compiler,设置合适的版本!!

 

posted @ 2008-07-05 19:57 Dony| 编辑 收藏

JDK5.0的11个主要新特征(ZT)

     摘要: 1           泛型(Generic) 1.1          说明 增强了java的类型安全,可以在编译期间对容器内的对象进行类型检查,在运行期不必进行类型的转换。而在j2se5之前必须在运行期...  阅读全文

posted @ 2008-07-05 19:41 Dony 阅读(150) | 评论 (0)编辑 收藏