首页
/
每日頭條
/
科技
/
Linux應用開發自學之路
Linux應用開發自學之路
更新时间:2024-10-05 12:28:58

Linux應用開發自學之路(Linux應用開發自學之路)1

前言

在 「關于我」那篇博文裡,朋友們應該知道了我不是科班出身,是由機械強行轉行到Linux應用開發方向。下面我就詳細向大家介紹自己這一路上的轉行曆程,希望對大家有所啟發。

我是學機械專業的,對于機械專業我還是很感興趣,而且當年這個專業也是我自己選擇的。本科時成績沒排第一,但也排專業前列。碩士時成績一直是專業第一,還拿過國家獎學金。由此可見,我還是挺熱愛機械的,考研時甚至還想去中科院深造(可惜落榜了),想成為一名機械磚家。

轉折點

但轉機在我畢業之後。本來我就想一直踏踏實實的做機械,但陰差陽錯的,第一份工作由機械工程師調劑到電子工程師。雖然是電子工程師,但做了很多代碼工作,那時候學了一些Verilog,以及C#,并且用C#開發了一個測試工具及一個生産用的上位機,據說那個測試工具現在還在電子部門使用。也就是那時,我真正接觸到了編程,并深深的被編程世界所着迷。

可是,我在學校學的是機械啊,跟軟件相關的東西頂多是C語言及彙編語言,但C語言是十年前(那時候)學的,早就還給老師了。因此,為了工作的需要,我硬着頭皮開始學習編程。我每天早上6點起床,學習一個小時後7點去趕班車,晚上下班回來再繼續學習。在這樣的條件下我學會了Verilog及C#,同時對STM32有個大概的了解。

但那個崗位畢竟不是完全做軟件工作,還需要做電子方面的工作。做軟件的都知道,寫代碼的時候需要一個不被打擾的環境,而我那個崗位,一天可以接到十幾個電話,嚴重幹擾我的軟件開發進度,因此,我決定離開公司,去做真正的軟件工程師。

入門

第二份工作,我是嵌入式工程師。在去公司之前,我系統的學了一遍51,看的是 「郭天祥十天學會51單片機」,對單片機有個初步的入門。真正入職後,再利用一個月的時間系統學習一遍C語言,看的是C語言之父寫的 「C程序設計語言」。這本書雖然寫于80年代,但現在看來依然不過時。而且這本書比較薄,容易看完,比較有成就感。

看完 「C程序設計語言」之後,最好再看 「C和指針」「C專家編程」「C陷阱與缺陷」。這三本書号稱「C語言三劍客」 ,學完它們你的C語言水平絕對是非常之高了。做我們這行,C語言是基礎語言,一定要把C語言完全拿下。

之後為了工作的需要,開始接觸了Marvell 88MC200及88MW300。這兩款是WIFI芯片,但本質是單片機,采用的是ARM M3内核。底層驅動已經由廠家寫好了,我們要做的工作就是在SDK基礎上做應用做二次開發。在這個過程中,我對敏捷開發有了初步的認識,看了 「高效程序員的45個習慣:敏捷開發修煉之道」這本書。

在第二家公司裡,我知道了物聯網的整體解決方案,對于物聯網的整體框架有了更深入的了解。同時對嵌入式開發所需的技能有了全面的掌握,達到能夠獨立做一個物聯網項目的水平。當然,期間還學會了版本控制工具git,看的是 「Pro Git」「git權威指南」。同時再進一步系統學習了STM32,看的書是野火的 「STM32庫開發實戰指南」,但看的視頻卻是正點原子的。這裡強烈推薦正點原子的視頻,真的是做的非常好。

由于我是轉行,我自知底子薄,起點比别人落後很多,因此我很刻苦學習。我就住在公司附近,公司8點上班,我依然6點起床,12點睡覺。平時沒事的時候就在公司學習,看代碼,寫代碼,調代碼,甚至好幾個周末也是在公司度過。為了轉行我一心撲在了學習上,放棄了一切娛樂活動,隻為能趕上同事一點半點。這個狀态一直持續了我在這個公司的整個過程。

新挑戰

