青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

M-A-T Tory's Blog

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  16 隨筆 :: 1 文章 :: 1 評(píng)論 :: 0 Trackbacks

#

Eclipse啟動(dòng)參數(shù)說(shuō)明(部分)


其實(shí),Eclipse是一個(gè)可以進(jìn)行非常靈活配置的系統(tǒng),除了以缺省的方式啟動(dòng)以外,還可以指定各種參數(shù)來(lái)定制啟動(dòng)方式。在參考了一些資料之后,我總結(jié)了一些比較常用的啟動(dòng)時(shí)Command Arguments,如果有不正確的地方希望大家予以指出。

-arch [processor architecture]
描述:指定所使用的處理器的類別
舉例:eclipse -arch x86或eclipse -arch sparc

-application [id]
描述:指定要運(yùn)行的應(yīng)用,id為擴(kuò)展org.eclipse.core.applications擴(kuò)展點(diǎn)的插件id加擴(kuò)展id
舉例:例如有個(gè)插件id為edu.sdu.app,擴(kuò)展id為myapp,則eclipse -application edu.sdu.app.myapp,就會(huì)執(zhí)行你的擴(kuò)展應(yīng)用

-clean
描述:清空插件緩存內(nèi)容
舉例:eclipse -clean,有時(shí)插件顯示不出來(lái)是因?yàn)镋clipse將插件進(jìn)行了緩存以加速啟動(dòng)過(guò)程,若指定此參數(shù)則會(huì)清空緩存,從頭加載

-configuration [cofigfile location]
描述:指定配置文件的位置,在啟動(dòng)時(shí)使用此目錄下的配置文件config.ini來(lái)啟動(dòng)
舉例:eclipse -configuration d:/eclipse/configuration

-data [workspace location]
描述:指定啟動(dòng)時(shí)的Workspace位置
舉例:例如Workspace位置設(shè)在D:/myworkspace,則eclipse -data D:/myworkspace

-debug [option file]
描述:以Debug狀態(tài)啟動(dòng)Eclipse,所有的Debug開(kāi)關(guān)在.options文件中指定
舉例:eclipse -debug d:/eclipse/.options

-dev [classpath entry]
描述:以開(kāi)發(fā)狀態(tài)啟動(dòng)Eclipse,這會(huì)添加所有指定的路徑作為每個(gè)插件的Classpath
舉例:例如eclipse -dev bin,會(huì)將產(chǎn)生在bin目錄下的所有類加載到類路徑中,這在開(kāi)發(fā)插件時(shí)非常有用

-nosplash
描述:指定啟動(dòng)時(shí)不顯示閃屏
舉例:eclipse -nosplash

-vm [jre path]
描述:指定啟動(dòng)時(shí)所使用的Java虛擬機(jī)
舉例:例如要使用自己的Java虛擬機(jī),則eclipse -vm D:/j2sdk1.4.2_04/jre/bin/java.exe,這樣還有一個(gè)好處,就是可以開(kāi)啟一個(gè)Console,能夠顯示控制臺(tái)信息,當(dāng)然若使用eclipse -vm D:/j2sdk1.4.2_04/jre/bin/javaw.exe則不會(huì)再顯示控制臺(tái)

-vmargs [Java VM arguments]
描述:指定啟動(dòng)時(shí)要使用的Java虛擬機(jī)參數(shù)
舉例:例如要指定使用的內(nèi)存容量,則eclipse -vmargs "-Xms256m -Xmx1024m"
注:此參數(shù)一定要放在所有參數(shù)變量的最后面

posted @ 2006-07-11 18:25 Tory 閱讀(2003) | 評(píng)論 (0)編輯 收藏

     摘要: < html > < META?HTTP - EQUIV = " Content-Type " ?content = " text/html;?charset=gb_2312-80 ...  閱讀全文
posted @ 2006-06-03 19:21 Tory 閱讀(620) | 評(píng)論 (0)編輯 收藏

什么是設(shè)計(jì)模式
設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過(guò)分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。使用設(shè)計(jì)模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。

毫無(wú)疑問(wèn),設(shè)計(jì)模式于己于他人于系統(tǒng)都是多贏的,設(shè)計(jì)模式使代碼編制真正工程化,設(shè)計(jì)模式是軟件工程的基石,如同大廈的一塊塊磚石一樣。

GoF的“設(shè)計(jì)模式”是第一次將設(shè)計(jì)模式提升到理論高度,并將之規(guī)范化,本書提出了23種基本設(shè)計(jì)模式,自此,在可復(fù)用面向?qū)ο筌浖陌l(fā)展過(guò)程中,新的大量的設(shè)計(jì)模式不斷出現(xiàn)。

設(shè)計(jì)模式和框架
現(xiàn)在,可復(fù)用面向?qū)ο筌浖到y(tǒng)現(xiàn)在一般劃分為三大類:應(yīng)用程序 工具箱和框架(Framework),我們平時(shí)開(kāi)發(fā)的具體軟件都是應(yīng)用程序;Java的API屬于工具箱;而框架是構(gòu)成一類特定軟件可復(fù)用設(shè)計(jì)的一組相互協(xié)作的類。EJB(Enterprise JavaBeans)是Java應(yīng)用于企業(yè)計(jì)算的框架.

框架通常定義了應(yīng)用體系的整體結(jié)構(gòu) 類和對(duì)象的關(guān)系等等設(shè)計(jì)參數(shù),以便于具體應(yīng)用實(shí)現(xiàn)者能集中精力于應(yīng)用本身的特定細(xì)節(jié)。框架主要記錄軟件應(yīng)用中共同的設(shè)計(jì)決策,框架強(qiáng)調(diào)設(shè)計(jì)復(fù)用,因此框架設(shè)計(jì)中必然要使用設(shè)計(jì)模式.

