最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud之負(fù)載均衡Ribbon問題及解讀

 更新時間:2026年05月12日 16:49:11   作者:一心同學(xué)  
本文介紹了負(fù)載均衡的基本概念,分類,重點講述了SpringCloud中的Ribbon的的負(fù)載均衡的使用和使用,并詳細(xì)描述了Ribbon的的每種算法的具體實現(xiàn)用,如輪詢、隨機、重試等

一、什么是負(fù)載均衡?

負(fù)載均衡(Load Balance),意思是將負(fù)載(工作任務(wù),訪問請求)進(jìn)行平衡、分?jǐn)偟蕉鄠€操作單元(服務(wù)器,組件)上進(jìn)行執(zhí)行。是解決高性能,單點故障(高可用),擴(kuò)展性(水平伸縮)的終極解決方案。

例子:

在早高峰乘地鐵時候,緊挨小區(qū)的地鐵口人特別多,一般會有限流,還會有個地鐵工作人員Y用那個大喇叭在喊“著急的人員請走B口,B口人少車空”。。。

而這個地鐵工作人員Y就是負(fù)責(zé)負(fù)載均衡的。為了提升網(wǎng)站的各方面能力,我們一般會把多臺機器組成一個集群對外提供服務(wù)。然而,我們的網(wǎng)站對外提供的訪問入口都是一個的,比如www.taobao.com。那么當(dāng)用戶在瀏覽器輸入www.taobao.com的時候如何將用戶的請求分發(fā)到集群中不同的機器上呢,這就是負(fù)載均衡在做的事情。

?

二、負(fù)載均衡分類

注:LB,即負(fù)載均衡 (LoadBalancer)

2.1  集中式LB

即在服務(wù)的提供方消費方之間使用獨立的LB設(shè)施,如Nginx(反向代理服務(wù)器),由該設(shè)施負(fù)責(zé)把訪問請求通過某種策略轉(zhuǎn)發(fā)至服務(wù)的提供方!

2.2  進(jìn)程式 LB

將LB邏輯集成到消費方,消費方從服務(wù)注冊中心獲知有哪些地址可用,然后自己再從這些地址中選出一個合適的服務(wù)器。

Ribbon 就屬于進(jìn)程式LB,它只是一個類庫,集成于消費方進(jìn)程,消費方通過它來獲取到服務(wù)提供方的地址!

三、Spring Cloud Ribbon是什么?

(1)Ribbon負(fù)責(zé)實現(xiàn)客戶端的負(fù)載均衡,負(fù)載均衡器提供很多對http和tcp的行為控制。

(2)Ribbon默認(rèn)提供了很多負(fù)載均衡算法,如:輪詢、隨機等,也可以實現(xiàn)自定義的負(fù)載均衡算法。

(3)在Spring cloud中,當(dāng)Ribbon與Eureka結(jié)合使用時,Ribbon可以自動的從Eureka Server獲取服務(wù)列表,基于負(fù)載均衡算法,進(jìn)行服務(wù)調(diào)用。

(4)在Spring Cloud構(gòu)建的微服務(wù)系統(tǒng)中,Ribbon作為客戶端負(fù)載均衡器,有兩種使用方式,第一種是和RestTemplate相結(jié)合,第二種是和Feign相結(jié)合。

四、Ribbon 的負(fù)載均衡算法

(1)RoundRobinRule:輪詢策略,默認(rèn)策略。

(2)RandomRule,隨機,使用Random對象從服務(wù)列表中隨機選擇一個服務(wù)。

(3)RetryRule,輪詢 + 重試。

(4)WeightedResponseTimeRule:優(yōu)先選擇響應(yīng)時間快,此策略會根據(jù)平均響應(yīng)時間計算所有服務(wù)的權(quán)重,響應(yīng)時間越快,服務(wù)權(quán)重越重、被選中的概率越高。此類有個DynamicServerWeightTask的定時任務(wù),默認(rèn)情況下每隔30秒會計算一次各個服務(wù)實例的權(quán)重。剛啟動時,如果統(tǒng)計信息不足,則使用RoundRobinRule策略,等統(tǒng)計信息足夠,會切換回來。

