Java程式設計師必備技能
北哥在前文總結了程式設計師的核心能力,但在專業能力維度,只是做了大概的闡述,並沒有詳細展開。從今天開始,我會把我作為程式設計師成長過程中,學習的知識總結成系列文章陸續發出來,供大家學習參考。
本文是第一篇,關於Java領域的相關技術內容
北哥是java程式設計師出身,寫了有十多年的Java程式碼,這裡的分享是我這些年在java相關領域學習大致路徑。
Java本身是一門程式語言,相比其它的程式語言如c、c++,java在企業級開發中是使用最多的。在包括BAT等網際網路大廠,人員最多的程式設計崗位基本都是Java開發崗。核心在於java豐富的生態和社群,對企業級應用開發良好的支援,以及源源不斷的人才供應。
既然Java是一門程式語言,因此最基礎的程式設計知識是需要掌握的,大部分計算機專業畢業的學生應該都學習過相關課程,這裡做個簡單總結。
01程式設計基礎
最基本的程式設計基礎知識就是資料結構和演算法了。
資料結構方面,常用的包括陣列、棧、佇列、連結串列、二叉樹、紅黑樹、雜湊表、堆、圖等。
這些資料結構基本上都能夠在java的基礎包裡面找到相關實現,我在剛開始學習Java的時候,不知道如何入門,就是研究這些資料結構的Java實現。事實證明,無論在後來接觸什麼樣的框架、中介軟體,深入到原始碼級,這些基礎的資料結構隨處可見。
在演算法層面,需要掌握一些基礎的演算法,常用的有搜尋和排序,像二分搜尋、氣泡排序、選擇排序、插入排序等。這些演算法不僅僅需要了解他們的實現,還需要搞清楚時間複雜度和空間複雜度。除了一些基礎的演算法,還有一些高階演算法例如貪心、揹包、剪枝、動態規劃等,這些高階演算法會在大資料、人工智慧和演算法領域被頻繁的應用。
資料結構之外,另外一個程式設計方面的基礎知識是作業系統和網路相關內容。
在作業系統方面,最基本的需要對程式、執行緒、記憶體管理等有一定的掌握。
網路方面,核心的就是TCP/IP協議,當然HTTP協議也是必學必會的知識。
以上說的都是一些程式設計的基礎知識。掌握了這些程式設計的基礎知識,就可以邁入Java開發的大門了。接下來就重點看下Java相關的基礎技術體系。
02 Java基礎技術
首先,要對Java語言的所具備的基礎特性有了解,比如物件導向、繼承、內部類、反射、泛型、序列化、引用、異常等。
其次,進入到對java的核心類庫(Java core)的學習,需要做到非常熟悉甚至精通,理解他們背後的實現原理,這部分的核心是Java集合類、java.lang、http://java.io包下面的相關類等。
第三,掌握了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相關領域學習的相關技術內容的一部分,實際的開發過程中,還會有大量的相關技術涉及到,這裡就不再詳細描述。管中窺豹,也希望能夠給新入門的同學一些幫助。
如果你有其它想法,也歡迎與我交流。
相關閱讀
我是程式設計師北哥,一個資深程式設計師,架構師,團隊管理者。先後經歷過程式設計師、技術經理、架構師、技術專家和團隊技術總監等多個身份變化,也經歷過數個產品從0到1的打造。
在這裡會分享我的一些工作經歷、思考和總結。偶爾也會發發感悟、隨想和讀書筆記。希望這些能對您有所啟發。
歡迎關注公眾號:程式設計師北哥。
相關文章
- 新手程式設計師必備10大技能程式設計師
- 程式設計師應該具備哪些必備技能程式設計師
- Java開發需要掌握哪些技術?Java程式設計師必備技能Java程式設計師
- 程式設計師必備技能-科學砍需求程式設計師
- Git算不算程式設計師的必備技能?Git程式設計師
- 程式設計師寫作的必備技能 Markdown程式設計師
- 傳說中的程式設計師必備技能程式設計師
- Java程式設計師漲薪必備技能(1-5年必看!!!)Java程式設計師
- Java 程式設計師漲薪必備技能(1-5 年必看!)Java程式設計師
- 走向架構師——1~3年java程式設計師面試必備的技能架構Java程式設計師面試
- 好程式設計師:一個Java高階工程師的必備技能程式設計師Java工程師
- 優秀程式設計師必備的10個技能程式設計師
- 優秀程式設計師必備的15大技能程式設計師
- 程式設計師必備畫圖技能之——時序圖程式設計師時序圖
- 程式設計師必備技能:一鍵建立windows 服務程式設計師Windows
- 一個合格的程式設計師,需要哪些必備技能?程式設計師
- 好程式設計師分享大資料三大必備技能程式設計師大資料
- Java11新特性,Java程式設計師必備Java程式設計師
- 程式設計師必備裝備!程式設計師
- 程式設計師MAC必備程式設計師Mac
- Java程式設計師必備的工具和框架Java程式設計師框架
- 程式設計師必備Python技能!不會?究竟有多可怕....程式設計師Python
- 3 年 Java 程式設計師應該具備的技能!Java程式設計師
- 為什麼說程式碼註釋是程式設計師必備的技能?程式設計師
- Java程式設計師必備的Intellij外掛Java程式設計師IntelliJ
- 程式設計師跳槽必備神器程式設計師
- 不難!月薪50k程式設計師必備5大核心技能程式設計師
- 每個優秀程式設計師必須具備的技術技能程式設計師
- 快速掌握awk linux#高階程式設計師必備技能#薦Linux程式設計師
- Java架構師必備技能:docker使用大全Java架構Docker
- 成功網頁設計師的七大必備技能網頁
- 好程式設計師Java培訓分享Java程式設計師技能提升指南程式設計師Java
- Java程式設計師必備的一些流程圖Java程式設計師流程圖
- 15款Java程式設計師必備的開發工具Java程式設計師
- JAVA程式設計師換機必備軟體大盤點Java程式設計師
- 「程式設計羽錄」上線,程式設計師必備的這些技能你能get到嘛?程式設計師
- 程式設計師必備的表情包程式設計師
- 程式設計師面試必備規程程式設計師面試