另外,設(shè)計(jì)模式有助于對(duì)框架結(jié)構(gòu)的理解,成熟的框架通常使用了多種設(shè)計(jì)模式,如果你熟悉這些設(shè)計(jì)模式,毫無(wú)疑問(wèn),你將迅速掌握框架的結(jié)構(gòu),我們一般開(kāi)發(fā)者如果突然接觸EJB J2EE等框架,會(huì)覺(jué)得特別難學(xué),難掌握,那么轉(zhuǎn)而先掌握設(shè)計(jì)模式,無(wú)疑是給了你剖析EJB或J2EE系統(tǒng)的一把利器。

EJB中的設(shè)計(jì)模式
下面我們從設(shè)計(jì)模式的角度看看EJB的框架是怎樣的?在這之前假設(shè)你已經(jīng)大概了解了設(shè)計(jì)模式。專門的設(shè)計(jì)模式闡述請(qǐng)見(jiàn)我的設(shè)計(jì)模式之系列.

EJB是采取多層結(jié)構(gòu),原先我們數(shù)據(jù)庫(kù)開(kāi)發(fā)基本是應(yīng)用程序(商業(yè)邏輯運(yùn)算)直接調(diào)用數(shù)據(jù)庫(kù)驅(qū)動(dòng),在EJB中,為將商業(yè)邏輯計(jì)算和數(shù)據(jù)庫(kù)截然分開(kāi),使用多個(gè)結(jié)構(gòu)式模式:Adapter模式和Bridge模式等.這樣做的好處顯然有三個(gè):

1.分離了商業(yè)邏輯層和數(shù)據(jù)訪問(wèn)層;
2.能同時(shí)支持多個(gè)數(shù)據(jù)庫(kù);
3.但數(shù)據(jù)庫(kù)類型更換時(shí),不會(huì)設(shè)計(jì)到商業(yè)邏輯代碼的大量修改.

EJB中將對(duì)數(shù)據(jù)庫(kù)進(jìn)行調(diào)用(如發(fā)出select等語(yǔ)句)稱為會(huì)話bean(Sessionbean),而將對(duì)應(yīng)數(shù)據(jù)庫(kù)一個(gè)個(gè)記錄的bean稱為實(shí)體bean(Entity bean);由這兩種類型的bean完成對(duì)數(shù)據(jù)庫(kù)的訪問(wèn).

會(huì)話bean一般和客戶端應(yīng)用是一一對(duì)應(yīng),而和數(shù)據(jù)庫(kù)端聯(lián)系緊密的是實(shí)體bean,EJB在實(shí)體bean(或直接在會(huì)話bean)和數(shù)據(jù)庫(kù)之間使用了Adapter模式和Bridge模式,無(wú)意在實(shí)體bean和數(shù)據(jù)庫(kù)之間又多了一層,稱之為DAO(Data Access Object ),DAO實(shí)際就是設(shè)計(jì)模式的混合體.

我們以Java的寵物店中的Catalog為例,這是專門處理寵物店中的寵物類別,在對(duì)數(shù)據(jù)庫(kù)訪問(wèn)中,有兩個(gè)主要程序:CatalogEJB和CatalogDAO,我們從具體代碼中看看設(shè)計(jì)模式是怎么應(yīng)用的.

Bridge模式和Adapter模式
我們首先看看CatalogEJB代碼:

public class CatalogEJB implements SessionBean {
  protected CatalogDAO dao;

  //從DAO工廠中獲取一個(gè)DAO 這是調(diào)用工廠(factory)模式的一個(gè)實(shí)例
  public void ejbCreate() {
    try {
      dao = CatalogDAOFactory.getDAO();
    }
    catch (CatalogDAOSysException se) {
      Debug.println("Exception getting dao " + se);
      throw new EJBException(se.getMessage());
    }
  }

  ....

 

}



我們發(fā)現(xiàn)在CatalogEJB中并沒(méi)有通常的會(huì)話bean那樣有對(duì)數(shù)據(jù)庫(kù)操作的"select .. from ."等之類SQL操作語(yǔ)句,這些都被封裝到DAO的具體實(shí)現(xiàn)中(Concrete class).

在Catalog這個(gè)示例中使用了設(shè)計(jì)模式的Bridge模式,判斷是否是某種模式,主要依據(jù)其參與者的種類和相互關(guān)系,我們先看看Bridge模式的定義和參與者:

Bridge模式是將抽象和行為劃分開(kāi)來(lái),各自獨(dú)立,但能動(dòng)態(tài)的結(jié)合起來(lái)(好象搭建了一座橋)。在本例中,是將商業(yè)邏輯和數(shù)據(jù)庫(kù)訪問(wèn)這樣的行為劃分開(kāi)來(lái),數(shù)據(jù)庫(kù)訪問(wèn)專門放置在DAO中了。

Bridge模式需要兩個(gè)接口(抽象類和接口通稱為接口),一個(gè)用來(lái)封裝抽象部分,本例中是封裝商業(yè)邏輯,是CatalogEJB;還有一個(gè)是封裝行為(Implementor),本例中是CatalogDAO,看看CatalogDAO代碼:


public interface CatalogDAO {

  public Category getCategory(String categoryID, Locale l)
  throws CatalogDAOSysException;

  public Page getCategories(int start, int count, Locale l)
  throws CatalogDAOSysException;

  public Product getProduct(String productID, Locale l)
  throws CatalogDAOSysException;

  public Page getProducts(String categoryID, int start, int count, Locale l)
  throws CatalogDAOSysException;

  public Item getItem(String itemID, Locale l)
  throws CatalogDAOSysException;

  public Page getItems(String productID, int start, int size, Locale l)
  throws CatalogDAOSysException;

  public Page searchItems(String query, int start, int size, Locale l)
  throws CatalogDAOSysException;


}


