欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java分布式面試降級(jí)組件Hystrix的功能特性

 更新時(shí)間:2022年03月09日 17:34:54   作者:Q.E.D  
這篇文章主要為大家介紹了java分布式面試關(guān)于降級(jí)組件Hystrix的功能特性回答,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

引言

關(guān)于 Hystrix 的問題匯總后兩點(diǎn):

  • Hystrix主要功能覆蓋考察。
  • Hystrix工作中使用經(jīng)驗(yàn)考察。

Hystrix語(yǔ)義為“豪豬”,它后背帶刺兒且具有自我保護(hù)的能力,這是不是就很好理解它的功能了。雖然我沒有直接使用過Hystrix,但是類似的同樣功能的框架功能和原理都大同小異,所以我決定針對(duì) Hystrix 單獨(dú)拆分開講解。

同時(shí)我覺得Hystrix中有很多設(shè)計(jì)思想非常優(yōu)秀,非常值得我們學(xué)習(xí),學(xué)習(xí)這些設(shè)計(jì)思想,你可以從更高維度去思考如何讓系統(tǒng)更加穩(wěn)定。

1、面試官:能簡(jiǎn)單介紹下Hystrix有哪些功能嗎?

問題分析:了解Hystrix的功能,同時(shí)也能從Hystrix優(yōu)秀的設(shè)計(jì)理念中得到架構(gòu)設(shè)計(jì)方面的啟發(fā)。

答:我在項(xiàng)目里使用到,系統(tǒng)在 Hystrix 的保護(hù)下,可以長(zhǎng)期處于高可用的狀態(tài),常用的功能有以下幾點(diǎn):

1.1、fail-fast(快速失?。?/h3>

Hystrix設(shè)計(jì)中提供了 fail-fast(快速失?。┖涂焖倩謴?fù)機(jī)制。

Tip:不知道之前你是否了解過fail-fast機(jī)制,或者面試Java基礎(chǔ)的時(shí)候,HashMap 中的 Iterator 迭代器,Iterator的設(shè)計(jì)就是 fail-fast 的,**快速失敗(fail—fast)**是Java集合中的一種機(jī)制, 在用迭代器遍歷一個(gè)集合對(duì)象時(shí),如果遍歷過程中對(duì)集合對(duì)象的內(nèi)容進(jìn)行了修改(增加、刪除、修改),則會(huì)拋出Concurrent Modification Exception。

我第一次學(xué)習(xí) HashMap 并不是很懂 fail-fast,覺得快速失敗只是應(yīng)用在Java集合類中,防止Java非線程安全集合的并發(fā)操作,學(xué)習(xí)使用 Hystrix 后,原來(lái)快速失敗機(jī)制還可以應(yīng)用在系統(tǒng)架構(gòu)設(shè)計(jì)中,對(duì)無(wú)法及時(shí)處理的請(qǐng)求快速失?。╢ail-fast),降低系統(tǒng)負(fù)載,而不是排隊(duì)。

1.2、Fallback優(yōu)雅降級(jí)機(jī)制

Fallback 字面意思是遇到Fall就啟動(dòng)back,了解到Fallback的機(jī)制后,我馬上在項(xiàng)目中用起來(lái)。

看真實(shí)例子:

 @Override
    @Degrade(key = "getOrderByParamFromES", fallBackMethod = "getOrderByParamFromMysql")
    public OrderResult getOrderByParamFromES(OrderSearchParam param) {
        //走ES查詢
        ......
        return OrderResult;
    }
 		//fallBack后調(diào)用getOrderByParamFromMysql方法
 		public OrderResult getOrderByParamFromMysql(OrderSearchParam param) {
        //走mysql查詢
        ......
        return OrderResult;
    }
 

代碼解釋:

fallBackMethod = "getOrderByParamFromMysql"

就是在ES查詢故障失敗后,系統(tǒng)自動(dòng)降級(jí)調(diào)getOrderByParamFromMysql方法,走mysql查詢,正常情況下,getOrderByParamFromMysql是不會(huì)被調(diào)用的,除非Fall。

1.3、線程/信號(hào)量隔離機(jī)制

線程隔離:

