minio安装部署和minIO-Client的使用

news2025/1/18 6:24:29

minio安装部署和minIO-Client的使用

在这里插入图片描述

一、服务器安装minio

1.进行下载

下载地址:

GNU/Linux

https://dl.min.io/server/minio/release/linux-amd64/minio

2.新建minio安装目录,执行如下命令

mkdir -p /home/minio/data

把二进制文件上传到安装目录后,执行:

chmod +x minio    //给予权限
export MINIO_ACCESS_KEY=minioadmin   //创建账号
export MINIO_SECRET_KEY=minioadmin   //创建密码
./minio server /home/minio/data        //启动

后台启动,并打印日志

nohup ./minio server /home/minio/data > /home/minio/data/minio.log &

默认的端口为:9000

自定义端口方式:自定义启动端口号以及控制台端口号,不设置则控制台会自动配置其他端口号,非常不方便

nohup ./minio server  --address :9000 --console-address :9001 /home/minio/data > /home/minio/data/minio.log &

查看状态

ps -ef|grep minio

3.docker安装minio

docker pull minio/minio

预选↓

docker run -d \
  -p 9000:9000 \
  --name minio2 \
  -v /home/minio/data:/data \
  -e "MINIO_ROOT_USER=minioadmin" \
  -e "MINIO_ROOT_PASSWORD=minioadmin" \
  minio/minio server /data --console-address ":9090"
新版用这个↓
docker run \
    -p 9000:9000 \
    -p 9090:9001 \
    --name sifan-minio \
    -d --restart=always \
    -v /root/sifan/minio/data:/data \
    -e "MINIO_ROOT_USER=youmans" \
    -e "MINIO_ROOT_PASSWORD=Youmans@7" \
    minio/minio:latest server /data --console-address ":9001" -address ":9000"
docker run -p 9000:9000 -p 9090:9090  --name minio  -d --restart=always  -e "MINIO_ACCESS_KEY=youmans"  -e "MINIO_SECRET_KEY=Youmans@7"  -v /mydata/minio/data:/data  minio/minio server  /data --console-address ":9090" -address ":9000"
docker run -p 9000:9000 --name minio -d --restart=always -e "MINIO_ACCESS_KEY=youmans" -e "MINIO_SECRET_KEY=youmans7" -v /mydata/minio/data:/data -v /mydata/minio/config:/root/.minio minio/minio server /data --console-address ":9000" --address ":9090"
docker run -p 9000:9000 -p 9090:9090  --name minio  -d --restart=always  -e "MINIO_ACCESS_KEY=youmans"  -e "MINIO_SECRET_KEY=youmans7"  -v /mydata/minio/data:/data  minio/minio:RELEASE.2021-06-17T00-10-46Z server  /data --console-address ":9090" -address ":9000"

设置开机自启

docker update --restart=always e51aed0a

二、进行访问,并设置桶

1.访问测试

    地址:http://192.168.56.10:9000

输入账号密码后:

进行创建桶,名字自取,创建完成后服务器home/minio/data下也会创建这个文件目录

在这里插入图片描述

2.设置public权限

在这里插入图片描述

必须将规则设置成readwrite ,才可进行读取文件,否则只存或者只能读。

在这里插入图片描述

三、springboot进行实现

1.引入依赖

<!-- minio 相关依赖 -->
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>3.0.10</version>
</dependency>
<!-- alibaba的fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.51</version>
</dependency>
<!-- thymeleaf模板引擎 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
        </dependency>
        <!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

2.在 application.yml 文件中加入 MinIO 服务器的相关信息

minio 文件存储配置信息
minio:
  endpoint: http://192.168.56.10:9000
  accesskey: minioadmin
  secretKey: minioadmin

3.创建实体类

这一步,我们将配置文件中 minio 的配置信息通过注解的方式注入到 MinioProp 这个实体中,方便后面我们使用

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
 
/**
 * minio 属性值
 */
@Data
@Component
@ConfigurationProperties(prefix = "minio")
public class MinioProp {
    /**
     * 连接url
     */
    private String endpoint;
    /**
     * 用户名
     */
    private String accesskey;
    /**
     * 密码
     */
    private String secretKey;

    private String bucketname;
}

4.创建核心配置类

通过注入 MinIO 服务器的相关配置信息,得到 MinioClient 对象,我们上传文件依赖此对象