Bridge模式中參與者還需要有行為接口的具體實(shí)現(xiàn)(ConcreteImplementor),在本例中是CatalogDAOImpl,雖然在目前寵物店中只有一個(gè)ConcreteImplementor,但是可擴(kuò)展為到Mysql XML等數(shù)據(jù)源訪問(wèn),比如你可以自己新增一個(gè)叫CatalogDAOImplMysql,也是作為CatalogDAO的子類。

看看CatalogDAO的一個(gè)子類CatalogDAOImpl的代碼:

public class CatalogDAOImpl implements CatalogDAO {
  protected static DataSource getDataSource()
    throws CatalogDAOSysException {
    try {
      InitialContext ic = new InitialContext();
      return (DataSource) ic.lookup(JNDINames.CATALOG_DATASOURCE);
    }
    catch (NamingException ne) {
      throw new CatalogDAOSysException("NamingException while looking "
        + "up DB context : "
        + ne.getMessage());
    }
  }

  //具體Select語(yǔ)句在這里出現(xiàn),這里主要是Oracle 數(shù)據(jù)庫(kù)的訪問(wèn)語(yǔ)句

  public Category getCategory(String categoryID, Locale l)
  throws CatalogDAOSysException {

    Connection c = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
    Category ret = null;

    try {
      c = getDataSource().getConnection();

      ps = c.prepareStatement("select a.catid, name, descn "
          + "from (category a join "
          + "category_details b on "
          + "a.catid=b.catid) "
          + "where locale = ? "
          + "and a.catid = ?",
      ResultSet.TYPE_SCROLL_INSENSITIVE,
      ResultSet.CONCUR_READ_ONLY);
      ps.setString(1, l.toString());
      ps.setString(2, categoryID);
      rs = ps.executeQuery();
      if (rs.first()) {
        ret = new Category(rs.getString(1).trim(),
        rs.getString(2),
        rs.getString(3));
      }
      rs.close();
      ps.close();

      c.close();
      return ret;
    }
    catch (SQLException se) {
      throw new CatalogDAOSysException("SQLException: "
      + se.getMessage());
    }


    ....

}


Bridge模式參與者總結(jié)如下:

商業(yè)邏輯抽象類 (CatalogEJB)

抽象的商業(yè)邏輯操作.
對(duì)DAOImplementor調(diào)用.
不關(guān)心是具體什么數(shù)據(jù)源被使用(無(wú)論是Oracle還是JDBC還是XML).
DAO(Data Access Object) (CatalogDAO)

對(duì)數(shù)據(jù)源的抽象操作行為.
提供了非常方便訪問(wèn)和維護(hù)管理數(shù)據(jù)的API結(jié)構(gòu).
DAOImplementor (CatalogDAOImpl 有可能有CatalogDAOImplSybase CatalogDAOImplMysql 等)

實(shí)現(xiàn)具體的DAO接口內(nèi)容.
使用Adapter模式,將特定的數(shù)據(jù)源驅(qū)動(dòng)接口適配到DAO接口中去
數(shù)據(jù)源 ( Oracle, or Sybase database via JDBC API)

提供訪問(wèn)具體數(shù)據(jù)庫(kù)的驅(qū)動(dòng)接口,如包括連接池等.


在使用數(shù)據(jù)源驅(qū)動(dòng)接口時(shí),需要使用Adapter模式,Adapter模式將兩個(gè)不相關(guān)的類糾合在一起使用,Adapter模式實(shí)際是使用組合(composition)和繼承(inheritance)兩種方式再生類,在著名的"think in Java"的"類再生"專門提到這兩個(gè)方式.

很顯然,如果你對(duì)Bridge模式和Adapter模式熟悉,那么對(duì)寵物店中的Catalog理解就會(huì)非常快,同樣,在寵物店其他部分如訂單 用戶注冊(cè) 等都能迅速理解。

Factory模式和Singleton模式
該模式類似new,是用來(lái)創(chuàng)建對(duì)象的,使用Factory模式是為了實(shí)現(xiàn)面向?qū)ο蟮幕驹瓌t.封裝(Encapsulation)和分派(Delegation);將創(chuàng)建對(duì)象與使用對(duì)象進(jìn)行分工。因此在平時(shí)開(kāi)發(fā)過(guò)程中,盡量使用Factory模式創(chuàng)建對(duì)象。

本例CatalogEJB中是使用Factory模式獲得一個(gè)DAO的具體實(shí)例對(duì)象,見(jiàn)上面CatalogEJB代碼中注釋。我們看看CatalogDAOFactory的代碼:

public class CatalogDAOFactory {
  public static CatalogDAO getDAO() throws CatalogDAOSysException {

    CatalogDAO catDao = null;
    try {
      InitialContext ic = new InitialContext();
      String className = (String) ic.lookup(JNDINames.CATALOG_DAO_CLASS);
      catDao = (CatalogDAO) Class.forName(className).newInstance();
    } catch (NamingException ne) {
      ...

    }
    return catDao;
}



在CatalogDAOFactory可以依據(jù)系統(tǒng)的配置文件,動(dòng)態(tài)獲得DAO的方法,之所以采取動(dòng)態(tài)方式,當(dāng)然便于用戶自己增加自己的DAO方式,而不必修改代碼,只要直接修改配置文件就可以。

如果在這里只需要CatalogDAOFactory產(chǎn)生一個(gè)實(shí)例,可以采取Singleton模式,Singleton的目的是控制類實(shí)例對(duì)象的創(chuàng)建,并且允許整個(gè)程序只在一點(diǎn)對(duì)它進(jìn)行訪問(wèn)。Singleton本身類只能創(chuàng)建一個(gè),是單線程。


public class CatalogDAOFactory {
  private static CatalogDAO catDao = null;

  public static CatalogDAO getIntance(){
    if (catDao==null)
      try {
        InitialContext ic = new InitialContext();
        String className =
           (String) ic.lookup(JNDINames.CATALOG_DAO_CLASS);
        catDao = (CatalogDAO) Class.forName(className).newInstance();
      } catch (NamingException ne) {
        ...

      }
     }
    return catDao;

  }
}



