『壹』 要成為一名專業的程序員,從零開始需要怎麼一步步來比較好,要把最底層的先學精通嗎(個人認為)求學長
前言
你是否覺得自己從學校畢業的時候只做過小玩具一樣的程序?走入職場後哪怕沒有什麼經驗也可以把以下這些課外練習走一遍(朋友的抱怨:學校課程總是從理論出發,作業項目都看不出有什麼實際作用,不如從工作中的需求出發)
建議:
不要亂買書,不要亂追新技術新名詞,基礎的東西經過很長時間積累而且還會在未來至少10年通用。
回顧一下歷史,看看歷史上時間線上技術的發展,你才能明白明天會是什麼樣。
一定要動手,例子不管多麼簡單,建議至少自己手敲一遍看看是否理解了里頭的細枝末節。
一定要學會思考,思考為什麼要這樣,而不是那樣。還要舉一反三地思考。
註:你也許會很奇怪為什麼下面的東西很偏Unix/linux,這是因為我覺得Windows下的編程可能會在未來很沒有前途,原因如下:
現在的用戶界面幾乎被兩個東西主宰了,1)Web,2)移動設備iOS或Android。Windows的圖形界面不吃香了。
越來越多的企業在用成本低性能高的Linux和各種開源技術來構架其系統,Windows的成本太高了。
微軟的東西變得太快了,很不持久,他們完全是在玩弄程序員。詳情參見《Windows編程革命史》
所以,我個人認為以後的趨勢是前端是Web+移動,後端是Linux+開源。開發這邊基本上沒Windows什麼事。
啟蒙入門
1、 學習一門腳本語言,例如python/Ruby
可以讓你擺脫對底層語言的恐懼感,腳本語言可以讓你很快開發出能用得上的小程序。實踐項目:
處理文本文件,或者csv (關鍵詞 python csv, python open, python sys) 讀一個本地文件,逐行處理(例如 word count,或者處理log)
遍歷本地文件系統 (sys, os, path),例如寫一個程序統計一個目錄下所有文件大小並按各種條件排序並保存結果
跟資料庫打交道 (python sqlite),寫一個小腳本統計資料庫里條目數量
學會用各種print之類簡單粗暴的方式進行調試
學會用Google (phrase, domain, use reader to follow tech blogs)
為什麼要學腳本語言,因為他們實在是太方便了,很多時候我們需要寫點小工具或是腳本來幫我們解決問題,你就會發現正規的編程語言太難用了。
2、 用熟一種程序員的編輯器(不是IDE) 和一些基本工具
Vim / Emacs / Notepad++,學會如何配置代碼補全,外觀,外部命令等。
Source Insight (或 ctag)
使用這些東西不是為了Cool,而是這些編輯器在查看、修改代碼/配置文章/日誌會更快更有效率。
3、 熟悉Unix/Linux Shell和常見的命令行
如果你用windows,至少學會用虛擬機里的linux, vmware player是免費的,裝個Ubuntu吧
一定要少用少用圖形界面。
學會使用man來查看幫助
文件系統結構和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
學會使用一些文本操作命令 sed/awk/grep/tail/less/more …
學會使用一些管理命令 ps/top/lsof/netstat/kill/tcpmp/iptables/dd…
了解/etc目錄下的各種配置文章,學會查看/var/log下的系統日誌,以及/proc下的系統運行信息
了解正則表達式,使用正則表達式來查找文件。
對於程序員來說Unix/Linux比Windows簡單多了。(參看我四年前CSDN的博文《其實Unix很簡單》)學會使用Unix/Linux你會發現圖形界面在某些時候實在是太難用了,相當地相當地降低工作效率。
4、 學習Web基礎(HTML/CSS/JS) + 伺服器端技術 (LAMP)
未來必然是Web的世界,學習WEB基礎的最佳網站是W3School。
學習HTML基本語法
學習CSS如何選中HTML元素並應用一些基本樣式(關鍵詞:box model)
學會用 Firefox + Firebug 或 chrome 查看你覺得很炫的網頁結構,並動態修改。
學習使用javascript操縱HTML元件。理解DOM和動態網頁(Dynamic HTML: The Definitive Reference, 3rd Edition - O'Reilly Media) 網上有免費的章節,足夠用了。或參看 DOM 。
學會用 Firefox + Firebug 或 chrome 調試Javascript代碼(設置斷點,查看變數,性能,控制台等)
在一台機器上配置Apache 或 Nginx
學習php,讓後台PHP和前台HTML進行數據交互,對伺服器相應瀏覽器請求形成初步認識。實現一個表單提交和反顯的功能。
把PHP連接本地或者遠程資料庫 MySQL(MySQL 和 SQL現學現用夠了)
跟完一個名校的網路編程課程(例如:http://www.stanford.e/~ouster/cgi-bin/cs142-fall10/index.php ) 不要覺得需要多於一學期時間,大學生是全職一學期選3-5門課,你業余時間一定可以跟上
學習一個javascript庫(例如jQuery 或 ExtJS)+ Ajax (非同步讀入一個伺服器端圖片或者資料庫內容)+JSON數據格式。
HTTP: The Definitive Guide 讀完前4章你就明白你每天上網用瀏覽器的時候發生的事情了(proxy, gateway, browsers)
做個小網站(例如:一個小的留言板,支持用戶登錄,Cookie/Session,增、刪、改、查,上傳圖片附件,分頁顯示)
買個域名,租個空間,做個自己的網站。
進階加深
1、 C語言和操作系統調用
重新學C語言,理解指針和內存模型,用C語言實現一下各種經典的演算法和數據結構。推薦《計算機程序設計藝術》、《演算法導論》和《編程珠璣》。
學習(麻省理工免費課程)計算機科學和編程導論
學習(麻省理工免費課程)C語言內存管理
學習Unix/Linux系統調用(Unix高級環境編程),,了解系統層面的東西。
用這些系統知識操作一下文件系統,用戶(實現一個可以拷貝目錄樹的小程序)
用fork/wait/waitpid寫一個多進程的程序,用pthread寫一個多線程帶同步或互斥的程序。多進程多進程購票的程序。
用signal/kill/raise/alarm/pause/sigprocmask實現一個多進程間的信號量通信的程序。
學會使用gcc和gdb來編程和調試程序(參看我的《用gdb調試程序》)
學會使用makefile來編譯程序。(參看我的《跟我一起寫makefile》)
IPC和Socket的東西可以放到高級中來實踐。
學習Windows SDK編程(Windows 程序設計 ,MFC程序設計)
寫一個窗口,了解WinMain/WinProcere,以及Windows的消息機制。
寫一些程序來操作Windows SDK中的資源文件或是各種圖形控制項,以及作圖的編程。
學習如何使用MSDN查看相關的SDK函數,各種WM_消息以及一些常式。
這本書中有很多常式,在實踐中請不要照抄,試著自己寫一個自己的常式。
不用太多於精通這些東西,因為GUI正在被Web取代,主要是了解一下Windows 圖形界面的編程。@virushuo 說:「 我覺得GUI確實不那麼熱門了,但充分理解GUI工作原理是很重要的。包括移動設備開發,如果沒有基礎知識仍然很吃力。或者說移動設備開發必須理解GUI工作,或者在win那邊學,或者在mac/iOS上學」。
2、學習Java
Java 的學習主要是看經典的Core Java 《Java 核心技術編程》和《Java編程思想》(有兩卷,我僅鏈了第一卷,足夠了,因為Java的圖形界面了解就可以了)
學習JDK,學會查閱Java API Doc Java Platform SE 6
了解一下Java這種虛擬機語言和C和Python語言在編譯和執行上的差別。從C、Java、Python思考一下「跨平台」這種技術。
學會使用IDE Eclipse,使用Eclipse 編譯,調試和開發Java程序。
建一個Tomcat的網站,嘗試一下JSP/Servlet/JDBC/MySQL的Web開發。把前面所說的那個PHP的小項目試著用JSP和Servlet實現一下。
3、Web的安全與架構
學習HTML5,網上有很多很多教程,以前酷殼也介紹過很多,我在這里就不羅列了。
學習Web開發的安全問題(參考新浪微博被攻擊的這個事,以及Ruby的這篇文章)
學習HTTP Server的rewrite機制,Nginx的反向代理機制,fast-cgi(如:PHP-FPM)
學習Web的靜態頁面緩存技術。
學習Web的非同步工作流處理,數據Cache,數據分區,負載均衡,水平擴展的構架。
實踐任務:
使用HTML5的canvas 製作一些Web動畫。
嘗試在前面開發過的那個Web應用中進行SQL注入,JS注入,以及XSS攻擊。
把前面開發過的那個Web應用改成構造在Nginx + PHP-FPM + 靜態頁面緩存的網站
4、學習關系型資料庫
你可以安裝MSSQLServer或MySQL來學習資料庫。
學習教科書里資料庫設計的那幾個範式,1NF,2NF,3NF,……
學習資料庫的存過,觸發器,視圖,建索引,游標等。
學習SQL語句,明白表連接的各種概念(參看《SQL Join的圖示》)
學習如何優化資料庫查詢(參看《MySQL的優化》)
實踐任務:設計一個論壇的資料庫,至少滿足3NF,使用SQL語句查詢本周,本月的最新文章,評論最多的文章,最活躍用戶。
5、一些開發工具
學會使用SVN或Git來管理程序版本。
學會使用JUnit來對Java進行單元測試。
學習C語言和Java語言的coding standard 或 coding guideline。(我N年前寫過一篇關C語言非常簡單的文章——《編程修養》,這樣的東西你可以上網查一下,一大堆)。
推薦閱讀《代碼大全》《重構》《代碼整潔之道》
高級深入
1、C++ / Java 和面向對象
我個人以為學好C++,Java也就是舉手之勞。但是C++的學習曲線相當的陡。不過,我覺得C++是最需要學好的語言了。參看兩篇趣文「C++學習信心圖」 和「21天學好C++」
學習(麻省理工免費課程)C++面向對象編程
讀我的 「如何學好C++」中所推薦的那些書至少兩遍以上(如果你對C++的理解能夠深入到像我所寫的《C++虛函數表解析》或是《C++對象內存存局(上)(下)》,或是《C/C++返回內部靜態成員的陷阱》那就非常不錯了)
然後反思為什麼C++要干成這樣,Java則不是?你一定要學會對比C++和Java的不同。比如,Java中的初始化,垃圾回收,介面,異常,虛函數,等等。
實踐任務:
用C++實現一個BigInt,支持128位的整形的加減乘除的操作。
用C++封裝一個數據結構的容量,比如hash table。
用C++封裝並實現一個智能指針(一定要使用模板)。
《設計模式》必需一讀,兩遍以上,思考一下,這23個模式的應用場景。主要是兩點:1)鍾愛組合而不是繼承,2)鍾愛介面而不是實現。(也推薦《深入淺出設計模式》)
實踐任務:
使用工廠模式實現一個內存池。
使用策略模式製做一個類其可以把文本文件進行左對齊,右對齊和中對齊。
使用命令模式實現一個命令行計算器,並支持undo和redo。
使用修飾模式實現一個酒店的房間價格訂價策略——旺季,服務,VIP、旅行團、等影響價格的因素。
學習STL的用法和其設計概念 - 容器,演算法,迭代器,函數子。如果可能,請讀一下其源碼。
實踐任務:嘗試使用面向對象、STL,設計模式、和WindowsSDK圖形編程的各種技能
做一個貪吃蛇或是俄羅斯方塊的游戲。支持不同的級別和難度。
做一個文件瀏覽器,可以瀏覽目錄下的文件,並可以對不同的文件有不同的操作,文本文件可以打開編輯,執行文件則執行之,mp3或avi文件可以播放,圖片文件可以展示圖片。
學習C++的一些類庫的設計,如: MFC(看看候捷老師的《深入淺出MFC》) ,Boost, ACE, CPPUnit,STL (STL可能會太難了,但是如果你能了解其中的設計模式和設計那就太好了,如果你能深入到我寫的《STL string類的寫時拷貝技術》那就非常不錯了,ACE需要很強在的系統知識,參見後面的「加強對系統的了解」)
Java是真正的面向對象的語言,Java的設計模式多得不能再多,也是用來學習面向對象的設計模式的最佳語言了(參看Java中的設計模式)。
推薦閱讀《Effective Java》 and 《Java解惑》
學習Java的框架,Java的框架也是多,如Spring, Hibernate,Struts 等等,主要是學習Java的設計,如IoC等。
Java的技術也是爛多,重點學習J2EE架構以及JMS, RMI, 等消息傳遞和遠程調用的技術。
學習使用Java做Web Service (官方教程在這里)
實踐任務: 嘗試在Spring或Hibernate框架下構建一個有網路的Web Service的遠程調用程序,並可以在兩個Service中通過JMS傳遞消息。
C++和Java都不是能在短時間內能學好的,C++玩是的深,Java玩的是廣,我建議兩者選一個。我個人的學習經歷是:
深究C++(我深究C/C++了十來年了)
學習Java的各種設計模式。
2、加強系統了解
重要閱讀下面的幾本書:
《Unix編程藝術》了解Unix系統領域中的設計和開發哲學、思想文化體系、原則與經驗。你一定會有一種醍醐灌頂的感覺。
《Unix網路編程卷1,套接字》這是一本看完你就明白網路編程的書。重要注意TCP、UDP,以及多路復用的系統調用select/poll/epoll的差別。
《TCP/IP詳解 卷1:協議》- 這是一本看完後你就可以當網路黑客的書。了解乙太網的的運作原理,了解TCP/IP的協議,運作原理以及如何TCP的調優。
實踐任務:
理解什麼是阻塞(同步IO),非阻塞(非同步IO),多路復用(select, poll, epoll)的IO技術。
寫一個網路聊天程序,有聊天伺服器和多個聊天客戶端(服務端用UDP對部分或所有的的聊天客戶端進Multicast或Broadcast)。
寫一個簡易的HTTP伺服器。
《Unix網路編程卷2,進程間通信》信號量,管道,共享內存,消息等各種IPC…… 這些技術好像有點老掉牙了,不過還是值得了解。
實踐任務:
主要實踐各種IPC進程序通信的方法。
嘗試寫一個管道程序,父子進程通過管道交換數據。
嘗試寫一個共享內存的程序,兩個進程通過共享內存交換一個C的結構體數組。
學習《Windows核心編程》一書。把CreateProcess,Windows線程、線程調度、線程同步(Event, 信號量,互斥量)、非同步I/O,內存管理,DLL,這幾大塊搞精通。
實踐任務:使用CreateProcess啟動一個記事本或IE,並監控該程序的運行。把前面寫過的那個簡易的HTTP服務用線程池實現一下。寫一個DLL的鉤子程序監控指定窗口的關閉事件,或是記錄某個窗口的按鍵。
有了多線程、多進程通信,TCP/IP,套接字,C++和設計模式的基本,你可以研究一下ACE了。使用ACE重寫上述的聊天程序和HTTP伺服器(帶線程池)
實踐任務:通過以上的所有知識,嘗試
寫一個服務端給客戶端傳大文件,要求把100M的帶寬用到80%以上。(注意,磁碟I/O和網路I/O可能會很有問題,想一想怎麼解決,另外,請注意網路傳輸最大單元MTU)
了解BT下載的工作原理,用多進程的方式模擬BT下載的原理。
3、系統架構
負載均衡。HASH式的,純動態式的。(可以到Google學術里搜一些關於負載均衡的文章讀讀)
多層分布式系統 – 客戶端服務結點層、計算結點層、數據cache層,數據層。J2EE是經典的多層結構。
CDN系統 – 就近訪問,內容邊緣化。
P2P式系統,研究一下BT和電驢的演算法。比如:DHT演算法。
伺服器備份,雙機備份系統(Live-Standby和Live-Live系統),兩台機器如何通過心跳監測對方?集群主結點備份。
虛擬化技術,使用這個技術,可以把操作系統當應用程序一下切換或重新配置和部署。
學習Thrift,二進制的高性能的通訊中間件,支持數據(對象)序列化和多種類型的RPC服務。
學習Hadoop。Hadoop框架中最核心的設計就是:MapRece和HDFS。MapRece的思想是由Google的一篇論文所提及而被廣為流傳的,簡單的一句話解釋MapRece就是「任務的分解與結果的匯總」。HDFS是Hadoop分布式文件系統(Hadoop Distributed File System)的縮寫,為分布式計算存儲提供了底層支持。
了解NoSQL資料庫(有人說可能是一個過渡炒作的技術),不過因為超大規模以及高並發的純動態型網站日漸成為主流,而SNS類網站在數據存取過程中有著實時性等剛性需求,這使得目前NoSQL資料庫慢慢成了人們所關注的焦點,並大有成為取代關系型資料庫而成為未來主流數據存儲模式的趨勢。當前NoSQL資料庫很多,大部分都是開源的,其中比較知名的有:MemcacheDB、Redis、Tokyo Cabinet(升級版為Kyoto Cabinet)、Flare、MongoDB、CouchDB、Cassandra、Voldemort等。
『貳』 零基礎學習linux要怎麼開始
初學者入門學習Linux,可按照以下階段進行學習:
第一階段:初級入門
初級階段需要把linux運維學習路線搞清楚,任何學習都是循序漸進的,所以學linux運維也是需要有一定的路線。
1、Linux基礎知識、基本命令(起源、組成、常用命令如cp、ls、file、mkdir等常見操作命令)
2、Linux用戶及許可權基礎
3、Linux系統進程管理進階
4、linux高效文本、文件處理命令(vim、grep、sed、awk、find等命令)
5、shell腳本入門(可邊練習邊學習)
第二階段:中級進階
中級進階需要在充分了解linux原理和基礎知識之後,對上層的應用和服務進行深入學習,其中說到服務肯定涉及到網路的相關知識,是需要花時間學習的。
1、TCP/IP網路基礎(差不多CCNA、NP的知識就夠用)
2、Linux企業常用服務(如dns、http、ftp、mail、nfs等)
3、Linux企業級安全原理和防範技巧(系統性能/安全、安全威脅模型和保護方法
4、加密/解密慧或晌原理及數據安全、系統服務訪問控制及服務安全基礎
5、iptables安全策略構建
6、shell腳本進階(主要是結合一些應用,寫一些案例)
7、MySQL應用原理及管理入門(能管理和搭建一個個人博客站點)
第三階段:高級提升
1、http服務代理緩存加速(其中主要學習varnish、nginx緩存系統,要對CDN的知識有前鋒所了解。)
2、企業級負載集群(其中主要學習nginx、haproxy、lvs要對主要知識熟練掌握,對負載均衡演算法有清晰認識)
3、企業級高可用集群 (其中需要對keepalived,heartbeat等進行深入講解)
4、運維監控zabbix詳解(主要是zabbix、cacti、nagios等監控系統,現在用的比較多的是zabbix)
5、運維自動化學習(需要學一些開源運維自動化工具的使用如ansible、puppet、cobbler等運維自動化工具)
第四階段:資深方向進階
1、 大數據方向(需要對hadoop、storm等常見開源大數據系統需要深入了解)
2、 雲計算方向(主要是openstack這套東西,當然像一些kvm等虛擬化技術,也是需要掌握的,現在docker也比較流行)
3、 運維開發(主要是python運維開發)
4、 自動化運維(在之前自動化基礎上做深入)
5、 運維架構師(主要團伍需要廣度,差不多5年左右以上經驗,可以擔當此職位)
『叄』 Linux運維需要掌握哪些基礎知識
linux最先要學的是Linux基礎知識,學完基礎知識才算入門,之後還要學習綜合架構、Shell編程、資料庫、雲計算以及網路安全方面的知識,以下是linux基礎部分要學習的內容:
1. 計算機硬體、組成原理、操作系統基礎、Linux起源、核心介紹及Linux安裝實戰入門
2. Xshell遠程網路連接Linux、基礎優化、遠程連接網路基礎、Xshell連接故障排錯、核心基礎命令講解
3. Linux系統核心通配符體系、三劍客(grep,sed,awk)核心正則表達式精講及企業級案例實戰模擬精講
4. Bash核心符號、快捷鍵、通配符詳解
5. Linux目錄、FHS\掛載、文件屬性、核心目錄精講
6. Linux文件及目錄管理核心知識和命令精講(第二關)
7. Linux企業級基礎優化(工作中可直接使用
8. Linux文件及目錄許可權精講及多個企業案例模擬
9. Linux重要核心命令回顧與深入精講(第三關)
『肆』 電腦編程什麼書好過年在家想要學習電腦編程有什麼好的書籍推薦嗎
『壹』 簡單的電腦編程教學 電腦編程教學書推薦
學習電腦編程一部分人是因為自己的興趣愛好,還有一部分是為了找到更好的工作。關於 簡單的電腦編程 ,不同編程方法所用的方式也不同,下面我就為大家帶來 簡單的電腦編程 之51單片機按鍵控制LED燈亮滅。
簡單的電腦編程 51單片機按鍵控制LED燈亮滅
一、簡單的電腦編程51單片機按鍵控制LED燈亮滅基本思路
編程之前我們先要規劃大概控制思路,按鍵控制二極體的功能,就讓單片機一直監測P2.0的電平狀態,若S2按下,P2.0此時會接地,然後單片機再通知P2.4管腳,讓D1轉變發光狀態,放開按鍵,則燈泡滅掉。知道控制的大概原理之後就可以開始編程了。
二、編寫簡單程序
#include
sbit S2=P2^0;
sbit D1=P2^4;
函數名:main(void);
返回:無
函數功能描述:按鍵控制燈的亮滅
voidmain(void) //程序開始運行
{
D1=1; //程序初始化,令二極體不發光
while(1) //循環檢測
{
if(S2==0) //如果檢測到P2.0管腳為低電平,即按鍵按下
{
D1=~D1; //二極體轉換發光狀態,返回繼續循環檢測
}
}
}
這個就是51單片機按鍵控制LED燈亮編寫的簡單程序,原理非常簡單,對於小白來說可能是看天書,所以說基本知識要知道。
電腦編程教學書推薦
為了讓大家更好地學習編程,還是得告訴大家一定要大號基礎,這邊就介紹基本編程的書本給大家吧。
一、java
java編程語言(第三版)——java四大名著——James Gosling(java之父);
java編程思想(第2版)——java四大名著——Bruce Eckel;
java 2核心技術 卷I:基礎知識(原書第7版)——java四大名著-----Cay Horstmann;
java 2核心技術 卷II:高級特性(原書第7版)——java四大名著-----Cay Horstmann;
精通Struts:基於MVC的java Web設計與開發——孫衛琴;
精通Hibernate:java對象持久化技術詳解---孫衛琴;
二、C語言
C#程序設計——Charles Petzold「windows編程泰山北斗」;
NET框架程序設計(修訂版)——Jeffrey Richter「windows編程泰山北斗」;
C++程序設計語言(特別版)——c++八 大金 剛----Bjarne Stroustrup;
C++ Primer (第3版)中文版——c++八大金剛---Stanley B.Lippman;
C++ Primer (第4版)中文版——c++八大金剛---Stanley B.Lippman;
C++標准程序庫—自修教程與參考手冊--c++八大金剛--Nicolai M.Josuttis;
Essential C++中文版——c++八大金剛---Stanley B.Lippman;
總結:一閃就是我為大家詳解的 簡單的電腦編程 51單片機按鍵控制LED燈亮滅,以及一些電腦編程教學書推薦,希望能給各位想學編程的人帶來一些幫助。總之學習入門的電腦編程是非常簡單的,主要是要理解才行。
『貳』 我想學習編程需要購買那些書籍
書籍整理如下:
C++開發
1.《C++ Primer》:全面學習C++的必備書籍
2.《Thinking in C++》:了解C++背後的一些機制
3.《深度探索C++對象模型》:深入了解C++,也是學習COM的必經之路
Windows平台
入門
1.《Windows程序設計》:這本書主要講的是Windows API的使用,是Windows編程入門書籍。上冊涉及到的知識基本上就夠用了,時間不充裕的話閱讀上冊即可。
2.《Win32多線程程序設計》:Windows下多線程編程必備
3.《Windows核心編程》:Window平台基礎知識:消息機制,內存管理,多線程,動態鏈接庫等
4.《Windows網路編程》:介紹Windows下各種網路協議的開發和並發處理模型。
進階
1.《深入淺出MFC》:Windows下編程,MFC雖然有些過時,但其機制還是有學習的價值。重點學習書中提到的MFC 6大機制
2.《COM本質論》:COM是Windows構建用戶態的重要技術之一,Windows開發必修課,本書對COM的設計動機作了深入闡述
3.《深入解析ATL》:ATL全名Active Templete Library,是用C++的模版封裝了COM,這本書主要講的是對源碼分析
4.《WTL White Paper》:WTL源自微軟,基於ATL的一套開源模版庫,主要用於界面編程和工具類的使用
5.《代碼大全》:這邊書主要講的是工程編碼規范
高級
1.《深入解析Windows操作系統》:Windows大牛書籍,講的主要是Windows操作系統的內核原理
調試技術
1.《軟體調試》
2.《Windows高級調試》
3.《windows用戶態程序高效排錯》
Linux平台
Linux內核
1.《Linux Kernel Development》/《Linux內核設計與實現》:Robert Love的著作,不厚的一本書,深入淺出地將Linux內核娓娓道來
Linux使用和Shell編程
1.《sed & awk》/《sed與awk》:sed與awk都是Linux下常用的日誌分析利器
Linux編程
1.《Beginning Linux Programming》/《Linux程序設計》:老牌的Linux編程入門書
2.《Advanced Programming in the Unix Environment》/《Unix環境高級編程》:對Unix編程環境做了細致的總結,涵蓋了進程間通訊、網路通訊、文件系統等各方面的知識
網路編程
1.《TCP/IP Illustrated, Volume I》/《TCP/IP詳解,卷一》:對理解TCP/IP協議的設計理念和協議細節有顯著的幫助。
2.《Unix Network Programming》/《Unix網路編程》,卷一、卷二:網路編程方面難以逾越的著作,事無巨細、深入淺出,強烈推薦
對這些書目抱有100%的信心,全部掌握,融會貫通,即可打通奇經八脈,天下無雙。
對了,你沒有基礎最好從c與c++基礎開始。找些基礎書開始看。
[C語言入門經典(第四版)].(美)霍頓.掃描版,《C++ Primer》就不錯。
『叄』 本人想學習編程,需要哪些入門書籍
1、清華大學出版社出版的《C++程序設計教程》、《C++PRIMER》、譚浩強的《程序設計書》、《Effective C++》、《More Effective C++》、《Exceptional C++》 、《More Exceptional C++》、《深入探索c++對象模型》等
2、具體怎樣學編程 :
①明確學習目的
學習編程對大多數IT業人員來說都是非常有用的。學編程,做一名編程人員,從個人角度講,可以解決在軟體使用中所遇到的問題,改進現有軟體,可以為自己找到一份理想的工作添加重要得砝碼,有利於在求職道路上謀得一個好的職位;從國家的角度,可以為中國的軟體產業做出應有的貢獻,一名優秀的程序員永遠是被爭奪的對象。
②打好基礎
(1)數學基礎 從計算機發展和應用的歷史來看計算機的數學模型和體系結構等都是有數學家提出的,最早的計算機也是為數值計算而設計的。因此,要學好計算機就要有一定的數學基礎,出學者有高中水平就差不多了。
(2)邏輯思維能力的培養學程序設計要有一定的邏輯思維能力,「邏思力」的培養要長時間的實踐鍛煉。要想成為一名優秀的程序員,最重要的是掌握編程思想。要做到這一點必須在反復的實踐、觀察、分析、比較、總結中逐漸地積累。
(3)選擇一種合適的入門語言 面對各種各樣的語言,應按什麼樣的順序學呢?
③ 注意理解一些重要概念
一本程序設計的書看到的無非就是變數、函數、條件語句、循環語句等概念,但要真正能進行編程應用,需要深入理解這些概念,在理解的基礎上應用,不要只簡單地學習語法、結構,而要吃透針對這些語法、結構的應用例子,做到舉一反三,觸類旁通。
④掌握編程思想
學習一門語言或開發工具,語法結構、功能調用是次要的,最主要是學習它的思想。例如學習 VC 就要學習 Windows 的內在機理、什麼是線程......;學習 COM 就要知道 VTALBE 、類廠、介面、idl......,關鍵是學一種思想,有了思想,那麼就可以觸類旁通。
⑤多實踐、多交流
掌握編程思想必須在編程實際工作中去實踐和體會。編程起步階段要經常自己動手設計程序,具體設計時不要拘泥於固定的思維方式,遇到問題要多想幾種解決的方案。這就要多交流,各人的思維方式不同、角度各異,各有高招,通過交流可不斷吸收別人的長處,豐富編程實踐,幫助自己提高水平。親自動手進行程序設計是創造性思維應用的體現,也是培養邏輯思維的好方法。
⑥養成良好的編程習慣
編程入門不難,但入門後不斷學習是十分重要的,相對來說較為漫長。在此期間要注意養成一些良好的編程習慣。編程風格的好壞很大程度影響程序質量。良好的編程風格可以使程序結構清晰合理,且使程序代碼便於維護。如代碼的縮進編排、變數命令規則的一致性、代碼的注釋等。
⑦上網學編程
在網上可以學到很多不同的編程思想、方法、經驗和技巧,有大量的工具和作品及相關的輔導材料供下載。例如網站「編程課堂」()主要以 VB 和 Delph;教學和交流為主,提供大量實用技巧。
⑧加強計算機理論知識的再學習
學編程是符合「理論→實踐→再理論→再實踐」的一個認識過程。一開始要具有一定的計算機理論基礎知識,包括編程所需的數學基礎知識,具備了入門的條件,就可以開始編程的實踐,從實踐中可以發現問題需要加強計算機理論知識的再學習。程序人人皆可編,但當你發現編到一定程度很難再提高的時候,就要回頭來學習一些計算機科學和數學基礎理論。
『肆』 關於編程的書籍
一、Python系列(3本)
如果你之前一點編程經驗都沒有,先看如下兩本:
1、《簡明Python教程》(A Byte of Python)
入門Python的絕佳Tutorial,從書的目錄便可以了解到作者Swaroop C H清晰的行文思路,以及對Python高超的駕馭能力。
2、《集體智慧編程》
以具體實例的方式來展示Python的編程技巧,受益良多。作者用非常直觀的方式向讀者展示了人工智慧和機器學習中的大量經典的演算法。更可貴的是,作者在展示演算法時所使用的例子都是網路中非常有代表性的場景,並且很多情況下還會結合一些實際運營的 Web 站點的數據作更進步闡釋。當然,作為一本實用型的書,少不了的是大量可運行的代碼。
3、《Python Cookbook中文版,第3版》
這本書可謂Python版《代碼大全》。有人說《代碼大全》這類書是字典,其實不盡然《代碼大全》是高手過招。《Cookbook》也如此,閱讀時總能讓你有一種:「哇塞,漂亮!」的感覺。能把 Cookbook 全部讀完,你的Python水平絕對發生質變。
二、Java語言系列(3本)
1、《Java核心技術·卷1:基礎知識(原書第9版)》
Java領域最有影響力和價值的著作之一,擁有20多年教學與研究經驗的資深Java技術專家撰寫,與《Java編程思想》齊名。
2、《演算法 第四版》
Java 語言描述,演算法領域經典的參考書,全面介紹了關於演算法和數據結構的必備知識,並特別針對排序、搜索、圖處理和字元串處理進行了論述。書的內容非常多,可以說是Java程序員的必備書籍之一
3、《數據結構與演算法分析:Java語言描述》
這本書真是非常好!個人感覺很適合給初學者入門看,裡面的分析數學公式恰到好處,沒有演算法導論的令人望而生畏,也沒有國內圖書的草草了事,既學習了數據結構又有剛剛好的演算法分析,很容易使人產生共鳴。
當然,對於Java我們建議進行系統的學習,扎實基礎不能只靠看書。如果你有任何疑問,歡迎你在千鋒武漢官網上留下你的相關情況,我再對號入座幫你解答。
在這里插入圖片描述
三、前端系列(4本)
1、《Java權威指南(第6版)》
淘寶前端團隊翻譯,這本書又叫犀牛書,號稱Java開發者的聖經,網上對此書評價很多,大概意思都是說這本書是一本Java文檔手冊,沒有完整看過一遍此書的都不能算是一名合格的前端工程師。
2、《Java高級程序設計(第3版)》
又稱紅寶書,雅虎首席前端架構師,YUI的作者Zakas出品。雖然書名帶了「高級」二字,但是講得也很基礎,而且行文風格很流暢,每一小節就像是一篇博客,讀起來並不枯燥,個人感覺比上面那本犀牛書可讀性更強。
3、《Java設計模式與開發實踐》
本書是在設計模式上的進一步擴充。一大特點就是結合實操,代碼完整能直接應用到實際開發中。
4、《Web性能權威指南》
本書是谷歌公司高性能團隊核心成員的權威之作,堪稱實戰經驗與規范解讀完美結合的產物。本書目標是涵蓋Web開發者技術體系中應該掌握的所有網路及性能優化知識。
『伍』 過年在家,想要學習電腦編程,有什麼好的書籍推薦嗎
『陸』 編程領域最好的入門書籍
C語言及C++
C語言基本上是編程語言界的聖母,幾乎所有主流的編程語言都是從C語言衍生而來,可想而知C語言的重要性。
而C++,可以說是上限最高的編程語言,其他編程語言能實現的功能,基本上C++都能實現,,
0.1,《C語言經典入門》
0.2,《C語言程序設計》譚浩強版(雖然有很多瑕疵,但是真的講的很細)
1,《C和指針》
2,《C專家編程》
3,《C++ prime》第五版(C++大佬輪子哥@vczh的親自開光的入門書)
java
Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。
Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點。
Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。
說了那麼多,一句話總結:java程序員崗位是目前最多的程序員崗位。
1,《java核心技術·卷1:基礎知識》
2,《java核心技術·卷2:高級特性》
3,《java編程思想》
python爬蟲
python作為目前最火的編程語言,入門相對快、發展方向多確實是它的優點,比如:爬蟲
1,《python編程:從入門到實踐》
2,《python網路爬蟲從入門到實踐》
人工智慧
目前百分之80的研究生都在學習的內容,就是如何將人工智慧與自己專業的東西結合起來,當然,目前是用python為基礎講解的,,
1,機器學習部分
1.1,《機器學習》
1.2,《機器學習實戰》
1.3,《統計學習方法》 (註:統計學習方法已出第二版)
1.4,黃博的深度學習個人筆記
2,深度學習部分
2.1,《深度學習》
2.2,黃博的深度學習個人筆記
3,人工智慧部分(註:TensorFlow已更新至2.0版本,如下書籍為以1.0版本為基礎講解的)
3.1,《TensorFlow實戰》
3.2,《TensorFlow:實戰Google深度框架》
程序人生
此部分書籍不講具體技術,主要益處為對程序員的職業生涯、編碼風格和人生的幫助,順序不分先後,
1,《代碼整潔之道》
2,《大話設計模式》
3,《提問的智慧》(這個劃重點,要考)(點擊下方【閱讀原文】前往)
4,《浪潮之巔》
『柒』 有什麼經典計算機基礎書籍推薦
一、《c語言程序設計 》
《c語言程序設計 》是2012年12月18日清華大學出版社於出版的圖書,作者是黃容、趙毅。本書是學習C語言程序設計的基礎教程,內容包括C語言概述、順序結構程序設計、分支結構程序設計、循環結構程序設計、數組、函數、指針、結構體、文件等。
本書以程序設計思想的掌握為主線,以編程應用為驅動,通過案例和問題引入內容,由淺入深,循序漸進,重點訓練學生的編程思想,能夠充分提高學生的編程能力,鍛煉學生的工程能力和創新能力,並鼓勵學生利用所學C語言知識解決專業的具體問題。
二、《計算機概論》
《計算機概論》是出版的一本圖書,作者是嚴世傑 金子葳 洪秀朋 周伯毓。本書主要講述了整個計算機科學劃分成體系結構軟體數據組織和機器的潛力四大部分,對這四部分以及相關領域的知識做出了貼近時代深入淺出的介紹。
三、《Java編程思想ThinkinginJava》
Bruce Eckel是MindView公司的總裁,該公司向客戶提供軟體咨詢和培訓。他是C++標准委員會擁有表決權的成員之一,擁有應用物理學學士和計算機工程碩士學位。
除本書外,他還是《C++編程思想》的作者,並與人合著了《C++編程思想
第2卷》(這兩本書的英文影印版及中文版均已由機械工業出版社引進出版)及其他著作。他已經發表了150多篇論文,還經常參加世界各地的研討會並進行演講。
四、《微型計算機原理及應用第三版》
本書主要介紹由80x86/Pentium微處理器構成的微型計算機的原理、應用及最新發展現狀。書中闡述了80x86/Pentium微處理器的編程結構、指令與定址方式、匯編語言程序設計、存儲器技術、匯流排技術,並闡述了80x86/Pentium微處理器構成的微型計算機硬體電路系統。
五、《計算機網路》
《計算機網路》是2008年電子工業出版社出版的圖書,作者是謝希仁。該書全面系統地介紹了計算機網路的發展和原理體系結構、物理層、數據鏈路層等內容。
全書分為10章,比較全面系統地介紹了計算機網路的發展和原理體系結構、物理層、數據鏈路層、網路層、運輸層、應用層、網路安全、網際網路上的音頻/視頻服務、無線網路和下一代網際網路等內容。
『捌』 我想學習電腦編程該從哪裡入手,先看哪些書比較好
其他的我就不說了,這些書都是世界經典教材,確實寫的很好,C語言的那個系列我基本都看過,非常不錯。
Operation
System:
《Operating
Systems:
Design
and
Implementation》
《Operating
System
Concepts》
《Modern
Operating
Systems》
Compiler
《Compilers.Principles.Techniques.and.Tools》
《Modern
compiler
design
in
c》
.
《Advanced
Compiler
Design
and
Implementation》
Computer
network:
《Computer
networks》
《TCP/IP
Illustrated
》
Vol
1,2,3
《Computer
Networking
:
A
Top-Down
Approach
Featuring
the
Internet》
《Unix
Network
Programming》
Computer
architecture
《Computer.Systems.A.Programmer's.Perspective》
《Computer
Architecture:A
Quantitative
Approach》
《Computer
Organization
and
Design:
The
Hardware/Software
Interface》
Database:
《Database
Systems
Concepts
》
《Database
Systems:The
Complete
Book》
Java
《Thinking
in
java
》
《Core
java》
vol
1,2
《Effective
java
》
C
《The
C
Programming
Language
2nd
Edition》
《C和指針》
《C
參考手冊》
《C
陷阱與缺陷》
《C
專家編程》
C++
《The
C++
Programming
Language》
《C++
Primer
》
《The
C++
Standard
Library:
A
Tutorial
and
Reference》
《Modern
C++
Design:
Generic
Programming
and
Design
Patterns
Applied》
《C++
Templates:
The
Complete
Guide》
《Thinking
in
C++》vol
1,2
Regular
expression
《精通正則表達式》
Jeffrey
Friedl
Other:
《Code
complete》
《Design
Patterns:
Elements
of
Reusable
Object-Oriented
software》
《The.Mythical.Man-Month.Essays.on.Software.Engineering》
《Peopleware.Proctive.Projects》
『伍』 關於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從源代碼開始移植到嵌入式系統,我敢說中國的企業你可以混的很好。
你得挑一個適合你的系統,然後在虛擬機安裝它,開始使用它。如果你想快速學會Linux,我有一個建議就是忘記圖形界面,不要想圖形界面能不能提供你問題的答案,而是滿世界的去找,去問,如何用命令行解決你的問題。在這個過程中,你最好能將Linux的命令掌握的不錯,起碼常用的命令得知道,同時建立了自己的知識庫,裡面是你積累的各項知識。
再下個階段,你需要學習的是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我不喜歡,就不推薦了。工具方面推薦VIM的官方手冊,GCC中文文檔,GDB中文文檔,GNU開源軟體開發指導(電子書),匯編語言程序設計(讓你對庫,鏈接,內嵌匯編,編譯器優化選項有初步了解,不必深度)。
如果你這個階段過不了就不必往下做了,這是底線,最基礎的基礎,否則離開,不要霍霍Linux開發。不專業的Linux開發者作出的程序是與Linux文化或UNIX文化相背的,程序是走不遠的,不可能像Bash,VIM這些神品一樣。所以做不好乾脆離開。
接下來進入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程序設計藝術,世界頂級黑客將同你分享他的看法。
現在是時候做分流了。 大體上我分為四個方向:網路,圖形,嵌入式,設備驅動。
如果選擇網路,再細分,我對其他的不是他熟悉,只說伺服器軟體編寫及高性能的並發程序編寫吧。相對來說這是網路編程中技術含量最高的,也是底層的。需要很多的經驗,看很多的書,做很多的項目。
我的看法是以下面的順序來看書:
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的硬體了,所以做硬體驅動開發不像嵌入式,對硬體知識的要求很高。可以從事的方向也很多,如家電啊,特別是如索尼,日立,希捷,富士康這樣的廠子,很稀缺的。
LDD – Linux驅動程序設計與內核編程的基礎讀物
深入理解Linux內核 – 進階的
Linux源代碼 – 永無止境的
當然你還的看個方面的書,如網路啊什麼的。
『陸』 關於LINUX的幾個指令尋求幫助awk、sed、grep 、vim。關於他們之間的關系,哪位用大白話指點一下迷津,不勝
vim 是文本編輯器,類似windows中的notepad,功能很強大,但需要去學習、適應一段時間才能使用得手。
grep命令是一個非常實用的shell命令,其功能為查找與命令後面內容匹配或不匹配的東西,可以與各種命令混合使用,效果很好,如:
1、查看文件a.txt中有"LINUX"這個詞的所有行:grep LINUX a.txt
2、查看文件a.txt中沒有"LINUX"這個詞的所有行:grep -v LINUX a.txt
3、結合管道命令:cat a.txt|grep LINUX (與1同),cat a.txt|grep -v LINUX (與2同)
sed、awk是兩個非常強大的shell工具(不單純是命令),他們各有超強的能力,甚至可以編程進行應用處理,關於他們的使用有專用的書介紹,內容非常多。sed多偏重於正則表達式方面的應用,實現查詢替換等操作。awk的程序處理能力顯示的更強。