<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Rex

    ——生命不止,奮斗不息。
    posts - 27, comments - 8, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    查找MS SQL SERVER 2005的相關文檔后記錄這些:
    1.ANSI_NULLS

    1SET ANSI_NULLS ON
    2GO

    上面第一行是 指定與空值一起使用時的等于 (=) 和不等于 (<>) 比較運算符的 SQL-92 標準行為。
    SQL SERVER 的聯機叢書里提道:后續版本的 Microsoft SQL Server 將刪除該功能。請避免在新的開發工作中使用該功能,并著手修改當前還在使用該功能的應用程序。
    用法解釋:SQL-92 標準要求在對空值進行等于 (=) 或不等于 (<>) 比較時取值為 FALSE。當 SET ANSI_NULLS 為 ON 時,即使 column_name 中包含空值,使用 WHERE column_name = NULL 的 SELECT 語句仍返回零行。即使 column_name 中包含非空值,使用 WHERE column_name <> NULL 的 SELECT 語句仍會返回零行。

    當 SET ANSI_NULLS 為 OFF 時,等于 (=) 和不等于 (<>) 比較運算符不遵從 SQL-92 標準。使用 WHERE column_name = NULL 的 SELECT 語句返回 column_name 中包含空值的行。使用 WHERE column_name <> NULL 的 SELECT 語句返回列中包含非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 語句返回所有不為 XYZ_value 也不為 NULL 的行。

    當 SET ANSI_NULLS 為 ON 時,所有對空值的比較均取值為 UNKNOWN。當 SET ANSI_NULLS 為 OFF 時,如果數據值為 NULL,則所有數據對空值的比較將取值為 TRUE。如果未指定 SET ANSI_NULLS,則應用當前數據庫的 ANSI_NULLS 選項設置。有關 ANSI_NULLS 數據庫選項的詳細信息,請參閱 ALTER DATABASE (Transact-SQL)設置數據庫選項

    僅當某個比較操作數是值為 NULL 的變量或文字 NULL 時,SET ANSI_NULLS ON 才會影響比較。如果比較雙方是列或復合表達式,則該設置不會影響比較。

    為使腳本按預期運行,不管 ANSI_NULLS 數據庫選項或 SET ANSI_NULLS 的設置如何,請在可能包含空值的比較中使用 IS NULL 和 IS NOT NULL。

    在執行分布式查詢時應將 SET ANSI_NULLS 設置為 ON。

    對計算列或索引視圖創建或更改索引時,SET ANSI_NULLS 也必須為 ON。如果 SET ANSI_NULLS 為 OFF,則針對表(包含計算列或索引視圖的索引)的 CREATE、UPDATE、INSERT 和 DELETE 語句將失敗。SQL Server 將返回一個錯誤消息,該錯誤消息會列出所有違反所需值的 SET 選項。另外,在執行 SELECT 語句時,如果 SET ANSI_NULLS 為 OFF,則 SQL Server 將忽略計算列或視圖的索引值并解析選擇操作,就好像表或視圖沒有這樣的索引一樣。
    ANSI_NULLS 是在處理計算列或索引視圖的索引時必須設置為所需值的七個 SET 選項之一。還必須將選項 ANSI_PADDING、ANSI_WARNINGS、ARITHABORT、QUOTED_IDENTIFIER 和 CONCAT_NULL_YIELDS_NULL 設置為 ON,而必須將 NUMERIC_ROUNDABORT 設置為 OFF。

    2.SET QUOTED_IDENTIFIER

    SET QUOTED_IDENTIFIER 為 ON 時,標識符可以由雙引號分隔,而文字必須由單引號分隔。當 SET QUOTED_IDENTIFIER 為 OFF 時,標識符不可加引號,且必須符合所有 Transact-SQL 標識符規則。有關詳細信息,請參閱標識符。文字可以由單引號或雙引號分隔。

    當 SET QUOTED_IDENTIFIER 為 ON(默認值)時,由雙引號分隔的所有字符串都被解釋為對象標識符。因此,加引號的標識符不必符合 Transact-SQL 標識符規則。它們可以是保留關鍵字,并且可以包含 Transact-SQL 標識符中通常不允許的字符。不能使用雙引號分隔文字字符串表達式,而必須用單引號括住文字字符串。如果單引號 (') 是文字字符串的一部分,則可以由兩個單引號 (") 表示。當對數據庫中的對象名使用保留關鍵字時,SET QUOTED_IDENTIFIER 必須為 ON。

    當 SET QUOTED_IDENTIFIER 為 OFF 時,表達式中的文字字符串可以由單引號或雙引號分隔。如果文字字符串由雙引號分隔,則可以在字符串中包含嵌入式單引號,如省略號。

    當在計算列或索引視圖上創建或更改索引時,SET QUOTED_IDENTIFIER 必須為 ON。如果 SET QUOTED_IDENTIFIER 為 OFF,則計算列或索引視圖上帶索引的表上的 CREATE、UPDATE、INSERT 和 DELETE 語句將失敗。有關計算列的索引視圖和索引所必需的 SET 選項設置的詳細信息,請參閱 SET (Transact-SQL) 中的“使用 SET 語句時的注意事項”。

    在進行連接時,SQL 本機客戶端 ODBC 驅動程序和 SQL Server 的 SQL Native Client OLE DB Provider 自動將 QUOTED_IDENTIFIER 設置為 ON。這可以在 ODBC 數據源、ODBC 連接特性或 OLE DB 連接屬性中進行配置。對來自 DB-Library 應用程序的連接,SET QUOTED_IDENTIFIER 默認設置為 OFF。

    創建表時,即使此時將 QUOTED IDENTIFIER 選項設置為 OFF,該選項在表的元數據中仍始終存儲為 ON。

    創建存儲過程時,將捕獲 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 設置,并用于該存儲過程的后續調用。

    在存儲過程內執行 SET QUOTED_IDENTIFIER 時,其設置不更改。

    當 SET ANSI_DEFAULTS 為 ON時,將啟用 SET QUOTED_IDENTIFIER。

    SET QUOTED_IDENTIFIER 還與 ALTER DATABASE 的 QUOTED_IDENTIFER 設置相對應。有關數據庫設置的詳細信息,請參閱 ALTER DATABASE (Transact-SQL)設置數據庫選項

    SET QUOTED_IDENTIFIER 是在分析時進行設置的。在分析時進行設置意味著:SET 語句只要出現在批處理或存儲過程中即生效,與代碼執行實際上是否到達該點無關;并且 SET 語句在任何語句執行之前生效。


    3.SET NOCOUNT ON
    使返回的結果中不包含有關受 Transact-SQL 語句影響的行數的信息。
    當 SET NOCOUNT 為 ON 時,不返回計數(表示受 Transact-SQL 語句影響的行數)。當 SET NOCOUNT 為 OFF 時,返回計數。

    即使當 SET NOCOUNT 為 ON 時,也更新 @@ROWCOUNT 函數(返回受上一語句影響的行數)。

    當 SET NOCOUNT 為 ON 時,將不給客戶端發送存儲過程中的每個語句的 DONE_IN_PROC 信息。當使用 Microsoft SQL Server 提供的實用工具執行查詢時,在 Transact-SQL 語句(如 SELECT、INSERT、UPDATE 和 DELETE)結束時將不會在查詢結果中顯示"nn rows affected"。

    如果存儲過程中包含的一些語句并不返回許多實際的數據,則該設置由于大量減少了網絡流量,因此可顯著提高性能。

    SET NOCOUNT 設置是在執行或運行時設置,而不是在分析時設置。

    4.臨時表的使用
    a.臨時表其實是放在數據庫tempdb里的一個用戶表,當不再使用時會自動刪除。
    b.一種是以#(局部)或##(全局)開頭的表,這種表在會話期間存,會話結束則自動刪除;二者在名稱、可見性和可用性上均不相同。本地臨時表的名稱以單個符號   (#)   打頭;它們僅對當前的用戶連接是可見的;當用戶從   Microsoft&reg;   SQL   Server™   2000   實例斷開連接時被刪除。全局臨時表的名稱以數學符號   (##)   打頭,創建后對任何用戶都是可見的,當所有引用該表的用戶從   SQL   Server   斷開連接時被刪除。
    c.另一種,如果創建時不以#或##開頭,而用tempdb.TempTable來命名它,則該表可在數據庫重啟前一直存在.


    posted @ 2007-12-25 13:31 W.R 閱讀(672) | 評論 (0)編輯 收藏

    1.查詢從第N條到第M條:
           在MSSQL中  可以用  方式1:
    SELECT TOP m-n+1 * FROM TableA 
      
    WHERE (id NOT IN 
        (
    SELECT TOP n-1 id FROM   TableA)) 
    id 為TableA表的關鍵字
            也可用方式2:在存儲過程中新建一張臨時表 取查詢表的主鍵做字段
    CREATE procedure pagination1
    (
    @pagesize int,  --頁面大小,如每頁存儲20條記錄
    @pageindex int   --當前頁碼
    )
    as
    set nocount on
    begin
    declare @indextable table(id int identity(1,1),nid int)  --定義表變量
    declare @PageLowerBound int  --定義此頁的底碼
    declare @PageUpperBound int  --定義此頁的頂碼
    set @PageLowerBound=(@pageindex-1)*@pagesize
    set @PageUpperBound=@PageLowerBound+@pagesize
    set rowcount @PageUpperBound
    insert into @indextable(nid) select gid from TGongwen where fariqi >dateadd(day,-365,getdate()) order by fariqi desc
    select O.gid,O.mid,O.title,O.fadanwei,O.fariqi from TGongwen O,@indextable t where O.gid=t.nid
    and t.id>@PageLowerBound and t.id<=@PageUpperBound order by t.id
    end
    set nocount off


    借助臨時表來達到你的目的。
    個人推薦第1種方式。

    另外  not in 與 not exists 在執行效率上是沒有本質的區別的。

    posted @ 2007-11-23 13:02 W.R 閱讀(108) | 評論 (0)編輯 收藏

    重要兩點:
    1.通過裝飾模式在DataSource與SessionFactory之間銜接。
    2.利用副本給線程綁定數據源。

    posted @ 2007-08-21 14:08 W.R 閱讀(492) | 評論 (0)編輯 收藏

     

    for(Iterator iter = map.entrySet().iterator();iter.hasNext()){
    Map.Entry element 
    = (Map.Entry) iter.next();
    Object strKey 
    = element.getKey(); //鍵值
    Object strValue = element.getValue(); //value值
    }

    HashMap<K,V> map
    for(V v:map)
    v.

    posted @ 2007-08-21 14:05 W.R 閱讀(3717) | 評論 (1)編輯 收藏

    ?

    select ? * ? from ?sysproperties?g,syscolumns?a? where ?a.id = g.id? AND ?a.colid? = ?g.smallid
    記住這句話,在MSSQL中查詢字段描述的查詢語句。

    posted @ 2006-12-12 17:11 W.R 閱讀(255) | 評論 (0)編輯 收藏

    一、C++
    ?????????一般我們常說的內存泄漏是指堆內存的泄漏。堆內存是指程序從堆中分配的,大小任意的(內存塊的大小可以在程序運行期決定),使用完后必須顯示釋放的內存。應用程序一般使用malloc,realloc,new等函數從堆中分配到一塊內存,使用完后,程序必須負責相應的調用free或delete釋放該內存塊,否則,這塊內存就不能被再次使用,我們就說這塊內存泄漏了。看如下一段Ccode:
    void?GetMemory2(char?**p,?int?num)?
    {?
    ????
    *p?=?(char?*)malloc(num);?
    }?
    void?Test(void)?
    {?
    ????char?
    *str?=?NULL;?
    ????GetMemory(
    &str,?100);?
    ????strcpy(str,?
    "hello");?
    ????printf(str);?
    }?
    執行Test后,能夠輸出hello ;但是確實是內存泄露了,該free一下,另外我想C++中free is better than delete!
    ?????????以下這段小程序演示了堆內存發生泄漏的情形:
    void?MyFunction(int?nSize)
    {
    ???????
    char*??p=?new?char[nSize];
    ???????
    if(?!GetStringFrom(?p,?nSize?)?){
    ??????????????MessageBox(“Error”);
    ??????????????
    return;
    ???????}

    ???????…
    //using?the?string?pointed?by?p;
    ???????delete?p;
    }


    ?????????廣義的說,內存泄漏不僅僅包含堆內存的泄漏,還包含系統資源的泄漏(resource leak),比如核心態HANDLE,GDI Object,SOCKET, Interface等,從根本上說這些由操作系統分配的對象也消耗內存,如果這些對象發生泄漏最終也會導致內存的泄漏。而且,某些對象消耗的是核心態內存,這些對象嚴重泄漏時會導致整個操作系統不穩定。所以相比之下,系統資源的泄漏比堆內存的泄漏更為嚴重。

    GDI Object的泄漏是一種常見的資源泄漏:

    ?

    void?CMyView::OnPaint(?CDC*?pDC?)
    {
    ???????CBitmap?bmp;
    ???????CBitmap
    *?pOldBmp;
    ???????bmp.LoadBitmap(IDB_MYBMP);
    ???????pOldBmp?
    =?pDC->SelectObject(?&bmp?);
    ???????…
    ???????
    if(?Something()?){
    ??????????????
    return;
    ???????}

    ???????pDC
    ->SelectObject(?pOldBmp?);
    ???????
    return;
    }

    當函數Something()返回非零的時候,程序在退出前沒有把pOldBmp選回pDC中,這會導致pOldBmp指向的HBITMAP對象發生泄漏。這個程序如果長時間的運行,可能會導致整個系統花屏。這種問題在Win9x下比較容易暴露出來,因為Win9x的GDI堆比Win2k或NT的要小很多。
    ?????????有一個很簡單的辦法來檢查一個程序是否有內存泄漏.就是是用Windows的任務管理器(Task Manager).??運行程序,然后在任務管理器里面查看 “內存使用”和”虛擬內存大小”兩項,當程序請求了它所需要的內存之后,如果虛擬內存還是持續的增長的話,就說明了這個程序有內存泄漏問題. 當然如果內存泄漏的數目非常的小,用這種方法可能要過很長時間才能看的出來.
    ?????????已經有許多技術被研究出來以應對這個問題,比如Smart Pointer,Garbage Collection等。Smart Pointer技術比較成熟,STL中已經包含支持Smart Pointer的class,但是它的使用似乎并不廣泛,而且它也不能解決所有的問題;Garbage Collection技術在Java中已經比較成熟,但是在c/c++領域的發展并不順暢,雖然很早就有人思考在C++中也加入GC的支持。現實世界就是這樣的,作為一個c/c++程序員,內存泄漏是你心中永遠的痛。

    以發生的方式來分類,內存泄漏可以分為4類:

    ??????1.常發性內存泄漏。發生內存泄漏的代碼會被多次執行到,每次被執行的時候都會導致一塊內存泄漏。比如例二,如果Something()函數一直返回True,那么pOldBmp指向的HBITMAP對象總是發生泄漏。

    ??????2.偶發性內存泄漏。發生內存泄漏的代碼只有在某些特定環境或操作過程下才會發生。比如例二,如果Something()函數只有在特定環境下才返回True,那么pOldBmp指向的HBITMAP對象并不總是發生泄漏。常發性和偶發性是相對的。對于特定的環境,偶發性的也許就變成了常發性的。所以測試環境和測試方法對檢測內存泄漏至關重要。

    ??????3.一次性內存泄漏。發生內存泄漏的代碼只會被執行一次,或者由于算法上的缺陷,導致總會有一塊僅且一塊內存發生泄漏。比如,在類的構造函數中分配內存,在析構函數中卻沒有釋放該內存,但是因為這個類是一個Singleton,所以內存泄漏只會發生一次。另一個例子:

    ?

    char*?g_lpszFileName?=?NULL;
    void?SetFileName(?const?char*?lpcszFileName?)
    {
    ????
    if(?g_lpszFileName?){
    ????????free(?g_lpszFileName?);
    ????}

    ????g_lpszFileName?
    =?strdup(?lpcszFileName?);
    }

    如果程序在結束的時候沒有釋放g_lpszFileName指向的字符串,那么,即使多次調用SetFileName(),總會有一塊內存,而且僅有一塊內存發生泄漏。

    ??????4.隱式內存泄漏。程序在運行過程中不停的分配內存,但是直到結束的時候才釋放內存。嚴格的說這里并沒有發生內存泄漏,因為最終程序釋放了所有申請的內存。但是對于一個服務器程序,需要運行幾天,幾周甚至幾個月,不及時釋放內存也可能導致最終耗盡系統的所有內存。所以,我們稱這類內存泄漏為隱式內存泄漏。舉一個例子:

    ?

    class?Connection
    {
    public:
    ???????Connection(?SOCKET?s);
    ???????
    ~Connection();
    ???????…
    private:
    ???????SOCKET?_socket;
    ???????…
    }
    ;
    class?ConnectionManager
    {
    public:
    ???????ConnectionManager()
    {

    ???????}

    ???????
    ~ConnectionManager(){
    ??????????list
    <Connection>::iterator?it;
    ??????????
    for(?it?=?_connlist.begin();?it?!=?_connlist.end();?++it?){
    ?????????????????????delete?(
    *it);
    ??????????????}

    ??????????????_connlist.clear();
    ???????}

    ???????
    void?OnClientConnected(?SOCKET?s?){
    ?????????Connection
    *?p?=?new?Connection(s);
    ?????????_connlist.push_back(p);
    ???????}

    ???????
    void?OnClientDisconnected(?Connection*?pconn?){
    ??????????????_connlist.remove(?pconn?);
    ??????????????delete?pconn;
    ???????}

    private:
    ???????list
    <Connection*>?_connlist;
    }
    ;

    ?假設在Client從Server端斷開后,Server并沒有呼叫OnClientDisconnected()函數,那么代表那次連接的Connection對象就不會被及時的刪除(在Server程序退出的時候,所有Connection對象會在ConnectionManager的析構函數里被刪除)。當不斷的有連接建立、斷開時隱式內存泄漏就發生了。

    二、JAVA中的內存泄露
    ?????????JAVA有GC自動回收內存,內存泄露是指系統中存在無法回收的內存,有時候會造成內存不足或系統崩潰。在C/C++中分配了內存不釋放的情況就是內存泄露。雖然Java存在內存泄露,但是基本上不用很關心它,特別是那些對代碼本身就不講究的就更不要去關心這個了。 Java中的內存泄露當然是指:存在無用但是垃圾回收器無法回收的對象。而且即使有內存泄露問題存在,也不一定會表現出來。看下面的例子:

    public?class?Stack?{
     
    private?Object[]?elements=new?Object[10];
     
    private?int?size?=?0;?
     
    public?void?push(Object?e){
      ensureCapacity();
      elements[size
    ++]?=?e;?
     }

     
    public?Object?pop(){
      
    if(?size?==?0)?
       
    throw?new?EmptyStackException();?
       
    return?elements[--size];
     }

    ??
    private?void?ensureCapacity(){
     ??
    if(elements.length?==?size){
      ??Object[]?oldElements?
    =?elements;
      ??elements?
    =?new?Object[2?*?elements.length+1];
      ??System.arraycopy(oldElements,
    0,?elements,?0,?size);
     ??}

    ??}

    }

    假如堆棧加了10個元素,然后全部彈出來,雖然堆棧是空的,沒有我們要的東西,但是這是個對象是無法回收的,這個才符合了內存泄露的兩個條件:無用,無法回收。再看這個例子:
    public?class?Bad{
     public?static?Stack?s
    =Stack();
      static{
       s.push(new?Object());
       s.pop();?
    //這里有一個對象發生內存泄露
       s.push(new?Object());?
    //上面的對象可以被回收了,等于是自愈了
      }
    }?
    因為是static,就一直存在到程序退出,但是我們也可以看到它有自愈功能,就是說如果你的Stack最多有100個對象,那么最多也就只有100個對象無法被回收其實這個應該很容易理解,Stack內部持有100個引用,最壞的情況就是他們都是無用的,因為我們一旦放新的進取,以前的引用自然消失!for example:
    public?class?NotTooBad{
     public?void?doSomething(){
      Stack?s
    =new?Stack();
      s.push(new?Object());
      
    //other?code
      s.pop();
    //這里同樣導致對象無法回收,內存泄露.
     }
    //退出方法,s自動無效,s可以被回收,Stack內部的引用自然沒了,所以
     
    //這里也可以自愈,而且可以說這個方法不存在內存泄露問題,不過是晚一點
     
    //交給GC而已,因為它是封閉的,對外不開放,可以說上面的代碼99.9999%
     
    //情況是不會造成任何影響的,當然你寫這樣的代碼不會有什么壞的影響,但是
     
    //絕對可以說是垃圾代碼!沒有矛盾吧,我在里面加一個空的for循環也不會有
     
    //什么太大的影響吧,你會這么做嗎?
    }
    上面兩個例子都不過是小打小鬧,但是C/C++中的內存泄露就不是Bad了,而是Worst了。他們如果一處沒有回收就永遠無法回收,頻繁的調用這個方法內存不就用光了!因為Java還有自愈功能(我自己起的名字,還沒申請專利),所以Java的內存泄露問題幾乎可以忽略了,但是知道的人就不要犯了。
      不知者無罪!Java存在內存泄露,但是也不要夸大其辭。如果你對Java都不是很熟,你根本就不用關心這個,我說過你無意中寫出內存泄露的例子就像你中一千萬一樣概率小,開玩笑了,其實應該是小的多的多!?
    ?????????在某些時候,因為代碼上寫的有問題,會導致某些內存想回收都收不回來,比如下面的代碼
    Temp1?=?new?BYTE[100];
    Temp2?
    =?new?BYTE[100];
    Temp2?
    =?Temp1;
    這樣,Temp2的內存地址就丟掉了,而且永遠都找不回了,這個時候Temp2的內存空間想回收都沒有辦法.

    posted @ 2006-11-22 14:13 W.R| 編輯 收藏

    <iframe name="add2" allowtransparency="ture" frameBorder="0" MARGINWIDTH="100%" style="filter:alpha(opacity=0)"; height:expression(1); aho:expression(autoResize()); width:100%;" id="mainFrame" src="" ></iframe>
    中style="filter.alpha(opacity=0)"設置透明度。


    function mychange()
    {
    ??if (document.add1form.typeid.value!=null && document.add1form.typeid.value!="0") {
    ? ??document.all["mainFrame"].style.filter = "";
    ??? ?document.all["mainFrame"].src="<%=request.getContextPath()%>/single_letterAction.do?actionCode=select&typeid="
    ??? ???????+ document.add1form.typeid.value +"&Mlever=<%=Mlever%>&Mname=<%=Mname%>";
    ? ?}
    }

    另外在此記下一句話:
    <div style="border:1 outset #ffffff; overflow:auto;width:100%;height:250" id="word" contenteditable></div>

    posted @ 2006-11-14 11:26 W.R 閱讀(2336) | 評論 (1)編輯 收藏

    //本窗口(彈出窗口)關閉,刷新父窗口
    <script>window.opener.parent.location.reload();window.close()</script>

    //后退一頁
    <a href="javascript:history.go(-1);">返回前頁</a>

    //新彈出窗口
    <script language=JavaScript>
    function newin(url,name,size)
    {
    ?var windowname=window.open(url,name,"left=0,top=0,status=no,scrollbars=no,resizable=no,"+size);
    }
    </script>
    <a href=Javascript:newin('x.htm','Review','width=500,height=400')>查看簡介</a>

    //頁面自動返回
    <meta http-equiv="refresh" content="1;url=bigclass.asp">
    <p align=center><font color=red>恭喜您!您選擇的大類已經被刪除!<br>1秒鐘后返回上頁!</font>

    //關閉窗口
    <a href="javascript:window.close();">點擊這里關閉本窗口</a>

    //載入時彈出窗口
    <script language="JavaScript">
    window.open('http://www.leshanju.6to23.com/','','toolbar,menubar,scrollbars,resizable,status,location,directories,copyhistory

    ,height=400,width=750');
    </script>


    //彈出窗口自動關閉
    <script language="JavaScript">
      function close() {
      setTimeout("self.close()",10000) //毫秒
      }
    </script>

    <body onload="close()">

    //只彈出一次的窗口
    <script>

      function openwin(){
      window.open("page.html","","width=200,height=200")
      }

      function get_cookie(Name) {
      var search = Name + "=" var returnvalue = "";
      if (document.cookie.length > 0) {
      offset = document.cookie.indexOf(search)
      if (offset != -1) {
      offset += search.length
      end = document.cookie.indexOf(";", offset);
      if (end == -1)
      end = document.cookie.length;
      returnvalue=unescape(document.cookie.substring(offset, end))

      }
      }
      return returnvalue;
      }

      function loadpopup(){
      if (get_cookie("popped")=="){
      openwin()
      document.cookie="popped=yes"
      }
      }
    </script>

    <body onload="loadpopup()">

    //控制新開窗口屬性
    <input type="button" Value="打開新窗口"
    ONCLICK="window.open('test.htm', 'Sample',
    'toolbar=yes,location=yes,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no,copyhistory=yes,width=300,height=20

    0,left=100,top=100')">

    //web窗體對話框
    <script language=javascript>
    function logonApprove()
    {
    ?var

    result=window.showModalDialog("ubbfaces.asp",window,"scroll:no;resizable:no;help:no;status:no;dialogWidth:400px;dialogHeight:

    250px");
    }

    posted @ 2006-11-14 11:19 W.R 閱讀(390) | 評論 (0)編輯 收藏

    ?1 import ?java.util. * ;
    ?2
    ?3 /**
    ?4 ?*?演示Vector的使用。包括Vector的創建、向Vector中添加元素、從Vector中刪除元素、
    ?5 ?*?統計Vector中元素的個數和遍歷Vector中的元素。
    ?6 ? */

    ?7
    ?8
    ?9 public ? class ?VectorDemo {
    10 ? public ? static ? void ?main(String[]?args) {
    11 ??
    12 ?? // Vector的創建
    13 ?? // 使用Vector的構造方法進行創建?
    14 ??Vector?v? = ? new ?Vector( 4 );
    15 ??
    16 ?? // 向Vector中添加元素
    17 ?? // 使用add方法直接添加元素
    18 ??v.add( " Test0 " );
    19 ??v.add( " Test1 " );
    20 ??v.add( " Test0 " );
    21 ??v.add( " Test2 " );
    22 ??v.add( " Test2 " );
    23 ??
    24 ?? // 從Vector中刪除元素
    25 ??v.remove( " Test0 " );? // 刪除指定內容的元素
    26 ??v.remove( 0 );??????? // 按照索引號刪除元素
    27 ??
    28 ?? // 獲得Vector中已有元素的個數
    29 ?? int ?size? = ?v.size();
    30 ??System.out.println( " size: " ?size);
    31 ??
    32 ?? // 遍歷Vector中的元素
    33 ?? for ( int ?i? = ? 0 ;i? < ?v.size();i + ) {
    34 ???System.out.println(v.get(i));
    35 ??}

    36 ?}

    37 }

    38
    java.util.vector
    ArrayList會比Vector快,他是非同步的,如果設計涉及到多線程,還是用Vector比較好一些;
    Vector 類提供了實現可增長數組的功能,隨著更多元素加入其中,數組變的更大。在刪除一些元素之后,數組變小。
    Vector 有三個構造函數,
    public Vector(int initialCapacity,int capacityIncrement)
    public Vector(int initialCapacity)
    public Vector()
      Vector 運行時創建一個初始的存儲容量initialCapacity,存儲容量是以capacityIncrement 變量定義的增量增長。初始的存儲容量和capacityIncrement 可以在Vector 的構造函數中定義。第二個構造函數只創建初始存儲容量。第三個構造函數既不指定初始的存儲容量也不指定capacityIncrement。
      Vector 類提供的訪問方法支持類似數組運算和與Vector 大小相關的運算。類似數組的運算允許向量中增加,刪除和插入元素。它們也允許測試矢量的內容和檢索指定的元素,與大小相關的運算允許判定字節大小和矢量中元素不數目。
      現針對經常用到的對向量增,刪,插功能舉例描述:
    addElement(Object obj)  
      把組件加到向量尾部,同時大小加1,向量容量比以前大1
    insertElementAt(Object obj, int index)  
      把組件加到所定索引處,此后的內容向后移動1 個單位
    setElementAt(Object obj, int index)
      把組件加到所定索引處,此處的內容被代替。
      removeElement(Object obj) 把向量中含有本組件內容移走。
      removeAllElements() 把向量中所有組件移走,向量大小為0。
      例如:
     
    ?1import?java.lang.System;
    ?2import?java.util.Vector;
    ?3import?java.util.Emumeration;
    ?4public?class?Avector{
    ?5????public?static?void?main(String?args[]){
    ?6????????Vector?v=new?Vector();?
    ?7????????v.addElement("one");?
    ?8????????v.addElement("two");
    ?9????????v.addElement("three");?
    10????????v.insertElementAt("zero",0);
    11????????v.insertElementAt("oop",3);
    12????????v.setElementAt("three",3);
    13????????v.setElementAt("four",4);
    14????????v.removeAllElements();
    15????}

    16}

    Vector中的變化情況:
    1. one   2. one   3. one   4. zero   5.zero   6. zero  7. zero???? 8.

         ??? two  ?????? two ?????????? one  ???? one  ??????? one  ????one
               three  ???? two  ???? two  ???????? two   two
                    three  ??? oop  ???????? three  three
                         three  ??????? three  four
     
      另外,Vector 在參數傳遞中發揮著舉足輕重的作用。
      在Applet 中有一塊畫布(Canvas) 和一個(Panel), 而Panel 中放著用戶要輸入的信息,根據這些信息把參數傳遞到canvas 中,這時在Java 中用一個接口(Interface), 而在接口中需用一個Vector 去傳遞這些參數。另外,在一個類向另一個類參數傳遞就可以用這種方法。
      例如:
     
    import java.util.Vector
    interface codeselect{
               Vector codeselect=new Vector();
                 }
    顯示數學信息
    Vector(0)存入學生編號
    Vector(1)存入學科
     
      在Panel 中當用戶在TextField 和Choice 中選擇自己所要求的內容,程序中
      通過事件響應把值傳到向量Vector 中。
      假若在Panel 類中:
    ?1public?void?codepanel?extends?Panel{
    ?2????public?void?init()?{?
    ?3????????TextField?s=new?TextField();
    ?4????????Choice?c=new?Choice();
    ?5????????c.?addItem("語文");
    ?6????????c.addItem("數學");
    ?7????????c.addItem("政治");
    ?8????????add(s);
    ?9????????add?(c);
    10????}

    11 
    12????public?boolean?handleEvent(Event?event){
    13????????if(event.id==Event.ACTION_EVENT){
    14??????????if(event.target.instanceof?Textfield)
    15??????????{
    16?????????????coderesult.setElementAt(s.getText(),0);
    17??????????}
    ?else?if(event.target?intanceof?Choice)?{
    18?????????????coderesult.setElementAt(new?Integer(c.getSelectedIndex()),1);
    19??????????}

    20????????}

    21????}

    22}

    這時,向量中已經存入學生編號和學科索引號(0 為語文,1 為數學,2 為政治)。
      而在Canvas 中得到此值,
    public?class?codecanvas?extends?Canvas{
    ????
    public?void?code{
    ????}

    ????
    public?void?paint{ 
    ?????????String?str;
    ????????
    int?t;
    ????????str
    =(String)coderesult.elementAt(0);
    ????????t
    =(new?Integer(codeselect.elementAt(1).toString())).intValue();
    ????????
    if(t==0)?{
    ?????????????
    //顯示語文信息
    ?????????}
    ?else?if(t==1){
    ?????????????
    //顯示數學信息 
    ?????????}

    ????????
    else?if(t==2)?{
    ?????????????
    //顯示政治信息
    ?????????}

    ????}

    }
     

    posted @ 2006-11-09 13:18 W.R| 編輯 收藏

    如果指定了上載路徑,千萬得記得檢查所指定的路徑存在否。

    posted @ 2006-11-07 11:30 W.R 閱讀(307) | 評論 (1)編輯 收藏

    僅列出標題
    共3頁: 上一頁 1 2 3 下一頁 
    主站蜘蛛池模板: 亚洲Av综合色区无码专区桃色| 精品久久久久久无码免费| 亚洲国产精品VA在线看黑人 | 日本不卡高清中文字幕免费| 免费播放在线日本感人片| 另类图片亚洲校园小说区| 久久精品亚洲AV久久久无码| 久久精品亚洲综合| 国产成人亚洲综合无码| 全免费a级毛片免费看不卡| 最近2022中文字幕免费视频| 99久久免费国产精品热| 亚洲?V乱码久久精品蜜桃| 成人午夜18免费看| 成年人网站免费视频| 亚洲视频在线免费观看| a毛片全部播放免费视频完整18| 牛牛在线精品免费视频观看| 亚洲av无码日韩av无码网站冲| 在线综合亚洲中文精品| 久久精品国产99国产精品亚洲| 亚洲综合小说久久另类区| 亚洲嫩模在线观看| 亚洲国产成人久久综合一| 亚洲成A人片777777| 亚洲日韩精品无码一区二区三区 | 国产精品亚洲专区无码唯爱网 | 好爽好紧好大的免费视频国产| 日本精品人妻无码免费大全| 国产妇乱子伦视频免费| 97青青草原国产免费观看| 99爱视频99爱在线观看免费| 免费视频一区二区| 男人进去女人爽免费视频国产| 国产午夜成人免费看片无遮挡 | 亚洲精品无码专区久久久| 亚洲一区二区三区在线观看精品中文 | 国产高清免费在线| 亚洲国产精品日韩专区AV| 亚洲成av人片一区二区三区| 免费在线黄色网址|