当前位置: 首页 > news >正文

【大数据】通过 docker-compose 快速部署 MinIO 保姆级教程

文章目录

    • 一、概述
    • 二、MinIO 与 Ceph 对比
      • 1)架构设计对比
      • 2)数据一致性对比
      • 3)部署和管理对比
      • 4)生态系统和兼容性对比
    • 三、前期准备
      • 1)部署 docker
      • 2)部署 docker-compose
    • 四、创建网络
    • 五、MinIO 编排部署
      • 1)下载 MinIO 安装包
      • 2)配置
      • 3)启动脚本 bootstrap.sh
      • 4)构建镜像 Dockerfile
      • 5)编排 docker-compose.yaml
      • 6)开始部署
      • 7)简单测试验证
      • 8)web 访问

一、概述

MinIO 是一个开源的对象存储服务器,它兼容Amazon S3(Simple Storage Service)API。它被设计用于构建分布式存储架构,提供高可用性、高性能和可扩展的对象存储解决方案。

下面是MinIO的一些主要特点和功能:

  • 对象存储:MinIO以对象为基本存储单元,可以存储和管理任意大小的文件、数据对象。它提供了标准的对象存储操作,如上传、下载、删除和元数据管理。

  • 分布式架构:MinIO采用分布式架构,可以在多个节点上部署,并将数据分布和复制在不同的节点上。这提供了高可用性和数据冗余,确保数据的持久性和可靠性。

  • 高性能:MinIO通过并行处理和分布式架构实现高性能的数据存取。它利用现代硬件和网络技术,充分利用多核处理器和高带宽网络,以实现快速的数据传输和处理。

  • 水平扩展:MinIO可以水平扩展,通过添加更多的节点来增加存储容量和吞吐量。它支持自动数据分片和负载均衡,确保数据在各个节点上均匀分布和访问的负载均衡。

  • 数据保护:MinIO提供了多种数据保护机制,包括数据冗余、故障转移和数据校验。它可以在不同的节点之间复制数据,以应对节点故障和数据损坏的情况。

  • 安全性:MinIO支持数据加密和访问控制,保护存储在其中的数据的安全性和隐私性。它提供了传输层加密(TLS/SSL)和服务器端加密选项,以及身份验证和访问控制机制。

总的来说,MinIO是一个开源的高性能对象存储服务器,适用于构建分布式存储系统。它具有高可用性、可扩展性和数据保护机制,兼容Amazon S3 API,使其与现有的S3生态系统和工具集成无缝。MinIO在大数据、云计算和容器化环境中广泛应用,为应用程序提供了可靠、高效的对象存储服务。

在这里插入图片描述
这里主要侧重使用docker快速部署环境,想了解更多,可以参考我以下几篇文章:

  • 高性能分布式对象存储——MinIO(环境部署)
  • 高性能分布式对象存储——MinIO实战操作(MinIO扩容)
  • 【云原生】Minio on k8s 讲解与实战操作
  • 【云原生.大数据】镜像仓库Harbor对接MinIO对象存储

官方文档:https://docs.min.io/
中文文档:http://docs.minio.org.cn/docs/

二、MinIO 与 Ceph 对比

MinIO和Ceph都是流行的开源存储解决方案,它们在对象存储领域有不同的特点和适用场景。下面是MinIO和Ceph的对比:

1)架构设计对比

  • MinIOMinIO采用分布式架构,以水平扩展为基础。它通过多个独立的MinIO节点组成集群,每个节点都是独立的对象存储服务器。MinIO专注于提供简单、轻量级的对象存储服务,适用于小型到中等规模的部署。
  • CephCeph是一个分布式存储系统,由对象存储、块存储和文件系统组成。它使用RADOS(Reliable Autonomic Distributed Object Store)作为底层存储系统,提供高可用性和数据冗余。Ceph适用于大规模的企业级部署,具有复杂的架构和丰富的功能。

