欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Java工程師學(xué)習(xí)指南(完結(jié)篇)

Java工程師學(xué)習(xí)指南

創(chuàng)新互聯(lián)主營烏拉特前網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶APP開發(fā),烏拉特前h5小程序設(shè)計(jì)搭建,烏拉特前網(wǎng)站營銷推廣歡迎烏拉特前等地區(qū)企業(yè)咨詢

完結(jié)篇

先聲明一點(diǎn),文章里面不會詳細(xì)到每一步怎么操作,只會提供大致的思路和方向,給大家以啟發(fā),如果真的要一步一步指導(dǎo)操作的話,那至少需要一本書的厚度啦。

因?yàn)楣P者還只是一名在校生,所以寫的內(nèi)容主要還是針對Java初學(xué)者或者接觸Java后端不久的朋友,不適用于已經(jīng)工作多年的Java大佬們。所以本文中的方法不一定適合所有人,如有錯誤還請諒解。

本期的內(nèi)容是系列文章的最后一部分內(nèi)容了。這個系列可能還有很多東西沒有說清楚,也有很多內(nèi)容被忽略了。但是這些內(nèi)容也確實(shí)是筆者結(jié)合自己經(jīng)驗(yàn)總結(jié)而成的,希望能對大家有用 ~ 當(dāng)然如果有什么建議也可以隨時和筆者交流。

上期回顧

上期我們重點(diǎn)介紹了Java工程師進(jìn)階所需要掌握的一些技術(shù)內(nèi)容。特別對于即將參加校招的同學(xué)來說,最重要的也是這部分內(nèi)容,你需要了解JVM虛擬機(jī)原理,Java并發(fā)原理,并且熟悉JDK的部分源碼,了解這些API的底層實(shí)現(xiàn)。

之所以把這部分放在Java Web項(xiàng)目之后來講,是因?yàn)槲矣X得,一開始做項(xiàng)目的時候你不可能已經(jīng)掌握好上述內(nèi)容了,所以你完全可以帶著問題去做項(xiàng)目,再花時間去學(xué)習(xí)底層原理,這樣你可以很好地結(jié)合你之前實(shí)踐過的代碼去理解那些底層技術(shù)了。

本期主題

本期主要介紹的是Java后端技術(shù)比較“高端”的一些內(nèi)容,也就是我們經(jīng)常聊的分布式,架構(gòu),緩存,消息隊(duì)列等內(nèi)容,另外我們也會介紹一些大后端相關(guān)的技術(shù),比如云計(jì)算(OpenStack和docker),大數(shù)據(jù)(hadoop生態(tài)),以及一些常用的后端技術(shù)。

這些內(nèi)容其實(shí)離我們并不遠(yuǎn),只不過在平時的項(xiàng)目中可能用的比較少,所以作為學(xué)生黨一般也只能通過一些文章或者書本去學(xué)習(xí)理論知識。那么基于這么一個情況,我們來談?wù)勗趺磳W(xué)習(xí)這部分的內(nèi)容吧。

01

Web后端架構(gòu)

后端進(jìn)階第一步,先把Web架構(gòu)相關(guān)的技術(shù)學(xué)好吧,因?yàn)橹按蠹叶甲鲞^Java Web項(xiàng)目,想必對這塊內(nèi)容還是比較熟悉的吧。我們需要了解Web架構(gòu)演化的歷史,了解為什么要做服務(wù)器集群,為什么要用緩存,為什么要做拆分,做主從,以及為什么要有分布式。

推薦資源:《深入分析Java Web技術(shù)內(nèi)幕》,《大型網(wǎng)站技術(shù)架構(gòu)》

兩本都是阿里大佬出的書,兩位都是淘寶系的技術(shù)大牛。前一本書主要講述的Java Web的一些技術(shù)基礎(chǔ),關(guān)于Web架構(gòu)的內(nèi)容比較少。

后一本則是李智慧大佬寫的架構(gòu)科普書籍,用非常簡單易懂的語言寫出了大型Web項(xiàng)目架構(gòu)之美,分別著眼于高可用,高性能,高擴(kuò)展等方面講解了很多設(shè)計(jì)結(jié)構(gòu)的原則和方法。這本書應(yīng)該是Web架構(gòu)小白最好的入門書籍了。

02

分布式理論基礎(chǔ)

由于下面的內(nèi)容或多或少都會涉及到分布式相關(guān)的知識,所以這一部分我們主要介紹一下有關(guān)分布式的基礎(chǔ)知識。筆者對分布式的學(xué)習(xí)主要也停留在理論上,所以這里講的也是一些理論的東西。

