❶ c語言入門買什麼書好
如果是自學的話,最好不要看潭浩強的書,他喜歡用數學公式做例題,不適合初學者或自學。
其實潭浩強的書並不怎麼樣,比國外的教程差遠了,只是國內高校缺乏創新意識,跟風現象嚴重,從高校到職校,《C程序設計》幾乎人手一本,這才創下了「發行量第一」現象。而且潭浩強已公開表示:不再就他的書回答任何技術性的問題!這分明是對自己技術沒信心、落後於時代的表現。
學習C語言闊以萊這個裙,前面是497,中間是594,最後是374,組合起來就可以找到,我想說的是,除非你是對學習非常熱愛,如果只是湊熱鬧的話,就不要來了
國外教程:
《21天學通C語言》
《C語言三日通》(很多人國外自學者都是看了這本書才入門的,所用的例題簡單易懂)
再介紹以下兩本真正經典的教材:
1.《TheCProgrammingLanguage》
2.《ExpertCProgramming---DeepCSecrets》
如果E文好就看原版,否則只有買譯本了。
強調一句:如果您是自學(初學者),千萬別表譚浩強的書,否則你很難看懂。他的書到處都是,您自己找一本先體驗一下就知道了
❷ 想學習一下計算機編程方面的知識,基礎幾乎等於零,請求按照入門、進階、精通推薦相關的學習書目
學任何一門語言多練習才是王道。多找找題目,然後自己試著寫程序,當然,你還得學會怎麼編譯、調試程序。你得學會看懂編譯器的警告、錯誤信息。這些都是最最基礎的。當你寫完程序發現有問題的時候,可以對照知識點看書,或者上網路知道提問,但記得把代碼貼上來。
初學者應該看的書:《c primer》。當然,如果你是在linux下,還應該看《UNIX環境高級編程》
給你推薦點書,建議你在linux下學C語言,因為開源代碼很多,可以很好的學習:
第一階段:《c primer》、《c primer plus》、《linux c》、《unix環境高級編程》
第二階段:《深入理解計算機系統》、《代碼大全》
第三階段:《重構》
除了多看書,還要多看開源代碼。因為很多開源代碼寫的都很經典。我是過來人,所以就有這些經驗了。
很多人推薦譚浩強的書,我不推薦,原因是:譚浩強的書有的東西不標准也不完善。最簡單的例子就是main函數。通篇用的是main()(這也是用windows學c語言的通病)。標準的main函數是int main(void)和int main(int argc, char *argv[])。因為弄懂了標準的main函數,你就明白了程序是如何和系統交互的。
❸ 學Linux要學到什麼程度
可以按照這個來學,學完就可以找工作啦!
第一階段:linux基礎入門
1. 開班課程介紹-規章制度介紹-破冰活動;
2. Linux硬體基礎/Linux發展歷史;
3. Linux系統安裝/xshell連接/xshell優化/SSH遠程連接故障問題排查
4. 第一關一大波命令及特殊字元知識考試題講解
5. L inux基礎優化
6. Linux目錄結構知識精講
7. 第二關一大波命令及特殊知識考試題講解(上)
8. 第二關一大波命令及特殊知識考試題講解(下)
9. Linux文件屬性一大堆知識精講
10. Linux通配符/正則表達式
11. 第三關一大波命令及重要知識考試題講解(上)
12. 第三關一大波命令及重要知識考試題講解(下)
13. Linux系統許可權(上)
14. Linux系統許可權(下)
15. 第一階段結束需要導師或講師對整體課程進行回顧
第二階段:linux系統管理進階
1. Linux定時任務
2. Linux用戶管理
3. Linux磁碟與文件系統(上)
4. Linux磁碟與文件系統(中下)
5. Linux三劍客之sed命令
第三階段:Linux Shell基礎
1. Shell編程基礎1
2. Shell編程基礎234
3. Linux三劍客之awk命令
第四階段:Linux網路基礎
1. 計算機網路基礎上
2. 計算機網路基礎下
3. 第二階段結束需要導師或講師對整體課程進行回顧。
第五階段:Linux網路服務
1. 集群實戰架構開始及環境准備
2. rsync數據同步服務
3. Linux全網備份項目案例精講
4. nfs網路存儲服務精講
5. inotify/sersync實時數據同步/nfs存儲實時備份項目案例精講
第六階段:Linux重要網路服務
1. http協議/www服務基礎
2. nginx web介紹及基礎實踐
3. nginx web精講結束
4. lnmp環境部署/資料庫異機遷移/共享數據異機遷移到NFS系統
5. nginx負載均衡深入透徹
6. keepalived高可用深入透徹
第七階段:Linux中小規模集群構建與優化(50台)
1. 期中架構開戰說明+期中架構部署回顧
2. 全體晝夜兼程部署期中架構並完成上台述職演講(加上兩個周末共9天)
3. kickstart cobbler 批量自動安裝系統
4. pptp vpn與ntp服務
5. memcached原理及部署/作為緩存及session會話共享
第八階段:Ansible自動化運維與Zabbix監控
1. SSH服務秘鑰認證
2. ansible批量自動化管理集群(入門及深入)
3. zabbix監控
第九階段:大規模集群高可用服務(Lvs、Keepalived)
1. Centos7系統自行安裝/centos6與7區別
2. lvs負載均衡集群/keepalived管理LVS集群
第十階段:java Tomcat服務及防火牆Iptables
1. iptables防火牆精講上
2. iptables防火牆精講下
3. tomcat java應用服務/nginx配合tomcat服務部署及優化
第十一階段:MySQL DBA高級應用實踐
1. MySQL資料庫入門基礎命令
2. MySQL資料庫進階備份恢復
3. MySQL資料庫深入事務引擎
4. MySQL資料庫優化SQL語句優化
5. MySQL資料庫集群主從復制/讀寫分離
6. MySQL資料庫高可用/mha/keepalved
第十二階段:高性能資料庫Redis和Memcached課程
第十三階段:Linux大規模集群架構構建(200台)
第十四階段:Linux Shell編程企業案例實戰
第十五階段:企業級代碼發布上線方案(SVN和Git)
1. GIT管理
2. 代碼上線項目案例
第十六階段企業級Kvm虛擬化與OpenStack雲計算
1. KVM虛擬化企業級實戰
2. OpenStack雲計算企業級實戰
第十七階段公有雲阿里雲8大組件構建集群實戰
第十八階段:Docker技術企業應用實踐
1. Docker容器與微服務深入實踐
2. 大數據Hadoop生態體系及實踐
第十九階段:Python自動化入門及進階
第二十階段:職業規劃與高薪就業指導
❹ 到什麼程度才叫精通Linux
許多同學觸摸Linux不多,對Linux渠道的開發更是一竅不通。而如今的趨勢越來越標明,作為一個優秀的軟體開發人員,或計算機IT職業從業人員,把握Linux是一種很主要的營生資本與手法。
下來我將會結合自己的幾年的個人開發經驗,及對 Linux,更是類UNIX系統,及開源軟體文化,談談Linux的學習方法與學習中應該注意的一些事。
就如同剛才說的,很多同學以前可能連Linux是什麼都不知道,對UNIX更是一無所知。所以我們從最基礎的講起,對於Linux及UNIX的歷史我們不做多談,直接進入入門的學習。
Linux入門是很簡單的,問題是你是否有耐心,是否愛折騰,是否不排斥重裝一類的大修。沒折騰可以說是學不好Linux的,鳥哥說過,要真正了解Linux的分區機制,對LVM使用相當熟橡滑練,沒有20次以上的Linux裝機經驗是積累不起來的,所以一定不要怕折騰。
由於大家之前都使用Windows,所以我也盡可能照顧這些「菜鳥」。我的推薦,如果你第一次接觸Linux,那麼首先在虛擬機中嘗試它。虛擬機我推薦Virtual Box,我並不主張使用VM,原因是VM是閉源的,並且是收費的,我不希望推動盜版。當然如果你的Money足夠多,可以嘗試VM,但我要說的是即使是VM,不一定就一定好。
付費的軟體不一定好。
首先,Virtual Box很小巧,Windows平台下安裝包在80MB左右,而VM動輒600MB,雖然功能強大,但資源消耗也多,何況你的需求Virtual Box完全能夠滿足。所以,還是自己選。
如何使用虛擬機,是你的事,這個我不教你,因為很簡單,不會的話Google或Bai都可以,英文好的可以直接看官方文檔。現在介紹Linux發行版的知識。
正如你所見,Linux發行版並非Linux,Linux僅是指操作系統的內核,作為科班出生的你不要讓我解釋,我也沒時間。
我推薦的發行版如下:
UBUNTU 適合純菜鳥,追求穩定的官方支持,對系統穩定性要求較弱,喜歡最新應用,相對來說不太喜歡折騰的開發者。
Debian,相對UBUNTU難很多的發行版,突出特點是穩定與容易使用的包管理系統,缺點是企業支持不足,為社區開發驅動。
Arch,追逐時尚的開發者的首選,優點是包更新相當快,無縫升級,一次安裝基本可以一直運作下去,沒有如UBUNTU那樣的版本概念,說的專業點叫滾動升級,保持你的系統一定是最新的。缺點顯然易見,不穩定。同時安裝配置相對Debian再麻煩點。
Gentoo,相對Arch再難點,考驗使用者的綜合水平,從系統安裝到微調,內核編譯都親歷親為,是高手及黑客顯示自己技術手段,按需配置符合自己要求的系統的首選。
Slackware與Gentoo類似。
CentOS,社區維護的RedHat的復刻版本,完全使用RedHat的源碼重新編譯生成,與RedHat的兼容性在理論上來說是最好的。如果你專注於Linux伺服器,如網路管理,架站,那麼CentOS是你的選擇。
LFS,終極黑客顯擺工具,完全從源代碼安裝,編譯系統。安裝前你得到的只有一份文檔,你要做的就是照文檔你的說明,一步步,一條條命令,一個個軟體包的去構建你的Linux,完全由你自己控制,想要什麼就是什麼。如果你做出了LFS,證明你的Linux功底已經相當不錯,如果你能拿LFS文檔活學活用,再將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一定得吃透了,你很NB
UNIX網路編程– 卷一,卷二
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的硬體了,所以做硬體驅動開發不像嵌入式,對硬體常識的請求很高。
能夠嫻熟的建立常見的效勞,lnmp,ftp,dns,smba,假如呈現毛病,能夠及時的排除去。。。常常運用Linux,必定能夠變成大神。
原文鏈接:http://www.mage.com/71706.html