人妻系列无码专区av在线,国内精品久久久久久婷婷,久草视频在线播放,精品国产线拍大陆久久尤物

當(dāng)前位置:首頁 > 開發(fā)語言 > 正文

spring cloud面試題,web前端三大主流框架

spring cloud面試題,web前端三大主流框架

大家好,今天來為大家分享spring cloud面試題的一些知識(shí)點(diǎn),和web前端三大主流框架的問題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,...

大家好,今天來為大家分享spring cloud面試題的一些知識(shí)點(diǎn),和web前端三大主流框架的問題解析,大家要是都明白,那么可以忽略,如果不太清楚的話可以看看本篇文章,相信很大概率可以解決您的問題,接下來我們就一起來看看吧!

你遇到的前端面試題都有什么

1.cookiesession的用途和區(qū)別,以及有效期

1、cookie數(shù)據(jù)存放在客戶的瀏覽器上,session數(shù)據(jù)放在服務(wù)器上。

2、cookie不是很安全,別人可以分析存放在本地的COOKIE并進(jìn)行COOKIE欺騙

考慮到安全應(yīng)當(dāng)使用session。

3、session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上。當(dāng)訪問增多,會(huì)比較占用你服務(wù)器的性能

考慮到減輕服務(wù)器性能方面,應(yīng)當(dāng)使用COOKIE。

4、單個(gè)cookie保存的數(shù)據(jù)不能超過4K,很多瀏覽器都限制一個(gè)站點(diǎn)最多保存20個(gè)cookie。

2.vue的數(shù)據(jù)綁定原理,mvvm與mvc的區(qū)別

MVVM:

m:model數(shù)據(jù)模型層v:view視圖層vm:ViewModelvue中采用的是mvvm模式,這是從mvc衍生過來的MVVM讓視圖與viewmodel直接的關(guān)系特別的緊密,就是為了解決mvc反饋不及時(shí)的問題

圖片說明一下:

說到MVVM就要說一下雙向綁定和數(shù)據(jù)劫持的原理,

MVC:

m:model數(shù)據(jù)模型層v:view視圖層c:controller控制器

原理:c層需要控制model層的數(shù)據(jù)在view層進(jìn)行顯示

MVC兩種方式,圖片說明:

總結(jié):

mvvm與mvc最大的區(qū)別:MVVM實(shí)現(xiàn)了view與model的自動(dòng)同步,也就是model屬性改變的時(shí)候,我們不需要再自己手動(dòng)操作dom元素去改變view的顯示,而是改變屬性后該屬性對應(yīng)的view層會(huì)自動(dòng)改變。

不懂得可以復(fù)制鏈接查看:

https://www.pianshen.com/article/3716256399/

3.storage的區(qū)別sessionStoragelocalStorage

localStorage的生命周期是永久性的。假若使用localStorage存儲(chǔ)數(shù)據(jù),即使關(guān)閉瀏覽器,也不會(huì)讓數(shù)據(jù)消失,除非主動(dòng)的去刪除數(shù)據(jù),使用的方法如上所示。localStorage有l(wèi)ength屬性

sessionStorage的生命周期是在瀏覽器關(guān)閉前。也就是說,在整個(gè)瀏覽器未關(guān)閉前,其數(shù)據(jù)一直都是存在的。sessionStorage也有l(wèi)ength屬性,其基本的判斷和使用方法和localStorage的使用是一致的

4.v-model雙向數(shù)據(jù)原理

有一個(gè)文本框通過v-bind綁定了value屬性值為myname是我們在vue實(shí)例中定義的屬性傳統(tǒng)我們獲取文本框值方法可能通過getElementById找到文本框然后獲取其value屬性但是vue中直接通過v-bind綁定了value屬性所以不需要像之前那樣獲取值所以在后面的按鈕中獲取name值直接獲取vue實(shí)例對象data里面的myname屬性即可

【數(shù)據(jù)為尊----數(shù)據(jù)映射到瀏覽器如果數(shù)據(jù)v-model后修改(肯定input)然后到數(shù)據(jù)在有數(shù)據(jù)映射到瀏覽器頁面----映射關(guān)系統(tǒng)稱】

5.keepAlive用過嗎?什么作用?

緩存路由組件

