国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
Subversion 簡(jiǎn)介

Subversion 簡(jiǎn)介

三千年版本控制

文檔選項(xiàng)

將此頁(yè)作為電子郵件發(fā)送


最新推薦

Java 應(yīng)用開(kāi)發(fā)源動(dòng)力 - 下載免費(fèi)軟件,快速啟動(dòng)開(kāi)發(fā)


級(jí)別: 中級(jí)

Elliotte Harold (elharo@metalab.unc.edu), 副教授, Polytechnic University

2006 年 7 月 06 日

Elliotte Rusty Harold 介紹了 Subversion —— 一種開(kāi)放源碼、多用戶(hù)版本控制系統(tǒng),支持非 ASCII 文本和二進(jìn)制數(shù)據(jù)。通過(guò) Elliotte 的介紹,您可看到如何在 Eclipse 中配置 Subversion 支持(通過(guò) Subclipse 插件)、檢出一個(gè)項(xiàng)目、與您的存儲(chǔ)庫(kù)同步,隨后執(zhí)行一些常用的操作,如合并、修補(bǔ)、比較和刪除。

版本控制之于程序員,就好比安全網(wǎng)之于高空秋千表演者。知道安全網(wǎng)就在那里,萬(wàn)一自己摔落它能夠提供保護(hù),高空秋千表演者才能放心大膽地在空中飛躍。同樣,版本控制使您有能力去冒以往想都不敢想的風(fēng)險(xiǎn)。如果哪兒出了錯(cuò),您總是可以使自己的代碼回復(fù)到一個(gè)已知的、工作正常的版本。您可以在不觸及主干的分支中進(jìn)行試驗(yàn),而不會(huì)影響到其他小組成員。在已經(jīng)發(fā)布的產(chǎn)品的較老版本中發(fā)現(xiàn) bug 時(shí),您可以輕松檢出特定版本,以確認(rèn)、修訂,并生成該 bug 的修補(bǔ)程序。如果沒(méi)有版本控制,您必須極為慎之又慎,緩慢地推進(jìn),總而言之,生產(chǎn)力會(huì)更低。

Subversion 是一種開(kāi)放源碼的全新版本控制系統(tǒng),支持可在本地訪(fǎng)問(wèn)或通過(guò)網(wǎng)絡(luò)訪(fǎng)問(wèn)的數(shù)據(jù)庫(kù)和文件系統(tǒng)存儲(chǔ)庫(kù)。不但提供了常見(jiàn)的比較、修補(bǔ)、標(biāo)記、提交、回復(fù)和分支功能性,Subversion 還增加了追蹤移動(dòng)和刪除的能力。此外,它支持非 ASCII 文本和二進(jìn)制數(shù)據(jù),所有這一切都使 Subversion 不僅對(duì)傳統(tǒng)的編程任務(wù)非常有用,同時(shí)也適于 Web 開(kāi)發(fā)、圖書(shū)創(chuàng)作和其他在傳統(tǒng)方式下未采納版本控制功能的領(lǐng)域。

本文介紹了使用 Subversion 追蹤項(xiàng)目的基礎(chǔ)知識(shí),以使您在編寫(xiě)代碼時(shí)能夠承受更多的風(fēng)險(xiǎn)、享受更多的樂(lè)趣。

版本控制簡(jiǎn)史

當(dāng)我還是一名剛剛畢業(yè)的學(xué)生時(shí),我第一次在國(guó)家太陽(yáng)觀察站(National SSolar Observatory)接觸到了如今版本控制系統(tǒng)的鼻祖 —— SCCS。今天,已經(jīng)出現(xiàn)了數(shù)不勝數(shù)的版本控制系統(tǒng),而 SCCS 也早已被更強(qiáng)大的產(chǎn)品所取代,如 Visual SourceSafe、BitKeeper、Perforce 和開(kāi)源 CVS(參見(jiàn) 參考資料 部分)。

在開(kāi)放源碼程序員間,CVS 已成為一種事實(shí)上的 標(biāo)準(zhǔn)。Codehaus、Sourceforge、Savannah 和 Java™ 社區(qū)的 java.net 等站點(diǎn)中駐留的免費(fèi) CVS 使得為開(kāi)源項(xiàng)目建設(shè)存儲(chǔ)庫(kù)更為簡(jiǎn)單。以 CVS 為中心,已發(fā)展起一個(gè)大型的附件市場(chǎng),包括 TortoiseCVS、ViewCVS 和 Fisheye 等工具。