import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**

 * minio 核心配置类
   */
   @Configuration
   @EnableConfigurationProperties(MinioProp.class)
   public class MinioConfig {

   @Autowired
   private MinioProp minioProp;

   /**

    * 获取 MinioClient
      *
    * @return
    * @throws InvalidPortException
    * @throws InvalidEndpointException
      */
      @Bean
      public MinioClient minioClient() throws InvalidPortException, InvalidEndpointException {
      return new MinioClient(minioProp.getEndpoint(), minioProp.getAccesskey(), minioProp.getSecretKey());
      }
      }

5.上传工具类

import com.alibaba.fastjson.JSONObject;
import com.zyxx.email.common.redis.RedisUtil;
import com.zyxx.email.utils.DateUtils;
import io.minio.MinioClient;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;

@Slf4j
@Component
public class MinioUtils {
@Autowired
private MinioClient client;
@Autowired
private MinioProp minioProp;
 
/**
 * 创建bucket
 *
 * @param bucketName bucket名称
 */
@SneakyThrows
public void createBucket(String bucketName) {
    if (!client.bucketExists(bucketName)) {
        client.makeBucket(bucketName);
    }
}
 
/**
 * 上传文件
 *
 * @param file       文件
 * @param bucketName 存储桶
 * @return
 */
public JSONObject uploadFile(MultipartFile file, String bucketName) throws Exception {
    JSONObject res = new JSONObject();
    res.put("code", 0);
    // 判断上传文件是否为空
    if (null == file || 0 == file.getSize()) {
        res.put("msg", "上传文件不能为空");
        return res;
    }
    try {
       	// 判断存储桶是否存在
        createBucket(bucketName);
        // 文件名
        String originalFilename = file.getOriginalFilename();
        // 新的文件名 = 存储桶名称_时间戳.后缀名
        String fileName = bucketName + "_" + System.currentTimeMillis() + originalFilename.substring(originalFilename.lastIndexOf("."));
        // 开始上传
        client.putObject(bucketName, fileName, file.getInputStream(), file.getContentType());
        res.put("code", 1);
        res.put("msg", minioProp.getEndpoint() + "/" + bucketName + "/" + fileName);
        return res;
	}  catch (Exception e) {
        log.error("上传文件失败:{}", e.getMessage());
    }
    res.put("msg", "上传失败");
    return res;
}
}

6.controller接口

import com.alibaba.fastjson.JSONObject;
import com.zyxx.email.common.minio.MinioUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;

@Controller
public class MinioController {

@Autowired
private MinioUtils minioUtils;
/**
 * 上传
 *
 * @param file
 * @param request
 * @return
 */
@PostMapping("/upload0")
@ResponseBody
public String upload0(@RequestParam(name = "file", required = false) MultipartFile file, HttpServletRequest request) {
    JSONObject res = null;
    try {
        res = minioUtils.uploadFile(file, "product");
    } catch (Exception e) {
        e.printStackTrace();
        res.put("code", 0);
        res.put("msg", "上传失败");
    }
    return res.toJSONString();
}
}
    @ResponseBody
    @PostMapping("/upload")
    public String upload(MultipartFile file)throws IOException {
        try {
            return    minioUtils.uploadFile(file,minioProp.getBucketname());
        } catch (Exception e) {
            e.printStackTrace();
            return null ;
        }
    }

7.swagger配置

import com.google.common.base.Predicates;
import org.apache.tomcat.util.http.LegacyCookieProcessor;
import org.springframework.boot.web.embedded.tomcat.TomcatContextCustomizer;
import org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory;
import org.springframework.boot.web.server.WebServerFactoryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration//配置类
@EnableSwagger2 //swagger注解
public class SwaggerConfig {

    @Bean
    public Docket webApiConfig(){
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("webApi")
                .apiInfo(webApiInfo())
                .select()
               // .paths(Predicates.not(PathSelectors.regex("/admin/.*")))
                .paths(Predicates.not(PathSelectors.regex("/error.*")))
                .build();

    }

    private ApiInfo webApiInfo(){

        return new ApiInfoBuilder()
                .title("谷粒学院API文档")
                .description("本文档描述了谷粒学院微服务接口定义")
                .version("1.0")
                .contact(new Contact("java", "http://atguigu.com", "1123@qq.com"))
                .build();
    }
    @Bean
    public WebServerFactoryCustomizer<TomcatServletWebServerFactory> cookieProcessorCustomizer() {
        return tomcatServletWebServerFactory -> tomcatServletWebServerFactory.addContextCustomizers((TomcatContextCustomizer) context -> {
            context.setCookieProcessor(new LegacyCookieProcessor());
        });
    }
}