使用的是vue的一個(gè)組件,參考vue的官方文檔

使用這個(gè)東西可以保證我們在切換組件的時(shí)候,原來顯示的組件不被銷毀

-----【保障組件的數(shù)據(jù)不會(huì)被切換路由而銷毀數(shù)據(jù)】

<keep-aliveinclude="Home">Home是對應(yīng)的組件對象的名字,不是路由的名字

<router-view></router-view>

</keep-alive>

6.多維數(shù)組拍平

數(shù)組拍平也稱數(shù)組扁平化,就是將數(shù)組里面的數(shù)組打開,最后合并為一個(gè)數(shù)組

一紅六種方法吧……

了解的請看:https://www.cnblogs.com/guan-shan/p/10165737.html

7.跨域的原因解決方案

跨域是指一個(gè)域下的文檔或腳本試圖去請求另一個(gè)域下的資源,這里跨域是廣義的。

這樣就可以說同源策略----協(xié)議---端口---域名

原生的src和href可以解決跨域

代理可以解決

請求頭也可以攜帶瀏覽器提示的也可以解決

一般都是后端解決跨域問題

【別的需要了解看下方鏈接】

https://blog.csdn.net/qq_41604383/article/details/100770100

8.uniApp兼容問題

§如果你使用cli創(chuàng)建項(xiàng)目(即項(xiàng)目根目錄是package.json),不管用什么ide,即便是用HBuilderX,切記cli項(xiàng)目的編譯器是在項(xiàng)目下的,HBuilderX不管怎么升級都不會(huì)影響編譯器版本。你需要手動(dòng)npmupdate來升級編譯器。以及如果你想要安裝less、scss等預(yù)編譯器,也需要自己npm安裝在項(xiàng)目下,而不是在HBuilderX的插件管理里安裝。

§如果你使用離線打包,請注意HBuilderX升級后,真機(jī)運(yùn)行基座和云打包對應(yīng)引擎跟隨HBuilderX升級,而你的sdk需要手動(dòng)升級。sdk的版本升級一般滯后HBuilderX正式版升級一兩天。

§如果你使用自定義基座,之前制作的自定義基座是不會(huì)跟隨HBuilderX升級的,升級HBuilderX后你應(yīng)該重新制作新版自定義基座。

§如果你使用wgt升級,新版HBuilderX編譯的wgt,運(yùn)行到之前的runtime上,一定要先測試好,看有沒有兼容性問題。如果有問題,就不要wgt升級,整包升級。

§考慮到向下兼容,uni-app編譯器在升級為新的自定義組件模式后,同時(shí)保留了對老編譯模式的向下兼容。在HBuilderXalpha版中,App端一定會(huì)使用新編譯器,不理會(huì)manifest配置。在HBuilderX正式版中,新創(chuàng)建的項(xiàng)目會(huì)使用新編譯器,老項(xiàng)目不會(huì)強(qiáng)制使用,而是開發(fā)者自己在manifest里配置開啟。

§如果你使用其他ide開發(fā)uni-app,會(huì)經(jīng)常因?yàn)槠村e(cuò)單詞而運(yùn)行失敗,因?yàn)榻?jīng)過webpack編譯一道,很多錯(cuò)誤反應(yīng)的不夠直觀,排錯(cuò)時(shí)間很長,不如從開始就依賴有良好提示的HBuilderX,避免敲錯(cuò)單詞。

§云打包的引擎版本說明HBuilderXAlpha,只有1套云打包機(jī),不管你的HBuilderXalpha版本多少,對應(yīng)的打包機(jī)一定是最新的alpha版的客戶端引擎。HBuilderX正式版,有2套打包機(jī),一個(gè)是最新正式版,一個(gè)是次新正式版。中間的緊急更新版本沒有獨(dú)立打包機(jī)。舉個(gè)例子:HBuilderX有1.8.0、1.8.1、1.8.2、1.9.0、1.9.1這幾個(gè)正式版。那么當(dāng)前可用的打包機(jī)有1.9.1和1.8.2這2臺(tái)。(即每個(gè)大版本的最后一個(gè)版本)除了這2個(gè)HBuilderX版本外,其他版本的云打包都指向最新的1.9.1版對應(yīng)的打包機(jī)。(即只保留2個(gè)大版本的云打包機(jī))

