一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

計(jì)算機(jī)科學(xué)專業(yè)的同學(xué),你應(yīng)該會(huì)什么

 聯(lián)合參謀學(xué)院 2014-04-04

計(jì)算機(jī)科學(xué),不是計(jì)算機(jī)也不是科學(xué)。這篇文章,建議大一新生好好讀一讀。

你不需要會(huì)以下的任意一種:

  • 做 Flash (人家還有學(xué)藝術(shù)的呢,別搶飯碗)
  • 視頻剪輯(你確認(rèn)你是制片?)
  • Photoshop (你確認(rèn)你會(huì)拍照?)
  • 組裝機(jī)器 (除非你想去電腦城打工)
  • 重裝系統(tǒng) (同上)
  • 修 Windows (同上)
  • 做網(wǎng)頁(yè) (請(qǐng)問你會(huì)設(shè)計(jì)么)

但是,你需要會(huì)很多其他的東西。別忘了,你是計(jì)算機(jī)科學(xué)的學(xué)生。

計(jì)算機(jī)系不應(yīng)該是培養(yǎng)程序員的。程序員是青春飯,35 歲還在繼續(xù)當(dāng)程序員很可能會(huì)被 layoff,而且程序員本身也是沒啥職業(yè)發(fā)展空間的,要不然變成架構(gòu)師,要不然變成管理層,要不然,另尋高就吧。如果只是 follow 學(xué)校的教育,很不幸,35 歲可能會(huì)成為你的一個(gè) gap。

算法和數(shù)據(jù)結(jié)構(gòu)

沒錯(cuò),作為計(jì)算機(jī)系的學(xué)生,這兩門課必須得學(xué)好,否則,不能做一個(gè)合格的程序員,架構(gòu)師雖然不見得非得寫算法,但是總是要可以看懂的吧。

主頁(yè)君的算法學(xué)的很差,而且因?yàn)椴皇菍懗绦虻?,所以沒法說碼農(nóng)需要知道什么算法,但是非碼農(nóng)寫程序的話,基本上在紙上寫一寫畫一畫,分析清楚邏輯,簡(jiǎn)單的算法自己設(shè)計(jì)應(yīng)該沒啥問題。除非你不在紙上分析。

操作系統(tǒng)原理

不是 Windows NT 的操作系統(tǒng)原理。這是個(gè)黑盒子,而且經(jīng)常變,而且設(shè)計(jì)足夠復(fù)雜。這里說的,是 UNIX 的操作系統(tǒng)原理。

需要清楚的是,從計(jì)算機(jī)加電開始,如何進(jìn)行引導(dǎo)操作系統(tǒng),如何加載系統(tǒng)內(nèi)核(提問:A20 line gate 是干什么的),init 如何 bring 各個(gè)服務(wù)啟動(dòng),又是如何初始化虛終端的。

一個(gè)二進(jìn)制文件,如何加載(fork exec, ELF/COFF/a.out 文件如何執(zhí)行)。程序是如何編譯和鏈接的,ld 是咋回事兒,so/dll 是干啥的,和 elf/a.out/exe 有什么區(qū)別。ABI 是什么,如何保持庫(kù)的兼容性,name mangling 是咋整的,為啥 C++ 的兼容性差(或者說,為啥 Windows 里 VC11 編譯的 EXE 調(diào)用 gcc 寫的 C++ DLL 可能會(huì)非法操作,或者說 SunCC 的 C++ 動(dòng)態(tài)庫(kù)和 gcc 里的 C++ 程序不兼容)。最好能夠用手編譯一個(gè)程序(沒說讓你 gcc -o hello hello.c,是讓你用 gcc, as, collect2 之類的自己編譯)。dlopen 之類的咋玩(會(huì)這個(gè)就有可能能繞過 Apple 的審查,用 iOS 的私有函數(shù)哦,記得加密函數(shù)名以及 dlopen 函數(shù)…)。

內(nèi)存是如何管理的,函數(shù)是如何調(diào)用的,參數(shù)如何入棧(一定是右到左么?),內(nèi)核和用戶程序是如何通信的,浮點(diǎn)運(yùn)算是咋回事兒,怎么 cast 浮點(diǎn)到 int …… 恐怕這些不知道,操作系統(tǒng)和計(jì)算機(jī)原理白學(xué)了吧。

說到內(nèi)存管理, malloc() 不是很好,而且有時(shí)候內(nèi)存碎片多了,malloc() 不見得能立即返回,有可能要等很久才返回?;蛘吒纱嗑蛼焖馈?/p>