(5)AvailabilityFilteringRul:,可用性過濾,會先過濾掉以下服務(wù):由于多次訪問故障而斷路器處于打開的服務(wù)、并發(fā)的連接數(shù)量超過閾值,然后對剩余的服務(wù)列表按照RoundRobinRule策略進(jìn)行訪問。

(6)BestAvailableRule:優(yōu)先選擇并發(fā)請求最小的,剛啟動時嗎,如果統(tǒng)計信息不足,則使用RoundRobinRule策略,等統(tǒng)計信息足夠,才會切換回來。

(7)ZoneAvoidanceRule:可以實現(xiàn)避免可能訪問失效的區(qū)域(zone) 

五、環(huán)境準(zhǔn)備-搭建Eureka

1、建立Maven父工程

編寫pom.xml

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>0.2.0.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--springCloud的依賴-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Hoxton.SR12</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--SpringBoot-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>2.3.12.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

2、建立以下子工程

注:同樣也是Maven。

?

3、配置springcloud-eureka-7001 

(1)目錄如下

?

(2)導(dǎo)入依賴

<dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
        <!--導(dǎo)入Eureka Server依賴-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka-server</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--熱部署工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

(3)編寫配置文件

application.yml:

server:
  port: 7001
# Eureka配置
eureka:
  instance:
    # Eureka服務(wù)端的實例名字
    hostname: localhost
  client:
    # 表示是否向 Eureka 注冊中心注冊自己(這個模塊本身是服務(wù)器,所以不需要)
    register-with-eureka: false
    # fetch-registry如果為false,則表示自己為注冊中心,客戶端的化為 ture
    fetch-registry: false
    # Eureka監(jiān)控頁面~
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

(4)編寫啟動器

注意:要在主啟動器上方添加 @EnableEurekaServer表示 服務(wù)端的啟動類,可以接受別人注冊進(jìn)來。

package com.yixin.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaServer_7001 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServer_7001.class,args);
    }
}

4、配置springcloud-provider-blog-8001

(1)建立目錄如下

?

(2)導(dǎo)入依賴

 <!--導(dǎo)包~-->
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
        <!--導(dǎo)入Eureka Server依賴-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--Spring Boot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>2.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.4.5</version>
        </dependency>
        <!--熱部署工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

(3)編寫配置文件

application.yml:

server:
  port: 8001
spring:
  application:
    name: springcloud-provider-blog
# Eureka配置:配置服務(wù)注冊中心地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/
  instance:
    instance-id: springcloud-provider-dept-8001 #修改Eureka上的默認(rèn)描述信息

(4)編寫B(tài)logController

注:開發(fā)中,我們是需要連接到數(shù)據(jù)庫的,但為了給大家演示清楚Ribbon,這里我們用簡單dbsource來表示我們這個微服務(wù)對應(yīng)的數(shù)據(jù)庫。

package com.yixin.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BlogController {
    //表示db01這個數(shù)據(jù)庫
    @Value("db01")
    private String dbsource;
    //注冊進(jìn)來的微服務(wù),獲取一些消息
    @GetMapping("/blog/info")
    public String discovery(){
        return dbsource;
    }
}

(5)編寫啟動類BlogProvider_8001

package com.yixin.springcloud;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient
public class BlogProvider_8001 {
    public static void main(String[] args) {
        SpringApplication.run(BlogProvider_8001.class,args);
    }
}

5、編寫springcloud-provider-blog-8002和springcloud-provider-blog-8003

(1)導(dǎo)入的依賴和springcloud-provider-blog-8001一樣

(2) 配置springcloud-provider-blog-8002

a、application.yml(其實就是改了端口號而已)

server:
  port: 8002
spring:
  application:
    name: springcloud-provider-blog