【詳情請看】

https://ask.dcloud.net.cn/article/35845

阿里國際站運(yùn)營面試問題及答案

阿里國際站運(yùn)營面試問題包括:

1.您是否已經(jīng)熟悉了國際站的運(yùn)營流程和工具?

2.您在國際站上遇到過哪些問題?

3.您如何處理國際站上的用戶投訴和反饋?

4.您對國際站的未來發(fā)展趨勢有什么看法?

5.您如何在國際站中更好地提升用戶滿意度?

答案:

1.首先,您需要熟悉國際站的基礎(chǔ)知識(shí)和工具,例如:GoogleAdWords、亞馬遜AWS、CloudFunctions等。

2.然后,您還需要了解國際站的功能和特點(diǎn),例如國際站的用戶界面、搜索、廣告投放等。

java面試題有哪些

肝了一個(gè)月的面試題終于來啦,大家開心不。

2020年最新Java面試題整理,全網(wǎng)最全一份,包含各個(gè)技術(shù)棧,Java基礎(chǔ),Java集合,多線程,Java異常,spring,springMVC,springboot,springcloud,netty,dubbo,activemq,Javaweb,jvm,kafka,MongoDB,mybatis,MySQL,Nginx,rabbitmq,Redis,Tomcat,zookeeper,設(shè)計(jì)模式,數(shù)據(jù)結(jié)構(gòu),算法,分布式,限流,降級,cap原理等等知識(shí)點(diǎn)

話不多說,直接上圖

總共80多個(gè)PDF

【BAT必備】計(jì)算機(jī)網(wǎng)絡(luò)面試題:

鏈接:https://pan.baidu.com/s/1hFggmtdL1ZmE4utBlo8S1g提取碼:qfkh

【BAT必備】設(shè)計(jì)模式面試題

鏈接:https://pan.baidu.com/s/1eXJveIVvQe-m3MdvLcT-fQ提取碼:j0kx

【BAT必備】數(shù)據(jù)結(jié)構(gòu)算法面試題:

鏈接:https://pan.baidu.com/s/1daFN9jY03fXsqwc9LeKi2w提取碼:5ab7

【BAT必備】多線程面試題:

鏈接:https://pan.baidu.com/s/1GdvsNESoHPBjWKN2h-iK7Q提取碼:cqib

【BAT必備】并發(fā)編程鎖面試題:

鏈接:https://pan.baidu.com/s/1hXPPtMY2dvz-g7QcSTc3PA提取碼:zhmy

【BAT必備】tomcat面試題:

鏈接:https://pan.baidu.com/s/1qPZXx4lmLynmaF0XjRTzpQ提取碼:5m16

【BAT必備】zookeeper面試題:

鏈接:https://pan.baidu.com/s/1EhOee9e1Qe-Q6RC8KlthxA提取碼:p2am

【BAT必備】spring全家桶面試題:

鏈接:https://pan.baidu.com/s/1DXGO-N5P6QIGKLZ8LIVOuQ提取碼:m9v7

【BAT必備】rocketMq面試題:

鏈接:https://pan.baidu.com/s/1TEF3yUR4OOaIpj-4ud_79A提取碼:3g3d

【BAT必備】redis面試題:

鏈接:https://pan.baidu.com/s/1qlanxWBfwvKUObnHulCQiA提取碼:rjo7

【BAT必備】rabbitMq面試題:

鏈接:https://pan.baidu.com/s/1ywLiq3IUJVyZosPLNrmyTA提取碼:0td4

【BAT必備】netty面試題:

鏈接:https://pan.baidu.com/s/1Pbv4aelqOt1dUPA2SwEB_Q提取碼:2w1e

【BAT必備】Nginx面試題:

鏈接:https://pan.baidu.com/s/1r8YNyOz0N6MJ9F0045lEZw提取碼:49tl

【BAT必備】MySQL面試題:

鏈接:https://pan.baidu.com/s/1GeX6Fs4nNi6fTUHKxJ2SZw提取碼:8pow

【BAT必備】mybatis面試題:

鏈接:https://pan.baidu.com/s/1xOYiaiQ2JpPt2jb6GdWjaA提取碼:aqd3

【BAT必備】MongoDB面試題:

鏈接:https://pan.baidu.com/s/1QTVx1TF8tDn6LUJr7wdfOQ提取碼:j1qt

【BAT必備】Linux面試題:

鏈接:https://pan.baidu.com/s/1veZ3dBJmz1PduCE5tl-e1A提取碼:txpf

【BAT必備】kafka面試題:

鏈接:https://pan.baidu.com/s/1SWhiBCswleYGsDupSGzE6g提取碼:o1gv

【BAT必備】jvm面試題:

鏈接:https://pan.baidu.com/s/1xi-QLq_I75kha439EGqELw提取碼:kxde

【BAT必備】javaweb面試題:

鏈接:https://pan.baidu.com/s/1r3Bupn9qhJbw5ebR_6h94A提取碼:qba4

【BAT必備】Java基礎(chǔ)面試題:

鏈接:https://pan.baidu.com/s/1J40nYKIoV_VMCumoRpIyhQ提取碼:5xo7

【BAT必備】dubbo面試題:

鏈接:https://pan.baidu.com/s/10flnh7Tb0Oxd3yZPQOnjsA提取碼:5gc9

【BAT必備】activeMQ面試題:

鏈接:https://pan.baidu.com/s/1igNB64dpMCjCQkRzvqCXpQ提取碼:006a

【BAT必備】分布式相關(guān)面試題大全面試題:

鏈接:https://pan.baidu.com/s/1ZcpJDh07B2NPAL4_4VC6jQ提取碼:w4mw

【BAT必備】java面試題大全:

鏈接:https://pan.baidu.com/s/11jw0Ua4CZiI8-S6EadM_iQ提取碼:epmp

【BAT必備】Java面試匯總

鏈接:https://pan.baidu.com/s/1vG9_cNoiYBW5TY32S4wGnQ提取碼:k087

【BAT必備】2020年多家公司整理的350道Java面試題手冊

鏈接:https://pan.baidu.com/s/1FEGQVTgiyKG0kCasYn-n2g提取碼:f7y1

【BAT必備】Java全部核心知識(shí)點(diǎn)整理

鏈接:https://pan.baidu.com/s/1StG-ib70TDAE1Hb4NVLQRQ提取碼:5rp1

整理這些非常辛苦,大家點(diǎn)個(gè)贊在走吧

mq面試必背知識(shí)點(diǎn)

主要有3點(diǎn):解耦、異步、削峰(限流)。

其實(shí)就是在服務(wù)與服務(wù)之間增加了一個(gè)中間件,可以實(shí)現(xiàn)上面的三種用途。

?

解耦:我們看到,服務(wù)A強(qiáng)依賴服務(wù)B和C,當(dāng)服務(wù)B或者C掛掉后,會(huì)直接導(dǎo)致服務(wù)A的不可用,這顯然不是我們所期望的。比如服務(wù)的最后一步是記錄日志,但是該服務(wù)掛了,雖然日志服務(wù)和主流服務(wù)沒有必然的業(yè)務(wù)聯(lián)系,但是因?yàn)榇a的耦合性過高,直接導(dǎo)致整個(gè)服務(wù)響應(yīng)失敗。

異步:假如服務(wù)A本身執(zhí)行只需要10ms,服務(wù)B需要5ms,服務(wù)C(日志服務(wù))需要1s。同樣的,一個(gè)和業(yè)務(wù)本身無關(guān)的服務(wù)過長的響應(yīng)時(shí)間導(dǎo)致了整體服務(wù)的響應(yīng)超時(shí)。

削峰:假如由于服務(wù)C只是記錄日志的,服務(wù)器配置較低,1s只能處理2000條數(shù)據(jù),但是高峰時(shí)段,每秒的請求高達(dá)10萬筆,過高的請求會(huì)導(dǎo)致服務(wù)器崩潰。

可以看到,其實(shí)上面所講的三種情況,都很類似,連起來可以這么理解。高峰時(shí)段導(dǎo)致服務(wù)C運(yùn)行越來越慢,產(chǎn)生了“異步”所說的問題,如果長時(shí)間沒解決,可能會(huì)導(dǎo)致“解耦”所說的情況,即服務(wù)掛掉。