2)数据一致性对比

  • MinIOMinIO在默认配置下提供最终一致性,即写入操作返回成功后,数据可能会有一定的时间窗口内的延迟才能完全一致。这适用于许多应用场景,如数据备份、存档等。
  • CephCeph提供强一致性,即写入操作在返回成功后,数据即刻就达到一致性。这对于需要强一致性保证的应用场景非常重要,如数据库和事务处理。

3)部署和管理对比

  • MinIOMinIO 的部署和管理相对简单,可以通过单个二进制文件或容器进行快速安装和配置。它提供了直观的管理界面和易于使用的API,使得管理和监控变得简单。
  • CephCeph 的部署和管理相对复杂,涉及多个组件和配置。它需要更多的时间和专业知识来设置和维护,需要熟悉Ceph的架构和配置。

4)生态系统和兼容性对比

  • MinIO:MinIO与Amazon S3 API兼容,这意味着现有的S3工具和应用程序可以无缝地与MinIO集成。它还有一个活跃的社区,提供了各种客户端库和插件,扩展了其功能和兼容性。

  • CephCeph 具有广泛的生态系统和丰富的功能集。它可以与多个协议和接口(如RADOS、RBD、CephFS)进行集成,提供块存储、文件系统和对象存储的全面解决方案。

综上所述,MinIO适用于简单、轻量级的对象存储需求,注重高性能和易用性。它适合中小规模部署,并且与Amazon S3兼容,易于与现有的S3生态系统集成。

  • Ceph则适用于大规模、复杂的企业级存储需求。它提供强一致性和丰富的功能集,适合需要高可用性、数据冗余和复杂数据操作的场景。Ceph的部署和管理相对复杂,需要更多的配置和管理工作。

  • 选择MinIO还是Ceph取决于具体的需求和场景。如果你需要一个简单、易用、高性能的对象存储解决方案,并与S3兼容,那么MinIO是一个不错的选择。如果你需要一个功能强大、可扩展、支持块存储和文件系统的分布式存储系统,且具备强一致性的要求,那么Ceph是更适合的选择。

无论选择MinIO还是Ceph,都需要仔细评估其与特定应用和环境的兼容性、性能需求、管理复杂性和可扩展性,以确保选择的解决方案能够满足实际需求并提供可靠的存储服务。

三、前期准备

1)部署 docker

# 安装yum-config-manager配置工具
yum -y install yum-utils# 建议使用阿里云yum源:(推荐)
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo# 安装docker-ce版本
yum install -y docker-ce
# 启动并开机启动
systemctl enable --now docker
docker --version

2)部署 docker-compose

curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose
docker-compose --version

四、创建网络

# 创建,注意不能使用hadoop_network,要不然启动hs2服务的时候会有问题!!!
docker network create hadoop-network# 查看
docker network ls

五、MinIO 编排部署

1)下载 MinIO 安装包

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

2)配置

这里部署的是伪集群,但是需要的磁盘还是那么多,下面就是挂载磁盘的步骤:

### 1、格式化
mkfs.ext4 /dev/sdb
mkfs.ext4 /dev/sdc
mkfs.ext4 /dev/sdd
mkfs.ext4 /dev/sde
mkfs.ext4 /dev/sdf
mkfs.ext4 /dev/sdg
mkfs.ext4 /dev/sdh
mkfs.ext4 /dev/sdi
mkfs.ext4 /dev/sdj
mkfs.ext4 /dev/sdk
mkfs.ext4 /dev/sdl
mkfs.ext4 /dev/sdm### 2、创建挂载目录
mkdir /opt/apache/docker-compose-minio/data/minio-node{1..3}/data{1..4}### 3、挂载
# minio-node1
mount /dev/sdb /opt/apache/docker-compose-minio/data/minio-node1/data1
mount /dev/sdc /opt/apache/docker-compose-minio/data/minio-node1/data2
mount /dev/sdd /opt/apache/docker-compose-minio/data/minio-node1/data3
mount /dev/sde /opt/apache/docker-compose-minio/data/minio-node1/data4# minio-node2
mount /dev/sdf /opt/apache/docker-compose-minio/data/minio-node2/data1
mount /dev/sdg /opt/apache/docker-compose-minio/data/minio-node2/data2
mount /dev/sdh /opt/apache/docker-compose-minio/data/minio-node2/data3
mount /dev/sdi /opt/apache/docker-compose-minio/data/minio-node2/data4# minio-node3
mount /dev/sdj /opt/apache/docker-compose-minio/data/minio-node3/data1
mount /dev/sdk /opt/apache/docker-compose-minio/data/minio-node3/data2
mount /dev/sdl /opt/apache/docker-compose-minio/data/minio-node3/data3
mount /dev/sdm /opt/apache/docker-compose-minio/data/minio-node3/data4### 4、持久化配置
# minio-node1
echo "/dev/sdb /opt/apache/docker-compose-minio/data/minio-node1/data1  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sdc /opt/apache/docker-compose-minio/data/minio-node1/data2  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sdd /opt/apache/docker-compose-minio/data/minio-node1/data3  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sde /opt/apache/docker-compose-minio/data/minio-node1/data4  ext4  defaults        0 0" >> /etc/fstab# minio-node2
echo "/dev/sdf /opt/apache/docker-compose-minio/data/minio-node2/data1  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sdg /opt/apache/docker-compose-minio/data/minio-node2/data2  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sdh /opt/apache/docker-compose-minio/data/minio-node2/data3  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sdi /opt/apache/docker-compose-minio/data/minio-node1/data4  ext4  defaults        0 0" >> /etc/fstab# minio-node3
echo "/dev/sdj /opt/apache/docker-compose-minio/data/minio-node3/data1  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sdk /opt/apache/docker-compose-minio/data/minio-node3/data2  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sdl /opt/apache/docker-compose-minio/data/minio-node3/data3  ext4  defaults        0 0" >> /etc/fstab
echo "/dev/sdm /opt/apache/docker-compose-minio/data/minio-node3/data4  ext4  defaults        0 0" >> /etc/fstab

3)启动脚本 bootstrap.sh

#!/bin/bash
source /etc/profile# 在三台机器上都执行该文件,即以分布式的方式启动了MINIO
# --address "0.0.0.0:9000" 挂载9001端口为api端口(如Java客户端)访问的端口
# --console-address ":9000" 挂载9000端口为web端口;
/opt/apache/minio/minio server --address 0.0.0.0:9000 --console-address 0.0.0.0:9001 --config-dir /etc/minio \
http://minio-node1/opt/apache/minio/data/export1 \
http://minio-node1/opt/apache/minio/data/export2 \
http://minio-node1/opt/apache/minio/data/export3 \
http://minio-node1/opt/apache/minio/data/export4 \
http://minio-node2/opt/apache/minio/data/export1 \
http://minio-node2/opt/apache/minio/data/export2 \
http://minio-node2/opt/apache/minio/data/export3 \
http://minio-node2/opt/apache/minio/data/export4 \
http://minio-node3/opt/apache/minio/data/export1 \
http://minio-node3/opt/apache/minio/data/export2 \
http://minio-node3/opt/apache/minio/data/export3 \
http://minio-node3/opt/apache/minio/data/export4 >/opt/apache/minio/logs/minio_server.log &tail -f /opt/apache/minio/logs/minio_server.log

Minio默认9000端口,在配置文件中加入–address “127.0.0.1:9029” 可更改端口

  • MINIO_ACCESS_KEY:用户名,长度最小是5个字符
  • MINIO_SECRET_KEY:密码,密码不能设置过于简单,不然minio会启动失败,长度最小是8个字符
  • –config-dir:指定集群配置文件目录
  • –address: api的端口,默认是9000
  • --console-address :web端口,默认随机

