請問哪位好友有Java的學習心得分享一下,謝謝?

楊歡64252


你好,我是鬍子哥,結合我的經驗給你回答這個問題。

Java是面向對象的一門語言,目前也是在各大互聯網行業和公司主要運用的一門語言。如何學習好,給你一下幾點建議:

  • 制定職業和學習目標
  • 加強基礎知識,熟讀和深入學習源碼
  • 架構思維設計與運用
  • 多向牛人請教,堅持寫技術Blog

一、制定職業和學習目標

你可能會問題為什麼只要制定職業目標和學習目標?有了目標就有了方向,有了航行的路線。在你走向遠方的路上不至於迷茫和焦慮,就像你現在提這個問題一樣,我猜你已經迷茫了。有了目標你會進步很快,走的很充實。制定個人的職業目標和企業的戰略規劃是一樣的,企業在大市場中如果沒有方向或者戰略制定失誤,想在市場上佔領一席之地是很艱難的。到了一定年齡你會失去了核心競爭力,得不償失,後悔莫及。

在前行的路上你要停下來進行深度思考,光靠努力勤奮是不行的為什麼要深度思考那?深度思考是為了保障你向正確的方向發展。努力勤奮是保障你在正確的方向上執行到位。建議你想清楚,避免瞎子摸象,在這個行業的職業路線還是比較成熟的,有跡可循。你可以按照下面的方法去想象自己的目標,如下:

1.未來三年我要在什麼行業達到什麼樣的目標?

2.達到這個目標需要具備什麼樣的能力?

3.目前我處於什麼樣的情況?差距在哪裡?

4.我應該如何做。

為什麼要提行業那,因為每個行業的業務有很大的不同,從垂直行業來說你更有核心競爭力。

二、加強基礎知識,熟讀和深入學習源碼

Java的基礎知識點博大精深,有了良好的底蘊基礎,你在解決一些複雜性的問題上會遊刃有餘。比如說性能優化。為什麼讓你熟讀和深入學習源代碼?源碼涉及的知識要點還是非常廣泛深入的。源碼當中的架構設計理念和實現非常優美,也覆蓋了很多設計模式。比如有類是線程安全的,也有線程不安全的,哪些適用於併發設計,哪些不適合,如果你不熟悉,你的代碼可能會一團糟。在Java裡面最重要的一塊是多線程併發編程,一定要重點掌握。熟讀和深度學習源碼的相關知識對於未來實現中間件架構、業務架構、代碼優化、原有組件擴展都會有很大的幫助,這也是未來發展的基礎。

需要讀哪些框架的代碼哪?比如Javasdk,Spring,SpringBoot,Mybatis等,Javasdk是最基礎也是最重要的.

三、架構思維設計與運用

架構設計思維和你的職業規劃也是一個道理,沒有掌握架構設計思維的人會永遠停留初級階段。架構設計為業務服務,是為了讓服務擴展性、穩定性、可靠性等有良好的支撐,服務走的更遠,支持更多業務的開展。整個系統得不到合理的架構設計規劃,隨著業務的增長,在不遠的將來系統就會變的臃腫,維護性差,冗餘不可複用,Bug多,運行過程可能會導致系統崩潰。
如何掌握架構設計的思維,給你推薦幾本書,架構之美、UML和模式應用、面向模式的軟件架構 (一共5卷,每卷都值得讀,分別是模式系統(卷1),併發和聯網對象模式(卷2),資源管理模式(卷3),分佈式計算的模式語言(卷4),模式與模式語言(卷5))、重構、設計模式、代碼大全。以下是分佈式架構、微服務架構、性能優化的相關知識點彙總希望能給你帶來更多方向和收穫,如圖。

四、多向牛人請教,堅持寫技術Blog

在工作中和平常的生活中多和牛人交流,他們的經驗可以說讓勝讀十年書。一定要保持求知若渴虛心若愚的心態。這樣人家才會教你。另外你可以到一些技術網站上去學習,一般他們都會有Blog,可以去參考學習。學習的網站有Github,CDSN,Stackoverflow,iteye(javaeye),infoq,ifeve(併發編程)等向你推薦下。也可以去多參加一些技術論壇,在技術論壇上,一些大公司的人會針對成熟的解決方案進行分享,同時也可以交朋友。

另外作為一個理工科的程序員來講,可能不願意去寫作。建議養成寫作的習慣,真的很好,知識的沉澱需要有一個承載的地方,它可以幫助你進一步思考和總結,對於代碼實現、架構、技術問題的解決能力都會有一個質的飛躍。當你回頭看的時候,你發現寫Blog真是一件好事情,非常有價值。

