??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲天堂av图片,99久久伊人,99精品视频网http://www.aygfsteel.com/love-java/archive/2006/01/25/29198.html隐语?/dc:creator>隐语?/author>Wed, 25 Jan 2006 06:28:00 GMThttp://www.aygfsteel.com/love-java/archive/2006/01/25/29198.htmlhttp://www.aygfsteel.com/love-java/comments/29198.htmlhttp://www.aygfsteel.com/love-java/archive/2006/01/25/29198.html#Feedback0http://www.aygfsteel.com/love-java/comments/commentRss/29198.htmlhttp://www.aygfsteel.com/love-java/services/trackbacks/29198.htmllinux下怎么解后~名是gzip的文Ӟ
1.?a为扩展名的文?
#tar xv file.a

2.?z为扩展名的文?
#uncompress file.Z

3.?gz为扩展名的文?
#gunzip file.gz

4.?bz2为扩展名的文?
#bunzip2 file.bz2

5.?tar.Z为扩展名的文?
#tar xvZf file.tar.Z
?#compress -dc file.tar.Z | tar xvf -

6.?tar.gz/.tgz为扩展名的文?
#tar xvzf file.tar.gz
?gzip -dc file.tar.gz | tar xvf -

7.?tar.bz2为扩展名的文?
#tar xvIf file.tar.bz2
?bzip2 -dc file.tar.bz2 | xvf -

8.?cpio.gz/.cgz为扩展名的文?
#gzip -dc file.cgz | cpio -div

9.?cpio/cpio为扩展名的文?
#cpio -div file.cpio
或cpio -divc file.cpio

10.?rpm为扩展名的文件安?
#rpm -i file.rpm

11.?rpm为扩展名的文件解压羃Q?
#rpm2cpio file.rpm | cpio -div

12.?deb为扩展名的文件安装:
#dpkg -i file.deb

13.?deb为扩展名的文件解压羃:
#dpkg-deb --fsys-tarfile file.deb | tar xvf - ar p
file.deb data.tar.gz | tar xvzf -

14.?zip为扩展名的文?
#unzip file.zip
在linux下解压Winzip格式的文?
  要是装了jdk的话Q可以用jar命oQ还可以使用unzip命o?
直接解压.tar.gz文g
  xxxx.tar.gz文g使用tar带zxvf参数Q可以一ơ解压开。XXXX为文件名?例如Q?
$tar zxvf xxxx.tar.gz 各种压羃文g的解压(安装ҎQ?

文g扩展?解压Q安装方法)

.a ar xv file.a
.Z uncompress file.Z
.gz gunzip file.gz
.bz2 bunzip2 file.bz2
.tar.Z tar xvZf file.tar.Z
compress -dc file.tar.Z | tar xvf -
.tar.gz/.tgz tar xvzf file.tar.gz
gzip -dc file.tar.gz | tar xvf -
.tar.bz2 tar xvIf file.tar.bz2
bzip2 -dc file.tar.bz2 | xvf -
.cpio.gz/.cgz gzip -dc file.cgz | cpio -div
.cpio/cpio cpio -div file.cpio
cpio -divc file.cpio
.rpm/install rpm -i file.rpm
.rpm/extract rpm2cpio file.rpm | cpio -div
.deb/install dpkg -i file.deb
.deb/exrtact dpkg-deb --fsys-tarfile file.deb | tar xvf -
ar p file.deb data.tar.gz | tar xvzf -
.zip unzip file.zip

bzip2 -d myfile.tar.bz2 | tar xvf

tar xvfz myfile.tar.bz2

x 是解?
v 是复杂输?
f 是指定文?
z gz格式