【温馨提示】磁盘大小必须>1G,这里我添加的是4*2G的盘

4)构建镜像 Dockerfile

FROM registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/centos-jdk:7.7.1908# 创建日志存储目录
RUN mkdir -p /opt/apache/minio/logs
# 分别在三个节点上创建存储目录
RUN mkdir -p /opt/apache/minio/data/export{1..3}
# 创建配置目录
RUN mkdir -p /etc/minio
# 账号密码
ENV MINIO_ROOT_USER=admin
ENV MINIO_ROOT_PASSWORD=admin123456# copy minio
COPY minio /opt/apache/minio/# copy minio client mc
COPY mc /opt/apache/minio/RUN ln -s /opt/apache/minio/mc /usr/local/sbin/mc# copy bootstrap.sh
COPY bootstrap.sh /opt/apache/
RUN chmod +x /opt/apache/bootstrap.shWORKDIR /opt/apache

开始构建镜像

docker build -t registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619 . --no-cache --progress=plain# 为了方便小伙伴下载即可使用,我这里将镜像文件推送到阿里云的镜像仓库
docker push registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619### 参数解释
# -t:指定镜像名称
# . :当前目录Dockerfile
# -f:指定Dockerfile路径
#  --no-cache:不缓存

5)编排 docker-compose.yaml

version: '3'
services:minio-node1:image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619container_name: minio-node1hostname: minio-node1restart: alwaysprivileged: trueenv_file:- .envexpose:- "${MinIO_PORT}"ports:- "${MinIO_HTTP_PORT}"volumes:- /opt/apache/docker-compose-minio/data/minio-node1/data1:/opt/apache/minio/data/export1- /opt/apache/docker-compose-minio/data/minio-node1/data2:/opt/apache/minio/data/export2- /opt/apache/docker-compose-minio/data/minio-node1/data3:/opt/apache/minio/data/export3- /opt/apache/docker-compose-minio/data/minio-node1/data4:/opt/apache/minio/data/export4command: ["sh","-c","/opt/apache/bootstrap.sh"]networks:- hadoop-networkhealthcheck:test: ["CMD-SHELL", "netstat -tnlp|grep :${MinIO_PORT} || exit 1"]interval: 10stimeout: 10sretries: 5minio-node2:image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619container_name: minio-node2hostname: minio-node2restart: alwaysprivileged: trueenv_file:- .envexpose:- "${MinIO_PORT}"ports:- "${MinIO_HTTP_PORT}"volumes:- /opt/apache/docker-compose-minio/data/minio-node2/data1:/opt/apache/minio/data/export1- /opt/apache/docker-compose-minio/data/minio-node2/data2:/opt/apache/minio/data/export2- /opt/apache/docker-compose-minio/data/minio-node2/data3:/opt/apache/minio/data/export3- /opt/apache/docker-compose-minio/data/minio-node2/data4:/opt/apache/minio/data/export4command: ["sh","-c","/opt/apache/bootstrap.sh"]networks:- hadoop-networkhealthcheck:test: ["CMD-SHELL", "netstat -tnlp|grep :${MinIO_PORT} || exit 1"]interval: 10stimeout: 10sretries: 5minio-node3:image: registry.cn-hangzhou.aliyuncs.com/bigdata_cloudnative/minio:20230619container_name: minio-node3hostname: minio-node3restart: alwaysprivileged: trueenv_file:- .envexpose:- "${MinIO_PORT}"ports:- "${MinIO_HTTP_PORT}"volumes:- /opt/apache/docker-compose-minio/data/minio-node3/data1:/opt/apache/minio/data/export1- /opt/apache/docker-compose-minio/data/minio-node3/data2:/opt/apache/minio/data/export2- /opt/apache/docker-compose-minio/data/minio-node3/data3:/opt/apache/minio/data/export3- /opt/apache/docker-compose-minio/data/minio-node3/data4:/opt/apache/minio/data/export4command: ["sh","-c","/opt/apache/bootstrap.sh"]networks:- hadoop-networkhealthcheck:test: ["CMD-SHELL", "netstat -tnlp|grep :${MinIO_PORT} || exit 1"]interval: 10stimeout: 10sretries: 5# 连接外部网络
networks:hadoop-network:external: true