推薦資源:《從Paxos到zookeeper分布式一致性原理與實(shí)踐》,我的技術(shù)博客專欄“分布式系統(tǒng)理論與實(shí)踐”

這本書比較好地科普了分布式基礎(chǔ)知識,也介紹了zookeeper的原理和使用。了解zookeeper是了解分布式技術(shù)很重要的一個環(huán)節(jié)。

1 CAP 和 BASE

談分布式就要談CAP,一致性,高可用,網(wǎng)絡(luò)分區(qū)容忍性為何只能三選二,為什么網(wǎng)絡(luò)分區(qū)容忍性必須要被考慮。CAP在實(shí)際應(yīng)用中真的可靠么?

BASE出現(xiàn)的原因,為什么BASE更容易實(shí)現(xiàn),更適合實(shí)際應(yīng)用,BASE可以通過哪些技術(shù)去實(shí)現(xiàn)呢?

2 一致性協(xié)議和算法

一致性協(xié)議也是分布式理論的一個重點(diǎn),2PC,3PC,分別指的是什么,其中分別有什么問題。3PC解決了2PC的一個問題,卻仍然不完美。

Paxos和Raft兩種一致性算法,顯然前者比后者復(fù)雜得多,但是Raft可能更加實(shí)用。為什么我們需要一致性算法,它們又有什么用呢。

3 分布式事務(wù)和最終一致性

分布式事務(wù)是一個復(fù)雜的概念,主要指分布式系統(tǒng)中需要強(qiáng)一致場景時所用到的事務(wù)。理解和實(shí)現(xiàn)它都不是簡單的事情。

如果我們退而求其次,不要求強(qiáng)一致性,而選擇最終一致性,則可以用更加靈活的方案,比如事務(wù)消息。

常見分布式技術(shù)

推薦資源:《從Paxos到zookeeper分布式一致性原理與實(shí)踐》,我的技術(shù)博客專欄“分布式系統(tǒng)理論與實(shí)踐”,《深入理解Spring Cloud與微服務(wù)構(gòu)建》,《分布式服務(wù)框架原理與實(shí)踐》。

1 zookeeper

上文說到zookeeper是分布式技術(shù)很重要的一塊內(nèi)容,這是因?yàn)閦ookeeper用于管理和協(xié)調(diào)分布式組件,雖然它出自hadoop生態(tài),卻用于很多應(yīng)用當(dāng)中,基本上有分布式的地方就有zk的存在。

簡單說來,zk可以提供全局統(tǒng)一的節(jié)點(diǎn)樹結(jié)構(gòu),通過節(jié)點(diǎn)來管理資源,同時zk自身是使用集群方式部署的,所以保證自己是高可用的。根據(jù)這一特點(diǎn),它可以作為服務(wù)注冊中心,還可以實(shí)現(xiàn)分布式鎖等功能。

2 分布式服務(wù)

分布式服務(wù)是一個挺有意思的東西,也很常用,簡單來說,就是把服務(wù)組件部署在不同節(jié)點(diǎn)上,通過rpc的方式訪問,為了實(shí)現(xiàn)這一功能,我們需要考慮通信協(xié)議,序列化方式,進(jìn)一步來說,我們還要了解如何做服務(wù)注冊和發(fā)現(xiàn),以及如何做限流,做服務(wù)熔斷和降級,等等等等。

常見的分布式服務(wù)框架有dubbo,以及Spring Cloud這類產(chǎn)品,學(xué)會使用他們,然后了解它們的底層實(shí)現(xiàn)原理,相信會是一個很有趣的過程。

3 負(fù)載均衡

關(guān)于負(fù)載均衡,說起來其實(shí)很簡單,就是把一組請求分成多組,按照某種規(guī)則分發(fā)到多臺服務(wù)器上。

但是負(fù)載均衡也涉及很多內(nèi)容,包括負(fù)載均衡的算法,負(fù)載均衡的實(shí)現(xiàn)方式,我們需要了解它到底是在哪一層實(shí)現(xiàn)的。

一般來說,常用的負(fù)載均衡方式有nginx和lvs兩種,分別是7層和4層的負(fù)載均衡,一個基于域名進(jìn)行負(fù)載均衡,一個基于端口號做負(fù)載均衡。了解它們的實(shí)現(xiàn)原理,會讓你更好地理解這部分內(nèi)容。

4 分布式session和分布式鎖