與其他版本控制系統(tǒng)相比,CVS 最令人稱(chēng)道的地方就是其非鎖定 存儲(chǔ)庫(kù),這使多個(gè)開(kāi)發(fā)人員能夠同時(shí)檢出同一個(gè)文件。CVS 在提交時(shí)解決沖突問(wèn)題,這就避免了沖突成為發(fā)展的瓶頸。CVS 第二個(gè)出色的特性就是它是一種網(wǎng)絡(luò)存儲(chǔ)庫(kù)。處于許多不同系統(tǒng)上的程序員可以通過(guò)公共的 Internet 訪(fǎng)問(wèn)相同的存儲(chǔ)庫(kù)。

逐漸失去優(yōu)勢(shì)的 CVS

CVS 在過(guò)去的十年中,為社區(qū)提供了優(yōu)質(zhì)的服務(wù),但它陳舊的劣勢(shì)開(kāi)始體現(xiàn)出來(lái)。首先,它實(shí)際上僅能處理 ASCII 文件。Unicode 文件會(huì)令 CVS 嚴(yán)重混亂。此外,CVS 存儲(chǔ)庫(kù)更改起來(lái)極為困難。CVS 沒(méi)有任何關(guān)于 “移動(dòng)” 操作的概念。它只能注意到,一個(gè)文件在一處被刪除了,而在一個(gè)新位置創(chuàng)建了另外一個(gè)文件。由于它不會(huì)連接兩個(gè)操作,因此也很容易使文件歷史軌跡丟失。設(shè)置 CVS 存儲(chǔ)庫(kù)時(shí),您必須非常謹(jǐn)慎地為每個(gè)文件選擇準(zhǔn)確的位置,因?yàn)樵谠O(shè)置之后,您幾乎就要一直使用這個(gè)位置了。

CVS 已經(jīng)不再適合現(xiàn)代開(kāi)發(fā),這一點(diǎn)越來(lái)越明顯。特別是 CVS 只能滿(mǎn)足老式 C 程序員的 ASCII 需求,而對(duì) Web 開(kāi)發(fā)人員和其他非傳統(tǒng)用戶(hù)來(lái)說(shuō),CVS 實(shí)際上根本不起作用。在您開(kāi)始考慮存儲(chǔ)整個(gè) Web 站點(diǎn)時(shí),在 CVS 中,將文件從一個(gè)目錄移動(dòng)到另外一個(gè)目錄是關(guān)鍵考慮事項(xiàng)。因此,在幾年前,許多核心 CVS 開(kāi)發(fā)人員認(rèn)為,已經(jīng)到了利用他們多年來(lái)使用 CVS 時(shí)學(xué)到的經(jīng)驗(yàn)和教訓(xùn)、從頭開(kāi)始創(chuàng)建新一代開(kāi)放源碼存儲(chǔ)庫(kù)的時(shí)機(jī)。在 2004 年年初,他們的努力結(jié)出了豐碩的果實(shí),那就是 Subversion 1.0。

Subversion 的支持與采納

程序員(特別是那些依賴(lài)版本控制的程序員)是一個(gè)非常謹(jǐn)慎的群體,Subversion 著實(shí)用了很長(zhǎng)一段時(shí)間,才得到他們的廣泛接受。很少有程序員愿意沖在易于流血的最前沿,即便是他們已經(jīng)因?yàn)?CVS 受了傷。甚至是在 Subersion 變得可靠之后,仍然用了好幾年的時(shí)間,所有第三方編輯器、IDE 和文檔規(guī)范才相繼跟進(jìn)。而 Subversion 依然在不斷改進(jìn),BBEdit 和 Eclipse 等第三方工具現(xiàn)在已經(jīng)有了足夠好的 Subversion 支持。逐漸地,新項(xiàng)目也紛紛選擇 Subversion 滿(mǎn)足其版本控制需求,而老項(xiàng)目正在向 Subversion 移植。最近,Apache Software Foundation 已移植到 Subversion。已實(shí)現(xiàn)移植的項(xiàng)目包括 Xerces XML 解析器、Apache HTTP Server 和 Spamassassin。





回頁(yè)首


通過(guò) IDE 使用 Subversion