8.通过网址进行访问

在这里插入图片描述

9.Swagger进行测试上传

在这里插入图片描述

10.删除文件

//文件删除
@DeleteMapping
public String delete(String name) {
    try {
        MinioClient minioClient = new MinioClient(ENDPOINT, ACCESSKEY, SECRETKEY);
        minioClient.removeObject(BUCKETNAME, name);
    } catch (Exception e) {
        return "删除失败"+e.getMessage();
    }
    return "删除成功";
}

四、安装客户端MinIO-Client

1.下载minio-client

win地址:https://dl.min.io/client/mc/release/windows-amd64/mc.exe

将文件复制到:C:\Windows\System32\

就可以通过命令行操作

linux地址:https://dl.min.io/client/mc/release/linux-amd64/mc

百度云盘:

mc链接:https://pan.baidu.com/s/1OXkNN2frCqpJb3EWwiHM8g
提取码:i6l5

mc.exe链接:https://pan.baidu.com/s/1cJPgvljKfH9ihGN-fQuasg
提取码:pe32

2.使用minio-client连接服务端

以win为例

添加minIO服务

**mc config host add minio01 http://192.168.56.10:9000 minioadmin minioadmin**

查询mc host配置

mc config host ls
删除host

mc config host remove minio01
端口为api端口。

如果使用控制台端口就会报错

mc: Unable to list folder. S3 API Request made to Console port. S3 Requests should be sent to API port.


### 3.mc访问minIO服务操作文件

使用 mc ls minio01访问列出所有的桶,可以加桶名进行后续的访问

