非科班的java程式設計師該如何補充計算機基礎知識,需要看哪些書?
java比較特殊,畢竟後端扛霸子,想要認真學好java,必須有好的計算機基礎,可是為什麼需要基礎呢?
把這個問題弄明白,要學哪些基礎知識就清楚多了。
第一個問題,10個使用者使用的系統和1000000個人使用的系統,對後端來說差別大嗎?
這是很多初學者弄不清楚的事情。對前端而已,差別不會特別大,對後端來說,天壤之別。
不說架構,只說伺服器的資源,後端程式碼是執行在伺服器上,伺服器和pc一樣,同樣是要有cpu,記憶體,硬碟,頻寬的,當系統的使用量比較多的時候,就會出現效能瓶頸。
記憶體不足,cpu跑滿100%,磁碟不足等等問題,這在很多時候都交給運維去檢測和處理,開發人員需要懂嗎?
不同的解決方案,帶來的資源使用率不一樣。
所以後端人員必須做效能優化,很多事情,專業和非專業的區別,就在於能不能把事情做好。
從這個問題來看,你發現後端需要什麼基礎知識沒?
計算機組成原理,來告訴你計算機的物理機構,資料如何儲存。
計算機作業系統來告訴你怎麼管理記憶體,什麼叫程序 ,什麼叫執行緒,什麼又是io。
計算機網路告訴你什麼是tcp和http,什麼是報文。
這些課程和基礎知識的作用就是給你更好的認知自己編寫程式都底層實現原理,為你解決效能問題提供基礎支撐。
第二個問題,資料庫要建索引,btree和hash兩種索引,區別是什麼?各自應該用在什麼場景。
如果你沒有資料結構的基礎,對btree唯一的認知應該就是逼數吧?
hash是什麼鬼,hash演算法?算什麼鬼玩意。
對這兩個概念都不清楚的話,能不能做好索引的建立?當然能,操作很簡單,可是創建出來的索引能不能解決問題,讓訪問速度更快?
也很簡單,兩個索引隨便試唄,這個不行用那個。
這就是沒文化時候的解決方案,而正確的學習方式就是花時間理解什麼是btree,什麼是hash,底層如何實現的,再結合業務場景,去判斷應該做什麼樣的索引。
第三個問題,為什麼用訊息佇列?
什麼叫解藕,什麼叫內聚?生產者消費者又是什麼意思?
這些是設計模式,或者是面向物件的一些概念。
有更多的例子可以舉,但歸納下來就是弄清楚底層構建的原理。
演算法算一層
作業系統算一層
組成原理算一層
數電模電微控制器算一層
物理算一層
你能從上到下一層層的逐層分解,網際網路在你腦袋裡就沒有祕密。
正常而言,學到組成原理就夠了。
但是,這麼一個龐大的知識體系,你要學多久?
而且,真正用到的基礎知識和工作場景緊密相連,可能只有20%用得到,你只是不清楚是哪20%而已。
結論如下:
1 計算機組成原理,計算機作業系統,計算機網路,資料庫,資料結構,演算法 這是六門基礎課要學習
2 你沒時間系統的學習一遍,只能去找工作中很大可能用到的,先過一遍,有基礎概念,以後遇到問題的時候,可以知道歸屬哪個領域。
怎麼知道什麼內容是可能用到的,請自行搜尋騰訊課堂修真院的洗髓換骨營,縮減到了10%的內容。
3 對於沒有使用者量的系統而言,沒有太多學習基礎課程的必要,因為你不需要解決這些問題。但薪水和你能解決的問題是等價的,你願意一直只做初級程式設計師麼?
4 程式設計思維在基礎課程裡都有鍛鍊,在工作中也更重要。
“職業選擇、求職輔導、學習規劃、困難答疑、技術交流等,可以加IT交流群828691304
歡迎訪問我們的官網:技能樹.IT修真院
“我們相信人人都可以成為一個工程師,現在開始,找個師兄,帶你入門,學習的路上不再迷茫。
這裡是技能樹.IT修真院,初學者轉行到網際網路行業的聚集地。"