1. 新手如何自學linux
初學者入門首選——Centos系列
CentOS系列版本可以輕松獲得;
CentOS現在擁有龐大的網路用戶群體,網路Linux資源基本80%都是基於CentOS發行版;
CentOS應用范圍廣,具有典型性和代表性。
養成良好的Linux操作習慣
(1)一定要習慣命令行方式
Linux是由命令行組成的操作系統,精髓在命令行,無論圖形界面發展到什麼水平,命令行方式的操作是不會變的。
(2)理論結合實踐
要不斷地重復練習才會將一件事情記得比較牢。學習Linux也一樣,如果無法堅持學習的話,就會學了後面的,忘記了前面的。
(3)學會使用Linux聯機幫助
主流的Linux發行版都自帶了非常詳細的幫助文檔,包括使用說明和FAQ,從系統的安裝到系統的維護,再到系統安全,針對不同層次用戶的詳盡文檔。仔細閱讀文檔後,60%的問題都可在這里得到解決。
(4)學會獨立思考問題,獨立解決問題
遇到問題,首先想到的應該是如何自己去解決這個問題,解決方式有很多,比如看書查資料、網路搜索引擎搜索和瀏覽技術論壇等。
(5)學習專業英語
如果想深入學習Linux,一定要嘗試去看英文文檔。
2. 蘭州理工大學軟體學院的辦學特色
學院致力於培養「高層次、復合型、國際化」的軟體工程人才。緊密跟蹤軟體工程領域最新技術發展動向,以高水平的師資隊伍、創新的課程體系和完備的實習基地為基礎,依託區域優勢,加強國際合作,務實創新,追求卓越 。
實施 「2+1+1」的培養模式。前兩年是校內教師為主體的通識課程和專業基礎課程教學;第三年是雙師型的專業課程教學和工程能力訓練;第四年由校企師資聯合指導,在合作企業在崗實習並參加項目開發完成畢業設計。
結合教育部「卓越工程師教育培養計劃」構建課程體系。學院參照國際IEEE/ACMCC2001、SEWBOK、SE2004和我國CCSE2004課程體系及課程建設標准,並吸收國內外大學軟體類專業課程體系,制定了既能體現軟體新技術發展又能滿足企業需要的多層次、多方向、模塊化課程體系,形成理論教學、動手能力培養和工程項目實踐相結合的教學特色。
注重實踐教學。以合作企業在通信、交通、金融、教育、物流、網路服務、移動應用等熱門行業實際項目開發為教學內容,緊跟軟體技術的最新發展,涵蓋軟體行業主流的Java開發技術、.Net開發技術和嵌入式系統開發技術,完成不少於3萬行程序代碼的實際訓練。
校企聯合,強化實習基地實習。學院與微軟、IBM、甲骨文、蘋果、中軟國際、東軟、華為、傑普軟體、甘肅萬維等10多家國內外軟體企業聯合建立了實習基地,為提升學生的職業素養和工程實踐能力創造良好的平台。 加拿大達內科技公司
達內外企IT培訓中心,由美國國際數據集團IDG投資,由來自美國Nasdaq上市的SUN、IBM、亞信、華為、東軟等公司的技術骨幹、海外留學生和加拿大專業技術人員創辦。致力於為中國培養基於Unix/Linux平台、Oracle大型關系資料庫、IP網路協議、Web和企業級應用的中高級軟體人才。達內憑借優異的業績和口碑,被北京市教委高校畢業生就業指導中心指定為「首都大學生就業培訓基地」。
北京中軟集團中軟國際有限公司(中軟國際)
是根植中國、服務全球的IT服務提供商,致力於為遍及全球的客戶提供全面的服務,打造中國智造綜合平台。集團業務涵蓋以咨詢為驅動的解決方案、以專業化為准則的ITO和BPO外包服務和以人才供鏈為導向的培訓服務。
大連東軟集團
東軟是中國領先的IT解決方案與服務供應商。致力於行業解決方案、產品工程解決方案及相關軟體產品、平台及服務等。目前,東軟是中國最大的離岸軟體外包提供商。東軟將「超越技術」作為公司的經營思想和品牌承諾,東軟通過開放式創新、卓越運營管理、人力資源發展等戰略的實施,全面構造公司的核心競爭力,創造客戶和社會的價值。
上海傑普軟體科技有限公司(Briup Technology,Inc. )
是專注於軟體外包、研發咨詢、高端IT培訓的高新技術企業。公司在電信、金融、電子商務等方面有著豐富的專業開發、管理和培訓經驗。公司依託擁有豐富開發及培訓經驗的師資團隊,培養企業緊缺的中高端開發人才。推出的解決大學生就業問題的DSP方案,已成功向各大軟體企業輸送了數千名人才,也確保了傑普軟體外包業務的高效性和擴展性。
四川華迪信息技術有限公司
主要從事行業應用軟體開發、系統集成、軟體與信息服務外包、軟體與網路開發技術培訓、大學生實習實訓與IT職業技能培訓等業務。擁有一支技術功底扎實、行業服務經驗豐富、職業化素質高的工程師隊伍,專注於電力、教育、通信行業開展信息化服務。是教育部軟體工程專業大學生實習實訓基地和國家級職業教育實訓基地。
學院設有「應用軟體開發(Java、.Net)」、「嵌入式」兩個專業方向,學生入校後第三年根據能力特長和本人志願在學院指導下確定專業方向。
應用軟體開發(Java、.Net)方向:培養具有扎實的計算機基礎知識和現代軟體工程能力的專業人才,掌握主流軟體框架開發技術,具有較強的軟體開發實踐能力和技術創新能力,以及較強的外語應用能力和團隊協作能力,能夠從事軟體設計、開發、應用、維護等工作。
嵌入式方向:培養具有扎實的計算機基礎知識和現代軟體工程能力的專業人才,掌握嵌入式系統開發技術和流程,具有較強的系統開發能力和技術創新能力,以及較強的外語應用能力和團隊協作能力,能夠從事嵌入式系統的設計、開發、測試、維護、管理、推廣等工作。
培養目標
本專業緊密跟蹤軟體工程領域最新技術發展動向,以高水平的師資隊伍、創新的課程體系和完備的實習基地為基礎,依託區域優勢,培養 「高層次、復合型、國際化」的軟體工程人才。
專業方向和主要課程
專業方向:學院設有「應用軟體開發(Java、.Net)」、「嵌入式」兩個專業方向,學生入校後第三年根據能力特長和本人志願在學院指導下確定專業方向。
主要課程:操作系統原理、計算機體系結構、資料庫原理、軟體工程、軟體工程經濟學、軟體質量保證與測試、軟體項目管理、基於CMMI的軟體工程方法等。
主要實踐教學環節
以合作企業在通信、交通、金融、教育、物流、網路服務、移動應用等熱門行業實際項目開發為教學內容,緊跟軟體技術的最新發展,涵蓋軟體行業主流的Java開發技術、.Net開發技術和嵌入式系統開發技術,完成不少於3萬行程序代碼的實際訓練。
同時與微軟、IBM、甲骨文、中軟國際、大連東軟、華為、傑普軟體、甘肅萬維等10多家國內外軟體企業聯合建立了實習基地,為提升學生的職業素養和工程實踐能力創造良好的平台。
基本學制
四年。
實施 「2+1+1」的培養模式。前兩年是校內教師為主體的通識課程和專業基礎課程教學;第三年是雙師型的專業課程教學和工程能力訓練;第四年由校企師資聯合指導,在合作企業在崗實習並參加項目開發完成畢業設計。
學位授予條件
符合《蘭州理工大學關於授予學士學位的有關規定》條件的畢業生,可授予工學學士學位。 序 號 課 程 名 稱 課題負責人 職 稱 備 注
1 數據結構、資料庫技術(群) 張 永 教 授 校級重點課程(群)
2 大學計算機基礎 王連相 高 工 校級重點課程
3 信號與系統、通信原理(群) 王惠琴 副教授 院級重點課程
4計算機組成原理任學惠 講 師 院級重點課程
5 操作系統 王旭陽 副教授 院級重點課程
6 Linux 趙 宏 教授 院級重點課程
7 計算機網路實驗指導書 杜紅林 講 師 院級重點課程
8 計算機組成原理實驗指導書 杜紅林 講 師 院級重點課程
9 信號與系統 何繼愛 副教授 院級重點課程
10 通信原理 王維芳 講 師 院級重點課程
11 網路與信息安全 馮 濤 教 授 院級重點課程
12 計算機圖形學 趙付青 副教授 院級重點課程
課程名稱:資料庫原理
課程級別:省級精品課程
課程負責人:李明
課程簡介:《資料庫原理》課程的內容涵蓋三個方面:資料庫基礎理論、資料庫設計、資料庫新技術。內容包括:資料庫技術的基本概念與發展,關系資料庫,關系資料庫標准語言SQL,關系數據理論,資料庫設計,資料庫恢復技術,並發控制,資料庫安全性,資料庫完整性,分布式資料庫,面向對象資料庫,並行資料庫簡介,數據倉庫與數據挖掘技術,XML資料庫等。
依據不同層次的需求,我們為全校本科生開設了不同學時的「資料庫原理」、「資料庫開發技術」、「網路與資料庫編程」等課程,並為研究生開設了「資料庫理論與技術」、「數據挖掘」、「資料庫系統與數據倉庫」等課程。
結合資料庫技術的發展和應用,進行了教材建設,調整和優化了教學內容,出版了「資料庫原理及應用」教材(西南交通大學出版社,2007),編寫了「資料庫學習指導書」、「資料庫上機指導書」、「課程設計指導書」等,建立了開放式Oracle平台。
應用軟體開發方向主要課程:操作系統原理、計算機體系結構、資料庫原理、軟體工程、軟體工程經濟學、軟體質量保證與測試、軟體項目管理、基於CMMI的軟體工程方法、面向服務的體系構架、信息安全、網路編程、資料庫開發技術、項目開發實戰等。
嵌入式方向主要課程:操作系統原理、計算機組成原理、計算機體系結構、軟體工程、軟體工程經濟學、軟體質量保證與測試、軟體項目管理、基於CMMI的軟體工程方法、Linux操作系統、嵌入式系統基礎、網路編程、物聯網應用開發、嵌入式項目實戰等。
3. 計算機網路安全基礎的目錄
1.1網路參考模型
1.2網路互連設備
1.3區域網技術
傳輸介質是網路中信息傳輸的媒體,是網路通信的物質基礎之一。傳輸介質的性能特點對傳輸速率、通信的距離、可連接的網路結點數目和數據傳輸的可靠性等均有很大的影響。因此,必須根據不同的通信要求,合理地選擇傳輸介質。目前在區域網中常用的傳輸介質有雙絞線、同軸電纜和光導纖維等。
1.4廣域網技術
廣域網是一種跨地區的數據通訊網路,使用電信運營商提供的設備作為信息傳輸平台。對照OSI參考模型,廣域網技術主要位於底層的3個層次,分別是物理層,數據鏈路層和網路層。下圖列出了一些經常使用的廣域網技術同OSI參考模型之間的對應關系。
點對點鏈路提供的是一條預先建立的從客戶端經過運營商網路到達遠端目標網路的廣域網通信路徑。一條點對點鏈路就是一條租用的專線,可以在數據收發雙方之間建立起永久性的固定連接。網路運營商負責點對點鏈路的維護和管理。點對點鏈路可以提供兩種數據傳送方式。一種是數據報傳送方式,該方式主要是將數據分割成一個個小的數據幀進行傳送,其中每一個數據幀都帶有自己的地址信息,都需要進行地址校驗。另外一種是數據流傳送方式,該方式與數據報傳送方式不同,用數據流取代一個個的數據幀作為數據發送單位,整個流數據具有1個地址信息,只需要進行一次地址驗證即可。下圖所顯示的就是一個典型的跨越廣域網的點對點鏈路。
1.5TCP/IP基礎
1.6網際網路提供的主要服務
1.7小結
習題 2.1UNIX操作系統簡介
UNIX操作系統,是美國AT&T公司於1971年在PDP-11上運行的操作系統。具有多用戶、多任務的特點,支持多種處理器架構,最早由肯·湯普遜(Kenneth Lane Thompson)、丹尼斯·里奇(Dennis MacAlistair Ritchie)和Douglas McIlroy於1969年在AT&T的貝爾實驗室開發。
目前它的商標權由國際開放標准組織(The Open Group)所擁有。
1965年時,貝爾實驗室(Bell Labs)加入一項由通用電氣(General Electric)和麻省理工學院(MIT)合作的計劃;該計劃要建立一套多使用者、多任務、多層次(multi-user、multi-processor、multi-level)的MULTICS操作系統。直到1969年,因MULTICS計劃的工作進度太慢,該計劃被停了下來。當時,Ken Thompson(後被稱為UNIX之父)已經有一個稱為星際旅行的程序在GE-635的機器上跑,但是反應非常慢,正巧被他發現了一部被閑置的PDP-7(Digital的主機),Ken Thompson和Dernis Ritchie就將星際旅行的程序移植到PDP-7上。而這部PDP-7(如圖1-1所示)就此在整個計算機歷史上留下了芳名
2.2Linux操作系統簡介
Linux是一種自由和開放源碼的類Unix操作系統,存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種計算機硬體設備中,比如手機、平板電腦、路由器、視頻游戲控制台、台式計算機、大型機和超級計算機。Linux是一個領先的操作系統,世界上運算最快的10台超級計算機運行的都是Linux操作系統。嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU 工程各種工具和資料庫的操作系統。Linux得名於天才程序員林納斯·托瓦茲。
Linux操作系統是UNIX操作系統的一種克隆系統,它誕生於1991 年的10 月5 日(這是第一次正式向外公布的時間)。以後藉助於Internet網路,並通過全世界各地計算機愛好者的共同努力,已成為今天世界上使用最多的一種UNIX 類操作系統,並且使用人數還在迅猛增長。
Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程序和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。它主要用於基於Intel x86系列CPU的計算機上。這個系統是由全世界各地的成千上萬的程序員設計和實現的。其目的是建立不受任何商品化軟體的版權制約的、全世界都能自由使用的Unix兼容產品。
Linux以它的高效性和靈活性著稱,Linux模塊化的設計結構,使得它既能在價格昂貴的工作站上運行,也能夠在廉價的PC機上實現全部的Unix特性,具有多任務、多用戶的能力。Linux是在GNU公共許可許可權下免費獲得的,是一個符合POSIX標準的操作系統。Linux操作系統軟體包不僅包括完整的Linux操作系統,而且還包括了文本編輯器、高級語言編譯器等應用軟體。它還包括帶有多個窗口管理器的X-Windows圖形用戶界面,如同我們使用Windows NT一樣,允許我們使用窗口、圖標和菜單對系統進行操作。
Linux 操作系統的誕生、發展和成長過程始終依賴著五個重要支柱:UNIX 操作系統、MINIX 操作系統、GNU 計劃、POSIX 標准和Internet 網路。
1981 年IBM公司推出微型計算機IBM PC。
1991年,GNU計劃已經開發出了許多工具軟體,最受期盼的GNU C編譯器已經出現,GNU的操作系統核心HURD一直處於實驗階段,沒有任何可用性,實質上也沒能開發出完整的GNU操作系統,但是GNU奠定了Linux用戶基礎和開發環境。當時的MINIX需要購買才能得到源代碼,局限於校園用作教育使用,閉源專利註定Minix錯失推廣時機,以至於Minix長期處於測試而無人問津。
1991年初,林納斯·托瓦茲開始在一台386sx兼容微機上學習minix操作系統。1991年4月,林納斯·托瓦茲開始醞釀並著手編制自己的操作系統。剛開始,他的目的很簡單,只是為了學習Intel386 體系結構保護模式運行方式下的編程技術。通過學習,他逐漸不能滿足於minix系統的現有性能,並開始醞釀開發一個新的免費操作系統。林納斯·托瓦茲幾乎花了全部時間研究i386-minix系統(hackthe kernel),並且嘗試著移植GNU的軟體到該系統上(GCC、BASH、GDB等)。
1991 年4 月13 日在comp.os.minix 上發布說自己已經成功地將bash 移植到了minix 上,而且已經愛不釋手、不能離開這個shell 軟體了。
1991年7月3日,第一個與Linux有關的消息是在comp.os.minix上發布的(當然此時還不存在Linux這個名稱,當時林納斯·托瓦茲的腦子里想的可能是FREAX,FREAX的英文含義是怪誕的、怪物、異想天開等)。其中透露了他正在進行Linux系統的開發,並且在Linux最初的時候已經想到要實現與POSIX兼容。
1991年的10月5日,林納斯·托瓦茲在comp.os.minix新聞組上發布消息,正式向外宣布Linux內核的誕生(Freeminix-like kernel sources for 386-AT)。
1993年,大約有100餘名程序員參與了Linux內核代碼編寫/修改工作,其中核心組由5人組成,此時Linux 0.99的代碼有大約有十萬行,用戶大約有10萬左右。
1994年3月,Linux1.0發布,代碼量17萬行,當時是按照完全自由免費的協議發布,隨後正式採用GPL協議。
1995年1月,Bob Young創辦了RedHat(小紅帽),以CNULinux為核心,集成了400多個源代碼開放的程序模塊,搞出了一種冠以品牌的Linux,即RedHat Linux,稱為Linux發行版,在市場上出售。這在經營模上是一種創舉。
1996年6月,Linux 2.0內核發布,此內核有大約40萬行代碼,並可以支持多個處理器。此時的Linux 已經進入了實用階段,全球大約有350萬人使用。
1998年2月,以Eric Raymond為首的一批年輕的老牛羚骨幹分子終於認識到CNULinux體系的產業化道路的本質,並非是什麼自由哲學,而是市場競爭的驅動,創辦了Open Source Intiative(開放源代碼促進會)復興的大旗,在互聯網世界裡展開了一場歷史性的Linux產業化運動。
2001年1月,Linux 2.4發布,它進一步地提升了SMP系統的擴展性,同時它也集成了很多用於支持 桌面系統的特性:USB,PC卡(PCMCIA)的支持,內置的即插即用,等等功能。
2003年12月,Linux 2.6版內核發布,相對於2.4版內核2.6在對系統的支持都有很大的變化。
2004年的第1月,SuSE嫁到了Novell,SCO繼續頂著罵名四處強行化緣 , Asianux, MandrakeSoft也在五年中首次宣布季度贏利。3月SGI宣布成功實現了Linux操作系統支持256個Itanium 2處理器。
2.3Windows操作系統簡介
Windows操作系統是一款由美國微軟公司開發的窗口化操作系統。採用了GUI圖形化操作模式,比起從前的指令操作系統如DOS更為人性化。Windows操作系統是目前世界上使用最廣泛的操作系統。最新的版本是Windows 8。Microsoft公司從1983年開始研製Windows系統,最初的研製目標是在MS-DOS的基礎上提供一個多任務的圖形用戶界面。第一個版本的Windows 1.0於1985年問世,它是一個具有圖形用戶界面的系統軟體。1987年推出了Windows 2.0版,最明顯的變化是採用了相互疊蓋的多窗口界面形式。但這一切都沒有引起人們的關注。直到1990年推出Windows 3.0是一個重要的里程碑,它以壓倒性的商業成功確定了Windows系統在PC領域的壟斷地位。現今流行的 Windows 窗口界面的基本形式也是從Windows 3.0開始基本確定的。1992年主要針對Windows 3.0的缺點推出了Windows 3.1,為程序開發提供了功能強大的窗口控制能力,使Windows和在其環境下運行的應用程序具有了風格統一、操縱靈活、使用簡便的用戶界面。Windows3.1 在內存管理上也取得了突破性進展。它使應用程序可以超過常規內存空間限制 ,不僅支持16MB內存定址,而且在80386及以上的硬體配置上通過虛擬存儲方式可以支持幾倍於實際物理存儲器大小的地址空間。Windows 3.1還提供了一定程度的網路支持、多媒體管理 、超文本形式的聯機幫助設施等,對應用程序的開發有很大影響
2.4UNIX網路配置
2.5Windows網路配置
2.6小結
習題 3.1網路安全基礎知識
3.2威脅網路安全的因素
3.3網路安全分類
3.4網路安全解決方案
3.5小結
習題 4.1什麼是計算機安全
4.2安全級別
4.3系統訪問控制
4.4選擇性訪問控制
4.5小結
習題 5.1資料庫安全概述
5.2資料庫安全的威脅
5.3資料庫的數據保護
5.4資料庫備份與恢復
5.5小結
習題 6.1計算機病毒及其分類
6.2計算機病毒的傳播
6.3計算機病毒的特點及破壞行為
6.4宏病毒及網路病毒
6.5病毒的預防、檢測和清除
6.6病毒防治軟體
6.7小結
習題 7.1數據加密概述
7.2傳統密碼技術
7.3對稱密鑰密碼技術
7.4公鑰密碼體制
7.5數字簽名技術
7.6驗證技術
7.7加密軟體PGP
7.8小結
習題 8.1網路安全協議
8.2網路加密技術
8.3防火牆技術
8.4入侵檢測技術
8.5虛擬專用網技術
8.6小結
習題 9.1網際網路的安全
9.2Web站點安全
9.3黑客與網路攻擊
9.4口令安全
9.5網路監聽
9.6掃描器
9.7E-mail的安全
9.8IP電子欺騙
9.9DNS的安全性
9.10小結
習題 10.1數據完整性簡介
10.2容錯與網路冗餘
10.3網路備份系統
10.4小結
習題 11.1網路安全實驗指導書
11.2綜合練習題
附錄
附錄一優秀網路安全站點
附錄二英文縮寫詞
參考文獻
……
4. 有沒有學習Linux比較好的入門書籍
我們馬哥Linux團隊專門是做Linux學習研究的,你可以借鑒一下,全日制學習是4個月,下面我們來談談如何學習Linux
1、假如你從來接觸過Linux的話,首先要做的就找一本指導書來學習。現在公認的Linux的入門書籍是「鳥哥的私房菜」,講的很全面,鳥哥的私房菜一共分為兩部,一部是基礎篇,一部是伺服器篇。「鳥哥的私房菜」講的很全面,可能會包括一些已經過時的知識點,但是這本書是入門Linux必備。
2、學習Linux的時候,或者學習其他網路知識的時候最重要的就是實踐操作。所以學習Linux,實踐操作是必不可少的。首先就是要裝一個Linux系統,鳥哥開始幾章會講Linux的由來以及怎樣安裝Linux的系統。安裝Linu系統來學習使用Vmware 虛擬機就行了,不用真機裝,沒必要。按照鳥哥私房菜書籍的步驟一步一步照著做,剛開始學習最好讓自己的學習環境跟書里的一致,這樣可以少很多麻煩,也不至於打擊你的學習興趣。
3、裝完系統之後就是學習操作了,並且照著書里的操作一步步實踐。當然很多時候你會不明白,這個時候你可以網路一下,很多人說goole,但goole已經XXX網路完全解決你初學時時候遇到的問題。再然後就是進入某些Linux社區去看看,提問題,或者看看別人所遇到的問題,新手嗎?可以去新手頻道看看,我推薦的網站是紅聯社區的新手園地,Linux運維部落。
4、 你看書的時候剛開始是通讀,然後是泛讀,最後是精讀,總之一定要讀多幾遍,等你第一次把書通讀一遍之後,可以選擇一些視頻來看,一些初級基礎視頻一般是不收費的,而且講的也挺好。Linux視頻我推薦51cto的馬哥Linux,很不錯,很受歡迎。
5、上面的這些只是入門,如果想繼續深入就要選擇一個老師專門系統的學習當然不是說找個老師,而是在網上找到一個教程講解不錯的老師馬哥Linux,並且有高中低級系統的知識體系,一步步跟著學,這樣就差不多了。
6、Linux是一個系統,一個平台,平常工作中應用的是工作在這個平台的軟體,鳥哥第二部伺服器篇就會講解這些,第二部伺服器篇就沒那麼容易看明白。這個時候就可以選擇用網路查找官方文檔,或是一些高手的經驗博文,不斷查找問題,解決問題。
7、學習Linux的時候不要想一口氣把所有全部學完,基礎一定要打好。基礎篇和伺服器篇學的差不多的時候,找工作就行了。找到工作之後一定要繼續學習,因為Linux最注重的是實際工作中的經驗。
8、要是你進入一個比較好的公司,各種平台環境都有,這個時候你要做的就是靜下心來學習,汲取養分,這樣以後往更高級走才有本錢!總之剛開始你把鳥哥兩部學完就可以找工作了,至於往後的發展就是要你自己努力學習了,然後在通過公司中那些幾十萬百萬設備的環境,豐富自己的知識!
5. 嵌入式新手入門最佳視頻教程
原文鏈接:網頁鏈接
我是1999年上的大學,物理專業。在大一時,我們班裡普遍彌漫著對未來的不安,不知道學習了物理後出去能做什麼。你當下的經歷、當下的學習,在未來的一天肯定會影響到你。畢業後我們也各自找到了自己的職業:出國深造轉行做金融、留校任教做科研、設計晶元、寫程序、創辦公司等等,這一切都離不開在校時學到的基礎技能(數學、IT、電子電路)、受過煅煉的自學能力。
所以,各位正在迷茫的在校生,各位正在嘗試轉行的程序員,未來一定有你的位置,是好是壞取決於你當下的努力與積累。
我不能預言幾年後什麼行業會熱門,也不能保證你照著本文學習可以發財。我只是一個有十幾年經驗的程序員,給對編程有興趣的你,提供一些建議。
程序員的方向,一般可以分為3類:專業領域、業務領域、操作系統領域。你了解它們後,按興趣選擇吧。
對於專業領域,我提供不了建議。
業務,也就是應用程序,它跟操作系統並不是截然分開的:
①開發實體產品時,應用程序寫得好的人,有時候需要操作系統的知識,比如調度優先順序的設置、知道某些函數可能會令進程休眠。
②寫應用程序的人進階為系統工程師時,他需要從上到下都了解,這時候就需要有操作系統領域的知識了,否則,你怎麼設計整個系統的方案呢?
③做應用程序的人,需要了解行業的需求,理解業務的邏輯。所以,當領導的人,多是做應用的。一旦鑽入了某個行業,很難換行業。
④而操作系統領域,做好了這是通殺各行業:他只負責底層系統,在上面開發什麼業務跟他沒關系。這行很多是技術宅,行業專家。
⑤操作系統和業務之間並沒有一個界線。有操作系統經驗,再去做應用,你會對系統知根知底,碰到問題時都有解決思路。有了業務經驗,你再了解一下操作系統,很快就可以組成一個團隊自立門戶,至少做個CTO沒問題。
它又可以分為下面2類。
1.1.1 學術研究
比如語音、圖像處理、人工智慧,這類工作需要你有比較強的理論知識,我傾向於認為這類人是「科學家」,他們鑽研多年,很多時候是在做學術研究。
在嵌入式領域,需要把他們的成果用某種演算法表達出來,針對某種晶元進行優化,這部分工作也許有專人來做。
1.1.2 工程實現
也有這樣一類人,他們懂得這些專業領域的概念,但是沒有深入鑽研。可以使用各類開源資料實現某個目標,做出產品。比如圖像處理,他懂得用opencv里幾百個復雜函數來實現頭像識別。有時候還可以根據具體晶元來優化這些函數。
「專業領域」不是我的菜,如果你要做這一塊,我想最好的入門方法是在學校學習研究生、博士課程。
換句話說,就是應用程序,這又可以分為下面2類。
1.2.1 界面顯示
做產品當然需要好的界面,但是,不是說它不重要,是沒什麼發展後勁。
現在的熱門詞是Android APP和IOS APP開發。你不要被Android、IOS兩個詞騙了,它們跟以前的VC、VB是同一路貨色,只是、僅僅是一套GUI控制項的實現。
希望沒有冒犯到你,我有理由。
一個程序需要有GUI界面,但是程序的內在邏輯才是核心。Android、IOS的開發工具給我們簡化了GUI的開發,並提供了這些控制項的交互機制,封裝並提供了一些服務(比如網路傳輸)。但是程序內部的業務邏輯、對視頻圖像聲音的處理等等,這才是核心。另外別忘了伺服器那邊的後台程序:怎樣更安全地保存數據、保護客戶的隱私,怎樣處理成千上萬上百萬的並發訪問,等等,這也是核心。
但是,從Android、IOS APP入門入行,這很快!如果你是大四,急於找到一份工作,那麼花上1、2個月去學習Android或IOS,應該容易找到工作,畢竟APP的需求永遠是最大的,現在這兩門技術還算熱門。在2011、2012年左右,Android程序員的起薪挺高,然後開始下滑。Android APP的入門基本只要1個月,所以懂的人也越來越多。2013、2014年,IOS開發的工資明顯比Android高了,於是各類IOS培訓也火曝起來。中華大地向來不缺速成人才,估計再過一陣子IOS工程師也是白菜價了。
會Android、IOS只是基本要求,不信去51job搜搜Android或IOS,職位要求里肯定其他要求。
1.2.2 業務邏輯
舉個簡單例子,做一個打卡軟體,你需要考慮這些東西:
①正常流程是上班下班時都要打卡
②有人忘記了怎麼辦?作為異常記錄在案,推送給管理員
③請假時怎麼處理?
④加班怎麼處理?
對於更復雜的例子,視頻會議系統里,各個模塊怎麼對接,各類協議怎麼兼容,你不深入這個行業,你根本搞不清楚。
應用開發的職位永遠是最多的,入門門檻也低。基本上只要你會C語言,面試時表現比較得體,一般公司都會給你機會。因為:
①你進公司後,還需要重新培訓你:熟悉它們的業務邏輯。
②你要做的,基本也就是一個個模塊,框架都有人給你定好了,你去填代碼就可以了。
說點讓你高興的事:軟體公司里,做領導的基本都是寫應用程序的(當然還有做市場的)。寫應用程序的人,對外可以研究市場接待客戶,對內可以管理程序員完成開發,不讓他做領導讓誰做?
如果你的志向是寫應用程序,那麼我建議你先練好基本功:數據結構、演算法是必備,然後憑興趣選擇資料庫、網路編程等等進行深入鑽研。
最後,選擇你看好的、感興趣的行業深耕個10年吧。做應用開發的人選擇了某個行業,後面是很難換行業的,選行很重要!
UCOS太簡單,VxWorks太貴太專業,Windows不玩嵌入式了,IOS不開源,所以對於操作系統領域我們也只能玩Linux了。
在嵌入式領域Linux一家獨大!
Android呢?Android跟QT一樣,都是一套GUI系統。只是Google的實力太強了,現在Android無處不在,所以很多時候Linux+Android成了標配。注意,在這里我們關心的是Android的整個系統、裡面的機制,而不是學習幾個API然後開發界面程序。操作系統領域所包含的內容,簡單地說,就是製作出一台裝好系統的專用「電腦」,可以分為:
①為產品規劃硬體:
按需求、性能、成本選擇主晶元,搭配周邊外設,交由硬體開發人員設計。
②給單板製作、安裝操作系統、編寫驅動
③定製維護、升級等系統方案
④還可能要配置、安裝Android等GUI系統:
⑤為應用開發人員配置開發環境
⑥從系統角度解決疑難問題
這個領域,通常被稱為「底層系統」或是「驅動開發」。
先解決2個常見誤區:
①這份工作是寫驅動程序嗎?
看看上面羅列的6點,應該說,它包含驅動開發,但遠遠不只有驅動開發。
②我們還需要寫驅動嗎?不是有原廠嗎?或者只需要改改就可以?
經常有人說,晶元原廠都做好驅動了,拿過來改改就可以了。如果,你的硬體跟原廠的公板完全一樣,原廠源碼毫無BUG,不想優化性能、削減成本,不想做一些有特色的產品,那這話是正確的。
但是在這個不創新就是找死的年代,可能嗎?!原因有二:
①即使只是修改代碼,能修改的前提是能理解;能理解的最好煅煉方法是從零寫出若干驅動程序。
②很多時候,需要你深度定製系統。
以前做聯發科手機只需要改改界面就可以出貨了,現在山寨廠一批批倒下。大家都使用原廠的方案而不加修改時,最後只能拼成本。
舉個例子,深圳有2家做交通攝像頭、監控攝像頭的廠家,他們曾經找我做過4個項目:
①改進廠家給的SD卡驅動性能,使用DMA。
②換了Flash型號後,系統經常出問題,需要修改驅動BUG。
③觸摸屏點擊不準,找原因,後來發現是旁路電容導致的。
④裁減成本,把4片DDR換為2片DDR,需要改bootloader對DDR的初始化。
這些項目都很急,搞不定就無法出貨,這時候找原廠?除非你是中興華為等大客戶,否則誰理你?
我在中興公司上班時,寫驅動的時間其實是很少的,大部分時間是調試:系統調優,上幫APP工程師、下幫硬體工程師查找問題。我們從廠家、網上得到的源碼,很多都是標準的,當然可以直接用。但是在你的產品上也許優化一下更好。比如我們可以把攝像頭驅動和DMA驅動揉合起來,讓攝像頭的數據直接通過DMA發到DSP去。我們可以在軟體和硬體之間起橋梁作用,對於實體產品,有可能是軟體出問題也可能是硬體出問題,一般是底層系統工程師比較容易找出問題。
當硬體、軟體應用出現問題,他們解決不了時,從底層軟體角度給他們出主意,給他們提供工具。再比如方案選擇:晶元性能能否達標、可用的BSP是否完善等等,這只能由負責整個方案的人來考慮,他必須懂底層。
在操作系統領域,對知識的要求很多:
①懂硬體知識才能看懂電路圖
②英文好會看晶元手冊
③有編寫、移植驅動程序的能力
④對操作系統本身有一定的理解,才能解決各類疑難問題
⑤理解Android內部機制
⑥懂匯編、C語言、C++、JAVA
它絕對是一個大坑,沒有興趣、沒有毅力的人慎選。
①這行的入門,絕對需要半年以上,即使全天學習也要半年。
②它的職位,絕對比APP的職位少
③並且你沒有1、2年經驗,招你到公司後一開始你做的還是APP。
優點就是:
①學好後,行業通殺,想換行就換行;想自己做產品就自己做產品。
②相比做應用程序的人,不會被經常變動的需求搞得天天加班。
③門檻高,當然薪水相對就高。
操作系統領域,我認為適合於這些人:
①硬體工程師想轉軟體工程師,從底層軟體入門會比較好
②單片機工程師,想升級一下。會Linux底層的人肯定會單片機,會單片機的人不一定會Linux。
③時間充足的學生:如果你正讀大二大三,那麼花上半年學習嵌入式Linux底層多有益處。
④想掌握整個系統的人,比如你正在公司里寫APP,但是想升為系統工程師,那麼底層不得不學。
⑤想自己創業做實體產品的工程師,你有錢的話什麼技術都不用學,但是如果沒錢又想做產品,那麼Linux底層不得不學。
⑥做Linux APP的人,沒錯,他們也要學習。
這部分人不需要深入,了解個大概就可以:bootloader是用來啟動內核,Linux的文件系統(第1個程序是什麼、做什麼、各目錄幹嘛用)、APP跟驅動程序的調用關系、工具鏈,有這些概念就可以了
本文中,就把操作系統默認為Linux,講講怎麼學習嵌入式Linux+Android系統。
嵌入式Linux系統包含哪些東西?不要急,舉一個例子你就知道了。
①電腦一開機,那些界面是誰顯示的?
是BIOS,它做什麼?一些自檢,然後從硬碟上讀入windows,並啟動它。
類似的,這個BIOS對應於嵌入式Linux里的bootloader。這個bootloader要去Flash上讀入Linux內核,並啟動它。
②啟動windows的目的是什麼?
當然運行應用程序以便上網、聊天什麼的了。
這些上網程序、聊天程序在哪?
在C盤、D盤上。
所以,windows要先識別出C盤、D盤。在Linux下我們稱之為根文件系統。
③windows能識別出C盤、D盤,那麼肯定有讀寫硬碟的能力。
這個能力我們稱之為驅動程序。當然不僅僅是操作硬碟,還有網卡、USB等等其他硬體。嵌入式Linux能從Flash上讀出並執行應用程序,肯定也得有Flash的驅動程序啊,當然也不僅僅是Flash。
簡單地說,嵌入式LINUX系統里含有bootloader、內核、驅動程序、根文件系統、應用程序這5大塊。而應用程序,我們又可以分為:C/C++、Android。
所以,嵌入式Linux+Android系統包含以下6部分內容:
①bootloader
②Linux內核
③驅動程序
④使用C/C++編寫的應用程序
⑤Android系統本身
⑥Android應用程序
Android跟Linux的聯系實在太大了,它的應用是如此廣泛,學習了Linux之後沒有理由停下來不學習Android。在大多數智能設備中,運行的是Linux操作系統;它上面要麼安裝有Android,要麼可以跟Android手機互聯。現在,Linux+Android已成標配。
本文假設您是零基礎,以實用為主,用最快的時間讓你入門;後面也會附上想深入學習時可以參考的資料。
在實際工作中,我們從事的是「操作系統」周邊的開發,並不會太深入學習、修改操作系統本身。
①操作系統具有進程管理、存儲管理、文件管理和設備管理等功能,這些核心功能非常穩定可靠,基本上不需要我們修改代碼。我們只需要針對自己的硬體完善驅動程序
②學習驅動時必定會涉及其他知識,比如存儲管理、進程調度。當你深入理解了驅動程序後,也會加深對操作系統其他部分的理解
③Linux內核中大部分代碼都是設備驅動程序,可以認為Linux內核由各類驅動構成
但是,要成為該領域的高手,一定要深入理解Linux操作系統本身,要去研讀它的源代碼。
在忙完工作,閑暇之餘,可以看看這些書:
①趙炯的《linux內核完全注釋》,這本比較薄,推薦這本。他後來又出了《Linux 內核完全剖析》,太厚了,搞不好看了後面就忘記前面了。
②毛德操、胡希明的《LINUX核心源代碼情景分析》,此書分上下冊,巨厚無比。當作字典看即可:想深入理解某方面的知識,就去看某章節。
③其他好書還有很多,我沒怎麼看,沒有更多建議
基於快速入門,上手工作的目的,您先不用看上面的書,先按本文學習。
假設您是零基礎,我們規劃了如下入門路線圖。前面的知識,是後面知識的基礎,建議按順序學習。每一部分,不一定需要學得很深入透徹,下面分章節描述。
2.2.1 C語言
只要是理工科專業的,似乎都會教C語言。我見過很多C語言考試90、100分的,一上機就傻了,我懷疑他們都沒在電腦上寫過程序。
理論再好,沒有實踐不能幹活的話,公司招你去幹嘛?
反過來,實踐出真知,學習C語言,必須練練練、寫寫寫!
當你掌握基本語法後,就可以在電腦上練習一些C語言習題了;
當你寫過幾個C程序後,就可以進入下一階段的裸機開發了。
①不需要太深入
作為快速入門,只要你會編寫「Hello, world!」,會寫冒泡排序,會一些基礎的語法操作,暫時就夠了。
指針操作是重點,多練習;
不需要去學習過多的數據結構知識,只需要掌握鏈表操作,其他不用學習,比如:隊列、二叉樹等等都不用學;不需要去學習任何的函數使用,比如文件操作、多線程編程、網路編程等等;這些知識,在編寫Linux應用程序時會用,但是在操作系統特別是驅動學習時,用不著!
永往直前吧,以後碰到不懂的C語言問題,我們再回過頭來學習。
在後續的「裸機開發」中,會讓你繼續練習C語言,那會更實戰化。
C語言是在寫代碼中精進的。
②可以在Visual Studio下學習,也可以在Linux下學習,後者需要掌握一些編譯命令,我們暫時沒有提供C語言的教程,找一本C語言書,網上找找免費的C語言視頻(主要看怎麼搭建環境),就可以自學了。
2.2.2 PC Linux基本操作:
對於PC Linux,我們推薦使用Ubuntu,在它上面安裝軟體非常簡便。
我們的工作模式通常是這樣:在Windows下閱讀、編寫代碼,然後把代碼上傳到PC Linux去編譯。實際上,Ubuntu的桌面系統已經很好用了,我們拿到各種智能機可以很快上手,相信Ubuntu的桌面系統也可以讓你很快上手。為了提高工作效率,我們通常使用命令行來操作Ubuntu。
不用擔心,你前期只需要掌握這幾條命令就可以了,它們是如此簡單,我乾脆列出它們:
①cd : Change Directory(改變目錄)
cd 目錄名 // 進入某個目錄cd .. // cd 「兩個點」:返回上一級目錄cd - // cd 「短橫」:返回上一次所在目錄
②pwd : Print Work Directory(列印當前目錄 顯示出當前工作目錄的絕對路徑)
③mkdir : Make Directory(創建目錄)
mkdir abc // 創建文件夾abc
mkdir -p a/b/c // 創建文件夾a,再a下創建文件夾b,再在b下創建文件夾c
④rm : Remove(刪除目錄或文件)
rm file // 刪除名為file的文件
rm -rf dir // 刪除名為dir的目錄
⑤ls : List(列出目錄內容)
⑥mount : 掛載
mount -t nfs -o nolock,vers=2 192.168.1.123:/work/nfs_root /mnt
mount -t yaffs /dev/mtdblock3 /mnt
⑦chown : Change owner(改變文件的屬主,即擁有者)
chown book:book /work -R //對/work目錄及其下所有內容,屬主改為book用戶,組改為book
⑧chmod : Change mode(改變許可權),下面的例子很簡單粗暴
chmod 777 /work -R // 對/work目錄及其下所有內容,許可權改為可讀、可寫、可執行
⑨vi : Linux下最常用的編輯命令,使用稍微復雜,請自己搜索用法。
要練習這些命令,你可以進入Ubuntu桌面系統後,打開終端輸入那些命令;或是用SecureCRT、putty等工具遠程登錄Ubuntu後練習。
2.2.3 硬體知識
我們學習硬體知識的目的在於能看懂原理圖,看懂通信協議,看懂晶元手冊;不求能設計原理圖,更不求能設計電路板。
對於正統的方法,你應該這樣學習:
①學習《微機原理》,理解一個計算機的組成及各個部件的交互原理。
②學習《數字電路》,理解各種門電路的原理及使用,還可以掌握一些邏輯運算(與、或等)。
③《模擬電路》?好吧,這個不用學,至少我在工作中基本用不到它,現在全忘光了。
就我個人經驗來說,這些課程是有用的,但是:
①原理有用,實戰性不強。
比如《微機原理》是基於x86系統,跟ARM板子有很大差別,當然原理相通。
我是在接觸嵌入式編程後,才理解了這些課程。
②每本書都那麼厚,內容都很多,學習時間過長,自學有難度。
針對這些校園教材的不足,並結合實際開發過程中要用到的知識點,我們推出了《學前班_怎麼看原理圖》的系列視頻:
學前班第1課第1節___怎麼看原理圖之GPIO和門電路.wmv
學前班第1課第2.1節_怎麼看原理圖之協議類介面之UART.wmv
學前班第1課第2.2節_怎麼看原理圖之協議類介面之I2C.wmv
學前班第1課第2.3節_怎麼看原理圖之協議類介面之SPI.wmv
學前班第1課第2.4節_怎麼看原理圖之協議類介面之NAND Flash.wmv
學前班第1課第2.5節_怎麼看原理圖之協議類介面之LCD.wmv
學前班第1課第3節___怎麼看原理圖之內存類介面.wmv
學前班第1課第4.1節_怎麼看原理圖之分析S3C2410開發板.wmv
學前班第1課第4.2節_怎麼看原理圖之分析S3C2440開發板.wmv
學前班第1課第4.3節_怎麼看原理圖之分析S3C6410開發板.wmv
即使你只具備初中物理課的電路知識,我也希望能通過這些視頻,讓你可以看懂原理圖,理解一些常見的通信協議;如果你想掌握更多的硬體知識,這些視頻也可以起個索引作用,讓你知道缺乏什麼知識。
這些視頻所講到的硬體知識,將在《裸板開發》系列視頻中用到,到時可以相互對照著看,加深理解。
2.2.4 要不要專門學習Windows下的單片機開發
很多學校都開通了單片機的課程,很多人都是從51單片機、AVR單片機,現在比較新的STM32單片機開始接觸嵌入式領域,並且使用Windows下的開發軟體,比如keil、MDK等。
問題來了,要不要專門學習Windows下的單片機開發?
①如果這是你們專業的必修課,那就學吧
②如果你的專業跟單片機密切相關,比如機械控制等,那就學吧
③如果你只是想從單片機入門,然後學習更廣闊的嵌入式Linux,那麼放棄在Windows下學習單片機吧!
理由如下:
①Windows下的單片機學習,深度不夠
Windows下有很好的圖形界面單片機開發軟體,比如keil、MDK等。
它們封裝了很多技術細節,比如:
你只會從main函數開始編寫代碼,卻不知道上電後第1條代碼是怎麼執行的;
你可以編寫中斷處理函數,但是卻不知道它是怎麼被調用的;
你不知道程序怎麼從Flash上被讀入內存;
也不知道內存是怎麼劃分使用的,不知道棧在哪、堆在哪;
當你想裁剪程序降低對Flash、內存的使用時,你無從下手;
當你新建一個文件時,它被自動加入到工程里,但是其中的機理你完全不懂;
等等等。
②基於ARM+Linux裸機學習,可以學得更深,並且更貼合後續的Linux學習。實際上它就是Linux下的單片機學習,只是一切更加原始:所有的代碼需要你自己來編寫;哪些文件加入工程,需要你自己來管理。
在工作中,我們當然傾向於使用Windows下更便利的工具,但是在學習階段,我們更想學習到程序的本質。
一切從零編寫代碼、管理代碼,可以讓我們學習到更多知識:
你需要了解晶元的上電啟動過程,知道第1條代碼如何運行;
你需要掌握怎麼把程序從Flash上讀入內存;
需要理解內存怎麼規劃使用,比如棧在哪,堆在哪;
需要理解代碼重定位;
需要知道中斷發生後,軟硬體怎麼保護現場、跳到中斷入口、調用中斷程序、恢復現場;
你會知道,main函數不是我們編寫的第1個函數;
你會知道,晶元從上電開始,程序是怎麼被搬運執行的;
你會知道,函數調用過程中,參數是如何傳遞的;
你會知道,中斷發生時,每一個寄存器的值都要小心對待;
等等等。
你掌握了ARM+Linux的裸機開發,再回去看Windows下的單片機開發,會驚呼:怎麼那麼簡單!並且你會完全明白這些工具沒有向你展示的技術細節。
驅動程序=Linux驅動程序軟體框架+ARM開發板硬體操作,我們可以從簡單的裸機開發入手,先掌握硬體操作,並且還可以:
①掌握如何在PC Linux下編譯程序、把程序燒錄到板子上並運行它
②為學習bootloader打基礎:掌握了各種硬體操作後,後面一組合就是一個bootloader
2.2.5 為什麼選擇ARM9 S3C2440開發板,而不是其他性能更好的?
有一個錯誤的概念:S3C2440過時了、ARM9過時了。
這是不對的,如果你是軟體工程師,無論是ARM9、ARM11、A8還是A9,對我們來說是沒有差別的。
一款晶元,上面有CPU,還有眾多的片上設備(比如UART、USB、LCD控制器)。我們寫程序時,並不涉及CPU,只是去操作那些片上設備。
所以:差別在於片上設備,不在於CPU核;差別在於寄存器操作不一樣。
因為我們寫驅動並不涉及CPU的核心,只是操作CPU之外的設備,只是讀寫這些設備的寄存器。
之所以推薦S3C2440,是因為它的Linux學習資料最豐富,並有配套的第1、2期視頻。
2.2.6 怎麼學習ARM+Linux的裸機開發
學習裸機開發的目的有兩個:
①掌握裸機程序的結構,為後續的u-boot作準備
②練習硬體知識,即:怎麼看原理圖、晶元手冊,怎麼寫代碼來操作硬體
後面的u-boot可以認為是裸機程序的集合,我們在裸機開發中逐個掌握各個部件,再集合起來就可以得到一個u-boot了。
後續的驅動開發,也涉及硬體操作,你可以在裸機開發中學習硬體知識。
注意:如果你並不關心裸機的程序結構,不關心bootloader的實現,這部分是可以先略過的。在後面的驅動視頻中,我們也會重新講解所涉及的硬體知識。
推薦兩本書:杜春蕾的《ARM體系結構與編程》,韋東山的《嵌入式Linux應用開發完全手冊》。後者也許是國內第1本涉及在PC Linux環境下開發的ARM裸機程序的書,如果我說錯了,請原諒我書讀得少。
對於裸機開發,我們提供有2部分視頻:
①環境搭建
第0課第1節_剛接觸開發板之介面接線.wmv
第0課第2節_剛接觸開發板之燒寫裸板程序.wmv
第0課第3節_剛接觸開發板之重燒整個系統.wmv
第0課第4節_剛接觸開發板之使用vmwae和預先做好的ubuntu.wmv
第0課第5節_剛接觸開發板之u-boot打補丁編譯使用及建sourceinsight工程.wmv
第0課第6節_剛接觸開發板之內核u-boot打補丁編譯使用及建sourceinsight工程.wmv
第0課第7節_剛接觸開發板之製作根文件系統及初試驅動.wmv
第0課第8節_在TQ2440,MINI2440上搭建視頻所用系統.wmv
第0課第9節_win7下不能使用dnw燒寫的替代方法.wmv
.................
原文鏈接:網頁鏈接
6. 大數據培訓課程介紹,大數據學習課程要學習哪些
如需大數據培訓推薦選擇【達內教育】,大數據學習課程如下:
1、Java語言基礎:大數據開發主要是基於JAVA,作為大數據應用的開發語言很合適。【Java語言】基礎包括Java開發介紹、Java語言基礎、Eclipse開發工具等。
2、HTML、CSS與Java:網站頁面布局、HTML5+CSS3基礎、jQuery應用、Ajax非同步交互等。
3、Linux系統和Hadoop生態體系:大數據的開發的框架是搭建在Linux系統上面,Hadoop是一個大數據的基礎架構,它能搭建大型數據倉庫,PB級別數據的存儲、外理、分析、統計等業務。
4、分布式計算框架和SparkStrom生態體系:有一定的基礎之後,需要學習Spark大數據處理技術、Mlib機器學習、GraphX圖計算以及Strom技術架構基礎和原理等知識。Spark在性能還是在方案的統一性方面都看著極大的優越性,可以對大數據進行綜合外理:實時數據流外理,批處理和互動式查詢。感興趣的話點擊此處,免費學習一下
想了解更多有關大數據的相關信息,推薦咨詢【達內教育】。秉承「名師出高徒、高徒拿高薪」的教學理念,是達內公司確保教學質量的重要環節。作為美國上市職業教育公司,誠信經營,拒絕虛假宣傳是該機構集團的經營理念。該機構在學員報名之前完全公開所有授課講師的授課安排及背景資料,並與學員簽訂《指定授課講師承諾書》,確保學員利益。達內IT培訓機構,試聽名額限時搶購。
7. Linux怎麼搭建Web伺服器
Linux怎麼搭建Web伺服器
1,基於apache的web伺服器基礎搭建:
(1)實驗環境:一台ip為192.168.10.10的rhel5.9主機作為web伺服器,一台ip為192.168.10.15的win7主機作為測試機
(2)查看服務主機軟體是否安裝
[root@ser1 ~]# rpm -q httpd httpd-manual httpd-devel
package httpd is not installed
package httpd-manual is not installed
package httpd-devel is not installed
(3)安裝軟體包
[root@ser1 ~]# yum install -y httpd httpd-manual httpd-devel
(4)啟動服務
[root@ser1 ~]# service httpd start
啟動httpd: [確定]
[root@ser1 ~]# chkconfig httpd on
(5)在win7上測試,無網頁預設下顯示紅帽測試頁
<報錯頁面存放位置/var/www/error/noindex.html>
.jpg
(6)打開配置文件
[root@ser1 ~]# vim /etc/httpd/conf/httpd.conf
可獲得以下重要欄位:
目錄設置:
<Directory 目錄> .. .. </Directory>
訪問位置設置:
<LocationURL> .. .. </Location>
虛擬主機設置:
<VirtualHost 監聽地址> .. .. </VirtualHost>
常用的全局設置參數:
ServerName本站點的FQDN名稱
DocumentRoot網頁文檔的根目錄:預設/var/www/html/
DirectoryIndex默認索引頁/首頁文件:一般設為index.html index.php
ErrorLog錯誤日誌文件的位置
CustomLog 訪問日誌文件的位置
Listen 監聽服務的IP地址、埠號
ServerRoot 服務目錄:/etc/httpd/
Timeout網路連接超時,默認 300 秒
KeepAlive是否保持連接,可選On或Off
MaxKeepAliveRequests每次連接最多處理的請求數
KeepAliveTimeout保持連接的超時時限
Include 可包含其他子配置文件: /etc/httpd/conf.d/
(7)創建測試網頁
[root@ser1 ~]# vim /var/www/html/index.html
<h1>
This is a test page !!!
</h1>
~
(8)win7下測試,主頁變為測試網頁
.jpg
2,基於apache的web伺服器的訪問控制:
(1)web服務的地址限制
I,rder 配置項,定義控制順序
allow,deny 先允許後拒絕,預設拒絕所有;沖突時,拒絕生效;allow不設置,拒絕所有
deny,allow 先拒絕後允許,預設允許所有;沖突時,允許生效;deny不設置,允許所有
II,Allow/Deny from 配置項,設置許可權
Allow from 地址1 地址2 .. ..
Deny from 地址1 地址2 .. ..
配置如下:
[root@ser1 ~]# vim /etc/httpd/conf/httpd.conf
331 #
332 Orderallow,deny
333 Allowfrom 192.168.20.0/24
334
335 </Directory>
[root@ser1 ~]# service httpd restart……重啟服務
停止httpd: [確定]
啟動httpd: [確定]
在win7上測試,測試完成並還原配置文件:
.jpg
看過「 Linux怎麼搭建Web伺服器 」的人還看了:
1.win7如何搭建Web伺服器
2.基於WebRTC的瀏覽器端Web伺服器的研究論文
3.LINUX下配置管理APACHE伺服器的方法
4.如何安全設置Apache Web伺服器
5.全國網路技術水平考試二級實踐指導書
8. uboot下的boot命令是什麼意思
boot是一個單獨的二進制文件。
燒寫進開發板,通過串口就可以進行命令輸入。
U-boot發展到現在,它的命令行模式已經非常接近Linux下的shell了。
在編譯的U-boot-2009.11中的命令行模式,支持「Tab」鍵的命令補全和命令的歷史記錄功能。
而且如果輸入的命令的前幾個字元和別的命令不重復,那麼就只需要打這幾個字元即可。
比如想看這個U-boot的版本號,命令就是「 version」,
但是在所有的命令中沒有其他任何一個的命令是由「v」開頭的,
所以只需要輸入「v」即可。
9. 求嵌入式linux開發詳細流程(步驟)
1.首先,建立交叉編譯環境:交叉編譯是指:在PC機上編譯,在目標板上執行,我PC是linux+ arm-elf-gcc編譯器.扳子是ARM3000.板子上的系統是uclinux,這時一個剪裁的很小的實時嵌入式linux操作系統.推薦使用這個.
2.然後就是你寫程序嘍,不過注意可能有些庫函數不能用,因為哪個編譯器稍微受限一點,不是所由的c庫函數都支持,不過一般開發的都有.
3.連起你的主機和開發板,這個你會不?要連兩個:串口(用來控制板子)和以太口(用來下載程序),我們板子上這些外設都有,你要使沒有可以用其他的口代替傳程序,但串口可是該有的阿!
4.在你主機上編譯程序生成目標代碼,建議用makefile文件來組織你的聯編關系.
5.把生成代碼下載到目標板執行調試.我是用的主機的NFS(網落文件)服務,下載到目標板的.
6.注:目標板是怎麼控制的呢?是用串口控制的,可用minicom,設置好你要控制的串口,也應該是你連板子的那個.在命令行里敲上minicom,即進入minicom截面,開啟你的板子,應該就是板子uclinux系統解壓安裝的畫面了.然後用ifconfig eth0.....
配置ip,這個ip就是你板子的ip了,注意與主機一個網段.然後mount -t nfs 主機ip:/uclinux /板子上的一個目錄,就把主機的 uclinux目錄放到板子上了(這么說其實不合理,應該叫掛載). 然後找到你剛才一經編譯好的哪個目標代碼執行即可.
因不了解你的具體環境和配置,暫說這些,有問題可再聯系:)
10. 大數據培訓內容,大數據要學哪些課程
《大數據實訓課程資料》網路網盤資源免費下載
鏈接:https://pan..com/s/1RiGvjn2DlL5pPISCG_O0Sw
大數據實訓課程資料|雲計算與虛擬化課程資源|課程實驗指導書綜合版|機器學習與演算法分析課程資源|Spark課程資源|Python課程資源|Hadoop技術課程資源|雲計算課程資料.zip|微課.zip|演算法建模與程序示例.zip|spark課程資源.zip|hadoop課程資源.zip|實驗指導書|教學視頻|教學PPT