.env 文件内容

MinIO_PORT=9000
MinIO_HTTP_PORT=9001

6)开始部署

# --project-name指定项目名称,默认是当前目录名称
docker-compose -f docker-compose.yaml up -d# 查看
docker-compose -f docker-compose.yaml ps# 卸载
docker-compose -f docker-compose.yaml down

7)简单测试验证

# 登录容器内测试
docker exec -it minio-node1 bash# 登录,密文输入(推荐)
[root@minio-node1 apache]# mc config host add minio http://localhost:9000
Enter Access Key: admin
Enter Secret Key: 输入密码
Added `minio` successfully.# 查看集群信息
mc admin info minio

在这里插入图片描述

8)web 访问

http://ip:port

docker-compose -f docker-compose.yaml ps

账号/密码:admin/admin123456
在这里插入图片描述
在这里插入图片描述


到此通过 docker-compose 快速部署 MinIO 保姆级教程就完结了,有任何疑问请关注我公众号:大数据与云原生技术分享,加群交流或私信沟通,,如本篇文章对您有所帮助,麻烦帮忙一键三连(点赞、转发、收藏)~

相关文章:

【大数据】通过 docker-compose 快速部署 MinIO 保姆级教程

文章目录 一、概述二、MinIO 与 Ceph 对比1)架构设计对比2)数据一致性对比3)部署和管理对比4)生态系统和兼容性对比 三、前期准备1)部署 docker2)部署 docker-compose 四、创建网络五、MinIO 编排部署1&…...

VMware 虚拟机安装windows 10操作系统

先提前准备好镜像文件 1.创建新的虚拟机 2.选择自定义,然后下一步 v Windows 建议选择2G以上,下一步 选择网络地址转换(NAT),下一步 这里可按自己的需求来分区,也可以安装好后再分区 选择立即重启&#xff…...

Mysql实战(2)之MySQL执行流程

