1. linux開發工程師開發什麼的
程序員的崗位需求很多,例如大型網路公司、軟體開發公司等等都需要程序員。
程序員需要學習:
1、掌握數據及其轉換、數據的機內表示、算術和邏輯運算,以及相關的應用數學基礎知識;
2、理解計算機的組成以及各主要部件的性能指標;
3、掌握操作系統、程序設計語言的基礎知識;
4、熟練掌握計算機常用辦公軟體的基本操作方法;
5、熟練掌握基本數據結構和常用演算法;
6、熟練掌握C程序設計語言,以及C、Java、Visual Basic中的一種程序設計語言;
7、熟悉資料庫、網路和多媒體的基礎知識;
8、掌握軟體工程的基礎知識,了解軟體過程基本知識、軟體開發項目管理的常識;
9、了解常用信息技術標准、安全性,以及有關法律、法規的基本知識;
10、了解信息化、計算機應用的基礎知識;
11、正確閱讀和理解計算機領域的簡單英文資料。
程序員必備技能:
1、熟練開發工具
做為一名程序員至少熟練掌握兩到三種開發工具的使用,這是程序員的立身之本,其中C/C和JAVA是重點推薦的開發工具,C/C以其高效率和高度的靈活性成為開發工具中的利器,很多系統級的軟體還是用C/C編寫。
而JAVA的跨平台和與WEB很好的結合是JAVA的優勢所在,而JAVA即其相關的技術集JAVAOne很可能會成為未來的主流開發工具返帶磨之一。
其次,能掌握一種簡便的可視化開發工具,如VB,Delphi,CBuilder,則更好,這些開發工具減小了開發難度,並能夠強化程序員對象模型的概念。
另外,需要掌握基本的腳本語言,如shell,perl等,至少能讀懂這些腳本代碼。
2、熟知資料庫
作為程序員,他們自然有自己的理由:很多應用程序都是以資料庫的數據為中心,而資料庫的產品也有不少,其中關系型資料庫仍是主流形式,所以程序員至少熟練掌握一兩種資料庫,對關系型資料庫的關鍵元素要非常清楚,要熟練掌握SQL的基本語法。
雖然很多資料庫產品提供了可視化的資料庫管理工具,但SQL是基礎,是通用的資料庫操作方法。如果沒有機會接觸商業資料庫系統,可以使用免費的資料庫產品是一個不錯的選擇,如mySQL,Postgres等。
3、了解操作系統
當前主流的操作系統是Windows,Linux/Unix,熟練地使用這些操作系統是必須的,但只有這些還遠遠不夠。
要想成為一個真正的編程高手,需要深入了解操作系統,了解它的內存管理機制、進程/線程調度、信號、內核對象、系統調用、協議棧實現等。
Linux作為開發源碼的操作系統,是一個很好的學習平台,Linux幾乎具備了所有現代操作系統的特徵。雖然Windows系統的內核實現機制的資料較少,但通過互聯網還是能獲取不少資料。懂得網路協議TCP/IP。
在互聯網如此普及的今天,如果您還沒有對互聯網的支撐協議TCP/IP協議棧有很好的掌握,就需要迅速補上這一課,網路技術已改變了軟體運行的模式。
從最早的客戶/伺服器結構,到今天的WEBServices,再到未來的網格計算,這一切都離不開以TCP/IP協議棧為基礎的網路協議支持,深入掌握TCP/IP協議是非常必要的。
至少,需要了解ISO七層協議模型,IP/UDP/TCP/HTTP等常用協議的原理和三次握手機制。
4、明白DCOM/CORBA/XML/WEBServices存在的意義
隨著技術的發展,軟體與網路的無縫結合是必然趨勢,軟體系統的位置無關性是未來計算模式的重要特徵之一,DCOM/CORBA是當前兩大主流的分布計算的中間平台,DCOM是微軟COM(組件對象模型)的擴行虧展,而CORBA是OMG支持的規范。
XML/WebServices重要性不言而喻,XML以其結構化的表示方法和超強的表達能力被喻為互聯網上的「世界語」,是分布式計算的基石之一。
5、不要將軟體工程與CMM分開
大型軟體系統的開發中,工程化的開發控製取代個人英雄主義,成為軟體系統成功的保證,漏斗一個編程高手並不一定是一個優秀的程序員。
一個優秀的程序員是將出色的編程能力和開發技巧同嚴格的軟體工程思想有機結合,編程只是軟體生命周期中的其中一環,優秀的程序員應該掌握軟體開發各個階段的基本技能。
如市場分析,可行性分析,需求分析,結構設計,詳細設計,軟體測試等。
6、需求理解能力
程序員要能正確理解任務單中描述的需求。在這里要明確一點,程序員不僅僅要注意到軟體的功能需求,還應注意軟體的性能需求。
要能正確評估自己的模塊對整個項目中的影響及潛在的威脅,如果有著兩到三年項目經驗的熟練程序員對這一點沒有體會的話,只能說明他或許是認真工作過,但是沒有用心工作。
7、模塊化思維能力
作為一個優秀的程序員,他的思想不能局限在當前的工作任務裡面,要想想看自己寫的模塊是否可以脫離當前系統存在,通過簡單的封裝在其他系統中或其他模塊中直接使用。
這樣做可以使代碼能重復利用,減少重復的勞動,也能使系統結構越趨合理。模塊化思維能力的提高是一個程序員的技術水平提高的一項重要指標。
就業方向:
1、網路開發
現在網路已經成為世界通訊的一座橋梁,好像Javascript、PHP、Ruby這幾類開發語言大部分是用作網路開發方面。
2、企業軟體開發
JAVA、C、VB這幾類開發語言都實現了面向對象開發的目標,更多時候用於企業系統的開發。
3、系統軟體
C語言、C、Object-C這些軟體更多是用在系統軟體開發,嵌入式開發的方面。
當然,這分類不是絕對,像JAVA、C、VB很多時候也用於動態網站的開發。在很開發項目都會使用集成開發的方式,同一個項目裡面使用多種開發語言,各展所長,同步開發。
但所以在剛入門的時候,建議先為自己選擇一種合適的開發工具,「專注地投入學習,全力一擊」。
(1)linux模塊化編程實例擴展閱讀:會編程、會計算機語言就能加入互聯網發展大潮中,享受數字經濟發展的紅利,一時間社會上的程序員培訓機構都變得格外火爆。
但是現在,專家的數據分析結果告訴你:若想跟上數字經濟發展的步伐,光會編程可不行,這個行業現在緊缺高端的、綜合型人才。
11月22日下午,清華大學經管學院互聯網發展與治理研究中心與領英聯合發布《中國經濟的數字化轉型:人才與就業》,揭示我國數字人才現狀與趨勢。
報告顯示我國數字經濟發展面臨人才短缺的挑戰,但這種短缺主要體現在擁有中高級專業技能數字人才的比例不高,擁有人工智慧、智能製造等前沿技術的人才更是少之又少。
與美國、英國、加拿大等國家相比,中國的數字人才儲備尚有很大差距。
此外,報告根據對人才需求的數據分析,結果顯示我國數字人才的技能需求不再強調單一編程技能,更加看重技術、管理和領導力等綜合技能。
2015年,我國從事信息傳輸、軟體和信息技術服務相關工作的人數約350萬,但其中中高端人才,特別是前沿技術的數字人才並不多。根據領英中國智庫的研究,在人工智慧領域,美國的從業者數量在85萬人以上,印度15萬,英國14萬,中國只有5萬多人。
報告負責人、清華大學經濟管理學院副院長陳煜波教授表示,我國目前在大數據與人工智慧領域人才缺口明顯。
他解釋說,目前中國85%以上的數字人才分布在產品研發類,而深度分析、先進製造、數字營銷等職能的人才加起來只有不到5%,存在較大缺口,新興技術人才和創新型人才培養方面存在滯後和不足。
這份研究報告的基礎數據來自領英在中國的3600萬個人用戶,這些用戶畢業於1.5萬多所國內外院校,分布在36.4萬家企業,擁有超過2.3萬項技能。
陳煜波研究團隊從中篩選了72萬數字人才,多維度提取用戶畫像並跟蹤其職業軌跡,以此預測不同地區的人才流向、僱傭率、受僱主歡迎的技能等人才趨勢層面的信息。
陳煜波說,根據數據分析結果,整體來看,雖然編程技能和數據分析技能需求占據主導,然而隨著數字產業走向成熟,企業除了強調編程技能,也逐步更加看重人才的技術、管理和領導力等綜合技能。
近年間,項目管理、產品運營等「技術管理」類技能的需求呈現出明顯的上升趨勢,懂技術、懂管理的人才被認為是「一將難求」。
領英中國代理總裁曾志恆也提醒,如果你有興趣向數字職能轉型,不能僅僅專注於自己的技術能力,溝通和領導力等軟性技能將成為你脫穎而出的關鍵。
陳煜波希望這些研究結果能為教育行業和政府部門提供借鑒。他說,教育行業可根據職位的供需趨勢更好地規劃人才培養的方向,政府也可更好地了解人才流動方向、技術缺口等,以此制定有針對性的引才策略。
程序員崗位職責:
1、對項目經理負責,負責軟體項目的詳細設計、編碼和內部測試的組織實施,對小型軟體項目兼任系統分析工作,完成分配項目的實施和技術支持工作。
2、協助項目經理和相關人員同客戶進行溝通,保持良好的客戶關系。
3、參與需求調研、項目可行性分析、技術可行性分析和需求分析。
4、熟悉並熟練掌握交付軟體部開發的軟體項目的相關軟體技術。
5、負責向項目經理及時反饋軟體開發中的情況,並根據實際情況提出改進建議。
6、參與軟體開發和維護過程中重大技術問題的解決,參與軟體首次安裝調試、數據割接、用戶培訓和項目推廣。
7、負責相關技術文檔的擬訂。
8、負責對業務領域內的技術發展動態進行分析研究。
相關書籍:
很多程序員響應,他們在推薦時也寫下自己的評語。 以前就有國內網友介紹這個程序員書單,不過都是推薦數 Top 9的書。
其實除了前9本之外,推薦數前30左右的書籍都算經典,筆者整理編譯這個問答貼,同時摘譯部分推薦人的評語。
下面就按照各本書的推薦數排列。
1、《代碼大全》 史蒂夫·邁克康奈爾
2、《程序員修煉之道》
3、《計算機程序的構造和解釋》
4、《演算法導論》
5、《重構:改善既有代碼的設計》
6、《設計模式》
7、《人月神話》
8、《計算機程序設計藝術》
9、《編譯原理》(龍書)
10、《活著》
2. 如何在Linux平台下開發實際的音頻應用程序
一、數字音頻音頻信號是一種連續變化的模擬信號,但計算機只能處理和記錄二進制的數字信號,由自然音源得到的音頻信號必須經過一定的變換,成為數字音頻信號之後,才能送到計算機中作進一步的處理。數字音頻系統通過將聲波的波型轉換成一系列二進制數據,來實現對原始聲音的重現,實現這一步驟的設備常被稱為模/數轉換器(A/D)。A/D轉換器以每秒鍾上萬次的速率對聲波進行采樣,每個采樣點都記錄下了原始模擬聲波在某一時刻的狀態,通常稱之為樣本(sample),而每一秒鍾所采樣的數目則稱為采樣頻率,通過將一串連續的樣本連接起來,就可以在計算機中描述一段聲音了。對於采樣過程中的每一個樣本來說,數字音頻系統會分配一定存儲位來記錄聲波的振幅,一般稱之為采樣分辯率或者采樣精度,采樣精度越高,聲音還原時就會越細膩。數字音頻涉及到的概念非常多,對於在Linux下進行音頻編程的程序員來說,最重要的是理解聲音數字化的兩個關鍵步驟:采樣和量化。采樣就是每隔一定時間就讀一次聲音信號的幅度,而量化則是將采樣得到的聲音信號幅度轉換為數字值,從本質上講,采樣是時間上的數字化,而量化則是幅度上的數字化。下面介紹幾個在進行音頻編程時經常需要用到的技術指標:1. 采樣頻率采樣頻率是指將模擬聲音波形進行數字化時,每秒鍾抽取聲波幅度樣本的次數。采樣頻率的選擇應該遵循奈奎斯特(Harry Nyquist)采樣理論:如果對某一模擬信號進行采樣,則采樣後可還原的最高信號頻率只有采樣頻率的一半,或者說只要采樣頻率高於輸入信號最高頻率的兩倍,就能從采樣信號系列重構原始信號。正常人聽覺的頻率范圍大約在20Hz~20kHz之間,根據奈奎斯特采樣理論,為了保證聲音不失真,采樣頻率應該在40kHz左右。常用的音頻采樣頻率有8kHz、11.025kHz、22.05kHz、16kHz、37.8kHz、44.1kHz、48kHz等,如果採用更高的采樣頻率,還可以達到DVD的音質。2. 量化位數量化位數是對模擬音頻信號的幅度進行數字化,它決定了模擬信號數字化以後的動態范圍,常用的有8位、12位和16位。量化位越高,信號的動態范圍越大,數字化後的音頻信號就越可能接近原始信號,但所需要的存貯空間也越大。3. 聲道數聲道數是反映音頻數字化質量的另一個重要因素,它有單聲道和雙聲道之分。雙聲道又稱為立體聲,在硬體中有兩條線路,音質和音色都要優於單聲道,但數字化後占據的存儲空間的大小要比單聲道多一倍二、音效卡驅動出於對安全性方面的考慮,Linux下的應用程序無法直接對音效卡這類硬體設備進行操作,而是必須通過內核提供的驅動程序才能完成。在Linux上進行音頻編程的本質就是要藉助於驅動程序,來完成對音效卡的各種操作。對硬體的控制涉及到寄存器中各個比特位的操作,通常這是與設備直接相關並且對時序的要求非常嚴格,如果這些工作都交由應用程序員來負責,那麼對音效卡的編程將變得異常復雜而困難起來,驅動程序的作用正是要屏蔽硬體的這些底層細節,從而簡化應用程序的編寫。目前Linux下常用的音效卡驅動程序主要有兩種:OSS和ALSA。最早出現在Linux上的音頻編程介面是OSS(Open Sound System),它由一套完整的內核驅動程序模塊組成,可以為絕大多數音效卡提供統一的編程介面。OSS出現的歷史相對較長,這些內核模塊中的一部分(OSS/Free)是與Linux內核源碼共同免費發布的,另外一些則以二進制的形式由4Front Technologies公司提供。由於得到了商業公司的鼎力支持,OSS已經成為在Linux下進行音頻編程的事實標准,支持OSS的應用程序能夠在絕大多數音效卡上工作良好。雖然OSS已經非常成熟,但它畢竟是一個沒有完全開放源代碼的商業產品,ALSA(Advanced Linux Sound Architecture)恰好彌補了這一空白,它是在Linux下進行音頻編程時另一個可供選擇的音效卡驅動程序。ALSA除了像OSS那樣提供了一組內核驅動程序模塊之外,還專門為簡化應用程序的編寫提供了相應的函數庫,與OSS提供的基於ioctl的原始編程介面相比,ALSA函數庫使用起來要更加方便一些。ALSA的主要特點有:支持多種音效卡設備模塊化的內核驅動程序支持SMP和多線程提供應用開發函數庫兼容OSS應用程序ALSA和OSS最大的不同之處在於ALSA是由志願者維護的自由項目,而OSS則是由公司提供的商業產品,因此在對硬體的適應程度上OSS要優於ALSA,它能夠支持的音效卡種類更多。ALSA雖然不及OSS運用得廣泛,但卻具有更加友好的編程介面,並且完全兼容於OSS,對應用程序員來講無疑是一個更佳的選擇。三、編程介面如何對各種音頻設備進行操作是在Linux上進行音頻編程的關鍵,通過內核提供的一組系統調用,應用程序能夠訪問音效卡驅動程序提供的各種音頻設備介面,這是在Linux下進行音頻編程最簡單也是最直接的方法。3.1 訪問音頻設備無論是OSS還是ALSA,都是以內核驅動程序的形式運行在Linux內核空間中的,應用程序要想訪問音效卡這一硬體設備,必須藉助於Linux內核所提供的系統調用(system call)。從程序員的角度來說,對音效卡的操作在很大程度上等同於對磁碟文件的操作:首先使用open系統調用建立起與硬體間的聯系,此時返回的文件描述符將作為隨後操作的標識;接著使用read系統調用從設備接收數據,或者使用write系統調用向設備寫入數據,而其它所有不符合讀/寫這一基本模式的操作都可以由ioctl系統調用來完成;最後,使用close系統調用告訴Linux內核不會再對該設備做進一步的處理。· open系統調用系統調用open可以獲得對音效卡的訪問權,同時還能為隨後的系統調用做好准備,其函數原型如下所示: int open(const char *pathname, int flags, int mode);參數pathname是將要被打開的設備文件的名稱,對於音效卡來講一般是/dev/dsp。參數flags用來指明應該以什麼方式打開設備文件,它可以是O_RDONLY、O_WRONLY或者O_RDWR,分別表示以只讀、只寫或者讀寫的方式打開設備文件;參數mode通常是可選的,它只有在指定的設備文件不存在時才會用到,指明新創建的文件應該具有怎樣的許可權。如果open系統調用能夠成功完成,它將返回一個正整數作為文件標識符,在隨後的系統調用中需要用到該標識符。如果open系統調用失敗,它將返回-1,同時還會設置全局變數errno,指明是什麼原因導致了錯誤的發生。· read系統調用系統調用read用來從音效卡讀取數據,其函數原型如下所示: int read(int fd, char *buf, size_t count);參數fd是設備文件的標識符,它是通過之前的open系統調用獲得的;參數buf是指向緩沖區的字元指針,它用來保存從音效卡獲得的數據;參數count則用來限定從音效卡獲得的最大位元組數。如果read系統調用成功完成,它將返回從音效卡實際讀取的位元組數,通常情況會比count的值要小一些;如果read系統調用失敗,它將返回-1,同時還會設置全局變數errno,來指明是什麼原因導致了錯誤的發生。write系統調用系統調用write用來向音效卡寫入數據,其函數原型如下所示: size_t write(int fd, const char *buf, size_t count);系統調用write和系統調用read在很大程度是類似的,差別只在於write是向音效卡寫入數據,而read則是從音效卡讀入數據。參數fd同樣是設備文件的標識符,它也是通過之前的open系統調用獲得的;參數buf是指向緩沖區的字元指針,它保存著即將向音效卡寫入的數據;參數count則用來限定向音效卡寫入的最大位元組數。如果write系統調用成功完成,它將返迴向音效卡實際寫入的位元組數;如果read系統調用失敗,它將返回-1,同時還會設置全局變數errno,來指明是什麼原因導致了錯誤的發生。無論是read還是write,一旦調用之後Linux內核就會阻塞當前應用程序,直到數據成功地從音效卡讀出或者寫入為止。ioctl系統調用系統調用ioctl可以對音效卡進行控制,凡是對設備文件的操作不符合讀/寫基本模式的,都是通過ioctl來完成的,它可以影響設備的行為,或者返回設備的狀態,其函數原型如下所示: int ioctl(int fd, int request, ...);參數fd是設備文件的標識符,它是在設備打開時獲得的;如果設備比較復雜,那麼對它的控制請求相應地也會有很多種,參數request的目的就是用來區分不同的控制請求;通常說來,在對設備進行控制時還需要有其它參數,這要根據不同的控制請求才能確定,並且可能是與硬體設備直接相關的。close系統調用當應用程序使用完音效卡之後,需要用close系統調用將其關閉,以便及時釋放佔用的硬體資源,其函數原型如下所示: int close(int fd);參數fd是設備文件的標識符,它是在設備打開時獲得的。一旦應用程序調用了close系統調用,Linux內核就會釋放與之相關的各種資源,因此建議在不需要的時候盡量及時關閉已經打開的設備。3.2 音頻設備文件對於Linux應用程序員來講,音頻編程介面實際上就是一組音頻設備文件,通過它們可以從音效卡讀取數據,或者向音效卡寫入數據,並且能夠對音效卡進行控制,設置采樣頻率和聲道數目等等。/dev/sndstat設備文件/dev/sndstat是音效卡驅動程序提供的最簡單的介面,通常它是一個只讀文件,作用也僅僅只限於匯報音效卡的當前狀態。一般說來,/dev/sndstat是提供給最終用戶來檢測音效卡的,不宜用於程序當中,因為所有的信息都可以通過ioctl系統調用來獲得。 Linux提供的cat命令可以很方便地從/dev/sndstat獲得音效卡的當前狀態: [xiaowp@linuxgam sound]$ cat /dev/sndstat /dev/dsp音效卡驅動程序提供的/dev/dsp是用於數字采樣(sampling)和數字錄音(recording)的設備文件,它對於Linux下的音頻編程來講非常重要:向該設備寫數據即意味著激活音效卡上的D/A轉換器進行放音,而向該設備讀數據則意味著激活音效卡上的A/D轉換器進行錄音。目前許多音效卡都提供有多個數字采樣設備,它們在Linux下可以通過/dev/dsp1等設備文件進行訪問。DSP是數字信號處理器(Digital Signal Processor)的簡稱,它是用來進行數字信號處理的特殊晶元,音效卡使用它來實現模擬信號和數字信號的轉換。音效卡中的DSP設備實際上包含兩個組成部分:在以只讀方式打開時,能夠使用A/D轉換器進行聲音的輸入;而在以只寫方式打開時,則能夠使用D/A轉換器進行聲音的輸出。嚴格說來,Linux下的應用程序要麼以只讀方式打開/dev/dsp輸入聲音,要麼以只寫方式打開/dev/dsp輸出聲音,但事實上某些音效卡驅動程序仍允許以讀寫的方式打開/dev/dsp,以便同時進行聲音的輸入和輸出,這對於某些應用場合(如IP電話)來講是非常關鍵的。在從DSP設備讀取數據時,從音效卡輸入的模擬信號經過A/D轉換器變成數字采樣後的樣本(sample),保存在音效卡驅動程序的內核緩沖區中,當應用程序通過read系統調用從音效卡讀取數據時,保存在內核緩沖區中的數字采樣結果將被復制到應用程序所指定的用戶緩沖區中。需要指出的是,音效卡采樣頻率是由內核中的驅動程序所決定的,而不取決於應用程序從音效卡讀取數據的速度。如果應用程序讀取數據的速度過慢,以致低於音效卡的采樣頻率,那麼多餘的數據將會被丟棄;如果讀取數據的速度過快,以致高於音效卡的采樣頻率,那麼音效卡驅動程序將會阻塞那些請求數據的應用程序,直到新的數據到來為止。在向DSP設備寫入數據時,數字信號會經過D/A轉換器變成模擬信號,然後產生出聲音。應用程序寫入數據的速度同樣應該與音效卡的采樣頻率相匹配,否則過慢的話會產生聲音暫停或者停頓的現象,過快的話又會被內核中的音效卡驅動程序阻塞,直到硬體有能力處理新的數據為止。與其它設備有所不同,音效卡通常不會支持非阻塞(non-blocking)的I/O操作。無論是從音效卡讀取數據,或是向音效卡寫入數據,事實上都具有特定的格式(format),默認為8位無符號數據、單聲道、8KHz采樣率,如果默認值無法達到要求,可以通過ioctl系統調用來改變它們。通常說來,在應用程序中打開設備文件/dev/dsp之後,接下去就應該為其設置恰當的格式,然後才能從音效卡讀取或者寫入數據。/dev/audio/dev/audio類似於/dev/dsp,它兼容於Sun工作站上的音頻設備,使用的是mu-law編碼方式。如果音效卡驅動程序提供了對/dev/audio的支持,那麼在Linux上就可以通過cat命令,來播放在Sun工作站上用mu-law進行編碼的音頻文件: [xiaowp@linuxgam sound]$ cat audio.au > /dev/audio由於設備文件/dev/audio主要出於對兼容性的考慮,所以在新開發的應用程序中最好不要嘗試用它,而應該以/dev/dsp進行替代。對於應用程序來說,同一時刻只能使用/dev/audio或者/dev/dsp其中之一,因為它們是相同硬體的不同軟體介面。/dev/mixer在音效卡的硬體電路中,混音器(mixer)是一個很重要的組成部分,它的作用是將多個信號組合或者疊加在一起,對於不同的音效卡來說,其混音器的作用可能各不相同。運行在Linux內核中的音效卡驅動程序一般都會提供/dev/mixer這一設備文件,它是應用程序對混音器進行操作的軟體介面。混音器電路通常由兩個部分組成:輸入混音器(input mixer)和輸出混音器(output mixer)。輸入混音器負責從多個不同的信號源接收模擬信號,這些信號源有時也被稱為混音通道或者混音設備。模擬信號通過增益控制器和由軟體控制的音量調節器後,在不同的混音通道中進行級別(level)調制,然後被送到輸入混音器中進行聲音的合成。混音器上的電子開關可以控制哪些通道中有信號與混音器相連,有些音效卡只允許連接一個混音通道作為錄音的音源,而有些音效卡則允許對混音通道做任意的連接。經過輸入混音器處理後的信號仍然為模擬信號,它們將被送到A/D轉換器進行數字化處理。輸出混音器的工作原理與輸入混音器類似,同樣也有多個信號源與混音器相連,並且事先都經過了增益調節。當輸出混音器對所有的模擬信號進行了混合之後,通常還會有一個總控增益調節器來控制輸出聲音的大小,此外還有一些音調控制器來調節輸出聲音的音調。經過輸出混音器處理後的信號也是模擬信號,它們最終會被送給喇叭或者其它的模擬輸出設備。對混音器的編程包括如何設置增益控制器的級別,以及怎樣在不同的音源間進行切換,這些操作通常來講是不連續的,而且不會像錄音或者放音那樣需要佔用大量的計算機資源。由於混音器的操作不符合典型的讀/寫操作模式,因此除了open和close兩個系統調用之外,大部分的操作都是通過ioctl系統調用來完成的。與/dev/dsp不同,/dev/mixer允許多個應用程序同時訪問,並且混音器的設置值會一直保持到對應的設備文件被關閉為止。為了簡化應用程序的設計,Linux上的音效卡驅動程序大多都支持將混音器的ioctl操作直接應用到聲音設備上,也就是說如果已經打開了/dev/dsp,那麼就不用再打開/dev/mixer來對混音器進行操作,而是可以直接用打開/dev/dsp時得到的文件標識符來設置混音器。/dev/sequencer目前大多數音效卡驅動程序還會提供/dev/sequencer這一設備文件,用來對音效卡內建的波表合成器進行操作,或者對MIDI匯流排上的樂器進行控制,一般只用於計算機音樂軟體中。 四、應用框架在Linux下進行音頻編程時,重點在於如何正確地操作音效卡驅動程序所提供的各種設備文件,由於涉及到的概念和因素比較多,所以遵循一個通用的框架無疑將有助於簡化應用程序的設計。4.1 DSP編程對音效卡進行編程時首先要做的是打開與之對應的硬體設備,這是藉助於open系統調用來完成的,並且一般情況下使用的是/dev/dsp文件。採用何種模式對音效卡進行操作也必須在打開設備時指定,對於不支持全雙工的音效卡來說,應該使用只讀或者只寫的方式打開,只有那些支持全雙工的音效卡,才能以讀寫的方式打開,並且還要依賴於驅動程序的具體實現。Linux允許應用程序多次打開或者關閉與音效卡對應的設備文件,從而能夠很方便地在放音狀態和錄音狀態之間進行切換,建議在進行音頻編程時只要有可能就盡量使用只讀或者只寫的方式打開設備文件,因為這樣不僅能夠充分利用音效卡的硬體資源,而且還有利於驅動程序的優化。下面的代碼示範了如何以只寫方式打開音效卡進行放音(playback)操作: int handle = open("/dev/dsp", O_WRONLY);if (handle == -1) { perror("open /dev/dsp"); return -1;} 運行在Linux內核中的音效卡驅動程序專門維護了一個緩沖區,其大小會影響到放音和錄音時的效果,使用ioctl系統調用可以對它的尺寸進行恰當的設置。調節驅動程序中緩沖區大小的操作不是必須的,如果沒有特殊的要求,一般採用默認的緩沖區大小也就可以了。但需要注意的是,緩沖區大小的設置通常應緊跟在設備文件打開之後,這是因為對音效卡的其它操作有可能會導致驅動程序無法再修改其緩沖區的大小。下面的代碼示範了怎樣設置音效卡驅動程序中的內核緩沖區的大小: int setting = 0xnnnnssss;int result = ioctl(handle, SNDCTL_DSP_SETFRAGMENT, &setting);if (result == -1) { perror("ioctl buffer size"); return -1;}// 檢查設置值的正確性 在設置緩沖區大小時,參數setting實際上由兩部分組成,其低16位標明緩沖區的尺寸,相應的計算公式為buffer_size = 2^ssss,即若參數setting低16位的值為16,那麼相應的緩沖區的大小會被設置為65536位元組。參數setting的高16位則用來標明分片(fragment)的最大序號,它的取值范圍從2一直到0x7FFF,其中0x7FFF表示沒有任何限制。接下來要做的是設置音效卡工作時的聲道(channel)數目,根據硬體設備和驅動程序的具體情況,可以將其設置為0(單聲道,mono)或者1(立體聲,stereo)。下面的代碼示範了應該怎樣設置聲道數目: int channels = 0; // 0=mono 1=stereoint result = ioctl(handle, SNDCTL_DSP_STEREO, &channels);if ( result == -1 ) { perror("ioctl channel number"); return -1;}if (channels != 0) { // 只支持立體聲} 采樣格式和采樣頻率是在進行音頻編程時需要考慮的另一個問題,音效卡支持的所有采樣格式可以在頭文件soundcard.h中找到,而通過ioctl系統調用則可以很方便地更改當前所使用的采樣格式。下面的代碼示範了如何設置音效卡的采樣格式: int format = AFMT_U8;int result = ioctl(handle, SNDCTL_DSP_SETFMT, &format);if ( result == -1 ) { perror("ioctl sample format"); return -1;}// 檢查設置值的正確性 音效卡采樣頻率的設置也非常容易,只需在調用ioctl時將第二個參數的值設置為SNDCTL_DSP_SPEED,同時在第三個參數中指定采樣頻率的數值就行了。對於大多數音效卡來說,其支持的采樣頻率范圍一般為5kHz到44.1kHz或者48kHz,但並不意味著該范圍內的所有頻率都會被硬體支持,在Linux下進行音頻編程時最常用到的幾種采樣頻率是11025Hz、16000Hz、22050Hz、32000Hz和44100Hz。下面的代碼示範了如何設置音效卡的采樣頻率: int rate = 22050;int result = ioctl(handle, SNDCTL_DSP_SPEED, &rate);if ( result == -1 ) { perror("ioctl sample format"); return -1;}// 檢查設置值的正確性 4.2 Mixer編程音效卡上的混音器由多個混音通道組成,它們可以通過驅動程序提供的設備文件/dev/mixer進行編程。對混音器的操作是通過ioctl系統調用來完成的,並且所有控制命令都由SOUND_MIXER或者MIXER開頭,表1列出了常用的幾個混音器控制命令:名稱作用SOUND_MIXER_VOLUME主音量調節SOUND_MIXER_BASS低音控制SOUND_MIXER_TREBLE高音控制SOUND_MIXER_SYNTHFM合成器SOUND_MIXER_PCM主D/A轉換器SOUND_MIXER_SPEAKERPC喇叭SOUND_MIXER_LINE音頻線輸入SOUND_MIXER_MIC麥克風輸入SOUND_MIXER_CDCD輸入SOUND_MIXER_IMIX回放音量SOUND_MIXER_ALTPCM從D/A 轉換器SOUND_MIXER_RECLEV錄音音量SOUND_MIXER_IGAIN輸入增益SOUND_MIXER_OGAIN輸出增益SOUND_MIXER_LINE1音效卡的第1輸入SOUND_MIXER_LINE2音效卡的第2輸入SOUND_MIXER_LINE3音效卡的第3輸入表1 混音器命令對音效卡的輸入增益和輸出增益進行調節是混音器的一個主要作用,目前大部分音效卡採用的是8位或者16位的增益控制器,但作為程序員來講並不需要關心這些,因為音效卡驅動程序會負責將它們變換成百分比的形式,也就是說無論是輸入增益還是輸出增益,其取值范圍都是從0到100。在進行混音器編程時,可以使用SOUND_MIXER_READ宏來讀取混音通道的增益大小,例如在獲取麥克風的輸入增益時,可以使用如下的代碼: int vol;ioctl(fd, SOUND_MIXER_READ(SOUND_MIXER_MIC), &vol);printf("Mic gain is at %d %%\n", vol); 對於只有一個混音通道的單聲道設備來說,返回的增益大小保存在低位位元組中。而對於支持多個混音通道的雙聲道設備來說,返回的增益大小實際上包括兩個部分,分別代表左、右兩個聲道的值,其中低位位元組保存左聲道的音量,而高位位元組則保存右聲道的音量。下面的代碼可以從返回值中依次提取左右聲道的增益大小�4.3 音頻錄放框架下面給出一個利用音效卡上的DSP設備進行聲音錄制和回放的基本框架,它的功能是先錄制幾秒種音頻數據,將其存放在內存緩沖區中,然後再進行回放,其所有的功能都是通過讀寫/dev/dsp設備文件來完成的: /* * sound.c */#include #include #include #include #include #include #include #define LENGTH 3 /* 存儲秒數 */#define RATE 8000 /* 采樣頻率 */#define SIZE 8 /* 量化位數 */#define CHANNELS 1 /* 聲道數目 */ /* 用於保存數字音頻數據的內存緩沖區 */unsigned char buf[LENGTH*RATE*SIZE*CHANNELS/8]; int main(){ int fd; /* 聲音設備的文件描述符 */ int arg; /* 用於ioctl調用的參數 */ int status; /* 系統調用的返回值 */ /* 打開聲音設備 */ fd = open("/dev/dsp", O_RDWR); if (fd < 0) { perror("open of /dev/dsp failed"); exit(1); } /* 設置采樣時的量化位數 */ arg = SIZE; status = ioctl(fd, SOUND_PCM_WRITE_BITS, &arg); if (status == -1) perror("SOUND_PCM_WRITE_BITS ioctl failed"); if (arg != SIZE) perror("unable to set sample size"); /* 設置采樣時的聲道數目 */ arg = CHANNELS; status = ioctl(fd, SOUND_PCM_WRITE_CHANNELS, &arg); if (status == -1) perror("SOUND_PCM_WRITE_CHANNELS ioctl failed"); if (arg != CHANNELS) perror("unable to set number of channels"); /* 設置采樣時的采樣頻率 */ arg = RATE; status = ioctl(fd, SOUND_PCM_WRITE_RATE, &arg); if (status == -1) perror("SOUND_PCM_WRITE_WRITE ioctl failed"); /* 循環,直到按下Control-C */ while (1) { printf("Say something:\n"); status = read(fd, buf, sizeof(buf)); /* 錄音 */ if (status != sizeof(buf)) perror("read wrong number of bytes"); printf("You said:\n"); status = write(fd, buf, sizeof(buf)); /* 回放 */ if (status != sizeof(buf)) perror("wrote wrong number of bytes"); /* 在繼續錄音前等待回放結束 */ status = ioctl(fd, SOUND_PCM_SYNC, 0); if (status == -1) perror("SOUND_PCM_SYNC ioctl failed"); }} 4.4 混音器框架下面再給出一個對混音器進行編程的基本框架,利用它可以對各種混音通道的增益進行調節,其所有的功能都是通過讀寫/dev/mixer設備文件來完成的: /* * mixer.c */#include #include #include #include #include #include /* 用來存儲所有可用混音設備的名稱 */const char *sound_device_names[] = SOUND_DEVICE_NAMES; int fd; /* 混音設備所對應的文件描述符 */int devmask, stereodevs; /* 混音器信息對應的點陣圖掩碼 */char *name; /* 顯示命令的使用方法及所有可用的混音設備 */void usage(){ int i; fprintf(stderr, "usage: %s \n" " %s \n\n" "Where is one of:\n", name, name); for (i = 0 ; i < SOUND_MIXER_NRDEVICES ; i++) if ((1
3. Linux有哪些優點
提到linux的優點,首先就是他的開源,任何人都是可以查看他的源代碼的,這使得他特別的安全,而windows則不開源,所以你要經常的打補丁,修補漏洞之類的。
其次,linux內核優化的好,沒有哪個linux需要右鍵的刷新鍵(紅旗linux是為了國人的使用習慣加的),而windows則不同,微軟的系統非常的復雜,而且運先行效率相對linux要低很多。
雖然linux在桌面市場沒有優勢(只佔1%多一點的佔有率),但他在伺服器行業的地位那是無敵的(20%多)。
linux佔用系統資源特別少,早期的linux,64M內存就能跑的很流暢,這也是他的優勢。
我也只說了幾點我比較了解的方面,而linux的優點還有很多很多,具體的還得再實踐中自己領悟。個人感覺如果完全依賴微軟這種越來越人性化的圖形界面,人就會越來越笨,最終淪為windows的奴隸,這是很可怕的一件事情,呵呵,希望對你有幫助
Linux 的優點很多,其中主要的有以下幾個方面:
eTrade公司的首席技術官John Levin說:「採用Linux操作系統環境比運行與維護UNIX操作系統成本降低幾乎30倍」。
總結一下,主要有以下幾個原因:
低軟體成本:
由於Linux 是開放源代碼的操作系統,除了Kernel免費以外,它的許多系統程序以及應用程序也是自由軟體,可以從網上免費獲得。所以它的軟體成本非常低廉。
低人員培訓成本:
Linux最初是從大學生開發出來的,並由重多的業余愛好者共同豐富和完善它的功能,所以有許多的學生和計算機從業人員,已經具備Linux的技能。而且在低端的PC,PC伺服器上也可使用,而且普及率越來越高。人才儲備比較充足,用人單位可以比較容易地招到這方面的人才。
而且,眾多的企業級的用戶的計算環境是低端(PC,PC伺服器)和高端(UNIX伺服器或中型機甚至大型機)計算機共存,不同廠商的計算機共存(涉及的操作系統可能有Windows,IBM AIX,HP-UNIX,SUN Solaris 等等),這就要求計算機系統的管理和維護人員具有多個操作系統的技能,而如果採用Linux,由於幾乎所有檔次的計算機平台都支持Linux,所以技術人員只需這一種操作系統的培訓就可以了。
低移植成本:
Linux能夠在幾乎所有的計算機平台上運行,包括PC、PC伺服器、UNIX伺服器、中型機、大型計算機上,給用戶的應用軟體在不同的平台之間的移植創造了極為便利的條件。
例如,企業級用戶隨著業務的不斷增長,硬體平台從小型的PC伺服器升級到較高端的UNIX伺服器,甚至更高端的中型機或大型機的情況是極為常見的。過去,由於PC伺服器使用的是Windows 操作系統,而UNIX 伺服器使用的操作系統,中型機和大型機使用的是廠商提供的專用系統,所以在不同的平台之間的軟體移植,可能會發生中間件軟體的版本更換,應用軟體的重新編譯,甚至是應用軟體源代碼的修改,很可能需要比較大的人力物力的投入,而如果採用了Linux 操作系統,不同平台之間的移植就會容易的多。
低管理成本:
同理,由於眾多的企業級的用戶的計算環境是低端和高端計算機共存,不同廠商的計算機共存,如果將操作系統都統一成Linux, 系統的一致性,可降低管理的成本。
同時,任何一個操作系統,都不是完美的,都有一些或大或小的漏洞甚至是錯誤。由於Linux是一個開放源代碼的軟體,有眾多的互聯網上志願開發者在協同工作,使得Linux的功能的完善和漏洞的發現和修改的速度非常快,降低了使用和管理的風險,從而降低了管理的成本。
高性能:
Linux高性能方面的特點表現在Linux系統資源的低佔用率和在高性能運算的優勢。
2.3.2 操作系統的低佔用率
Linux 是由內核(kernel)以及在其之上的實用程序構成的,內核負責管理計算機的各種資源,如處理器和內存,而且必須保證合理地分配資源。當Linux啟動時,內核被調入內存,並一直駐留在內存中直到關機斷電。同大多數的Unix或者類Unix系統類似,Linux的內核在設計的時候被設計的盡量很小,把許多工作交給內核以外的實用程序執行。通過利用Linux這個特點,用戶在安裝Linux的時候可以定製安裝的應用程序的多少,在某些情況下用戶可以僅安裝一個Linux的核心。
2.3.3 Linux在高性能運算方面的優勢
在科學計算和石油勘探等高性能計算領域應用最為廣泛的是高性能計算群集技術(High Performance Computing Cluster,簡稱HPC Cluster)。它是一種並行計算群集的實現方法。近年來,新的HPC系統正迅速崛起,這就是使用運行Linux操作系統的Intel平台的計算機來構建HPC Cluster。由於使用Linux操作系統,通用的硬體平台和標準的網路組件,群集中的各個結點價格相對低廉,擴展容易實現,從而可以得到更高的性價比。Linux 可以運行在PC、PC伺服器上這些傳統上是Windows 操作系統壟斷的領域,在這一領域, Linux的出現好似一股春風吹來,不僅打破了Windows的壟斷,而且它在功能和性能上,都優於Windows操作系統,而更接近與高端的UNIX系統。使低端的用戶,也能享用到某些只有高端系統才能帶來的好處。
2.3.4 高可擴展性、可維護性
Linux具有的可擴展性與可維護性使Linux具有更多的優勢。
可擴展性
標準的Linux實用程序有著大量的功能,開發人員可以通過修改源代碼來進行功能的擴展。Linux可以在廣泛的硬體平台上運行且有類似的介面,用戶可以把應用程序從一個Linux系統很方便的移植到另外一個Linux系統。
可維護性
由於Linux的用戶界面與各個商業版本的UNIX非常相近,幾乎所有的IT技術人員都對其操作界面有相當的了解。此外,由於Linux可以在各種硬體平台上運行,熟悉Linux的技術人員可以很容易地管理多種硬體平台上的應用。目前很多版本的Linux比如紅旗Linux的用戶界面都在模仿Window 進行開發,因此可以方便非IT技術人員實用。
開放的標准
Linux是一個從公開源代碼發展來的操作系統,因此奠定了Linux相較其他諸如Windows、以及各商業版本UNIX操作系統的先天優勢,由於全世界無數的技術人員都可以幫助Linux修改系統錯誤,提升性能,因此到目前Linux已經迅速成為一個相對健壯的操作系統,並且也越來越多的躋身各種的企業關鍵業務之中。
主要是開源和穩定兩大優勢。
通常來說有以下幾點:1.低軟體成本,因為Linux是開源的,所以Linux上眾多的軟體也都是開源且免費的。2.低移植成本,Linux能夠在所有的計算機平台上運行,比如個人PC、專業伺服器、手機等3.高性能高穩定,Linux有來自世界各地的開源貢獻,具備了高穩定和高性能的特點。Linux還有很多的優點就不一一列舉了,總之Linux非常流行,如果你想學習Linux的話,可以去看看《Linux就該這么學》這本書,非常適合初學者學習。
linux優點
1.模塊化程度高
Linux的內核設計非常精巧,分成進程調度、內存管理、進程間通信、虛擬文件系統和網路介面五大部分;其獨特的模塊機制可根據用戶的需要,實時地將某些模塊插入或從內核中移走,使得Linux系統內核可以裁剪得非常小巧,很適合於嵌入式系統的需要。
2.源碼公開
由於Linux系統的開發從一開始就與GNU項目緊密地結合起來,所以它的大多數組成部分都直接來
自GNU項目。任何人、任何組織只要遵守GPL條款,就可以自由使用Linux
源代碼,為用戶提供了最大限度的自由度。這一點也正投嵌入式系統所好,因為嵌入式系統應用千差萬別,設計者往往需要針對具體的應用對源碼進行修改和優化,
所以是否能獲得源代碼
對於嵌入式系統的開發是至關重要的。加之Linux的軟體資源十分豐富,每種通用程序在Linux上幾乎都可以找到,並且數量還在不斷增加。這一切就使設
計者在其基礎之上進行二次開發變得非常容易。另外,由於Linux源代碼公開,也使用戶不用擔心有「後閘」等安全隱患。
同時,源碼開放給各教育機構提供極大的方便,從而也促進了Linux的學習、推廣和應用。
3.廣泛的硬體支持
Linux能支持x86、ARM、MIPS、ALPHA和PowerPC等多種體系結構的微處理器。目前已成功地移植到數十種硬體平台,幾乎能運行在所有流行的處理器上。
由於世界范圍內有眾多開發者在為Linux的擴充貢獻力量,所以Linux有著異常豐富的驅動程序資源,支持各種主流硬體設各和最新的硬體技術,甚至可在沒有存儲管理單元MMU 的處理器上運行,這些都進一步促進了Linux在嵌入式系統中的應用。
4.安全性及可靠性好
內核高效穩定。Linux內核的高效和穩定已在各個領域內得到了大量事實的驗證。
Linux中大量網路管理、網路服務等方面的功能,可使用戶很方便地建立高效穩定的防火牆、路由器、工作站、伺服器等。為提高安全性,它還提供了大量的網路管理軟體、網路分析軟體和網路安全軟體等。
5.具有優秀的開發工具
開發嵌入式系統的關鍵是需要有一套完善的開發和調試工具。傳統的嵌入式開發調試工具是在線模擬器(In Circuit Emulator,ICE),它通過取代目標板的微處理器,給目標程序提供一個完整的模擬環境,從而使開發者能非常清楚地了解到程序在目標板上的工作狀態,便於監視和調試程序。在線模擬器的價格非常高,而且只適合做非常底層的調試。如果使用的是嵌人式Linux,一旦軟硬體能支持正常的串口功能,即使不用在線模擬器,也可以很好地進行開發和調試工作,從而節省了一筆不小的開發費用。嵌入式Linux為開發者提供了一套完整的工具鏈(Tool Chain),能夠很方便地實現從操作系統到應用軟體各個級別的調試。
6.有很好的網路支持利文件系統支持
Linux從誕生之日起就與Inter密不可分,支持各種標準的Inter網路協議,並且很容易移植到嵌入式系統當中。目前,Linux幾乎支持所有主流的網路硬體、網路協議和文件系統,因此它是NFS的一個很好的平台。
另一方面,由於Linux有很好的文件系統支持(例如,它支持Ext2、FAT32、romfs等文件系統),是數據各份、同步和復制的良好平台,這些都為開發嵌入式系統應用打下了堅實的基礎。
7.與UNIX完全兼容
目前,在Linux中所包含的工具和實用程序,可以完成UNIX的所有主要功能。
但由於Linux不是為實時而設計的,因而這就成了Linux在實時系統中應用的最大遺憾。不過,目前有眾多的自由軟體愛好者正在為此進行不懈的努力,也取得了諸多成果。
穩定性和高效性:因為 Linux 是由 Unix 發展而來,因此 Linux 與 Unix 有許多相似之處,不只是用戶介面和操作方式,Linux 還繼承了 Unix 卓越的穩定性和高效性。對於使用 Linux 作為操作系統的伺服器,連續運行一年不宕機是相當平常的事情。
低配置要求:Linux 對硬體的要求很低,它可以在數年前的電腦上很流暢的運行。使用 Windows,則需要不斷升級機器的硬體。
免費或者少許費用:Linux 基於 GPL,因此任何人可以免費使用或者修改其中的原代碼。只有在選擇某些廠商製作的 Linux 的發行版時,才會需要一點點費用。
強大的支持:大量的 Linux 愛好者會進行交流討論,並且開發分享一些好的軟體,有非常開放的使用氛圍。
安全性:Linux 擁有相當龐大的用戶和社區支持,因此能很快發現系統漏洞,並迅速發布安全補丁。
真正的多用戶:Linux 實現不同的用戶共同登錄系統,並且資源分享比較公平。而不是像 Windows 那樣的偽多用戶操作系統,如果需要登錄更多的用戶,要麼退出當前用戶,要麼向微軟購買多用戶授權。
Linux 還有許多其它優點,如強大的網路支持、方便的控制台操作等等,雖然整體上而言 Linux 做得很好,但它依然還是存在一些不足之處。
Linux 的缺點:
沒有特定的支持廠商:因為 Linux 上面的軟體都是免費發行的,所以自然不會有售後服務之類的支持。
圖形界面不夠好:這恐怕是影響 Linux 桌面端普及的最重要原因了。但隨著時間的流逝,X-window 也變得越來越好用,越來越優秀了。目前各大 Linux 發行版,都能很好地做為桌面端計算機使用。
Redhat認證是由伺服器系統領域著名的廠商--Redhat公司推出的。紅帽認證分為三個層次,初級的RHCT(紅帽官方在2011年1月1號,取消RHCT的考試,改為RHCSA),中級的RHCE,高級的RHCA。另外在2005年,紅帽又推出了一個新的安全領域的高級認證:RHCSS。
RHCSA,是紅帽認證系統管理員的簡稱。它是Red Hat的入門級認證,通過此項認證表明你可以獨立完成Red Hat Linux 本地客戶的配置,包括安裝調配Linux的本地使用、本地網路客戶端和本地系統的排除。
RHCE,是Red Hat認證工程師的簡稱。要獲得這個認證,必須通過Red Hat公司的考試,而這個考試被業界認為是最嚴格的IT認證考試,而這個認證也被稱為是CCIE並列最好的IT認證。
RHCE已經在Linux認證領域的高端贏得了應有的地位。可以說獲得RHCE已經成為Linux使用者勢必要奪取的最具有挑戰性的認證。由於Red Hat在企業中的流行(至少在安裝Linux的企業中80%使用 Red Hat),在學習具體應用中用到的Linux技能時完全可以通過認證掌握很多有用的知識。
國際上權威的認證雜志Certification Magazine,早在2002年的一個對熱門IT認證質量進行的獨立調查中得出,RHCE認證在總體質量、教學質量和考試質量上都是第一名。
著名的IT認證網站每年都會對最熱門的IT認證進行排名。它的權威評論家Becky Nagel在2002將RHCE排在10個最熱門的認證中的第六位,在2003年10個最熱門的認證中將RHCE排在第三位,2004年RHCE排名第五位,2005年排名第三位,而2006年不僅連續第5年入榜,更躍居排行榜第一位。他對RHCE如此評論:"如果您想證明您具備最高等級的Linux水平,毫無疑問,您應當選擇RHCE。贏得這樣的評價,並不僅是因為它是由Linux業界的領導者推出的,而是由於獲得這個認證必須通過一個嚴格的測試應試者實際技能水平的試驗考試。這不是一個靠死記硬背能通過的考試。去年我們這樣評價,今年我們還是這樣評價:如果您是一位RHCE,您應該對您的能力充滿自信。"
而紅帽企業級Linux產品的推出,更進一步提升了RHCE的價值。無論是過去獲得RHCE認證的,還是將來准備參加RHCE認證的技術人員來講,這都是一個令人振奮的消息!因為在過去,RHCE只是代表Linux領域頂級認證。隨著企業級Linux替代原來在大公司里處於核心地位的Unix系統,RHCE認證將成為IT領域的黃金認證,而RHCE也將成為大公司頂級技術人員的代名詞。
RHCA,2004年Red Hat又推出一個新的認證:Red Hat認證架構師(Red Hat Certified Architect,簡稱:RHCA),是Red Hat最高級別的認證,包括5門考試:EX333 網路服務安全管理;EX401 系統管理及部署;EX423 目錄服務及認證;EX436 企業級存儲管理;EX442 系統優化及調整。每門考試都有相應的對應的培訓(具體見後)。考生必須通過所有上述5門考試才能獲得證書。要參加RHCA考試,考生必需已經獲得Red Hat認證工程師(RHCE)證書。
RHCSS,紅帽認證安全專家(Red Hat Certified Security Specialist)也是RHCE的後續認證,它對企業級Linux的安全管理進行專門考核,目前尚未在國內推廣。
優點:開源 穩定 性能強大 靈活
缺點:入門門檻高
個人感覺前者的優點是對硬體要求要低一些,幾乎所有軟體都是正版免費的,界面可根據自己的愛好和操作習慣隨意設置,至於後者的缺點可去網上查查
怎樣選擇文、理科?
1、興趣。興趣是學習的最大動力,無論選文、選理,興趣是第一前提。舉個例子,2001年高考文科狀元郝煜在接受采訪時說:「我的強項是理科,但我從小鍾愛文科,並一直保持到高中,所以我選了文科並取得成功。」因此若你在生活中對某方面感興趣,很關注或上某科課時比較有精神,就可以考慮選這方面的學科。總之永遠把興趣放在第一位,一定是對的。
2、特長。特長是學習的推進劑。它將使你的學習得心應手,在競爭上勝人一籌,是文理科選擇的重要依據。那麼怎樣發現自己的特長(天賦)呢?如果你對某科感覺特別好,或用相同的時間得到的效果比起其它科更好,或以少量時間獲得的效果與其它科學花費多時間獲得的效果相當或更好,如果你自身的某些特長與某科的聯系很密切,都說明你有學習這一科的特長和能力。你就應該考慮,哪一科能更好地發揮和促進你的特長的發展。
3、成績:成績是此次選擇的最實際的依據。所以了解自己各科成績的確切情況是非常重要的。政治組吳老師說到:同學們非常有必要去查閱自己各科成績,以及文綜、理綜成績的排名,並作具體分析比較,看自己哪科更具競爭力。了解下面三科在文理科選擇中至關重要的作用,很是關鍵。
語文:作為各科學習的基礎,與每科都有密切聯系,相比之下,語文與文科的聯系更大,所以語文比較好,文科又比理科稍微好的宜選文科。但若理比文好,則選理也具優勢,因為大部分理科生語文並不強,所以語文好,可以使自己的競爭力提高一個檔次。(來自語文組老師的意見)
數學:文科、理科的主要學科,在促進競爭力上與語文相當,但理科對數學的要求更高。當然數學對文科的某些問題(如地理上的溫度、太陽高度等)的解決也有重要作用。(來自數學組老師的意見)
英語:雖然在高中其地位與語、數相當,但到大學是地位最高的,不管學什麼,英語是必備、必修的學科,英語成績好,可以使你對文理科的選擇較自由些。
4、理想:每個人都有理想,而且它可能是你的奮斗目標。那麼選擇與自己的理想接近的學科,將對此學科的學習起促進作用。比如,你想成為企業家,則文科與這理想更接近,學習起文科來就可能更積極,更主動,學習成績也就可能更出色。
5、社會:觀察、分析社會趨勢,了解社會對人才的需求,因為此次文理科選擇不光為了考好高考,從長遠上看,還要要為自己的未來作好打算,打好基礎。
總之,每一個同學都應根據自己的實際情況,認真分析,切不可由於某些不良的客觀原因而作出錯誤的選擇,誤已一生。這樣的例子我們一中舉不勝舉。
一是它的穿透力很強不易損壞物體,而且它在兩萬赫茲以上,不會影響到人們的正常工作。
二是他的傳播速度快。
應用在醫療中,如b超.還運用在探測上,如聲納,超聲波雷達,金屬探傷儀等。
4. Linux設備驅動開發入門與編程實踐的目錄
第1章嵌入式Linux系統開發概述
1.1嵌入式系統概述
1.1.1你身邊的嵌入式系統
1.1.2什麼是嵌入式系統
1.1.3嵌入式系統的發展
1.1.4嵌入式系統市場規模
1.1.5嵌入式系統發展趨勢和面臨的挑戰
1.2嵌入式操作系統
1.2.1嵌入式操作系統的特昌蘆點
1.2.2嵌入式操作系統發展概述
1.2.3Linux操作系統特點
1.2.4嵌入式Linux系統的特點
1.2.5國外嵌入式Linux發展現狀
1.2.6國內嵌入式Linux發展現狀
1.3ARM處理器平台介紹
1.3.1嵌入式處理器特點與分類
1.3.2ARM處理器介紹
1.3.3ARM體系結構
1.4嵌入式Linux的體系結構分析
1.4.1嵌入式系統的體系結構
1.4.2硬體抽象層的Linux
1.5基本編輯器vi的使用
1.5.1進入和退出vi
1.5.2vi的基本編輯命令
1.5.3vi的高級編輯命令
1.6高級編輯器Emacs的使用
1.6.1Emacs的啟動與退出
1.6.2Emacs的基本操作
1.6.3Emacs的高級命令
1.7編譯器GCC的使用
1.7.1GCC簡介
1.7.2GCC的編譯過程
1.7.3GCC的常用模式
7.4GCC的常用選項
1.7.5GCC的警告功能
1.8調試器GDB的使用
1.8.1GDB的調試過程
1.8.2GDB的基本命令
1.8.3GDB的高級命令
1.9Make工程陸迅枯管理器
1.9.1Make管理器簡介
1.9.2Makefile的描述規則
1.9.3一個簡單示例
1.9.4Make如何工作
1.9.5指定變數
1.9.6自動推導規則
1.9.7另類風格的Makefile
1.9.8清除工作目錄過程文件
1.10本章小結
第2章嵌入式Linux內核分析與移植
2.1Linux內核版本
2.1.1日新月異的Linux內核版本
2.1.2Linux2.4內核特性
2.1.3Linux2.6內核針對嵌入式系統的改進
2.2Linux操作系統內核結構分析
2.2.1Linux核心源程序的文件組織結構
2.2.2Linux的內核組成
2.2.3Linux內核進程管理工作機制
2.2.4Linux內存管理工作機制
2.2.5Linux虛擬文件系統工作機制
2.2.6進程間通信
2.3搭建嵌入式Linux系統開發環境
2.3.1嵌入式平台介紹
2.3.2嵌入式Linux系統的組成及設計步驟
2.3.3嵌入式Linux開發工具鏈
2.4Linux內核配置基礎
2.4.1Linux內核所支持的配置方式
2.4.2makemenuconfig配置方法
2.4.3Linux2.4內核配置文件config .in介紹
2.4.4Linux2.6內核Kconfig文件的用法
2.4.5Kconfig文件配置實例
2.5Linux內核配置選項
2.5.1Generalsetup
2.5.2Loadablemolesupport
2.5.3Processortypeandfeatures
2.5.4Networkingsupport
2.5.5DeviceDrivers
2.6Linux內核編譯基礎
2.6.1Linux內核編譯基本步驟
2.6.2Rules.make文件用法
2.6.3Makefile配置文件的用法
2.6.4配置、編譯Linux內核命令說明
2.6.5Linux內核配置編譯實例
2.7Linux內核移植
2.7.1Bootloader簡介
2.7.2引導程序原理
2.7.3內核移植及代碼分析
2.7.4VIVI結構分析
2.7.5VIVI移植實現
2.8本章小結
第3章Linux設備驅動程序開發概述
3.1Linux系統設備概述
3.1.1字元設備
3.1.2塊設備
3.1.3網路設備
3.1.4Linux設備驅動程序的共性
3.2設備驅動程序的概念
3.3設備驅動程序與內核的介面
3.4內核為驅動程序提供的支持
3.4.1內存分配函數
3.4.2DMA
3.4.3I/O埠
3.4.4列印函數
3.5主要數據結構
3.5.1structdevicestruct
3.5.2structfileoperations
3.5.3structinode
3.6模塊化的概念
3.7內存管理問題
3.7.1Linux內核對內存的管理方早洞法
3.7.2kmalloc()和kfree()
3.7.3面向頁的分配技術
3.7.4vmalloc()和相關函數
3.8中斷響應和處理
3.8.1中斷處理機制
3.8.2中斷處理的數據結構
3.8.3中斷處理中的3個重要概念
3.8.4申請和釋放中斷
3.8.5自動檢測中斷號
3.8.6快/慢速中斷處理
3.8.7實現中斷處理程序
3.8.8驅動程序下半部的設計
3.8.9安裝共享的處理程序
3.9I/O埠
3.10DMA處理
3.11時間流
3.11.1時鍾的申請與釋放
3.11.2實現延遲
3.11.3任務隊列
3.12編寫、編譯和調試
3.13本章小結
第4章Linux字元設備驅動程序開發
4.1Linux字元設備驅動程序結構
4.2字元設備驅動的相似點
4.3主設備號和次設備號
4.4字元設備驅動程序的組成
4.5字元驅動程序模型
4.6可靠性機制
4.7文件操作
4.8字元設備驅動程序中用到的主要數據結構
4.9字元設備的注冊和注銷
4.10使用內存和讀寫I/O埠
4.11字元設備驅動程序中用到的主要函數
4.12chardevxxx設備的驅動程序設計
4.13Linux2.6內核下的字元設備驅動介紹
4.13.1cdev結構體
4.13.2分配和釋放設備號
4.13.3file_operations結構體
4.13.4字元設備驅動模塊載入與卸載函數
4.13.5字元設備驅動的file_operations結構體中成員
4.14globalmem設備驅動
4.14.1頭文件、宏及設備結構體
4.14.2載入與卸載設備驅動
4.14.3讀寫函數
4.14.4seek函數
4.14.5globalmem的ioctl()函數
4.14.6ioctl()命令
4.14.7預定義命令
4.14.8使用文件私有數據
4.14.9globalmem驅動在用戶空間的驗證
4.15本章小結
第5章基於DSP的PCI圖像採集卡驅動程序
5.1PCI匯流排介紹
5.1.1PCI匯流排概述
5.1.2PCI局部匯流排概述
5.1.3PCI局部匯流排的特點
5.1.4PCI匯流排信號
5.1.5PCI匯流排命令
5.1.6PCI匯流排配置空間
5.1.7PCI匯流排配置過程
5.1.8PCI匯流排的傳輸控制
5.2DSP圖像卡的PCI介面設計
5.2.1系統結構介紹
5.2.2PCI2040的基本特點
5.2.3PCI2040晶元的功能單元
5.2.4PCI2040配置流程
5.2.5PCI匯流排與DSP的介面實現
5.2.6串列E2PROM的初始化
5.3DSP圖像卡驅動程序實例分析
5.3.1主要的數據結構
5.3.2驅動程序流程
5.3.3初始化設備模塊
5.3.4打開設備模塊
5.3.5數據讀寫和控制信息模塊
5.3.6中斷處理模塊
5.3.7釋放設備模塊
5.3.8卸載設備模塊
5.4本章小結
第6章音頻介面設計與Linux驅動程序
6.1嵌入式音頻系統簡介
6.1.1S3C2410微處理器簡介
6.1.2S3C2410微處理器的結構框圖及其特性
6.1.3系統設計概述
6.1.4系統時鍾電路
6.1.5S3C2410存儲控制器介紹
6.1.6SDRAM電路
6.1.7Flash緩沖電路設計
6.1.8NORFlash電路
6.1.9NANDFlash介面電路
6.1.10IIS數字音頻電路
6.1.11串口電路
6.1.12JTAG介面電路
6.1.13LCD和觸摸屏介面電路
6.2UDA1341TS晶元設備驅動程序設計
6.2.1UDA1341TS晶元介紹
6.2.2驅動程序中file_operations數據結構
6.2.3驅動程序的載入和卸載
6.3SOUND驅動的實現
6.3.1SOUND設備的打開和釋放
6.3.2定義SOUND設備的讀寫函數
6.3.3SOUND設備的控制操作處理
6.3.4SOUND設備驅動程序的其他部分
6.3.5Mixer驅動的實現
6.4本章小結
第7章顯示設備介面設計與Linux驅動程序
7.1嵌入式顯示系統簡介
7.2顯示驅動的基礎與原理
7.2.1時序信號
7.2.2TFTLCD的驅動技術
7.2.3TFTLCD驅動電路
7.2.4像素值的屬性
7.2.5像素深度、像素值與顏色的映射關系
7.2.6像素值與顯示內存的映射關系
7.2.7調色板的原理
7.2.8調色板的作用
7.2.9彩色LCD顯示驅動的原理
7.3軟、硬體平台簡介
7.3.1硬體開發平台
7.3.2軟體平台
7.3.3軟體開發環境
7.4基於PXA255的顯示功能的硬體實現
7.4.1PXA255處理器介紹
7.4.2PXA255的LCD控制器的特點
7.4.3LCD控制器的使用
7.4.4LCD控制寄存器配置
7.4.5設定DMA通道
7.4.6Sony彩屏的特性
7.4.7LCD與處理器的硬體連接方案
7.5顯示驅動開發介紹
7.5.1顯示驅動與字元設備的關系
7.5.2顯示驅動的發展
7.5.3當前顯示驅動的不足
7.6基於PXA255的顯示驅動的實現
7.6.1顯示驅動的系統分析
7.6.2驅動上層文件的功能
7.6.3驅動底層文件的功能
7.6.4驅動程序底層文件實現的基礎
7.7基於PXA255的顯示功能的軟體方案
7.7.1上層文件的實現
7.7.2底層文件的實現方案
7.7.3驅動底層文件的實現
7.7.4針對XScale架構中其餘處理器的移植
7.8本章小結
第8章ARMLinux塊設備驅動程序開發
8.1塊設備驅動程序開發概述
8.1.1塊設備特點
8.1.2塊設備基於緩沖區的數據交換
8.1.3塊設備讀寫請求
8.1.4塊設備驅動程序模型
8.1.5基於內存的塊設備驅動程序
8.2Linux塊設備驅動結構
8.2.1block_device_operations結構體
8.2.2gendisk結構體
8.2.3request與bio結構體
8.3塊設備驅動主要函數
8.3.1塊設備驅動程序的注冊與注銷
8.3.2Linux塊設備驅動模塊載入與卸載
8.3.3塊設備的打開與釋放
8.3.4塊設備驅動的ioctl函數
8.3.5塊設備驅動I/O請求處理
8.4RAMDISK驅動開發實例
8.4.1RAMDISK的硬體原理
8.4.2RAMDISK驅動模塊載入與卸載
8.4.3RAMDISK設備驅動block_device_operations及成員函數
8.5IDE硬碟設備驅動開發實例
8.5.1IDE硬碟設備原理
8.5.2IDE硬碟設備驅動block_device_operations及成員函數
8.5.3IDE硬碟設備驅動I/O請求處理
8.5.4在內核中增加對新系統IDE設備的支持
8.6本章小結
第9章嵌入式Linux網路設備驅動程序開發
9.1嵌入式乙太網基礎知識
9.1.1乙太網技術及其嵌入式應用
9.1.2嵌入式系統中主要處理的網路協議
9.1.3ARP(AddressResolutionProtocol)地址解析協議
9.1.4IP(InternetProtocol)網際協議
9.1.5TCP(TransferControlProtocol)傳輸控制協議
9.1.6UDP(UserDatagramProtocol)用戶數據包協議
9.2基於CS8900A晶元的設備驅動設計
9.2.1CS8900A晶元結構
9.2.2CS8900A晶元特性
9.2.3CS8900A晶元工作原理
9.2.4CS8900A晶元工作模式
9.2.5網路設備驅動程序基本結構
9.3基於Linux的網路設備驅動開發常用的數據結構
9.3.1數據結構structnet_device
9.3.2數據結構structsk_buff393
9.4網路驅動程序的實現模式及系統調用方法
9.4.1網路驅動程序的實現模式與模塊化
9.4.2內存獲取與釋放
9.4.3鏈路狀態改變系統調用
9.4.4與網路層交互數據包的函數
9.5網路驅動程序的基本方法
9.5.1網路驅動程序的結構
9.5.2初始化(Initialize)
9.5.3打開(open)
9.5.4關閉(close)
9.5.5發送(hard_start_xmit)
9.5.6接收(reception)
9.5.7中斷處理(interrupt)
9.5.8硬體幀頭(hard_header)
9.5.9地址解析(XARP)
9.5.10參數設置和統計數據
9.5.11多播(set_multicast_list)
9.6本章小結
第10章嵌入式LinuxUSB驅動程序設計基礎
10.1USB匯流排協議背景知識
10.1.1USB協議的產生
10.1.2USB的特點
10.1.3USB的廣泛應用
10.1.4USB在嵌入式設備中的應用
10.1.5計算機常用外部匯流排比較
10.2USB匯流排技術介紹
10.2.1USB系統拓撲結構
10.2.2USB匯流排邏輯結構
10.2.3USB匯流排特性介紹
10.2.4USB匯流排電氣機械特性
10.2.5USB的即插即用特性
10.2.6魯棒性的實現
10.2.7USB電源管理
10.2.8匯流排通道
10.2.9傳輸協議
10.2.10傳輸類型
10.2.11設備框架
10.2.12USB主機協議
10.3LinuxUSB子系統結構
10.3.1文件系統
10.3.2Linux中USB子系統的軟體結構及實現
10.3.3LinuxUSB內核的主要數據結構
10.3.4USB內核函數介面分析
10.4本章小結
第11章USB介面系統軟體設計
11.1USB系統軟體設計概述
11.1.1主機端設備驅動程序
11.1.2主機控制器驅動程序
11.1.3設備端驅動程序
11.1.4數據管道和數據塊結構
11.2USB設備端軟體的開發
11.2.1USB設備通用模塊的軟體開發
11.2.2USB設備協議模塊的軟體開發
11.2.3控制端點處理程序
11.2.4協議層程序
11.3USB主機端軟體開發
11.3.1Linux內核對USB規范的支持
11.3.2USB時序
11.3.3主機控制器驅動程序設計
11.3.4主機控制器的初始化和管理
11.3.5傳輸執行和資源調度
11.3.6主機控制器的中斷處理
11.3.7虛擬根集線器
11.3.8主機控制器驅動程序的任務
11.3.9URB在驅動軟體中運作
11.3.10主機端設備驅動程序
11.4本章小結
第12章OTG驅動功能模塊的設計與實現
12.1OTG概述
12.1.1OTG特性簡介
12.1.2A設備事件
12.1.3B設備事件
12.1.4狀態機
12.1.5SRP
12.1.6HNP
12.2設備模塊的設計與實現
12.2.1USB設備的狀態
12.2.2OTG驅動功能模塊的設計
12.2.3ISP1761結構
12.2.4HAL的設計和實現
12.2.5HCD的設計和實現
12.2.6USBD介面模塊
12.2.7ISP1761讀寫操作模塊
12.2.8HCD初始化模塊
12.2.9中斷管理模塊
12.2.10根集線器模塊
12.2.11數據傳輸模塊
12.2.12設備模塊的設計和實現
12.2.13OTGFSM的設計和實現
12.3本章小結
5. linux的依賴包有何用
Linux系統和其他操作系統一樣,都是模塊化的設計,也就是說功能互相依靠,有些功能需要一些其他功能來支撐,這樣可以提高代碼的可重用性:
大部分依賴包都是一些庫文件,有動態庫也有靜態庫,一個程序的依賴包如果沒有安裝,只安裝了這個程序本身是不能使用。對於這個程序A來說,它需要依賴一些程序,這些程序本身有些功能可以完成A的部分操作,因為這些依賴程序已經寫好了功能,不需要A程序再單獨寫一遍相應的功能,於是就可以借用這些依賴程序。
大體就是這樣,正如linux c編程中的數學庫等,libm.so庫文件中就定義了一些數學運算等。大體就是這樣~~
Gooood luck and 國慶快樂~~~
6. 用QT做一個基於LINUX跨平台播放器的一般步驟
ACE全稱adaptive communication enviroment,是一套C++的通信庫。它提供了socket/threading/memory management等多種系統調用的面對對象的wrapper,使C++通信軟體開發更加簡單。
ACE最帥的特點:跨平台!!!!!!ACE屏蔽了底層平台特定的語義,使用ACE編寫的C++程序,可以在linux/windows/HP-Unix下編譯執行,而且效率很高。曾經做過的一個VOIP項目就是用ACE寫的,那個項目的技術相當復雜,需要用到socket/multi-threading等很多與操作系統聯系緊密的技術,但用了ACE(界面用Qt)後,那個項目源碼可以直接在linux和windows下編譯運行,呵呵,還是相當成功的。項目進行中感到ACE相當成熟,舉一個朋友說Siemens的某些大型工程也是用的ACE。而且,ACE是免費開源的軟體包--不用白不用。
C++ Network Programming就是ACE項目的負責人Schmidt寫的,這位老哥以前是華盛頓大學的副教授,主要研究領域是軟體工程(他寫了不少關於pattern的文章和書),現在貓到UC Irvine去了,好象還是副教授(要這哥們在中國,早應該成教授了吧)。這兩本書主要介紹了ACE的使用,也涉及了部份設計方面的內容。第一卷主要介紹ACE的基本功能和使用,第二卷則偏重通訊軟體中的design pattern。搞通信軟體開發的兄弟們絕對應該看看此書。
另外也有人推薦把ACE作為學習C++的範例來學習,呵呵,這就是個人喜好的問題了...總的來說ACE的代碼風格還是很不錯的--比STL那些天書好看些,呵呵。
Q: 什麼是ACE或者ACE2插件?
A: 如果把普通的插件比作一棵棵互不關聯的小樹, 那麼ACE庫或者ACE2庫就是一棵大樹干,所有基於ACE的插件就是長在上面的樹枝. 共有的部分都被集成到一起,因此代碼非常短小和快速,而且穩定.ACE2是用來取代ACE的版本,雖然有一些插件還未能從ACE轉換到ACE2,但是ACE2系的插件現在可說代表了wow插件的最高水平.
ACE2是為其他倚賴ACE2才能運行的插件提供庫支持的一個庫文件,本身不具備任何功能。
如BigWigs[ACE2]就說明BigWigs這個插件需要ACE2的支持。
使用方法:解壓縮以後無論是ACE2還是!LIB都直接放入Interface\Addons裡面就可以了。
ACE 類插件因為短小精悍 面向對象 有越來越多的插件開始以其作為編寫庫
目前已經發展到 ACE2
ACE2運行庫開發組都是提倡直接內嵌的,完全沒有必要單獨提出來!沒錯如果你有10個內嵌了ACE2的插件,開始載入的時候確實會載入10個副本的ACE2導致Warmup顯示內存佔用偏大,但是在下次的碎片回收中,多餘的ACE2副本都會被清除,只留下一個駐留內存。如果有新舊多個版本,則會自動選擇最新的版本駐留。所以說,Warmup的數據,不能正確的反映出ACE2插件的實際內存使用。Warmup的作者本身也是ACE開發團隊的成員,現在由於Warmup導致的一些對ACE2的誤解,這傢伙想必也是哭笑不得了,呵。
作為ACE2插件的使用者,完全沒有需要去考慮運行庫的版本更新等等問題,這是ACE2標準的一個重要精神,是ACE2開發初始就持有的初衷!所有的ACE2運行庫,都是可直接內嵌、自動管理版本,不需要使用者進行任何管理干預的!
ACE2作為wow插件界的技術先鋒,為插件作者提供了一個良好的開發平台,也切實地為玩家帶來了易用、強大而低資源佔用的優秀插件。希望大家不要為過往的成見和一些人的誤導而錯失了如此優秀的插件!
談運行庫而色變,完全是沒有必要的。ACE2的優秀運行庫(包括ACE2和基於ACE2標準的CandyBar, Dewdrop, Metrognome, Compost, ParserLib等等)不但是簡化了插件的開發,優化了代碼,也對降低插件資源佔用作用。再加上ACE開發社區作者們強烈的優化意識,可以負責的說,ACE2的插件比其他插件絕對更省資源!
本質上來說, Qt是一個跨平台的C++應用程序開發框架,有時又被稱為C++部件工具箱。Qt被用在KDE桌面環境、Opera、GoogleEarth、Skype、Adobe Photoshop Album和VirtualBox的開發中。它是諾基亞(Nokia)的QtDevelopment Frameworks 部門的產品。使用 Qt,只需一次性開發應用程序和用戶界面,無須重新編寫源代碼,便可跨不同桌面和嵌入式操作系統部署這些應用程序。
基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等圖形界 面庫和 Windows 平台上的 MFC,OWL,VCL,ATL 是同類型的東西,但是 Qt 具有下列優點:
a) 優良的跨平台特性:
Qt支持下列操作系統: Microsoft Windows 95/98, Microsoft Windows NT, Linux,Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD,BSD/OS, SCO, AIX, OS390,QNX 等等。
b) 面向對象
Qt 的良好封裝機制使得 Qt 的模塊化程度非常高,可重用性較好,對於用戶開發來說是非常 方便的。 Qt 提供了一種稱為 signals/slots 的安全類型來替代 callback,這使得各個元件 之間的協同工作變得十分簡單。
c) 豐富的 API
Qt包括多達 250 個以上的 C++ 類,還替供基於模板的 collections, serialization, file, I/Odevice, directory management, date/time 類。甚至還包括正則表達式的處理 功能。
d) 支持 2D/3D 圖形渲染,支持 OpenGL
e) 大量的開發文檔
f) XML 支持
最近諾基亞發布了Qt 4.6——最新版的跨平台應用程序和用戶界面框架。Qt 4.6 對全新平台提供支持,具有強大的全新圖形處理能力並支持多點觸摸和手勢輸入,讓高級應用程序和設備的開發過程變得更加輕松和快樂。
諾基亞應用服務和框架副總裁Sebastian Nystrom說:「不論是什麼樣產品設計或開發平台,Qt 4.6的發布對開發人員來說都是一件令人興奮的事。」
「開發人員可以輕而易舉地為桌面平台或設備(包括數億部基於Symbian 和 Maemo系統的設備)開發出具有視覺美感和網路連接功能的應用程序。」
Nystr?m補充說:「開發人員將非常喜歡使用Qt直觀的編程界面,快速開發出功能強大、外表美觀的應用程序。」
更多平台
Qt4.6 首次包含了對Symbian 平台的支持,並在其所支持的平台中新增了 Windows 7、Apple Mac OS 10.6 (雪豹)和即將上市的Maemo 6。此外還為實時操作系統QNX 和 VxWorks提供了網路社區支持。對Maemo 5的支持目前也已進入研發階段,其技術預覽版第二版已於今日發布。
Qt 對 Symbian 和 Maemo 的支持首次為開發人員創造了使用同一代碼庫同時針對這兩個平台進行開發的機會。能夠跨平台分享代碼就意味著開發人員所開發的應用程序上市的速度將更快,影響的設備用戶群將更廣。
Qt Mobility項目下的全新Qt API技術預覽版也於今日同時發布。這些跨平台的API為開發人員提供了多種功能,如導航類設備的定位功能,以及信息發送和接收、聯系人和網路連接管理等。
外觀更炫
Qt 4.6是在4.5圖形增強功能的基礎上創建的,進一步強化了這些圖形功能,添加了全新的動畫框架(Animation Framework)——包括直觀的狀態機功能——以及全新的高級圖形功能,如不透明、陰影、閃光和濾鏡等。
使用手指
Qt4.6最令人興奮的新功能之一就是可以創建多點觸摸應用程序。這種全新的基於多觸點和手勢的輸入法(如輕觸和動力滾動)使Qt4.6框架的功能更為強大,用戶可以通過觸覺以動態的方式與應用程序和設備進行互動。
性能更強
傳統軟體開發觀點認為高級用戶界面功能的獲得通常是以性能嚴重受損作為代價的。Qt 4.6 對此觀點提出了挑戰,為此投入大量工作,既要獲得最佳性能,又要能讓開發人員所開發的產品達到用戶所要求的「令人驚嘆」的效果。
性能提升主要包括:一個經過高度優化、重新編寫的 Qt GraphicsView 渲染演算法、一個全新的 OpenGL 繪圖引擎、WebKit、使用 OpenVG 對 2D 矢量圖形的支持,以及對全新 DirectFB 的支持。
最新工具
在發布 Qt 4.6 的同時,作為 Qt 開發跨平台 IDE 的 Qt Creator 也發布了更新版本。Qt Creator 1.3 和 Qt 4.6共同構成的 Qt SDK,包含了開發跨平台應用程序所需的全部功能。(來自programbbs)
3、用QT能做什麼?
在QT的官方網站談到了15年來取得了的成就,它幫助世界各地和各個行業組織開發出先進的高度創新的應用和設備。
使用Qt,眾多的開發商和公司已經能夠:
● 減少了近50%的開發時間。
● 加速了50%的開發速度由於代碼可維護
● 減少了50%的代碼量
Qt的用戶怎麼說?
● 94%報告說,Qt的滿足或超過其發展的期望
● 92%會向他人推薦使用Qt
● 76%報告因為使用Qt,生產率提高
Qt的應用領域:
有很多出名的例子是都是使用Qt開發的。例如: Arora(一款跨平台的開源網頁瀏覽器)、eva(Linux版QQ聊天軟體)、FreeMat(一個自由開源的數值計算環境和編程語言 )、Ga-Ga(即時通信軟體)、Google地球(Google Earth)(三維虛擬地圖軟體)、ImageVis3D、KDE(著名的桌面環境)、Elibs(一個許多KDE程序都使用的共享庫,如Amarok、K3b、KDevelop、KOffice等)、Last.fm播放器(著名的互聯網音樂社區網站的桌面客戶端)、Motorola A760(UI 以 Qt/Embedded 建構)、MythTV9(開源的數字視頻錄制軟體)、Opera(著名的網頁瀏覽器)、Qterm(跨平台的BBS軟體)、QtExtended、Quantum GIS、Skype(一個使用人數眾多的基於P2P的VOIP聊天軟體)、SMPlayer(跨平台多媒體播放器)、TeamSpeak(跨平台的音效通信軟體) 、Tlen.pl:波蘭人發明的 instant messaging client TOra、VirtualBox(虛擬機軟體)、Xconfig(Linux的Kernel配置工具) 、chmcreator(開源的chm開發工具)…