請(qǐng)求會(huì)根據(jù)自己的key獲取對(duì)應(yīng)線程池中的線程執(zhí)行,動(dòng)態(tài)設(shè)置線程池參數(shù),這樣自然地將不同的請(qǐng)求隔離開來(lái),支持異步來(lái)提高接口性能。不同請(qǐng)求直接不影響,例如service1請(qǐng)求緩慢,但是service2和service3還是可以正常工作,缺點(diǎn)就是線程切換影響性能。

信號(hào)量隔離:

一個(gè)請(qǐng)求中訪問了service1、service2、service3,其中service1請(qǐng)求超時(shí),將導(dǎo)致整個(gè)信號(hào)量一直不釋放,其他請(qǐng)求一直無(wú)法接受。

對(duì)于延遲小的請(qǐng)求(例如訪問緩存或者本地訪問數(shù)據(jù)庫(kù))來(lái)說,線程池帶來(lái)的開銷是非常高的,你可以考慮采用其他方法,例如非阻塞信號(hào)量(不支持超時(shí))來(lái)實(shí)現(xiàn)依賴服務(wù)的隔離。但絕大多數(shù)情況下,Netflix 更偏向于使用線程池來(lái)隔離依賴服務(wù),因?yàn)槠鋷?lái)的額外開銷可以接受,并且能支持包括超時(shí)在內(nèi)的所有功能。

2、面試官:剛剛說到線程隔離,那實(shí)際使用中是否打開超時(shí)線程中斷開關(guān)?

問題分析:考察實(shí)際使用經(jīng)驗(yàn),根據(jù)線程本身的特點(diǎn),線程超時(shí),如果不及時(shí)中斷,會(huì)浪費(fèi)線程資源。

答:一般情況下我們會(huì)打開超時(shí)中斷開關(guān),目的是及時(shí)釋放線程資源。

通過hystrix.command.default.execution.isolation.thread.interruptOnTimeout = true 設(shè)置。

但是如果是寫數(shù)據(jù)庫(kù)命令,或者記錄關(guān)鍵日志命令的情況下,需要命令執(zhí)行完畢情況,可關(guān)閉超時(shí)中斷。

(面試官點(diǎn)頭滿意,相信我確實(shí)有Hystrix的維護(hù)經(jīng)驗(yàn))

3、面試官:那你是如何估計(jì)線程池大小的?

答:要正確設(shè)置線程池的大小,需要分析所部署系統(tǒng)的CPU個(gè)數(shù)、內(nèi)存大小、任務(wù)類型(計(jì)算密集、IO密集等),對(duì)于計(jì)算密集型任務(wù),線程池大小和CPU個(gè)數(shù)相近通常能實(shí)現(xiàn)最優(yōu)利用率,對(duì)于IO密集型任務(wù),線程池的最優(yōu)大小的計(jì)算公式:線程池大小=CPU個(gè)數(shù)* (1 + 任務(wù)等待時(shí)間/ 任務(wù)處理時(shí)間)。

深入分析

Hystrix歷史

Hystrix源自Netflix API團(tuán)隊(duì)于2011年開始的項(xiàng)目。2012年,Hystrix不斷發(fā)展和成熟,Netflix內(nèi)部的許多團(tuán)隊(duì)都采用了它。如今,每天在Netflix上通過Hystrix執(zhí)行數(shù)百億個(gè)線程隔離和數(shù)千億個(gè)信號(hào)量隔離的調(diào)用。這極大地提高了正常運(yùn)行時(shí)間和彈性。

在高并發(fā)訪問下,系統(tǒng)所依賴的服務(wù)的穩(wěn)定性對(duì)系統(tǒng)的影響非常大,依賴有很多不可控的因素,比如網(wǎng)絡(luò)連接變慢,資源突然繁忙,暫時(shí)不可用,服務(wù)脫機(jī)等。我們要構(gòu)建穩(wěn)定、可靠的分布式系統(tǒng),就必須要有這樣一套容錯(cuò)方法。

Hystrix的主要功能特性

熔斷器機(jī)制:熔斷器可以理解成保險(xiǎn)絲,項(xiàng)目里使用Hystrix Command,當(dāng) Hystrix Command請(qǐng)求后,如果服務(wù)失敗數(shù)量超過一定比例(比如默認(rèn)50%),斷路器自動(dòng)熔斷,該服務(wù)將進(jìn)入熔斷狀態(tài),后續(xù)請(qǐng)求都會(huì)進(jìn)入fallback。