-- 查看mysql当前有多少连接 show global status like Thread%; /* Threads_cached:缓存中的线程连接数 Threads_connected:当前打开的连接数 Threads_created:为处理连接创建的线程数 Threads_running:非睡眠状态的连接数&…...

ES6 | (二)ES6 新特性(下) | 尚硅谷Web前端ES6教程

文章目录 📚迭代器🐇定义🐇工作原理🐇自定义遍历数据 📚生成器函数🐇声明和调用🐇生成器函数的参数传递🐇生成器函数案例 📚Promise📚Set🐇Set的定…...

客户案例|用友NC财务系统上云

本文分享一次成功将用友NC财务系统上云的经验,主要涉及阿里云上Oracle ASM存储扩容,阿里云ESC RAC服务器扩容,阿里云上Oracle RAC数据库迁移等相关技术,一起来看看吧! 1 客户数据库上云背景 本次项目我司主要负责客户…...

OceanPen Art AI绘画系统内容讲解

在一个崇高的目标支持下,不停地工作,即使慢,也一定会获得成功。 —— 爱因斯坦 演示站点: ai.oceanpen.art官方论坛: www.jingyuai.com 💡技术栈 前端:VUE3后端:Java数据&#xf…...

类 Unix 系统的文件目录结构

以下是类 Unix 系统的文件目录结构、各个目录主要存放的文件以及缩写的全称的详细说明: 根目录 /: 全称: Root Directory说明:根目录是整个文件系统的起点,包含了所有其他目录和文件。 /bin 目录: 全称: Binary说明&a…...

外部存储器接口(EMIF)

外部存储器接口(EMIF) 该设备支持双核架构;为了为每个CPU子系统提供一个专用的EMIF,该设备支持两个EMIF模块——EMIF1和EMIF2。两个模块完全相同,具有相同的功能集,但具有不同的地址/数据大小。EMIF1在CPU…...

华为认证HCIP报名条件有哪些?考试要求介绍

华为HCIP认证是很多网络工程师的考证首选,尤其对于刚入行不久的网络工程师们来说,这个证书无论是从难度出发还是从含金量出发,都是值得一考的。 那么如果想报名华为HCIP认证有哪些条件以及考试要求,华为HCIP的报名需不需要通过机…...

【Python】变量的引用

🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...

nextjs13如何进行服务端渲染?

目录 一、创建一个新项目 二、动态获取后端数据进行服务端渲染出现的问题 三、nextjs13如何进行服务端渲染 nextjs13是nextjs的一个重大升级,一些原本在next12当中使用的API在nextjs13上使用十分不便。本文将着重介绍在nextjs13及以上版本当中进行服务端渲染的方…...

Redis-基础篇

Redis是一个开源、高性能、内存键值存储数据库,由 Salvatore Sanfilippo(网名antirez)创建,并在BSD许可下发布。它不仅可以用作缓存系统来加速数据访问,还可以作为持久化的主数据存储系统或消息中间件使用。Redis因其数…...

【好书推荐-第七期】《RTC程序设计:实时音视频权威指南》(音视频开发必看!)

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公粽号:洲与AI。 🎈 本文专栏:本文收录…...

还在犹豫学不学?鸿蒙技术是否有前途的最强信号来了

2024年3月3日 上午10 点,深圳官方账号发布了一篇关于鸿蒙技术发展的重要文章,看到这篇文章后我非常激动,忍不住和大家分享一下! 华为鸿蒙系统自提出以来,网友们的态度各不相同,有嘲笑“安卓套壳”的&#x…...

webpack的plugin 插件教程

Webpack 是一个流行的前端打包工具,通过使用插件(plugin),我们可以对 Webpack 进行扩展和定制,实现更多功能和优化构建过程。在本教程中,我将向你介绍如何编写一个简单的 Webpack 插件,并演示如…...

v72.关于指针操作的补充

1.指针作为函数参数 调用函数时,传递参数的形式决定了是否可以修改这些参数。 传值方式:传递了参数给函数,并且这个参数是基本数据类型,如(int,float),那么函数内对参数的任何操作…...

【学习心得】爬虫JS逆向通解思路

我希望能总结一个涵盖大部分爬虫逆向问题的固定思路,在这个思路框架下可以很高效的进行逆向爬虫开发。目前我仍在总结中,下面的通解思路尚不完善,还望各位读者见谅。 一、第一步:明确反爬手段 反爬手段可以分为几个大类 &#…...

如何使用Logstash搜集日志传输到es集群并使用kibana检测

引言:上一期我们进行了对Elasticsearch和kibana的部署,今天我们来解决如何使用Logstash搜集日志传输到es集群并使用kibana检测 目录 Logstash部署 1.安装配置Logstash (1)安装 (2)测试文件 &#xff…...

AutoEncoder和 Denoising AutoEncoder学习笔记

参考: 【1】 https://lilianweng.github.io/posts/2018-08-12-vae/ 写在前面: 只是直觉上的认识,并没有数学推导。后面会写一篇(抄)大一统文章(概率角度理解为什么AE要选择MSE Loss) TOC 1 Au…...

计算机系统基础

一、计算机系统概述 计算机系统:硬件软件,软件包括系统软件和应用软件 二、计算机组成结构 三、存储结构 3.1 层次化存储结构 3.2 Cache Cache(高速缓存)的功能:提高CPU数据输入输出的速率,突破冯.若依曼瓶…...

【JavaEE】-- HTTP

1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...