鎖也是不得不提的。多線程應(yīng)用如何設(shè)計(jì),什么是線程安全,什么樣的函數(shù)不是線程安全的,critical section 是咋回事。

文件系統(tǒng)是怎么設(shè)計(jì)的,inode table 里有什么,最好看看 Linux 的 VFS,最好能自己設(shè)計(jì)個(gè)文件系統(tǒng)。以及為啥要有日志,以及為啥 Windows 98 不正常關(guān)機(jī)需要跑 scandisk。(雖然主頁(yè)君認(rèn)為微軟只是為了惡心一下你而已…)當(dāng)然還有為啥某些文件系統(tǒng)可以恢復(fù)數(shù)據(jù)。

說到恢復(fù)數(shù)據(jù),主頁(yè)君需要提醒一下,XFS 和 HFS+ (Mac OS X)是幾乎沒法恢復(fù)的,要備份!

網(wǎng)絡(luò)

所有機(jī)器現(xiàn)在都聯(lián)網(wǎng)了,以下幾個(gè)協(xié)議說不清楚就不像話了:

  • HTTP
  • DNS
  • TCP
  • IP
  • DHCP
  • ARP

至少得知道這是干啥的吧。至于 TCP,里面的東西挺多的。還有 IP,會(huì)算網(wǎng)絡(luò)是必須的。

如果打算干網(wǎng)絡(luò)工程師,上面的要爛熟于心,以下的東西也得非常清楚:

  • OSPF
  • BGP
  • SNMP
  • CDP
  • RIP (不過這協(xié)議已經(jīng) RIP 了。。。)

順便還得捎帶著搞清楚 IOS 咋玩??紤]到國(guó)內(nèi),也得會(huì)個(gè)華三的配置(神馬 display this 之類的惡心命令)。當(dāng)然設(shè)計(jì)網(wǎng)絡(luò)也是非常非常需要的了。對(duì)了還有 troubleshooting。

至于網(wǎng)絡(luò)開發(fā)——大家都是不少用 C 開發(fā)的吧,那么什么 connect, accept, bind, listen, read, write 之類的當(dāng)然常用了。還有就是 multiplexing 方法,以及 poll() select() 以及 epoll, kqueue 咋玩,否則效率高不了。當(dāng)然也可以用 Python 的 Twisted 寫,也挺方便的。不過也有不少人用 Python 的 socket 直接寫攻擊程序。

數(shù)據(jù)庫(kù)

說實(shí)話,大部分人到最后用數(shù)據(jù)庫(kù)的時(shí)候,只是用個(gè) SQL 而已,而且都不見得寫 SQL 了,流行用 ORM 嘛。至于調(diào)優(yōu),君不見有類人叫做 DBA。CRUD 會(huì)寫了,問題就不大。

當(dāng)然,有興趣做 DBA 的,上面的操作系統(tǒng)原理自然是要非常清楚了。主頁(yè)君并不是非常了解數(shù)據(jù)庫(kù),不敢多說,不過 High Performance MySQL 是個(gè)好書。

Troubleshooting

這活一般是系統(tǒng)管理員干的。主頁(yè)君也是系統(tǒng)管理員。一般來說,以這個(gè)順序?yàn)橹鳎?/p>

  • w/top/free/iostat 看看系統(tǒng)咋了,是 load 高,還是內(nèi)存不夠,還是 IO 卡死
  • netstat -an 看看是不是連接太多,或者 socket 滿了,這個(gè)是用 file descriptor 的
  • dmesg|tail 之類的看看系統(tǒng)日志
  • 看看應(yīng)用日志是不是有報(bào)錯(cuò)
  • 看看數(shù)據(jù)庫(kù)是不是垮了
  • strace/dtrace/truss 之類的看看應(yīng)用是不是鎖死了,基本上到這里就可以知道是什么問題了
  • 如果 strace 還是看不出來,上 gdb 之類看看
  • 如果還是不行,讓它吐個(gè) core dump,接著重啟 app 試試
  • 如果還不行,reboot 總是可以了吧
  • 如果還不行…… 誰開發(fā)的 app 找誰出來 TJJTDS

如果是 Windows Server...

  • 重啟一下
  • 換個(gè)機(jī)器
  • 重裝一下
  • 打微軟電話發(fā) ticket

寫程序