在增加了MQ以后,我們可以在服務(wù)A執(zhí)行完核心業(yè)務(wù)后,將后續(xù)處理的業(yè)務(wù)數(shù)據(jù)打入消息隊(duì)列中,然后就可以返回成功。然后日志服務(wù)從消息隊(duì)列中取到對應(yīng)的消息進(jìn)行處理即可。這樣就實(shí)現(xiàn)了“解耦”和“異步”。在高峰時(shí)段,所有的數(shù)據(jù)都會(huì)打入消息隊(duì)列中,而日志服務(wù)只需要按照自己的消費(fèi)水平(2000條/s)取數(shù)據(jù)就好,保證了服務(wù)的平滑穩(wěn)定。

二、MQ選型

主流的MQ有4種,ActiveMQ、RabbitMQ、RocketMQ和Kafka。不過ActiveMQ雖然框架成熟、曾經(jīng)是MQ中的王牌,但是現(xiàn)在官方的維護(hù)頻率越來越低,國內(nèi)各大公司已經(jīng)很少才用了,再加上吞吐量不高(比kafka低一個(gè)數(shù)量級),存在消息丟失的情況,所以現(xiàn)在新項(xiàng)目很少會(huì)采用了。

RabbitMQ是用ErLang語言開發(fā)的,性能上是最好的,但是由于ErLang語言不是主流語言,二次開發(fā)難度較高,很多想要根據(jù)實(shí)際情況進(jìn)行二次開發(fā)的公司很少采用。不過如果只是簡單使用的話,還是不錯(cuò)的,畢竟它的延時(shí)是最少的;并且RabbitMQ有一個(gè)最大的好處是它具有可視化界面,操作維護(hù)很方便。

RocketMQ是阿里開源的產(chǎn)品,經(jīng)過了很多高并發(fā)項(xiàng)目的考驗(yàn)(如雙十一),性能上是有保證的。純Java編寫,維護(hù)性高。我理解的它和kafka最大的不同有兩點(diǎn),一是它支持事務(wù);二是集群結(jié)構(gòu)不一致,它沒有主從切換,當(dāng)leader掛掉后,存在一定的感知時(shí)間,然后切換到follower上。

kafka的特點(diǎn)就是高吞吐量,一般配合大數(shù)據(jù)類的系統(tǒng)來進(jìn)行實(shí)時(shí)數(shù)據(jù)計(jì)算、日志采集,在日志收集領(lǐng)域是事實(shí)上的標(biāo)準(zhǔn)。

另外,springCloud全家桶中,有一個(gè)springCloudStream消息驅(qū)動(dòng)框架,該框架很好的封裝了MQ操作的相關(guān)API,減輕了開發(fā)者在MQ方面的代碼量,不過該框架只封裝了RabbitMQ和kafka這兩種MQ。

綜上,如果需要對MQ傳輸提供事務(wù)支持或者解決高并發(fā)下的業(yè)務(wù)解耦,建議采用RocketMQ,微服務(wù)框架是dubbo的話,應(yīng)該也建議用RocketMQ(這個(gè)沒測過,個(gè)人猜測,畢竟都是阿里的產(chǎn)品)。如果是要做日志收集等工作,建議采用kafka。中小型公司使用springCloud全家桶開發(fā)的項(xiàng)目中,建議采用RabbitMQ(或者kafka)。

以上是查資料總結(jié)的,由于我平時(shí)都是使用的kafka,所以后面都以kafka為例了。

三、重復(fù)消費(fèi)

重復(fù)消費(fèi)在MQ中是一個(gè)重點(diǎn)問題,該問題是如何產(chǎn)生的?

kafka中有一個(gè)消息偏移量offset,每當(dāng)消費(fèi)者消費(fèi)完一條消息時(shí),執(zhí)行commit,會(huì)將offset+1。如果一條消息在消費(fèi)完以后尚未commitoffset,突發(fā)宕機(jī),會(huì)讓zookeeper認(rèn)為該條消息沒有被消費(fèi)。導(dǎo)致消費(fèi)者重啟后重復(fù)消費(fèi)之前的數(shù)據(jù)。

如何避免?

避免重復(fù)消費(fèi)的問題,與同一個(gè)服務(wù)被多次調(diào)用的問題類似,就是如何解決服務(wù)的冪等性。大致有如下幾個(gè)方案:

