前言javascript
一直以來有不少剛入門的小夥伴問我,我想成爲一個大佬到底應該先學什麼再學什麼? 怎麼樣才能月入過萬? 如今根據我多年的工做經驗來幫助你們梳理一下,但願讓渴望入坑的小夥伴們少走一點彎路。css
我是作java開發的,一開始我是從學習java開始的,後來因爲心裏一直渴望成爲一名全棧攻城獅,因此也開始搞搞前端,下面我先來介紹一下做爲一名java後端攻城獅的學習路線。html
java基礎前端
我想無論是大學校園仍是培訓機構,在理解面向對象編程以前都要先熟悉一下面向過程編程,也就是相似C語言的開發模式,順序,選擇和循環,沒錯,這一步很是重要,由於這能讓一個新手最快的感覺到什麼是編程,而且可以經過一些邏輯和算法在控制檯打印出一些有趣的東西,或者是作一個貪吃蛇小遊戲,讓你體驗到開發和創造的樂趣,當你走過這個階段以後,就要開始接觸一個不同的東西,也是java的精髓:面向對象編程。今後走上人生巔峯,一腳踏入成天都和對象在一塊兒的日子。。。vue
從初識面向對象到開始使用三大框架,你須要學習哪些東西呢?java
1.java的基本數據類型 和 引用數據類型
2.封裝,繼承,多態的基本思想
3.java經常使用的引用數據類型和經常使用的方法(例如:String)
4.什麼是抽象類,什麼是接口
5.集合類型(例如:HashMap)
6.文件讀寫IO流
7.常見的設計模式(例如:單例模式,工廠模式)
8.什麼是反射和泛型
9.什麼是AOP(面向切面編程)
10.什麼是事務和事務的三大特性
11.數據庫設計和sql語句
12.什麼是 jdbc
13.servlet,request 和 response (開始接觸web)python
當你真正理解了上面這些知識以後,那麼恭喜你,你能夠叩開web的大門了,這個時候咱們就會開始學習一些基本的前端知識,和java領域最經常使用的模板引擎:jsp。 jsp曾經真的是一個偉大的發明,讓java在web領域大放異彩,可是,如今已是2019年了,jsp因爲性能和其它方面的缺點,已經再也不流行了,因此在這裏,我奉勸初學者,jsp作作畢業設計能夠,瞭解基本原理也能夠,可是在如今的企業裏面,先後端分離之勢已不可阻擋,幾乎新的項目都是採用先後端分離,這裏面最爲突出的就是 vue 和 react,若是你真的想找到一個好的工做,請注意不要把大量的時間浪費在 jsp 或者是 swing 之類的開發上面。mysql
好了,上面咱們講的是在學習框架以前咱們的基本學習路線,如今咱們要開始作項目了,不少前輩已經在基於上面基礎知識上幫咱們開發好了一些基本的java項目,這些項目裏面封裝了請求,響應,鏈接數據庫等等的代碼,並且寫得很是之完美,咱們把這些項目稱之爲框架,有了這些框架,開發web項目就事半功倍了,咱們只須要把他們組合起來,再加上咱們本身的業務代碼,就造成了屬於你的web項目。react
javaWeb裏面最經常使用的框架有:jquery
1.spring
2.springMVC
3.mybatis
4.hibernate
5.springBoot
(像struts2之類的框架我就不推薦了,由於這些真的不多有企業會用了,我不想誤人子弟。)
接下來你還須要學習一些經常使用的數據庫和sql語句:
1.oracle
2.mysql
3.mongodb
(數據庫我就只推薦這三種,足夠了,在個人職業生涯中,遇到使用過除了這三種以外數據庫的同事不足1%,sqlServer 雖然也有一些企業在用,可是我仍是推薦不要去學,把主要的精力放在這三種數據庫上面就好了)
除了上面的框架和數據庫以外,咱們還須要學習一些中間件
1.redis
2.nginx
3.kafka
4.zookeeper
若是你只是想完成一個單體的web項目,那麼學會上面這些,已經足夠你用了,在這個層面你可能要摸爬滾打兩年以上,你才能真正熟悉了web開發,真正理解了一個web應用的基本流程。這期間你會在不少細節上面踩坑,很正常,這是一個過程,認真走完這個過程你就會大徹大悟,這個時候你正在成長爲一箇中級攻城獅!
兩年的時間一晃而過,如今你已經對web項目的開發流程遊刃有餘,若是你沒有去研究框架的源碼,或者去研究算法和設計模式的話,那麼你會發現這兩年你的工做任務,無非就是四個字:增刪改查! 不少程序員工做了不少年依然沒有進步,就是由於他們一直知足於這個溫馨區,拿着一份不算高又基本能知足溫飽的工資,天天寫寫接口,扯扯淡,日子就這樣一每天的過去。。。
做爲一個過來人,我頗有必要提醒你們,這樣的生活是慢性死亡,由於技術會不斷進步,任何技術都有被淘汰的一天。剛剛工做兩年的你尚未接觸過用戶量極大的互聯網項目,當用戶量極大,項目併發量極高的狀況下,所產生的問題,你會發現你一籌莫展。因此當遇到這樣的場景時,咱們就應該會去思考,咱們服務器的程序是否是應該要作一些改變,讓他變得更加健壯,更增強大,怎麼樣才能變得更強大呢? 加內存? 提高硬件?NO ! 這個時候咱們要進入一個新的領域: 架構!
架構
當咱們的單體項目不足以支撐用戶的併發訪問時,咱們該怎麼辦呢?解決方案有不少種,每一個人都有本身的理解,能夠針對你的業務作針對性的處理,合理的利用緩存,合理的利用消息隊列,合理優化數據庫,若是你感受足夠了,那麼也能夠不用對你的項目作侵入式的改造,可是若是依然不能解決問題,那麼你就須要調整你的架構,雖然這樣對原有代碼侵入式很大,可是這是沒法避免的。
在這裏我推薦三種經常使用的基本思路
集羣
分佈式
分佈式集羣
什麼是集羣
就是將你的請求分發給幾臺或者十幾臺服務器來處理,若是有100個請求進來了,20個請求交給A服務器處理,20個請求交給B服務器處理,同理其它的請求分別交給不一樣的服務器處理,這些服務器部署的都是同一個項目,可是鏈接的是同一個數據庫,這樣咱們就減輕了每一個服務器的壓力,同時也成功處理了用戶的請求,固然,集羣不必定是多臺服務器,單服務器也能夠作集羣,同一個項目在一臺服務器上面啓動多個進程,咱們只須要用nginx來作負載均衡,同時代理多個進程,這樣能夠充分的利用服務的CPU和內存資源,已達到提高服務端性能的目的。
什麼是分佈式
好比,你的項目大體能分紅三種業務處理類型,1.支付 ,2.訂單,3.日誌 ,那麼咱們能夠將這三種業務相關的代碼分別放在一個獨立的項目裏面,這樣咱們是否是就能夠將這三個項目分開部署,那麼它們之間怎麼互相通訊呢?又怎麼保證事務的一致性呢?因此這裏就要用到咱們推薦學習的分佈式框架:
1.spring cloud
2.dubbo
這兩個框架目前在java分佈式解決方案裏面,已經佔據了領導地位,特別是 spring cloud,基本是目前大多數的企業項目架構都在推崇,若是你能很是熟練的掌握spring cloud,那麼月薪過萬是垂手可得的。
什麼是分佈式集羣
這個我想我不說你們也應該猜到了,就是把分佈式和集羣組合起來,既然咱們已經把業務進行了拆分,那麼也就能夠對每個拆分後的項目作集羣部署,這樣咱們又能夠成倍的提高服務端的性能。注意:在作分佈式或者集羣的時候,咱們的session通常須要將其保存在redis裏面,每一個項目都從redis裏面獲取用戶信息,這樣才能保證session一致性的問題,固然也有別的解決方案,你能夠根據你的理解來解決session問題。
我這裏有我之前學習的時候看過的一套java基礎視頻和分佈式相關的一些學習視頻,我還整理了一些面試題資料,想要的小夥伴能夠關注個人微信公衆號,公衆號下面有一個菜單,直接領取就好了,還有一套python的視頻,有興趣的也能夠領
前端
關於java方面的學習路線,我就講到這裏吧,如今我來說一講前端。本人學習前端真的是一本血淚史啊,在vue還沒火起來以前,我一直用的都是jQuery,說一句內心話,jQuery真的被我玩爛了,每個方法都已使用的很熟練了,經過直接操做dom元素來完成前端的各項功能的這種思想對我來講已經深刻骨髓,可是,正是由於這種深刻骨髓的思想,致使我在後面接觸vue以後,很長一段時間沒法接受數據雙向綁定的這種操做模式,每次都巴不得導入一個jQuery進來,這讓我痛苦不堪,這就是固化思惟所帶來的嚴重後果。。。
前端須要學習的基礎知識有:
1.css
2.html
3.javascript
4.jquery (淺嘗輒止,不要固化思惟)
5.jsp(淺嘗輒止 )
6.free marker (這個性能比jsp要好,適合用來開發後臺管理系統)
前端值得學習的一些框架:
1.vue
2.layui
3.element ui
4.uni-app
5.vant ui
6.api cloud
居然選擇了前端,就要作好打持久戰的準備,把基礎打紮實後,隨時關注並學習最新的技術和框架,與時俱進,纔不會被淘汰。就目前而言,我感受vue即將一統天下,不管是體驗感仍是開發效率上面都表現的很是優秀,隨着時間的推移,新的項目都會採用vue或者其餘的先後端分離框架,本人強烈推薦vue!
好了,但願你們可以早日取得真經!咱們一塊兒向着架構師努力!
若是你以爲這篇內容對你挺有啓發,我想邀請你幫我三個忙,讓更多的人看到這篇文章:
一、點贊,可讓更多的人看到這篇文章
二、關注個人原創公衆號,第一時間閱讀個人文章。
想要進行技術交流的朋友也能夠加個人我的微信,你們互相學習,共同成長!