# Eureka配置:配置服務(wù)注冊中心地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/
  instance:
    instance-id: springcloud-provider-dept-8002 #修改Eureka上的默認(rèn)描述信息

b、編寫B(tài)logController

更改數(shù)據(jù)庫名:db02

package com.yixin.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BlogController {

    //表示db02這個數(shù)據(jù)庫
    @Value("db02")
    private String dbsource;
    //注冊進(jìn)來的微服務(wù),獲取一些消息
    @GetMapping("/blog/info")
    public String discovery(){
        return dbsource;
    }
}

c、編寫啟動類,和springcloud-provider-blog-8001一樣

(3) 配置springcloud-provider-blog-8003

a、application.yml(其實就是改了端口號而已)

server:
  port: 8003
spring:
  application:
    name: springcloud-provider-blog
# Eureka配置:配置服務(wù)注冊中心地址
eureka:
  client:
    service-url:
      defaultZone: http://localhost:7001/eureka/
  instance:
    instance-id: springcloud-provider-dept-8003 #修改Eureka上的默認(rèn)描述信息

b、BlogController

更改數(shù)據(jù)庫名:db03

package com.yixin.springcloud.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BlogController {

    //表示db03這個數(shù)據(jù)庫
    @Value("db03")
    private String dbsource;
    //注冊進(jìn)來的微服務(wù),獲取一些消息
    @GetMapping("/blog/info")
    public String discovery(){
        return dbsource;
    }
}

c、編寫啟動類,和springcloud-provider-blog-8001一樣。

6、配置springcloud-consumer-blog-80

(1)目錄如下

?

(2)導(dǎo)入依賴

 <!--導(dǎo)包~-->
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-eureka-server -->
        <!--導(dǎo)入Eureka依賴-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <!--Spring Boot-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
            <version>2.4.5</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.4.5</version>
        </dependency>
        <!--熱部署工具-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
    </dependencies>

(3)編寫ConfigBean

package com.yixin.springcloud.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ConfigBean {

    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

(4)編寫B(tài)logConsumerController

package com.yixin.springcloud.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class BlogConsumerController {
    @Autowired
    private RestTemplate restTemplate;
    private static final String REST_URL_PREFIX="http://localhost:8001";
    @GetMapping("/consumer/blog")
    public String get(){
        return "消費端:"+restTemplate.getForObject(REST_URL_PREFIX +"/blog/info", String.class);
    }
}

(5)測試

依次啟動:

  • springcloud-eureka-7001
  • springcloud-provider-blog-8002
  • springcloud-consumer-blog-80

訪問:http://localhost:8000/consumer/blog

?

至此,Eureka就搭建好了!

六、集成Ribbon

6.1 搭建Ribbon

由于Ribbon屬于進(jìn)程式 LB(Load Balance),即將LB邏輯集成到消費方,消費方從服務(wù)注冊中心獲知有哪些地址可用,所以我們只需要在消費方這邊進(jìn)行配置即可。

Eureka搭建好了,我們集成Ribbon非常簡單,只需三步

配置springcloud-consumer-blog-80

(1)添加依賴:

   <!--Ribbon-->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-ribbon</artifactId>
        <version>1.4.6.RELEASE</version>
    </dependency>

(2)在配置類增加注解@LoadBalanced 

package com.yixin.springcloud.config;

import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ConfigBean {

    @LoadBalanced //配置負(fù)載均衡實現(xiàn)RestTemplate
    @Bean
    public RestTemplate getRestTemplate(){
        return new RestTemplate();
    }
}

(3)修改BlogConsumerController獲取路徑 

package com.yixin.springcloud.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
public class BlogConsumerController {

    @Autowired
    private RestTemplate restTemplate;

    //private static final String REST_URL_PREFIX="http://localhost:8001";

    private static final String REST_URL_PREFIX="http://SPRINGCLOUD-PROVIDER-BLOG";

    @GetMapping("/consumer/blog")
    public String get(){
        return "消費端:"+restTemplate.getForObject(REST_URL_PREFIX +"/blog/info", String.class);
    }
}

注意:這里的SPRINGCLOUD-PROVIDER-BLOG指的就是我們服務(wù)注冊中的服務(wù)名。

所以為了搭建服務(wù)產(chǎn)生方集群,我們剛剛在搭建springcloud-provider-blog-8001、springcloud-provider-blog-8002、springcloud-provider-blog-8003的時候,我們就已經(jīng)將其服務(wù)名全部設(shè)置為一樣的了。

?

?

至此,Ribbon就搭建好了,Ribbon的默認(rèn)負(fù)載均衡算法輪詢算法,也就是說,請求結(jié)束后都會向下一個服務(wù)端發(fā)送請求,例如 我們的有服務(wù)生產(chǎn)方A8001,服務(wù)端生產(chǎn)方B8002,服務(wù)端生產(chǎn)方C8003,那么消費端請求三次,依次的順序是A,B,C。

我們來進(jìn)行測試下:

  • 依次啟動:
  • springcloud-eureka-7001
  • springcloud-provider-blog-8001
  • springcloud-provider-blog-8002
  • springcloud-provider-blog-8003
  • springcloud-consumer-blog-80

訪問:http://localhost:7001/

可以發(fā)現(xiàn),我們?nèi)齻€服務(wù)生產(chǎn)方已經(jīng)成功綁定了。