那么在CatalogEJB的調(diào)用從
dao = CatalogDAOFactory.getDAO();
要改為
dao = CatalogDAOFactory.getIntance();

Facade模式
在EJB應(yīng)用中,有兩個(gè)端點(diǎn),這一端是用戶端,另外一端是EJB,通常在這兩個(gè)端點(diǎn)間會(huì)增加一層,用來(lái)松散兩個(gè)端點(diǎn)之間的耦合,比如在寵物店例子中,考慮到不同身份的用戶有不同的操作流程,比如顧客注冊(cè)進(jìn)入后,需要瀏覽目錄,下訂單,而商店管理者進(jìn)入后需要確認(rèn)或者否定訂單,或者檢查庫(kù)存。這些功能需要借助Session bean和Entity bean完成。

但是如果用戶端直接和這些bean互動(dòng),會(huì)有以下問(wèn)題:


1. 用戶端必須注意和這些beans的所有有聯(lián)系或互動(dòng)的事情,無(wú)法阻止用戶端可能不恰當(dāng)?shù)氖褂眠@些beans.
2.如果EJB的API改動(dòng),那么用戶端的一些代碼也要修改。無(wú)疑擴(kuò)展性很差。
3.即使這些beans都在同一臺(tái)服務(wù)器上,用戶端還是用remote方式來(lái)調(diào)用它們,造成網(wǎng)絡(luò)無(wú)故擁擠。

那么我們使用Facade模式來(lái)解決這個(gè)問(wèn)題,F(xiàn)acade的定義是為子系統(tǒng)中的一組接口提供一個(gè)一致的界面,很顯然我們需要為這些bean提供一個(gè)統(tǒng)一的對(duì)外界面。如下圖:


在寵物店中,ShoppingClientFacadeLocalEJB是面對(duì)所有用戶端操作的統(tǒng)一界面,用戶端操作就不直接和那些EJB如CustomerEJB或ShoppingCartEJB有聯(lián)系,而是都通過(guò)ShoppingClientFacadeLocalEJB來(lái)聯(lián)系的。代碼如下:

public class ShoppingClientFacadeLocalEJB implements SessionBean {
  ...

  //和CustomerEJB聯(lián)系
  public CustomerLocal getCustomer() throws FinderException {
    if (userId == null) {
      ...
    }
    try {
      InitialContext ic = new InitialContext();
      Object o = ic.lookup("java:comp/env/ejb/petstore/local/customer");
      CustomerLocalHome home =(CustomerLocalHome)o;
      customer = home.findByPrimaryKey(userId);
    } catch (javax.naming.NamingException nx) {
      ...
    }

    return customer;
  }

  .....

  //和ShoppingCartEJB聯(lián)系
  public ShoppingCartLocal getShoppingCart() {
    if (cart == null) {
      try {
        InitialContext ic = new InitialContext();
        Object o = ic.lookup("java:comp/env/ejb/cart/Cart");
        ShoppingCartLocalHome home =(ShoppingCartLocalHome)o;
        cart = home.create();
      } catch (javax.ejb.CreateException cx) {
       ...
      }
    }
    return cart;
  }

  ....

}



Facade模式參與者:

SessionFacade (ShoppingClientFacadeLocalEJB)

提供一組操作流程
將真正工作委托到EJB的bean.
EJB的bean (CustomerEJB, ShoppingCartEJB等等)

執(zhí)行基本的商業(yè)邏輯操作
沒(méi)有任何對(duì)SessionFacade的調(diào)用.

這樣不但可擴(kuò)展性大大增強(qiáng),效率也提高了,用戶端只需要一次Remote對(duì)SessionFacade調(diào)用就可以了,而SessionFacade會(huì)自動(dòng)定位到與它同一臺(tái)服務(wù)器的那些鄰居bean(CustomerEJB, ShoppingCartEJB等等),無(wú)疑減少網(wǎng)絡(luò)擁擠,提高了速度.

總結(jié)
在EJB的具體使用中,使用合適的設(shè)計(jì)模式,不但使代碼可重用性 可拓展性增強(qiáng),最重要的是能提高效率和速度,我們知道EJB框架由于考慮大型系統(tǒng)中事務(wù)安全等各方面問(wèn)題,效率性能有所欠缺,那么我們?cè)诰唧w問(wèn)題具體應(yīng)用時(shí),使用設(shè)計(jì)模式可以彌補(bǔ)這個(gè)問(wèn)題。

例如Proxy模式可以為我們?cè)谠L問(wèn)巨大的需要花費(fèi)一定時(shí)間才能展開(kāi)的對(duì)象時(shí),提供一個(gè)代理,這樣不會(huì)因?yàn)槟莻€(gè)巨大對(duì)象而影響當(dāng)前運(yùn)行速度,EJB中的那些bean很顯然屬于巨大對(duì)象(因?yàn)樗鼈冇蟹磸?fù)的數(shù)據(jù)庫(kù)操作,這些很費(fèi)時(shí)間〕。

Flyweight模式是避免大量擁有相同內(nèi)容的小類的開(kāi)銷(如耗費(fèi)內(nèi)存),使大家共享一個(gè)類(元類).當(dāng)你要從EJB中獲取一系列字符串,而這些字符串中肯定有許多是重復(fù)的,那么我們可以將這些重復(fù)的字符串儲(chǔ)存在Flyweight池(pool)中以達(dá)到共享。
posted @ 2006-05-24 22:34 Tory 閱讀(228) | 評(píng)論 (0)編輯 收藏

java操作Excel文件應(yīng)該有兩個(gè)方法,一種是利用POI,一種是利用 JAVA EXCEL?。
一開(kāi)始本來(lái)是打算用POI,可是不知為什么,使用POI時(shí)可以正常寫Excel,但讀的時(shí)候卻老出問(wèn)題了,不得不改用JAVA EXCELLE。
?

