非科班的java程序员该如何补充计算机基础知识,需要看哪些书?
java比較特殊,畢竟后端扛霸子,想要認(rèn)真學(xué)好java,必須有好的計(jì)算機(jī)基礎(chǔ),可是為什么需要基礎(chǔ)呢?
把這個(gè)問(wèn)題弄明白,要學(xué)哪些基礎(chǔ)知識(shí)就清楚多了。
第一個(gè)問(wèn)題,10個(gè)用戶(hù)使用的系統(tǒng)和1000000個(gè)人使用的系統(tǒng),對(duì)后端來(lái)說(shuō)差別大嗎?
這是很多初學(xué)者弄不清楚的事情。對(duì)前端而已,差別不會(huì)特別大,對(duì)后端來(lái)說(shuō),天壤之別。
不說(shuō)架構(gòu),只說(shuō)服務(wù)器的資源,后端代碼是運(yùn)行在服務(wù)器上,服務(wù)器和pc一樣,同樣是要有cpu,內(nèi)存,硬盤(pán),帶寬的,當(dāng)系統(tǒng)的使用量比較多的時(shí)候,就會(huì)出現(xiàn)性能瓶頸。
內(nèi)存不足,cpu跑滿(mǎn)100%,磁盤(pán)不足等等問(wèn)題,這在很多時(shí)候都交給運(yùn)維去檢測(cè)和處理,開(kāi)發(fā)人員需要懂嗎?
不同的解決方案,帶來(lái)的資源使用率不一樣。
所以后端人員必須做性能優(yōu)化,很多事情,專(zhuān)業(yè)和非專(zhuān)業(yè)的區(qū)別,就在于能不能把事情做好。
從這個(gè)問(wèn)題來(lái)看,你發(fā)現(xiàn)后端需要什么基礎(chǔ)知識(shí)沒(méi)?
計(jì)算機(jī)組成原理,來(lái)告訴你計(jì)算機(jī)的物理機(jī)構(gòu),數(shù)據(jù)如何存儲(chǔ)。
計(jì)算機(jī)操作系統(tǒng)來(lái)告訴你怎么管理內(nèi)存,什么叫進(jìn)程 ,什么叫線程,什么又是io。
計(jì)算機(jī)網(wǎng)絡(luò)告訴你什么是tcp和http,什么是報(bào)文。
這些課程和基礎(chǔ)知識(shí)的作用就是給你更好的認(rèn)知自己編寫(xiě)程序都底層實(shí)現(xiàn)原理,為你解決性能問(wèn)題提供基礎(chǔ)支撐。
第二個(gè)問(wèn)題,數(shù)據(jù)庫(kù)要建索引,btree和hash兩種索引,區(qū)別是什么?各自應(yīng)該用在什么場(chǎng)景。
如果你沒(méi)有數(shù)據(jù)結(jié)構(gòu)的基礎(chǔ),對(duì)btree唯一的認(rèn)知應(yīng)該就是逼數(shù)吧?
hash是什么鬼,hash算法?算什么鬼玩意。
對(duì)這兩個(gè)概念都不清楚的話,能不能做好索引的創(chuàng)建?當(dāng)然能,操作很簡(jiǎn)單,可是創(chuàng)建出來(lái)的索引能不能解決問(wèn)題,讓訪問(wèn)速度更快?
也很簡(jiǎn)單,兩個(gè)索引隨便試唄,這個(gè)不行用那個(gè)。
這就是沒(méi)文化時(shí)候的解決方案,而正確的學(xué)習(xí)方式就是花時(shí)間理解什么是btree,什么是hash,底層如何實(shí)現(xiàn)的,再結(jié)合業(yè)務(wù)場(chǎng)景,去判斷應(yīng)該做什么樣的索引。
第三個(gè)問(wèn)題,為什么用消息隊(duì)列?
什么叫解藕,什么叫內(nèi)聚?生產(chǎn)者消費(fèi)者又是什么意思?
這些是設(shè)計(jì)模式,或者是面向?qū)ο蟮囊恍└拍睢?/p>
有更多的例子可以舉,但歸納下來(lái)就是弄清楚底層構(gòu)建的原理。
算法算一層
操作系統(tǒng)算一層
組成原理算一層
數(shù)電模電單片機(jī)算一層
物理算一層
你能從上到下一層層的逐層分解,互聯(lián)網(wǎng)在你腦袋里就沒(méi)有秘密。
正常而言,學(xué)到組成原理就夠了。
但是,這么一個(gè)龐大的知識(shí)體系,你要學(xué)多久?
而且,真正用到的基礎(chǔ)知識(shí)和工作場(chǎng)景緊密相連,可能只有20%用得到,你只是不清楚是哪20%而已。
結(jié)論如下:
1 計(jì)算機(jī)組成原理,計(jì)算機(jī)操作系統(tǒng),計(jì)算機(jī)網(wǎng)絡(luò),數(shù)據(jù)庫(kù),數(shù)據(jù)結(jié)構(gòu),算法 這是六門(mén)基礎(chǔ)課要學(xué)習(xí)
2 你沒(méi)時(shí)間系統(tǒng)的學(xué)習(xí)一遍,只能去找工作中很大可能用到的,先過(guò)一遍,有基礎(chǔ)概念,以后遇到問(wèn)題的時(shí)候,可以知道歸屬哪個(gè)領(lǐng)域。
怎么知道什么內(nèi)容是可能用到的,請(qǐng)自行搜索騰訊課堂修真院的洗髓換骨營(yíng),縮減到了10%的內(nèi)容。
3 對(duì)于沒(méi)有用戶(hù)量的系統(tǒng)而言,沒(méi)有太多學(xué)習(xí)基礎(chǔ)課程的必要,因?yàn)槟悴恍枰鉀Q這些問(wèn)題。但薪水和你能解決的問(wèn)題是等價(jià)的,你愿意一直只做初級(jí)程序員么?
4 編程思維在基礎(chǔ)課程里都有鍛煉,在工作中也更重要。
---------------------?
作者:learning__java?
來(lái)源:CSDN?
原文:https://blog.csdn.net/learning__java/article/details/90377617?
版權(quán)聲明:本文為博主原創(chuàng)文章,轉(zhuǎn)載請(qǐng)附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的非科班的java程序员该如何补充计算机基础知识,需要看哪些书?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 工行金闪借可以先还利息在还本金吗
- 下一篇: 信用卡刷多少算大额