<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一個(gè)Java程序員成長之路

          共 2668字,需瀏覽 6分鐘

           ·

          2020-11-17 06:09

          北哥在前文總結(jié)了程序員的核心能力,但在專業(yè)能力維度,只是做了大概的闡述,并沒有詳細(xì)展開。從今天開始,我會(huì)把程序員成長過程中,學(xué)習(xí)的知識總結(jié)成系列文章陸續(xù)發(fā)出來,還沒關(guān)注我的小伙伴可以點(diǎn)擊關(guān)注啦,防止走丟。

          本文是第一篇,關(guān)于Java領(lǐng)域的相關(guān)技術(shù)內(nèi)容。


          北哥是java程序員出身,寫了有十多年的Java代碼,這里的分享是我這些年在java相關(guān)領(lǐng)域?qū)W習(xí)大致路徑。


          Java本身是一門編程語言,相比其它的編程語言如c、c++,java在企業(yè)級開發(fā)中是使用最多的。在包括BAT等互聯(lián)網(wǎng)大廠,人員最多的編程崗位基本都是Java開發(fā)崗。核心在于java豐富的生態(tài)和社區(qū),對企業(yè)級應(yīng)用開發(fā)良好的支持,以及源源不斷的人才供應(yīng)。


          既然Java是一門編程語言,因此最基礎(chǔ)的編程知識是需要掌握的,大部分計(jì)算機(jī)專業(yè)畢業(yè)的學(xué)生應(yīng)該都學(xué)習(xí)過相關(guān)課程,這里做個(gè)簡單總結(jié)。



          01

          編程基礎(chǔ)

          最基本的編程基礎(chǔ)知識就是數(shù)據(jù)結(jié)構(gòu)和算法了。


          數(shù)據(jù)結(jié)構(gòu)方面,常用的包括數(shù)組、棧、隊(duì)列、鏈表、二叉樹、紅黑樹、哈希表、堆、圖等。


          這些數(shù)據(jù)結(jié)構(gòu)基本上都能夠在java的基礎(chǔ)包里面找到相關(guān)實(shí)現(xiàn),我在剛開始學(xué)習(xí)Java的時(shí)候,不知道如何入門,就是研究這些數(shù)據(jù)結(jié)構(gòu)的Java實(shí)現(xiàn)。事實(shí)證明,無論在后來接觸什么樣的框架、中間件,深入到源碼級,這些基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)隨處可見。


          在算法層面,需要掌握一些基礎(chǔ)的算法,常用的有搜索和排序,像二分搜索、冒泡排序、選擇排序、插入排序等。這些算法不僅僅需要了解他們的實(shí)現(xiàn),還需要搞清楚時(shí)間復(fù)雜度和空間復(fù)雜度。除了一些基礎(chǔ)的算法,還有一些高級算法例如貪心、背包、剪枝、動(dòng)態(tài)規(guī)劃等,這些高級算法會(huì)在大數(shù)據(jù)、人工智能和算法領(lǐng)域被頻繁的應(yīng)用。


          數(shù)據(jù)結(jié)構(gòu)之外,另外一個(gè)編程方面的基礎(chǔ)知識是操作系統(tǒng)和網(wǎng)絡(luò)相關(guān)內(nèi)容。

          在操作系統(tǒng)方面,最基本的需要對進(jìn)程、線程、內(nèi)存管理等有一定的掌握。

          網(wǎng)絡(luò)方面,核心的就是TCP/IP協(xié)議,當(dāng)然HTTP協(xié)議也是必學(xué)必會(huì)的知識。


          以上說的都是一些編程的基礎(chǔ)知識。掌握了這些編程的基礎(chǔ)知識,就可以邁入Java開發(fā)的大門了。接下來就重點(diǎn)看下Java相關(guān)的基礎(chǔ)技術(shù)體系。






          02


          Java基礎(chǔ)技術(shù)

          首先,要對Java語言的所具備的基礎(chǔ)特性有了解,比如面向?qū)ο蟆⒗^承、內(nèi)部類、反射、泛型、序列化、引用、異常等。


          其次,進(jìn)入到對java的核心類庫(Java?core)的學(xué)習(xí),需要做到非常熟悉甚至精通,理解他們背后的實(shí)現(xiàn)原理,這部分的核心是Java集合類、java.lang、java.io包下面的相關(guān)類等。


          第三,掌握了Java core相關(guān)類庫后,就需要深入到j(luò)vm層面學(xué)習(xí)。包括類加載機(jī)制,GC的算法原理和調(diào)優(yōu),不同種類的垃圾收集器的區(qū)別等等。在后面進(jìn)入到真正的企業(yè)級開發(fā)過程中,遇到的許多問題都是需要深入到j(luò)vm層面研究相關(guān)參數(shù)和信息才能發(fā)現(xiàn)和解決。


          第四,真正的企業(yè)級開發(fā)都會(huì)涉及到多線程和網(wǎng)絡(luò)編程。多線程相關(guān)內(nèi)容包括線程、線程池、并發(fā)編程等,特別是java.util.concurrent包下的相關(guān)類是必須要掌握的。網(wǎng)絡(luò)編程包括基于tcp、udp通信的,主要需要了解socket編程相關(guān)內(nèi)容,另外就是基于http相關(guān)的Java web編程相關(guān),主要是jsp和servlet相關(guān)技術(shù),不過隨著前后端分離的原因,目前已經(jīng)很少使用jsp了。


          第五,企業(yè)級開發(fā)一般都離不開數(shù)據(jù)庫,Java和數(shù)據(jù)庫相關(guān)的技術(shù)主要是jdbc,也有一些場景的數(shù)據(jù)庫連接池的框架如c3p0、dbcp等技術(shù)。


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




          03


          開發(fā)框架

          掌握了Java基礎(chǔ)的技術(shù)后,并不意味著通過這些技術(shù)就能夠很好的完成企業(yè)級應(yīng)用的開發(fā),利用一些成熟的框架可以大幅提高編程的效率。


          在10年前,比較流行的Java相關(guān)的開發(fā)框架主要是ssh,包括spring、struts2和hibernate,隨著技術(shù)的迭代更新, 這些框架也不斷升級換代,目前在企業(yè)中大部分使用的框架是spring+springMVC+mybatis。隨著近幾年互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)的發(fā)展,高并發(fā)大流量系統(tǒng)越來越常見,對系統(tǒng)性能要求也不斷提高,微服務(wù)和緩存系統(tǒng)也成為標(biāo)配,相關(guān)的技術(shù)框架主要是spring cloud全家桶和springboot。當(dāng)然類似dubbo這種RPC框架在企業(yè)中也使用的較多。而緩存系統(tǒng)使用比較多的是redis、memcache等。


          為了排查問題,正常的企業(yè)應(yīng)用系統(tǒng)都需要記錄日志,常用的框架有slf4j、log4j、logback等。


          除此之外,還有工作流開發(fā)場景會(huì)使用到的框架如jbpm、activiti等,權(quán)限控制開發(fā)場景會(huì)使用到的框架如shiro,處理郵件相關(guān)的Java mail等。


          使用這些應(yīng)用框架開發(fā)出的應(yīng)用,在真正提供服務(wù)前,還需要部署到機(jī)器上,這時(shí)就少不了應(yīng)用服務(wù)器來支撐服務(wù)的部署。目前大部分的互聯(lián)網(wǎng)公司都采用tomcat或jboss等輕量級的應(yīng)用服務(wù)器部署應(yīng)用,還有相對復(fù)雜一些的企業(yè)級應(yīng)用服務(wù)器如weblogic、websphere等。另外為了做好負(fù)載均衡,還需要將應(yīng)用服務(wù)器配合nginx等做反向代理一起使用 。


          04


          工具系統(tǒng)

          工欲善其事,必先利其器。Java領(lǐng)域也有一些常用的工具和支撐類的系統(tǒng)。如Java開發(fā)工具,現(xiàn)在用的比較多是idea和eclipse。


          代碼版本管理工具svn和git,不過目前svn已經(jīng)極少使用了,大部分企業(yè)會(huì)使用gitlab結(jié)合git來做代碼倉庫管理。


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


          另外如果需要做持續(xù)集成和持續(xù)發(fā)布使用的jenkins等


          以上這些只是北哥這些年在Java相關(guān)領(lǐng)域?qū)W習(xí)的相關(guān)技術(shù)內(nèi)容的一部分,實(shí)際的開發(fā)過程中,還會(huì)有大量的相關(guān)技術(shù)涉及到,這里就不再詳細(xì)描述。管中窺豹,也希望能夠給新入門的同學(xué)一些幫助。


          如果你也有相關(guān)經(jīng)歷和想法,也歡迎與我交流。
          END/往期推薦:




          1.微服務(wù)實(shí)戰(zhàn)系列

          2.springboot從入門到精通

          3.java入門到精通

          4.中間件等

          5.程序人生

          更多信息請關(guān)注公眾號:「軟件老王」,關(guān)注不迷路,軟件老王和他的IT朋友們,分享一些他們的技術(shù)見解和生活故事。

          瀏覽 45
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  超黄网站 | 亚洲专区视频 | 国产精成人品麻豆 | 欧美成人视频18 | 亚洲第五自拍 |