您可通過(guò)命令行使用 Subversion,但若將其與您的 IDE 集成更為便捷。IntelliJ IDEA 5.0 及后續(xù)版本均包含對(duì) Subversion 的內(nèi)置支持。NetBeans 還不支持 Subversion,但相關(guān)工作已經(jīng)在開(kāi)展,未來(lái)版本中將提供支持。對(duì)于 Eclipse,您需要安裝 Subclipse 插件。本文使用 Eclipse 作為 IDE。

Subclipse 的安裝與其他 Eclipse 插件類(lèi)似:

  1. 在 Eclipse 中,選擇 Help Software Updates | Find and Install...。

  2. 在向?qū)У牡谝粋€(gè)面板中,單擊 Search for new features to install 單選按鈕,并單擊 Next

  3. 在向?qū)У牡诙€(gè)面板中,單擊 New Remote Site。輸入 Subclipse 作為名稱(chēng),輸入 http://subclipse.tigris.org/update_1.0.x 作為 URL。然后單擊 Finish。

    這將啟動(dòng)另外一個(gè)小的向?qū)?。下一個(gè)對(duì)話(huà)框應(yīng)為您提供一個(gè)可安裝的特性 —— Subclipse。選中它并單擊 Next

  4. 接受許可協(xié)議,完成安裝。

程序包目前未經(jīng)過(guò)數(shù)字簽名,但只要您是按照第三步的 URL 下載的,就是安全的。

Subversion 快捷方式

如果您目前常常使用 Subversion,您可能希望將其添加到 Eclipse 的 New、Open Perspective 和 Show View 菜單中。為此,選擇 Window/Customize Perspective... 并在 Shortcut 分類(lèi)列表中選中 SVN。這將使您可在目前可看到 CVS 的所有菜單中訪(fǎng)問(wèn) Subversion。

安裝程序包后,您必須重新啟動(dòng) Eclipse,隨后才能使用 Subversion。完成之后,您就可以與如今使用 CVS 大體相同的方式使用 Subversion 了,只有為數(shù)不多的區(qū)別。

檢出項(xiàng)目

設(shè)置一個(gè)新的 Subversion 存儲(chǔ)庫(kù),特別是網(wǎng)絡(luò)存儲(chǔ)庫(kù)相對(duì)來(lái)說(shuō)較為復(fù)雜。但若您正在連接一個(gè)現(xiàn)有項(xiàng)目,第一次檢出文件就相當(dāng)輕松。在 File 菜單中選擇 New/Other...。這些步驟將為您打開(kāi)如 圖 1 所示的對(duì)話(huà)框:


圖 1. 通過(guò) Subversion 啟動(dòng)一個(gè)新項(xiàng)目

接下來(lái),打開(kāi) SVN 文件夾,選擇 Select Checkout Projects from SVN,并單擊 Next 以顯示如圖 2 所示的對(duì)話(huà)框:


圖 2. Select/Create Location

第一次從存儲(chǔ)庫(kù)檢出時(shí),您需要選擇 Create a new repository location 并單擊 Next。這將為您打開(kāi)如圖 3 所示的對(duì)話(huà)框:


圖 3. 為存儲(chǔ)庫(kù)鍵入 URL

您在這里提供存儲(chǔ)庫(kù)的 URL。這只是一個(gè)普通的 http URL,如 http://svn.apache.org/repos/asf/xerces/java/。這一次單擊 Next 時(shí),Eclipse 連接到存儲(chǔ)庫(kù),并查找可檢出的文件夾。通常有三個(gè)文件夾:branches、tags 和 trunk,如圖 4 所示。Branches 文件夾用于試驗(yàn)。Tags 通常標(biāo)識(shí)較老的、已發(fā)布的軟件版本。而大多數(shù)時(shí)候,您都希望在主分支上工作(CVS 稱(chēng)之為 HEAD),因此選擇 trunk 并單擊 Next。


圖 4. 選擇要檢出的修訂版

您現(xiàn)在有兩個(gè)選擇:Check out as a Project configured using the New Project WizardCheck out as a project in the workspace,如圖 5 所示。您可按自己的需要任意選擇,您可能希望為項(xiàng)目命名,因?yàn)槟J(rèn)名稱(chēng)為 “trunk”。最后,單擊 Finish。


圖 5. 檢出項(xiàng)目的兩種方法