1、利用數(shù)據(jù)庫的唯一性約束。

2、將數(shù)據(jù)存入redis中,利用redis天然的冪等性,然后再將數(shù)據(jù)從redis同步到數(shù)據(jù)庫中

3、生產(chǎn)者發(fā)消息時(shí)增加一個(gè)唯一id(比如UUID),消費(fèi)者消費(fèi)成功后將該UUID存入redis中,每次消費(fèi)前先查看該UUID是否存在。

四、消息丟失

消息丟失同樣也是MQ中是一個(gè)重點(diǎn)問題。由于系統(tǒng)中存在生產(chǎn)者、消費(fèi)者和MQ本身三個(gè)組件,所以需要從這三個(gè)方面分別討論。

MQ本身丟失:由于kafka的集群是leader/follower模式,leader先接受消息后,再同步給follower,如果leader接收到消息后發(fā)生宕機(jī),沒來得及同步數(shù)據(jù)給follower,這時(shí)依靠選舉機(jī)制產(chǎn)生了新的leader,但是它已經(jīng)永遠(yuǎn)的失去了這條消息。為了避免這種情況發(fā)生,就需要修改kafka的配置,利用kafka自身的特性來解決。

首先給topic設(shè)置replication.factor參數(shù):這個(gè)值必須大于1,要求每個(gè)partition必須有至少2個(gè)副本。

然后在kafka服務(wù)端設(shè)置min.insync.replicas參數(shù):這個(gè)值必須大于1,這個(gè)是要求一個(gè)leader至少感知到有至少一個(gè)follower還跟自己保持聯(lián)系,沒掉隊(duì),這樣才能確保leader掛了還有一個(gè)follower。

然后在producer端設(shè)置acks=all:這個(gè)是要求每條數(shù)據(jù),必須是寫入所有replica之后,才能認(rèn)為是寫成功了

最后在producer端設(shè)置retries=MAX(很大很大很大的一個(gè)值,無限次重試的意思):這個(gè)是要求一旦寫入失敗,就無限重試,卡在這里了。

這樣配置以后,就可以保證只有所有的副本數(shù)據(jù)都同步成功后,才認(rèn)為消息發(fā)送成功,避免了leader掛掉的情況。

消費(fèi)者丟失:kafka有一個(gè)自動(dòng)提交機(jī)制,每次接受到消息后自動(dòng)提交offset。如果消息還未處理就掛掉了,但zk卻已經(jīng)接收到消費(fèi)成功的通知,顯然不合理,所以要避免使用kafka的自動(dòng)提交,改為手動(dòng)提交。

生產(chǎn)者丟失:顯然,如果配置了acks=all以后,生產(chǎn)者是不會(huì)發(fā)生消息丟失的。

另外,查資料發(fā)現(xiàn)RabbitMQ和kafka的消息丟失情況不同,這里補(bǔ)充一個(gè)RabbitMQ的處理方式。

MQ本身丟失:由于RabbitMQ沒有集群配置,所以只能依靠持久化到本地的方式來進(jìn)行備份。如果接收到消息還沒來得及備份就掛掉了,就會(huì)導(dǎo)致消息丟失。不過這個(gè)概率很低。如果發(fā)生了,可以利用生產(chǎn)者丟失的方式處理,見下。

消費(fèi)者丟失:產(chǎn)生原因不說了??梢圆捎肦abbitMQ提供的ack機(jī)制,即關(guān)閉RabbitMQ自動(dòng)ack,然后通過api來調(diào)用就行,在確認(rèn)處理完消息后,手動(dòng)提交ack通知MQ。

生產(chǎn)者丟失:可能存在的問題就是生產(chǎn)者發(fā)送消息后,網(wǎng)絡(luò)傳輸有問題導(dǎo)致了數(shù)據(jù)丟失。為了避免這種情況,一般會(huì)開啟事務(wù)機(jī)制,保證數(shù)據(jù)一致性,但是事務(wù)機(jī)制由于是同步的,會(huì)造成系統(tǒng)性能下降,所以可以借鑒分布式事務(wù)的理念,即confirm機(jī)制。生產(chǎn)者發(fā)送消息后,開啟異步接受MQ的反饋,收到后,默認(rèn)消息發(fā)送成功,超時(shí)后觸發(fā)消息重發(fā)機(jī)制。