gzip
gzip[选项]要压~(或解压羃Q的文g?
-c输出写到标准输ZQƈ保留原有文g?
-d压~文件压~?
-lҎ个压~文Ӟ昄下列字段Q压~文件的大小Q未压羃文g的大、压~比、未压羃文g的名?
-r递归式地查找指定目录q压~或压羃其中的所有文件?
-t试压羃文g是正完整?
-vҎ一个压~和解压~的文gQ显C其文g名和压羃比?
-num-用指定的数字调整压羃的速度?
举例Q?
?usr目录q包括它的子目录在内的全部文件做一备䆾Q备份文件名为usr.tar
tar cvf usr.tar /home
?usr 目录q包括它的子目录在内的全部文件做一备䆾q进行压~,备䆾文g名是usr.tar.gz
tar czvf usr.tar.gz /usr
压羃一l文Ӟ文g的后~为tar.gz
#tar cvf back.tar /back/
#gzip -q back.tar
or
#tar cvfz back.tar.gz /back/
释放一个后~为tar.gz的文件?
#tar zxvf back.tar.gz
#gzip back.tar.gz
#tar xvf back.tar

tar的用方法:


1Q压~一l文件ؓtar.gz后缀
tar cvf backup.tar /etc
或gzip -q backup.tar.gz

2:释放一个后~为tar.gz的文?
gunzip backup.tar.gz
或tar xvf backup.tar

3:用一个命令完成压~?
tar cvf -/etc | gzip -qc > backup.tar.gz

4:用一个命令完成释?
gunzip -c backup.tar.gz | tar xvf -

5:如何解开ta.Z的文?
tar xvfz backup.tar.Z
或uncompress backup.tar.Z
tar xvf backup.tar

6:如何解开.tgz文g
gunzip backup.tgz

7:如何压羃和解压羃.bz2的包
bzip2 /etc/smb.conf q将压羃文gsmb.conf成smb.conf.bz2
bunzip2 /etc/smb.conf.bz2 在当前目录下q原smb.conf.bz2为smb.conf


]]>
linux学习(|络配置) http://www.aygfsteel.com/love-java/archive/2006/01/25/29184.html隐语?/dc:creator>隐语?/author>Wed, 25 Jan 2006 03:36:00 GMThttp://www.aygfsteel.com/love-java/archive/2006/01/25/29184.htmlhttp://www.aygfsteel.com/love-java/comments/29184.htmlhttp://www.aygfsteel.com/love-java/archive/2006/01/25/29184.html#Feedback0http://www.aygfsteel.com/love-java/comments/commentRss/29184.htmlhttp://www.aygfsteel.com/love-java/services/trackbacks/29184.html# /etc/hosts Q“hosts”文Ӟ定义了主机名和ip地址的对应,其中也有要q行dnsq台电脑的ip地址和主机名。内容:
127.0.0.1 localhost.localdomain localhost

#/etc/host.conf Q“host.conf”文Ӟ"order hosts bind"语句Q指定了对主机名的解析顺序是先到hosts中查找,然后到dns服务器的记录里查找。“multi on”则是允怸个主机名对应多个ip地址。内容:
order hosts, bind
multi on
nospoof on

#/etc/resolv.confQ“resolv.conf”文Ӟ“nameserver 11.0.0.1”指定了DNS服务器的地址。注意,q个文gҎ通非dns服务器的电脑Q非windows的系l;Windowspȝ是在“网l属性”中讄q项的)来说Q是必不可少的。你如果没有讄本机为dns服务器,你又要能够解析域名,必L定一个dns服务器的地址。你可以最多写上三个地址Q作为前一个失败时的候选dns服务器。“domain honston.com”指定默认的域。文件内容:
domain 21php.com
nameserver 11.0.0.1

|关配置文gQ?/P>

#/etc/sysconfig/network-scripts/ifcfg-eth0(W一块网卡的|络配置文g)。文件内容:

DEVICE=eth0
BOOTPROTO=none
BROADCAST=192.168.0.255
HWADDR=00:50:FC:76:51:DB
IPADDR=192.168.0.2
NETMASK=255.255.255.0
NETWORK=192.168.0.0
ONBOOT=yes
TYPE=Ethernet
USERCTL=no
PEERDNS=yes
IPV6INIT=no
GATEWAY=192.168.0.1

|络配置命oQ?ifconfig 具体用法使用Q?ifconfig --help命o查询?/P>

down掉网养I ifconfig eth0 down(xW一块网?

Ȁzȝ养I ifconfig eth0 up(Ȁzȝ一块网?



]]>
tomcat5与tomcat4的连接池配置区别.http://www.aygfsteel.com/love-java/archive/2005/12/29/25903.html隐语?/dc:creator>隐语?/author>Thu, 29 Dec 2005 09:01:00 GMThttp://www.aygfsteel.com/love-java/archive/2005/12/29/25903.htmlhttp://www.aygfsteel.com/love-java/comments/25903.htmlhttp://www.aygfsteel.com/love-java/archive/2005/12/29/25903.html#Feedback0http://www.aygfsteel.com/love-java/comments/commentRss/25903.htmlhttp://www.aygfsteel.com/love-java/services/trackbacks/25903.html    <Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource"
        factory="org.apache.commons.dbcp.BasicDataSourceFactory"
        maxActive="10"
        maxIdle="10"
        maxWait="10"
        username="sa"
        password=""
        driverClassName="com.jnetdirect.jsql.JSQLDriver"
        defaultAutoCommit="true"
        url="jdbc:JSQLConnect://localhost/testDB"
        removeAbandoned="true"
        removeAbandonedTimeout="10"
    />