Eclipse 現(xiàn)在從您選擇的分支、主干或標(biāo)記中下載所有源文件。如果您選擇的是 Check out as a project in the workspace,則必須完成 Eclipse 的 New Project 向?qū)?,以設(shè)置編譯器級(jí)別、項(xiàng)目布局和其他選項(xiàng)。如果您未使用 New Project 向?qū)?,則需要手動(dòng)設(shè)置構(gòu)建路徑和其他選項(xiàng),就像您在自己的文件系統(tǒng)的一個(gè)目錄中創(chuàng)建了一個(gè)項(xiàng)目那樣。確實(shí),您所做的與那極為相似。所有文件都是本地存儲(chǔ)的。對(duì)于構(gòu)建、運(yùn)行和調(diào)試這樣的普通操作,Eclipse 不關(guān)心文件是否已為版本控制檢出。





回頁(yè)首


驗(yàn)證設(shè)置

此時(shí),最好進(jìn)行一次快速、明智的檢查,確保您已正確地設(shè)置了構(gòu)建路徑。如果沒(méi)有明顯的問(wèn)題,并且能夠運(yùn)行單元測(cè)試,那么即可放心地繼續(xù)下去了。

如果存在問(wèn)題,檢查項(xiàng)目屬性,以確保正確地設(shè)置了源路徑和類(lèi)路徑。使之差一非常常見(jiàn),無(wú)論是多一還是少一。因此,最終 Eclipse 會(huì)認(rèn)為您的類(lèi)的名稱(chēng)類(lèi)似于 src.org.apache.xerces.parsers.SAXParserapache.xerces.parsers.SAXParser,而不是 org.apache.xerces.parsers.SAXParser。在多文件夾項(xiàng)目中,Eclilpse 也常常會(huì)錯(cuò)誤地將一個(gè)數(shù)據(jù)文件夾標(biāo)記為源文件夾或遺漏了一個(gè)源文件夾。如果發(fā)生了以上任何一種小故障,您都必須修復(fù)錯(cuò)誤,然后才能基礎(chǔ)。

多文件提交

Subversion 可在一個(gè)原子操作中提交數(shù)個(gè)文件(與之形成對(duì)比,CVS 將每一個(gè)分開(kāi)的文件視為一次獨(dú)立提交)。為此,只需在 Package Explorer 中選擇您想提交的所有文件(按住 ctrl 鍵或 Command 鍵,然后依次單擊所需文件),然后在上下文菜單中選擇 Team/Commit... 即可。如果您隨后需要取消更改或?qū)⒋鎯?chǔ)庫(kù)回復(fù)到特定更改之前的狀態(tài),這種方法非常有用。

要檢查錯(cuò)誤,選擇 Project | Properties,然后找到 Java Build Path。您可在 source 選項(xiàng)卡中修訂任何向?qū)ё鲥e(cuò)的地方。您可能還要添加另外一個(gè)項(xiàng)目需要的 JAR 歸檔,Eclpse 在檢出時(shí)不會(huì)注意到此歸檔。您還可在 library 選項(xiàng)卡的 Java Build Path 中添加此歸檔。

請(qǐng)做好心理準(zhǔn)備,您可能要在這里花上一點(diǎn)時(shí)間。Eclipse 很少會(huì)在第一次就讓一切正確無(wú)誤,每個(gè)項(xiàng)目組織其文件和庫(kù)的方式又總會(huì)有所不同。

與存儲(chǔ)庫(kù)同步

接下來(lái)您就可以照常編輯文件了。作出您希望的任何更改。運(yùn)行單元測(cè)試。優(yōu)化代碼。更正注釋中的拼寫(xiě)錯(cuò)誤。完成部分工作后,使用上下文菜單并選擇 Team/Commit...。您將看到圖 6 所示的對(duì)話(huà)框,要求您輸入提交注釋?zhuān)?/p>
圖 6. Subclipse 的提交對(duì)話(huà)框


同樣,若其他人更改了您希望應(yīng)用于您的副本的存儲(chǔ)庫(kù),只要在 Package Explorer 中選中文件,并從上下文菜單中選擇 Team/Update 即可。這會(huì)以主副本替換您的副本。





回頁(yè)首


合并

如果您已進(jìn)行了更改,其他開(kāi)發(fā)人員也進(jìn)行了更改,那么您就必須手動(dòng)合并文件。對(duì)于絕大多數(shù)簡(jiǎn)單更改,Subversion 可推斷出需要進(jìn)行怎樣的處理,無(wú)需人工干預(yù)。但對(duì)于較大、較為復(fù)雜、存在沖突的更改,您可能需要參與進(jìn)來(lái),手動(dòng)合并更改。