就回答到這裡吧,希望能幫到你,覺得不錯的話請給個贊或評論。另外還請您點擊關注,我會保持更多的內容分享,您的助力都是激勵我前行的動力,感謝🙏!


產品鬍子哥


這是一個非常好的問題,作為一名IT從業者,同時也出版過自己的Java書籍,所以我來說說我的看法。

Java語言的抽象程度是比較高的,所以Java語言的初期學習難度是比較大的,如果順利渡過了學習的初期階段,後期的學習難度會有所下降。

Java初學者在學習的初期,應該做好三件事,如果把這三件事做好了,通常就能夠順利渡過初期的學習障礙。第一件事是把握住Java學習的主線,第二件事是掌握Java的面向對象編程過程;第三件事是注重實驗和總結。

初學者在學習Java的過程中首先就要把握住學習的主線,這是非常重要的,只有把握住了學習的主線,才能有一個更好的學習體驗。Java的學習主線可以用兩個概念來進行總結,一個是“類(class)”,另一個是“接口(interface)”,Java中幾乎所有的抽象概念都是圍繞著兩個概念展開的。所以,初學者首先就要搞清楚什麼是類,什麼是接口。

學習Java的第二件事情就是掌握Java編程的過程,做一個不太恰當的比喻,如果把抽象概念看成是“武功心法”,那麼編程過程就是“具體招式”,二者之間相輔相成。Java的編程過程可以總結為三點,分別是類的設計、對象的創建、方法的調用,幾乎Java所有的編程過程都離不開這三個步驟。

最後,學習Java編程一定離不開實驗和總結,實驗不是目的,通過實驗來理解概念並形成自己的編程思想才是目的,而這個過程就離不開總結,總結的目的是為了形成自己的方法論,也可以把這個方法論看成是“編程思想”。

我從事互聯網行業多年,目前也在帶計算機專業的研究生,主要的研究方向集中在大數據和人工智能領域,我會陸續寫一些關於互聯網技術方面的文章,感興趣的朋友可以關注我,相信一定會有所收穫。

如果有互聯網、大數據、人工智能等方面的問題,或者是考研方面的問題,都可以在評論區留言,或者私信我!


IT人劉俊明


Java學習主要分為自學,和跟著老師學。

這個東西因人而異,有的人自學能力是非常強的,可以自己學。

像我這種,就是要跟著老師學,如果讓我自己盯著書本看,半個小時估計就煩了。

那麼我就分享下我的Java學習心得。

第一 在網站上找一些教學視頻,現在類似於各種編程的視頻教程網上信手拈來,比如各類大學,也會將自己的授課視頻傳到學習網站上,這類網站有慕課網、中國大學MOOC,網易雲課堂、還有央視都誇獎的小破站。

第二 就是跟著視頻學習,視頻中的老師講解的非常的細緻,你可以跟著老師做一些筆記,通過筆記加深對概念和知識點的理解。

最後就可以在github上面搜索一些小項目,然後看著項目來做添加一些自己的東西。


貳東劉


題主你好,作為一個自學過來的Java開發希望以下一些個人的學習經驗可以幫到你。

學習路徑

在學習Java的相關知識時,必須先確立一條學習路徑,這方面可以參考國內互聯網公司的Java相關職位的技術要求。個人是一名純Java後端,我建議的學習路徑是Java基礎->Mysql->mybatis->Spring Boot->SpringCloud->Redis,這些都是目前國內大部分互聯網公司都會使用的技術棧。當對這些都有一定了解後個人建議可以去了解一些中間件或擴展知識,如消息中心(RocketMQ、Kafka)、Nginx、ELK(ElasticSearch+Logtash+Kibana)、Docker+Kubernetes+Rancher等。

學習方法

在學習期間一定要多敲代碼操作,個人建議再簡單的知識點最好到敲碼驗證一下,並在敲的過程中要思考清楚這個類/方法的主要作用是什麼,並在此之上思考在實際開發中可以用到什麼地方。

Java基礎

Java基礎類中常見的函數式接口Function、Predicate、Consumer、BiConsumer等,對這些接口有所瞭解的都知道Java的Stream、Map、Optional等類中有不少方法的參數都是這些函數式接口的,最常見的用法就是Map的foreach(BiConsumer)、List的foreach(Consumer)、List.stream()轉Stream後的一系列函數式操作,但從書籍/網站上了解到這些知識以一回事,有沒有實際測試過放到項目中又是另一回事。每次我自己去編碼驗證知識點成功後都會感到成就感,然後會思索能不能再擴展到其它地方使用。