降級(jí)機(jī)制:通過fallbackMethod注解,當(dāng)請(qǐng)求后端服務(wù)出現(xiàn)異常的時(shí)候, 為了避免影響到其他業(yè)務(wù)邏輯,可以使用fallback方法指定的方法快速返回,或啟用“備胎方案”。

環(huán)境隔離:包括線程隔離和信號(hào)量隔離。

cache:Hystrix支持將一個(gè)請(qǐng)求結(jié)果緩存起來(lái),下一個(gè)具有相同key的請(qǐng)求將直接從緩存中取出結(jié)果,減少請(qǐng)求開銷。

Hystrix Demo

通過一個(gè)demo快速理解Hystrix fallback 的使用

@Service
public class OrderQueryService {
     /**
     * 訂單查詢接口
     */
    @HystrixCommand(fallbackMethod = "queryOrderBack")
    public List<Order> queryOrderFromRedis(String userId) {
      // todo  reids查詢邏輯
      return orderlist;
    }
     /**
     * 訂單查詢接口失敗降級(jí)方案
     */
    @SuppressWarnings("unused")
    private String queryOrderBack(String userId) {
      // todo  如,走ES查詢邏輯  或者 直接提示用戶“請(qǐng)稍后再試”
      // todo 通知維護(hù)人員處理故障
      return "";
    }
}

代碼解釋:

程序正常時(shí),查詢訂單服務(wù)是走queryOrderFromRedis方法的邏輯,當(dāng)queryOrderFromRedis方法拋出異常,根據(jù)設(shè)定的異常比例,或者指定哪個(gè)異常,達(dá)到閾值觸法fallback開關(guān),程序切換到queryOrderBack,設(shè)置程序走ES查詢邏輯 或者 直接提示用戶“請(qǐng)稍后再試”,根據(jù)業(yè)務(wù)自行設(shè)置。

哪些情況下會(huì)觸發(fā)fallback?

Failure TypeException classException.cause觸發(fā)fallback
FAILUREHystrixRuntimeExceptionunderlying exception (user-controlled)YES
SEMAPHORE_REJECTEDHystrixRuntimeExceptionj.l.RuntimeExceptionYES
SHORT_CIRCUITEDHystrixRuntimeExceptionj.l.RuntimeExceptionYES
THREAD_POOL_REJECTEDHystrixRuntimeExceptionj.u.c.RejectedExecutionExceptionYES
TIMEOUTHystrixRuntimeExceptionj.u.c.TimeoutExceptionYES

FAILURE:任意RuntimeException異常都可以激活fallback。

THREAD_POOL_REJECTED:并發(fā)執(zhí)行的任務(wù)數(shù)超過線程池和隊(duì)列之和時(shí),也就是Hystrix的線程隔離機(jī)制。

SEMAPHORE_REJECTED:類似 THREAD_POOL_REJECTED ,當(dāng)服務(wù)的并發(fā)數(shù)大于信號(hào)量閾值時(shí)將進(jìn)入fallback。比如配置程序執(zhí)行并發(fā)數(shù)不能大于3,由于信號(hào)量隔離下無(wú)論調(diào)用哪種命令執(zhí)行方法,Hystrix都不會(huì)創(chuàng)建新線程執(zhí)行run()/construct(),所以調(diào)用程序需要自己創(chuàng)建多個(gè)線程來(lái)模擬并發(fā)調(diào)用execute(),最后看到一旦并發(fā)線程>3,后續(xù)請(qǐng)求都進(jìn)入fallback。

SHORT_CIRCUITED:在一定時(shí)間內(nèi),用戶請(qǐng)求超過一定的比例失敗時(shí),如超時(shí),異常,線程并發(fā)達(dá)到限定最大值等,斷路器都會(huì)打開;短路器打開后所有請(qǐng)求直接走fallback,可以通過。circuitBreakerErrorThresholdPercentage方法設(shè)置百分比,默認(rèn)是50。

TIMEOUT:即超時(shí)請(qǐng)求。

附錄:Hystrix策略配置