Subclipse 在這里可提供一些幫助,但實(shí)際上我發(fā)現(xiàn),在一個(gè)獨(dú)立的窗口或選項(xiàng)卡中直接實(shí)現(xiàn)一個(gè)臨時(shí)文件副本,通過(guò)存儲(chǔ)庫(kù)更新本地副本以覆蓋我的更改,然后通過(guò)臨時(shí)副本重新輸入更改,這樣做往往更容易。若存儲(chǔ)庫(kù)中的更改與我做出的更改相比較少,我就會(huì)從存儲(chǔ)庫(kù)實(shí)現(xiàn)臨時(shí)副本,并通過(guò)它進(jìn)行提交,而不是更新。隨后我會(huì)重新應(yīng)用那些更改。這聽(tīng)上去非常復(fù)雜,但事實(shí)通常并非如此,它的發(fā)生幾率幾乎與您希望的一樣低。即便是您出了錯(cuò),忘記重新應(yīng)用更改或是錯(cuò)誤地應(yīng)用了更改,總是可以找到所有更改的完整歷史(包括您覆蓋的那些更改)供您參考。實(shí)際上您從未徹底丟失任何東西。

如果您不確定已更改了哪些文件,同步視圖可以為您顯示這些文件。您還可打開(kāi)標(biāo)簽修飾(label decoration)來(lái)查看上次提交/更新后哪些文件發(fā)生過(guò)更改。選擇 Help | Preferences,然后再選擇 General/Appearance/Label Decorations。然后選中 SVN 復(fù)選框。(實(shí)際上該復(fù)選框在默認(rèn)情況下就是選中的。)





回頁(yè)首


修補(bǔ)

如果您不具備正在使用的存儲(chǔ)庫(kù)的提交權(quán)限,就需要制作一個(gè)修補(bǔ)程序,然后將其發(fā)送給維護(hù)人員。只要選中您希望比較的文件,然后從上下文菜單中選擇 Team/Create Patch... 即可。您可以隨自己的方便將修補(bǔ)程序保存到文件或剪貼板中。隨后可通過(guò)電子郵件將其發(fā)送給維護(hù)人員,或者在 bug 報(bào)告中附上該修補(bǔ)程序。修補(bǔ)程序本身采用的格式與 CVS 所使用的 diff 格式相同。

應(yīng)用他人發(fā)送給您的修補(bǔ)程序就沒(méi)那么復(fù)雜了,只要選中您想修補(bǔ)的文件或項(xiàng)目。從上下文菜單中選擇 Team/Apply Patch... ,然后平臺(tái)上慣用的 open file 對(duì)話(huà)框選擇修補(bǔ)程序文件即可。





回頁(yè)首


比較

如果您已作出了一些更改,并且希望看看您的副本與存儲(chǔ)庫(kù)中的版本有怎樣的差別,只需在上下文菜單中選擇 Compare/Latest From Repository 即可。這實(shí)際上與 CVS 中比較功能的工作方式完全相同。圖 7 顯示了比較功能的工作情況:


圖 7. 在 Subclipse 中比較兩個(gè)文件





回頁(yè)首


刪除

刪除文件也很輕松。只要在 Eclipse 的程序包管理器中刪除文件,然后提交父文件夾即可。刪除目錄要略微復(fù)雜一點(diǎn)。您可以選擇一個(gè)目錄并刪除它。目錄中的所有文件將會(huì)立即被刪除。但在您刪除后,目錄本身及其所有子目錄又會(huì)立即出現(xiàn)在原來(lái)的位置。要真正地刪除一個(gè)文件夾,您需要選中 “已刪除” 的文件夾并提交它。同一規(guī)則也適用于將一個(gè)文件從一個(gè)位置移動(dòng)到另外一個(gè)位置的情況。

小心!

Apache 項(xiàng)目將源代碼提交到了不屬于自己、現(xiàn)在也無(wú)法刪除的 Subversion 存儲(chǔ)庫(kù)中,使自己陷入麻煩。Apache 可以隱藏代碼,但如果您知道到哪兒去看,您會(huì)發(fā)現(xiàn)這些代碼就在那兒。擁有源代碼的人可能是惡意的,也有可能向 Apache 的 ISP 發(fā)送一條 DMCA 下線(xiàn)通知,從而使 Apache 脫離 Internet。Apache 惟一的防御措施就是徹底刪除其存儲(chǔ)庫(kù)。