可惜,一年之後我不得不離開了,因為我老婆在廣州,我去廣州追随我老婆了。由于我面試時的不錯表現,以及我不錯的英語口語,我順利的被廣州一家外資世界500強錄用。我的新崗位是Linux應用開發工程師,使用C 開發。而在那時,我既不會Linux,也不會C ,所以公司敢錄用我真的是勇氣可嘉。

從單片機到Linux又是一個比較大的跨度。Linux主要有三個方向:運維、應用、底層,而我選擇的是應用方向。為了工作的需要,我必須先拿下C 。好在公司是外企,幾乎不加班,于是我有充足的時間學習。可是,每天坐班車的時間加起來有三個小時,這麼好的時間我不能浪費啊,于是,我買了個iPad,下載一套視頻,在班車上也進行學習。當然,我也注意保護眼睛,在班車上絕不看書,看視頻的時候也經常往窗外看看。

這裡講講自學過程中是采用看書還是看視頻的方式。我采用的是先看視頻再看書的方式。為什麼要這樣?因為我個人覺得,很多技術書都是很厚的一本,自己看下來要花費很多時間精力,而且很多知識點在工作中很少會用到,可以暫時先略過的。視頻一般會比較短,一般是幾天就能看完,而且老師一般隻挑重點的講。我們時間都很寶貴,我建議先把老師講的知識完全掌握了以後,再利用書籍進一步擴展其它知識。但是,不管是看書還是看視頻,一定要寫代碼,一定要寫代碼,一定要寫代碼,否則非常容易造成眼高手低!!

我這家公司裡我依然保持着早上6點起床,晚上11點睡覺的習慣。這樣早上有1個小時,晚上3個小時,班車上3個小時,一天總共有7個小時可以用于學習。而周末我會睡個懶覺,7點起床,依然11點睡覺,周末幾乎不出門,所以周末又有大量的時間可以用來學習。

Linux應用開發自學之路(Linux應用開發自學之路)2

C 實在是太難了,我用了一個多月才将視頻裡的知識完全拿下來。之後,在工作中,陸續開始看 「C Primer」 進一步鞏固。其它書籍推薦:「Effective C 」「C 語言的設計與演化」「C 标準程序庫」。在stackoverflow上有個C 必讀書單,可以去看看。

學完C 我再學習了Linux系統編程,同樣采用的是先視頻後書籍的方式進行。不管是視頻還是書籍,一定要看最經典的。市面上有太多良莠不齊的視頻和書籍,如果選擇了一個質量不好的材料來看,不僅會浪費很多時間,而且有可能還會被誤導。對于視頻的選擇,可以去各大培訓機構,裡面通常有一些免費視頻資料供我們下載。

對于Linux應用的學習,主要有六部分:1. 環境搭建;2. 基本操作;3. 系統編程;4. 網絡編程;5. 數據庫編程,6. Shell編程。下面一一詳細介紹。

1. 環境搭建

作為Linux工程師,毋庸置疑一定需要Linux環境。對于Linux環境的獲取,我們通常有兩種方式:

  • 将電腦整體安裝為Linux系統;
  • 在電腦裡安裝一個虛拟機,跑Linux電腦;
  • Window Linux雙系統。

得到Linux環境後還不夠,還要知道如何配置、如何遠程連接Linux電腦、如何與Linux電腦互傳文件、如何在主機上閱讀Linux電腦中的代碼,等等。

2. 基本操作

衆所周知,Linux很少或幾乎沒有界面,所有的操作幾乎都可以通過命令行來完成。對于運維人員來說,需要掌握相當大量的Linux命令。而對于應用、驅動方向的人員來說,隻需掌握一些基本的常用的命令即可。對于這部分很多人建議看 「鳥哥的私房菜」 ,但我覺得這個更适合運維人員,我們無需掌握那麼多命令。

3. 系統編程

在學系統編程之前,一定要先學習Makefile,這會為後續的學習提高很大效率。之後的系統編程,主要有幾大塊:IO編程、進程、線程、進程間通訊(包括管道、信号、信号量、共享内存等)。這幾部分學完了,基本也就差不多了。

4. 網絡編程

網絡編程主要就是socket,poll,epoll,以及對TCP/IP的理解,同時要學會高并發式服務器的編寫。

5. 數據庫編程

數據庫的内容其實并不屬于Linux,但在項目中經常要用到。這部分主要要學會數據庫的基本操作,以及如何寫一套接口去操作數據庫。

