Java程序員成長之路

北哥在前文總結了程序員的核心能力,但在專業能力維度,只是作了大概的闡述,並無詳細展開。從今天開始,我會把我做爲程序員成長過程當中,學習的知識總結成系列文章陸續發出來,供你們學習參考。html

本文是第一篇,關於Java領域的相關技術內容java

北哥是java程序員出身,寫了有十多年的Java代碼,這裏的分享是我這些年在java相關領域學習大體路徑。nginx

Java自己是一門編程語言,相比其它的編程語言如c、c++,java在企業級開發中是使用最多的。在包括BAT等互聯網大廠,人員最多的編程崗位基本都是Java開發崗。核心在於java豐富的生態和社區,對企業級應用開發良好的支持,以及源源不斷的人才供應。c++

既然Java是一門編程語言,所以最基礎的編程知識是須要掌握的,大部分計算機專業畢業的學生應該都學習過相關課程,這裏作個簡單總結。git

01編程基礎

最基本的編程基礎知識就是數據結構和算法了。程序員

數據結構方面,經常使用的包括數組、棧、隊列、鏈表、二叉樹、紅黑樹、哈希表、堆、圖等。web

這些數據結構基本上都可以在java的基礎包裏面找到相關實現,我在剛開始學習Java的時候,不知道如何入門,就是研究這些數據結構的Java實現。事實證實,不管在後來接觸什麼樣的框架、中間件,深刻到源碼級,這些基礎的數據結構隨處可見。redis

在算法層面,須要掌握一些基礎的算法,經常使用的有搜索和排序,像二分搜索、冒泡排序、選擇排序、插入排序等。這些算法不只僅須要瞭解他們的實現,還須要搞清楚時間複雜度和空間複雜度。除了一些基礎的算法,還有一些高級算法例如貪心、揹包、剪枝、動態規劃等,這些高級算法會在大數據、人工智能和算法領域被頻繁的應用。算法

數據結構以外,另一個編程方面的基礎知識是操做系統和網絡相關內容。spring

在操做系統方面,最基本的須要對進程、線程、內存管理等有必定的掌握。

網絡方面,核心的就是TCP/IP協議,固然HTTP協議也是必學必會的知識。

以上說的都是一些編程的基礎知識。掌握了這些編程的基礎知識,就能夠邁入Java開發的大門了。接下來就重點看下Java相關的基礎技術體系。

02 Java基礎技術

首先,要對Java語言的所具有的基礎特性有了解,好比面向對象、繼承、內部類、反射、泛型、序列化、引用、異常等。

其次,進入到對java的核心類庫(Java core)的學習,須要作到很是熟悉甚至精通,理解他們背後的實現原理,這部分的核心是Java集合類、java.lang、包下面的相關類等。

第三,掌握了Java core相關類庫後,就須要深刻到jvm層面學習。包括類加載機制,GC的算法原理和調優,不一樣種類的垃圾收集器的區別等等。在後面進入到真正的企業級開發過程當中,遇到的許多問題都是須要深刻到jvm層面研究相關參數和信息才能發現和解決。

第四,真正的企業級開發都會涉及到多線程和網絡編程。多線程相關內容包括線程、線程池、併發編程等,特別是java.util.concurrent包下的相關類是必需要掌握的。網絡編程包括基於tcp、udp通訊的,主要須要瞭解socket編程相關內容,另外就是基於http相關的Java web編程相關,主要是jsp和servlet相關技術,不過隨着先後端分離的緣由,目前已經不多使用jsp了。

第五,企業級開發通常都離不開數據庫,Java和數據庫相關的技術主要是jdbc,也有一些場景的數據庫鏈接池的框架如c3p0、dbcp等技術。

最後,寫完代碼後,程序員都須要作一些自測,經常使用的單元測試框架如junit、testng、mockito等也是必需要熟悉的。

03 開發框架

掌握了Java基礎的技術後,並不意味着經過這些技術就可以很好的完成企業級應用的開發,利用一些成熟的框架能夠大幅提升編程的效率。

在10年前,比較流行的Java相關的開發框架主要是ssh,包括spring、struts2和hibernate,隨着技術的迭代更新, 這些框架也不斷升級換代,目前在企業中大部分使用的框架是spring+springMVC+mybatis。隨着近幾年互聯網和移動互聯網的發展,高併發大流量系統愈來愈常見,對系統性能要求也不斷提升,微服務和緩存系統也成爲標配,相關的技術框架主要是spring cloud全家桶和springboot。固然相似dubbo這種RPC框架在企業中也使用的較多。而緩存系統使用比較多的是redis、memcache等。

爲了排查問題,正常的企業應用系統都須要記錄日誌,經常使用的框架有slf4j、log4j、logback等。

除此以外,還有工做流開發場景會使用到的框架如jbpm、activiti等,權限控制開發場景會使用到的框架如shiro,處理郵件相關的Java mail等。

使用這些應用框架開發出的應用,在真正提供服務前,還須要部署到機器上,這時就少不了應用服務器來支撐服務的部署。目前大部分的互聯網公司都採用tomcat或jboss等輕量級的應用服務器部署應用,還有相對複雜一些的企業級應用服務器如weblogic、websphere等。另外爲了作好負載均衡,還須要將應用服務器配合nginx等作反向代理一塊兒使用 。

04 工具系統

工欲善其事,必先利其器。Java領域也有一些經常使用的工具和支撐類的系統。如Java開發工具,如今用的比較可能是idea和eclipse。

代碼版本管理工具svn和git,不過目前svn已經極少使用了,大部分企業會使用gitlab結合git來作代碼倉庫管理。

包依賴的管理工具maven,以及管理Java包倉庫的nexus和artifactory。

另外若是須要作持續集成和持續發佈使用的jenkins等

以上這些只是北哥這些年在Java相關領域學習的相關技術內容的一部分,實際的開發過程當中,還會有大量的相關技術涉及到,這裏就再也不詳細描述。管中窺豹,也但願可以給新入門的同窗一些幫助。

若是你有其它想法,也歡迎與我交流。

相關閱讀

聊聊程序員的核心能力

相關文章
相關標籤/搜索