這兩個組件也是分布式項(xiàng)目中經(jīng)常要用到的,了解它們的使用和實(shí)現(xiàn)原理,有助于以后在項(xiàng)目中的實(shí)踐。

分布式session一般有多種實(shí)現(xiàn)方式,可以存數(shù)據(jù)庫或者緩存,也可以單獨(dú)部署成一個服務(wù),總之最重要的一點(diǎn)就是,性能要好,并且要高可用。

分布式鎖則用于一些需要一致性的場景中,比如訂單生成這種全局唯一的功能,分布式鎖通??梢杂镁彺婊蛘邤?shù)據(jù)庫來實(shí)現(xiàn),但為了保證高性能,并且避免死鎖,我們一般采用redis或者zookeeper來實(shí)現(xiàn)。

04

緩存

講到緩存,我們說的最多的就是Redis,所以我們要講的也是Redis。學(xué)習(xí)Redis,除了學(xué)會使用簡單的api之外,最好還要了解它的實(shí)現(xiàn)原理。

推薦資源:我的技術(shù)博客專欄“重新學(xué)習(xí)MySQL和Redis”,《Redis設(shè)計(jì)與實(shí)現(xiàn)》

這里我們主要介紹三部分內(nèi)容,也是我個人認(rèn)為比較重要的三塊內(nèi)容。

1 數(shù)據(jù)結(jié)構(gòu)和底層實(shí)現(xiàn)

Redis的數(shù)據(jù)結(jié)構(gòu)比較豐富,但更有意思的是這些數(shù)據(jù)結(jié)構(gòu)背后的底層實(shí)現(xiàn),也就是作者如何用c語言來實(shí)現(xiàn)這些結(jié)構(gòu)的。其中會有你熟悉的數(shù)組,鏈表,還有一些有意思的結(jié)構(gòu)比如跳表,哈希表。

2 持久化方式

持久化方式主要分兩種,aof和rdb,前者基于追加日志的方式來實(shí)現(xiàn)日志持久化,后者則是使用備份數(shù)據(jù)的方式來實(shí)現(xiàn)持久化。

3 分布式方案

這是Redis最有趣也最復(fù)雜的部分。 首先,Redis可以使用主從的方式部署,其中“哨兵”這一組件用于故障切換。

基于哨兵的主從部署后來發(fā)展為Redis cluster的部署方式,也就是Redis集群,通過分片的方式來部署Redis集群,并且集群中任一節(jié)點(diǎn)都可以用來對外提供服務(wù)。

當(dāng)然,除了Redis集群之外,還有codis的分布式方案,codis基于代理的方式來實(shí)現(xiàn),表面上還是使用原來的Redis API,但實(shí)際上訪問的卻是一個Redis集群。

05

消息隊(duì)列

消息隊(duì)列的作用一般來說就是削峰,控流,解耦合,目前業(yè)界也有很多的消息隊(duì)列產(chǎn)品,在很多公司都會使用,當(dāng)然,它們各有各的優(yōu)缺點(diǎn),我們也不必全都了解,這里我們大概介紹3種消息隊(duì)列,它們各自的特點(diǎn)都比較鮮明,值得大家去了解一番。

1 RabbitMQ

筆者剛開始接觸的消息隊(duì)列是rabbitmq,它的使用方法比較簡單。 RabbitMQ是一個由erlang開發(fā)的AMQP(Advanced Message Queue )的開源實(shí)現(xiàn),主要有以下特點(diǎn):

<pre>

  1. 安裝部署簡單,上手門檻低,功能豐富,符合AMQP標(biāo)準(zhǔn);

  2. 企業(yè)級消息隊(duì)列,經(jīng)過大量實(shí)踐考驗(yàn)的高可靠;

  3. 集群易擴(kuò)展,可以輕松的增減集群節(jié)點(diǎn);

  4. 有強(qiáng)大的WEB管理頁面。

</pre>

2 Kafka

與其他MQ相比較,Kafka有一些優(yōu)缺點(diǎn),主要如下

優(yōu)點(diǎn):

<pre>

  1. 可擴(kuò)展。Kafka集群可以透明的擴(kuò)展,增加新的服務(wù)器進(jìn)集群。

  2. 高性能。Kafka性能遠(yuǎn)超過傳統(tǒng)的ActiveMQ、RabbitMQ等,Kafka支持Batch操作。

  3. 容錯性。Kafka每個Partition數(shù)據(jù)會復(fù)制到幾臺服務(wù)器,當(dāng)某個Broker失效時,Zookeeper將通知生產(chǎn)者和消費(fèi)者從而使用其他的Broker。

