-
1 # 來遲了你
-
2 # 饞嘴貓吃魚
1. 基本功要紮實
學習任何一種語言,必備的基本功是必須要有的,一方面可以提高效率,另一方面可以拓寬思路。
對於Linux基本知識的學習,對一些初學者來說是枯燥乏味的,可以透過理解再背誦的方式先進行程式碼及語法的學習,然後進行實踐操作,必須手動輸入命令列,不要藉助工具,這樣可以更快速有效的掌握Linux。
2. 學以致用
Linux學習的目的是應用,Linux基本知識是一些零散的技術,當沒有應用在專案上時,我們無法理解他的真實價值,所以打好基本功之後,最緊迫的是多做幾個完整的專案,剛開始可以是功能簡單的專案,之後可以選擇稍微複雜的專案,勤於動手,敢於實踐,一定能學好Linux。
3. 學會使用Linux聯機幫助
任何一種教材都不會完全講述Linux知識,一般講的都是比較常用的或者是比較有代表性的知識,但是,我們在專案應用中往往有些功能的實現是需要一些生僻知識和技能的,那麼,如何查詢我們所需的知識呢,推薦查閱Linux幫助文件,主流的Linux都自帶詳細的幫助文件,很方便解決問題!
4. 在網上找資源
在Linux的學習和應用中,難免會遇到一些沒有思路、不知道如何解決的問題,這時就要藉助網路力量,可以透過搜尋引擎搜尋查詢,也可以諮詢資深技術人員,最終實現問題的解決,這是Linux知識積累的一個重要的途徑!
5. 查閱英文技術文件
如果想深入學習Linux,查閱英文技術文件是十分必要的,往往最新的技術都是採用英文文件的方式釋出的,而且更全面,因此,對於Linux人員來說,多看一些Linux技術文件,對於掌握前沿技術和加深知識是十分有必要的!
Linux學習是一個需要長期堅持不懈的過程,新的技術不斷的產生,要想成為Linux大牛,必須要時刻關注Linux發展動態,掌握最新技術,才能走在行業前列!
-
3 # 趣苑雜談
Linux是自由的免費開源的,它是以unix為原型改造的,一個多使用者多工的作業系統,任何人都可以修改其程式碼和頁面,其中主要的目的就是為了不收商業化的限制,而我們將伺服器部署在linux系統上會更加高效穩定、安全(注:UNIX作業系統(尤尼斯),是一個強大的多使用者、多工作業系統,支援多種處理器架構). linux最初是由芬蘭赫爾辛基大學學生Linus Torvalds在1991年處於個人愛好設計了linux系統的核心,在1994年正式採用GPL協議。 推薦的發行版如下:
UBUNTU 適合純菜鳥,追求穩定的官方支援,對系統穩定性要求較弱,喜歡最新應用,相對來說不太喜歡折騰的開發者。Debian,相對UBUNTU難很多的發行版,突出特點是穩定與容易使用的包管理系統,缺點是企業支援不足,為社群開發驅動。Arch,追逐時尚的開發者的首選,優點是包更新相當快,無縫升級,一次安裝基本可以一直運作下去,沒有如UBUNTU那樣的版本概念,說的專業點叫滾動升級,保持你的系統一定是最新的。缺點顯然易見,不穩定。同時安裝配置相對Debian再麻煩點。Gentoo,相對Arch再難點,考驗使用者的綜合水平,從系統安裝到微調,核心編譯都親歷親為,是高手及駭客顯示自己技術手段,按需配置符合自己要求的系統的首選。Slackware與Gentoo類似。CentOS,社群維護的RedHat的復刻版本,完全使用RedHat的原始碼重新編譯生成,與RedHat的相容性在理論上來說是最好的。如果你專注於Linux伺服器,如網路管理,架站,那麼CentOS是你的選擇。LFS,終極駭客顯擺工具,完全從原始碼安裝,編譯系統。安裝前你得到的只有一份文件,你要做的就是照文件你的說明,一步步,一條條命令,一個個軟體包的去構建你的Linux,完全由你自己控制,想要什麼就是什麼。如果你做出了LFS,證明你的Linux功底已經相當不錯,如果你能拿LFS文件活學活用,再將Linux從原始碼開始移植到嵌入式系統,我敢說中國的企業你可以混的很好。Linux學習進階路線1、Linux基礎
你得挑一個適合你的系統,然後在虛擬機器安裝它,開始使用它。 如果你想快速學會Linux,我有一個建議就是忘記圖形介面,不要想圖形介面能不能提供你問題的答案, 而是滿世界的去找,去問,如何用命令列解決你的問題。
在這個過程中,你最好能將Linux的命令掌握的不錯,起碼常用的命令得知道,同時建立了自己的知識庫, 裡面是你積累的各項知識。
2、Linux平臺的C/C++開發,同時還有Bash指令碼程式設計[JAVA]
再下個階段,你需要學習的是Linux平臺的C/C++開發,同時還有Bash指令碼程式設計,如果你對Java興趣很深還有Java。 同樣,建議你拋棄掉圖形介面的IDE,從VIM開始,為什麼是VIM,而不是Emacs, 我無意挑起編輯器大戰,但我覺得VIM適合初學者,適合手比較笨,腦袋比較慢的開發者。 Emacs的鍵位太多,太複雜,我很畏懼。然後是GCC,Make,Eclipse(Java,C++或者)。
雖然將C++列在了Eclipse中,但我並不推薦用IDE開發C++,因為這不是Linux的文化, 容易讓你忽略一些你應該注意的問題。 IDE讓你變懶,懶得跟豬一樣。如果你對程式除錯,測試工作很感興趣,GDB也得學的很好, 如果不是GDB也是必修課。這是開發的第一步,注意我並沒有提過一句Linux系統API的內容, 這個階段也不要關心這個。你要做的就是積累經驗,在Linux平臺的開發經驗。
我推薦的書如下:C語言程式設計。 C語言,白皮書當然更好。 C++推薦 C++ Primer Plus, Java我不喜歡,就不推薦了,附一個別人的書單:java 入門書籍。 工具方面推薦VIM的官方手冊,GCC中文文件,GDB中文文件,GNU開源軟體開發指導(電子書), 組合語言程式設計(讓你對庫,連結,內嵌彙編,編譯器最佳化選項有初步瞭解,不必深度)。
如果你這個階段過不了就不必往下做了,這是底線,最基礎的基礎,否則離開,不要霍霍Linux開發。 不專業的Linux開發者作出的程式是與Linux文化或UNIX文化相背的,程式是走不遠的, 不可能像Bash,VIM這些神品一樣。 所以做不好乾脆離開。
3、UNIX環境高階程式設計(作者英年早逝)
UNIX環境高階程式設計堪稱神作,經典中的經典。
接下來進入Linux系統程式設計,不二選擇,APUE,UNIX環境高階程式設計,一遍一遍的看, 看10遍都嫌少,如果你可以在大學將這本書翻爛,裡面的內容都實踐過,有作品,你口頭表達能力夠強, 你可以在面試時說服所有的考官。
(可能有點誇張,但APUE絕對是聖經一般的讀物,即使是Windows程式設計師也從其中汲取養分, Google創始人的案頭書籍,扎爾伯克的床頭讀物。)
這本書看完後你會對Linux系統程式設計有相當的瞭解,知道Linux與Windows平臺間開發的差異在哪? 它們的優缺點在哪?我的總結如下:做Windows平臺開發,很苦,微軟的系統API總在擴容, 想使用最新潮,最高效的功能,最適合當前流行系統的功能你必須時刻學習。 Linux不是,Linux系統的核心API就100來個,記憶力好完全可以背下來。 而且經久不變,為什麼不變,因為要同UNIX相容,符合POSIX標準。 所以Linux平臺的開發大多是專注於底層的或伺服器程式設計。
這是其優點,當然圖形是Linux的軟肋,但我站在一個開發者的角度,我無所謂,因為命令列我也可以適應, 如果有更好的圖形介面我就當作恩賜吧。另外,Windows閉源,系統做了什麼你更本不知道, 永遠被微軟牽著鼻子跑,想想如果微軟說Win8不支援QQ,那騰訊不得哭死。 而Linux完全開源,你不喜歡,可以自己改,只要你技術夠。
另外,Windows雖然使用的人多,但使用場合單一,專注與桌面。 而Linux在各個方面都有發展,尤其在雲計算,伺服器軟體,嵌入式領域, 企業級應用上有廣大前景,而且相容性一流,由於支援POSIX可以無縫的執行在UNIX系統之上, 不管是蘋果的Mac還是IBM的AS400系列,都是完全支援的。 另外,Linux的開發環境支援也絕對是一流的,不管是C/C++,Java,Bash,Python,PHP,Javascript,。。。。。。就連C#也支援。而微軟除Visual Stdio套件以外,都不怎麼友好,不是嗎?
如果你看完APUE的感觸有很多,希望驗證你的某些想法或經驗,推薦UNIX程式設計藝術, 世界頂級駭客將同你分享他的看法。
4、選擇方向:網路,圖形,嵌入式,裝置驅動
網路方向:伺服器軟體編寫及高效能的併發程式編寫
現在是時候做分流了。 大體上我分為四個方向:網路,圖形,嵌入式,裝置驅動。
如果選擇網路,再細分,我對其他的不是他熟悉,只說伺服器軟體編寫及高效能的併發程式編寫吧。 相對來說這是網路程式設計中技術含量最高的,也是底層的。 需要很多的經驗,看很多的書,做很多的專案。
我的看法是以下面的順序來看書:
APUE再深讀 – 尤其是程序,執行緒,IPC,套接字多核程式設計 - Pthread一定得吃透了,你很NBUNIX網路程式設計 – 卷一,卷二TCP/IP網路詳解 – 卷一 再看上面兩本書時就該看了5.TCP/IP 網路詳解 – 卷二 我覺得看到卷二就差不多了,當然卷三看了更好,努力,爭取看了6.Lighttpd原始碼 - 這個伺服器也很有名了7.Nginx原始碼 – 相較於Apache,Nginx的原始碼較少,如果能看個大致,很NB。看原始碼主要是要學習裡面的套接字程式設計及併發控制,想想都激動。如果你有這些本事,可以試著往暴雪投簡歷,為他們寫伺服器後臺,想一想全球的魔獸都執行在你的伺服器軟體上。Linux核心 TCP/IP協議棧 – 深入瞭解TCP/IP的實現如果你還喜歡驅動程式設計,可以看看更底層的協議,如鏈路層的,寫什麼路由器,網絡卡, 網路裝置的驅動及嵌入式系統軟體應該也不成問題了。
當然一般的網路公司,就算百度級別的也該毫不猶豫的僱用你。 只是看後面這些書需要時間與經驗,所以35歲以前辦到吧!跳槽到給你未來的地方!
圖形方向,我覺得圖形方向也是很有前途的,以下幾個方面。
Opengl的工業及遊戲開發,國外較成熟。影視動畫特效,如皮克斯,也是國外較成熟。GPU計算技術,可以應用在瀏覽器網頁渲染上,GPU計算資源利用上,由於開源的原因,有很多的文件程式可以參考。如果能進火狐開發,或google做瀏覽器開發,應該會很好 。嵌入式方向:嵌入式方向沒說的,Linux很重要。
掌握多個架構,不僅X86的,ARM的,微控制器什麼的也必須得懂。 硬體不懂我預見你會死在半路上,我也想走嵌入式方向,但我覺得就學校教授嵌入式的方法, 我連學電子的那幫學生都競爭不過。 奉勸大家,一定得懂硬體再去做,如果走到嵌入式應用開發,只能祝你好運, 不要碰上像Nokia,Hp這樣的公司,否則你會很慘的。
驅動程式設計:軟體開發週期是很長的,硬體不同,很快。 每個月誕生那麼多的新硬體,如何讓他們在Linux上工作起來,這是你的工作。 由於Linux的相容性很好,如果不是太低層的驅動,基本C語言就可以搞定,系統架構的影響不大, 因為有系統支援,你可能做些許更改就可以在ARM上使用PC的硬體了, 所以做硬體驅動開發不像嵌入式,對硬體知識的要求很高。
可以從事的方向也很多,如家電啊,特別是如索尼,日立,希捷,富士康這樣的廠子,很稀缺的。
-
4 # 小番茄的生活雜記
1.linux基礎
挑一個合適的系統,比如Ubuntu,然後可以在虛擬機器中安裝它,結合一些書籍,比如《鳥哥的linux私房菜》,熟悉linux的基本內容以及一些基本指令,網上也有很多linux指令的總結,然後可以在Ubuntu中實戰一下
2.linux平臺下的c/c++開發,指令碼語言等
這個時候可以選用linux下用的比較多的編輯器vim,或者emacs。然後熟悉程式的編寫,編譯以及執行。推薦書籍:c primer plus ,c++ primer plus。
3.UNIX環境高階程式設計
接下來進入linux系統程式設計,APUE,UNIX環境高階程式設計,熟悉linux系統核心的API。
4.可以讀一讀linux核心原始碼
相關書籍:LKD,linux核心原始碼情景分析,輸入理解linux核心等。
回覆列表
入門前先學會安裝虛擬機器,這樣給你很多機會亂來!要入門的話找本豆瓣評分高的的書來學習,後面再搞個知識導圖,看看哪些不足就在學習