Java Excel是一開(kāi)放源碼項(xiàng)目,通過(guò)它Java開(kāi)發(fā)人員可以讀取Excel文件的內(nèi)容、創(chuàng)建新的Excel文件、更新已經(jīng)存在的Excel文件。使用該API非Windows操作系統(tǒng)也可以通過(guò)純Java應(yīng)用來(lái)處理Excel數(shù)據(jù)表。因?yàn)槭鞘褂肑ava編寫的,所以我們?cè)赪eb應(yīng)用中可以通過(guò)JSP、Servlet來(lái)調(diào)用API實(shí)現(xiàn)對(duì)Excel數(shù)據(jù)表的訪問(wèn)。

現(xiàn)在發(fā)布的穩(wěn)定版本是V2.0,提供以下功能:

  • 從Excel 95、97、2000等格式的文件中讀取數(shù)據(jù);
  • 讀取Excel公式(可以讀取Excel 97以后的公式);
  • 生成Excel數(shù)據(jù)表(格式為Excel 97);
  • 支持字體、數(shù)字、日期的格式化;
  • 支持單元格的陰影操作,以及顏色操作;
  • 修改已經(jīng)存在的數(shù)據(jù)表;

現(xiàn)在還不支持以下功能,但不久就會(huì)提供了:

  1. 不能夠讀取圖表信息;
  2. 可以讀,但是不能生成公式,任何類型公式最后的計(jì)算值都可以讀出;

應(yīng)用示例

1 從Excel文件讀取數(shù)據(jù)表

class?ReadExcelByJxl
{
public?static?void?main(String?[]?args)
{
try
{
//構(gòu)建Workbook對(duì)象,?只讀Workbook對(duì)象
????
//直接從本地文件創(chuàng)建Workbook
//從輸入流創(chuàng)建Workbook
????InputStream?is?=?new?FileInputStream("Electrolux_images_PM400download_complete.xls");
????jxl.Workbook?rwb?
=?Workbook.getWorkbook(is);
????
????Sheet[]?rs?
=?rwb.getSheets();
????
for(int?i?=?0;?i?<?rs.length;?i++)
????
{
????Cell?cellUrl?
=?rs[i].findCell("Location?URI?\n(to?be?entered?by?Dalian)");
????
int?row?=?cellUrl.getRow();
????
int?column?=?cellUrl.getColumn();
????String?loUri?
=?rs[i].getCell(column?+?2,?row).getContents();
????System.out.println(loUri);
}

具體用的時(shí)候很簡(jiǎn)單,遇到什么不懂得查一下API文檔就可以了(今天才發(fā)現(xiàn)我也會(huì)用API了,^_^)。
關(guān)于POI使用時(shí)出現(xiàn)的問(wèn)題現(xiàn)在還沒(méi)有解決,不知道是什么原因。

posted @ 2006-05-23 20:51 Tory 閱讀(505) | 評(píng)論 (0)編輯 收藏

     摘要: 今天在某網(wǎng)站上發(fā)現(xiàn)了一個(gè)javascript的計(jì)算器,很有創(chuàng)意,而且功能也很強(qiáng)大。具體哪一個(gè)網(wǎng)站記不清了,代碼純?yōu)榱藢W(xué)習(xí)研究,請(qǐng)作者見(jiàn)諒。 < HTML >< HEAD >< TITLE > 科學(xué)計(jì)算器 </ TITLE >...  閱讀全文
posted @ 2006-05-22 14:35 Tory 閱讀(308) | 評(píng)論 (0)編輯 收藏

經(jīng)過(guò)了兩天多的摸索,axis終于配置成功了。步驟其實(shí)很簡(jiǎn)單的,主要是關(guān)于classpath的配置。axis主頁(yè)上安裝向?qū)鋵?shí)寫的明白了,鑒于研究Web Service的人都是有一定java基礎(chǔ)的人,所以上面并沒(méi)有詳細(xì)說(shuō)明關(guān)于classpath的設(shè)置。像我這樣的java新手自然要走很多彎路,沒(méi)辦法的事情,這是學(xué)習(xí)的一個(gè)過(guò)程。

axis的配置很簡(jiǎn)單,過(guò)程如下
1. 將axis-src-1_2_1這個(gè)包解壓后,將axis-1_2_1\webapps下axis的所有東西拷貝到你剛剛建立的TOMCAT的webapps下。目錄結(jié)構(gòu)如下:
然后查看一下你的axis的WEB-INF的lib下*.jar文件是否全,應(yīng)該有8個(gè)
axis.jar
axis-ant.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j-1.2.8.jar
saaj.jar
wsdl4j-1.5.1.jar
(一定看好各個(gè)文件的文件名,一會(huì)將配置CLASSPATH)
axis的安裝向?qū)н€要求其他的幾個(gè).jar文件,包括xerces.jar,和mail.jar.這些都可以在Apache網(wǎng)站上找到/
2. 然后到axis-1_2_1目錄下,找到lib文件夾,拷貝其中的activation.jar文件,到
Tomcat\webapps\axis\WEB-INF\lib,和上面的8個(gè)jar文件在一起,就OK了。
3.剩下的就是整個(gè)過(guò)程中最為關(guān)鍵的部分,如果弄不好你需要走很彎路的。
關(guān)于classpath?的設(shè)置,包括兩部分。一. 有關(guān)Tomcat的classpath的設(shè)置,這一部分是最容易被忽視的,很多關(guān)于axis的安裝的文章都沒(méi)有講。這就使你在后面遇到很多問(wèn)題,首先如果這部分沒(méi)有設(shè)置,即使你后面關(guān)于axis的classpath設(shè)置的完全正確,在編寫客戶端測(cè)試Web?Service?是也會(huì)出現(xiàn)錯(cuò)誤。而且這時(shí)候,你的axis已經(jīng)可以運(yùn)行,你寫的簡(jiǎn)單的HelloWorld.jws也沒(méi)什么問(wèn)題,能看到相應(yīng)的SOAP消息。但是你的客戶端程序卻出問(wèn)題了,你可以正常編譯,不會(huì)出現(xiàn)錯(cuò)誤。但運(yùn)行時(shí)會(huì)出現(xiàn)諸如Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis/client/Service此類的異常,這種錯(cuò)誤通常是最令人痛苦的。
關(guān)于Tomcat的classpath一要注意,如果你是通過(guò)Windows安裝程序安裝時(shí),這是你的系統(tǒng)中已經(jīng)有了TOMCAT_HOME,和JAVA_HOME 環(huán)境變量,此時(shí)你要做的就是添加classpath環(huán)境變量(如果你還沒(méi)有添加的話,具體做法我就不用說(shuō)了,很簡(jiǎn)單的基礎(chǔ)知識(shí)),classpath的設(shè)置如下
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(.;是必需的,它指代當(dāng)前目錄)
然后修改環(huán)境變量中的classpath,把tomat安裝目錄下的common\lib下的(可以根據(jù)實(shí)際追加)servlet.jar追加到classpath中去,修改后的classpath如下:
classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\common\lib\servlet.jar;
4.接下來(lái)就是關(guān)于axis的環(huán)境變量的設(shè)置了,向?qū)现v的很清楚。就把原文直接考過(guò)來(lái)

