程序員必須知道的電腦知識
作為程序員,必須了解哪些關于計算機的知識呢?接下來由學習啦小編為大家推薦程序員必須知道的電腦知識,希望對你有所幫助!
程序員必須知道的電腦知識:
存儲—-塊設備,文件系統(tǒng),集群文件系統(tǒng),分布式文件系統(tǒng),光纖SCSI,iSCSI,RAID等。
網絡—-以太網,光纖網,蜂窩網絡,WIFI,VLAN等。
計算機體系結構,主要就是CPU指令集。x86,ARM等。
USB協(xié)議。需要知道URB包。
PCI協(xié)議,PCI-E協(xié)議?,F(xiàn)代計算機的外設都是PCI協(xié)議和PCI-E協(xié)議的。顯卡現(xiàn)在全是通過 PCI-E協(xié)議連接到計算機上的。相對來說減少了很多需要學習的知識。搞虛擬化就需要深入掌握PCI協(xié)議。
圖像處理–圖像壓縮,視頻實時編碼等。
3D游戲
關系數(shù)據(jù)庫
NoSQL數(shù)據(jù)庫
分布式操作系統(tǒng)
編譯原理
機器學習–現(xiàn)在大數(shù)據(jù)要用哦!
了解這些領域知識,也包括了解該領域現(xiàn)有的商用硬件、商用軟件和開源軟件。很多時候,你要完成的工作,已經有現(xiàn)成的工具了。你只要使用現(xiàn)成的工具就可以完成任務,不需要進行開發(fā)。有時候,只需要組合現(xiàn)有的工具,寫一些腳本就可以完成任務。
如,我一次要實現(xiàn)一個雙向同步任務。找到了一個優(yōu)秀的開源軟件Unison,編寫一下配置文件就圓滿地完成了任務。不需要編寫任何代碼。
還有一次,要做高可用,用Python調用了幾個開源軟件就輕松實現(xiàn)了。
編寫安裝程序,定制操作系統(tǒng),知道了操作系統(tǒng)的領域知識,寫幾行腳本就可以輕松搞定。
不具備領域知識的人,就可能不得不進行大量無謂的開發(fā),甚至開發(fā)很久之后才發(fā)現(xiàn),這根本就是一條死路。
另外,扎實的領域知識,可以大大提高編程調試、查錯的能力。知道編譯器和編程語言運行時工作原理,就能快速根據(jù)編譯錯誤和警告信息修改代碼。
知道操作系統(tǒng)底層運行機制,就能快速找到運行時錯誤的問題根源。如,有一次我編寫一個windows升級服務程序。它是一個windows服務,需要執(zhí)行dos腳本,這個腳本會替換掉這個windows服務本身。發(fā)現(xiàn)有時腳本執(zhí)行無效,查了一晚上,發(fā)現(xiàn)當windows服務安裝后,第一次啟動就執(zhí)行腳本時就會有權限問題,log都正確,但實際執(zhí)行這個腳本沒有任何效果。但一旦windows服務程序啟動一次之后就ok。這必然是windows操作系統(tǒng)底層安全機制的問題,因為我對Windows內核了解不多,因此花了很長時間才發(fā)現(xiàn)這個問題,并對造成這個問題的根源并不清楚。