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