/* --------------統(tǒng)計(jì)相關(guān)------------------*/ 
// 統(tǒng)計(jì)滾動(dòng)的時(shí)間窗口,默認(rèn):5000毫秒(取自circuitBreakerSleepWindowInMilliseconds)   
private final HystrixProperty metricsRollingStatisticalWindowInMilliseconds;   
// 統(tǒng)計(jì)窗口的Buckets的數(shù)量,默認(rèn):10個(gè),每秒一個(gè)Buckets統(tǒng)計(jì)   
private final HystrixProperty metricsRollingStatisticalWindowBuckets; // number of buckets in the statisticalWindow   
// 是否開啟監(jiān)控統(tǒng)計(jì)功能,默認(rèn):true   
private final HystrixProperty metricsRollingPercentileEnabled;   
/* --------------熔斷器相關(guān)------------------*/ 
// 熔斷器在整個(gè)統(tǒng)計(jì)時(shí)間內(nèi)是否開啟的閥值,默認(rèn)20。也就是在metricsRollingStatisticalWindowInMilliseconds(默認(rèn)10s)內(nèi)至少請(qǐng)求20次,熔斷器才發(fā)揮起作用   
private final HystrixProperty circuitBreakerRequestVolumeThreshold;   
// 熔斷時(shí)間窗口,默認(rèn):5秒.熔斷器中斷請(qǐng)求5秒后會(huì)進(jìn)入半打開狀態(tài),放下一個(gè)請(qǐng)求進(jìn)來(lái)重試,如果該請(qǐng)求成功就關(guān)閉熔斷器,否則繼續(xù)等待一個(gè)熔斷時(shí)間窗口
private final HystrixProperty circuitBreakerSleepWindowInMilliseconds;   
//是否啟用熔斷器,默認(rèn)true. 啟動(dòng)   
private final HystrixProperty circuitBreakerEnabled;   
//默認(rèn):50%。當(dāng)出錯(cuò)率超過50%后熔斷器啟動(dòng)
private final HystrixProperty circuitBreakerErrorThresholdPercentage;  
//是否強(qiáng)制開啟熔斷器阻斷所有請(qǐng)求,默認(rèn):false,不開啟。置為true時(shí),所有請(qǐng)求都將被拒絕,直接到fallback 
private final HystrixProperty circuitBreakerForceOpen;   
//是否允許熔斷器忽略錯(cuò)誤,默認(rèn)false, 不開啟   
private final HystrixProperty circuitBreakerForceClosed; 
/* --------------信號(hào)量相關(guān)------------------*/ 
//使用信號(hào)量隔離時(shí),命令調(diào)用最大的并發(fā)數(shù),默認(rèn):10   
private final HystrixProperty executionIsolationSemaphoreMaxConcurrentRequests;   
//使用信號(hào)量隔離時(shí),命令fallback(降級(jí))調(diào)用最大的并發(fā)數(shù),默認(rèn):10   
private final HystrixProperty fallbackIsolationSemaphoreMaxConcurrentRequests; 
/* --------------其他------------------*/ 
//使用命令調(diào)用隔離方式,默認(rèn):采用線程隔離,ExecutionIsolationStrategy.THREAD   
private final HystrixProperty executionIsolationStrategy;   
//使用線程隔離時(shí),調(diào)用超時(shí)時(shí)間,默認(rèn):1秒   
private final HystrixProperty executionIsolationThreadTimeoutInMilliseconds;   
//線程池的key,用于決定命令在哪個(gè)線程池執(zhí)行   
private final HystrixProperty executionIsolationThreadPoolKeyOverride;   
//是否開啟fallback降級(jí)策略 默認(rèn):true   
private final HystrixProperty fallbackEnabled;   
// 使用線程隔離時(shí),是否對(duì)命令執(zhí)行超時(shí)的線程調(diào)用中斷(Thread.interrupt())操作.默認(rèn):true   
private final HystrixProperty executionIsolationThreadInterruptOnTimeout; 
// 是否開啟請(qǐng)求日志,默認(rèn):true   
private final HystrixProperty requestLogEnabled;   
//是否開啟請(qǐng)求緩存,默認(rèn):true   
private final HystrixProperty requestCacheEnabled; // Whether request caching is enabled
//請(qǐng)求合并是允許的最大請(qǐng)求數(shù),默認(rèn): Integer.MAX_VALUE   
private final HystrixProperty maxRequestsInBatch;   
//批處理過程中每個(gè)命令延遲的時(shí)間,默認(rèn):10毫秒   
private final HystrixProperty timerDelayInMilliseconds;   
//批處理過程中是否開啟請(qǐng)求緩存,默認(rèn):開啟   
private final HystrixProperty requestCacheEnabled; 
/* 配置線程池大小,默認(rèn)值10個(gè) */ 
private final HystrixProperty corePoolSize; 
/* 配置線程值等待隊(duì)列長(zhǎng)度,默認(rèn)值:-1 建議值:-1表示不等待直接拒絕,測(cè)試表明線程池使用直接決絕策略+ 合適大小的非回縮線程池效率最高.所以不建議修改此值。 當(dāng)使用非回縮線程池時(shí),queueSizeRejectionThreshold,keepAliveTimeMinutes 參數(shù)無(wú)效 */
private final HystrixProperty maxQueueSize; 