以從List中提取屬性轉Map為例,最原生的做法就是將List轉Stream再函數式提取,如下:

Map<long> idNameMap = list.stream() .collect(Collectors.toMap(Classify::getId, Classify::getName));/<long>

後來覺得這樣需要兩行且需要轉Stream(每調用stream方法後進行換行可以提高流程轉換的可讀性),可不可以通過函數式編程簡化為一行並保證可讀性,於是我寫了一個工具類去完成這件事:

public static Map collectToMap(Collection list, Function keyGetter) { Map propertiesMap = new HashMap<>(list.size()); list.forEach(e -> propertiesMap.put(keyGetter.apply(e), e)); return propertiesMap; }

當時在這過程中用到的Function函數式接口也提高了我對函數式編程的理解,轉換的代碼也成了以下這個樣子:

Map<long> idMap = ListUtils.collectToMap(list,Classify::getId,Classify::getName);/<long>

雖然這不是什麼了不起的知識點與編碼,但實踐過程中帶來的提升遠非僅僅觀看帶來的提升高的。

框架/工具學習

所謂的框架只是基於基礎搭建達到某些功能的工具集合,使用合適的框架可以很好的避免重複造輪子耗費的成本,但對於框架的核心流程還是需要理解的,這樣才可以再實際開發中靈活去使用與擴展,所以個人推薦框架學習的方式是:瞭解其功能->功能的核心加載流程->嘗試根據自己的想法進行擴展。

以SpringBoot為例,SpringBoot為我們大大的縮減了項目搭建所需要的實際,其為大部分開發者都默認設置好了常用的配置值,當默認配置不是我們想要的時候我們只需在配置文件中更改即可。SpringBoot的自動化配置雖然可以省去不少麻煩,但如果我們有些想要的自動化配置SpringBoot沒有提供怎麼辦?那這時我們就需要了解SpringBoot自動化配置的加載流程,並據此方式自定義一套我們自己的自動化配置,所以在學習每個框架前我都會先了解該框架的核心是哪。個人當初在瞭解了SpringBoot的加載流程後也寫了全局參數校驗、Swagger自動化配置、自己使用的SpringBoot common框架,當自己想搭點功能測試時也可以快速的添加自己所需要的腳架依賴。

tips:SpringBoot的自動化配置流程是讀取classpath:META-INF/

spring.factories

(即resources/

spring.factories)文件中的配置類,然後再生成該配置類容器bean,並根據該類的掃描配置生成所需bean,配置文件的提示是根據META-INF/

spring-configuration-

metadata.json

中的內容進行提示的,可以在spring boot的各種集成框架下找到這些文件,spring-boot-autoconfigure依賴包中存放了自動化配置加載流程的功能類。

知識總結

當學習完一套技術知識點後,個人建議可以做一下總結,因為總結的過程是一個知識梳理的過程,可以加深對知識的理解,如我之前在使用RocketMQ作為消息中心編碼測試並項目發佈後也寫了一篇Spring Boot RocketMQ的使用方式與消息中心的架構設計及作用,在總結完後我是可以感到自己在這方面知識理解的提升的。

知識總結個人建議可以總結到筆記軟件(如目前個人的筆記用的是Boostnote)上或者博客上,既能方便日後回顧,又可添加自己的潛在價值(大公司是有一套根據博客點贊與瀏覽量篩選候選人的方式的,即使學歷不足,但只要你的博客展示出你強硬的技術水平,不用擔心找不到想要的面試機會)。

學習編程需要多加思考與編碼驗證,執行合一方可融會貫通,希望以上內容能對題主有用。


Wilson1995


目前,Java已成全球編程語言的領頭羊,它應用領域廣泛、前景可觀,升職加薪也是指日可待的事。雖說它的前景可觀,但回想下自己走過的路,那真是困難重重啊,接下來就給大家分享幾點學習心得,希望能幫助到初學者。

一、學習要腳踏實地,不可超值過急

對於初學者來說一定要奠定好基礎,要腳踏實地的學習,為日後學習高深知識奠定好基礎,要給自己定個學習計劃,按照流程去學習,不要學了一半JVM後覺得沒啥意思,又去學SWT,結果發現對這個程序也沒多大興趣,有轉去學別的,這樣浮躁的性格導致你什麼也學不會,建議大家一定要將入門教程吃透,平時多看視頻講解,把“基礎知識”打牢固是很重要的。