?

接著重頭戲來了!

進(jìn)行測試:

訪問:http://localhost:8000/consumer/blog

  • 訪問第一次:

?

  • 訪問第二次:

?

  • 訪問第三次:

?

成功啦?。?!

6.2  切換負(fù)載均衡的規(guī)則

修改springcloud-consumer-blog-80下的ConfigBean

package com.yixin.springcloud.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

@Configuration
public class ConfigBean {

    @LoadBalanced //配置負(fù)載均衡實現(xiàn)RestTemplate
    @Bean
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }

    /**
     * IRule:
     * RoundRobinRule 輪詢策略
     * RandomRule 隨機策略
     * AvailabilityFilteringRule : 會先過濾掉,跳閘,訪問故障的服務(wù)~,對剩下的進(jìn)行輪詢~
     * RetryRule : 會先按照輪詢獲取服務(wù)~,如果服務(wù)獲取失敗,則會在指定的時間內(nèi)進(jìn)行,重試
     */
    @Bean
    public IRule myRule() {
        return new RandomRule();//使用隨機策略
        //return new RoundRobinRule();//使用輪詢策略
        //return new AvailabilityFilteringRule();//會先過濾掉,跳閘,訪問故障的服務(wù)~,對剩下的進(jìn)行輪詢~
        //return new RetryRule();//會先按照輪詢獲取服務(wù)~,如果服務(wù)獲取失敗,則會在指定的時間內(nèi)進(jìn)行,重試
    }
}

測試:

重啟springcloud-consumer-blog-80

訪問:http://localhost:8000/consumer/blog

  • 訪問第一次:

?

  • 訪問第二次:

?

  • 訪問第三次:

?

可以發(fā)現(xiàn)它是隨機的!

6.3 自定義負(fù)載均衡的規(guī)則

在myRule包下自定義一個配置類MyRule.java。

注意:myRule包不要和主啟動類所在的包同級。

?

(1)編寫自定義規(guī)則MyRule

規(guī)則:每個服務(wù)訪問5次,換下一個服務(wù)。

package com.yixin.myRule;

import com.netflix.client.config.IClientConfig;
import com.netflix.loadbalancer.AbstractLoadBalancerRule;
import com.netflix.loadbalancer.ILoadBalancer;
import com.netflix.loadbalancer.Server;
import org.springframework.context.annotation.Configuration;

import java.util.List;
import java.util.concurrent.ThreadLocalRandom;

