高級(jí)深入
1、C++ / Java 和面向?qū)ο?/strong>
我個(gè)人以為學(xué)好C++,Java也就是舉手之勞。但是C++的學(xué)習(xí)曲線相當(dāng)?shù)亩浮2贿^,我覺得C++是最需要學(xué)好的語言了。參看兩篇趣文“C++學(xué)習(xí)信心圖” 和“21天學(xué)好C++”
C++和Java都不是能在短時(shí)間內(nèi)能學(xué)好的,C++玩是的深,Java玩的是廣,我建議兩者選一個(gè)。我個(gè)人的學(xué)習(xí)經(jīng)歷是:
- 深究C++(我深究C/C++了十來年了)
- 學(xué)習(xí)Java的各種設(shè)計(jì)模式。
2、加強(qiáng)系統(tǒng)了解
重要閱讀下面的幾本書:
- 《Unix編程藝術(shù)》了解Unix系統(tǒng)領(lǐng)域中的設(shè)計(jì)和開發(fā)哲學(xué)、思想文化體系、原則與經(jīng)驗(yàn)。你一定會(huì)有一種醍醐灌頂?shù)母杏X。
- 《Unix網(wǎng)絡(luò)編程卷1,套接字》這是一本看完你就明白網(wǎng)絡(luò)編程的書。重要注意TCP、UDP,以及多路復(fù)用的系統(tǒng)調(diào)用select/poll/epoll的差別。
- 《TCP/IP詳解 卷1:協(xié)議》- 這是一本看完后你就可以當(dāng)網(wǎng)絡(luò)黑客的書。了解以太網(wǎng)的的運(yùn)作原理,了解TCP/IP的協(xié)議,運(yùn)作原理以及如何TCP的調(diào)優(yōu)。
- 實(shí)踐任務(wù):
- 理解什么是阻塞(同步IO),非阻塞(異步IO),多路復(fù)用(select, poll, epoll)的IO技術(shù)。
- 寫一個(gè)網(wǎng)絡(luò)聊天程序,有聊天服務(wù)器和多個(gè)聊天客戶端(服務(wù)端用UDP對(duì)部分或所有的的聊天客戶端進(jìn)Multicast或Broadcast)。
- 寫一個(gè)簡(jiǎn)易的HTTP服務(wù)器。
- 《Unix網(wǎng)絡(luò)編程卷2,進(jìn)程間通信》信號(hào)量,管道,共享內(nèi)存,消息等各種IPC…… 這些技術(shù)好像有點(diǎn)老掉牙了,不過還是值得了解。
- 實(shí)踐任務(wù):
- 主要實(shí)踐各種IPC進(jìn)程序通信的方法。
- 嘗試寫一個(gè)管道程序,父子進(jìn)程通過管道交換數(shù)據(jù)。
- 嘗試寫一個(gè)共享內(nèi)存的程序,兩個(gè)進(jìn)程通過共享內(nèi)存交換一個(gè)C的結(jié)構(gòu)體數(shù)組。
- 學(xué)習(xí)《Windows核心編程》一書。把CreateProcess,Windows線程、線程調(diào)度、線程同步(Event, 信號(hào)量,互斥量)、異步I/O,內(nèi)存管理,DLL,這幾大塊搞精通。
- 實(shí)踐任務(wù):使用CreateProcess啟動(dòng)一個(gè)記事本或IE,并監(jiān)控該程序的運(yùn)行。把前面寫過的那個(gè)簡(jiǎn)易的HTTP服務(wù)用線程池實(shí)現(xiàn)一下。寫一個(gè)DLL的鉤子程序監(jiān)控指定窗口的關(guān)閉事件,或是記錄某個(gè)窗口的按鍵。
- 有了多線程、多進(jìn)程通信,TCP/IP,套接字,C++和設(shè)計(jì)模式的基本,你可以研究一下ACE了。使用ACE重寫上述的聊天程序和HTTP服務(wù)器(帶線程池)
- 實(shí)踐任務(wù):通過以上的所有知識(shí),嘗試
- 寫一個(gè)服務(wù)端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁盤I/O和網(wǎng)絡(luò)I/O可能會(huì)很有問題,想一想怎么解決,另外,請(qǐng)注意網(wǎng)絡(luò)傳輸最大單元MTU)
- 了解BT下載的工作原理,用多進(jìn)程的方式模擬BT下載的原理。
3、系統(tǒng)架構(gòu)
- 負(fù)載均衡。HASH式的,純動(dòng)態(tài)式的。(可以到Google學(xué)術(shù)里搜一些關(guān)于負(fù)載均衡的文章讀讀)
- 多層分布式系統(tǒng) – 客戶端服務(wù)結(jié)點(diǎn)層、計(jì)算結(jié)點(diǎn)層、數(shù)據(jù)cache層,數(shù)據(jù)層。J2EE是經(jīng)典的多層結(jié)構(gòu)。
- CDN系統(tǒng) – 就近訪問,內(nèi)容邊緣化。
- P2P式系統(tǒng),研究一下BT和電驢的算法。比如:DHT算法。
- 服務(wù)器備份,雙機(jī)備份系統(tǒng)(Live-Standby和Live-Live系統(tǒng)),兩臺(tái)機(jī)器如何通過心跳監(jiān)測(cè)對(duì)方?集群主結(jié)點(diǎn)備份。
- 虛擬化技術(shù),使用這個(gè)技術(shù),可以把操作系統(tǒng)當(dāng)應(yīng)用程序一下切換或重新配置和部署。
- 學(xué)習(xí)Thrift,二進(jìn)制的高性能的通訊中間件,支持?jǐn)?shù)據(jù)(對(duì)象)序列化和多種類型的RPC服務(wù)。
- 學(xué)習(xí)Hadoop。Hadoop框架中最核心的設(shè)計(jì)就是:MapReduce和HDFS。MapReduce的思想是由Google的一篇論文所提及而被廣為流傳的,簡(jiǎn)單的一句話解釋MapReduce就是“任務(wù)的分解與結(jié)果的匯總”。HDFS是Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System)的縮寫,為分布式計(jì)算存儲(chǔ)提供了底層支持。
- 了解NoSQL數(shù)據(jù)庫(有人說可能是一個(gè)過渡炒作的技術(shù)),不過因?yàn)槌笠?guī)模以及高并發(fā)的純動(dòng)態(tài)型網(wǎng)站日漸成為主流,而SNS類網(wǎng)站在數(shù)據(jù)存取過程中有著實(shí)時(shí)性等剛性需求,這使得目前NoSQL數(shù)據(jù)庫慢慢成了人們所關(guān)注的焦點(diǎn),并大有成為取代關(guān)系型數(shù)據(jù)庫而成為未來主流數(shù)據(jù)存儲(chǔ)模式的趨勢(shì)。當(dāng)前NoSQL數(shù)據(jù)庫很多,大部分都是開源的,其中比較知名的有:MemcacheDB、Redis、Tokyo Cabinet(升級(jí)版為Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
寫了那么多,回顧一下,覺得自己相當(dāng)?shù)挠谐删透小OM蠹也灰獓樦,我自己這十來年也在不斷地學(xué)習(xí),今天我也在學(xué)習(xí)中,人生本來就是一個(gè)不斷學(xué)習(xí)和練級(jí)的過程。不過,一定有漏的,也有不對(duì)的,還希望大家補(bǔ)充和更正。(我會(huì)根據(jù)大家的反饋隨時(shí)更新此文)歡迎大家通過我的微博(@左耳朵耗子)和twitter(@haoel)和我交流。
—– 更新 2011/07/19 —–
1)有朋友奇怪為什么我在這篇文章開頭說了web+移動(dòng),卻沒有在后面提到iOS/Android的前端開發(fā)。因?yàn)槲倚睦镉幸环N感覺,移動(dòng)設(shè)備上的UI最終也會(huì)被Javascript取代。大家可以用iPhone或Android看看google+,你就會(huì)明白了。
2)有朋友說我這里的東西太多了,不能為了學(xué)習(xí)而學(xué)習(xí),我非常同意。我在文章的前面也說了要思考。另外,千萬不要以為我說的這些東西是一些新的技術(shù),這份攻略里95%以上的全是基礎(chǔ)。而且都是久經(jīng)考驗(yàn)的基礎(chǔ)技術(shù)。即是可以讓你一通百通的技術(shù),也是可以讓你找到一份不錯(cuò)工作的技術(shù)。
3)有朋友說學(xué)這些東西學(xué)完都40了,還不如想想怎么去掙錢。我想告訴大家,一是我今年還沒有40歲,二是學(xué)無止境啊,三是我不覺得掙錢有多難,難的是怎么讓你值那么多錢?無論是打工還是創(chuàng)業(yè),是什么東西讓你自己的價(jià)值,讓你公司的價(jià)值更值錢?別的地方我不敢說,對(duì)于互聯(lián)網(wǎng)或IT公司來說,技術(shù)實(shí)力絕對(duì)是其中之一。
4)有朋友說技術(shù)都是工具,不應(yīng)該如此癡迷這句話沒有錯(cuò),有時(shí)候我們需要更多的是抬起頭來看看技術(shù)以外的事情,或者是說我們?cè)谧骷夹g(shù)的時(shí)候不去思考為什么會(huì)有這個(gè)技術(shù),為什么不是別的,問題不在于技術(shù),問題在于我們死讀書,讀死書,成了技術(shù)的書呆子。
5) 對(duì)于NoSQL,最近比較火,但我對(duì)其有點(diǎn)保守,所以,我只是說了解就可以。對(duì)于Hadoop,我覺得其在分布式系統(tǒng)上有巨大的潛力,所以需要學(xué)習(xí)。 對(duì)于關(guān)系型數(shù)據(jù)庫,的確是很重要的東西,這點(diǎn)是我的疏忽,在原文里補(bǔ)充。
原文:http://coolshell.cn/articles/4990.html
本文鏈接:http://www.95time.cn/tech/program/2011/8523.asp
出處:酷殼
責(zé)任編輯:bluehearts
上一頁 進(jìn)階加深 下一頁
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|