持續集成學習筆記
1. 如何系統的學習全棧
去黑馬程序員復社區,找到學習線路制圖,一共是七個階段:web、核心編程、前端進階、後端框架、大型項目的構架、移動端的開發,擴展的課程有幾個項目聊天室還有php如何爬蟲。你看過之後大概就有學習的方向了,下面還有配套課程的視頻和筆記,總之就是很全面。完全是系統的學習了。
2. 求1份讀書筆記關於價值觀,人生觀的大概3000字
《敏捷軟體開發:原則、模式與實踐》讀書筆記
(一)重溫《敏捷軟體開發宣言》
我們正在通過親身實踐和幫助他人實踐,揭示更好的軟體開發方法。通過這項工作,我們認為:
個體和交互 勝過 過程和工具
可以工作的軟體 勝過 面面俱到的文檔
客戶合作 勝過 合同談判
相應變化 勝過 遵循計劃
雖然右項也具有價值,
但我們認為左項具有更大的價值。
原則性的東東,我們做到了多少?
law_bbc 2007-11-16 03:28 PM
(二)學習《敏捷宣言遵循的原則》
我們遵循以下原則:
●我們最優先要做的是通過盡早地、持續地交付有價值的軟體來使客戶滿意。
●即使到了開發的後期,也歡迎改變需求。敏捷過程利用變化給客戶創造競爭優勢。
●經常性地交付可以工作的軟體,交付的間隔可以從幾個星期到幾個月,交付的時間間隔越短越好。
●在整個項目開發期間,業務人員和開發人員必須天天都在一起工作。
●圍繞被激勵起來的個體來構建項目。給他們提供所需的環境和支持,並且信任他們能夠完成工作。
●在團隊內部,最具有效果並且富有效率的傳遞信息的方法,就是面對面地交談。
●工作的軟體是首要的進度度量標准。
●敏捷過程提倡可持續的開發速度。責任人、開發者和用戶應該能夠保持一個長期的、恆定的開發速度。
●不斷地關注優秀的技能和好的設計會增強敏捷能力。
●簡單——使未完成的工作最大化的藝術——是根本的。
●最好的框架、需求和設計出自於自組織的團隊。
●每隔一定時間,團隊會在如何才能更有效地工作方面進行反省,然後相應地對自己的行為進行調整。
好的原則,知易行難的原則。作為努力的方向吧!
law_bbc 2007-11-17 08:49 PM
(三)看看《面向對象設計的原則》
SRP 單一職責原則
就一個類而言,應該僅有一個引起它變化的原因。
OCP 開發-封閉原則
軟體實體(類、模塊、函數等)應該是可以擴展的,但是不可修改。
LSP Liskov替換原則
子類型必須能夠替換掉它們的基類型。
DIP 依賴倒置原則
抽象不應該依賴於細節,細節應該依賴於抽象。
ISP 介面隔離原則
不應該強迫客戶依賴於他們不用的方法。介面屬於客戶,不屬於它所在的類層次結構。
REP 重用發布等價原則
重用的粒度就是發布的粒度。
CCP 共同封閉原則
包中的所有類對於同一類性質的變化應該是共同封閉的。一個變化若對一個包產生影響,則對該包中所有類產生影響,而對其他包不造成任何影響。
CRP 共同重用原則
一個包中的所有類應該是共同重用的。如果重用了包中的一個類,那麼就要重用包中所有類。
ADP 無環依賴原則
在包的依賴關系圖中不允許存在環。
SDP 穩定依賴原則
朝著穩定的方向進行依賴。
SAP 穩定抽象原則
包的抽象程度應該和其穩定程度一致。
開篇後前幾頁都是些原則性的東東嘔。。。
law_bbc 2007-11-19 09:15 PM
(四)了解《極限編程實踐》的概念
完整團隊
XP項目的所有參與者(開發人員、業務分析師、測試人員等等)一起工作在一個開放的場所中,他們是同一個團隊的成員。這個場所的牆壁上隨意懸掛著大幅的、顯著的圖表以及其他一些顯示他們進度的東西。
計劃游戲
計劃是持續的,循序漸進的。每2周,開發人員就為下2周估算候選特性的成本,而客戶則根據成本和商務價值來選擇要實現的特性。
客戶測試
作為每個所期望的特性的一部分,客戶定義出自動驗收測試來表明該特性可以工作。
簡單設計
團隊保持設計恰好和當前系統功能相匹配,它通過了所有的測試,不包含任何重復,表達出了編寫者想表達的所有東西,並且包含盡可能少的代碼。
結對編程
所有的產品軟體都是由兩個程序員、並排坐在一起在同一台機器上構建的。
測試驅動開發
程序員以非常短的循環周期工作,他們先增加一個失敗的測試,然後再使之通過。
改進設計
隨時改進糟糕的代碼,保持代碼盡可能的干凈、具有表達力。
持續集成
團隊總是使系統完整地被集成。
集體代碼所有權
任何結對的程序員都可以在任何時候改進任何代碼。
編碼標准
系統中所有的代碼看起來就好像是被單獨一個——非常值得信任的——人編寫的。
隱喻
團隊提出一個程序工作原理的共同景像。
可持續的速度
團隊只有持久才有獲勝的希望。他們以能夠長期維持的速度努力工作。他們保存精力,他們把項目看作是馬拉松長跑,而不是全速短跑。
極限編程的思想在很多開發團隊中得到不同程度的應用。。
law_bbc 2007-11-20 11:36 PM
(五)第I部分 敏捷開發之篇首語
作者首先引用了Tom DeMacro和Timothy Lister在《人件》第5頁的話,「人與人之間的交互是復雜的,並且其效果從來都難以預期,但卻是工作中最為重要的方面。」
然後從三個層次闡述了對引言的理解:
(一)原則、模式和實踐都是重要的,但是使它們發揮作用的是人。正如Alistair Cockburn所說,「過程和方法對於項目的結果只有次要的影響,首要的影響是人。」
(二)如果想要項目取得成功,就必須構建起具有合作精神的、自組織的團隊。
(三)那些鼓勵構建這種團隊的公司比那些認為軟體團隊不過是由無關緊要的、雷同的一群人堆砌的公司具有大得多的競爭優勢,有凝聚力的團隊將具有最強大的軟體開發力量。
人、團隊、公司,逐層深入、環環相接,發人深省啊。
law_bbc 2007-11-21 11:49 PM
(六)第I部分 敏捷開發 第1章 敏捷實踐之篇首語
海因里希•海涅(1797—1856,德國詩人)說:「教堂尖頂上的風標,即使由鋼鐵製成,如果不懂得順應風勢的藝術,一樣會被暴風立即摧毀。」
許多人都經歷過沒有實踐的指導而導致的項目噩夢。缺乏有效的實踐會導致不可預測性、重復的錯誤以及努力的白白浪費。延期的進度、增加的預算和低劣的質量致使客戶對我們喪失信心。更長時間的工作卻生產出更加低劣的軟體產品,也使得開發人員感到沮喪。
一旦經歷了這樣的慘敗,就會害怕重蹈覆轍。這種恐懼激發我們創建一個過程來約束我們的活動、要求有某些人為製品(artifacts)輸出。我們根據過去的經驗來規定這些約束和輸出,挑選那些在以前項目中看起來好像工作得不錯的方法。我們希望這些方法這次還會有效,以消除我們的恐懼。
然而,項目並沒有簡單到使用一些約束和輸出就能可靠防止錯誤的地步。當連續犯錯誤的時候,我們會對錯誤進行診斷,並在過程中增加更多的約束和人為製品來防止以後重犯這樣的錯誤。經過多次這樣的增加之後,我們就會不堪巨大、笨重的過程的重負,極大地降低我們完成工作的能力。
一個大而笨重的過程會產生它本來企圖去解決的問題。它降低了團隊的開發效率,使得進度延期、預算超支。它降低了團隊的響應能力,使得團隊經常創建錯誤的產品。遺憾的是,許多團隊認為,這種結果是他們沒有採取更多的過程方法引起的。因此,在這種失控的過程膨脹中,過程會變得越來越龐大。
用失控的過程膨脹來形容2000年前後的許多軟體公司的情形是很合適的。雖然有很多團隊在工作中沒有使用過程的方法,但是採用龐大、重型的過程方法的趨勢卻在快速增長,在大公司中尤為如此。
看到過程方法的由來、演變,不難體會過猶不及。。。
law_bbc 2007-11-22 11:27 PM
(七)1.1敏捷聯盟
2001年初,由於看到許多公司的軟體團隊陷入了不斷增長的過程的泥潭,一批業界專家聚集在一起概括出了一些可以讓軟體開發團隊具有快速工作、響應變化能力的價值觀(value)和原則。他們稱自己為敏捷(agile)聯盟。在隨後的幾個月中,他們創建了一份價值觀聲明,也就是敏捷聯盟宣言(The Manifesto of the Agile Alliance)。
1.個體和交互勝過過程和工具
人是獲得成功的最為重要的因素。團隊中只有好的過程而沒有優秀的成員註定要失敗,不好的過程可以使最優秀的團隊成員失去效用。如果不能作為一個團隊工作,那麼即使擁有一批優秀的成員也一樣會慘敗。
合作、溝通以及交互能力比單純的編程能力更為重要。一個由平均水平程序員組成的團隊,如果具有良好的溝通能力,要比那些擁有一批高水平程序員但不能交流的團隊更有可能獲得成功。
合適的工具對於成功非常重要,像編譯器、IDE、源代碼控制系統等。但工具的作用不應被過分的誇大,使用過多龐大、笨重的工具就像缺少工具一樣,都是不好的。
建議從使用小工具開始,嘗試一個工具,直到發現它無法適用時才更換。不要認為更大、更好的工具可以自動地幫你做得更好,通常它們帶來的障礙要大於幫助。
團隊的構建要比環境的構建重要的多,應該首先致力於構建團隊,然後再讓團隊基於需要配置環境。
看來作者更多的著眼於「度」,很辯證的。
law_bbc 2007-11-23 11:24 PM
(八)2.可以工作的軟體勝過面面俱到的文檔
沒有文檔的軟體是一種災難。代碼不是傳達系統原理和結構的理想媒介。團隊需要編制易於閱讀的文檔,來對系統及其設計決策的依據進行描述。
過多的文檔比過少的文檔更糟。眾多文檔意味著大量時間,而保持文檔與代碼同步所需時間更多;一旦文檔與代碼失去同步,就變成龐大、復雜的謊言,會造成重大誤導。
對於團隊來說,編寫並維護一份系統原理和結構方面的文檔總是個好主意,但是那份文檔應該是短小、主題突出的。
在給新的團隊成員傳授知識方面,最好的兩份文檔是代碼和團隊。代碼真實地表達了所做的事情,雖然從代碼中提取系統原理和結構可能是困難的,但代碼是唯一沒有二義的信息源。在團隊成員的頭腦中保存著時常變化的系統脈絡圖,人與人之間的交互是把這份脈絡圖傳授給他人的最快、最有效的方式。
許多團隊因為重視文檔而非軟體,導致進度拖延,這常常是個致命的缺陷。「Martin文檔第一定律」可以防止該缺陷:直到迫切需要並且意義重大時,才來編制文檔。
在中國的很多公司、團隊能做到嗎?
law_bbc 2007-11-24 10:29 PM
(九)3.客戶合作勝過合同談判
僅僅寫下一份關於你想要的軟體的描述,就讓人在固定的時間以固定的價格開發,這種方式將導致低劣的質量和失敗,有時失敗很慘重。
成功的項目需要有序、頻繁的客戶反饋,。不是依賴合同或關於工作的陳述,而是讓軟體的客戶和開發團隊密切地在一起工作,並盡量經常地提供反饋。
一個指明了需求、進度和項目成本的合同存在根本性的缺陷。在大多數情況下,合同中指明的條款遠在項目完成前就失去了意義。那些為開發團隊和客戶的協同工作方式提供指導的合同才是最好的合同。
項目成功的關鍵是和客戶真誠的協作,而合同指導了這種協作。
law_bbc 2007-11-27 12:31 AM
(十)4.響應變化勝過遵循計劃
響應變化能力常常決定著項目的成敗,因此我們應該制定靈活、適應商務和技術方面變化的計劃。
計劃不宜考慮過遠。原因:1、商務環境變化帶來需求變動;2、客戶可能隨著系統運作的進程改變需求;3、需求不變,我們仍然無法很好地估算出開發所需時間。
較好的做計劃的策略是:為下2周做詳細計劃,為下3個月做粗略計劃,再以後做極為粗糙的計劃。計劃中逐漸降低的細致度,可以保證除近幾周難以改變,計劃的其餘部分仍保持著靈活性。
law_bbc 2007-11-28 02:44 PM
(十一)1.2原則
從上述的價值觀引出了12條原則,它們是敏捷實踐區別於重型過程的特徵所在。
1.我們最優先要做的是通過盡早地、持續地交付有價值的軟體來使客戶滿意。
MIT Sloan管理評論雜志刊登過一篇論文,分析了對於公司構建高質量產品方面有幫助的軟體開發實踐。該論文發現了很多對於最終系統質量有重要影響的實踐,其中一個實踐表明,盡早地交付具有部分功能的系統和系統質量之間存在很強相關性。該論文指出,初期交付的系統中包含的功能越少,最終交付的系統質量就越高。
該論文的另一項發現是,以逐漸增加功能的方式經常性地交付系統和最終質量之間有很強相關性。交付越頻繁,最終產品的質量就越高。
敏捷實踐會盡早地、經常地進行交付。我們努力在項目開始的幾周內就交付一個具有基本功能的系統,然後我們努力每2周就交付一個功能漸增的系統。
如果客戶覺得目前的功能已經足夠,客戶可以選擇把這些系統加入到產品中。
或者,他們可以簡單地選擇再檢查一遍所有的功能,並指出他們想要做的改變。
law_bbc 2007-11-29 11:33 PM
(十二)2.即使到了開發的後期,也歡迎改變需求。敏捷過程利用變化為客戶創造競爭優勢。
這是一個關於態度的聲明。敏捷過程的參與者不懼怕變化。他們認為改變需求是好事情,因為那些改變意味著團隊已經學到了許多如何滿足市場需要的知識。
敏捷團隊會非常努力地保持軟體結構的靈活性,這樣當需求變化時,對於系統造成的影響是最小的。
3.經常地交付可以工作的軟體,交付的周期可以從幾周到幾個月,交付的時間間隔越短越好。
我們不贊成交付大量的文檔或計劃,我們認為那不是真正要交付的東西,我們關注的目標是交付滿足客戶需要的軟體。
4.在整個項目開發期間,業務人員和開發人員必須天天在一起工作。
為了能夠以敏捷的方式進行項目開發,客戶、開發人員以及涉眾之間就必須進行有意義的、頻繁的交互。軟體項目不像發射出去就能自動導航的武器,必須要對項目進行持續不斷的引導。
law_bbc 2007-12-2 12:51 PM
(十三)5.圍繞被激勵起來的個人構建項目。給他們提供所需的環境和支持,並且信任他們能夠完成工作。
在敏捷項目中,人被認為是項目取得成功的最重要的因素。所有其他因素——過程、環境和管理對人有負面影響時就要進行改變。
6.在團隊內部最具效果和最富的信息傳遞方法就是面對面交談。
在敏捷項目中,首要、默認的溝通方式就是面對面交談。敏捷團隊不需要書面的規范、計劃或設計。不會在文檔中包含所有項目信息,只在迫切需要和意義重大時才編寫文檔。
7.工作的軟體是首要的進度度量標准。
敏捷項目通過度量當前軟體滿足客戶需求的數量來度量開發進度,而不是根據所處開發階段、已編寫文檔的多少或已構建基礎結構代碼的數量進行度量。
8.敏捷過程提倡可持續開發速度,責任人、開發者和客戶應該能夠保持一個長期的、恆定的開發速度。
敏捷過程不是50米短跑,跑得過快會導致團隊精力耗盡、出現短期行為以至於崩潰。敏捷團隊會測量自己的速度,他們不容許自己過於疲憊,他們不會借用明天的精力來在今天多完成一點工作,他們工作在一個可以於整個項目開發期間保持最高質量標準的速度上。
law_bbc 2007-12-3 11:57 PM
(十四)9.不斷關注優秀的技能和好的設計可以提高敏捷能力
高的產品質量是獲取高的開發速度的關鍵,保持軟體盡可能簡潔、健壯是快速開發軟體的途徑。因而所有敏捷團隊成員都致力於只編寫他們能夠編寫的最高質量的代碼,如果他們製造了混亂會在當天把它清理干凈。
10.簡單——使未完成工作最大化的藝術——是根本的。
敏捷團隊不會去構建華而不實的系統,他們總是更願意採用和目標一致的最簡單的方法。他們並不看重對於明天會出現問題的預測,也不會在今天就對那些問題進行防衛。他們會在今天以最高的質量完成最簡單的工作,深信即使明天發生問題也會很容易進行處理。
11.最佳的架構、需求和設計出自於自組織團隊。
敏捷團隊是自組織團隊。任務不是由外部分配給單個成員,而是分配給整個團隊,再由團隊確定完成任務的最佳方法。
敏捷團隊共同解決項目所有方面的問題。每一個成員都具有項目中所有方面的參與權,整個團隊共同承擔系統架構、需求或者測試等責任,每一個成員都能夠影響它們。
12.每隔一定時間,團隊會在如何才能更有效地工作方面進行反省,然後相應地調整自己的行為。
敏捷團隊會不斷地對團隊的組織方式、規則、規范、關系等進行調整,他們知道為了保持團隊的敏捷性必須隨著環境的變化而變化。
law_bbc 2007-12-5 01:49 AM
(十五)第二章 極限編程概述
2.1極限編程實踐
極限編程(XP)是敏捷方法中最著名的一個,它由一系列簡單卻相互依賴的實踐組成,這些實踐結合在一起形成了一個勝過部分結合的整體。
2.1.1客戶作為團隊成員
我們希望客戶和開發人員在一起緊密地工作,從而知曉對方所面臨的問題並共同解決之。
XP團隊中的客戶是指定義產品特性並排列這些特性優先順序的人或團體。在XP項目中,無論誰是客戶,他們都是能夠和團隊一起工作的團隊成員。
客戶和開發人員最好在同一個房間工作,工作距離小於100米次之。距離越遠越難以融入團隊,無法成為真正的團隊成員。
如果確實無法於客戶一起工作,建議去尋找能夠在一起工作、願意並能夠代替真正客戶的人。
2.1.2用戶素材
為了制定計劃必須知道和項目需求有關的內容,必須知道存在許多細節、細節的大致分類,但是你不必知道特定的細節。
需求的特定細節很可能隨時間而變化,看到新系統問世是關注需求的最佳時刻。
在XP中我們和客戶反復討論,以獲取對需求細節的理解,但是不去捕獲那些細節。需求估算是基於和客戶交談期間所得到的對細節的理解進行的。
用戶素材就是正在進行的關於需求談話的助記符,它是一個計劃工具,客戶可以使用它並根據它的優先順序和估算代價來安排實現該需求的時間。
law_bbc 2007-12-7 01:30 AM
(十六)2.1.3短交付周期
XP項目每2周交付一次可工作軟體。每2周的迭代(重復周期或循環周期)都實現了涉眾的一些要求。每次迭代結束後,會給涉眾演示迭代生成的系統,以得到他們的反饋。
1.迭代計劃
每次迭代通常花費2周。這是一次較小的交付,可能會被加入到產品中。它由客戶根據開發人員確定的預算而選擇的一些用戶素材組成。
開發人員通過度量以前迭代完成的工作量來為本次迭代設定預算。只要估算的成本總量不超過預算,客戶就可以為本次迭代選擇任意數量的用戶素材。
一旦迭代開始,客戶就同意不再修改當前迭代中用戶素材的定義和優先順序。迭代期間,開發人員可以自由地將用戶素材分解成任務,並依據最具技術和商務價值的順序來開發這些任務。
2.發布計劃
XP團隊通常會創建一個包含隨後大約6次迭代內容的計劃,這就是所謂的發布計劃。一次發布通常需要3個月的工作。它表示了一次較大的交付,通常會被加入到產品中。發布計劃是由一組客戶根據開發人員給出預算所選擇的、排好優先順序的用戶素材組成。
開發人員可以度量以前發布的工作量來為本次發布設定預算。只要估算的成本總量不超過預算,客戶就可以為本次發布選擇任意數目的用戶素材。客戶同樣可以決定本次發布中用戶素材實現的順序。如果開發人員強烈要求的話,客戶可以通過指明哪些用戶素材應該在哪次迭代中完成的方式,制定出發布中最初幾次迭代的內容。
發布計劃不是一成不變的,客戶可以隨時改變計劃的內容。他可以取消用戶素材,編寫新的用戶素材,或者改變用戶素材的優先順序別。
3. java學習作為一名java初學者,如何快速學習j
先介紹一下主要學習哪些內容吧!
1、Java語法
通過任何一本java入門書籍,都可以學會java的基本語法。千萬不要認為,你把書上的例子程序都能寫出來就算是學會java語法了。想要真正掌握,還需要做大量的測試題。對語法不準確的理解,會是你寫的代碼出現邏輯錯誤。而這些錯誤會使你在真正的項目開發中吃盡苦頭:你認為正確才會寫上去。而在幾十萬代碼中找出幾行有邏輯錯誤的代碼,非常困難。因為你幾乎不會懷疑你認為正確的代碼存在錯誤。
2、常用類
永遠不要寫別人已經實現的代碼。有很多功能,用JDK中現有的類就可以完成。你需要熟悉JDK,可以通過研究JDK幫助文檔和JDK源代碼的方式,逐漸了解,你需要的類都在什麼地方。一方面,要熟悉有哪些可以直接使用的資源;另一方面,學習一下,SUN公司的工程是怎樣寫代碼的。
3、IDE集成開發環境
現在企業最常用的是IBM公司的eclipse,類似的還有JBuilder、Idea、NetBeans等等。畢竟,只有5%的頂尖高手在使用簡單的文本編輯器在寫java代碼。多數程序員都是在使用這些東西。
4、 資料庫
MySql,Oracle,DB2。小項目多數使用MySql這樣的免費資料庫。大一些的項目會考慮使用Oracle或者DB2。 Java項目很少使用SqlServer。因此,你還需要學習資料庫方面的一些知識。可以從SQL語言開始。這些資料庫都支持標准SQL,學會基本的SQL,參考具體的資料庫手冊,就可以完成一般的項目開發了。當然,要想使你的程序運行的效率更高,需要更深入的學習。大部分的程序優化,都是從這部分開始的。
5、 JDBC Java資料庫連接
使用Java程序操作資料庫。這部分非常重要,幾乎所有的企業項目都會用到。
6、 HTML CSS Javascript
HTML-- 超文本標記語言。
CSS --層疊樣式表。
JavaScript--是一種由Netscape的LiveScript發展而來的腳本語言。
准確的說,這些東西和Java語言本身關系不大。但是,現在的企業項目,以B/S結構的居多。因此,我們的Java程序,會有大量的機會和它們打交道。需要提前准備一下。
7、你需要學習如何使用及管理WEB伺服器,例如tomcat,並且知道如何在其基礎上擴展和維護WEB程序,如何使用它的附加服務,如連接池。
8、 JSP Servlet
這兩個是初級Java程序員必須掌握的基本技能,是所有B/S結構框架的基礎。相應的,還需要學習EL以及JSTL(StandardTagLibraries)和可以選擇的第三方TagLibraries,以提高表示層的處理能力。
9、企業流行框架 Struts、Spring、Hibernate等
10、Java設計模式
有一些特殊的功能,只有按照特定的設計模式才能實現。如果你有了5萬行以上的代碼經驗,可以開始研究一下設計模式。
11、你還要跟上技術發展的步伐,了解在Java項目中使用的新技術。如Ajax等。
還有很多要學習的內容。先介紹這么多吧,自己學習這些內容,估計需要2年左右。如果有個好的指導老師,在培訓學校進行系統學習,則需要4-5個月。
如果選擇培訓,一定要選擇擁有多年JAVA項目開發經驗、測試經驗、及項目管理經驗,採用「教」「練」結合,用真實項目案例進行訓練的教學方式。讓學員掌握實用的技能,在畢業後就有著實戰項目開發經驗,立刻上崗,成為諸多企業搶手的人才。
4. JAVA零基礎者應該看什麼書比較好
java 全棧工程師
一個java零基礎自學網站分享-我的文章-知乎https://zhuanlan.hu.com/p/47785978
5. 上海外國語大學CI項目如何報考
CI是上來海外國語大學的一個獨立源的培訓項目,學制是2年制,畢業沒有學歷和學位。是高強度的交替傳譯、同聲傳譯方面的培訓。沒有學歷限制,可以是本科生也可以是研究生,每年的3月份會進行招生考試。
CI項目在2003年設立,是上外特有的專業;是全國唯一由教育部專項撥款建設的同聲傳譯教學基地。會議口譯專業提供兩年全日制研究生層次專業教育。
培訓的重點為會議口譯專業實踐技能(交替傳譯和同聲傳譯)。完成學業並通過專業考試者,獲得「會議口譯專業證書」,證明其能勝任聯合國、歐盟等國際組織,以及各種國際會議和外交場合的同聲傳譯和交替傳譯工作。
6. GitHub 上有哪些值得推薦的開源電子書
語言無關類
操作系統
鳥哥的Linux私房菜 (簡體)
Linux 系統高級編程
The Linux Command Line (中英文版)
Linux 設備驅動 (第三版)
深入分析Linux內核源碼
UNIX TOOLBOX
Docker中文指南
Docker —— 從入門到實踐
FreeRADIUS新手入門
Mac 開發配置手冊
FreeBSD 使用手冊
Linux 命令行(中文版)
- 智能系統
一步步搭建物聯網系統
- web伺服器
Nginx開發從入門到精通 (淘寶團隊出品)
- 版本控制
Git教程 (本文由 @廖雪峰 創作,如果覺得本教程對您有幫助,可以去 iTunes 購買)
git – 簡易指南
猴子都能懂的GIT入門
Git 參考手冊
Pro Git
Git Magic
GotGitHub
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式學 Git
Git-Cheat-Sheet (感謝 @flyhigher139 翻譯了中文版)
GitHub秘籍
- NoSQL
NoSQL資料庫筆談 (PDF)
Redis 設計與實現
Redis 命令參考
帶有詳細注釋的 Redis 3.0 代碼
帶有詳細注釋的 Redis 2.6 代碼
The Little MongoDB Book
The Little Redis Book
Neo4j 簡體中文手冊 v1.8
Neo4j .rb 中文資源
- MySQL
MySQL索引背後的數據結構及演算法原理
- 項目相關
持續集成(第二版) (譯言網)
讓開發自動化系列專欄
追求代碼質量
selenium 中文文檔
Joel談軟體
約耳談軟體(Joel on Software)
- Web
關於瀏覽器和網路的 20 項須知
前端知識體系
瀏覽器開發工具的秘密
Chrome 開發者工具中文手冊
Chrome擴展開發文檔
Grunt中文文檔
移動Web前端知識庫
正則表達式30分鍾入門教程
前端開發體系建設日記
移動前端開發收藏夾
JSON風格指南
HTTP 介面設計指北
前端資源分享(一)
前端資源分享(二)
前端代碼規范 及 最佳實踐
w3school教程整理
- 大數據
大數據/數據挖掘/推薦系統/機器學習相關資源
- 編程藝術
程序員編程藝術
每個程序員都應該了解的內存知識(譯)【第一部分】
取悅的工序:如何理解游戲 (豆瓣閱讀,免費書籍)
- 其他
OpenWrt智能、自動、透明翻牆路由器教程
- 語言相關類 AWK
awk程序設計語言
- C/C++
C++ 並發編程指南 (@傅海平ICT)
Linux C編程一站式學習 (宋勁杉, 北京亞嵌教育研究中心)
CGDB中文手冊
100個gdb小技巧
100個gcc小技巧
ZMQ 指南
How to Think Like a Computer Scientist (中英文版)
跟我一起寫Makefile(PDF)
GNU make中文手冊
GNU make 指南
Google C++ 風格指南
C/C++ Primer (by @andycai)
簡單易懂的C魔法
Cmake 實踐 (PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
- CSS/HTML
學習CSS布局
通用 CSS 筆記、建議與指導
CSS參考手冊
Emmet 文檔
前端代碼規范 (騰訊alloyteam團隊)
- Dart
Dart 語言導覽
- Fortran
Fortran77和90/95編程入門
- Java
實時 Java 系列
Apache Shiro 用戶指南
使用 Eclipse 和 Java SE 6 創建獨立 Web Services 應用程序
第 1 部分: Web Services 服務端應用程序
第 2 部分: Web 服務客戶端應用程序
JavaServer Faces 1.2 入門
第 1 部分: 構建基本應用程序
第 2 部分: JSF 生命周期、轉換、檢驗和階段監聽器
用 Eclipse Europa 進行 Web 開發
第 1 部分: Eclipse Java EE
第 2 部分: PHP 開發工具
第 3 部分: Ruby Development Toolkit 和 RadRails
使用 JavaServer Faces 構建 Apache Geronimo 應用程序
第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 構建基本的應用程序
第 2 部分: 在 JavaServer Faces 中使用 Tomahawk
第 3 部分: 使用 ajax4jsf 添加 Ajax 功能
第 4 部分: 使用 Apache Trinidad 組件擴展 JSF
第 5 部分: 將 JSF 應用程序與 Spring 集成
Apache Geronimo 和 Spring 框架
第 1 部分: 開發方法學
第 2 部分: 構建第一個應用程序
第 3 部分: 集成 DAO 與 ORM
第 4 部分: 混合使用 Spring AOP 和 Spring Web Flow
第 5 部分: Spring MVC
第 6 部分: Spring MVC:使用 Web 視圖技術
終極 mashup —— Web 服務和語義 Web
第 1 部分: 使用與組合 Web 服務
第 2 部分: 管理 Mashup 數據緩存
第 3 部分: 理解 RDF 和 RDFs
第 4 部分: 創建本體
第 5 部分: 切換 Web 服務
Jersey 2.x 用戶指南
MyBatis中文文檔
- JavaScript
Google JavaScript 代碼風格指南
Airbnb JavaScript 規范
JavaScript 標准參考教程(alpha)
Javascript編程指南 (源碼)
javascript 的 12 個怪癖
JavaScript 秘密花園
JavaScript核心概念及實踐 (PDF) (此書已由人民郵電出版社出版發行,但作者依然免費提供PDF版本,希望開發者們去購買,支持作者)
《JavaScript 模式》翻譯,此書中文版有售,但是紙質書翻譯的還沒有這個版本翻譯的好
命名函數表達式探秘 (注:原文由為之漫筆翻譯,原始地址無法打開,所以此處地址為我博客上的備份)
學用 JavaScript 設計模式 (開源中國)
深入理解JavaScript系列
ECMAScript 6 入門 (作者:阮一峰)
jQuery
jQuery 解構
簡單易懂的JQuery魔法
How to write jQuery plugin
Node.js
Node入門
七天學會NodeJS
Nodejs Wiki Book (繁體中文)
express.js 中文文檔
koa 中文文檔
使用 Express + MongoDB 搭建多人博客
Express框架
nodejs文檔
Node.js 包教不包會
Learn You The Node.js For Much Win! (中文版)
Node debug 三法三例
underscore.js
Underscore.js中文文檔
backbone.js
backbone.js入門教程 (PDF)
Backbone.js入門教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳實踐和風格指南
AngularJS中譯本
AngularJS入門教程
構建自己的AngularJS
在Windows環境下用Yeoman構建AngularJS項目
zepto 簡明中文手冊
Sea.js
Hello Sea.js
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
ExtJS
Ext4.1.0 中文文檔
Chrome擴展及應用開發
JavaScript入門教程
- PHP
PHP調試技術手冊(PDF)
XDebug 2中文手冊(譯) (CHM)
PHP之道
PHP 最佳實踐
PHP安全最佳實踐
深入理解PHP內核
PHP擴展開發及內核應用
CodeIgniter 用戶指南
Laravel4 中文文檔
Laravel 入門
Symfony2中文文檔 (未譯完)
Phalcon中文文檔(翻譯進行中)
YiiBook幾本Yii框架的在線教程
簡單易懂的PHP魔法
swoole文檔及入門教程
- iOS
iOS開發60分鍾入門
iOS7人機界面指南
Google Objective-C Style Guide 中文版
iPhone 6 屏幕揭秘
Apple Watch開發初探
馬上著手開發 iOS 應用程序
網易斯坦福大學公開課:iOS 7應用開發字幕文件
- Android
Android Design(中文版)
Google Android官方培訓課程中文版
Android學習之路
- Python
小白的Python教程
簡明Python教程
零基礎學Python
Python 2.7 官方教程中文版
Python 3.3 官方教程中文版
深入 Python 3
PEP8 Python代碼風格規范
Google Python 風格指南 中文版
Python入門教程 (PDF)
Python的神奇方法指南
笨辦法學 Python (PDF版下載)
Django 文檔中文版
Django 最佳實踐
The Django Book 中文版
web.py 0.3 新手指南
Web.py Cookbook 簡體中文版
Dive Into Python 中文版
Bottle 文檔中文版 (需翻牆)
Flask 文檔中文版
Jinja2 文檔中文版
Werkzeug 文檔中文版
Flask之旅
Introction to Tornado 中文翻譯
Python自然語言處理中文版 (感謝陳濤同學的翻譯,也謝謝 @shwley 聯系了作者)
Python 繪圖庫 matplotlib 官方指南中文翻譯
Scrapy 0.25 文檔
ThinkPython
- Ruby
Ruby 風格指南
Rails 風格指南
笨方法學 Ruby
Ruby on Rails 指南
Ruby on Rails 實戰聖經
Ruby on Rails Tutorial 原書第 2 版 (本書網頁版免費提供,電子版以 PDF、EPub 和 Mobi 格式提供購買,僅售 9.9 美元)
編寫Ruby的C拓展
Ruby 源碼解讀
- Shell
Shell腳本編程30分鍾入門
- Go
Go編程基礎
Go入門指南
學習Go語言 (PDF)
Go Web 編程 (此書已經出版,希望開發者們去購買,支持作者的創作)
Go實戰開發 (當我收錄此項目時,作者已經寫完第三章,如果讀完前面章節覺得有幫助,可以給作者捐贈,以鼓勵作者的繼續創作)
Network programming with Go 中文翻譯版本
- Groovy
實戰 Groovy 系列
- LaTeX
一份其實很短的 LaTeX 入門文檔
一份不太簡短的 LATEX 2ε 介紹 (PDF版)
- LISP
ANSI Common Lisp 中文翻譯版
- Lua
Lua編程入門
- Haskell
Real World Haskell 中文版
- R
R語言忍者秘笈
- Scala
Scala課堂 (Twitter的Scala中文教程)
Effective Scala(Twitter的Scala最佳實踐的中文翻譯)
Scala指南
- Swift
The Swift Programming Language 中文版
- Perl
Modern Perl 中文版
Perl 程序員應該知道的事
- Prolog
笨辦法學Prolog
Vim中文文檔
- Vimscript
笨方法學Vimscript 中譯本
Vim中文文檔
- 讀書筆記及其它 讀書筆記
編譯原理(紫龍書)中文第2版習題答案
把《編程珠璣》讀薄
Effective C++讀書筆記
Golang 學習筆記、Python 學習筆記、C 學習筆記 (PDF)
Jsoup 學習筆記
學習筆記: Vim、Python、memcached
圖靈開放書翻譯計劃–C++、Python、Java等
蒂姆·奧萊利隨筆 (由譯言網翻譯,電子版免費)
Octave 入門 (PDF版)
SICP 解題集
精彩博客集合
正則表達式簡明參考
7. JAVA自學看什麼書好啊
對於沒有Java編程經驗的程序員要入門,隨便讀什麼入門書籍都一樣,這個階段需要你快速的掌握Java基礎語法和基本用法,宗旨就是「囫圇吞棗不求甚解」,先對Java熟悉起來再說。用很短的時間快速過一遍Java語法,連懵帶猜多寫寫代碼,要「知其然」。
1、《Java編程思想》
在有了一定的Java編程經驗之後,你需要「知其所以然」了。這個時候《Java編程思想》是一本讓你知其所以然的好書,它對於基本的面向對象知識有比較清楚的交待,對Java基本語法,基本類庫有比較清楚的講解,可以幫你打一個良好的Java編程基礎。這本書的缺點是實在太厚,也比較羅嗦,不適合現代人快節奏學習,因此看這本書要懂得取捨,不是每章每節都值得一看的,挑重點的深入看就可以了。
2、《Agile Java》中文版
這本書是出版社送給我的,我一拿到就束之高閣,放在書櫃一頁都沒有翻過,但是前兩天整理書櫃的時候,拿出來一翻,竟然發現這絕對是一本好書!這本書一大特點是以單元測試和TDD來貫穿全書的,在教你Java各種重要的基礎知識的過程中,潛移默化的影響你的編程思維走向敏捷,走向TDD。另外這本書成書很新,以JDK5.0的語法為基礎講解,要學習JDK5.0的新語法也不錯。還有這本書對於內容取捨也非常得當,Java語言畢竟類庫龐大,可以講的內容太多,這本書選擇的內容以及內容的多寡都很得當,可以讓你以最少的時間掌握Java最重要的知識,順便培養出來優秀的編程思路,真是一本不可多得的好書。
雖然作者自己把這本書定位在入門級別,但我不確定這本書用來入門是不是稍微深了點。 Java編程進階類 打下一個良好的Java基礎,還需要更多的實踐經驗積累,我想沒有什麼捷徑。有兩本書值得你在編程生涯的這個階段閱讀,培養良好的編程習慣,提高你的代碼質量。
1、《重構 改善既有代碼的設計》
這本書名氣很大,不用多介紹,可以在閑暇的時候多翻翻,多和自己的實踐相互印證。這本書對你產生影響是潛移默化的。
2、《測試驅動開發 by Example》
本書最大特點是很薄,看起來沒有什麼負擔。你可以找一個周末的下午,一邊看,一邊照做,一個下午就把書看完,這本書的所有例子跑完了。這本書的作用是通過實戰讓你培養TDD的思路。 Java架構師之路 到這個階段,你應該已經非常嫻熟的運用Java編程,而且有了一個良好的編程思路和習慣了,但是你可能還缺乏對應用軟體整體架構的把握,現在就是你邁向架構師的第一步。
1、《Expert One-on-One J2EE Design and Development》
這本書是Rod Johnson的成名著作,非常經典,從這本書中的代碼誕生了springframework。但是好像這本書沒有中譯本。
2、《Expert One-on-One J2EE Development without EJB》
這本書由gigix組織翻譯,多位業界專家參與,雖然署名譯者是JavaEye,其實JavaEye出力不多,實在是忝居譯者之名。
以上兩本書都是Rod Johnson的經典名著,Java架構師的必讀書籍。在我所推薦的這些書籍當中,是我看過的最仔細,最認真的書,我當時讀這本書幾乎是廢寢忘食的一氣讀完的,有小時候挑燈夜讀金庸武俠小說的勁頭,書中所講內容和自己的經驗知識一一印證,又被無比精闢的總結出來,讀完這本書以後,我有種被打通經脈,功力爆增的感覺。
但是後來我看過一些其他人的評價,似乎閱讀體驗並沒有我那麼high,也許是因為每個人的知識積累和經驗不同導致的。我那個時候剛好是經驗知識積累已經足夠豐富,但是還沒有系統的整理成型,讓這本書一梳理,立刻形成完整的知識體系了。
3、《企業應用架構模式》
Martin的又一本名著,但這本書我只是泛泛的看了一遍,並沒有仔細看。這本書似乎更適合做框架的人去看,例如如果你打算自己寫一個ORM的話,這本書是一定要看的。但是做應用的人,不看貌似也無所謂,但是如果有空,我還是推薦認真看看,會讓你知道框架為什麼要這樣設計,這樣你的層次可以晉升到框架設計者的角度去思考問題。Martin的書我向來都是推崇,但是從來都沒有像Rod Johnson的書那樣非常認真去看。
4、《敏捷軟體開發 原則、模式與實踐》
Uncle Bob的名著,敏捷的經典名著,這本書比較特別,與其說是講軟體開發過程的書,不如說講軟體架構的書,本書用了很大篇幅講各種面向對象軟體開發的各種模式,個人以為看了這本書,就不必看GoF的《設計模式》了。
軟體開發過程 了解軟體開發過程不單純是提高程序員個人的良好編程習慣,也是增強團隊協作的基礎。
1、《UML精粹》
UML其實和軟體開發過程沒有什麼必然聯系,卻是軟體團隊協作溝通,撰寫軟體文檔需要的工具。但是UML真正實用的圖不多,看看這本書已經足夠了,完全沒有必要去啃《UML用戶指南》之類的東西。要提醒大家的是,這本書的中譯本翻譯的非常之爛,建議有條件的看英文原版。
2、《解析極限編程 擁抱變化》XP
這是Kent Beck名著的第二版,中英文對照。沒什麼好說的,必讀書籍。
3、《統一軟體開發過程》UP
其實UP和敏捷並不一定沖突,UP也非常強調迭代,測試,但是UP強調的文檔和過程驅動卻是敏捷所不取的。不管怎麼說,UP值得你去讀,畢竟在中國真正接受敏捷的企業很少,你還是需要用UP來武裝一下自己的,哪怕是披著UP的XP。
4、《敏捷建模》AM
Scott Ambler的名著,這本書非常的progmatic,告訴你怎麼既敏捷又UP,把敏捷和UP統一起來了,又提出了很多progmatic的建議和做法。你可以把《解析極限編程 擁抱變化》、《統一軟體開發過程》和《敏捷建模》這三本書放在一起讀,看XP和UP的不同點,再看AM是怎麼統一XP和UP的,把這三種理論融為一爐,形成自己的理論體系,那麼你也可以去寫書了。
軟體項目管理 如果你突然被領導提拔為項目經理,而你完全沒有項目管理經驗,你肯定會心裡沒底;如果你覺得自己管理項目不善,很想改善你的項目管理能力,那麼去考PMP肯定是遠水不解近渴的。
1、《快速軟體開發》
這也是一本名著。可以這樣說,有本書在手,你就有了一個項目管理的高級參謀給你出謀劃策,再也不必擔心自己不能勝任的問題了。這本書不是講管理的理論的,在實際的項目管理中,講這些理論是不解決問題的,這本書有點類似於「軟體項目點子大全」之類的東西,列舉了種種軟體項目當中面臨的各種問題,以及應該如何解決問題的點子,你只需要稍加變通,找方抓葯就行了。
8. 怎麼學好java編程
Java是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言,它具有良好的通用性、高效性、平台移植性和安全性,廣泛用於個人PC、數據中心、游戲控制台等,同時擁有較大的開發者專業社群。那麼我們如何才能學好Java?
1、認真閱讀Java相關的書籍
盡管如今在網路上有很多的視頻能夠收看,促使Java的學習培訓越來越簡易了起來,可是必須留意的是,這也只是是學習的途徑變多了,又換句話說新手入門的方法多元化了,並不意味著著這門技術性越來越非常容易了。只不過是學會了毛皮。書籍一直是知識的最高載體,許多優秀程序員精心編寫的編程書籍,不僅有很多知識,而且有很多是他們教導的思想,通過閱讀這些書籍,不僅能學會技術,還能幫助熟練者理解編程思維。比如《實戰Java程序設計》這是一本既注重實戰,同時也注重底層「內功」(內存分析、JVM底層、數據結構)訓練的書,本書能幫 助初學者打通Java編程「任督二脈」。本書集作者11年Java教學之精華,既適合初學者入門,也適合已經工作 的開發者復習。
2、學好基本語法,弄清Java的特點
學習Java說的直白些就是學習它的語法、功能、結構等,然後按照它的語法編寫代碼。語法是學習Java的基礎,剛開始學習的時候可能會很難理解,但是沒關系,這屬於正常現象,只要多看、多問、多實踐,慢慢地你就會入門。
3、學習沒有捷徑,一定要多動手實踐
學習Java就像學習數學一樣,在懂得理論知識後,一定要實踐。學習Java不能搭便車,有些時候,句子和語法看起來很簡單,但是親自實踐起來卻總有自己不知道的知識盲點。哪怕是簡單的小程序,書本上的小例子,只有多動手操作,也會提高自己的代碼能力。
4、制定詳細的學習計劃
擁有一定的專業知識基本後,接下去大家務必制訂一套行得通的學習規劃。這里我關鍵指的是詳細的學習培訓線路。盡管Java學起來非常簡單,但大家如果要學精學透,就得由淺入深的一步步把握。
5、學會總結
學編程有一個禁忌,那就是學了新的知識,就把之前的知識忘記了。這時候就要做到分階段來進行總結,做到把遇到的問題以及解決思路記錄下來,同時還要備註上自己的經驗和技巧,在之後的日子裡多去瀏覽自己曾經記下的這些東西,不斷的積累,讓自己的成長變得扎實和迅速。
9. 學習java的心得
這位朋友,我是學習java的,我也是學習這門語言的愛好者,我首先說說我的學習經歷吧!我是山東濰坊的一個學生,現在學習的是java這門專業,我的愛好是編程.
1.我感覺學習java應該是循環漸進,有始有終,按部就班,腳踏實地.java是一門有著階梯性的一們語言,如果要學習它.我覺得最好還是按照java的學習體系,先學習什麼,在學習什麼,只有這樣,我們在學習中才會遇到更少的麻煩.java是一門更傾向於網路的語言.不要上來就學習JSP,這樣不好,因為這沒有基礎.在以後的學習中很可能遇到很多的麻煩,這就不好了.
2.信心,恆心,毅力是最重要的.這是我們必須具備的心理素質.要是學習這門語言開始的時候很有興趣,遇到苦難就退縮,這樣最終會放棄學習java,沒有經歷風雨怎麼見彩虹.編程就是有的時候就是那麼這么人.會遇到很多的困惑.但是一旦你弄懂了,或者是你把問題解決了,你會感到很興奮,編程的快樂就在此 了.呵呵^^
3.多看看一些資料,多多的向高手請教,這樣才好.要學會總結和領會.^^^^^^^^^^,當然,學習java一個人有一個人的想法,也有自己的獨特學習方法.總之適合自己的就是最好的,你說呢這位朋友?關於方法,還有很多,我就不在這里說了.
希望我的回答能給你帶來幫助,祝福你學習一路順風.
10. java學習心得
學習Java的第一步是安裝好JDK,寫一個Hello World, 其實JDK的學習沒有那麼簡單,關於JDK有兩個問題是很容易一直困擾 Java程序員的地方:一個是CLASSPATH的問題,其實從原理上來說,是要搞清楚JRE的ClassLoader是如何載入Class的;另一個問題是package和import問題,如何來尋找類的路徑問題。把這兩個問題摸索清楚了,就掃除了學習Java和使用JDK的最大障礙。推薦看一下王森的《Java深度歷險》,對這兩個問題進行了深入的探討。
第二步是學習Java的語法。Java的語法是類C++的,基本上主流的編程語言不是類C,就是類C++的,沒有什麼新東西,所以語法的學習,大概就是半天的時間足夠了。唯一需要注意的是有幾個不容易搞清楚的關鍵字的用法,public,protected,private,static,什麼時候用,為什麼要用,怎麼用,這可能需要有人來指點一下,我當初是完全自己琢磨出來的,花了很久的時間。不過後來我看到《Thinking in Java》這本書上面是講了這些概念的。
第三步是學習Java的面向對象的編程語言的特性的地方。比如繼承,構造器,抽象類,介面,方法的多態,重載,覆蓋,Java的異常處理機制。對於一個沒有面向對象語言背景的人來說,我覺得這個過程需要花很長很長時間,因為學習Java之前沒有C++的經驗,只有C的經驗,我是大概花了一個月左右吧,才徹底把這些概念都搞清楚,把書上面的例子反復的揣摩,修改,嘗試,把那幾章內容反復的看過來,看過去,看了不下5遍,才徹底領悟了。不過我想如果有 C++經驗的話,應該一兩天時間足夠了。那麼在這個過程中,可以多看看《Thinking in Java》這本書,對面向對象的講解非常透徹。可惜的是我學習的時候,並沒有看到這本書,所以自己花了大量的時間,通過自己的嘗試和揣摩來學會的。
第四步就是開始熟悉Java的類庫。Java的基礎類庫其實就是JDK安裝目錄下面jre\lib\rt.jar這個包。學習基礎類庫就是學習rt.jar。基礎類庫裡面的類非常非常多。據說有3000多個,但是真正對於我們來說最核心的只有4個,分別是
java.lang.*;
java.io.*;
java.util.*;
java.sql.*;
這四個包的學習,每個包的學習都可以寫成一本厚厚的教材,而O'reilly也確實是這樣做的。我覺得如果時間比較緊,是不可能通過讀四本書來學習。我覺得比較好的學習方法是這樣的:
首先要通讀整個package的框架,了解整個package的class,interface,exception的構成,最好是能夠找到介紹整個包框架的文章。這些專門介紹包的書籍的前幾章應該就是這些總體的框架內容介紹。
對包整體框架的把握並不是要熟悉每個類的用法,記住它有哪些屬性,方法。想記也記不住的。而是要知道包有哪些方面的類構成的,這些類的用途是什麼,最核心的幾個類分別是完成什麼功能的。我在給人培訓的時候一般是一次課講一個包,所以不可能詳細的介紹每個類的用法,但是我反復強調,我給你們講這些包的不是要告訴你們類的方法是怎麼調用的,也不要求你們記住類的方法調用,而是要你們了解,Java給我們提供了哪些類,每個類是用在什麼場合,當我遇到問題的時候,我知道哪個類,或者哪幾個類的組合可以解決我的問題,That'all!,當我們具體寫程序的時候,只要你知道該用哪個類來完成你的工作就足夠了。編碼的時候,具體的方法調用,是邊寫代碼,邊查Documentation,所有的東西都在Documentation裡面,不要求你一定記住,實際你也記不住3000多個類的總共將近10萬個方法調用。所以對每個包的總體框架的把握就變得極為重要。
第五步,通過上面的學習,如果學的比較扎實的話,就打好了Java的基礎了,剩下要做的工作是掃清Documentation裡面除了上面4個包之外的其他一些比較有用處的類。相信進展到這一步,Java的自學能力已經被培養出來了,可以到了直接學習Documentation的水平了。除了要做 GUI編程之外,JDK裡面其他會有用處的包是這些:
java.text.*;
java.net.*;
javax.naming.*;
這些包裡面真正用的比較多的類其實很少,只有幾個,所以不需要花很多時間。
第六步,Java Web 編程
Web編程的核心是HTTP協議,HTTP協議和Java無關,如果不熟悉HTTP協議的話,雖然也可以學好Servlet/JSP編程,但是達不到舉一反三,一通百通的境界。所以HTTP協議的學習是必備的。如果熟悉了HTTP協議的話,又有了Java編程的良好的基礎,學習 Servlet/JSP簡直易如反掌,我學習Servlet/JSP就用了不到一周的時間,然後就開始用JSP來做項目了。
在Servlet/JSP的學習中,重頭仍然是Servlet Documentation。Servlet API最常用的類很少,花比較少的時間就可以掌握了。把這些類都看一遍,多寫幾個例子試試。Servlet/JSP編程本質就是在反復調用這些類來通過HTTP協議在Web Server 和Brower之間交談。另外對JSP,還需要熟悉幾個常用JSP的標記,具體的寫法記不住的話,臨時查就是了。
此外Java Web編程學習的重點要放在Web Application的設計模式上,如何進行業務邏輯的分析,並且進行合理的設計,按照 MVC設計模式的要求,運用Servlet和JSP分別完成不同的邏輯層,掌握如何在Servlet和JSP之間進行流程的控制和數據的共享,以及 Web Application應該如何配置和部署。
第七步,J2EE編程
以上的學習過程如果是比較順利的話,進行到這一步,難度又陡然提高。因為上面的知識內容都是只涉及一個方面,而像EJB,JMS,JTA等核心的J2EE規范往往是幾種Java技術的綜合運用的結晶,所以掌握起來難度比較大。
首先一定要學習好JNDI,JNDI是App Server定位伺服器資源(EJB組件,Datasouce,JMS)查找方法,如果對JNDI 不熟悉的話,EJB,JMS這些東西幾乎學不下去。JNDI其實就是javax.naming.*這個包,運用起來很簡單。難點在於伺服器資源文件的配置。對於伺服器資源文件的配置,就需要看看專門的文檔規范了,比如web.xml的寫法,ejb-jar.xml的寫法等等。針對每種不同的 App Server,還有自己的服務資源配置文件,也是需要熟悉的。
然後可以學習JTA,主要是要理解JTA對於事務的控制的方法,以及該在什麼場合使用JTA。這里可以簡單的舉個例子,我們知道一般情況可以對於一個資料庫連接進行事務控制(conn.setAutoCommit(false),....,conn.commit()),做為一個原子操作,但是假設我的業務需求是要把對兩個不同資料庫的操作做為一個原子操作,你能做的到嗎?這時候只能用JTA了。假設操作過程是先往A資料庫插一條記錄,然後刪除B 資料庫另一個記錄,我們自己寫代碼是控制不了把整個操作做為一個原子操作的。用JTA的話,由App Server來完成控制。
在學習EJB之前要學習對象序列化和RMI,RMI是EJB的基礎。接著學習JMS和EJB,對於EJB來說,最關鍵是要理解EJB是如何通過RMI來實現對遠端對象的調用的,以及在什麼情況下要用到EJB。
在學習完EJB,JMS這些東西之後,你可能會意識到要急不可待學習兩個領域的知識,一個是UML,另一個是Design Pattern。 Java企業軟體的設計非常重視框架(Framework)的設計,一個好的軟體框架是軟體開發成功的必要條件。在這個時候,應該開始把學習的重點放在設計模式和框架的學習上,通過學習和實際的編程經驗來掌握EJB的設計模式和J2EE的核心模式。
J2EE規范裡面,除了EJB,JMS,JTA,Servlet/JSP,JDBC之外還有很多很多的企業技術,這里不一一進行介紹了。
另外還有一個最新領域Web Services。Web Services也完全沒有任何新東西,它像是一種黏合劑,可以把不同的服務統一起來提供一個統一的調用介面,作為使用者來說,我只要獲得服務提供者給我的WSDL(對服務的描述),就夠了,我完全不知道伺服器提供者提供的服務究竟是EJB 組件,還是.Net組件,還是什麼CORBA組件,還是其他的什麼實現,我也不需要知道。Web Services最偉大的地方就在於通過統一的服務提供方式和調用方式,實現了整個Internet服務的共享,是一個非常令人激動的技術領域。Web Services好像目前還沒有什麼很好的書籍,但是可以通過在網路上面查資料的方式來學習。