![在这里插入图片描述](http://39.98.72.193:9000/youmans-dfs/2022-12-12/Dfs_pic_1670860529628.png#pic_center)






复制本地文件到桶

mc cp C:\Users\Administrator\Desktop\美女图片_360图片_files\g.jpg minio01/yootk

![在这里插入图片描述](https://img-blog.csdnimg.cn/fb5bcaf54afc40e0b33adb3ac8837c1f.png#pic_center)


复制MinIO文件到本地

mc cp minio01/yootk/g.jpg D:\tiger


![在这里插入图片描述](https://img-blog.csdnimg.cn/b0497e26befb4291b3b8ab2a6bc20622.png#pic_center)


备:本地路径需存在

删除文件:

mc rm minio01/yootk/gg


![在这里插入图片描述](https://img-blog.csdnimg.cn/e0330cb430aa4d33a8d744f585288191.png#pic_center)




#创建bucket
mc mb minio-server/bucket01
#删除bucket
mc rb minio-server/bucket02
并bucket不为空,可以强制删除慎用
mc rb --force minio-server/bucket0l
查看磁盘使用情况
mc du minio01/yootk




### 4.MinIO mc admin 命令使用

#### ①.基础命令

service 服务重启并停止所有MinIo服务器
update 更新更新所有MinIO服务器
info 信息显示MinIO服务器信息
user 用户管理用户
group 小组管理小组
policy MinIo服务器中定义的策略管理策略
config 配置管理MinIo服务器配置
heal 修复MinIo服务器上的磁盘,存储桶和对象
profile 概要文件生成概要文件数据以进行调试
top 顶部提供MinIo的顶部统计信息
trace 跟踪显示MinIo服务器的http跟踪
console 控制台显示MinI0服务器的控制台日志
prometheus Prometheus管理Prometheus配置
kms kms执行KMs管理操作


#### ②.用户管理

mc admin user --help
#新建用户
mc admin user add minio-server fox
mc admin user add minio-server root minioadmin
#查看用户
mc admin user list minio-server
#禁用用户
mc admin user disable minio-server fox02
#启用用户
mc admin user disable minio-server fox02
#查看用户信息
mc admin user info minio-server fox
#删除用户
mc admin user remove minio-server fox02


### 5.MinIO策略操作

#### ①.列出MinIO上的所有固定策略

mc admin policy list minio01


![在这里插入图片描述](https://img-blog.csdnimg.cn/7d0e48a108ec4125ad10f17fcb36f13f.png#pic_center)


#### ②.查看policy信息 

mc admin policy info minio01 readwrite
C:\Windows\system32>mc admin policy info minio01 readwrite
{
“PolicyName”: “readwrite”,
“Policy”: {
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3:"
],
“Resource”: [
"arn:aws:s3:::

]
}
]
}
}


#### ③.在liunix添加策略

#/usr/local/soft/yootk.json
#设置yootkt桶的读取权限和yootk/下的所有权限
{
“Version”: “2012-10-17”,
“Statement”: [
{
“Effect”: “Allow”,
“Action”: [
“s3:GetBucketLocation”,
“s3:GetObject”
],
“Resource”: [
“arn:aws:s3:::yootk”
]
},
{
“Effect”: “Allow”,
“Action”: [
“s3:"
],
“Resource”: [
"arn:aws:s3:::yootk/

]
}
]
}

mc admin policy add minio02 yootk-admin /usr/local/soft/yootk.json

在这里插入图片描述

④.为用户root设置yootk-admin策略

mc admin policy set minio02 yootk-admin user=root

在这里插入图片描述

⑤.访问控制台测试(root)

在这里插入图片描述

附件:linux中配置

1.获取minio文件

[root@hadoop001 minio]# wget http://dl.minio.org.cn/client/mc/release/linux-amd64/mc
[root@hadoop001 minio]# chmod +x mc 
[root@hadoop001 minio]# mv mc /usr/bin/

#查看帮助信息

[root@hadoop001 minio]# mc -h

2.设置host

mc config host add minio02 http://192.168.56.10:9000  minioadmin  minioadmin 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/85100.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【PAT甲级 - C++题解】1128 N Queens Puzzle

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;PAT题解集合 &#x1f4dd;原题地址&#xff1a; 题目详情 - 1128 N Queens Puzzle (pintia.cn) &#x1f511;中文翻译&#xff1a;皇后问题 &#x1f4e3;…

第9章 无线网络和移动网络

目录 9.1 无线局域网 WLAN 9.1.1 无线局域网的组成 1. 无线局域网 WLAN (Wireless Local Area Network) 2. IEEE 802.11 3. 移动自组网络 9.1.2 802.11 局域网的物理层 9.1.3 802.11 局域网的 MAC 层协议 1. CSMA/CA 协议 2. 时间间隔 DIFS 的重要性 3. MAC两个子层…

acwing基础课——Floyd

由数据范围反推算法复杂度以及算法内容 - AcWing 常用代码模板3——搜索与图论 - AcWing 基本思想&#xff1a; floyd算法的原理是基于动态规划的基础上实现的&#xff0c;因为是稠密图我们通过邻接矩阵来存储&#xff0c;我们将各点距离初始化为正无穷(该点到自己的距离为0)&…

软件测试基础理论体系学习8-什么是验收测试?验收测试的内容是什么?过程是什么?有什么测试策略?

8-什么是验收测试&#xff1f;验收测试的内容是什么&#xff1f;过程是什么&#xff1f;有什么测试策略&#xff1f;1 验收测试的主要内容1.1 简介和说明1.2 验收测试的目的1.3 验收测试的任务1.4 验收测试主要内容1.4.1 验收测试标准1.4.2 配置复审1.4.3 α、β测试2 验收测试…

基于intel低功耗平台边缘计算解决方案助力半导体设备升级

半导体芯片是现代电子领域的大脑。事实上&#xff0c;在通信、计算、零售、医疗保健和运输应用领域&#xff0c;半导体芯片为各种先进技术提供了基础。2020年全球半导体销售额增长6.5%&#xff0c;相关制造设备的生产需求也相应增加。 某业内日本半导体设备制造厂商&#xff0…

营销不知道怎么做,不妨试试社交新零售电商结合新型引流模式

大家好&#xff0c;我是林工&#xff0c;如今移动互联网的快速发展为社交媒体分销提供了生根发芽的土壤&#xff0c;人们不仅仅满足于单方面的购物消费&#xff0c;开始利用社交属性&#xff0c;出现了具有强大带货能力和分销能力的人群&#xff0c;也就是当时的代购和微商&…

BEVFormer-accelerate:基于EasyCV加速BEVFormer

作者&#xff1a;贺弘 夕陌 谦言 临在 导言 BEVFormer是一种纯视觉的自动驾驶感知算法&#xff0c;通过融合环视相机图像的空间和时序特征显式的生成具有强表征能力的BEV特征&#xff0c;并应用于下游3D检测、分割等任务&#xff0c;取得了SOTA的结果。我们在EasyCV开源框架&…

【MySQL自学之路】第3天——MySQL数据库服务的基本操作

目录 前言 数据库的初始化 添加环境变量 数据库配置文件的编写【my.ini】 初始化MySQL服务 MySQL服务操作 安装一个MySQL服务 删除一个MySQL服务 开启你的MySQL服务 关闭你的MySQL服务 查看电脑中存在的MySQL服务 其他操作 登录数据库 修改密码 登录跳过密码验证…

Hi3861开发遇到的小问题及解决方法和一些小技巧

开发过程中的学习 一、硬件支持开启&#xff08;替换文件&#xff09; &#x1f604; 在D:\ubuntu2004Harmony镜像中通过vscode 使用编译命令 python build.py wifiiot是存在一个小问题 No option ‘riscv32-unknown-elf-gcc_path’ in section: ndk’ ” 而在E:\鸿蒙资料\鸿蒙…

[附源码]Python计算机毕业设计儿童绘本租赁网站Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等…

基于jsp+mysql+ssm工程车辆租赁系统-计算机毕业设计

项目介绍 随着现代工程车租赁的快速发展&#xff0c;可以说工程车租赁已经逐渐成为现代工程车租赁过程中最为重要的部分之一。但是一直以来我国传统的工程车租赁并没有建立一套完善的行之有效的工程车租赁系统&#xff0c;传统的工程车租赁已经无法适应高速发展&#xff0c;无…

Idea制作docker镜像

一、配置docker远程访问 1.在linux系统中查找docker.service文件&#xff0c;使用命令&#xff1a;find / -name docker.service 2.编辑 /usr/lib/systemd/system/docker.service文件&#xff0c;在ExecStart/usr/bin/dockerd后面添加 -H tcp://0.0.0.0:2375 3.重新加载dock…

持续盈利背后,水滴“新增长”难寻?

配图来自Canva可画 近年来随着互联网红利消失&#xff0c;越来越多的互联网企业回归效益&#xff0c;开始将“降本增效”纳入了议事日程之中&#xff0c;这不仅体现在BAT等一众大厂的财报中&#xff0c;就连水滴等互联网领域的“后起之秀”也在争相效法。 作为过去几年有名的…

最受欢迎的工具-从burp到支付和暴破

文章目录一、封神台七1、认识burp2、功能3、burp字体设置4、尝试抓包/改包&#xff08;支付&#xff09;5、尝试抓包改包&#xff08;暴力破解&#xff09;一、封神台七 1、认识burp 浏览器和相关应用程序的中间拦截、修改、重放数据包的代理工具 2、功能 1、拦截本机8080端…

[译]Ceph性能优化之CPU核数对性能的影响 - Part 1

原文链接 知乎专栏: [译]Ceph性能优化之CPU核数对性能的影响 - Part 1 - 知乎 简介 Ceph在很多方面都做得很好&#xff0c;但从来没有人意识到它有极低的资源消耗。Ceph需要做一些工作来确保数据的一致性&#xff0c;以及如何将数据(PG)放到合适的位置。我们正在努力优化Cep…

制作一个简单HTML传统端午节日网页(HTML+CSS)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

tensorflow学习笔记一

1、tensorflow中的数据类型 import tensorflow as tf import numpy as np# 张量可以是数字、列表、ndarray# 使用列表创建张量 print(tf.constant([2,3])) print(tf.constant([[2,3],[1,4]]))# tensorflow2 默认使用Eager动态图机制 print(type(tf.constant([[2,3],[1,4]])))# …

springcloud(gateway限流)

目录 1. 限流的使用场景2. gateway限流实现 2.1 前提&#xff1a;2.2 导入依赖包2.3 在项目配置文件中配置redis2.4 开发限流需要的Bean2.5 为服务配置限流参数2.6 压力测试3. 熔断 3.1 熔断的使用场景3.2 熔断配置 1. 限流的使用场景 为什么限流 限流就是限制流量&#xff0c…

SQL学习

一、SQL怎么运行的&#xff1a;1、执行顺序2、MySQL 基本架构概览3、Server 层基本组件介绍4、语句分析二、索引&#xff08;index&#xff09;1、索引的使用成本2、语法3、删除索引三、分析函数1、聚合分析函数2、排名分析函数3、数学分析函数4、行比较分析函数四、PLSQL五、c…

SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig

SpringCloud - 整合Nacos启动报错Consider defining a bean of type IClientConfig前言一. 尝试解决Bug的几种不合适方案1.1 添加ribbon依赖1.2 按照提示增加IClientConfig配置1.3 正确答案前言 我写了一套网关服务&#xff0c;一模一样的代码在自己电脑和公司电脑都写了一份。…