在您刪除了一個(gè)文件或一個(gè)文件夾之后,依然可以通過(guò)存儲(chǔ)庫(kù)使其還原,即便是已經(jīng)提交了刪除。一旦您將任何內(nèi)容放進(jìn)存儲(chǔ)庫(kù),那么就永遠(yuǎn)不會(huì)真正、永久地失去它,這有時(shí)候會(huì)產(chǎn)生問(wèn)題。例如,假設(shè)您發(fā)現(xiàn)有人意外的檢入了其整個(gè)主目錄,包括其 Quicken 數(shù)據(jù)文件和所有來(lái)自其愛(ài)人的情書(shū)歸檔。您很希望能夠徹底消除 這些被誤提交的文件,這樣就不會(huì)有其他人得到這些文件。盡管這是一個(gè)非同尋常的操作(無(wú)論如何,版本控制系統(tǒng)的目的就在于永遠(yuǎn)地保留每一個(gè)文件的每個(gè)修訂版),但有時(shí)也是必要的。令人沮喪的是,Subversion 漏掉了這個(gè)重要的特性。

由于沒(méi)有徹底消除的命令,所以我在為外部可見(jiàn)的存儲(chǔ)庫(kù)使用 Subversion 時(shí)非常不安。CVS 也沒(méi)有這樣的命令,但在 CVS 中,您完全有可能在不毀掉存儲(chǔ)庫(kù)的情況下手動(dòng)刪除錯(cuò)誤提交的文件。





回頁(yè)首


結(jié)束語(yǔ)

對(duì)于內(nèi)部存儲(chǔ)庫(kù),Subversion 提供了遠(yuǎn)超過(guò) CVS 的改進(jìn)。如果添加了某種類(lèi)型的徹底消除功能,它也應(yīng)同樣適于外部存儲(chǔ)庫(kù)。盡管像 Eclipse 這樣的工具對(duì) Subversion 的第三方支持還不像 CVS 支持那樣普遍,但形勢(shì)正在迅速地發(fā)生變化。Subversion 會(huì)成為新項(xiàng)目的默認(rèn)源代碼存儲(chǔ)庫(kù)。尚無(wú)源代碼控制的現(xiàn)有項(xiàng)目應(yīng)盡快檢入 Subversion。而已有 CVS 存儲(chǔ)庫(kù)的現(xiàn)有項(xiàng)目可能仍在觀望,希望等到他們所依賴(lài)的全部工具均全面支持 Subversion 后再進(jìn)行切換。但這些項(xiàng)目最終也會(huì)移植到 Subversion。Subversion 中的改進(jìn)如此顯著,令人難以忽略。未來(lái)必將屬于 Subversion。





回頁(yè)首


參考資料

學(xué)習(xí)

獲得產(chǎn)品和技術(shù)
  • Subversion:針對(duì)不同平臺(tái)的開(kāi)放源碼及二進(jìn)制版本。

  • Subclipse:Eclipse Subversion 插件。

  • Teepee:NetBeans Subversion 項(xiàng)目。

  • TMate:IntelliJ IDEA Subversion 插件。


討論




回頁(yè)首


關(guān)于作者

Elliotte Rusty Harold 來(lái)自新奧爾良, 現(xiàn)在他還定期回老家喝一碗美味的秋葵湯。不過(guò)目前,他和妻子 Beth 定居在紐約臨近布魯克林的 Prospect Heights,同住的還有他的貓咪 Charm(取自夸克)和 Marjorie(取自他岳母的名字)。他是 Polytechnic 大學(xué)計(jì)算機(jī)科學(xué)系的一名副教授,講授 Java 和面向?qū)ο缶幊獭K?Cafe au Lait Web 站點(diǎn)已經(jīng)成為 Internet 上最流行的獨(dú)立 Java 站點(diǎn)之一,它的姊妹站點(diǎn) Cafe con Leche 是最流行的 XML 站點(diǎn)之一。他編寫(xiě)的圖書(shū)包括 Effective XML、Processing XML with Java、Java Network ProgrammingJava I/O。目前,他在從事處理 XML 的 XOM API、Jaxen XPath 引擎和 Jester 測(cè)試覆蓋工具的開(kāi)發(fā)工作。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶(hù)發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Eclipse下使用Subversion
如何結(jié)合使用 Subversion 和 Eclipse
SubVersion和Subclipse的簡(jiǎn)單使用方法
Subclipse logoEclipse的SVN插件 Subclipse
Eclipse3.6在線(xiàn)安裝SVN
【原創(chuàng)】在Eclipse中使用Subversion
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服