tomcat4的连接池配置:
    <Resource name="jdbc/testDB" auth="Container" type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/testDB">
        <parameter>
            <name>factory</name>
            <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>
        <parameter>
            <name>maxActive</name>
            <value>10</value>
        </parameter>
        <parameter>
            <name>maxIdle</name>
            <value>10</value>
        </parameter>
        <parameter>
            <name>maxWait</name>
            <value>10</value>
        </parameter>
        <parameter>
            <name>username</name>
            <value>sa</value>
        </parameter>
        <parameter>
            <name>password</name>
            <value></value>
        </parameter>
        <parameter>
            <name>driverClassName</name>
            <value>com.jnetdirect.jsql.JSQLDriver</value>
        </parameter>
        <parameter>
            <name>defaultAutoCommit</name>
            <value>true</value>
        </parameter>
        <parameter>
            <name>url</name>
            <value>jdbc:JSQLConnect://localhost/testDB</value>
        </parameter>
        <parameter>
            <name>removeAbandoned</name>
            <value>true</value>
        </parameter>
        <parameter>
            <name>removeAbandonedTimeout</name>
            <value>10</value>
        </parameter>
        <parameter>
            <name>logAbandoned</name>
            <value>true</value>
        </parameter>
    </ResourceParams>

如果tomcat4的连接池配置直接用到tomcat5中的?会出?
Cannot create JDBC driver of class '' for connect URL 'null'的错?br>

]]>
[导入]javascript判断字符串是否ؓ数字http://www.aygfsteel.com/love-java/archive/2005/12/19/24559.html隐语?/dc:creator>隐语?/author>Mon, 19 Dec 2005 01:34:00 GMThttp://www.aygfsteel.com/love-java/archive/2005/12/19/24559.htmlhttp://www.aygfsteel.com/love-java/comments/24559.htmlhttp://www.aygfsteel.com/love-java/archive/2005/12/19/24559.html#Feedback0http://www.aygfsteel.com/love-java/comments/commentRss/24559.htmlhttp://www.aygfsteel.com/love-java/services/trackbacks/24559.htmlparseInt(obj) —— 判断obj是否为整敎ͼ如果为有数点的数字(包括后面多个数?则自动截掉小数后的所有位?不四舍五?Q如果不为数字,则返回NaN?/P>

parseFloat(obj)——判断obj是否为QҎQ如果ؓ有小数点的数字(包括后面多个数点)则自动截掉第2个小数点的所有位敎ͼ不四舍五入)Q如果不为数字,则返回NaN?/P>

isNaN(obj)——判断obj是否为字W串Q如果返回trueQ则为字W串Q如果返回ؓfalseQ则为数?带小数点)?/P>
文章来源:http://java.mblogger.cn/love_java/posts/18171.aspx

]]>
[导入][分n][推荐][转蝲]J2SE 5.0中的泛型http://www.aygfsteel.com/love-java/archive/2005/12/19/24558.html隐语?/dc:creator>隐语?/author>Mon, 19 Dec 2005 01:34:00 GMThttp://www.aygfsteel.com/love-java/archive/2005/12/19/24558.htmlhttp://www.aygfsteel.com/love-java/comments/24558.htmlhttp://www.aygfsteel.com/love-java/archive/2005/12/19/24558.html#Feedback0http://www.aygfsteel.com/love-java/comments/commentRss/24558.htmlhttp://www.aygfsteel.com/love-java/services/trackbacks/24558.html转蝲地址Q?/P>

http://www.matrix.org.cn/resource/article/43/43634_java_generics.html

J2SE 5.0中的泛型

作者:Budi Kurniawan

译Q?SPAN style="COLOR: brown">RR00

emailQdi_feng_ro@hotmail.com