</pre>

缺點(diǎn):

<pre>

  1. 重復(fù)消息。Kafka保證每條消息至少送達(dá)一次,雖然幾率很小,但一條消息可能被送達(dá)多次。

  2. 消息亂序。Kafka某一個固定的Partition內(nèi)部的消息是保證有序的,如果一個Topic有多個Partition,partition之間的消息送達(dá)不保證有序。

  3. 復(fù)雜性。Kafka需要Zookeeper的支持,Topic一般需要人工創(chuàng)建,部署和維護(hù)比一般MQ成本更高。

</pre>

RocketMQ

RocketMQ是一個純java、分布式、隊(duì)列模型的開源消息中間件,前身是Metaq,當(dāng) Metaq 3.0發(fā)布時,產(chǎn)品名稱改為 RocketMQ。

具有以下特點(diǎn):

<pre>

  1. 1、能夠保證嚴(yán)格的消息順序

  2. 2、提供豐富的消息拉取模式

  3. 3、高效的訂閱者水平擴(kuò)展能力

  4. 4、實(shí)時的消息訂閱機(jī)制

  5. 5、億級消息堆積能力

</pre>

除此之外,它還有一個優(yōu)點(diǎn),就是支持事務(wù)消息,讓分布式事務(wù)的實(shí)現(xiàn)變得簡單

05

分布式數(shù)據(jù)庫

這里說的分布式”數(shù)據(jù)庫“,其實(shí)指的是數(shù)據(jù)庫的分布式方案,更具體來說,主要指的是數(shù)據(jù)庫的主從部署,以及分庫,分表。

1 主從復(fù)制和讀寫分離

這是數(shù)據(jù)庫高可用的基礎(chǔ)。MySQL數(shù)據(jù)庫會使用日志來完成主從復(fù)制,先寫主庫,然后再同步到從庫。讀寫分離則一般是指的是:從庫負(fù)責(zé)讀,主庫負(fù)責(zé)寫。

2 分庫分表方案

分庫分表是解決大表性能瓶頸的一種方法,當(dāng)然也分為橫向拆分和縱向拆分,橫向拆分指的就是減少單表的數(shù)據(jù)量,放到其他表或者其他庫中??v向拆分則一般指按照業(yè)務(wù)來拆分,把不必要的字段放到其他表中。

分庫分表可以在應(yīng)用層做,通過對id或者其他字段進(jìn)行hash以便映射到對應(yīng)的表中。當(dāng)然也可以通過數(shù)據(jù)庫中間件來完成,例如mycat這種中間件,通過代理的方式實(shí)現(xiàn)分庫分表,非常方便。

06

大后端相關(guān)技術(shù)

這部分的內(nèi)容筆者也只是略知一二,所以這里只是拋磚引玉,做一個簡單的科普罷了。畢竟咱們學(xué)技術(shù)的人都是先講深度再來談廣度。當(dāng)你對之前的內(nèi)容掌握得比較好的時候,再去看看大后端的一些其他技術(shù),也會感覺挺有意思的。

下面這些技術(shù)主要是我自己學(xué)習(xí)路上接觸過的一些內(nèi)容,所以比較熟悉,才拿出來分享,至于適不適合大家的口味,可能就見仁見智了。

Hadoop生態(tài)

筆者之前參與過數(shù)據(jù)倉庫相關(guān)的項(xiàng)目,所以稍微了解了這方面的內(nèi)容,感覺hadoop生態(tài)還是挺有意思的。

大家不妨去了解一下其中的基本組件,然后打一個集群自己玩玩看。 常見的組件有:hdfs,hbase,hive,zookeeper,flume,sqoop,yarn。

推薦資源:我的技術(shù)博客-個人分類-hadoop,《大數(shù)據(jù)技術(shù)原理與應(yīng)用》

對于入門hadoop生態(tài)來說,這本書完全足夠了,如果你要做大數(shù)據(jù)平臺開發(fā)或者是數(shù)據(jù)研發(fā)工程師,可能需要非常全面地了解這些組件的底層原理。

云計(jì)算初探

筆者之前參與過私有云相關(guān)的項(xiàng)目,所以稍微了解了這方面的內(nèi)容,感覺這方面的內(nèi)容也蠻有趣的。

我在項(xiàng)目中主要接觸到的是OpenStack,docker以及kubenetes,OpenStack是一個私有云生態(tài),內(nèi)部結(jié)構(gòu)對于我們來說還是比較復(fù)雜的,不過最根本的虛擬化技術(shù)還是基于kvm虛擬化來實(shí)現(xiàn)的。