其他常用限流降級(jí)組件

Sentinel:阿里巴巴集團(tuán)內(nèi)部基礎(chǔ)技術(shù)模塊,覆蓋了所有的核心場(chǎng)景。Sentinel 也因此積累了大量的流量歸整場(chǎng)景以及生產(chǎn)實(shí)踐。2018 年,Sentinel 開源,并持續(xù)演進(jìn)。

Resilience4j:也是一個(gè)輕量級(jí)的容錯(cuò)組件,其靈感來(lái)自于 Hystrix,但主要為 Java 8 和函數(shù)式編程所設(shè)計(jì)。輕量級(jí)體現(xiàn)在其只用 Vavr庫(kù)(前身是 Javaslang),沒有任何外部依賴。而 Hystrix 依賴了 Archaius ,Archaius 本身又依賴很多第三方包,例如 Guava、Apache Commons Configuration 等。

Sentinel 與 Hystrix resilience4j 對(duì)比

 SentinelHystrixresilience4j
隔離策略信號(hào)量隔離(并發(fā)線程數(shù)限流)線程池隔離/信號(hào)量隔離信號(hào)量隔離
熔斷降級(jí)策略基于響應(yīng)時(shí)間、異常比率、異常數(shù)等異常比率模式、超時(shí)熔斷基于異常比率、響應(yīng)時(shí)間
實(shí)時(shí)統(tǒng)計(jì)實(shí)現(xiàn)滑動(dòng)窗口(LeapArray)滑動(dòng)窗口(基于 RxJava)Ring Bit Buffer
動(dòng)態(tài)規(guī)則配置支持多種配置源支持多種數(shù)據(jù)源有限支持
擴(kuò)展性豐富的 SPI 擴(kuò)展接口插件的形式接口的形式
基于注解的支持支持支持支持
限流基于 QPS,支持基于調(diào)用關(guān)系的限流有限的支持Rate Limiter
集群流量控制支持不支持不支持
流量整形支持預(yù)熱模式、勻速排隊(duì)模式等多種復(fù)雜場(chǎng)景不支持簡(jiǎn)單的 Rate Limiter 模式
系統(tǒng)自適應(yīng)保護(hù)支持不支持不支持
控制臺(tái)提供開箱即用的控制臺(tái),可配置規(guī)則、查看秒級(jí)監(jiān)控、機(jī)器發(fā)現(xiàn)等簡(jiǎn)單的監(jiān)控查看不提供控制臺(tái),可對(duì)接其它監(jiān)控系統(tǒng)
多語(yǔ)言支持Java / C++JavaJava
開源社區(qū)狀態(tài)活躍停止維護(hù)較活躍

至于如何選擇,個(gè)人覺得,只要滿足需求掌握使用理念,選技術(shù)文檔最多最全的一種即可,你最熟悉的就是最適合你的。

總結(jié)

Hystrix 框架提供了高可用相關(guān)的各種各樣的功能,有了 Hystrix 的保護(hù),整個(gè)系統(tǒng)可以長(zhǎng)期處于高可用的狀態(tài)。

這一小節(jié)的內(nèi)容不僅僅是學(xué)會(huì) Hystrix 這門工具的使用,更重要的是理解降級(jí)的設(shè)計(jì)理念,即便 Hystrix 官方已經(jīng)停止維護(hù)更新,但不可否定 Hystrix 是一個(gè)優(yōu)秀的生產(chǎn)力工具。