總是要會(huì)寫程序的吧。C 應(yīng)該所有計(jì)算機(jī)系的都學(xué)過。如果沒學(xué) C 直接學(xué)的 C++,只能說學(xué)校傻逼,自己學(xué) C 去,別以為學(xué)會(huì) C++ 了就會(huì) C 了。C 是一定要學(xué)好的,學(xué)好 C (我沒說 MSVC),計(jì)算機(jī)原理應(yīng)該也了解個(gè)一半了。用 Windows 的 C,你只是學(xué)會(huì) Windows API 而已,但是用 UNIX 學(xué) C,你會(huì)學(xué)到 UNIX 的設(shè)計(jì)思想。當(dāng)然你需要知道你編譯出來的程序是怎么跑的,至少得知道程序跑的時(shí)候其實(shí)是沒有類型這回事兒的,全都是 16 進(jìn)制的爛泥而已。

Java 值得學(xué)么?主頁(yè)君也不好說,“企業(yè)級(jí)開發(fā)”,說白了就是把程序員當(dāng)工人而已。

想快速開發(fā)的話,主頁(yè)君推薦用 Python,用 C 開發(fā) Python 擴(kuò)展也是相當(dāng)?shù)姆奖悖部梢园阉俣雀愕牟诲e(cuò)。Python 是個(gè)全功能的語言,不像某些腳本語言,例如 PHP 一樣只是做 Web 好用。當(dāng)然有人會(huì)扯,PHP 也可以做本地程序,比如 PHP 都有 Gtk 綁定……

當(dāng)然大牛都是用什么 Lisp, Scheme, Small Talk, Prolog, Haskell 之類的神級(jí)語言的。

一些別的

別的,自然是 UNIX 了。會(huì)用 UNIX,保證你現(xiàn)在會(huì)的東西,30 年以后還是可以使用。例如 X11 這么爛的協(xié)議都沒有人去改(受虐習(xí)慣了吧), TCP 這么爛的東西也天天在用(30年以后估計(jì)還得用他),ls cd pwd 這些命令大家也都在天天用(廢話)。別的東西難保你 30 年以后還能繼續(xù)用。不過以下的東西,似乎也沒啥大的變化?

  • 洗衣機(jī)
  • 電冰箱
  • 空調(diào)
  • 風(fēng)扇
  • 信用卡

不過 UNIX 這玩意兒也是計(jì)算機(jī)這樣這么多變的東西中幾乎沒變的一種奇跡吧。據(jù)說 Plan 9 比 UNIX 還好,可惜沒見幾個(gè)人用。

計(jì)算機(jī)里,有些東西很 fancy,也很經(jīng)常有新東西出現(xiàn),比如這幾年很火的 Ruby on Rails,NodeJS,NoSQL DB ——這些東西,however,是要依賴于對(duì)計(jì)算機(jī)的 solid understanding 才可以開發(fā)出來的。這些東西很好用,但是,如果不了解他的本質(zhì),很快你就會(huì)淪落為這些東西的奴隸,就變成了它耍你而不是你用它。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    视频一区二区黄色线观看| 99亚洲综合精品成人网色播| 麻豆精品在线一区二区三区| 九九视频通过这里有精品| 欧美午夜视频免费观看| 精品国产亚洲免费91| 91国内视频一区二区三区| 国产精品免费福利在线| 日本一区二区三区黄色| 沐浴偷拍一区二区视频| 在线观看视频日韩精品| 少妇人妻一级片一区二区三区| 99精品人妻少妇一区二区人人妻| 日韩高清一区二区三区四区 | 欧美成人高清在线播放| 国产成人国产精品国产三级| 久热99中文字幕视频在线| 偷拍美女洗澡免费视频| 欧美日韩精品久久亚洲区熟妇人| 麻豆视频传媒入口在线看| 国产欧美日韩精品自拍| 亚洲精品国男人在线视频| 日韩国产中文在线视频| 日韩精品一区二区三区含羞含羞草| 九九热在线视频观看最新| 久久国产精品亚州精品毛片| 在线观看视频成人午夜| 国产又粗又猛又大爽又黄同志| 欧美日本道一区二区三区| 自拍偷女厕所拍偷区亚洲综合| 欧美日韩欧美国产另类| 日韩特级黄片免费在线观看| 蜜桃传媒在线正在播放| 亚洲欧美国产精品一区二区| 黄片在线免费看日韩欧美| 亚洲中文字幕高清乱码毛片| 欧美日韩精品视频在线| 精品al亚洲麻豆一区| 欧美日韩最近中国黄片| 人妻少妇久久中文字幕久久| 欧美日韩成人在线一区|