docker則是現(xiàn)在非常流行的一種容器,用于快速部署應(yīng)用。

kubenetes也借著docker的東風(fēng)火了起來,可以理解為是基于容器的分布式調(diào)度系統(tǒng)。

這些技術(shù)在企業(yè)中也是比較常用的,只不過對于研發(fā)同學(xué)來說,更多時候扮演的是工具的角色。

推薦資源:《Docker技術(shù)入門與實(shí)戰(zhàn)》,《kubenetes權(quán)威指南》

其他常見后端技術(shù)

除此之外,想必大家還了解過很多其他的技術(shù),只不過不同的業(yè)務(wù)用到的組件往往不一樣,所以并不是每個東西你都需要去了解。

比如搜索引擎技術(shù)Lucene,基于它的兩款產(chǎn)品solr和elasticsearch,通常出現(xiàn)在需要搜索功能的項(xiàng)目中。

再比如流式計(jì)算技術(shù),如storm和spark streaming等等,通常都用于大數(shù)據(jù)部門,用作實(shí)時數(shù)據(jù)采集。

又如ELK實(shí)現(xiàn)的分布式日志系統(tǒng),多用于分析和定位系統(tǒng)問題,經(jīng)常會出現(xiàn)在一些比較重要的應(yīng)用當(dāng)中。

當(dāng)然,也有現(xiàn)在大火的人工智能,還有太多的技術(shù)我們沒機(jī)會去了解和使用,我們能做的也就是在自己能力范圍內(nèi)把需要做的東西做到最好了。

所以,這些內(nèi)容并不是每一樣你都需要知道,但是如果有時間去了解一下的話,還是建議多了解一點(diǎn)的。

總結(jié)

今天碼的字有點(diǎn)多,所以難免有些寫的不太好的地方,希望大家見諒??v觀全文,我們主要講了這些內(nèi)容:

1 Web架構(gòu)

2 分布式基礎(chǔ)理論

3 常見分布式技術(shù)

4 緩存

5 消息隊(duì)列

6 數(shù)據(jù)的分布式方案

7 大后端相關(guān)技術(shù)

至此本系列文章就已經(jīng)結(jié)束了,不知道大家有什么問題或者建議想和筆者交流嗎~趕緊加我的微信來聊聊吧。

寫本系列文章也是因?yàn)橛泻芏嗯笥严胍私飧忧逦腏ava后端學(xué)習(xí)路線,所以我總結(jié)了之前自己的學(xué)習(xí)歷程,才創(chuàng)作出這四篇文章,希望能夠?qū)Υ蠹矣兴鶐椭鷡

文章標(biāo)題:Java工程師學(xué)習(xí)指南(完結(jié)篇)
文章源于:http://aaarwkj.com/article32/jejopc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、小程序開發(fā)、網(wǎng)站排名移動網(wǎng)站建設(shè)、域名注冊、微信小程序

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
日韩有码高清av在线| 欧美激情日韩精品久久久| 久久亚洲天堂av丁香| 亚洲成人精品久久久| 欧美日韩国产免费电影| 久久99久久久久久精品| 粉嫩国产精品一区二区| 性生活免费在线观看视频| 说中文字幕的黄色大网站| av东京热免费看一区| 精品久久少妇激情视频| 国产亚洲精品免费视频| 日本高清不卡免费在线观看视频一二三区| 日韩精品欧美视频久久| 日本欧美自拍偷拍高清| 国产一区二区视频在线| 婷婷激情六月中文字幕| 欧美日韩免费爱爱视频| 国产视频一区二区三区网| 国产精品久久黑丝诱惑| 国产亚洲高清一区二区| 夫妻性生活视频在线免费看| 日韩精品在线观看不卡| 乡村丰满的大屁股熟妇| 亚洲激情中文字幕av网| 粉嫩av北条麻妃电影| 日本美女激情在线观看| 亚洲精品麻豆一区二区| 亚洲香蕉一级视频在线播放| 91精品麻豆国产自产在线| 久久日韩制服丝袜人妻| 亚洲一区二区天堂av| 日本av在线中文一区二区| 亚洲欧美精品福利在线| 久久中文字幕av一区| 国产三级在线视频不卡| 欧美女人又粗又长亚洲| 蜜桃视频国产在线观看| 亚洲成av人在线播放| 国产伦国产一区二区三区在线观看| 日本黄网色三级三级三级|