以上就是java分布式面試降級(jí)組件Hystrix的功能特性的詳細(xì)內(nèi)容,更多關(guān)于java分布式面試降級(jí)組件Hystrix的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Mybatis關(guān)聯(lián)查詢結(jié)果集對(duì)象嵌套的具體使用

    Mybatis關(guān)聯(lián)查詢結(jié)果集對(duì)象嵌套的具體使用

    在查詢時(shí)經(jīng)常出現(xiàn)一對(duì)多”的關(guān)系,所有會(huì)出現(xiàn)嵌套對(duì)象的情況,本文主要介紹了Mybatis關(guān)聯(lián)查詢結(jié)果集對(duì)象嵌套的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • SpringMVC數(shù)據(jù)輸出相關(guān)知識(shí)總結(jié)

    SpringMVC數(shù)據(jù)輸出相關(guān)知識(shí)總結(jié)

    今天帶大家學(xué)習(xí)SpringMVC的相關(guān)知識(shí),文中對(duì)SpringMVC數(shù)據(jù)輸出作了非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下
    2021-06-06
  • springcloud中RabbitMQ死信隊(duì)列與延遲交換機(jī)實(shí)現(xiàn)方法

    springcloud中RabbitMQ死信隊(duì)列與延遲交換機(jī)實(shí)現(xiàn)方法

    死信隊(duì)列是消息隊(duì)列中非常重要的概念,同時(shí)我們需要業(yè)務(wù)場(chǎng)景中都需要延遲發(fā)送的概念,比如12306中的30分鐘后未支付訂單取消,那么本期,我們就來(lái)講解死信隊(duì)列,以及如何通過延遲交換機(jī)來(lái)實(shí)現(xiàn)延遲發(fā)送的需求,感興趣的朋友一起看看吧
    2022-05-05
  • java_IO向文件中寫入和讀取內(nèi)容代碼實(shí)例

    java_IO向文件中寫入和讀取內(nèi)容代碼實(shí)例

    這篇文章主要介紹了java_IO向文件中寫入和讀取內(nèi)容,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Spring中@Value注解的使用方法詳解

    Spring中@Value注解的使用方法詳解

    這篇文章主要介紹了Spring中@Value注解的使用方法詳解,在spring項(xiàng)目中必不可少的就是讀取配置文件,那么讀取配置文件就有兩種方式,一種就是使用Spring中@Value注解,還有一種是使用SpringBoot中的@ConfigurationProperties注解,需要的朋友可以參考下
    2024-01-01
  • IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過程(步驟詳解)

    IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過程(步驟詳解)

    這篇文章主要介紹了IDEA創(chuàng)建springboot + mybatis項(xiàng)目全過程及步驟詳解,本文通圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Java?Bean?作用域及它的幾種類型介紹

    Java?Bean?作用域及它的幾種類型介紹

    這篇文章主要介紹了Java?Bean作用域及它的幾種類型介紹,Spring框架作為一個(gè)管理Bean的IoC容器,那么Bean自然是Spring中的重要資源了,那Bean的作用域又是什么,接下來(lái)我們一起進(jìn)入文章詳細(xì)學(xué)習(xí)吧
    2022-09-09
  • Spring Date jpa 獲取最新一條數(shù)據(jù)的實(shí)例代碼

    Spring Date jpa 獲取最新一條數(shù)據(jù)的實(shí)例代碼

    這篇文章主要介紹了Spring Date jpa 獲取最新一條數(shù)據(jù)的實(shí)例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-10-10
  • 詳談ServiceLoader實(shí)現(xiàn)原理

    詳談ServiceLoader實(shí)現(xiàn)原理

    下面小編就為大家?guī)?lái)一篇詳談ServiceLoader實(shí)現(xiàn)原理。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2017-02-02
  • MybatisPlus分頁(yè)失效不起作用的解決

    MybatisPlus分頁(yè)失效不起作用的解決

    在使用MybatisPlus的selectPage時(shí)發(fā)現(xiàn)分頁(yè)不起作用,每次返回的都是全部的數(shù)據(jù),本文就來(lái)介紹一下MybatisPlus分頁(yè)失效不起作用的解決,感興趣的可以了解一下
    2024-03-03

最新評(píng)論