首頁>Club>
哪位好友有Java的學習心得分享一下
47
回覆列表
  • 1 # 古怪拆玩

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

  • 2 # Wilson1995

    題主你好,作為一個自學過來的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,String> idNameMap = list.stream() .collect(Collectors.toMap(Classify::getId, Classify::getName));

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

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

    當時在這過程中用到的Function函式式介面也提高了我對函數語言程式設計的理解,轉換的程式碼也成了以下這個樣子:

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

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

    框架/工具學習

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

    以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)上或者部落格上,既能方便日後回顧,又可新增自己的潛在價值(大公司是有一套根據部落格點贊與瀏覽量篩選候選人的方式的,即使學歷不足,但只要你的部落格展示出你強硬的技術水平,不用擔心找不到想要的面試機會)。

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

  • 3 # 產品鬍子哥

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

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

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

    一、制定職業和學習目標

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

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

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

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

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

    4.我應該如何做。

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

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

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

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

    三、架構思維設計與運用

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

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

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

  • 4 # 學長熱評

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

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

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

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

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

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

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

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

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

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

  • 5 # IT人劉俊明

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

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

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

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

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

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

  • 6 # 貳東劉

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

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

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

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

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

    最後就可以在github上面搜尋一些小專案,然後看著專案來做新增一些自己的東西。

  • 中秋節和大豐收的關聯?
  • 科比的意外死亡給全世界帶來了多少影響?