憨厚生

          ----Java's Slave----
          ***Java's Host***

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            165 隨筆 :: 17 文章 :: 90 評(píng)論 :: 0 Trackbacks

          2009年12月3日 #

          【轉(zhuǎn)】http://www.cnblogs.com/myssh/archive/2009/12/18/1627368.html

          在《Pragmatic AJAX中文問(wèn)題 A Web 2.0 Primer 》中偶然看到對(duì)readyStae狀態(tài)的介紹,感覺(jué)這個(gè)介紹很實(shí)在,摘譯如下:

           0: (Uninitialized) the send( ) method has not yet been invoked. 
           1: (Loading) the send( ) method has been invoked, request in progress. 
           2: (Loaded) the send( ) method has completed, entire response received.
           3: (Interactive) the response is being parsed. 
           4: (Completed) the response has been parsed, is ready for harvesting. 

           0 - (未初始化)還沒(méi)有調(diào)用send()方法
           1 - (載入)已調(diào)用send()方法,正在發(fā)送請(qǐng)求
           2 - (載入完成)send()方法執(zhí)行完成,已經(jīng)接收到全部響應(yīng)內(nèi)容
           3 - (交互)正在解析響應(yīng)內(nèi)容
           4 - (完成)響應(yīng)內(nèi)容解析完成,可以在客戶(hù)端調(diào)用了

          對(duì)于readyState的這五種狀態(tài),其他書(shū)中大都語(yǔ)焉不詳。像《Foundations of AJAX中文問(wèn)題》中,只在書(shū)中的表2-2簡(jiǎn)單地列舉了狀態(tài)的“名稱(chēng)”--The state of the request. The five possible values are 0 = uninitialized, 1 = loading, 2 = loaded, 3 = interactive, and 4 = complete。而《Ajax in Action》中好像根本就沒(méi)有提到這5種狀態(tài)的細(xì)節(jié)?!禤rofessional AJAX中文問(wèn)題》中雖不盡人意,但還是有可取之處:

          There are five possible values for readyState: 
          0 (Uninitialized): The object has been created but the open() method hasn’t been called. 
          1 (Loading): The open() method has been called but the request hasn’t been sent. 
          2 (Loaded): The request has been sent. 
          3 (Interactive). A partial response has been received. 
          4 (Complete): All data has been received and the connection has been closed. 

          readyState有五種可能的值:
          0 (未初始化): (XMLHttpRequest)對(duì)象已經(jīng)創(chuàng)建,但還沒(méi)有調(diào)用open()方法。
          1 (載入):已經(jīng)調(diào)用open() 方法,但尚未發(fā)送請(qǐng)求。
          2 (載入完成): 請(qǐng)求已經(jīng)發(fā)送完成。
          3 (交互):可以接收到部分響應(yīng)數(shù)據(jù)。
          4 (完成):已經(jīng)接收到了全部數(shù)據(jù),并且連接已經(jīng)關(guān)閉。

          在《Understanding AJAX中文問(wèn)題: Using JavaScript to Create Rich Internet Applications》中,則用下表進(jìn)行了說(shuō)明:

          readyState Status Code

          Status of the XMLHttpRequest Object
          (0) UNINITIALIZED
          未初始化
          The object has been created but not initialized. (The open method has not been called.)
          (XMLHttpRequest)對(duì)象已經(jīng)創(chuàng)建,但尚未初始化(還沒(méi)有調(diào)用open方法)。
          (1) LOADING
          載入
          The object has been created, but the send method has not been called.
          (XMLHttpRequest)對(duì)象已經(jīng)創(chuàng)建,但尚未調(diào)用send方法。
          (2) LOADED
          載入完成
          The send method has been called, but the status and headers are not yet available.
          已經(jīng)調(diào)用send方法,(HTTP響應(yīng))狀態(tài)及頭部還不可用。
          (3) INTERACTIVE
          交互
          Some data has been received. Calling the responseBody and responseText properties at this state to obtain partial results will return an error, because status and response headers are not fully available.
          已經(jīng)接收部分?jǐn)?shù)據(jù)。但若在此時(shí)調(diào)用responseBody和responseText屬性獲取部分結(jié)果將會(huì)產(chǎn)生錯(cuò)誤,因?yàn)闋顟B(tài)和響應(yīng)頭部還不完全可用。
          (4) COMPLETED
          完成
          All the data has been received, and the complete data is available in the responseBody and responseText properties.
          已經(jīng)接收到了全部數(shù)據(jù),并且在responseBody和responseText屬性中可以提取到完整的數(shù)據(jù)。

          根據(jù)以上幾本書(shū)中的關(guān)于readyState五種狀態(tài)的介紹,我認(rèn)為還是《Pragmatic AJAX中文問(wèn)題 A Web 2.0 Primer 》比較到位,因?yàn)樗岬搅藢?duì)接收到的數(shù)據(jù)的解析問(wèn)題,其他書(shū)中都沒(méi)有提到這一點(diǎn),而這一點(diǎn)正是“(3)交互”階段作為一個(gè)必要的轉(zhuǎn)換過(guò)程存在于“(2)載入完成”到“(4)完成”之間的理由,也就是其任務(wù)是什么。歸結(jié)起來(lái),我覺(jué)得比較理想的解釋方法應(yīng)該以“狀態(tài):任務(wù)(目標(biāo))+過(guò)程+表現(xiàn)(或特征)”表達(dá)模式來(lái)對(duì)這幾個(gè)狀態(tài)進(jìn)行定義比較準(zhǔn)確,而且讓人容易理解?,F(xiàn)試總結(jié)如下:

          readyState 狀態(tài)

          狀態(tài)說(shuō)明

          (0)未初始化

          此階段確認(rèn)XMLHttpRequest對(duì)象是否創(chuàng)建,并為調(diào)用open()方法進(jìn)行未初始化作好準(zhǔn)備。值為0表示對(duì)象已經(jīng)存在,否則瀏覽器會(huì)報(bào)錯(cuò)--對(duì)象不存在。

          (1)載入

          此階段對(duì)XMLHttpRequest對(duì)象進(jìn)行初始化,即調(diào)用open()方法,根據(jù)參數(shù)(method,url,true)完成對(duì)象狀態(tài)的設(shè)置。并調(diào)用send()方法開(kāi)始向服務(wù)端發(fā)送請(qǐng)求。值為1表示正在向服務(wù)端發(fā)送請(qǐng)求。

          (2)載入完成

          此階段接收服務(wù)器端的響應(yīng)數(shù)據(jù)。但獲得的還只是服務(wù)端響應(yīng)的原始數(shù)據(jù),并不能直接在客戶(hù)端使用。值為2表示已經(jīng)接收完全部響應(yīng)數(shù)據(jù)。并為下一階段對(duì)數(shù)據(jù)解析作好準(zhǔn)備。

          (3)交互

          此階段解析接收到的服務(wù)器端響應(yīng)數(shù)據(jù)。即根據(jù)服務(wù)器端響應(yīng)頭部返回的MIME類(lèi)型把數(shù)據(jù)轉(zhuǎn)換成能通過(guò)responseBody、responseText或responseXML屬性存取的格式,為在客戶(hù)端調(diào)用作好準(zhǔn)備。狀態(tài)3表示正在解析數(shù)據(jù)。

          (4)完成

          此階段確認(rèn)全部數(shù)據(jù)都已經(jīng)解析為客戶(hù)端可用的格式,解析已經(jīng)完成。值為4表示數(shù)據(jù)解析完畢,可以通過(guò)XMLHttpRequest對(duì)象的相應(yīng)屬性取得數(shù)據(jù)。

          概而括之,整個(gè)XMLHttpRequest對(duì)象的生命周期應(yīng)該包含如下階段:
          創(chuàng)建-初始化請(qǐng)求-發(fā)送請(qǐng)求-接收數(shù)據(jù)-解析數(shù)據(jù)-完成

          在具體應(yīng)用中,明確了readyState的五個(gè)狀態(tài)(XMLHttpRequest對(duì)象的生命周期各個(gè)階段)的含義,就可以消除對(duì)Ajax核心的神秘感(語(yǔ)焉不詳?shù)谋澈笠词枪逝?,制造神秘感;要么就?#8220;以其昏昏,使人昭昭”),迅速把握其實(shí)質(zhì),對(duì)減少學(xué)習(xí)中的挫折感和增強(qiáng)自信心都極其有益。

          比如,通過(guò)如下示例:

          //聲明數(shù)組 var states = [“正在初始化……”, “正在初始化請(qǐng)求……成功! 正在發(fā)送請(qǐng)求……”, “成功! 正在接收數(shù)據(jù)……”, “完成! 正在解析數(shù)據(jù)……”, “完成! ”]; //回調(diào)函數(shù)內(nèi)部代碼片段 if (xmlHttp.readyState==4) { var span = document.createElement(“span”); span.innerHTML = states[xmlHttp.readyState]; document.body.appendChild(span); if (xmlHttp.status == 200) { var xmldoc = xmlHttp.responseXML; //其他代碼 } //別忘記銷(xiāo)毀,防止內(nèi)存泄漏 xmlHttp = null; }else{ var span = document.createElement(“span”); span.innerHTML = states[xmlHttp.readyState]; document.body.appendChild(span); }

          結(jié)果如下:

          正在初始化請(qǐng)求……成功!
          正在發(fā)送請(qǐng)求……成功!
          正在接收數(shù)據(jù)……完成!
          正在解析數(shù)據(jù)……完成!

          我們很容易明白XMLHttpRequest對(duì)象在各個(gè)階段都在做什么。因此,也就很容易對(duì)Ajax的核心部分有一個(gè)真正簡(jiǎn)單明了的理解。

          本博PS:readyState一般用在異步請(qǐng)求時(shí)程序響應(yīng)的判斷,Iframe, javaScript腳本同樣適用,參考另一篇文章:http://d-tune.javaeye.com/blog/506074

          文章出處:http://www.cn-cuckoo.com/2007/07/16/the-details-for-five-states-of-readystate-9.html

          posted @ 2010-06-07 09:19 二胡 閱讀(633) | 評(píng)論 (2)編輯 收藏

          歷史 
              CVS 誕生于 1986 年,當(dāng)時(shí)作為一組 shell 腳本而出現(xiàn);1989年3月,Brian Berlinor用C語(yǔ)言重新設(shè)計(jì)并編寫(xiě)了CVS的代碼;1993年前后,Jim Kingdon最終將CVS設(shè)計(jì)成基于網(wǎng)絡(luò)的平臺(tái),開(kāi)發(fā)者們能從Internet任何地方獲得程序源代碼。截至目前最新版本是2004年12月13日發(fā)布的1.12.11。 

          功能介紹 
          一、 代碼統(tǒng)一管理,保存所有代碼文件更改的歷史記錄。對(duì)代碼進(jìn)行集中統(tǒng)一管理,可以方便查看新增或刪除的文件,能夠跟蹤所有代碼改動(dòng)痕跡??梢噪S意恢復(fù)到以前任意一個(gè)歷史版本。并避免了因?yàn)榘姹静煌氲纳顚覤UG。 
          二、 完善的沖突解決方案,可以方便的解決文件沖突問(wèn)題,而不需要借助其它的文件比較工具和手工的粘貼復(fù)制。 
          三、 代碼權(quán)限的管理??梢詾椴煌挠脩?hù)設(shè)置不同的權(quán)限??梢栽O(shè)置訪(fǎng)問(wèn)用戶(hù)的密碼、只讀、修改等權(quán)限,而且通過(guò)CVS ROOT目錄下的腳本,提供了相應(yīng)功能擴(kuò)充的接口,不但可以完成精細(xì)的權(quán)限控制,還能完成更加個(gè)性化的功能。 
          四、 支持方便的版本發(fā)布和分支功能。

          基本概念 
          資源庫(kù)(Repository)
           
          CVS的資源庫(kù)存儲(chǔ)全部的版本控制下的文件copy,通常不容許直接訪(fǎng)問(wèn),只能通過(guò)cvs命令,獲得一份本地copy,改動(dòng)后再check in(commit)回資源庫(kù)。而資源庫(kù)通常為與工作目錄分離的。CVS通過(guò)多種方式訪(fǎng)問(wèn)資源庫(kù)。每種方法有不同目錄表示形式。 
          版本(Revision) 
          每一個(gè)文件的各個(gè)版本都不相同,形如1.1, 1.2.1,一般1.1是該文件的第一個(gè)revision,后面的一個(gè)將自動(dòng)增加最右面的一個(gè)整數(shù),比如1.2, 1.3, 1.4...有時(shí)候會(huì)出現(xiàn)1.3.2.2,原因見(jiàn)后。revision總是偶數(shù)個(gè)數(shù)字。一般情況下將revision看作時(shí)CVS自己內(nèi)部的一個(gè)編號(hào),而tag則可以標(biāo)志用戶(hù)的特定信息。 
          標(biāo)簽(Tag) 
          用符號(hào)化的表示方法標(biāo)志文件特定revision的信息。通常不需要對(duì)某一個(gè)孤立的文件作tag,而是對(duì)所有文件同時(shí)作一個(gè)tag,以后用戶(hù)可以?xún)H向特定tag的文件提交或者checkout。另外一個(gè)作用是在發(fā)布軟件的時(shí)候表示哪些文件及其哪個(gè)版本是可用的;各文件不同revision可以包括在一個(gè)tag中。如果命名一個(gè)已存在的tag默認(rèn)將不會(huì)覆蓋原來(lái)的; 
          分支(Branch) 
          當(dāng)用戶(hù)修改一個(gè)branch時(shí)不會(huì)對(duì)另外的branch產(chǎn)生任何影響??梢栽谶m當(dāng)?shù)臅r(shí)候通過(guò)合并的方法將兩個(gè)版本合起來(lái);branch總是在當(dāng)前revision后面加上一個(gè)偶數(shù)整數(shù)(從2開(kāi)始,到0結(jié)束),所以branch總是奇數(shù)個(gè)數(shù)字,比如1.2后面branch為1.2.2,該分支下revision可能為1.2.2.1,1.2.2.2,... 
          沖突(Conflct) 
          完全是純文本的沖突,不包含邏輯上的矛盾。一般是一份文件,A做了改動(dòng),B在A(yíng)提交之前也做了改動(dòng),這樣最后誰(shuí)commit就會(huì)出現(xiàn)沖突,需要手工解決沖突再提交。 

          CVS與eclipse集成開(kāi)發(fā) 
            前面對(duì)CVS的歷史、功能、概論等理論知識(shí)做了介紹。下面我們將使用最流行的Java IDE Eclipse中內(nèi)置的CVS工具,以一個(gè)完整開(kāi)發(fā)流程,介紹實(shí)際環(huán)境中CVS的正確使用。關(guān)于CVS系統(tǒng)的安裝,不是本文的內(nèi)容,您可以從附錄的鏈接中獲取安裝的介紹資料。 

          常用的CVS控制命令 
          Check Out(檢出) 
          把源文件從cvs源代碼倉(cāng)庫(kù)中取出,缺省的版本是最新的版本,你也可以選擇指定的版本。在每次更改源代碼之前,需要Check Out最新的版本,再起基礎(chǔ)之上對(duì)源代碼進(jìn)行修改。將代碼目錄checkout到指定目錄下,所有文件都是read-write。 
          Check In(檢入) 
          把源代碼加入到cvs源代碼倉(cāng)庫(kù)中,每一個(gè)添加進(jìn)代碼庫(kù)中的文件的版本是 1.1。以后每次修改文件重新ci以后,此文件的版本遞增為1.2 ,1.3.……。在每次對(duì)源代碼修改之后,需要Check In,提交最新版本的源代碼。 
          Synchronize with Repository(與資源庫(kù)同步,簡(jiǎn)稱(chēng)同步) 
          使本地更改與資源庫(kù)同步,它會(huì)列出本地和資源庫(kù)之間不同的所有文件。 
          Add to Version Control 
          將新的文件加入到版本控制之中。 
          Add to .cvsIgnore 
          將文件設(shè)置到版本控制之外,這樣該文件或目錄中的文件的更改在CVS中不可見(jiàn),即使同步也無(wú)法發(fā)現(xiàn)。

          CVS正確使用步驟 
          一、 同步(Synchronize)
           
          就是將本地更改與服務(wù)器同步,同步之后可以清晰的看到上一撿出(Check Out)版本之后本地、服務(wù)器上的最新改動(dòng)。這是非常有用的,特別是敏捷開(kāi)發(fā),強(qiáng)調(diào)集體擁有代碼。有了同步功能,你可以全局把握項(xiàng)目的代碼,可以很方便的跟蹤公共模塊代碼的任何改動(dòng)。 
          具體操作:在Eclipse的資源視圖(Resource Perspective)或者Java視圖(Java Perspective)中,選中要同步的目錄,點(diǎn)擊右鍵選擇"Synchronize with Repository",之后它將顯示同步的視圖。如下圖: 

          (圖一、CVS同步視圖) 
          同步之后,它有四種Mode可以選擇,見(jiàn)上圖綠色框框里按鈕。從做到右分別為: 
          Incoming Mode:表示修改是來(lái)自服務(wù)器,對(duì)應(yīng)于更新(update)操作。 
          Outgoing Mode:表示修改是來(lái)自本地,對(duì)應(yīng)提交(commit)操作。 
          Incoming/ Outgoing Mode:本地和服務(wù)器修改都在該模式(Mode)中顯示。 
          Conflicts Mode:顯示本地和服務(wù)器修改的沖突文件。 
          二、 更新(update) 
          比較簡(jiǎn)單,選擇Incoming Mode,再選中要更新的文件,右鍵選擇update操作。 
          三、 解決沖突并合并(solve conflct and merge) 
          如果有沖突文件,沖突文件不能更新。你必須先解決沖突再操作。選中沖突的文件,再點(diǎn)右鍵選擇"Open in Compare Editor",用比較工具打開(kāi)該文件。如下圖: 

          (圖二、CVS比較器視圖)

          比較器(Compare)視圖,左邊版本底的是本地文件(Local File),右邊是遠(yuǎn)程服務(wù)器文件(Remote File)。使用"Select Next Change"按鈕(綠框中的第一箭頭向下按鈕),逐一查看不同點(diǎn)。如果不同點(diǎn)標(biāo)識(shí)為黑色框框,則不用管它。如果是藍(lán)色框框,則需要手工調(diào)整。如上圖,不同點(diǎn)是藍(lán)色框框,將鼠標(biāo)放到兩個(gè)不同點(diǎn)的中間小方框中,則凸出一個(gè)向右的按鈕,并顯示提示信息"Copy Current Change from Right to Left",意思是將右邊服務(wù)器的不同點(diǎn)覆蓋到左邊的本地文件。點(diǎn)中此按鈕。重復(fù)這樣的操作,將所有服務(wù)器上的更改拷貝到本地。 
          如果有一行代碼,本地和服務(wù)器都同時(shí)做了修改。這時(shí),修改點(diǎn)則顯示紅色框框。這時(shí),你就必須手工做正確的修改。全部修改完成,保存本地文件。 
          此時(shí),如果修改點(diǎn)沒(méi)有了藍(lán)色的框框,就可以開(kāi)始做合并(merge)操作了。操作也很簡(jiǎn)單,選擇該文件,點(diǎn)擊右鍵,選擇"Mark as merged"。 
          注意:必須確保沒(méi)有藍(lán)色框框,即完全拷貝了服務(wù)器的修改才可以做合并(merge)操作,否則會(huì)覆蓋服務(wù)器上的代碼。 
          四、 提交(commit) 
          更新服務(wù)器代碼,解決沖突之后,首先要查看本地文件修改之后是否有錯(cuò)誤。如果有,當(dāng)然首先解決錯(cuò)誤,再提交。 

          posted @ 2010-03-30 09:48 二胡 閱讀(519) | 評(píng)論 (0)編輯 收藏

          轉(zhuǎn)  http://blog.cnw.com.cn/index.php/20937/viewspace-3418

          HTTP頭字段包括4類(lèi):
                 general-header ;
               request-header ;
                 response-header ;
               entity-header .
           
          *******************************************************************************
           General Header Fields
          =============================
             general header是request、response都可用的, 但是不能用于entity.
           
           
                 -- Cache-Control
                 -- Connection
                 -- Date
                 -- Pragma
                 -- Trailer
                 -- Transfer-Encoding
                 -- Upgrade
                 -- Via
                 -- Warning
           
          *******************************************************************************
           Request Header Fields
          ======================
           
             request-header fields 允許客戶(hù)端傳遞關(guān)于request和客戶(hù)端的附加信息到服務(wù)端,
           
                 -- Accept
                 -- Accept-Charset
                 -- Accept-Encoding
                 -- Accept-Language
                 -- Authorization
                 -- Expect
                 -- From
                 -- Host
                 -- If-Match
                 -- If-Modified-Since
                 -- If-None-Match
                 -- If-Range
                 -- If-Unmodified-Since
                 -- Max-Forwards
                 -- Proxy-Authorization
                 -- Range
                 -- Referer
                 -- TE
                 -- User-Agent
           
          *******************************************************************************
            Response Header Fields
          ===============================
           
             response-header fields 允許服務(wù)端傳遞關(guān)于response的、不能放到Status-Line的附加信息。
             這些頭給出關(guān)于服務(wù)端的信息。 
           
                -- Accept-Ranges
                -- Age
                -- ETag
                -- Location
                -- Proxy-Authenticate
                -- Retry-After
                -- Server
                -- Vary
                -- WWW-Authenticate
           
          *******************************************************************************
           Entity Header Fields
          ========================
           
             Entity-header fields 定義關(guān)于entity-body的metainformation(標(biāo)題字段數(shù)據(jù)),
             如果當(dāng)前沒(méi)有body, 則定義被request確定的資源信息.
             一些metainformation是可選的; 一些是必須的。
           
                 -- Allow
                 -- Content-Encoding
                 -- Content-Language
                 -- Content-Length
                 -- Content-Location
                 -- Content-MD5
                 -- Content-Range
                 -- Content-Type
                 -- Expires
                 -- Last-Modified
                 -- extension-header


          【轉(zhuǎn)自】http://www.x5dj.com/userforum/00100239/00305167.shtml


          一、基礎(chǔ)篇
          HTTP(HyperTextTransferProtocol)是超文本傳輸協(xié)議的縮寫(xiě),它用于傳送WWW方式的數(shù)據(jù),關(guān)于HTTP協(xié)議的詳細(xì)內(nèi)容請(qǐng)參考RFC2616。HTTP協(xié)議采用了請(qǐng)求/響應(yīng)模型??蛻?hù)端向服務(wù)器發(fā)送一個(gè)請(qǐng)求,請(qǐng)求頭包含請(qǐng)求的方法、URI、協(xié)議版本、以及包含請(qǐng)求修飾符、客戶(hù)信息和內(nèi)容的類(lèi)似于MIME的消息結(jié)構(gòu)。服務(wù)器以一個(gè)狀態(tài)行作為響應(yīng),相應(yīng)的內(nèi)容包括消息協(xié)議的版本,成功或者錯(cuò)誤編碼加上包含服務(wù)器信息、實(shí)體元信息以及可能的實(shí)體內(nèi)容。
          通常HTTP消息包括客戶(hù)機(jī)向服務(wù)器的請(qǐng)求消息和服務(wù)器向客戶(hù)機(jī)的響應(yīng)消息。這兩種類(lèi)型的消息由一個(gè)起始行,一個(gè)或者多個(gè)頭域,一個(gè)只是頭域結(jié)束的空行和可選的消息體組成。HTTP的頭域包括通用頭,請(qǐng)求頭,響應(yīng)頭和實(shí)體頭四個(gè)部分。每個(gè)頭域由一個(gè)域名,冒號(hào)(:)和域值三部分組成。域名是大小寫(xiě)無(wú)關(guān)的,域值前可以添加任何數(shù)量的空格符,頭域可以被擴(kuò)展為多行,在每行開(kāi)始處,使用至少一個(gè)空格或制表符。
          1、通用頭域
          通用頭域包含請(qǐng)求和響應(yīng)消息都支持的頭域,通用頭域包含Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。對(duì)通用頭域的擴(kuò)展要求通訊雙方都支持此擴(kuò)展,如果存在不支持的通用頭域,一般將會(huì)作為實(shí)體頭域處理。下面簡(jiǎn)單介紹幾個(gè)在UPnP消息中使用的通用頭域。
          Cache-Control頭域
          Cache-Control指定請(qǐng)求和響應(yīng)遵循的緩存機(jī)制。在請(qǐng)求消息或響應(yīng)消息中設(shè)置Cache-Control并不會(huì)修改另一個(gè)消息處理過(guò)程中的緩存處理過(guò)程。請(qǐng)求時(shí)的緩存指令包括no-cache、no- store、max-age、max-stale、min-fresh、only-if-cached,響應(yīng)消息中的指令包括public、 private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、 max-age。各個(gè)消息中的指令含義如下:
          Public指示響應(yīng)可被任何緩存區(qū)緩存。
          Private指示對(duì)于單個(gè)用戶(hù)的整個(gè)或部分響應(yīng)消息,不能被共享緩存處理。這允許服務(wù)器僅僅描述當(dāng)用戶(hù)的部分響應(yīng)消息,此響應(yīng)消息對(duì)于其他用戶(hù)的請(qǐng)求無(wú)效。
          no-cache指示請(qǐng)求或響應(yīng)消息不能緩存
          no-store用于防止重要的信息被無(wú)意的發(fā)布。在請(qǐng)求消息中發(fā)送將使得請(qǐng)求和響應(yīng)消息都不使用緩存。
          max-age指示客戶(hù)機(jī)可以接收生存期不大于指定時(shí)間(以秒為單位)的響應(yīng)。
          min-fresh指示客戶(hù)機(jī)可以接收響應(yīng)時(shí)間小于當(dāng)前時(shí)間加上指定時(shí)間的響應(yīng)。
          max-stale指示客戶(hù)機(jī)可以接收超出超時(shí)期間的響應(yīng)消息。如果指定max-stale消息的值,那么客戶(hù)機(jī)可以接收超出超時(shí)期指定值之內(nèi)的響應(yīng)消息。
          Date頭域
          Date頭域表示消息發(fā)送的時(shí)間,時(shí)間的描述格式由rfc822定義。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的時(shí)間表示世界標(biāo)準(zhǔn)時(shí),換算成本地時(shí)間,需要知道用戶(hù)所在的時(shí)區(qū)。
          Pragma頭域
          Pragma頭域用來(lái)包含實(shí)現(xiàn)特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1協(xié)議中,它的含義和Cache-Control:no-cache相同。
          2、請(qǐng)求消息
          請(qǐng)求消息的第一行為下面的格式:
          Method SP Request-URI SP HTTP-Version CRLF 
          Method表示對(duì)于Request-URI完成的方法,這個(gè)字段是大小寫(xiě)敏感的,包括OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD應(yīng)該被所有的通用WEB服務(wù)器支持,其他所有方法的實(shí)現(xiàn)是可選的。GET方法取回由Request-URI標(biāo)識(shí)的信息。HEAD方法也是取回由Request-URI標(biāo)識(shí)的信息,只是可以在響應(yīng)時(shí),不返回消息體。POST方法可以請(qǐng)求服務(wù)器接收包含在請(qǐng)求中的實(shí)體信息,可以用于提交表單,向新聞組、BBS、郵件群組和數(shù)據(jù)庫(kù)發(fā)送消息。
          SP表示空格。
          Request-URI遵循URI格式,在此字段為星號(hào)(*)時(shí),說(shuō)明請(qǐng)求并不用于某個(gè)特定的資源地址,而是用于服務(wù)器本身。
          HTTP-Version表示支持的HTTP版本,例如為HTTP/1.1。
          CRLF表示換行回車(chē)符。
          請(qǐng)求頭域允許客戶(hù)端向服務(wù)器傳遞關(guān)于請(qǐng)求或者關(guān)于客戶(hù)機(jī)的附加信息。請(qǐng)求頭域可能包含下列字段Accept、Accept-Charset、Accept- Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If- Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、Max-Forwards、 Proxy-Authorization、Range、Referer、User-Agent。對(duì)請(qǐng)求頭域的擴(kuò)展要求通訊雙方都支持,如果存在不支持的請(qǐng)求頭域,一般將會(huì)作為實(shí)體頭域處理。
          典型的請(qǐng)求消息:
          GEThttp://class/download.microtool.de:80/somedata.exe
          Host:download.microtool.de
          Accept:*/*
          Pragma:no-cache
          Cache-Control:no-cache
          Referer:http://class/download.microtool.de/
          User-Agent:Mozilla/4.04[en](Win95;I;Nav)
          Range:bytes=554554-
          上例第一行表示HTTP客戶(hù)端(可能是瀏覽器、下載程序)通過(guò)GET方法獲得指定URL下的文件。棕色的部分表示請(qǐng)求頭域的信息,綠色的部分表示通用頭部分。
          Host頭域
          Host頭域指定請(qǐng)求資源的Intenet主機(jī)和端口號(hào),必須表示請(qǐng)求url的原始服務(wù)器或網(wǎng)關(guān)的位置。HTTP/1.1請(qǐng)求必須包含主機(jī)頭域,否則系統(tǒng)會(huì)以400狀態(tài)碼返回。
          Referer頭域
          Referer頭域允許客戶(hù)端指定請(qǐng)求uri的源資源地址,這可以允許服務(wù)器生成回退鏈表,可用來(lái)登陸、優(yōu)化cache等。他也允許廢除的或錯(cuò)誤的連接由于維護(hù)的目的被追蹤。如果請(qǐng)求的uri沒(méi)有自己的uri地址,Referer不能被發(fā)送。如果指定的是部分uri地址,則此地址應(yīng)該是一個(gè)相對(duì)地址。
          Range頭域
          Range頭域可以請(qǐng)求實(shí)體的一個(gè)或者多個(gè)子范圍。例如,
          表示頭500個(gè)字節(jié):bytes=0-499
          表示第二個(gè)500字節(jié):bytes=500-999
          表示最后500個(gè)字節(jié):bytes=-500
          表示500字節(jié)以后的范圍:bytes=500-
          第一個(gè)和最后一個(gè)字節(jié):bytes=0-0,-1
          同時(shí)指定幾個(gè)范圍:bytes=500-600,601-999
          但是服務(wù)器可以忽略此請(qǐng)求頭,如果無(wú)條件GET包含Range請(qǐng)求頭,響應(yīng)會(huì)以狀態(tài)碼206(PartialContent)返回而不是以200(OK)。
          User-Agent頭域
          User-Agent頭域的內(nèi)容包含發(fā)出請(qǐng)求的用戶(hù)信息。

          3、響應(yīng)消息
          響應(yīng)消息的第一行為下面的格式:
          HTTP-Version SP Status-Code SP Reason-Phrase CRLF
          HTTP-Version表示支持的HTTP版本,例如為HTTP/1.1。
          Status-Code是一個(gè)三個(gè)數(shù)字的結(jié)果代碼。
          Reason-Phrase給Status-Code提供一個(gè)簡(jiǎn)單的文本描述。Status-Code主要用于機(jī)器自動(dòng)識(shí)別,Reason-Phrase主要用于幫助用戶(hù)理解。Status-Code的第一個(gè)數(shù)字定義響應(yīng)的類(lèi)別,后兩個(gè)數(shù)字沒(méi)有分類(lèi)的作用。第一個(gè)數(shù)字可能取5個(gè)不同的值:
          1xx:信息響應(yīng)類(lèi),表示接收到請(qǐng)求并且繼續(xù)處理
          2xx:處理成功響應(yīng)類(lèi),表示動(dòng)作被成功接收、理解和接受
          3xx:重定向響應(yīng)類(lèi),為了完成指定的動(dòng)作,必須接受進(jìn)一步處理
          4xx:客戶(hù)端錯(cuò)誤,客戶(hù)請(qǐng)求包含語(yǔ)法錯(cuò)誤或者是不能正確執(zhí)行
          5xx:服務(wù)端錯(cuò)誤,服務(wù)器不能正確執(zhí)行一個(gè)正確的請(qǐng)求
          響應(yīng)頭域允許服務(wù)器傳遞不能放在狀態(tài)行的附加信息,這些域主要描述服務(wù)器的信息和Request-URI進(jìn)一步的信息。響應(yīng)頭域包含Age、 Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW- Authenticate。對(duì)響應(yīng)頭域的擴(kuò)展要求通訊雙方都支持,如果存在不支持的響應(yīng)頭域,一般將會(huì)作為實(shí)體頭域處理。
          典型的響應(yīng)消息:
          HTTP/1.0200OK
          Date:Mon,31Dec200104:25:57GMT
          Server:Apache/1.3.14(Unix)
          Content-type:text/html
          Last-modified:Tue,17Apr200106:46:28GMT
          Etag:"a030f020ac7c01:1e9f"
          Content-length:39725426
          Content-range:bytes554554-40279979/40279980
          上例第一行表示HTTP服務(wù)端響應(yīng)一個(gè)GET方法。棕色的部分表示響應(yīng)頭域的信息,綠色的部分表示通用頭部分,紅色的部分表示實(shí)體頭域的信息。
          Location響應(yīng)頭
          Location響應(yīng)頭用于重定向接收者到一個(gè)新URI地址。
          Server響應(yīng)頭
          Server響應(yīng)頭包含處理請(qǐng)求的原始服務(wù)器的軟件信息。此域能包含多個(gè)產(chǎn)品標(biāo)識(shí)和注釋?zhuān)a(chǎn)品標(biāo)識(shí)一般按照重要性排序。
          4、實(shí)體信息
          請(qǐng)求消息和響應(yīng)消息都可以包含實(shí)體信息,實(shí)體信息一般由實(shí)體頭域和實(shí)體組成。實(shí)體頭域包含關(guān)于實(shí)體的原信息,實(shí)體頭包括Allow、Content-Base、Content-Encoding、Content-Language、 Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。extension-header允許客戶(hù)端定義新的實(shí)體頭,但是這些域可能無(wú)法未接受方識(shí)別。實(shí)體可以是一個(gè)經(jīng)過(guò)編碼的字節(jié)流,它的編碼方式由Content-Encoding或Content-Type定義,它的長(zhǎng)度由Content-Length或Content-Range定義。
          Content-Type實(shí)體頭
          Content-Type實(shí)體頭用于向接收方指示實(shí)體的介質(zhì)類(lèi)型,指定HEAD方法送到接收方的實(shí)體介質(zhì)類(lèi)型,或GET方法發(fā)送的請(qǐng)求介質(zhì)類(lèi)型Content-Range實(shí)體頭
          Content-Range實(shí)體頭
          用于指定整個(gè)實(shí)體中的一部分的插入位置,他也指示了整個(gè)實(shí)體的長(zhǎng)度。在服務(wù)器向客戶(hù)返回一個(gè)部分響應(yīng),它必須描述響應(yīng)覆蓋的范圍和整個(gè)實(shí)體長(zhǎng)度。一般格式:
          Content-Range:bytes-unit SP first-byte-pos - last-byte-pos/entity-legth
          例如,傳送頭500個(gè)字節(jié)次字段的形式:Content-Range:bytes0-499/1234如果一個(gè)http消息包含此節(jié)(例如,對(duì)范圍請(qǐng)求的響應(yīng)或?qū)σ幌盗蟹秶闹丿B請(qǐng)求),Content-Range表示傳送的范圍,Content-Length表示實(shí)際傳送的字節(jié)數(shù)。
          Last-modified實(shí)體頭
          Last-modified實(shí)體頭指定服務(wù)器上保存內(nèi)容的最后修訂時(shí)間。
          5、 HTTP 頭參考(microsoft)
          HTTP 請(qǐng)求和 HTTP 響應(yīng)都使用頭發(fā)送有關(guān) HTTP 消息的信息。頭由一系列行組成,每行都包含名稱(chēng),然后依次是冒號(hào)、空格、值。字段可按任何順序排列。某些頭字段既能用于請(qǐng)求頭也能用于響應(yīng)頭,而另一些頭字段只能用于其中之一。
          許多請(qǐng)求頭字段都允許客戶(hù)端在值部分指定多個(gè)可接受的選項(xiàng),有時(shí)甚至可以對(duì)這些選項(xiàng)的首選項(xiàng)進(jìn)行排名。多個(gè)項(xiàng)以逗號(hào)分隔。例如,客戶(hù)端可以發(fā)送包含 “Content-Encoding: gzip, compress,”的請(qǐng)求頭,表示可以接受各種壓縮類(lèi)型。如果服務(wù)器的響應(yīng)正文使用 gzip 編碼,其響應(yīng)頭中將包含“Content-Encoding: gzip”。
          有些字段可以在單個(gè)頭中出現(xiàn)多次。例如,頭可以有多個(gè)“Warning”字段。
          下表列出了 HTTP 1.1 頭字段。注意:有些頭字段是 MIME 字段。MIME 字段在 Internet Engineering Task Force (IETF) 文檔 RFC 2045 中進(jìn)行了定義,但也可用于 HTTP 1.1 協(xié)議。有關(guān) MIME 和 HTTP 1.1 規(guī)范的詳細(xì)信息,請(qǐng)參閱 IEIF 頁(yè)。
          一般頭字段
          一般頭字段可用于請(qǐng)求消息和響應(yīng)消息。
           名稱(chēng)          示例值
          Cache-Control  "max-age=10"
          Connection    "close"
          Date          "Tue, 11 Jul 2000 18:23:51 GMT"
          Pragma        "no-cache"
          Trailer         "Date"
          Transfer-Encoding"chunked"
          Upgrade       "SHTTP/1.3"
          Via            "HTTP/1.1 Proxy1, HTTP/1.1 Proxy2"
          Warning       "112 Disconnected Operation"
          請(qǐng)求頭字段
          請(qǐng)求頭字段僅用于請(qǐng)求消息。
             名稱(chēng)             示例值
          Accept           "text/html, image/*"
          Accept-Charset   "iso8859-5"
          Accept-Encoding "gzip, compress"
          Accept-Language "en, fr"
          Authorization     [credentials]
          Content-Encoding "gzip"
          Expect           "100-continue"
          From            "user@microsoft.com"
          Host            "www.microsoft.com"
          If-Match         "entity_tag001"
          If-Modified-Since"Tue, 11 Jul 2000 18:23:51 GMT"
          If-None-Match    "entity_tag001"
          If-Range         "entity_tag001" or "Tue, 11 Jul 2000 18:23:51 GMT"
          If-Unmodified-Since"Tue, 11 Jul 2000 18:23:51 GMT"
          Max-Forwards    "3"
          Proxy-Authorization[credentials]
          Range       "bytes=100-599"
          Referer      "http://www.microsoft.com/resources.asp"
          TE          "trailers"
          User-Agent   "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)"
           
          >>請(qǐng)求頭字段的具體含義
          Accept:瀏覽器可接受的MIME類(lèi)型。
          Accept-Charset:瀏覽器可接受的字符集。
          Accept-Encoding:瀏覽器能夠進(jìn)行解碼的數(shù)據(jù)編碼方式,比如gzip。
          Accept-Language:瀏覽器所希望的語(yǔ)言種類(lèi),當(dāng)服務(wù)器能夠提供一種以上的語(yǔ)言版本時(shí)要用到。
          Authorization:授權(quán)信息,通常出現(xiàn)在對(duì)服務(wù)器發(fā)送的WWW-Authenticate頭的應(yīng)答中。
          Connection:表示是否需要持久連接。如果Servlet看到這里的值為“Keep-Alive”,或者看到請(qǐng)求使用的是HTTP 1.1(HTTP 1.1默認(rèn)進(jìn)行持久連接),它就可以利用持久連接的優(yōu)點(diǎn),當(dāng)頁(yè)面包含多個(gè)元素時(shí)(例如Applet,圖片),顯著地減少下載所需要的時(shí)間。要實(shí)現(xiàn)這一點(diǎn), Servlet需要在應(yīng)答中發(fā)送一個(gè)Content-Length頭,最簡(jiǎn)單的實(shí)現(xiàn)方法是:先把內(nèi)容寫(xiě)入ByteArrayOutputStream,然后在正式寫(xiě)出內(nèi)容之前計(jì)算它的大小。
          Content-Length:表示請(qǐng)求消息正文的長(zhǎng)度。
          Cookie:設(shè)置cookie,這是最重要的請(qǐng)求頭信息之一
          From:請(qǐng)求發(fā)送者的email地址,由一些特殊的Web客戶(hù)程序使用,瀏覽器不會(huì)用到它。
          Host:初始URL中的主機(jī)和端口。
          If-Modified-Since:只有當(dāng)所請(qǐng)求的內(nèi)容在指定的日期之后又經(jīng)過(guò)修改才返回它,否則返回304“Not Modified”應(yīng)答。
          Pragma:指定“no-cache”值表示服務(wù)器必須返回一個(gè)刷新后的文檔,即使它是代理服務(wù)器而且已經(jīng)有了頁(yè)面的本地拷貝。
          Referer:包含一個(gè)URL,用戶(hù)從該URL代表的頁(yè)面出發(fā)訪(fǎng)問(wèn)當(dāng)前請(qǐng)求的頁(yè)面。
          User-Agent:瀏覽器類(lèi)型,如果Servlet返回的內(nèi)容與瀏覽器類(lèi)型有關(guān)則該值非常有用。
          UA-Pixels,UA-Color,UA-OS,UA-CPU:由某些版本的IE瀏覽器所發(fā)送的非標(biāo)準(zhǔn)的請(qǐng)求頭,表示屏幕大小、顏色深度、操作系統(tǒng)和CPU類(lèi)型。
          響應(yīng)頭字段
          響應(yīng)頭字段僅用于響應(yīng)消息。
            名稱(chēng)          示例值
          Accept-Ranges  "none"
          Age            "2147483648(2^31)"
          ETag           "b38b9-17dd-367c5dcd"
          Last-Modified    "Tue, 11 Jul 2000 18:23:51 GMT"
          Location        "http://localhost/redirecttarget.asp"
          Proxy-Authenticate[challenge]
          Retry-After      "Tue, 11 Jul 2000 18:23:51 GMT" or "60"
          Server         "Microsoft-IIS/5.0"
          Vary            "Date"
          WWW-Authenticate[challenge]
          實(shí)體頭字段
          實(shí)體頭字段可以用于請(qǐng)求消息或響應(yīng)消息。實(shí)體頭字段中包含消息實(shí)體正文的有關(guān)信息,如使用的編碼格式。
             名稱(chēng)            示例值
          Allow              "GET, HEAD"
          Content-Encoding   "gzip"
          Content-Language  "en"
          Content-Length     "8445"
          Content-Location   "http://localhost/page.asp"
          Content-MD5       [md5-digest]
          Content-Range     "bytes 2543-4532/7898"
          Content-Type      "text/html"
          Expires           "Tue, 11 Jul 2000 18:23:51 GMT"
          Last-Modified      "Tue, 11 Jul 2000 18:23:51 GMT"
          >>實(shí)體頭字段的具體含義
          Allow服務(wù)器支持哪些請(qǐng)求方法(如GET、POST等)。
          Content-Encoding文檔的編碼(Encode)方法。只有在解碼之后才可以得到Content-Type頭指定的內(nèi)容類(lèi)型。利用gzip壓縮文檔能夠顯著地減少HTML文檔的下載時(shí)間。Java的GZIPOutputStream可以很方便地進(jìn)行g(shù)zip壓縮,但只有Unix上的Netscape和Windows上的IE 4、IE 5才支持它。
          Content-Length表示內(nèi)容長(zhǎng)度。只有當(dāng)瀏覽器使用持久HTTP連接時(shí)才需要這個(gè)數(shù)據(jù)。
          Content-Type表示后面的文檔屬于什么MIME類(lèi)型。Servlet默認(rèn)為text/plain,但通常需要顯式地指定為text/html。
          Date當(dāng)前的GMT時(shí)間。你可以用setDateHeader來(lái)設(shè)置這個(gè)頭以避免轉(zhuǎn)換時(shí)間格式的麻煩。
          Expires應(yīng)該在什么時(shí)候認(rèn)為文檔已經(jīng)過(guò)期,從而不再緩存它?
          Last-Modified文檔的最后改動(dòng)時(shí)間??蛻?hù)可以通過(guò)If-Modified-Since請(qǐng)求頭提供一個(gè)日期,該請(qǐng)求將被視為一個(gè)條件GET,只有改動(dòng)時(shí)間遲于指定時(shí)間的文檔才會(huì)返回,否則返回一個(gè)304(Not Modified)狀態(tài)。
          Location表示客戶(hù)應(yīng)當(dāng)?shù)侥睦锶ヌ崛∥臋n。Location通常不是直接設(shè)置的,而是通過(guò)HttpServletResponse的sendRedirect方法,該方法同時(shí)設(shè)置狀態(tài)代碼為302。
          Refresh表示瀏覽器應(yīng)該在多少時(shí)間之后刷新文檔,以秒計(jì)。除了刷新當(dāng)前文檔之外,你還可以通過(guò)setHeader("Refresh", "5; URL=http://host/path")讓瀏覽器讀取指定的頁(yè)面。
          注意這種功能通常是通過(guò)設(shè)置HTML頁(yè)面HEAD區(qū)的<META. HTTP-EQUIV="Refresh" C>實(shí)現(xiàn),這是因?yàn)?,自?dòng)刷新或重定向?qū)τ谀切┎荒苁褂肅GI或Servlet的HTML編寫(xiě)者十分重要。但是,對(duì)于Servlet來(lái)說(shuō),直接設(shè)置 Refresh頭更加方便。
          注意Refresh的意義是“N秒之后刷新本頁(yè)面或訪(fǎng)問(wèn)指定頁(yè)面”,而不是“每隔N秒刷新本頁(yè)面或訪(fǎng)問(wèn)指定頁(yè)面 ”。因此,連續(xù)刷新要求每次都發(fā)送一個(gè)Refresh頭,而發(fā)送204狀態(tài)代碼則可以阻止瀏覽器繼續(xù)刷新,不管是使用Refresh頭還是<META. HTTP-EQUIV="Refresh" ...>。
          注意Refresh頭不屬于HTTP 1.1正式規(guī)范的一部分,而是一個(gè)擴(kuò)展,但Netscape和IE都支持它。
          請(qǐng)求頭示例
          以下是 HTTP 請(qǐng)求的簡(jiǎn)單示例。
          GET /articles/news/today.asp HTTP/1.1
          Accept: */*
          Accept-Language: en-us
          Connection: Keep-Alive
          Host: localhost
          Referer:http://localhost/links.asp
          User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
          Accept-Encoding: gzip, deflate
          該請(qǐng)求具有請(qǐng)求行,其中包括方法 (GET)、資源路徑 (/articles/news/today.asp) 和 HTTP 版本 (HTTP/1.1)。由于該請(qǐng)求沒(méi)有正文,故所有請(qǐng)求行后面的內(nèi)容都是頭的一部分。緊接著頭之后是一個(gè)空行,表示頭已結(jié)束。
          響應(yīng)頭示例
          Web 服務(wù)器可以通過(guò)多種方式響應(yīng)前一個(gè)請(qǐng)求。假設(shè)文件是可以訪(fǎng)問(wèn)的,并且用戶(hù)具有查看該文件的權(quán)限,則響應(yīng)類(lèi)似于:
          HTTP/1.1 200 OK
          Server: Microsoft-IIS/5.0
          Date: Thu, 13 Jul 2000 05:46:53 GMT
          Content-Length: 2291
          Content-Type: text/html
          Set-Cookie: ASPSESSIONIDQQGGGNCG=LKLDFFKCINFLDMFHCBCBMFLJ; path=/
          Cache-control: private
          ...
          響應(yīng)的第一行稱(chēng)為狀態(tài)行。它包含響應(yīng)所用的 HTTP 版本、狀態(tài)編碼 (200) 和原因短語(yǔ)。示例中包含一個(gè)頭,其中具有五個(gè)字段,接著是一個(gè)空行(回車(chē)和換行符),然后是響應(yīng)正文的頭兩行。
          有關(guān)HTTP頭完整、詳細(xì)的說(shuō)明,請(qǐng)參見(jiàn)http://www.w3.org/Protocols/的HTTP規(guī)范。
           
          附錄:HTTP協(xié)議狀態(tài)碼的含義
            狀態(tài)代碼 狀態(tài)信息 含義
          100 Continue初始的請(qǐng)求已經(jīng)接受,客戶(hù)應(yīng)當(dāng)繼續(xù)發(fā)送請(qǐng)求的其余部分。(HTTP 1.1新)
          101 Switching Protocols服務(wù)器將遵從客戶(hù)的請(qǐng)求轉(zhuǎn)換到另外一種協(xié)議(HTTP 1.1新
          200 OK一切正常,對(duì)GET和POST請(qǐng)求的應(yīng)答文檔跟在后面。
          201 Created服務(wù)器已經(jīng)創(chuàng)建了文檔,Location頭給出了它的URL。
          202 Accepted已經(jīng)接受請(qǐng)求,但處理尚未完成。
          203 Non-Authoritative Information文檔已經(jīng)正常地返回,但一些應(yīng)答頭可能不正確,因?yàn)槭褂玫氖俏臋n的拷貝(HTTP 1.1新)。
          204 No Content沒(méi)有新文檔,瀏覽器應(yīng)該繼續(xù)顯示原來(lái)的文檔。
          205 Reset Content沒(méi)有新的內(nèi)容,但瀏覽器應(yīng)該重置它所顯示的內(nèi)容。用來(lái)強(qiáng)制瀏覽器清除表單輸入內(nèi)容(HTTP 1.1新)。
          206 Partial Content客戶(hù)發(fā)送了一個(gè)帶有Range頭的GET請(qǐng)求,服務(wù)器完成了它(HTTP 1.1新)。
          300 Multiple Choices客戶(hù)請(qǐng)求的文檔可以在多個(gè)位置找到,這些位置已經(jīng)在返回的文檔內(nèi)列出。如果服務(wù)器要提出優(yōu)先選擇,則應(yīng)該在Location應(yīng)答頭指明。
          301 Moved Permanently客戶(hù)請(qǐng)求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應(yīng)該自動(dòng)地訪(fǎng)問(wèn)新的URL。
          302 Found類(lèi)似于301,但新的URL應(yīng)該被視為臨時(shí)性的替代,而不是永久性的。注意,在HTTP1.0中對(duì)應(yīng)的狀態(tài)信息是“Moved Temporatily”,出現(xiàn)該狀態(tài)代碼時(shí),瀏覽器能夠自動(dòng)訪(fǎng)問(wèn)新的URL,因此它是一個(gè)很有用的狀態(tài)代碼。注意這個(gè)狀態(tài)代碼有時(shí)候可以和301替換使用。例如,如果瀏覽器錯(cuò)誤地請(qǐng)求http://host/~user(缺少了后面的斜杠),有的服務(wù)器返回301,有的則返回302。嚴(yán)格地說(shuō),我們只能假定只有當(dāng)原來(lái)的請(qǐng)求是GET時(shí)瀏覽器才會(huì)自動(dòng)重定向。請(qǐng)參見(jiàn)307。
          303 See Other類(lèi)似于301/302,不同之處在于,如果原來(lái)的請(qǐng)求是POST,Location頭指定的重定向目標(biāo)文檔應(yīng)該通過(guò)GET提取(HTTP 1.1新)。
          304 Not Modified客戶(hù)端有緩沖的文檔并發(fā)出了一個(gè)條件性的請(qǐng)求(一般是提供If-Modified-Since頭表示客戶(hù)只想比指定日期更新的文檔)。服務(wù)器告訴客戶(hù),原來(lái)緩沖的文檔還可以繼續(xù)使用。
          305 Use Proxy客戶(hù)請(qǐng)求的文檔應(yīng)該通過(guò)Location頭所指明的代理服務(wù)器提?。℉TTP 1.1新)。
          307 Temporary Redirect和302(Found)相同。許多瀏覽器會(huì)錯(cuò)誤地響應(yīng)302應(yīng)答進(jìn)行重定向,即使原來(lái)的請(qǐng)求是POST,即使它實(shí)際上只能在POST請(qǐng)求的應(yīng)答是303時(shí)才能重定向。由于這個(gè)原因,HTTP 1.1新增了307,以便更加清除地區(qū)分幾個(gè)狀態(tài)代碼:當(dāng)出現(xiàn)303應(yīng)答時(shí),瀏覽器可以跟隨重定向的GET和POST請(qǐng)求;如果是307應(yīng)答,則瀏覽器只能跟隨對(duì)GET請(qǐng)求的重定向。(HTTP 1.1新)
          400 Bad Request請(qǐng)求出現(xiàn)語(yǔ)法錯(cuò)誤。
          401 Unauthorized客戶(hù)試圖未經(jīng)授權(quán)訪(fǎng)問(wèn)受密碼保護(hù)的頁(yè)面。應(yīng)答中會(huì)包含一個(gè)WWW-Authenticate頭,瀏覽器據(jù)此顯示用戶(hù)名字/密碼對(duì)話(huà)框,然后在填寫(xiě)合適的Authorization頭后再次發(fā)出請(qǐng)求。
          403 Forbidden資源不可用。服務(wù)器理解客戶(hù)的請(qǐng)求,但拒絕處理它。通常由于服務(wù)器上文件或目錄的權(quán)限設(shè)置導(dǎo)致。
          404 Not Found無(wú)法找到指定位置的資源。這也是一個(gè)常用的應(yīng)答,
          405 Method Not Allowed請(qǐng)求方法(GET、POST、HEAD、DELETE、PUT、TRACE等)對(duì)指定的資源不適用。(HTTP 1.1新)
          406 Not Acceptable指定的資源已經(jīng)找到,但它的MIME類(lèi)型和客戶(hù)在A(yíng)ccpet頭中所指定的不兼容(HTTP 1.1新)。
          407 Proxy Authentication Required類(lèi)似于401,表示客戶(hù)必須先經(jīng)過(guò)代理服務(wù)器的授權(quán)。(HTTP 1.1新)
          408 Request Timeout在服務(wù)器許可的等待時(shí)間內(nèi),客戶(hù)一直沒(méi)有發(fā)出任何請(qǐng)求??蛻?hù)可以在以后重復(fù)同一請(qǐng)求。(HTTP 1.1新)
          409 Conflict通常和PUT請(qǐng)求有關(guān)。由于請(qǐng)求和資源的當(dāng)前狀態(tài)相沖突,因此請(qǐng)求不能成功。(HTTP 1.1新)
          410 Gone所請(qǐng)求的文檔已經(jīng)不再可用,而且服務(wù)器不知道應(yīng)該重定向到哪一個(gè)地址。它和404的不同在于,返回407表示文檔永久地離開(kāi)了指定的位置,而404表示由于未知的原因文檔不可用。(HTTP 1.1新)
          411 Length Required服務(wù)器不能處理請(qǐng)求,除非客戶(hù)發(fā)送一個(gè)Content-Length頭。(HTTP 1.1新)
          412 Precondition Failed請(qǐng)求頭中指定的一些前提條件失?。℉TTP 1.1新)。
          413 Request Entity Too Large目標(biāo)文檔的大小超過(guò)服務(wù)器當(dāng)前愿意處理的大小。如果服務(wù)器認(rèn)為自己能夠稍后再處理該請(qǐng)求,則應(yīng)該提供一個(gè)Retry-After頭(HTTP 1.1新)。
          414 Request URI Too LongURI太長(zhǎng)(HTTP 1.1新)。
          416 Requested Range Not Satisfiable服務(wù)器不能滿(mǎn)足客戶(hù)在請(qǐng)求中指定的Range頭。(HTTP 1.1新)
          500 Internal Server Error服務(wù)器遇到了意料不到的情況,不能完成客戶(hù)的請(qǐng)求。
          501 Not Implemented服務(wù)器不支持實(shí)現(xiàn)請(qǐng)求所需要的功能。例如,客戶(hù)發(fā)出了一個(gè)服務(wù)器不支持的PUT請(qǐng)求。
          502 Bad Gateway服務(wù)器作為網(wǎng)關(guān)或者代理時(shí),為了完成請(qǐng)求訪(fǎng)問(wèn)下一個(gè)服務(wù)器,但該服務(wù)器返回了非法的應(yīng)答。
          503 Service Unavailable服務(wù)器由于維護(hù)或者負(fù)載過(guò)重未能應(yīng)答。
          504 Gateway Timeout由作為代理或網(wǎng)關(guān)的服務(wù)器使用,表示不能及時(shí)地從遠(yuǎn)程服務(wù)器獲得應(yīng)答。(HTTP 1.1新)
          505 HTTP Version Not Supported服務(wù)器不支持請(qǐng)求中所指明的HTTP版本

          posted @ 2010-01-08 09:15 二胡 閱讀(270) | 評(píng)論 (0)編輯 收藏

          JQuery作者John Resig的講座
          http://v.youku.com/v_show/id_XMjQzMDY4NDQ=.html

          posted @ 2009-12-23 15:04 二胡 閱讀(157) | 評(píng)論 (0)編輯 收藏

          轉(zhuǎn) http://blog.youmila.com/?p=513

          關(guān)于跨域名問(wèn)題還是問(wèn)題么,這方面的解決實(shí)踐非常多,今天我就舊話(huà)重提把我所知道的通過(guò)幾個(gè)應(yīng)用場(chǎng)景來(lái)分別總結(jié)一下

          先說(shuō)明一點(diǎn):我說(shuō)的某某域名在您的控制下的意思是這個(gè)域名下的網(wǎng)頁(yè)由您來(lái)負(fù)責(zé)開(kāi)發(fā)內(nèi)部的JavaScript
          場(chǎng)景一:將bbs.xxx.com的頁(yè)面用iframe嵌入到www.xxx.com的中,如何在iframe內(nèi)外使用js通信
          一級(jí)域名都是xxx.com 這個(gè)域名一定是在您的控制下,所以你只要在兩個(gè)頁(yè)面中同時(shí)升級(jí)域名即可
          在父窗口和iframe內(nèi)部分別加上js語(yǔ)句:document.domain=”xxx.com”;
          之后2個(gè)頁(yè)面就等于在同一域名下,通過(guò)window.parent oIframe.contentDocument就可以相互訪(fǎng)問(wèn),進(jìn)行無(wú)障礙的JS通信
          在新浪、淘寶等很多頁(yè)面都能找到這樣的語(yǔ)句。不過(guò)document.domain不可以隨便指定,只能向上升級(jí),從bbs.xxx.com升級(jí)到y(tǒng)yy.com肯定會(huì)出錯(cuò)

          場(chǎng)景二:將www.yyy.com的頁(yè)面用iframe嵌入到www.xxx.com的中,兩個(gè)域名都在您的控制下,如何在iframe內(nèi)外進(jìn)行一定的數(shù)據(jù)交流
          你可以通過(guò)相互改變hash值的方式來(lái)進(jìn)行一些數(shù)據(jù)的通信

          這里的實(shí)現(xiàn)基于如下技術(shù)要點(diǎn):
          1、父窗口通過(guò)改變子窗口的src中的hash值把一部分信息傳入,如果src只有hash部分改變,那么子窗口是不會(huì)重新載入的。
          2、子窗口可以重寫(xiě)父窗口的location.href,但是注意這里子窗口無(wú)法讀取而只能重寫(xiě)location.href所以要求前提是您控制兩個(gè)域名,知道當(dāng)前父窗口的location.href是什么并寫(xiě)在子窗口內(nèi),這樣通過(guò)parent.location.href = “已知的父窗口的href”+”#”+hash。這樣父窗口只有hash改變也不會(huì)重載。
          3、上面兩步分別做到了兩個(gè)窗口之間的無(wú)刷新數(shù)據(jù)通知,那么下面的來(lái)說(shuō)如何感知數(shù)據(jù)變化。標(biāo)準(zhǔn)中沒(méi)有相關(guān)規(guī)定,所以當(dāng)前的任意瀏覽器遇到location.hash變化都不會(huì)觸發(fā)任何javaScript事件,也就是說(shuō)您要自己寫(xiě)監(jiān)聽(tīng)函數(shù)來(lái)監(jiān)視loaction.hash的值的變化。做法是通過(guò)setTimeout或者setInterval來(lái)寫(xiě)一個(gè)監(jiān)聽(tīng)函數(shù)每20-100ms查看一下hash是否變化,如果變化了驅(qū)動(dòng)js根據(jù)新的數(shù)據(jù)做想做的事情。

          這種實(shí)現(xiàn)的一些分析:
          1、信息通道是雙向的,當(dāng)然會(huì)兼容單向,如果只是父窗口向子窗口通知數(shù)據(jù),只需要子窗口寫(xiě)hash監(jiān)聽(tīng),反之亦然。
          2、局限性也是頗大,因?yàn)檫@種通信的前提是雙方知道對(duì)方的location.href。如果父窗口帶有動(dòng)態(tài)的location.search也就是查詢(xún)參數(shù),那么子窗口的處理上就比較困難,需要把父窗口的location.search作為傳遞信息的一部分告知子窗口。
          3、另外的困擾會(huì)有瀏覽器帶給你,IE之外的瀏覽器遇到hash的改變會(huì)記錄歷史,這樣你在處理前進(jìn)后退的時(shí)候會(huì)非常頭疼

          場(chǎng)景三:將www.yyy.com的頁(yè)面用iframe嵌入到www.xxx.com的中,只有被嵌入的yyy.com在您的控制下,如何在iframe內(nèi)外進(jìn)行一定的交流
          真實(shí)場(chǎng)景:google adsence的一個(gè)需求,你希望google發(fā)現(xiàn)您的頁(yè)面不能匹配出相關(guān)性非常好的按點(diǎn)擊付費(fèi)廣告時(shí),你希望google的廣告iframe能夠隱藏。
          google的廣告iframe在google域下顯然不能把自己隱藏掉,那么怎么辦呢?
          1、google會(huì)提供給你一個(gè)html頁(yè)面
          2、您將這個(gè)頁(yè)面放置在您的域名下,并告訴google它的位置
          3、當(dāng)google發(fā)現(xiàn)沒(méi)有很好的廣告時(shí),會(huì)將子窗口的loaction重定向到您的那個(gè)頁(yè)面下,這樣您的頁(yè)面因?yàn)橥蛎涂梢栽L(fǎng)問(wèn)父頁(yè)面來(lái)隱藏自己了
          是不是很巧的方法?

          場(chǎng)景四:您是內(nèi)容發(fā)布商,如何改造接口,讓其他域名下的頁(yè)面可以從瀏覽器端出發(fā)獲得您的數(shù)據(jù)
          我們知道ajax的xmlHttpRequest()說(shuō)到底是一個(gè)無(wú)刷新請(qǐng)求服務(wù)器數(shù)據(jù)的輔助工具,但是xmlHttpRequest并不能跨域名請(qǐng)求數(shù)據(jù),在某些情況下成了極大的限制。
          但是我們?nèi)绻ㄟ^(guò)其他方式完成無(wú)刷新請(qǐng)求數(shù)據(jù)不也可以么,我們用Dom方法操作動(dòng)態(tài)JS腳本請(qǐng)求來(lái)做這件事。
              //創(chuàng)建一個(gè)腳本節(jié)點(diǎn)
              var oScript = document.createElement(’script’);
              //指定腳本src src可以指向任意域名
              //注意src不再指向靜態(tài)js,而是帶著查詢(xún)參數(shù)指向一個(gè)動(dòng)態(tài)腳本廣播服務(wù)。
              oScript.src = “http://yyy.com/query.php?”+yourQueryString;   
              //如果指定了charset 同時(shí)還可以解決xmlHttpRequest另一大困擾 亂碼問(wèn)題                                                                                                                           
              //oScript.charset = “utf-8″;
              //通過(guò)Dom操作把這個(gè)新的節(jié)點(diǎn)加入到文檔當(dāng)中                                 
              document.getElementsByTagName(”head”)[0].appendChild(oScript);

          這樣只要query.php的輸出是可執(zhí)行的javaScript腳本,比如:djsCallBack({jsondata});
          當(dāng)他從服務(wù)器返回后就會(huì)自動(dòng)執(zhí)行,你可以方便的用json方式來(lái)做數(shù)據(jù)傳遞了。
          要注意,您的腳本請(qǐng)求最好帶上時(shí)間戳,避免瀏覽器緩存造成取回?cái)?shù)據(jù)實(shí)時(shí)性下降。

          如果您是數(shù)據(jù)提供者,您可以要求數(shù)據(jù)索取者在查詢(xún)參數(shù)中提供回調(diào)函數(shù)名,比如query.php?callback=myDataHandler&key=…?
          這樣您就可以根據(jù)參數(shù)來(lái)提供給他myDataHandler({jsondata}),這樣不同的數(shù)據(jù)索取者都會(huì)得到自定義的正確的異步回調(diào)。

          場(chǎng)景五:通過(guò)后端程序語(yǔ)言,為了跨域名而做各自的后臺(tái)數(shù)據(jù)抓取轉(zhuǎn)化服務(wù),比如php curl,YAHOO  CHINA NCP就是用這種方案。

          場(chǎng)景六:通過(guò)flash proxy,因?yàn)閒lash的跨域調(diào)用可以通過(guò)crossdomain.xml和security.allowdomain(’*')文件實(shí)現(xiàn),而js又可以和flash進(jìn)行通信,所以js完全可以借用flash

                         實(shí)現(xiàn)js跨域通信。

           
          總結(jié)總結(jié)
          第一種場(chǎng)景,相應(yīng)的處理辦法有這非常好的效果,可以說(shuō)完全解決了問(wèn)題。
          第二種場(chǎng)景,相應(yīng)的處理辦法具有一定的跨域數(shù)據(jù)交流功效,具有相當(dāng)大的局限,并不適合在復(fù)雜業(yè)務(wù)流程中應(yīng)用,實(shí)際上我也確實(shí)也沒(méi)看到過(guò)基于此的大規(guī)模應(yīng)用。
          第三種場(chǎng)景,相應(yīng)的處理辦法比較巧妙,雖然redirect之后就不干你什么事了,但如果你是google一樣面向眾多域名的內(nèi)容提供商,也是個(gè)不錯(cuò)的解決思路。
          第四種場(chǎng)景,相應(yīng)的處理辦法非常強(qiáng)大,對(duì)比Ajax可以看到,跨域名沒(méi)問(wèn)題,無(wú)刷新沒(méi)問(wèn)題,本身又是異步的,JSON比xml快的多,同時(shí)解決亂碼問(wèn)題,只是請(qǐng)求都是Get方式的,不能做Post方式的請(qǐng)求。多一種武器自然可以從容選擇了。

          第五種場(chǎng)景,處理很方便,也很實(shí)用。

          第六種場(chǎng)景,需要一定的flash基礎(chǔ)哈,作用當(dāng)然非常強(qiáng)大。

          posted @ 2009-12-16 17:51 二胡 閱讀(1098) | 評(píng)論 (0)編輯 收藏


          The Java Community Process(SM) Program

          轉(zhuǎn) http://blog.csdn.net/sergeycao/archive/2009/02/04/3861560.aspx

          J2ME 配置規(guī)范
          =========
          JSR 30 --- Connected Limited Device Configuration 1.0
          http://jcp.org/en/jsr/detail?id=30

          JSR 139 --- Connected Limited Device Configuration 1.1
          http://jcp.org/en/jsr/detail?id=139

          JSR 36 --- Connected Device Configuration 1.0
          http://jcp.org/en/jsr/detail?id=36

          JSR 218 --- Connected Device Configuration 1.1
          http://jcp.org/en/jsr/detail?id=218

          ========================================
          1、JSR 30、JSR139 簡(jiǎn)介 及它們之間的關(guān)系
          CLDC全稱(chēng)為Connected Limited Device Configuration(有限連接設(shè)備配置),
          分別對(duì)應(yīng)了JSR 30和JSR 139兩個(gè)JSR。

          CLDC專(zhuān)門(mén)針對(duì)移動(dòng)電話(huà)、閱讀器和主流的PDA(個(gè)人數(shù)字助理)定義了一組基礎(chǔ)的應(yīng)用程序編程接口和虛擬機(jī)標(biāo)準(zhǔn),
          和簡(jiǎn)表文件一起配合,就構(gòu)成了一套實(shí)用的Java平臺(tái),可以為內(nèi)存不多、處理器性能有限、圖形能力一般的設(shè)備開(kāi)發(fā)應(yīng)用程序。

          JSR 30 CLDC 1.0 提供了基本的語(yǔ)言類(lèi)庫(kù),主要是定義了JAVA編程語(yǔ)言的一套子集,包括虛擬機(jī)的功能上,網(wǎng)絡(luò)支持,安全安裝以及其他核心API上都是子集和全集的關(guān)系,主要目標(biāo)是某類(lèi)嵌入式的消費(fèi)類(lèi)產(chǎn)品。由于不支持浮點(diǎn)運(yùn)算,可以用CLDC1.1替代CLDC1.0;

          JSR 139 CLDC 1.1是CLDC 1.0技術(shù)標(biāo)準(zhǔn)的修訂版本,包含了一些新的特性比如浮點(diǎn)運(yùn)算和弱引用等方面的支持,和CLDC-1.0是完全向后兼容的;

          2、JSR 36、JSR218 簡(jiǎn)介 及 它們之間的關(guān)系
          JSR 36 CDC (Connected Device Configuration,連接設(shè)備配置)。CDC的目標(biāo)設(shè)備較CLDC具有更大的內(nèi)存、更快速的處理器、更穩(wěn)定的電源,以及更出色的網(wǎng)絡(luò)連接能力。
          CDC主要應(yīng)用在工業(yè)控制器、高端PDA、電視機(jī)頂盒及車(chē)載娛樂(lè)與導(dǎo)航系統(tǒng)上。

          JSR 218 是在JSR 36基礎(chǔ)上進(jìn)行補(bǔ)充,并兼容JSR 36.

          J2ME 簡(jiǎn)表規(guī)范
          =========
          CDC 簡(jiǎn)表規(guī)范
          ------------------
          JSR 46 --- Foundation Profile
          http://jcp.org/en/jsr/detail?id=46

          JSR 129 --- Personal Basis Profile Specification
          http://jcp.org/en/jsr/detail?id=129

          JSR 62 --- Personal Profile Specification
          http://jcp.org/en/jsr/detail?id=62

          JSR 219 --- Foundation Profile 1.1
          http://jcp.org/en/jsr/detail?id=219

          JSR 217 --- Personal Basis Profile 1.1
          http://jcp.org/en/jsr/detail?id=217

          JSR 216 --- Personal Profile 1.1
          http://jcp.org/en/jsr/detail?id=216

          CLDC 簡(jiǎn)表規(guī)范
          --------------------
          JSR 37 --- Mobile Information Device Profile 1.0
          http://jcp.org/en/jsr/detail?id=37

          JSR 118 --- Mobile Information Device Profile 2.0
          http://jcp.org/en/jsr/detail?id=118

          JSR 195 --- Information Module Profile
          http://jcp.org/en/jsr/detail?id=195

          JSR 228 --- Information Module Profile 2.0)
          http://jcp.org/en/jsr/detail?id=228


          廠(chǎng)商可選包(Optional Packages)
          -----------------------------------------

          CDC設(shè)備廠(chǎng)商可選包
          ...........................
          JSR 66 --- RMI Optional Package Specification Version 1.0
          http://jcp.org/en/jsr/detail?id=66

          JSR 80 --- Java USB API
          http://jcp.org/en/jsr/detail?id=80

          JSR 113 --- Java Speech API 2.0
          http://jcp.org/en/jsr/detail?id=113

          JSR 169 --- JDBC Optional Package for CDC/Foundation Profile
          http://jcp.org/en/jsr/detail?id=169

          JSR 209 --- Advanced Graphics and User Interface Optional Package for the J2ME Platform
          http://jcp.org/en/jsr/detail?id=209

          CLDC設(shè)備廠(chǎng)商可選包
          ...........................
          JSR 75 --- PDA Optional Packages for the J2ME Platform
          http://jcp.org/en/jsr/detail?id=75

          JSR 82 --- Java APIs for Bluetooth
          http://jcp.org/en/jsr/detail?id=82

          JSR 120 --- Wireless Messaging API
          http://jcp.org/en/jsr/detail?id=120

          JSR 135 --- Mobile Media API
          http://jcp.org/en/jsr/detail?id=135

          JSR 172 --- J2ME Web Services Specification
          http://jcp.org/en/jsr/detail?id=172

          JSR 177 --- Security and Trust Services API for J2ME
          http://jcp.org/en/jsr/detail?id=177

          JSR 179 --- Location API for J2ME
          http://jcp.org/en/jsr/detail?id=179

          JSR 180 --- SIP API for J2ME
          http://jcp.org/en/jsr/detail?id=180

          JSR 184 --- Mobile 3D Graphics API for J2ME
          http://jcp.org/en/jsr/detail?id=184

          JSR 190 --- Event Tracking API for J2ME
          http://jcp.org/en/jsr/detail?id=190

          JSR 205 --- Wireless Messaging API 2.0
          http://jcp.org/en/jsr/detail?id=205

          JSR 211 --- Content Handler API
          http://jcp.org/en/jsr/detail?id=211

          JSR 226 --- Scalable 2D Vector Graphics API for J2ME
          http://jcp.org/en/jsr/detail?id=226

          JSR 229 --- Payment API
          http://jcp.org/en/jsr/detail?id=229

          JSR 230 --- Data Sync API
          http://jcp.org/en/jsr/detail?id=230

          運(yùn)行環(huán)境規(guī)范
          ..................
          JSR 185 --- JavaTM Technology for the Wireless Industry
          http://jcp.org/en/jsr/detail?id=185

           

          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/sergeycao/archive/2009/02/04/3861560.aspx

          posted @ 2009-12-15 09:32 二胡 閱讀(1219) | 評(píng)論 (0)編輯 收藏

               摘要: 我google一下,已有人翻譯了此文.比我翻譯的要好!是譯言站翻譯的 見(jiàn)url: http://www.yeeyan.com/articles/view/92135/47626/dz 原文見(jiàn):http://code.google.com/intl/zh-CN/speed/articles/optimizing-javascript.html 不合適的地方,請(qǐng)大家指出來(lái)!希望對(duì)你有用! ...  閱讀全文
          posted @ 2009-12-14 21:43 二胡 閱讀(1927) | 評(píng)論 (0)編輯 收藏

          轉(zhuǎn) http://war.news.163.com/09/1211/18/5Q98H5TU00011232.html

          國(guó)家戰(zhàn)略是一個(gè)范軍事話(huà)題,并非只有軍事家才能成為戰(zhàn)略精英。在這一點(diǎn)上,美國(guó)培養(yǎng)未來(lái)的國(guó)家決策人才的經(jīng)驗(yàn)就值得中國(guó)反思。

          前美國(guó)國(guó)防部長(zhǎng)拉姆斯菲爾德

          原文作者:于鐵軍(北京大學(xué)國(guó)際關(guān)系學(xué)院副教授)

          美國(guó)的精英比較有活力,給人一種生機(jī)勃勃的感覺(jué),因?yàn)樗麄兏⒅厝姘l(fā)展,更注重訓(xùn)練。反觀(guān)國(guó)內(nèi)精英,大多比較文弱,缺乏朝氣,口號(hào)、程式,大話(huà)、空話(huà)很多,行動(dòng)力、執(zhí)行力卻比較差。各種原因當(dāng)然很多,其中重要之一是國(guó)內(nèi)的精英培養(yǎng)機(jī)制有問(wèn)題。在這方面,我們應(yīng)該好好地研究一下美國(guó)培養(yǎng)精英的做法。如果我們對(duì)精英培養(yǎng)機(jī)制和培養(yǎng)內(nèi)容不重視,中國(guó)要實(shí)現(xiàn)真正的崛起,難度是很大的。

          什么是精英

          精英,或者稱(chēng)戰(zhàn)略性人才,是個(gè)很值得討論的題目。這里首先需要回答一個(gè)問(wèn)題,什么是精英?精英,一定是有所擔(dān)當(dāng)?shù)娜?,有社?huì)責(zé)任感的人,而絕不能是蠅營(yíng)狗茍之輩。真正的精英,他身上一定帶有一些利他的東西,不是完全為了自己。這是精英的一個(gè)必備條件。

          以美國(guó)外交和國(guó)家安全領(lǐng)域的情況為例來(lái)做具體的說(shuō)明,哈爾伯斯坦的《出類(lèi)拔萃之輩》、艾薩克森和托馬斯的《美國(guó)智囊六人傳》,以及詹姆斯·曼的《布什戰(zhàn)爭(zhēng)內(nèi)閣史》等傳記作品。這些書(shū)中對(duì)艾奇遜、哈里曼、凱南、麥克羅伊、洛維特、邦迪兄弟、麥克納馬拉、羅斯托、拉姆斯菲爾德、鮑威爾、賴(lài)斯、沃爾福威茨、阿米蒂奇等美國(guó)外交和國(guó)家安全界精英的成長(zhǎng)及活動(dòng),有惟妙惟肖的描寫(xiě),有助于增加我們對(duì)美國(guó)精英養(yǎng)成方式的感性認(rèn)識(shí)。掩卷之余,你可以對(duì)書(shū)中人物做出或褒或貶的評(píng)價(jià),但你一般不會(huì)否認(rèn),這是一批有理想、有追求、有能力并且關(guān)心公共事務(wù)的精英,美國(guó)這個(gè)國(guó)家的大政方針為他們所引領(lǐng)。

          叱咤風(fēng)云的美國(guó)前國(guó)務(wù)卿賴(lài)斯

          美國(guó)培養(yǎng)精英的一個(gè)重要理念:尚武精神與體育運(yùn)動(dòng)

          具體到精英的培養(yǎng),大學(xué)里面的培養(yǎng)機(jī)制還是比較關(guān)鍵的。當(dāng)然我們不否認(rèn)有草根出身的英雄,而且國(guó)人還經(jīng)常說(shuō),英雄莫問(wèn)來(lái)路。但社會(huì)發(fā)展到現(xiàn)在這個(gè)階段,應(yīng)該說(shuō)大部分人才還是經(jīng)過(guò)大學(xué)的正規(guī)教育訓(xùn)練出來(lái)的。美國(guó)的高等教育制度十分復(fù)雜,不像我們那樣有一個(gè)統(tǒng)一的體制。從精英大學(xué)到普通大學(xué),從研究性大學(xué)到小型的文理學(xué)院,從州立大學(xué)到私立大學(xué),各種類(lèi)型,應(yīng)有盡有。不管是什么樣的大學(xué),從學(xué)生錄取方面來(lái)看,美國(guó)比我們更重視學(xué)生的綜合素質(zhì)和發(fā)展?jié)摿?。除了SAT、GRE和GMAT這樣的標(biāo)準(zhǔn)化考試之外,推薦信、研究計(jì)劃、習(xí)作、課外活動(dòng)等也都是很重要的指標(biāo),這無(wú)疑有助于引導(dǎo)和鼓勵(lì)學(xué)生全面發(fā)展。

          騎自行車(chē)的小布什,體育運(yùn)動(dòng)愛(ài)好在美國(guó)高官中相當(dāng)普及

          中國(guó)從小學(xué)就開(kāi)始教育要德、智、體全面發(fā)展,但遺憾的是沒(méi)有落到實(shí)處。就拿體育來(lái)說(shuō),正如中國(guó)留美學(xué)者薛涌所觀(guān)察到的,美國(guó)精英層中運(yùn)動(dòng)員出身或者喜愛(ài)體育運(yùn)動(dòng)的人高得不成比例。他們?cè)诖髮W(xué)時(shí)代往往喜歡參加各種體育項(xiàng)目,如橄欖球、棒球、籃球、皮劃艇等。參加體育運(yùn)動(dòng),在激烈的競(jìng)爭(zhēng)中使你的體力達(dá)到極限,這有助于一系列優(yōu)秀品質(zhì)的培養(yǎng),如全力以赴、堅(jiān)忍不拔、公平競(jìng)爭(zhēng)、團(tuán)隊(duì)精神、尊重規(guī)則、強(qiáng)身健體,等等,而且還能找到一些志同道合者,為未來(lái)的事業(yè)編制人脈。在美國(guó)大學(xué)里,學(xué)生的領(lǐng)導(dǎo)能力常常是通過(guò)參加某某運(yùn)動(dòng)隊(duì)和某某社團(tuán)的活動(dòng)來(lái)體現(xiàn)的。光是悶頭學(xué)習(xí),即使成績(jī)?cè)俸?,可能也不為人看重?/p>

          小布什的身體強(qiáng)壯,當(dāng)總統(tǒng)時(shí)公務(wù)再繁忙,也要擠時(shí)間騎山地車(chē)和跑3英里。還有拉姆斯菲爾德,上大學(xué)時(shí)是普林斯頓摔跤隊(duì)的,要不是因?yàn)榧鐐?,本?lái)可以入選美國(guó)的奧運(yùn)代表隊(duì)。前總統(tǒng)福特,原來(lái)是密歇根大學(xué)橄欖球隊(duì)的,水平之高幾乎可以當(dāng)職業(yè)運(yùn)動(dòng)員,但后來(lái)他選擇去了耶魯,畢業(yè)后開(kāi)始從政。賴(lài)斯年輕的時(shí)候練花樣滑冰,據(jù)說(shuō)具備專(zhuān)業(yè)水準(zhǔn)。其他例子還有許多,美國(guó)精英對(duì)體育的重視由此可見(jiàn)一斑。

          傳說(shuō)中賴(lài)斯年輕時(shí)學(xué)習(xí)花樣滑冰的照片

          體育運(yùn)動(dòng)、強(qiáng)健的體魄與尚武精神是密切聯(lián)系的。西方自古希臘以來(lái)便有一種尚武的傳統(tǒng),當(dāng)代美國(guó)也繼承了這一傳統(tǒng),并成為其培養(yǎng)精英的一個(gè)重要理念。尚武精神在當(dāng)代的一個(gè)重要表現(xiàn)就是重視體育。而在中國(guó)方面,長(zhǎng)期以來(lái)則是尚文輕武的傳統(tǒng)占上風(fēng)。歷史學(xué)家雷海宗先生早就提出過(guò)一種觀(guān)點(diǎn),認(rèn)為中國(guó)是“無(wú)兵的文化”。春秋戰(zhàn)國(guó)的時(shí)候,還是貴族在打仗。從那以后,兵的文化就日漸弱化,好男不當(dāng)兵的觀(guān)念流傳甚廣,這與西方的情況大相徑庭。

          美國(guó)戰(zhàn)略精英的培養(yǎng)機(jī)制

          1.耶魯大學(xué)的大戰(zhàn)略研究:閱讀經(jīng)典、海外游歷與現(xiàn)實(shí)關(guān)懷

          耶魯大學(xué)的大戰(zhàn)略研究以歷史路徑為主。冷戰(zhàn)史名家約翰·加迪斯教授和曾撰寫(xiě)過(guò)《大國(guó)的興衰》的名教授保羅·肯尼迪,都非常重視通過(guò)研究歷史來(lái)探究戰(zhàn)略。他們?cè)谝敶髮W(xué)設(shè)立的大戰(zhàn)略研究項(xiàng)目,大致分為閱讀經(jīng)典、海外旅行和當(dāng)代重大問(wèn)題討論三個(gè)板塊。學(xué)生進(jìn)入到這個(gè)項(xiàng)目后,春季學(xué)期被用來(lái)大量閱讀經(jīng)典著作,讀修昔底德,讀孫子,讀馬基雅維利、伊麗莎白二世、美國(guó)的開(kāi)國(guó)元?jiǎng)住⒖档?、梅特涅、克勞塞維茨、林肯、俾斯麥、威爾遜、丘吉爾、兩個(gè)羅斯福(西奧多·羅斯福和富蘭克林·羅斯福)、列寧、斯大林、毛澤東、凱南、基辛格等人的著作。培養(yǎng)戰(zhàn)略精英,不了解過(guò)去偉大的思想怎么行?不研究戰(zhàn)略思想發(fā)展史怎么行?

          耶魯大戰(zhàn)略研究班的一次集體討論,未來(lái)的國(guó)家決策者們通過(guò)辯論與他人交流知識(shí)

          夏季小學(xué)期學(xué)生們被安排到海外旅行。耶魯特別鼓勵(lì)學(xué)生到世界各地去游歷,主要不是看那些名勝古跡,而是到那些普通觀(guān)光者不怎么去的地方,比如說(shuō),你可以沿著古代的絲綢之路去看看今日的輸油管道;你可以先到圣彼得堡學(xué)一個(gè)月俄語(yǔ),然后花兩個(gè)月時(shí)間途經(jīng)西伯利亞回國(guó);你可以到敘利亞、埃及去學(xué)阿拉伯語(yǔ);你可以去中國(guó)那些外國(guó)人平常不怎么去的地方,了解一下中國(guó)的風(fēng)土人情。這有點(diǎn)像田野調(diào)查。他們希望通過(guò)這種海外經(jīng)歷,一方面使學(xué)生增加對(duì)不同文化、不同國(guó)家的了解,另一方面把他們置于一種自己不熟悉的、帶有挑戰(zhàn)性的環(huán)境中去磨練他們的意志,增加他們的自信心。

          回來(lái)之后,在秋季學(xué)期開(kāi)始時(shí)討論美國(guó)所面臨的當(dāng)代重大問(wèn)題。這時(shí)候?qū)W生要讀亨廷頓、福山、扎卡里亞這些人的著作,然后讓他們分組進(jìn)行辯論,假定自己擔(dān)任國(guó)家公職,肩負(fù)著重要的職責(zé),你要指出現(xiàn)在美國(guó)所面臨的主要問(wèn)題是什么?美國(guó)的國(guó)家利益是什么?美國(guó)到底要維護(hù)什么?美國(guó)的最大威脅是什么?然后盡自己最大的努力去說(shuō)服同學(xué)、說(shuō)服教師來(lái)接受你的觀(guān)點(diǎn)??梢韵胍?jiàn),這一年的讀萬(wàn)卷書(shū)、行萬(wàn)里路的訓(xùn)練,對(duì)培育學(xué)生的戰(zhàn)略素養(yǎng)將是很有幫助的。

          2.斯坦福大學(xué)國(guó)際安全與合作中心:走科學(xué)技術(shù)與跨學(xué)科研究之路

           

          美國(guó)海軍預(yù)備役軍官團(tuán)的一次課程,相當(dāng)于中國(guó)的國(guó)防生制度,但是歷史更悠久,制度更健全

          斯坦福大學(xué)集中搞戰(zhàn)略研究的地方,是國(guó)際安全與合作中心。該中心的突出特點(diǎn)是重視科技與戰(zhàn)略研究的關(guān)系,開(kāi)展真正的跨學(xué)科研究。中心的研究人員分成兩大撥兒,一撥兒人是科學(xué)家和工程師,包括核物理學(xué)家、化學(xué)家、生物學(xué)家、研究導(dǎo)彈的等等;另一撥兒人則是搞人文社會(huì)科學(xué)的,包括政治學(xué)家、歷史學(xué)家、法學(xué)家、經(jīng)濟(jì)學(xué)家、社會(huì)學(xué)家等。這兩撥兒人整天在一個(gè)屋檐下搞研究。在國(guó)家安全問(wèn)題上,如果要提出一項(xiàng)政策,那么該政策在技術(shù)上的可行性如何,將是非常重要的一個(gè)問(wèn)題。而對(duì)科學(xué)家和工程師們來(lái)說(shuō),他們?cè)谌宋纳缈品矫娴闹R(shí)、在政策的敏感性等方面可能就稍微欠缺一些。一項(xiàng)政策的歷史變遷、在法律上如何操作、如何將技術(shù)上的可能性轉(zhuǎn)化成政策,這些問(wèn)題,他們不太擅長(zhǎng),因此也就需要由一些搞人文社科的來(lái)幫助,來(lái)協(xié)調(diào)。兩邊一搭伙兒就形成了一個(gè)良性循環(huán)。

          中心的跨學(xué)科研究取向也體現(xiàn)在中心的教育功能上。中心為斯坦福大學(xué)的本科生開(kāi)設(shè)的課程有“軍事技術(shù)與國(guó)家安全”、“核武器國(guó)際史”,以及通過(guò)模擬來(lái)解決國(guó)際危機(jī)的課程,走的都是技術(shù)與戰(zhàn)略研究的結(jié)合之路。中心還設(shè)立了一個(gè)本科生國(guó)際安全輔修項(xiàng)目,從斯坦福不同專(zhuān)業(yè)但都對(duì)國(guó)際安全問(wèn)題感興趣的本科生中選拔優(yōu)秀者參加,集中學(xué)習(xí)一年課程,包括實(shí)習(xí)和撰寫(xiě)有政策意義的研究論文。另外,中心還設(shè)立獎(jiǎng)學(xué)金,將全美名校中從事國(guó)際安全問(wèn)題研究的有前途的年輕人吸收到中心的博士后和博士前項(xiàng)目中,讓他們與中心的研究人員密切互動(dòng),從而將研究和教學(xué)很好地結(jié)合起來(lái)。

          斯坦福的這套做法,對(duì)國(guó)內(nèi)的戰(zhàn)略研究來(lái)說(shuō)很有借鑒意義。北大在國(guó)內(nèi)也算是頂尖大學(xué),但在國(guó)際問(wèn)題研究領(lǐng)域幾乎看不到類(lèi)似斯坦福那樣真正的跨自然和人文社會(huì)科學(xué)的研究機(jī)構(gòu)。不同領(lǐng)域的專(zhuān)家很少有機(jī)會(huì)能坐下來(lái)一塊兒交流、討論、合作攻關(guān)。北大國(guó)際關(guān)系學(xué)院兩年多前成立了一個(gè)國(guó)際戰(zhàn)略研究中心,打算在這個(gè)方面做一點(diǎn)努力,但未來(lái)的路很長(zhǎng)。無(wú)論是在觀(guān)念意識(shí)方面還是組織架構(gòu)方面,中國(guó)的跨學(xué)科戰(zhàn)略研究與美國(guó)相比,都還有很大差距。

          3.哈佛的戰(zhàn)略研究:重決策過(guò)程與案例研究

          哈佛大學(xué)的國(guó)際事務(wù)研究中心

          哈佛的戰(zhàn)略研究分好幾個(gè)單位,一個(gè)單位是哈佛國(guó)際事務(wù)研究中心,“文明沖突論”的提出者亨廷頓曾長(zhǎng)期擔(dān)任這個(gè)中心的主任;基辛格出道之前也在這兒。后來(lái)在該中心下又成立一個(gè)奧林戰(zhàn)略研究所。在過(guò)去近20年中,奧林國(guó)家安全項(xiàng)目通過(guò)為美國(guó)國(guó)家安全領(lǐng)域優(yōu)秀的年輕學(xué)者(包括博士待位人、博士后和高等院校的年輕教員,每年10人左右)提供獎(jiǎng)學(xué)金的方式,為美國(guó)的國(guó)際戰(zhàn)略研究界培養(yǎng)了很多人才。這些人實(shí)際上形成了一個(gè)圈子。

          哈佛的肯尼迪學(xué)院在戰(zhàn)略研究領(lǐng)域是后起之秀

          目前來(lái)看,在哈佛的戰(zhàn)略研究中,更為活躍的是設(shè)立較晚的肯尼迪政府學(xué)院。從1960年代起,在政治學(xué)家諾伊斯塔特,外交史學(xué)家歐內(nèi)斯特·梅,以及他們的學(xué)生、現(xiàn)任肯尼迪政府學(xué)院名譽(yù)院長(zhǎng)格雷厄姆·艾利森的持續(xù)努力下,發(fā)展了一條從案例和決策過(guò)程入手來(lái)研究國(guó)際戰(zhàn)略的路徑。艾利森以古巴導(dǎo)彈危機(jī)為例所歸納出的三種決策模式,便是其中最為突出的一個(gè)范例。在長(zhǎng)期關(guān)注決策和案例的基礎(chǔ)上,肯尼迪學(xué)院開(kāi)設(shè)了各種高級(jí)別的戰(zhàn)略培訓(xùn)班,與政府部門(mén)合作,培養(yǎng)各類(lèi)戰(zhàn)略研究人才。

          4.麻省理工學(xué)院的安全研究項(xiàng)目:與軍方密切合作

          麻省理工學(xué)院(MIT)的安全研究項(xiàng)目(Security Studies Program,簡(jiǎn)稱(chēng)SSP項(xiàng)目)在美國(guó)大學(xué)的安全研究領(lǐng)域中是名列前茅的。該項(xiàng)目的前身是麻省理工學(xué)院國(guó)際問(wèn)題研究所,在冷戰(zhàn)時(shí)期主要做宣傳戰(zhàn)、心理戰(zhàn)和第三世界的政治和經(jīng)濟(jì)發(fā)展研究,后來(lái)研究重點(diǎn)轉(zhuǎn)向軍控和蘇聯(lián)軍事等領(lǐng)域。MIT是一個(gè)以工科為主的學(xué)校。給人印象特別深刻的是它跟軍方的關(guān)系特別密切,好多大實(shí)驗(yàn)室的研發(fā)依靠的都是軍工項(xiàng)目。MIT安全項(xiàng)目的規(guī)模在美國(guó)大學(xué)中大概是數(shù)一數(shù)二的,為美國(guó)培養(yǎng)了不少高水平的戰(zhàn)略研究人才。在這里只簡(jiǎn)單介紹一下它獨(dú)特的“軍事研究員”(military fellow)制度。

          所謂軍事研究員制度,就是MIT跟美國(guó)軍方簽訂協(xié)議,接受來(lái)自美國(guó)陸軍、空軍、海軍和海軍陸戰(zhàn)隊(duì)的現(xiàn)役校級(jí)軍官到SSP項(xiàng)目做一年訪(fǎng)問(wèn)學(xué)者。他們可以參加SSP項(xiàng)目的所有課程與活動(dòng),一年訪(fǎng)問(wèn)結(jié)束后,從其所在軍種的院校取得學(xué)分。我們知道,軍事人員有自己的專(zhuān)業(yè)知識(shí),他們到MIT來(lái),可以給這里從事戰(zhàn)略問(wèn)題研究的師生傳授很多軍事知識(shí),彌補(bǔ)他們知識(shí)結(jié)構(gòu)上的欠缺。另一方面,軍事研究員們也可以充分利用大學(xué)的智力資源,在開(kāi)闊自己視野的同時(shí),把那些他們?cè)趯?shí)際工作中遇到的難題提供給專(zhuān)家學(xué)者們研究討論,尋找答案。這對(duì)雙方都大有好處。搞戰(zhàn)略研究的,軍事是很重要的一個(gè)方面。如果對(duì)戰(zhàn)役、戰(zhàn)術(shù)這類(lèi)東西完全不了解,上來(lái)就談戰(zhàn)略,其實(shí)是相當(dāng)困難的。

          5.哥倫比亞大學(xué)的軍事行動(dòng)與戰(zhàn)略分析研討班

          哥倫比亞大學(xué)的戰(zhàn)略研究與教學(xué)也非常重視軍事。哥倫比亞大學(xué)有個(gè)戰(zhàn)爭(zhēng)與和平研究所,它主辦的一個(gè)名為“軍事行動(dòng)與戰(zhàn)略分析”的暑期研討班(Summer Workshopon Analysis of Military Operations and Strategy,簡(jiǎn)稱(chēng)SWAMOS)每年夏季開(kāi)班,主要講授和討論軍事及戰(zhàn)略問(wèn)題。暑期班的學(xué)員,一部分是研究安全問(wèn)題的博士生,另一部分是在大學(xué)中從事國(guó)際安全教學(xué)與研究的年輕教員,每期學(xué)員大約有20人,時(shí)間大概是三個(gè)星期左右。研討班的講師基本上是全美這個(gè)領(lǐng)域中最好的專(zhuān)家,有大學(xué)教授,有智庫(kù)中的研究人員,還有政府部門(mén)中的相關(guān)人士。講授的內(nèi)容包括戰(zhàn)略思想、陸??哲姷幕局R(shí)、軍事預(yù)算、常規(guī)戰(zhàn)爭(zhēng)、反叛亂戰(zhàn)爭(zhēng)、核戰(zhàn)略等。每天上午上三個(gè)小時(shí)的課,中間休息15分鐘,下午分組討論兩小時(shí),然后是師生自由交流和體育活動(dòng),晚上再安排看戰(zhàn)爭(zhēng)片,看完之后還要討論各種戰(zhàn)略戰(zhàn)術(shù)和戰(zhàn)爭(zhēng)倫理問(wèn)題。去參加研究班之前,已經(jīng)被要求先完成1000頁(yè)左右的閱讀量,材料寄到家。研討班開(kāi)班后,每天要看個(gè)七八十頁(yè)材料。這樣三個(gè)星期下來(lái),等于上了一門(mén)本科生、一門(mén)研究生的課程。

          哥倫比亞大學(xué)的“軍事行動(dòng)與戰(zhàn)略分析”暑期研討班課堂

          通過(guò)考察上述這幾所大學(xué)的戰(zhàn)略精英培養(yǎng)機(jī)制,可以使我們認(rèn)識(shí)到美國(guó)在培養(yǎng)自己的戰(zhàn)略精英方面是多么地不遺余力而又行之有道。相比之下,中國(guó)的精英培養(yǎng)機(jī)制卻存在著種種不足。許多口號(hào)都飄在空中,落不到實(shí)處,形不成真正的生產(chǎn)力。最重要的是,人的精氣神,無(wú)論是在精英層次還是民眾層次,都做得遠(yuǎn)遠(yuǎn)不如歐美。 (本文來(lái)源:網(wǎng)易軍事 )

          posted @ 2009-12-13 11:10 二胡 閱讀(262) | 評(píng)論 (0)編輯 收藏

          說(shuō)起Google,可謂無(wú)人不知無(wú)人不曉。作為世界第一的搜索引擎,其強(qiáng)大的搜索功能,可以讓你在瞬間找到你想要的一切。不過(guò)對(duì)于普通的計(jì)算機(jī)用戶(hù)而言,Google是一個(gè)強(qiáng)大的搜索引擎;而對(duì)于黑客而言,則可能是一款絕佳的黑客工具。正因?yàn)間oogle的檢索能力強(qiáng)大,黑客可以構(gòu)造特殊的關(guān)鍵字,使用Google搜索互聯(lián)網(wǎng)上的相關(guān)隱私信息。通過(guò)Google,黑客甚至可以在幾秒種內(nèi)黑掉一個(gè)網(wǎng)站。這種利用Google搜索相關(guān)信息并進(jìn)行入侵的過(guò)程就叫做Google Hack。

          搜索也是一門(mén)藝術(shù)

                   在我們平時(shí)使用搜索引擎的過(guò)程中,通常是將需要搜索的關(guān)鍵字輸入搜索引擎,然后就開(kāi)始了漫長(zhǎng)的信息提取過(guò)程。其實(shí)Google對(duì)于搜索的關(guān)鍵字提供了多種語(yǔ)法,合理使用這些語(yǔ)法,將使我們得到的搜索結(jié)果更加精確。當(dāng)然,Google允許用戶(hù)使用這些語(yǔ)法的目的是為了獲得更加精確的結(jié)果,但是黑客卻可以利用這些語(yǔ)法構(gòu)造出特殊的關(guān)鍵字,使搜索的結(jié)果中絕大部分都是存在漏洞的網(wǎng)站。
          下面我們先來(lái)看看Google的部分語(yǔ)法:
                   intitle:搜索網(wǎng)頁(yè)標(biāo)題中包含有特定字符的網(wǎng)頁(yè)。例如輸入“intitle: cbi”,這樣網(wǎng)頁(yè)標(biāo)題中帶有cbi的網(wǎng)頁(yè)都會(huì)被搜索出來(lái)。
                   inurl:搜索包含有特定字符的URL。例如輸入“inurl:cbi”,則可以找到帶有cbi字符的URL。
                   intext:搜索網(wǎng)頁(yè)正文內(nèi)容中的指定字符,例如輸入“intext:cbi”。這個(gè)語(yǔ)法類(lèi)似我們平時(shí)在某些網(wǎng)站中使用的“文章內(nèi)容搜索”功能。
                   Filetype:搜索指定類(lèi)型的文件。例如輸入“filetype:cbi”,將返回所有以cbi結(jié)尾的文件URL。
                   Site:找到與指定網(wǎng)站有聯(lián)系的URL。例如輸入“Site:family.chinaok.com”。所有和這個(gè)網(wǎng)站有聯(lián)系的URL都會(huì)被顯示。
                   這些就是Google的常用語(yǔ)法,也是Google Hack的必用語(yǔ)法。雖然這只是Google語(yǔ)法中很小的部分,但是合理使用這些語(yǔ)法將產(chǎn)生意想不到的效果。

          語(yǔ)法在Google Hack中的作用

                   了解了Google的基本語(yǔ)法后,我們來(lái)看一下黑客是如何使用這些語(yǔ)法進(jìn)行Google Hack的,這些語(yǔ)法在入侵的過(guò)程中又會(huì)起到怎樣的作用呢?
                   intitle
                   intitle語(yǔ)法通常被用來(lái)搜索網(wǎng)站的后臺(tái)、特殊頁(yè)面和文件,通過(guò)在Google中搜索“intitle:登錄”、“intitle:管理”就可以找到很多網(wǎng)站的后臺(tái)登錄頁(yè)面。此外,intitle語(yǔ)法還可以被用在搜索文件上,例如搜索“intitle:"indexof"etc/shadow”就可以找到Linux中因?yàn)榕渲貌缓侠矶孤冻鰜?lái)的用戶(hù)密碼文件。
                   inurl
                   Google Hack中,inurl發(fā)揮的作用的最大,主要可以分為以下兩個(gè)方面:尋找網(wǎng)站后臺(tái)登錄地址,搜索特殊URL。
                   尋找網(wǎng)站后臺(tái)登錄地址:和intitle不同的是,inurl可以指定URL中的關(guān)鍵字,我們都知道網(wǎng)站的后臺(tái)URL都是類(lèi)似login.asp、admin.asp為結(jié)尾的,那么我們只要以“inurl:login.asp”、“inurl:admin.asp”為關(guān)鍵字進(jìn)行搜索,同樣可以找到很多網(wǎng)站的后臺(tái)。此外,我們還可以搜索一下網(wǎng)站的數(shù)據(jù)庫(kù)地址,以“inurl:data”、“inurl:db”為關(guān)鍵字進(jìn)行搜索即可。


          1.尋找網(wǎng)站的后臺(tái)登錄頁(yè)面
                   搜索特殊URL:通過(guò)inurl語(yǔ)法搜索特殊URL,我們可以找到很多網(wǎng)站程序的漏洞,例如最早IIS中的Uncode目錄遍歷漏洞,我們可以構(gòu)造“inurl:/winnt/system32/cmd exe?/c+dir”這樣的關(guān)鍵字進(jìn)行搜索,不過(guò)目前要搜索到存在這種古董漏洞的網(wǎng)站是比較困難的。再比如前段日子很火的上傳漏洞,我們使用““inurl:upload.asp”或“inurl:upload_soft.asp”即可找到很多上傳頁(yè)面,此時(shí)再用工具進(jìn)行木馬上傳就可以完成入侵。


                   intext
                   intext的作用是搜索網(wǎng)頁(yè)中的指定字符,這貌似在Google Hack中沒(méi)有什么作用,不過(guò)在以“intext:to parent directory”為關(guān)鍵字進(jìn)行搜索后,我們會(huì)很驚奇的發(fā)現(xiàn),無(wú)數(shù)網(wǎng)站的目錄暴露在我們眼前。我們可以在其中隨意切換目錄,瀏覽文件,就像擁有了一個(gè)簡(jiǎn)單的Webshell。形成這種現(xiàn)象的原因是由于IIS的配置疏忽。同樣,中文IIS配置疏忽也可能出現(xiàn)類(lèi)似的漏洞,我們用“intext:轉(zhuǎn)到父目錄”就可以找到很多有漏洞的中文網(wǎng)站。


          2.隨意瀏覽網(wǎng)站中的文件
                   Filetype
                   Filetype的作用是搜索指定文件。假如我們要搜索網(wǎng)站的數(shù)據(jù)庫(kù)文件,那么可以以“filetype:mdb”為關(guān)鍵字進(jìn)行搜索,很快就可以下載到不少網(wǎng)站的數(shù)據(jù)庫(kù)文件。當(dāng)然,F(xiàn)iletype語(yǔ)法的作用不僅于此,在和其他語(yǔ)法配合使用的時(shí)候更能顯示出其強(qiáng)大作用。
                   Site
                   黑客使用Site,通常都是做入侵前的信息刺探。Site語(yǔ)法可以顯示所有和目標(biāo)網(wǎng)站有聯(lián)系的頁(yè)面,從中或多或少存在一些關(guān)于目標(biāo)網(wǎng)站的資料,這對(duì)于黑客而言就是入侵的突破口,是關(guān)于目標(biāo)網(wǎng)站的一份詳盡的報(bào)告。

          語(yǔ)法組合,威力加倍

                   雖然上文中介紹的這幾個(gè)語(yǔ)法能各自完成入侵中的一些步驟,但是只使用一個(gè)語(yǔ)法進(jìn)行入侵,其效率是很低下的。Google Hack的威力在于能將多個(gè)語(yǔ)法組合起來(lái),這樣就可以快速地找到我們需要的東西。下面我們來(lái)模擬黑客是如何使用Google語(yǔ)法組合來(lái)入侵一個(gè)網(wǎng)站的。


              信息刺探
                   黑客想入侵一個(gè)網(wǎng)站,通常第一步都是對(duì)目標(biāo)網(wǎng)站進(jìn)行信息刺探。這時(shí)可以使用“Site:目標(biāo)網(wǎng)站”來(lái)獲取相關(guān)網(wǎng)頁(yè),從中提取有用的資料。


          3.搜索相關(guān)頁(yè)面
                   下載網(wǎng)站的數(shù)據(jù)庫(kù)
                   搜索“Site:目標(biāo)網(wǎng)站 Filetype:mdb”就可以尋找目標(biāo)網(wǎng)站的數(shù)據(jù)庫(kù),其中的Site語(yǔ)法限定搜索范圍,F(xiàn)iletype決定搜索目標(biāo)。用這種方法有一個(gè)缺點(diǎn),就是下載到數(shù)據(jù)庫(kù)的成功率較低。在這里我們還可以采用另一種語(yǔ)法組合,前提是目標(biāo)網(wǎng)站存在IIS配置缺陷,即可以隨意瀏覽站點(diǎn)文件夾,我們搜索“Site:目標(biāo)網(wǎng)站 intext:to parent directory”來(lái)確定其是否存在此漏洞。在確定漏洞存在后,可以使用“Site:目標(biāo)網(wǎng)站 intext:to parent directory+intext.mdb”進(jìn)行數(shù)據(jù)庫(kù)的搜索。


          4.找到網(wǎng)站數(shù)據(jù)庫(kù)


              登錄后臺(tái)管理
                   下載到數(shù)據(jù)庫(kù)后,我們就可以從中找到網(wǎng)站的管理員帳戶(hù)和密碼,并登錄網(wǎng)站的后臺(tái)。對(duì)于網(wǎng)站后臺(tái)的查找,可以使用語(yǔ)法組合“Site:目標(biāo)網(wǎng)站 intitle:管理”或者“Site:目標(biāo)網(wǎng)站 inurl:login.asp”進(jìn)行搜索,當(dāng)然我們可以在這里進(jìn)行聯(lián)想,以不同的字符進(jìn)行搜索,這樣就有很大的概率可以找到網(wǎng)站的后臺(tái)管理地址。接下去黑客就可以在后臺(tái)上傳Webshll,進(jìn)一步提升權(quán)限,在此不再闡述。


              利用其他漏洞
                   如果下載數(shù)據(jù)庫(kù)不成功,我們還可以嘗試其他的入侵方法。例如尋找上傳漏洞,搜索“Site:目標(biāo)網(wǎng)站 inurl:upload.asp”。此外,我們還可以根據(jù)一些程序漏洞的特征,定制出Google Hack的語(yǔ)句。
                   Google Hack可以靈活地組合法語(yǔ),合理的語(yǔ)法組合將使入侵顯得易如反掌,再加入自己的搜索字符,Google完全可以成為你獨(dú)一無(wú)二的黑客工具。

          合理設(shè)置,防范Google Hack
             
          5. 合理設(shè)置網(wǎng)站
                   Google Hack貌似無(wú)孔不入,實(shí)則無(wú)非是利用了我們配置網(wǎng)站時(shí)的疏忽。例如上文中搜索“intext:to parent directory”即可找到很多可以瀏覽目錄文件的網(wǎng)站,這都是由于沒(méi)有設(shè)置好網(wǎng)站權(quán)限所造成的。在IIS中,設(shè)置用戶(hù)訪(fǎng)問(wèn)網(wǎng)站權(quán)限時(shí)有一個(gè)選項(xiàng),叫做“目錄瀏覽”,如果你不小心選中了該項(xiàng),那么其結(jié)果就如上文所述,可以讓黑客肆意瀏覽你網(wǎng)站中的文件。
                   這種漏洞的防范方法十分簡(jiǎn)單,在設(shè)置用戶(hù)權(quán)限時(shí)不要選中“目錄瀏覽”選項(xiàng)即可。


          6.不要選中該項(xiàng)
                   編寫(xiě)robots.txt文件
                   robot.txt是專(zhuān)門(mén)針對(duì)搜索引擎機(jī)器人robot編寫(xiě)的一個(gè)純文本文件。我們可以在這個(gè)文件中說(shuō)明網(wǎng)站中不想被robot訪(fǎng)問(wèn)的部分,這樣,我們網(wǎng)站的部分或全部?jī)?nèi)容就可以不被搜索引擎收錄了,或者讓搜索引擎只收錄指定的內(nèi)容。因此我們可以利用robots.txt讓Google的機(jī)器人訪(fǎng)問(wèn)不了我們網(wǎng)站上的重要文件,Google Hack的威脅也就不存在了。


                   編寫(xiě)的robots.txt文件內(nèi)容如下:
          User-agent: *
          Disallow: /data/
          Disallow: /db/


                   其中“Disallow”參數(shù)后面的是禁止robot收錄部分的路徑,例如我們要讓robot禁止收錄網(wǎng)站目錄下的“data”文件夾,只需要在Disallow參數(shù)后面加上“/data/”即可。如果想增加其他目錄,只需按此格式繼續(xù)添加。文件編寫(xiě)完成后將其上傳到網(wǎng)站的根目錄,就可以讓網(wǎng)站遠(yuǎn)離Google Hack了

           

          本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/chaosa/archive/2007/10/16/1828301.aspx

          posted @ 2009-12-11 09:41 二胡 閱讀(1138) | 評(píng)論 (6)編輯 收藏

            這樣的錯(cuò)誤以前我也犯過(guò),也見(jiàn)過(guò)不少人這樣的寫(xiě)法!下面我也舉個(gè)例子:
            

           public void writeFile(File f) {
            String content 
          = null;
            
          try {
             
          byte[] b = new byte[1024];
             FileInputStream in 
          = new FileInputStream(f);
             in.read(b);
             content 
          = new String(b);
            }
           catch (Exception e) {
             System.out.println(e.getMessage());
            }


            
          if (content.indexOf("hello"> -1{
             System.out.println(
          "yes");
            }
           else {
             System.out.println(
          "no");
            }

           }


           上面是個(gè)簡(jiǎn)單的方法,代碼中有個(gè)隱藏的bug。我在維護(hù)一個(gè)系統(tǒng)的時(shí)候就遇到類(lèi)似的代碼,實(shí)際中類(lèi)似的BUG隱藏
          的更深!在對(duì)系統(tǒng)業(yè)務(wù)和代碼不是很很熟悉的情況下,我推薦如下寫(xiě)法:

           1 public void writeFile(File f) {
           2  String content = null;
           3  try {
           4   byte[] b = new byte[1024];
           5   FileInputStream in = new FileInputStream(f);
           6   in.read(b);
           7   content = new String(b);
           8  }
           catch (Exception e) {
           9   content="";
          10   //如果異常發(fā)生的話(huà),content可能為空
          11   //下面對(duì)content的操作就有可能發(fā)生NullPointerException異常
          12   System.out.println(e.getMessage());
          13  }

          14  //下面操作有可能發(fā)生NullPointerException異常
          15  if (content.indexOf("hello"> -1{
          16   System.out.println("yes");
          17  }
           else {
          18   System.out.println("no");
          19  }

          20 }


           一般來(lái)說(shuō)異常處理不推薦直接system.out.println打印出來(lái)!
           幾條建議:
           如果無(wú)法處理某個(gè)異常,那就不要捕獲它。
            ☆ 如果捕獲了一個(gè)異常,請(qǐng)不要胡亂處理它。
            ☆ 盡量在靠近異常被拋出的地方捕獲異常。
            ☆ 在捕獲異常的地方將它記錄到日志中,除非您打算將它重新拋出。
            ☆ 按照您的異常處理必須多精細(xì)來(lái)構(gòu)造您的方法。
            ☆ 需要用幾種類(lèi)型的異常就用幾種,尤其是對(duì)于應(yīng)用程序異常。
            ☆ 把低層次的異常封裝成層次較高程序員較容易理解的異常。
            ☆ 盡量輸出造成異常的完整數(shù)據(jù)
            ☆ 盡量捕獲具有特定含義的異常:比如SqlException,而不是簡(jiǎn)單地捕獲一個(gè)Exception


            希望對(duì)大家有幫助!

          參考:
          http://www.aygfsteel.com/usherlight/archive/2006/10/23/76782.html

          posted @ 2009-12-09 16:59 二胡 閱讀(396) | 評(píng)論 (0)編輯 收藏

                  cookie在web開(kāi)發(fā)中應(yīng)用的比較多!瀏覽器默認(rèn)的接受cookie的,但是如果瀏覽器禁止了cookie,會(huì)出現(xiàn)什么情況了?
                  在此我測(cè)試了如下系統(tǒng):gmail,163郵箱,126郵箱,tom郵箱
                  我在瀏覽器禁用cookie的情況下,登陸上述4郵箱!
                  Gmail:
                  正確輸入用戶(hù)名密碼后,系統(tǒng)給出如下提示:
                  

              163郵箱:

           正確輸入用戶(hù)名密碼后,系統(tǒng)給出如下提示:讓我搞不清楚是用戶(hù)名密碼錯(cuò)誤還是其它錯(cuò)誤!



              126郵箱
              
              正確輸入用戶(hù)名密碼后,系統(tǒng)給出如下提示:讓我搞不清楚是用戶(hù)名密碼錯(cuò)誤還是其它錯(cuò)誤!

              
              tom郵箱

              正確輸入用戶(hù)名密碼后,系統(tǒng)給出如下提示:居然提示我是"非法請(qǐng)求"

           

                  從上面測(cè)試中感受到不同的用戶(hù)體驗(yàn).對(duì)大多數(shù)做web開(kāi)發(fā)的人來(lái)說(shuō),判斷瀏覽器是否支持Cookie并不是什么難事!難的是對(duì)細(xì)節(jié)的處理!
                  也許我們與優(yōu)秀的產(chǎn)品差距最大的是對(duì)細(xì)節(jié)的處理!
                  
                  附: 我測(cè)試用的是IE6.0

          posted @ 2009-12-08 15:03 二胡 閱讀(1769) | 評(píng)論 (4)編輯 收藏

           關(guān)于溝通,大家都知道其重要性!但是,在實(shí)際工作中有不少人做的不夠好,也包括我自己!
           客戶(hù)提出的問(wèn)題,原因大概有一下幾種!
           一、客戶(hù)對(duì)軟件系統(tǒng)不熟悉,把屬正常情況的現(xiàn)象誤以為是問(wèn)題
               這時(shí)候就需要我們聽(tīng)清楚客戶(hù)的描述,然后根據(jù)客戶(hù)的描述一步步的確認(rèn)其操作等!
               確保用戶(hù)的操作的正確性。
           二、系統(tǒng)的bug
             一般要了解如下情況!
             2.1 who:誰(shuí)操作系統(tǒng)的時(shí)候出問(wèn)題了!一般記錄系統(tǒng)的登陸名
             2.2 when:在什么時(shí)候操作出問(wèn)題了!
             2.3 how:怎么操作的!這個(gè)比較重要,一般記錄的是操作步驟!
             2.4 contact:客戶(hù)的聯(lián)系方式,郵件還是電話(huà)等。
             2.4 feedback:給客戶(hù)的反饋,答復(fù)什么時(shí)候解決此問(wèn)題!
             2.5 follow:既跟蹤,確??蛻?hù)已經(jīng)解決此問(wèn)題!而不能簡(jiǎn)單告訴用戶(hù)怎么做,在此之后最后跟用戶(hù)確認(rèn)一下此問(wèn)題是否解決!
             
             我的感受:聽(tīng)客戶(hù)的意見(jiàn),然后確認(rèn)!反復(fù)之!
             
          posted @ 2009-12-08 11:01 二胡 閱讀(166) | 評(píng)論 (0)編輯 收藏

                  在Web開(kāi)發(fā)中常用到Cookie,所以有時(shí)需要判斷客戶(hù)端瀏覽器是否禁用Cookie!我看了一個(gè)gmail的頁(yè)面原碼!它是這樣寫(xiě)的,如下:

          var c="jscookietest=valid";
          document.cookie=c;
          if(document.cookie.indexOf(c)==-1)
          location="html/zh-CN/nocookies.html";
          //不支持Cookie

          原理是:先對(duì)Cookie賦值,然后再讀取
          希望對(duì)大家有用!
          posted @ 2009-12-07 09:17 二胡 閱讀(2257) | 評(píng)論 (1)編輯 收藏

               JavaScript中的null和undefined,感覺(jué)有點(diǎn)易混淆!把Ecma-262下載下來(lái)看了看!摘要如下:

               Undefined Value
          The undefined value is a primitive value used when a variable has not been assigned a value.
          4.3.10 Undefined Type
          The type Undefined has exactly one value, called undefined.
          4.3.11 Null Value
          The null value is a primitive value that represents the null, empty, or non-existent reference.
          4.3.12 Null Type
          The type Null has exactly one value, called null.

          感興趣的可以看看如下文章:
          http://www.aygfsteel.com/hulizhong/archive/2009/10/22/299430.html
          posted @ 2009-12-05 13:45 二胡 閱讀(229) | 評(píng)論 (0)編輯 收藏

          使用聚集索引  
            聚集索引確定表中數(shù)據(jù)的物理順序。聚集索引類(lèi)似于電話(huà)簿,后者按姓氏排列數(shù)據(jù)。由于聚集索引規(guī)定數(shù)據(jù)在表中的物理存儲(chǔ)順序,因此一個(gè)表只能包含一個(gè)聚集索引。但該索引可以包含多個(gè)列(組合索引),就像電話(huà)簿按姓氏和名字進(jìn)行組織一樣。  
             
            聚集索引對(duì)于那些經(jīng)常要搜索范圍值的列特別有效。使用聚集索引找到包含第一個(gè)值的行后,便可以確保包含后續(xù)索引值的行在物理相鄰。例如,如果應(yīng)用程序執(zhí)行的一個(gè)查詢(xún)經(jīng)常檢索某一日期范圍內(nèi)的記錄,則使用聚集索引可以迅速找到包含開(kāi)始日期的行,然后檢索表中所有相鄰的行,直到到達(dá)結(jié)束日期。這樣有助于提高此類(lèi)查詢(xún)的性能。同樣,如果對(duì)從表中檢索的數(shù)據(jù)進(jìn)行排序時(shí)經(jīng)常要用到某一列,則可以將該表在該列上聚集(物理排序),避免每次查詢(xún)?cè)摿袝r(shí)都進(jìn)行排序,從而節(jié)省成本。  
             
            當(dāng)索引值唯一時(shí),使用聚集索引查找特定的行也很有效率。例如,使用唯一雇員   ID   列   emp_id   查找特定雇員的最快速的方法,是在   emp_id   列上創(chuàng)建聚集索引或   PRIMARY   KEY   約束  
             
             
            使用非聚集索引  
            非聚集索引與課本中的索引類(lèi)似。數(shù)據(jù)存儲(chǔ)在一個(gè)地方,索引存儲(chǔ)在另一個(gè)地方,索引帶有指針指向數(shù)據(jù)的存儲(chǔ)位置。索引中的項(xiàng)目按索引鍵值的順序存儲(chǔ),而表中的信息按另一種順序存儲(chǔ)(這可以由聚集索引規(guī)定)。如果在表中未創(chuàng)建聚集索引,則無(wú)法保證這些行具有任何特定的順序。  
             
            與使用書(shū)中索引的方式相似,Microsoft®   SQL   Server™   2000   在搜索數(shù)據(jù)值時(shí),先對(duì)非聚集索引進(jìn)行搜索,找到數(shù)據(jù)值在表中的位置,然后從該位置直接檢索數(shù)據(jù)。這使非聚集索引成為精確匹配查詢(xún)的最佳方法,因?yàn)樗饕枋霾樵?xún)所搜索的數(shù)據(jù)值在表中的精確位置的條目。如果基礎(chǔ)表使用聚集索引排序,則該位置為聚集鍵值;否則,該位置為包含行的文件號(hào)、頁(yè)號(hào)和槽號(hào)的行   ID   (RID)。例如,對(duì)于在   emp_id   列上有非聚集索引的表,如要搜索其雇員   ID   (emp_id),SQL   Server   會(huì)在索引中查找這樣一個(gè)條目,該條目精確列出匹配的   emp_id   列在表中的頁(yè)和行,然后直接轉(zhuǎn)到該頁(yè)該行。  

          -------------------------------------------------------分割線(xiàn)-------------------------------------------------------
                  在工作中遇見(jiàn)了SQL性能問(wèn)題,最后在同事的幫助下解決了此問(wèn)題:就是通過(guò)建聚集索引的方式解決的!
                   原來(lái)的SQL中有如下的where語(yǔ)句:
                   and  datediff(day, date1,'2009-1-01')<=

               and  datediff(day, date1,'2009-2-03')>=

                  在date1建了聚集索引,SQL修改如下:
                    and   date1>='2009-1-01'

               and  date1<='2009-2-03' 

                   去掉了datediff函數(shù),因?yàn)橛煤瘮?shù)的話(huà)就不會(huì)用到date1的聚集索引! 在此記錄一下,以備后查!
              
          posted @ 2009-12-04 15:19 二胡 閱讀(166) | 評(píng)論 (0)編輯 收藏

               在一些框架中看到了類(lèi)似這樣的寫(xiě)法:+new Date();感覺(jué)有些怪,查閱了相關(guān)資料和一些網(wǎng)友的幫助.對(duì)此用法解釋如下,希望對(duì)大家有所幫助,不合適的地方請(qǐng)大家指正!
          一,對(duì)于引用類(lèi)型對(duì)象(我指的是String,Date,Object,Array,Function,Boolean)的+運(yùn)算符運(yùn)算過(guò)程如下!
              1,首先調(diào)用此對(duì)象的valueOf方法,得到返回?cái)?shù)值A(chǔ)
              2,然后把此數(shù)值A(chǔ)轉(zhuǎn)換成數(shù)字,得到的是最終數(shù)值 

              我的測(cè)試如下:
             
          function w(s){
                document.writeln("<br/>");
                document.writeln(s);
                document.writeln("<br/>-----------------------------");
                }
             String.prototype.valueOf=function(){return 1;};
             w(+new String("sss"));//輸出1
             String.prototype.valueOf=function(){return "a";};
              w(+new String("sss"));//輸出NaN
            
            
             Date.prototype.valueOf=function(){return 1;};
             w(+new Date());//輸出1
             Date.prototype.valueOf=function(){return "a";};
              w(+new Date());//輸出NaN
            
             Object.prototype.valueOf=function(){return 1;};
             w(+{});//輸出1
             Object.prototype.valueOf=function(){return "a";};
              w(+{});//輸出NaN
            
             Array.prototype.valueOf=function(){return 1;};
             w(+[]);//輸出1
             Array.prototype.valueOf=function(){return "a";};
              w(+[]);//輸出NaN
            
             var s=function(){};
             Function.prototype.valueOf=function(){return 1;};
             w(+s);//輸出1
             Function.prototype.valueOf=function(){return "a";};
              w(+s);//輸出NaN
            
             Boolean.prototype.valueOf=function(){return 1;};
             w(+new Boolean());//輸出1
             Boolean.prototype.valueOf=function(){return "a";};
             w(+new Boolean());//輸出NaN
          二,對(duì)于基本數(shù)據(jù)數(shù)據(jù)類(lèi)型,其值轉(zhuǎn)換成數(shù)字
              w(+5);//輸出5
              w(+true);//輸出1
              w(+false);//輸出0
              w(+"ss");//輸出NaN
              w(+"111");//輸出111

          posted @ 2009-12-04 10:00 二胡 閱讀(1143) | 評(píng)論 (0)編輯 收藏

              在看gmail頁(yè)面原碼的時(shí)候,有類(lèi)似(new Date).getTime()/(new Image).src的寫(xiě)法.這樣的寫(xiě)法與new Date().getTime()有什么不同?這樣寫(xiě)有什么好處呢?
          不明白,那位知道給說(shuō)一下!
          posted @ 2009-12-03 13:34 二胡 閱讀(1142) | 評(píng)論 (1)編輯 收藏

                最近領(lǐng)導(dǎo)安排我做手機(jī)軟件開(kāi)發(fā)(j2me),領(lǐng)一手機(jī)專(zhuān)做測(cè)試!今天不經(jīng)意見(jiàn)看了手機(jī)的短信收件箱,
          短信主要有如下:
            1.1     周立波的"我為財(cái)狂"手機(jī)視頻免費(fèi)看(可惜俺聽(tīng)不懂上海話(huà))
            1.2     移動(dòng)的短信回執(zhí)服務(wù)推薦
            1.3     基金推薦(既然你提醒投資有風(fēng)險(xiǎn)了,還買(mǎi)它干啥)
            1.4     航班、機(jī)票推薦(哥們一直坐火車(chē))
            1.5     某星級(jí)酒店招聘(哥們不是帥哥,不符條件)
            1.6     放高利貸的(聽(tīng)說(shuō)是驢打滾利)
            1.7     <風(fēng)聲>經(jīng)典鏡頭免費(fèi)看
            1.8     給個(gè)卡號(hào)讓匯錢(qián)的(你呀誰(shuí)啊,我不認(rèn)識(shí),而且發(fā)了2條)

                呵呵,列舉一下!博你一笑!
          posted @ 2009-12-03 10:56 二胡 閱讀(175) | 評(píng)論 (0)編輯 收藏

          主站蜘蛛池模板: 东阳市| 灵宝市| 新竹县| 井陉县| 平顶山市| 西乡县| 炎陵县| 民权县| 沙坪坝区| 新兴县| 五莲县| 文山县| 甘肃省| 拉孜县| 西畴县| 侯马市| 巴青县| 蕲春县| 康平县| 清涧县| 罗定市| 铁力市| 上杭县| 陕西省| 沂南县| 元阳县| 农安县| 南部县| 东乌| 信丰县| 息烽县| 特克斯县| 商都县| 井冈山市| 陆川县| 宜丰县| 常山县| 望都县| 嘉黎县| 虞城县| 瑞金市|