On Windows, this can be done via the following. For this document we assume that you have installed Axis in C:\axis. To store this information permanently in WinNT/2000/XP you will need to right click on "My Computer" and select "Properties". Click the "Advanced" tab and create the new environmental variables. It is often better to use WordPad to create the variable string and then paste it into the appropriate text field.

set AXIS_HOME=c:\axis
set AXIS_LIB=%AXIS_HOME%\lib
set AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery.jar;
  %AXIS_LIB%\commons-logging.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;
  %AXIS_LIB%\log4j-1.2.8.jar;%AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar
注意一點(diǎn),.jar文件要與你的解壓的axis目錄中的文件名一致,由于版本問(wèn)題,文件名可能不一致。
5 .  測(cè)試
下面是一個(gè)簡(jiǎn)單的WebService, 供測(cè)試使用
(代碼是轉(zhuǎn)貼,呵呵)
import?java.util.*;
?
public?class?wsTestService
{
??String?strName?
=?"Ryun";
??
int?intAge?=?21;
??List?items?
=?new?ArrayList();
??
??
public?String?getName()?{
????
return?strName;
???}

??
??
public?int?getAge()?{
????
return?intAge;
???}

??
??
public?List?getItems()?{
????
return?items;
???}

??}

將此文件命名為 wsTestService.jws 存放到
Tomcat的\webapp\axis\目錄下
訪問(wèn) http://localhost:8080/axis/wsTestService.jws, 出現(xiàn) "There is a Web

Service here"即表明 Web Service 服務(wù)端程序安裝完成.
開(kāi)發(fā)一個(gè) Web Service 客戶端程序
建立客戶端程序wsTestClient.java
以下是客戶端的源程序, 用于向 Web Service Server 提交服務(wù)請(qǐng)求:

import?org.apache.axis.client.Call;
import?org.apache.axis.client.Service;
?
public?class?wsTestClient?{
??
public?static?void?main(String?args[])?{
????System.out.println(
"Start?invoking");
????
try?{
??????String?strUri?
=?

"http://localhost:8080/axis/wsTestService.jws";
??????Service?service?
=?new?Service();
??????Call?call?
=?(Call)
??????service.createCall();
??????call.setTargetEndpointAddress(
new?

java.net.URL(strUri));
??????call.setOperationName(
"getName");
??????String?ret?
=?""?+?call.invoke(new?Object[]?{});
??????System.out.println(
"I?am?"?+?ret?+?".");
?????}

????
catch?(Exception?e)?{
??????System.err.println(e.toString());
?????}

????System.out.println(
"Finished?the?invoking.");
????}

}
然后編譯運(yùn)行,如果出現(xiàn)問(wèn)題,那可能是環(huán)境變量path,classpath配置的問(wèn)題,自己查看

一下,這里就不再描述了。
C:\>cd \
C:\>javac wsTestClient.java
?
C:\>java wsTestClient
Start invoking...
I am Ryun.
Finished the invoking.
完成,再去學(xué)習(xí),稍后總結(jié)
但這時(shí)還有一個(gè)問(wèn)題,我還沒(méi)有解決,關(guān)于log4j的一個(gè)warn,不知道該如何配置log4j,懶得再去找答案了。axis的相關(guān)問(wèn)題搜索了兩天了才有個(gè)結(jié)果,log4j的問(wèn)題以后有時(shí)間再弄吧。

posted @ 2006-05-19 16:24 Tory 閱讀(2469) | 評(píng)論 (1)編輯 收藏

匿名類:
1. 定義方法: new ClassNameorInrefaceName?() {...}
2. 類名前不能有修飾符。
3. 類中不能有構(gòu)造方法,因?yàn)樗鼪](méi)有名字。在構(gòu)造對(duì)象是使用父類的構(gòu)造方法。如果實(shí)現(xiàn)接口,則接口后面的圓括號(hào)不能帶參數(shù)。
class?TestInnerAnonymous
{
??
public?static?void?main(String[]?args)
??
{
?????Object?obj?
=?new?Outer().makeTheInner(47);
?????System.out.println(
"Hello?World"?+?obj.toString());
??}

}


class?Outer
{
??
private?int?size?=?5;
??
public?Object?makeTheInner(int?localVar)
??
{
????
final?int?fianlLocalVar?=?99;
????
return?new?Object()
????????????????
{
???????????????????
public?String?toString()
?????????????????????
{
?????????????????????????
return?("InnerSize"?+?size?+?"finalLocalVar:"?+?finalLocalVar);
?????????????????????}

????????????????}
;
??}

}
如果要使用構(gòu)造函數(shù)的話
????????????????? {...}
注意:匿名類屬于方法內(nèi)嵌類,不可以使用父類的成員