二、看書不是重點,重點是多實踐

有了良好的開端還要養成良好的學習習慣,平時不單單是多看書本知識,自己在看書的時候還要把書上的例子親手敲到電腦上去實踐,千萬不要圖省事,就照抄、複製,只有實踐才知道自己是否真的會寫代碼。雖然說理解編程語言是首要,但也要勤動手、多思考,多編一些例子,做到將理論和實踐相結合,這樣才能真正的掌握這門技能。

三、由淺入深,不斷趕緊程序編寫難度

每個人都懂得學習是件漫長又枯燥的事情,所以每個想學Java的學者都要做好心理準備,在有準備後要給自己養成個好習慣,先從簡單的程序入手,可以通過命令行的方式實現,功能可以有不足,但是隨著學習的深入,你可以不斷的完善這個程序,直到你把它做成一個完美、性能全的程序後,你才真的學透、學紮實了。

四、遇到難題要學會思考和總結

每一個階段都要對上一階段做個反思和總結,不要丟了西瓜撿了芝麻,最後學一個丟一個,要經常把自己在學習過程遇到的難題和困惑記錄下來,定時的去溫習和反思,還要記下自己解決問題的經驗和技巧,不斷的瀏覽這些東西,將這些東西吃透,過一段時間,你會發現自己成長了不少。

五、定期研究一個技術,並將其學懂、學精

根據市場出現的新奇玩應,不斷的去學習和探索,所研究的技術一定要比目前技術水平高,只有不斷的探索和專研才能提升個人能力,我相信這一點一般的程序員都沒能做到,如果你是搶先做到這一點,你的能力肯定比他人都要強很多。總而言之,要不斷的從實踐中學習,要腳踏實地的學好技術,勤奮聯繫,也要善於利用網上的資源,譬如藍鷗Java視頻教程,從他人身上吸取經驗和教訓,讓提升個人能力不在成為紙上談兵的事。


電商品鑑


思路決定出路人的學習是無止境的,只有不斷的學習,才能給自己更豐富,更開闊的思路,經過兩天的學習,讓我感悟到很多事情,都是有兩面性的,窮則變,變則通,出路在於變通,當目前的想法不能成功,說明你的想法有可能是錯的,或者是由於沒有改變自己的思路或者是懶於改變自己的思路或者是根本不想改變自己的思路,成功總有方法,想成功就要找方法,而思考是一切正確策略和方法的起源,思考其實就是問與答的過程,當你做一件事情沒有達到目標時,問自己一個為什麼?問自己問題出在了哪裡,然後自己給出答案,學會反思學會換位思考。“沒有不好的孩子,只有不好的教育”,例如,在課堂中,在一日生活中孩子沒有如我們所預想的那樣做一些正確的事情,不能達到我們所要求的目標時,我們只能對孩子著急嗎?與其對孩子發脾氣,不如改變自己的教育觀點理念,反思自己為什麼,不能懶於改變自己的思路,就要求別人去適應自己的思路,我們何不反思自己從事情的另一個角度開始著手,可能會有意外收穫,就像我們經常說的,給孩子機會孩子就會給你驚喜。從中,我還深刻的理解到一個道理,大凡世界上能做大事的人,都能把小事做細,做好,做好了每件小事逐漸積累就會發生質變,小事就會變成大事,任何一件小事只要你把它做規範了,做到位了,做透了,你就會從中發現機會,找到規律,從而成就大事,也就是說,一件事情我會做了,但做好了嗎,做精了嗎,一個人無論從事何種職業,都應該盡心盡責


在行走的駱駝


我個人覺得吧,還是上海的java培訓課程比較好,

才能給自己更豐富,更開闊的思路,經過兩天的學習,讓我感悟到很多事情,都是有兩面性的,窮則變,變則通,出路在於變通,當目前的想法不能成功,說明你的想法有可能是錯的,或者是由於沒有改變自己的思路或者是懶於改變自己的思路或者是根本不想改變自己的思路,成功總有方法,想成功就要找方法,而思考是一切正確策略和方法的起源,思考其實就是問與答的過程,當你做一件事情沒有達到目標時,問自己一個為什麼?問自己問題出在了哪裡,然後自己給出答案,學會反思學會換位思考


分享到:


相關文章: