初學者如何喫透一個Java項目

不少初學者朋友在學習Java過程中,會對着視頻敲Java項目,其中遇到的BUG還能解決,但就是每次敲完一個項目,就感覺很空虛,項目裏面的知識點感覺懂了但又好像沒懂

這些朋友應該怎樣才能掌握一個項目所用的知識點呢?至少不至於過了一頭半個月就想不起來這個項目是什麼東西呢?

 

1 剛開始運行項目的時候,你別根據視頻或現有代碼敲,而是得先運行通人家的代碼。
自己敲代碼的時候,會拘泥於API或模塊的細節,多敲代碼後反而會一頭霧水。而且,你敲代碼的時候,很有可能因爲敲錯一個地方而導致整個系統沒法運行,而且這種錯誤很難排查,往往你用了1天敲完整個系統,跑不通,用了3天時間發現了10個敲錯了地方,改了還是跑不通,再用了5天,把所有問題都改了,才跑通,這樣就浪費至少1周時間了。
 
2 找項目,你得找一定能跑通的,比如star比較多的github項目,或者銷量比較好的視頻教程,或者乾脆買書,書上的代碼經過出版社加持,大多能跑通。否則你學了半天,找了一個跑不通的項目,再用半個月去調試,這樣浪費的時間更多了。
 
3 找到可以跑通的項目後,根據說明,優先搭建環境,比如選對jdk版本,搭建好mysql數據庫環境,創建好MySQL的表,搭建好IDEA集成開發環境,必要的話再搭建好分佈式組件,再通過pom.xml文件引入依賴包。環境好環境,再按提示跑系統,可以這樣說,系統跑通了,這個項目你就成功一半了。
 
4 後面很關鍵,別先理解源碼的含義,先結合一個業務流程,跑通增刪改查的流程請注意,別多跑業務流程,因爲大多數業務的流程很相似,跑通一個就行了。
 
從界面上跑通一個流程後,你再去看代碼,先看從前端到後端再到數據庫的流程,看下請求經過了哪些類,這些類是怎麼處理了,最後是怎麼落實到數據庫裏的。
 
比如現在大多數Java項目,都是spring boot,從控制器到業務邏輯類再到repo層,外帶Spring Cloud Alibaba組件,或者nginx,netty,redis等組件。當你跑通一個流程後,你就知道請求怎麼被控制器方法處理,控制器方法怎麼做參數驗證,控制器方法如何調用業務方法,業務方法怎麼通過JPA(或其它ORM)訪問數據庫。總之先理解流程,再理解sprign cloud alibaba組件等枝幹。
 
5 然後你再依樣畫葫蘆,多跑幾個業務流程,再結合代碼理解整體流程,這時,你可以關注些細節,缺啥補啥。比如你不理解@Service註解,那你就去查,你不理解JPA連接數據庫的業務模型類或連接數據庫的Repo類的含義,那你也查,這樣你就通過運行效果,能對應到具體的代碼上,然後能通過看代碼,理解相關語法細節。
 
請注意,一定是先流程再細節,先框架再語法。當你理解流程的時候,一定別拘泥語法,遇到不懂的,先整體上理解,比如先理解,通過業務模型類能做JPA映射,在基礎上理解流程,等你理解好流程以後,再去通過業務模型類裏面的@Table和@Entity等註解,理解做映射的細節步驟。
 
6 當你看明白流程和搞清楚流程中的細節語法以後,再去看衍生的組件。比如某個項目的重點是講Spring Boot整合spring cloud alibaba微服務,那麼你先通過看其它資料,知道Nacos,Sentinel等組件是幹嘛的,再到項目中找到和Nacos和Sentinel的相關配置,比如Nacos體現在配置文件裏,Sentinel體現在xx類和xx註解中。
 
而且,在項目中,一定是會把Nacos和Sentinel等組件體現到業務中,你可以通過業務,很好地進一步理解Nacos和sentinel的用法和api。
用這種方法,你能很快理解項目的框架和其中的組件,這種方法的操作要點是先搭環境再運行通再結合業務看,看明白以後,你想怎麼記就怎麼記,用記事本什麼都行
 