抽象類與接口的區(qū)別:
抽象類可以有非抽象的方法,有構(gòu)造函數(shù)。
抽象類是它所有子類的公共屬性的集合,抽象類不能被實(shí)例化,它的構(gòu)造函數(shù)是提供給它的子類調(diào)用的。
被abstract所修飾的方法叫抽象方法,格式如下
abstract returnType abstractMethod([paramlist]);
抽象類中可以包含抽象方法,也可以不包含abstract方法。但是,一旦某個(gè)類中包含了抽象方法,則這個(gè)類必須聲明為abstract類。即abstract方法必須位于abstract類中。
接口是方法和常量值得集合。
posted @ 2006-05-16 22:01 Tory 閱讀(825) | 評(píng)論 (0)編輯 收藏

首先,更正一下,是只顯示了28層,而非27.

下面用了遞歸,可以清楚的看到你所要?jiǎng)?chuàng)建的表格層數(shù)都創(chuàng)建了,只是到顯示的時(shí)候,從第28層之后都不能顯示出來(lái)而已.

至于為什么顯示不來(lái),我也不得而知.

點(diǎn)擊下面的代碼,查看結(jié)果:

?

<! DOCTYPE?html?PUBLIC? " -//W3C//DTD?XHTML?1.0?Transitional//EN " ? " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
< html?xmlns = " http://www.w3.org/1999/xhtml " >
< head >
< meta?http - equiv = " Content-Type " ?content = " text/html;?charset=utf-8 " ? />
< title > Untitled?Document </ title >
</ head >

< body >
</ body >
</ html >
< script >
var ?n? = ? 40 ;
function ?createTable(pI) {
var ?oTable? = ?document.createElement( " TABLE " );
?oTable.border?
= ? 1 ;
?oTable.width?
= ? 1000 ? - ?pI;
?oTable.height?
= ? 1000 ? - ?pI;
var ?oTBody? = ?document.createElement( " TBODY " );
var ?oTr? = ?document.createElement( " TR " );
var ?oTd? = ?document.createElement( " TD " );
oTd.innerHTML?
= ?pI;

if (pI < n)
??oTd.appendChild(createTable(pI
+ 1 ));

oTr.appendChild(oTd);
oTBody.appendChild(oTr);
oTable.appendChild(oTBody);
document.body.appendChild(oTable);
alert(pI)
return ?oTable;
}


createTable(
1 );
</ script >
posted @ 2006-05-16 19:02 Tory 閱讀(305) | 評(píng)論 (0)編輯 收藏

These characteristics, which we cover in depth in Section 3.1 , include how those relationships are influenced by the following factors detailed in the same section:

  • Platform

  • Location

  • Protocols

  • Programming language

  • Invocation patterns

  • Security

  • Service versioning

  • Service model

  • Information model

  • Data format

Figure 3.1. The domains of SOA.


?

Enterprise services share some or all of these characteristics that impact what actions the service performs, how it does so, and whom it interacts with. These services can be reclassified in the SOA model and placed into new domains that describe what function they perform in the overall model. An analysis of the preceding list identifies at least four different domains of architecture, along with subdomains that influence where a service can exist and the function it performs. These domains and subdomains, discussed later in this chapter, are as follows:

  • Infrastructure services domain with subdomains

    • Utility business services

    • Service-level automation and orchestration

    • Resource virtualization

  • Middleware domain

  • Business services domain

  • Application services domain with subdomains

    • Application programming model subdomain

    • Off-the-shelf commercial software subdomain

    • Information management subdomain

It is essential to maintain a separation of concerns and domains. In an enterprise, these domains can have separate implementations using any permutation of packaged applications, custom applications, existing infrastructure, and external or outsourced services.

posted @ 2006-05-05 22:04 Tory 閱讀(270) | 評(píng)論 (0)編輯 收藏

在實(shí)施SOA的過(guò)程中牢記以下特征:
* 可從企業(yè)外部訪問(wèn)
* 隨時(shí)可用
* 粗粒度的服務(wù)接口
* 分級(jí)
* 松散耦合
* 可重用的服務(wù)
* 服務(wù)接口設(shè)計(jì)管理
* 標(biāo)準(zhǔn)化的服務(wù)接口
* 支持各種消息模式
* 精確定義的服務(wù)契約


引用別人的話"它不是一門技術(shù),更不能把它刻錄到光盤去賣什么的..它提供的是一種思想!就想OO思想一樣!


IBM WebSphere Integration Developer, Version 6 software is Eclipse technology-based tooling designed to enable you to rapidly assemble business solutions based on a composite application development framework and using minimal programming skills.

Its graphically rich interface allows developers to create composite business applications by wiring service components with minimal skills and agnostic of underlying programming implementations. It has fully integrated testing, debug and deployment environment that allows you to easily deploy to WebSphere Process Server. Once deployed, you can dynamically change and adapt to changes with its rich features, such as business rules, selectors, and state machines.


WebSphere Process Server includes three layers:

?? SOA core
?? Supporting services
?? Service components

Role resources matrix
Duration matrix
Availablity matrix
Decision probabilities

posted @ 2006-05-03 22:36 Tory 閱讀(282) | 評(píng)論 (0)編輯 收藏