@Configuration
public class MyRule extends AbstractLoadBalancerRule {
    // 每個服務(wù)訪問 5 次,換下一個服務(wù)
    // total=0 => 默認(rèn) 0,如果等于 5 ,指向下一個服務(wù)節(jié)點
    // index=0 => 默認(rèn) 0,如果 total 等于 5 ,index+1
    private int total = 0; //被調(diào)用的次數(shù)
    private int currentIndex = 0; //當(dāng)前誰在提供服務(wù)

    public Server choose(ILoadBalancer lb, Object key) {
        if (lb == null) {
            return null;
        }
        Server server = null;
        while (server == null) {
            if (Thread.interrupted()) {
                return null;
            }
            List<Server> upList = lb.getReachableServers(); //獲得存活的服務(wù)
            List<Server> allList = lb.getAllServers();//獲得全部服務(wù)
            int serverCount = allList.size();
            if (serverCount == 0) {
                /*
                 * No servers. End regardless of pass, because subsequent passes
                 * only get more restrictive.
                 */
                return null;
            }
// int index = chooseRandomInt(serverCount);//在區(qū)間內(nèi)隨機獲得一個地址

// server = upList.get(index);//從存活的列表中獲得
            //=================================
            total++;
            if (total > 5) {
                total = 0;
                currentIndex++;
            }
            if (currentIndex >= upList.size()) currentIndex = 0;
            server = upList.get(currentIndex);
            //=================================
            if (server == null) {
                /*
                 * The only time this should happen is if the server list were
                 * somehow trimmed. This is a transient condition. Retry after
                 * yielding.
                 */
                Thread.yield();
                continue;
            }
            if (server.isAlive()) {
                return (server);
            }
            // Shouldn't actually happen.. but must be transient or a bug.
            server = null;
            Thread.yield();
        }
        return server;
    }

    protected int chooseRandomInt(int serverCount) {
        return ThreadLocalRandom.current().nextInt(serverCount);
    }

    @Override
    public Server choose(Object key) {
        return choose(getLoadBalancer(), key);
    }

    @Override
    public void initWithNiwsConfig(IClientConfig clientConfig) {
        // TODO Auto-generated method stub
    }
}

(2)編寫配置類MyRuleConf

作用:將我們寫的這個規(guī)則注入到Spring中。

package com.yixin.myRule;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyRuleConf {

    @Bean
    public IRule myRule(){
        return new MyRule();//自定義規(guī)則
    }
}

(3)啟動類增加注解@RibbonClient

package com.yixin.springcloud;

import com.yixin.myRule.MyRuleConf;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.ribbon.RibbonClient;

@SpringBootApplication
@EnableEurekaClient
//在微服務(wù)啟動的時候就能加載自定義的Ribbon類(自定義的規(guī)則會覆蓋原有默認(rèn)的規(guī)則)
@RibbonClient(name = "SPRINGCLOUD-PROVIDER-BLOG",configuration = MyRuleConf.class)//開啟負(fù)載均衡,并指定自定義的規(guī)則
public class BlogConsumer_80 {

    public static void main(String[] args) {
        SpringApplication.run(BlogConsumer_80.class,args);
    }

}

(4)測試

 重啟 springcloud-consumer-blog-80

訪問:http://localhost:8000/consumer/blog

  • 訪問1-5次:

?

  • 訪問第6-10次:

?

  • 訪問第11-15次:

?

自定義規(guī)則測試成功!??!

總結(jié)

以上就是對基于Spring Cloud的負(fù)載均衡Ribbon知識點和實操的講解,實現(xiàn)負(fù)載均衡可以將我們的壓力分?jǐn)偟蕉鄠€操作單元。