但我可以這樣說,由於這是學習項目,不是你參與開發過的商業項目,更不是公司用來掙錢的商業項目。所以你只是從人家的項目裏理解技能,這樣對你提升技能的幫助,也是有限的。你產生似懂非懂的感覺,或者過了一兩個月後忘記項目細節,這很正常,也無法避免,更無法緩解和改善。
 
但是後面你要繼續做的,絕不是自己動手從零開始實現這個項目,這也是很多初學者的誤區,解釋下原因。
1 以初學者的能力,從零開始敲一個項目,難度太大,這樣做的結果大多是不了了之。
2 如果從零開始敲項目有效果,那麼排查萬難硬着頭皮敲一個,也不是不可以,但公司裏不是這樣開發項目的,公司裏開發項目的方式一般是根據現有代碼改,而不是從零開始敲,所以自己敲一個項目,哪怕用了三個月半年時間敲出來,其實大概率是無用功。
3 有比從零開始敲項目更好的學習方法,所以從零敲項目沒必要。
 
這裏說個觀點,通過學習項目學習,哪怕這個項目包含的技術要點再多,但充其量只是拾人牙慧。可以靠這種方式入門,但爲了高效提升,或者提升到更高的程度,一定得參與商業項目開發,即直接到公司裏去做項目。
 
所以跑通一個Java項目後,如果你感覺把握不大,可以再去找個跑一下,但項目數量別操作3個。跑通後,趕緊去找實習細節。
 
1 如果是在校生,你直接問你們老師,或者是碩導博導,他們一般有外面公司的項目。你就和他們說,我想學習,能不能晚上週末或假期,到
 
你們教研室來學做項目,不收錢,只要讓我參與就行。
這樣老師有了免費勞力,一般都肯,然後你進項目組以後,爭取自己動手開發一個項目,說動手開發一個項目也不準確,應該是按現有項目改出一個功能,這樣比你運行通5個項目都強。或者可以這樣說,你哪怕運行通,或者所謂喫透再多的項目,都比不上自己在商業項目中實現一個功能模塊。
 
2 如果你大三大四,快實習了,你就把你跑通的項目寫到簡歷中,然後出去找實習公司,當然中間是要背面試題。找實習公司也先別看錢,優先獲取實踐機會,這樣等你畢業後,因爲你的技能是通過真實項目掌握的,你一定遠比通過學習項目的其它人強。
 
3 如果你已經工作,想要轉行到Java開發,那也一樣,背面試題,簡歷上寫你運行通的Java項目,優先找個能提供實踐的機會,必要的話,你找個培訓班,用錢買人家輔導服務,用錢買人家推薦工作的服務。
 
最後做個總結。
1 如果大家只是運行人家的項目學習,通過人家的java項目學習,哪怕你把人家項目中的每個細節都掌握,面試找工作時,頂多得到的評價是“熟悉xx框架,熟悉xx語法”,但很難證明相關技能的項目開發經驗,這樣找工作得碰運氣。不過這塊不能省,很多零基礎的學員都這樣入門的。
2 這裏多說一句,如果你能結合你學習項目的需求,說明xx技術的用法,那倒有可能讓面試官感覺你有xx技術的項目實踐經驗,這樣哪怕你之前沒做過真實項目,只要你結合項目說的技術到位,再背些面試題,還真有可能找到工作。
3 一定注意,你運行人家的項目,目的是爲了找java工作,所以你在通過人家的項目學習時,不僅要做到理解其中的含義,更要把其中學到的技術用到找工作(或找更高級的工作)上,所以通過運行人家代碼學習時,一定別拘泥於只搞明白人家項目技術。
 

這是我的公衆號,其中包含了大量面試文章,同時我自己出了多本Python和Java方面的書籍,會定期在公衆號裏發書的電子版。請大家關注下我的公衆號,謝謝了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章