五、如何確保消息順序消費(fèi)。

這個(gè)很簡單,只要保證每個(gè)消費(fèi)者或者每個(gè)處理線程都對應(yīng)一個(gè)隊(duì)列即可。

六、消息積壓如何處理。

畢竟流量高峰的時(shí)間存在不長,只要最初規(guī)劃MQ的空間時(shí)考慮到流量高峰的容量,一般是不會(huì)出現(xiàn)積壓的,除非由于代碼bug或者消費(fèi)者宕機(jī)。

這時(shí)為了快速處理積壓的消息,我們除了修正bug和重啟服務(wù)器以外,還需要有提前定好的應(yīng)急方案,即臨時(shí)擴(kuò)容消費(fèi)者,增加消費(fèi)者處理速度。并且不能設(shè)置消息的TTL,保證消息一直存在。

實(shí)在沒辦法了的終極解決方案,就是拋棄部分消息,然后過了高峰以后,依靠日志等方式人肉維護(hù)。。。

最后,說一個(gè)我之前的公司,為了避免重復(fù)消費(fèi)和消息丟失的解決方案,就是在生產(chǎn)者發(fā)送消息前和消費(fèi)者接收消息后,在本地記錄一條數(shù)據(jù),然后定時(shí)對比兩者的差異,來確保這兩個(gè)問題不會(huì)發(fā)生。同樣該方案也可用于處理積壓,完全可以拋棄消息,最后依靠生產(chǎn)者記錄的數(shù)據(jù)進(jìn)行維護(hù)。這種方式比較適合業(yè)務(wù)分離狀態(tài)的,如購物場景,只要保證用戶下單成功即可,后續(xù)的出庫,贈(zèng)加積分,贈(zèng)送優(yōu)惠券等功能稍緩緩也不礙事,但是如果是時(shí)效性較高的業(yè)務(wù),比如商品查詢,可能商品描述、商品價(jià)格、商品圖片都是不同的服務(wù)在處理,如果一個(gè)服務(wù)不能正常返回,那這個(gè)業(yè)務(wù)就無法正常開展。這種情況,就建議采用限流策略了。

Spring boot是Java程序員必須掌握的框架之一么

毫不夸張的說:是的。

目前,不管是個(gè)人開發(fā)項(xiàng)目還是企業(yè)開發(fā)項(xiàng)目,如果選擇的是Java語言,那我們第一個(gè)想到的就是用SpringBoot框架開發(fā),因?yàn)橛盟焯?。幾分鐘就可以將一個(gè)Web后端的項(xiàng)目跑起來。而我們只需要寫業(yè)務(wù)代碼就好了。這對于程序員來說簡直就是天大的福利。

想想我們用SpringMVC的時(shí)候,是多么的痛苦。雖然SpringMVC也是非常優(yōu)秀的框架(這也是必須要掌握的Java框架),但是基于XML文件的配置實(shí)在是太繁瑣。啟動(dòng)一個(gè)JavaWeb項(xiàng)目,我們需要寫一大堆的xml文件,spring.xml、application.xml、web.xml、springmvc-servlet.xml等等,不勝其煩。而且即便這些東西都配置好了,項(xiàng)目還不一定能啟動(dòng)起來。很多程序員應(yīng)該都碰到過這個(gè)問題,bean加載的問題、數(shù)據(jù)源配置的問題、注解掃描路勁的問題,等等。反正,即使再NB的程序員,沒個(gè)半個(gè)一個(gè)小時(shí),跑步起來基于SpringMVC框架的項(xiàng)目。(但是這不影響它成為一個(gè)非常優(yōu)秀的Java框架)。

而SpringBoot完全拋棄了繁瑣的xml,在SpringBoot的項(xiàng)目中,幾乎看不到xml文件。干凈清爽的配置讓人欲罷不能,這也是為什么SpringBoot目前這么火的原因,也是現(xiàn)階段,Java程序員必須要掌握的框架。

最后總結(jié)一句:SpringBoot的好,誰用誰知道。

關(guān)于本次spring cloud面試題和web前端三大主流框架的問題分享到這里就結(jié)束了,如果解決了您的問題,我們非常高興。