自學了springboot并搭建了微服務(wù)?
能在大一就可以搭建起SpringBoot,那說明你還是具有一定的編程基礎(chǔ)的。題主所說的想從底層學起,說明題主可能只是按照SpringBoot教程跑通了簡單的SpringBoot Demo,這離成為一名優(yōu)秀的Java工程師還有很長的一段距離。那要想成為一名優(yōu)秀的Java工程師,我們還需要學習那些”底層“知識呢?
1、工具工具分為兩個部分,開發(fā)工具和項目構(gòu)建工具。開發(fā)工具IDE幫助我們編譯、運行、調(diào)試、分析、測試代碼等等,我比較喜歡IntelliJ IDEA。構(gòu)建工具用來構(gòu)建和部署項目,例如maven、gradle和ant。Ant已經(jīng)沒落了,很少有java項目中使用,Maven使用的比較多,但是Maven基于xml語法比較死板,我比較喜歡gradle,推薦大家使用gradle。
2、JDK APIJDK API對于開發(fā)人員來說非常重要,這是很大的一部分內(nèi)容。包括Java Collections框架,Java Concurrency,Java IO和Java 8 API等核心領(lǐng)域。
2.1 Java集合框架這是每個Java開發(fā)人員都應(yīng)該學習的最重要的Java API之一。該API提供了Java中標準數(shù)據(jù)結(jié)構(gòu)的實現(xiàn),例如鏈表,集合,堆棧,隊列,哈希表,優(yōu)先級隊列等。
我們對于ArrayList、HashMap、HashSet、LinkedHashSet、TreeSet等框架必須要精通掌握,并知道它們的內(nèi)部實現(xiàn)邏輯。例如, ArrayList是一個可以增長的動態(tài)數(shù)組,HashMap 是哈希表的標準實現(xiàn),可以用于存儲鍵值對。同樣,HashSet是一個不允許重復(fù)元素的set實現(xiàn)。
2.2 java并發(fā)多線程和并發(fā)是一個合格的java工程師必須掌握的。我們不僅應(yīng)該深入了解諸如Thread、Runnable對象鎖定和同步之類的基本概念,而且還應(yīng)該熟悉諸如死鎖,樂觀鎖,condition以及如何使用它們。同時也應(yīng)該了解像Java5中及以后的版本,例如CyclicBarrier、CountDownLatch、Phaser、CompleteableFuture、Futures等等特性以及如何在Java中執(zhí)行異步操作。
2.3 Java ioJava IO 和NIO API平常開發(fā)可能用的比較少,但是對于File、InputStream、OutputStream、Reader以及Writer這些核心API我們要精通掌握。同時如果我們需要編寫一個基于套接字的的程序,對于ByteBuffer、FileChannel、Selector也必須掌握。
2.4 Java 8新特性Java8 改變了我們以往的編碼和編碼方式,以前需要寫10行代碼才能完成的功能,現(xiàn)在可能只需要幾行。Lambda表達式、Stream API、Optional類和新的DateTime API,這些我們都應(yīng)該熟練掌握。
3、框架Java生態(tài)中有豐富的框架可以供開發(fā)者使用。對于主流的框架我們要有一定的了解。例如:Spring、SpringMVC、SpringBoot、Hibernate、Log4j、Mybatis、JUnit等。
3.1 Spring Framework如果您想成為優(yōu)秀的Java開發(fā)人員,強烈建議首先學習Spring Framework。這是最流行的Java框架之一。Spring Framework使開發(fā)人員能夠編寫干凈的代碼,通過依賴注入和控制反轉(zhuǎn)等功能可以更輕松地測試和維護代碼。它還具有用于大多數(shù)日常任務(wù)的豐富API。
3.2 Mybatis早期ORM框架比較火的是Hibernate。但是Hibernate限制太多,特別是在復(fù)雜業(yè)務(wù)場景下無能為力。Mybatis是目前最流行的ORM框架。支持靈活的sql、存儲過程以及高級映射。MyBatis 可以使用簡單的XML或注解來配置和映射原生類型、接口和 Java 的 POJO為數(shù)據(jù)庫中的記錄。
3.3 SpringBootSpringBoot應(yīng)該是目前最火的MVC框架了,SpringBoot將程序員從繁重的XML配置中解放了出來。在沒有SpringBoot的時代,我們編寫一個后端的web應(yīng)用,需要大量的xml配置。SpringBoot的出現(xiàn)使創(chuàng)建基于Spring的Java應(yīng)用程序變得非常容易。你只需要2分鐘就可以出創(chuàng)建一個應(yīng)用并將它跑起來,這極大的提升了程序員的工作效率,使得程序員可以更專注業(yè)務(wù)代碼實現(xiàn)。
4、測試測試是任何Java開發(fā)人員的一項基本技能,尤其是單元測試,集成測試和自動化測試。至少,每個Java開發(fā)人員都應(yīng)該熟悉JUnit和Mockito,這是兩種最受歡迎的單元測試和模擬庫。如果您知道這兩個并知道如何使用它們來有效地創(chuàng)建單元測試,那你將是一個更好的Java開發(fā)人員。還存在更高級的庫,例如用于業(yè)務(wù)驅(qū)動測試的Cucumber,用于集成測試的Robot Framework。對于模擬庫,開發(fā)人員可以選擇PowerMock,Mockito和EasyMock等幾種選擇,但我強烈建議學習Mockito,因為它是一個很棒的庫,并且許多Java開發(fā)人員和公司都在使用它。它正逐漸成為在Java中創(chuàng)建模擬對象的標準庫。
5、常用的庫Java的真正功能在于其豐富的開源庫生態(tài)系統(tǒng)。你會發(fā)現(xiàn)庫在Java中幾乎可以完成所有工作,從日志記錄到機器學習,從發(fā)送HTTP請求到解析JSON等等。
除此之外,Java還幸運地擁有諸如Apache Commons和Google Guava之類的實用程序庫。這兩個庫有效地補充了JDK庫。
最后如果你已經(jīng)掌握了這其中一半以上的技術(shù),那恭喜你,你算得上以為優(yōu)秀的java工程師。如果沒有,那好好學習這些技術(shù),它就伴隨這你以后職業(yè)生涯。當然計算機原理、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫理論等課程將是你大二、大三的專業(yè)課,這些課程必須好好學習,深入掌握。