這些僅為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot組件初始化后的4種啟動方式及常用方法

    springboot組件初始化后的4種啟動方式及常用方法

    在Spring Boot中,您可以通過幾種方式在組件初始化后執(zhí)行啟動任務(wù),下面小編給大家分享springboot組件初始化后的4種啟動方式及常用方法,感興趣的朋友一起看看吧
    2024-06-06
  • Java源碼解析之object類

    Java源碼解析之object類

    前些天看到別人討論閱讀源碼有什么用這個問題,有一句話說的特別好:學(xué)習(xí)別人實現(xiàn)某個功能的設(shè)計思路,來提高自己的編程水平。本文主要介紹了Java源碼解析之object類,需要的朋友可以參考。
    2017-10-10
  • SpringBoot中使用SpringSecurity進(jìn)行權(quán)限控制的示例代碼

    SpringBoot中使用SpringSecurity進(jìn)行權(quán)限控制的示例代碼

    本文將詳細(xì)介紹如何在Spring Boot應(yīng)用程序中使用Spring Security進(jìn)行權(quán)限控制,我們將探討Spring Security的基本概念,以及如何使用Spring Security實現(xiàn)認(rèn)證和授權(quán),需要的朋友可以參考下
    2024-02-02
  • Java獲取年月日(格式:xxxx年xx月xx日)的方法詳解

    Java獲取年月日(格式:xxxx年xx月xx日)的方法詳解

    在開發(fā)應(yīng)用程序時,經(jīng)常需要獲取當(dāng)前的年、月、日,并以特定格式進(jìn)行展示或處理,本文將介紹如何獲取年月日,并將其格式化為“xxxx年xx月xx日”的形式,幫助你在應(yīng)用程序中處理日期信息,需要的朋友可以參考下
    2023-10-10
  • Java中引用類型之強引用、軟引用、弱引用和虛引用詳解

    Java中引用類型之強引用、軟引用、弱引用和虛引用詳解

    這篇文章主要介紹了Java中引用類型之強引用、軟引用、弱引用和虛引用的相關(guān)資料,通過實際代碼示例,展示了如何利用引用隊列來跟蹤對象的回收狀態(tài),并實現(xiàn)資源的自動清理,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • Java中memcached的cache機制

    Java中memcached的cache機制

    這篇文章主要介紹了Java中memcached的cache機制,在Java中使用Memcached的緩存機制需要使用Java的Memcached客戶端庫。Memcached是一個高性能的分布式內(nèi)存緩存系統(tǒng),可以用來緩存常用的數(shù)據(jù),需要的朋友可以參考下
    2023-07-07
  • springboot如何靜態(tài)加載@configurationProperties

    springboot如何靜態(tài)加載@configurationProperties

    這篇文章主要介紹了springboot如何靜態(tài)加載@configurationProperties,本文一個錯誤案例和成功案例結(jié)合實例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 詳解Java冒泡排序

    詳解Java冒泡排序

    本篇文章通過代碼實例給大家詳細(xì)分析了Java冒泡排序的原理,有興趣的朋友可以學(xué)習(xí)下。
    2018-02-02
  • 詳解Java如何實現(xiàn)百萬數(shù)據(jù)excel導(dǎo)出功能

    詳解Java如何實現(xiàn)百萬數(shù)據(jù)excel導(dǎo)出功能

    這篇文章主要為大家詳細(xì)介紹了Java如何實現(xiàn)百萬數(shù)據(jù)excel導(dǎo)出功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下
    2023-02-02
  • Java中BigDecimal類的簡單用法

    Java中BigDecimal類的簡單用法

    這篇文章主要介紹了Java中BigDecimal類的簡單用法,是Java應(yīng)用程序開發(fā)中非常實用的技巧,本文以實例形式對此進(jìn)行了簡單的分析,需要的朋友可以參考下
    2014-09-09

最新評論

河曲县| 哈尔滨市| 元朗区| 思茅市| 安泽县| 舟曲县| 封开县| 威宁| 玉溪市| 于田县| 靖安县| 姚安县| 南充市| 陵水| 郯城县| 都兰县| 吉林省| 长丰县| 黎平县| 固安县| 彰武县| 三明市| 栖霞市| 大埔县| 洪湖市| 湖南省| 惠来县| 鲁山县| 九江县| 汤原县| 林口县| 中阳县| 曲麻莱县| 杂多县| 蒙自县| 广宁县| 菏泽市| 明水县| 彰化县| 大埔县| 铁力市|