僅列出標(biāo)題
共2頁(yè): 1 2 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产欧美欧洲在线观看| 久久免费少妇高潮久久精品99| 欧美高清在线视频| 亚洲国产精品一区二区尤物区 | 老司机67194精品线观看| 国产日韩欧美日韩大片| 久久久在线视频| 蜜臀av一级做a爰片久久| 亚洲麻豆国产自偷在线| 一区二区三区精品视频在线观看| 欧美视频中文字幕| 久久全球大尺度高清视频| 久久久一本精品99久久精品66| 亚洲国产精品一区在线观看不卡| 亚洲国内精品| 欧美午夜精品理论片a级按摩| 欧美一区二区在线播放| 老牛嫩草一区二区三区日本 | 国产欧美精品一区二区色综合 | 在线视频你懂得一区二区三区| 一二三区精品福利视频| 国产一区在线视频| 亚洲国产美女久久久久| 国产精品亚洲人在线观看| 久久欧美中文字幕| 欧美理论视频| 久久免费视频在线观看| 欧美日韩免费网站| 噜噜噜在线观看免费视频日韩 | 亚洲综合欧美| 最新精品在线| 欧美一二三视频| 亚洲精品国产系列| 亚洲欧美在线看| 一区二区三区回区在观看免费视频| 先锋影音久久久| 99精品黄色片免费大全| 久久久亚洲一区| 亚洲线精品一区二区三区八戒| 久久成年人视频| 亚洲欧美日韩在线不卡| 老司机精品视频网站| 亚洲欧美日韩在线高清直播| 久久久精品欧美丰满| 亚洲欧美日韩成人| 欧美日本亚洲视频| 欧美国产视频日韩| 国产一区二区三区四区在线观看| 亚洲视频一区二区在线观看 | 国产综合自拍| 亚洲欧美日韩精品久久久| 一个色综合av| 欧美成人免费在线视频| 亚洲欧美日韩一区在线观看| 亚洲午夜精品久久| 欧美日韩国产在线播放| 欧美一区二粉嫩精品国产一线天| 亚洲国产一区二区三区青草影视| 久久er精品视频| 亚洲午夜免费视频| 亚洲精品中文字幕在线| 亚洲国产成人不卡| 一区二区视频免费完整版观看| 欧美日韩一区视频| 欧美日韩国产成人| 欧美日韩国产综合网| 欧美欧美天天天天操| 欧美私人啪啪vps| 国产精品极品美女粉嫩高清在线 | 亚洲激情综合| 久久久久久久久伊人| 亚洲一区欧美| 欧美一区二区高清| 国产午夜精品久久久久久久| 亚洲一区二区免费在线| 久久国产夜色精品鲁鲁99| 国产日韩一区在线| 久久久成人网| 亚洲激情一区二区| 99国产精品99久久久久久| 欧美xxxx在线观看| 亚洲最新中文字幕| 欧美伊人久久久久久久久影院 | 欧美一区91| 欧美激情视频给我| 亚洲少妇诱惑| 国产日韩在线一区| 久久精品国产一区二区三区免费看| 欧美一级免费视频| 欧美 日韩 国产精品免费观看| 亚洲伦理中文字幕| 国产精品日韩| 久久婷婷国产综合精品青草 | 久久精品国产免费| 亚洲高清免费在线| 国产精品高精视频免费| 欧美怡红院视频一区二区三区| 亚洲第一区在线观看| 亚洲一区中文| 18成人免费观看视频| 欧美视频免费在线| 久久影院亚洲| 亚洲一二三四久久| 欧美韩国在线| 一区二区精品| 国户精品久久久久久久久久久不卡 | 久久久91精品国产一区二区精品| 亚洲第一二三四五区| 国产精品高清在线| 麻豆av一区二区三区| 性欧美在线看片a免费观看| 亚洲激情小视频| 噜噜噜91成人网| 午夜激情综合网| 一本色道久久综合亚洲精品按摩| 国产专区精品视频| 欧美日韩喷水| 欧美风情在线| 另类图片国产| 欧美在线精品免播放器视频| 一区二区三区精品视频在线观看| 欧美激情第二页| 久久欧美肥婆一二区| 欧美一区精品| 亚洲一区二区三区精品视频| 亚洲激情视频| 亚洲国产va精品久久久不卡综合| 国产精品一区二区女厕厕| 欧美日韩一区二区三| 欧美jizzhd精品欧美巨大免费| 欧美一区二区三区在| 亚洲一区二区三区在线看| 日韩一级黄色av| 99re6这里只有精品| 亚洲日本电影| 亚洲美女黄色| 亚洲美女中文字幕| 亚洲伦理自拍| 日韩一级免费| 一区二区激情| 亚洲一区二区三区精品在线观看| 日韩视频一区二区三区| 亚洲精品美女| 一本色道**综合亚洲精品蜜桃冫| 亚洲三级免费| 99国产精品久久久久久久| 亚洲精品在线观看免费| 亚洲第一福利社区| 亚洲国产乱码最新视频| 亚洲精品偷拍| 一区二区冒白浆视频| 亚洲专区在线视频| 欧美影视一区| 久久免费偷拍视频| 欧美成人亚洲| 欧美日韩中文字幕综合视频| 欧美日韩在线播放| 国产精品一二三| 国内精品视频久久| 亚洲人www| 中文国产亚洲喷潮| 久久精品一区二区| 欧美风情在线| 日韩午夜激情av| 午夜亚洲一区| 欧美成人tv| 国产精品theporn| 国内精品一区二区三区| 亚洲黄色在线| 亚洲欧美一区在线| 欧美高清在线一区二区| 99国产精品久久久| 欧美一区激情| 欧美精品v日韩精品v韩国精品v | 午夜影视日本亚洲欧洲精品| 久久久久久久久久久久久9999| 欧美激情第六页| 欧美视频在线观看| 伊人久久大香线蕉av超碰演员| 国产一区亚洲| 亚洲一区二区综合| 欧美国产丝袜视频| 先锋a资源在线看亚洲| 久久亚洲高清| 国产精品视频免费| 一色屋精品视频在线观看网站| 亚洲在线成人| 欧美激情精品久久久久久久变态| 亚洲一区二区三区涩| 老司机一区二区三区| 国产精品福利av| 亚洲三级色网| 久久人人精品| 亚洲影视在线| 欧美日韩国产一区| 亚洲国产色一区| 久久一本综合频道| 99国内精品| 欧美久久一级| 91久久夜色精品国产九色|