版权声明Q可以Q意{载,转蝲时请务必以超链接形式标明文章原始出处和作者信息及本声?BR>英文原文地址:
http://www.onjava.com/pub/a/onjava/2005/07/06/generics.html
中文地址:
http://www.matrix.org.cn/resource/article/43/43634_java_generics.html
关键词: java generics java5

摘要
泛型是J2SE 5.0最重要的特性。他们让你写一个type(cL接口Q和创徏一个实例通过传递一个或多个引用cd。这个实例受限于只能作用于这些类型。比如,?java 5Qjava.util.List 已经被泛化。当建立一个list对象Ӟ你通过传递一个javacd建立一个List实例Q此list实例只能作用于所传递的cd。这意味着如果你传递一个String ,此List实例只能拥有String对象Q如果你传递一个IntegerQ此实例只能存贮Integer对象。除了创建参数化的类型,你还能创建参数化的函数?BR>泛型的第一个好处是~译时的严格cd查。这是集合框架最重要的特炏V此?泛型消除了绝大多数的cd转换。在JDK 5.0之前Q当你用集合框架时Q你不得不进行类型{换?BR>本文教你如何操作泛型。它的第一部分?#8220;没有泛型的日?#8221;Q先让我们回忆老版本JDK的不ѝ然后,举一些泛型的例子。在讨论完语法以及有界泛型的使用之后Q文章最后一章将解释如何写泛型?BR>

没有泛型的日?/B>
所有的javac都源自java.lang.Object,q意味着所有的JAVA对象能{换成Object。因此,在之前的JDK的版本中Q很多集合框架的函数接受一个Object参数。所以,collections是一个能持有M对象的多用途工P但带来了不良的后果?BR>
举个单的例子Q在JDK 5.0的之前版本中Q类List的函数add接受一个Object参数Q?BR>
public boolean add(java.lang.Object element)


所以你能传递Q何类型给add。这是故意这么设计的。否则,它只能传递某U特定的对象Q这样就会出现各UListcdQ如QStringList, EmployeeList, AddressList{?BR>add通过Object传递能带来好处,现在我们考虑get函数(q回List中的一个元?.如下是JDK 5之前版本的定义:

public java.lang.Object get(int index) throws IndexOutOfBoundsException


getq回一个Object.不幸的事情从此开始了.假如你储存了两个String对象在一个List?

List stringList1 = new ArrayList();
stringList1.add("Java 5");
stringList1.add("with generics");


当你想从stringList1取得一个元素时,你得C一个Object.Z操作原来的类型元?你不得不把它转换为String?BR>
String s1 = (String) stringList1.get(0);


但是,假如你曾l把一个非String对象加入stringList1?上面的代码会抛出一个ClassCastException. 有了泛型,你能创徏一个单一用途的List实例.比如,你能创徏一个只接受String对象的List实例,另外一个实例只能接受Employee对象. q同样适用于集合框架中的其他类?


泛型入门

像一个函数能接受参数一?一个泛型也能接受参?q就是一个泛型经常被UCؓ一个参数化cd的原?但是不像函数?)传递参?泛型是用<>传递参数的.声明一个泛型和声明一个普通类没有什么区?只不q你把泛型的变量攑֜<>?
比如,在JDK 5?你可以这样声明一个java.util.List : List<E> myList;
E UCؓcd变量.意味着一个变量将被一个类型替?替代cd变量的值将被当作参数或q回cd.对于List接口来说,当一个实例被创徏以后,E 被当作一个add或别的函数的参数.E 也会使get或别的参数的q回?下面是add和get的定?

boolean add<E o>
E get(int index)


NOTE:一个泛型在声明或例C时允许你传递特定的cd变量: E.除此之外,如果E是个c,你可以传递子c;如果E是个接口Q你可以传递实现接口的c;

-----------------------------译者添?-------------------
List<Number> numberList= new ArrayList<Number>();
numberList.add(2.0);
numberList.add(2);
-----------------------------译者添?-------------------


如果你传递一个Stringl一个ListQ比如:

List<String> myList;


那么mylist的add函数接受一个String作ؓ他的参数Q而get函数返回一个String.因ؓq回了一个特定的cdQ所以不用类型{化了?BR>
NOTEQ根据惯例,我们使用一个唯一的大写字目表CZ个类型变量。ؓ了创Z个泛型,你需在声明时传递同L参数列表。比如,你要惛_Z个ArrayList来操作String Q你必须把String攑֜<>中。如Q?BR>
List<String> myList = new ArrayList<String>();


再比如,java.util.Map 是这么定义的Q?BR>
public interface Map<K,V>


K用来声明map?KEY)的类型而V用来表示?VALUE)的类型。put和values是这么定义的Q?BR>
V put(K key, V value)
Collection<V> values()


NOTE:一个泛型不准直接的或间接的是java.lang.Throwable的子cR因为异常是在运行时抛出?所以它不可能预a什么类型的异常在~译时抛?

列表1的例子将比较List在JDK 1.4 和JDK1.5的不?BR>
package com.brainysoftware.jdk5.app16;
import java.util.List;
import java.util.ArrayList;

public class GenericListTest {
  public static void main(String[] args) {
    // in JDK 1.4
    List stringList1 = new ArrayList();
    stringList1.add("Java 1.0 - 5.0");
    stringList1.add("without generics");
    // cast to java.lang.String
    String s1 = (String) stringList1.get(0);
    System.out.println(s1.toUpperCase());

    // now with generics in JDK 5
    List<String> stringList2 = new ArrayList<String>();
    stringList2.add("Java 5.0");
    stringList2.add("with generics");
    // no need for type casting
    String s2 = stringList2.get(0);
    System.out.println(s2.toUpperCase());
  }
}


在列?中,stringList2是个泛型。声明List<String>告诉~译器List的实例能接受一个String对象。当Ӟ在另外的情况中,你能新徏能接受各U对象的List实例。注意,当从List实例中返回成员元素时Q不需要对象{化,因ؓ他返回的了你惌的类型,也就?String.

NOTE:泛型的类型检?type checking)是在~译时完成的.

最让h感兴的事情是,一个泛型是个类型ƈ且能被当作一个类型变量。比如,你想你的List储存lists of Strings,你能通过把List<String>作ؓ他的cd变量来声明List。比如:

List<List<String>> myListOfListsOfStrings;


要从myList中的W一个List重新取得StringQ你可以q么用:

String s = myListOfListsOfStrings.get(0).get(0);


下一个列表中的ListOfListsTestcȝ范了一个ListQ命名ؓlistOfListsQ接受一个String List作ؓ参数?BR>
package com.brainysoftware.jdk5.app16;
import java.util.ArrayList;
import java.util.List;
public class ListOfListsTest {
  public static void main(String[] args) {
    List<String> listOfStrings = new ArrayList<String>();
    listOfStrings.add("Hello again");
    List<List<String>> listOfLists = new ArrayList<List<String>>();
    listOfLists.add(listOfStrings);
    String s = listOfLists.get(0).get(0);
    System.out.println(s); // prints "Hello again"
  }
}


另外Q一个泛型接受一个或多个cd变量。比如,java.util.Map有两个类型变量s。第一个定义了键(keyQ的cdQ第二个定义了|value)的类型。下面的例子讲教我们如何使用个一个泛型Map.

package com.brainysoftware.jdk5.app16;
import java.util.HashMap;
import java.util.Map;
public class MapTest {
  public static void main(String[] args) {
    Map<String, String> map = new HashMap<String, String>();
    map.put("key1", "value1");
    map.put("key2", "value2");
    String value1 = map.get("key1");
  }
}


在这个例子中Q重新得C个key1代表的String|我们不需要Q何类型{换?BR>
没有参数的情况下使用泛型

既然在J2SE 5.0中收集类型已l泛型化Q那么,原来的用这些类型的代码如何呢Q很q运Q他们在JAVA 5中将l箋工作Q因Z能用没有参数的泛型。比如,你能l箋像原来一样用List接口Q正如下面的例子一栗?BR>
List stringList1 = new ArrayList();
stringList1.add("Java 1.0 - 5.0");
stringList1.add("without generics");
String s1 = (String) stringList1.get(0);


一个没有Q何参数的泛型被称为原?raw type)。它意味着q些为JDK1.4或更早的版本而写的代码将l箋在java 5中工作?BR>
管如此Q一个需要注意的事情是,JDKQ编译器希望你用带参数的泛型。否则,~译器将提示警告Q因Z认ؓ你可能忘了定义类型变量s。比如,~译上面的代码的时候你会看C面这些警告,因ؓW一个List被认为是原型?BR>
Note: com/brainysoftware/jdk5/app16/GenericListTest.java
uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

当你使用原型Ӟ如果你不想看到这些警告,你有几个选择来达到目的:
1.~译时带上参?source 1.4
2.使用@SupressWarnings("unchecked")注释
3.更新你的代码Q用List<Object>. List<Object>的实例能接受Mcd的对象,像是一个原型List。然而,~译器不会报错?BR>
使用 Q?通配W?/B>
前面提过Q如果你声明了一个List<aType>, 那么q个List对aType起作用,所以你能储存下面这些类型的对象Q?BR>1.一个aType的实?BR>2.它的子类的实?如果aType是个c?
3.实现aType接口的类实例(如果aType是个接口)
但是Q请注意Q一个泛型本w是个JAVAcdQ就像java.lang.String或java.io.File一栗传递不同的cd变量l泛型可以创Z同的JAVAcd。比如,下面例子中list1和list2引用了不同的cd对象?BR>
List<Object> list1 = new ArrayList<Object>();
List<String> list2 = new ArrayList<String>();


list1 指向了一个类型变量s为java.lang.Objects 的List而list2指向了一个类型变量s为String 的List。所以传递一个List<String>l一个参CؓList<Object>的函数将Dcompile time错误。下面列表可以说明:
package com.brainysoftware.jdk5.app16;
import java.util.ArrayList;
import java.util.List;

public class AllowedTypeTest {
  public static void doIt(List<Object> l) {
  }
  public static void main(String[] args) {
    List<String> myList = new ArrayList<String>();
    // q里生一个错?BR>    doIt(myList);
  }
}

上面的代码无法编译,因ؓ你试图传递一个错误的cdl函数doIt。doIt的参数是List<Object>二你传递的参数是List<String>?BR>可以使用 Q?通配W解册个难题。List<?> 意味着一个对M对象起作用的List。所以,doIt可以改ؓQ?BR>
public static void doIt(List<?> l) {}


在某些情况下你会考虑使用 ? 通配W。比如,你有一个printList函数Q这个函数打C个List的所有成员,你想让这个函数对Mcd的List起作用时。否则,你只能篏ȝzȝ写很多printList的重载函数。下面的列表引用了?? 通配W的printList函数?BR>
package com.brainysoftware.jdk5.app16;
import java.util.ArrayList;
import java.util.List;

public class WildCardTest {

  public static void printList(List<?> list) {
    for (Object element : list) {
      System.out.println(element);
    }
  }
  public static void main(String[] args) {
    List<String> list1 = new ArrayList<String>();
    list1.add("Hello");
    list1.add("World");
    printList(list1);

    List<Integer> list2 = new ArrayList<Integer>();
    list2.add(100);
    list2.add(200);
    printList(list2);
  }
}


q些代码说明了在printList函数中,List<?>表示各种cd的List对象。然而,h意,在声明的时候?? 通配W是不合法的Q像q样Q?BR>
List<?> myList = new ArrayList<?>(); // 不合?/PRE>

如果你想创徏一个接收Q何类型对象的ListQ你可以使用Object作ؓcd变量Q就像这P

List<Object> myList = new ArrayList<Object>();


在函C使用界限通配W?/B>
在之前的章节中,你学会了通过传递不同的cd变量s来创Z同JAVAcd的泛型,但ƈ不考虑cd变量s之间的承关pR在很多情况下,你想一个函数有不同的List参数。比如,你有一个函数getAverageQ他q回了一个List中成员的q_倹{然而,如果你把List<Number>作ؓgetAverage的参敎ͼ你就没法传递List<Integer> 或List<Double>参数Q因为List<Number>和List<Integer> 和List<Double>不是同样的类型?BR>
你能使用原型或用通配W,但这h法在~译时进行安全类型检查,因ؓ你能传递Q何类型的ListQ比如List<String>的实例。你可以使用List<Number>作ؓ参数Q但是你只能传?List<Number>l函数。但q样׃你的函数功能减少Q因Z可能更多的时候要操作List<Integer>?List<Long>Q而不是List<Number>?BR>
J2SE5.0增加了一个规则来解决了这U约束,q个规则是允许你定义一个上?upper bound) cd变量.在这U方式中Q你能传递一个类型或它的子类。在上面getAverage函数的例子中Q你能传递一个List<Number>或它的子cȝ实例Q比如List<Integer> or List<Float>?BR>
使用上界规则的语法这么定义的QGenericType<? extends upperBoundType>. 比如Q对getAverage函数的参敎ͼ你可以这么写List<? extends Number>. 下面例子说明了如何用这U规则?BR>
package com.brainysoftware.jdk5.app16;
import java.util.ArrayList;
import java.util.List;
public class BoundedWildcardTest {
  public static double getAverage(List<? extends Number> numberList)
  {
    double total = 0.0;
    for (Number number : numberList)
      total += number.doubleValue();
    return total/numberList.size();
  }

  public static void main(String[] args) {
    List<Integer> integerList = new ArrayList<Integer>();
    integerList.add(3);
    integerList.add(30);
    integerList.add(300);
    System.out.println(getAverage(integerList)); // 111.0
    List<Double> doubleList = new ArrayList<Double>();
    doubleList.add(3.0);
    doubleList.add(33.0);
    System.out.println(getAverage(doubleList)); // 18.0
  }
}

׃有了上界规则Q上面例子中的getAverage函数允许你传递一个List<Number> 或一个类型变量是Mjava.lang.Number子类的List?BR>
下界规则
关键字extends定义了一个类型变量的上界。通过使用super关键字,我们可以定义一个类型变量的下界Q尽用的情况不多。比如,如果一个函数的参数是List<? super Integer>Q那么意味着你可以传递一个List<Integer>的实例或者Q何java.lang.Integer的超c?(superclass)?BR>
创徏泛型

前面的章节主要说明了如何使用泛型,特别是集合框架中的类。现在我们开始学习如何写自己的泛型?BR>
基本上,除了声明一些你惌使用的类型变量s外,一个泛型和别的cL有什么区别。这些类型变量s位于cd后面?lt;>中。比如,下面的Point 是个泛型。一个Point对象代表了一个系l中的点Q它有横坐标和纵坐标。通过使Point泛型化,你能定义一个点实例的精程度。比如,如果一?Point对象需要非常精,你就把Double作ؓcd变量。否则,Integer 够了?BR>
package com.brainysoftware.jdk5.app16;
public class Point<T> {
  T x;
  T y;
  public Point(T x, T y) {
    this.x = x;
    this.y = y;
  }
  public T getX() {
    return x;
  }
  public T getY() {
    return y;
  }
  public void setX(T x) {
    this.x = x;
  }
  public void setY(T y) {
    this.y = y;
  }
}


在这个例子中QT是Point的类型变?。T是getX和getY的返回值类型,也是setX和setY的参数类型。此外,构造函数结合两个T参数?BR>使用pointcd像用别的类一栗比如,下面的例子创Z两个Point对象Qponint1和point2。前者把Integer作ؓcd变量Q而后者把Double作ؓcd变量?BR>
Point<Integer> point1 = new Point<Integer>(4, 2);
point1.setX(7);
Point<Double> point2 = new Point<Double>(1.3, 2.6);
point2.setX(109.91);


ȝ
泛型使代码在~译时有了更严格的类型检查。特别是在集合框架中Q泛型有两个作用。第一Q他们增加了寚w合类型在~译时的cd查,所以集合类所能持有的cd对传递给它的参数cd起了限制作用。比如你创徏了一个持有strings的java.util.List实例Q那么他将不能接受Integers或别的类型。其ơ,当你从一个集合中取得一个元素时Q泛型消除了cd转换的必要?BR>泛型能够在没有类型变量的情况下用,比如Q作为原型。这些措施让Java 5之前的代码能够运行在JRE 5中。但是,Ҏ的应用程序,你最好不要用原型,因ؓ以后Java可能不支持他们?BR>
你已l知道通过传递不同类型的cd变量l泛型可以生不同的JAVAcd。就是说List<String>和List< Object>的类型是不同的。尽String是java.lang.Object。但是传递一个List<String>l一个参数是List<Object>的函C参数会生编译错误(compile errorQ。函数能?? 通配W其接受Q何类型的参数。List<?> 意味着Mcd的对象?BR>最后,你已l看C写一个泛型和别的一般JAVAcL有什么区别。你只需要在cd名称后面?lt;>中声明一pd的类型变量sp了。这些类型变量s是q回值类型或者参数类型。根据惯例,一个类型变量用一个大写字母表C?BR>

Budi Kurniawan是一个高U?J2EE 架构师和作家?/DIV>
文章来源:http://java.mblogger.cn/love_java/posts/18270.aspx

]]>[导入]oracle中查看视囄脚本http://www.aygfsteel.com/love-java/archive/2005/12/19/24557.html隐语?/dc:creator>隐语?/author>Mon, 19 Dec 2005 01:34:00 GMThttp://www.aygfsteel.com/love-java/archive/2005/12/19/24557.htmlhttp://www.aygfsteel.com/love-java/comments/24557.htmlhttp://www.aygfsteel.com/love-java/archive/2005/12/19/24557.html#Feedback0http://www.aygfsteel.com/love-java/comments/commentRss/24557.htmlhttp://www.aygfsteel.com/love-java/services/trackbacks/24557.htmlselect owner, view_name, text? from all_views where view_name='';

使用该sql语句能查询指定的视图的创?


文章来源:http://java.mblogger.cn/love_java/posts/18281.aspx

]]>
[导入]删除html中select对象的所有选项的简单方?/title><link>http://www.aygfsteel.com/love-java/archive/2005/12/19/24556.html</link><dc:creator>隐语?/dc:creator><author>隐语?/author><pubDate>Mon, 19 Dec 2005 01:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/love-java/archive/2005/12/19/24556.html</guid><wfw:comment>http://www.aygfsteel.com/love-java/comments/24556.html</wfw:comment><comments>http://www.aygfsteel.com/love-java/archive/2005/12/19/24556.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/love-java/comments/commentRss/24556.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/love-java/services/trackbacks/24556.html</trackback:ping><description><![CDATA[<P>假设select对象为oSelectQ删除该对象下面所有选项的方法是Q?/P> <P>oSelect.options.length=0;</P><br>文章来源:<a >http://java.mblogger.cn/love_java/posts/18309.aspx</a><img src ="http://www.aygfsteel.com/love-java/aggbug/24556.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/love-java/" target="_blank">隐语?/a> 2005-12-19 09:34 <a href="http://www.aygfsteel.com/love-java/archive/2005/12/19/24556.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]XSL与CSS的比?/title><link>http://www.aygfsteel.com/love-java/archive/2005/12/19/24555.html</link><dc:creator>隐语?/dc:creator><author>隐语?/author><pubDate>Mon, 19 Dec 2005 01:34:00 GMT</pubDate><guid>http://www.aygfsteel.com/love-java/archive/2005/12/19/24555.html</guid><wfw:comment>http://www.aygfsteel.com/love-java/comments/24555.html</wfw:comment><comments>http://www.aygfsteel.com/love-java/archive/2005/12/19/24555.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/love-java/comments/commentRss/24555.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/love-java/services/trackbacks/24555.html</trackback:ping><description><![CDATA[<P><FONT color=#0000ff><STRONG><EM>相同Q?BR>            </EM></STRONG></FONT>XSL和CSS都是属于样式的一U。样式是用来讑֮外观的,它ƈ不媄响原来的XML源代码,<BR>            XSL虽然用的是{换的方式Q但转换q不代表源代码会遭到改。通常XSL转换后的输出码是<BR>            另存C个新的档案或暂存在浏览器的记忆体中,原来的XMl文档内容保持不变?/P> <P><FONT color=#0000ff><FONT color=#000000><STRONG><EM><FONT color=#0000ff>不同Q?/FONT></EM></STRONG><BR>           1、XSL采用的是转换方式Q将一U格式的XML转换为另一U,比如Big5码{换ؓUTF-8码一<BR>                 栗而CSS则来自完全不同的理念Q它不含M转换动作Q只针对XML文g中各个成分的?BR></FONT></FONT><FONT color=#0000ff><FONT color=#000000>                 观属性一一加以讑֮。浏览器便按照CSS样式里的指示Q将XML文g呈现定的样式。整<BR>                 个过E中没有M新码产生。XML配上CSS、ECMAScript和DOM可以营造出cMDHTML?BR>                  的动态效果。XSL转换则是ȝQ没有互动性?/FONT></FONT></P> <P>           2、XSL样式都是XML文gQ完全按照XML的语法来Q相对地QCSS在语法上自成一|?BR>                 XML的写法大相径庭?STRONG><EM><FONT color=#0000ff>  </FONT></EM></STRONG></P><br>文章来源:<a >http://java.mblogger.cn/love_java/posts/18639.aspx</a><img src ="http://www.aygfsteel.com/love-java/aggbug/24555.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/love-java/" target="_blank">隐语?/a> 2005-12-19 09:34 <a href="http://www.aygfsteel.com/love-java/archive/2005/12/19/24555.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[导入]vss admin 忘记密码解决办法http://www.aygfsteel.com/love-java/archive/2005/12/19/24554.html隐语?/dc:creator>隐语?/author>Mon, 19 Dec 2005 01:34:00 GMThttp://www.aygfsteel.com/love-java/archive/2005/12/19/24554.htmlhttp://www.aygfsteel.com/love-java/comments/24554.htmlhttp://www.aygfsteel.com/love-java/archive/2005/12/19/24554.html#Feedback0http://www.aygfsteel.com/love-java/comments/commentRss/24554.htmlhttp://www.aygfsteel.com/love-java/services/trackbacks/24554.html使用hex~辑器打开你vss数据库所在的文g?打开data目录下的um.dat文g.文件中对应位置改ؓ如下字符:

 0:80  55 55 bc 7f 41 64 6d 69 6e 00 00 00 00 00 00 00
 0:90  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
 0:a0  00 00 00 00 90 6e 00 00 a8 01 00 00 00 00 00 00

保存修改文g,启动vss admin工具,直接pd.


文章来源:http://java.mblogger.cn/love_java/posts/18676.aspx

]]>
վ֩ģ壺 ҵ| | ɳ| | | żҽ| ƽ| | | | | | | Ǩ| | | ±| | | ֶ| ˮ| | | | | ʡ| | | ں| | | | | | ɽ| | | | | | |