6. Shell編程

Shell是Linux下的腳本語言,功能雖然不如高級語言強大,但它可能做很多事,在某些場合甚至比高級語言要方便得多。當然除了Shell腳本,還有Python腳本。

Linux應用編程書籍推薦:

  • Unix環境高級編程。簡稱APUE,号稱程序員的聖經。它不是一本API字典,它還講述了很多操作系統的細節,内存,文件系統等方面,是一本難得的好書。但是它起點有點高,不适合初學者。
  • Linux程序設計。如果覺得APUE有點難入門的話,可以選擇此書進行入門。
  • Unix/Linux系統編程手冊。這本書号稱是一本超越APUE的書,它是一本比較新的書,裡面新增了APUE所沒有的Linux/Unix新特性。而且對于一些概念性的東西講的确實比APUE好。但至于能否超載APUE,還有待曆史的考驗。
  • UNIX 網絡編程。也是一本非常經典的書,主要是網絡編程方向的。
  • MySQL必知必會。本書在Amazon上長期排在數據庫銷售榜首,建議想快速了解數據庫原理和MySQL的新手閱讀。快餐性質,簡潔明快,小開本,而且很薄,比較好閱讀。
  • Linux Shell腳本攻略。這本書很薄很精華,它追求的不是全,而是精,所以用它來入門再适合不過了。

學完以上六部分,基本就有能力完成Linux環境下的應用編程了。當然,在有些場合我們可能還需要用到Python腳本。像我公司的項目部分腳本就是用Python完成的。對于Python的入門,可以參考 「簡明Python教程」。但如果想進一步提高的話,那就需要閱讀大量書籍了。對于Linux層級的腳本應用,掌握一些基礎的足夠了。

以上就是我的Linux應用開發自學之路,雖然我離高手還有很長的距離,但我還是将自己的這段自學經曆分享出來,希望能夠幫助朋友們少走一些彎路,同時也期待和高手一起學習、提高。好了,今天的分享就至此為止。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
國内公認三大高端手機
國内公認三大高端手機
來自數據研究機構旭日大數據的最新調查,在7月份國内中高端手機銷量中,OPPO再次一騎絕塵。中端智能手機出貨量排名中,OPPOR11達到了269萬台遙遙領先,超排名第二的自己A57兩倍還多。而在高端智能手機出貨量排名中,OPPOR11Plus...
2024-10-05
android 9.0 音樂播放器
android 9.0 音樂播放器
本來想做個Android音樂播放器測評的合集貼最近有點忙時間确實不夠,所以就推薦最好用,最強大的這款!應用名稱:PowerAmpPowerAmp是Android手機上非常罕見的一款沒有底噪與電流聲的本地音樂播放器。對于懶人來說,即便是不調...
2024-10-05
華為手機鎖屏雜志怎麼關閉
華為手機鎖屏雜志怎麼關閉
很多華為手機用戶會發現一個現象,華為手機的鎖屏壁紙每天都在換,鎖屏一下也會換一張。而且相冊裡會多出來很多雜志鎖屏自動下載的壁紙。有些人喜歡有些人不喜歡。如何關閉或者設置隻下載自己喜歡的壁紙呢?第一步:固定當前圖片手機鎖屏,按一下亮屏,先不要...
2024-10-05
盈通發布RX6400-4GD6LP
盈通發布RX6400-4GD6LP
IT之家4月20日消息,今晚,盈通發布AMDRadeonRX6400-4GD6LP顯卡,售價1349元。官方表示,盈通AMDRadeonRX6400-4GD6LP顯卡采用單槽半高設計,旨在提供出色的高幀率1080p遊戲體驗。據介紹,盈通AM...
2024-10-05
上海市幼兒園早教中心彙總靜安區
上海市幼兒園早教中心彙總靜安區
一間實用又溫馨的母嬰室,對于帶娃出遊的媽媽們來說太有必要了。可以極大緩解外出逛吃買時因換尿不濕、哺乳這些事而帶來的焦慮。周到君走訪上海12家大型商場,找一找滬上商場母嬰室的頂流!位于虹橋路1号的港彙恒隆廣場,一直是滬上shoppingmal...
2024-10-05
Copyright 2023-2024 - www.tftnews.com All Rights Reserved