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

打造现代数据基础架构:MinIO对象存储完全指南

目录

  • 打造现代数据基础架构:MinIO对象存储完全指南
    • 1. MinIO介绍
      • 1.1 什么是对象存储?
      • 1.2 MinIO核心特点
      • 1.3 MinIO使用场景
    • 2. MinIO部署方案对比
      • 2.1 单节点单驱动器(SNSD/Standalone)
      • 2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)
      • 2.3 多节点多驱动器(MNMD/Distributed)
      • 2.4 部署方案对比表
    • 3. MinIO部署操作命令实战
      • 3.1 单节点单驱动器部署(Standalone)
        • 3.1.1 安装MinIO服务器
        • 3.1.2 启动MinIO服务器
      • 3.2 多节点多驱动器部署(Distributed)
        • 3.2.1 前提条件
        • 3.2.2 在每个节点上安装MinIO二进制文件
        • 3.2.3 创建systemd服务文件
        • 3.2.4 创建服务环境文件
        • 3.2.5 配置TLS/SSL证书
        • 3.2.6 启动MinIO服务
        • 3.2.7 访问MinIO控制台
      • 3.3 使用Docker部署MinIO
    • 4. MinIO部署后的使用
      • 4.1 基本概念
        • 4.1.1 存储桶(Bucket)
        • 4.1.2 对象(Object)
        • 4.1.3 服务器池(Server Pool)
        • 4.1.4 纠删集(Erasure Set)
      • 4.2 使用MinIO Client(mc)
      • 4.3 使用MinIO Console
      • 4.4 使用S3兼容SDK
      • 4.5 高级功能
        • 4.5.1 对象锁定和保留
        • 4.5.2 多站点复制
        • 4.5.3 生命周期管理
    • 5. MinIO运维方案
      • 5.1 监控与告警
        • 5.1.1 Prometheus集成
        • 5.1.2 InfluxDB集成
      • 5.2 日志管理
        • 5.2.1 服务器日志
        • 5.2.2 审计日志
      • 5.3 备份与恢复
        • 5.3.1 使用mc mirror进行备份
        • 5.3.2 使用MinIO桶复制进行持续备份
      • 5.4 扩展与缩减容量
        • 5.4.1 扩展服务器池
        • 5.4.2 数据重新平衡
        • 5.4.3 池停用
      • 5.5 升级MinIO部署
        • 5.5.1 使用systemctl升级
        • 5.5.2 零停机升级
      • 5.6 健康检查与故障排除
    • 6. 总结
    • 参考资料

打造现代数据基础架构:MinIO对象存储完全指南

1. MinIO介绍

MinIO是一款高性能、开源的对象存储解决方案,提供了与Amazon Web Services S3兼容的API,支持所有核心S3功能。它设计为可以部署在任何地方 - 公共云、私有云、裸机基础设施、编排环境和边缘基础设施。

1.1 什么是对象存储?

对象存储是一种数据存储架构,专为处理大量非结构化数据而设计。与传统的文件存储和块存储不同,对象存储将数据视为独立的对象,每个对象包含数据、元数据和唯一标识符,使其特别适合云环境和大规模数据存储需求。

1.2 MinIO核心特点

  • S3兼容性: 完全兼容Amazon S3 API,便于应用程序集成和迁移
  • 高性能: 针对高吞吐量和低延迟进行了优化
  • 分布式架构: 支持多节点部署,提供高可用性和水平扩展能力
  • 数据保护: 通过纠删码(Erasure Coding)提供数据冗余,无需RAID
  • 位衰减保护: 自动检测并修复静态数据损坏
  • 安全性: 提供TLS加密、身份验证和访问控制
  • 多站点复制: 支持跨站点数据同步和灾难恢复
  • 开源: 基于AGPLv3许可证,同时提供商业许可选项

1.3 MinIO使用场景

  • AI/ML数据湖: 为机器学习和人工智能工作负载提供高性能存储
  • 备份和归档: 提供可靠的长期数据存储解决方案
  • 内容分发: 存储和分发静态网站、图像和视频内容
  • 大数据分析: 为Hadoop、Spark等分析工具提供数据存储层
  • 云原生应用: 作为Kubernetes和容器化环境中的首选存储解决方案
  • 边缘计算: 在资源受限的环境中提供高性能存储

2. MinIO部署方案对比

MinIO支持多种部署拓扑,可以根据需求灵活选择。以下是三种主要部署模式的对比:

2.1 单节点单驱动器(SNSD/Standalone)

适用场景

  • 本地开发和评估
  • 可靠性要求低或无要求的环境

特点

  • 设置简单,适合快速入门
  • 无数据冗余或可靠性保证
  • 占用资源最少

局限性

  • 不适合生产环境
  • 无法提供高可用性
  • 单点故障风险高

2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)

适用场景

  • 性能、规模和容量要求较低的工作负载
  • 多驱动拓扑和故障转移行为的评估

特点

  • 驱动器级别的可靠性,可配置容忍最多1/2驱动器故障
  • 在单个节点上运行多个驱动器
  • 相比SNSD提供更好的数据保护

局限性

  • 节点级故障会导致服务不可用
  • 扩展能力有限
  • 不适合大规模生产工作负载

2.3 多节点多驱动器(MNMD/Distributed)

适用场景

  • 企业级高性能对象存储需求
  • AI/ML、分布式查询、分析和其他数据湖组件的主存储
  • 需要PB级存储容量和性能的工作负载

特点

  • 多节点/多驱动器级别的可靠性,可配置容忍最多1/2节点/驱动器故障
  • 高可用性和弹性设计
  • 水平扩展能力强
  • 提供企业级性能和可靠性

局限性

  • 部署和管理复杂度较高
  • 需要更多的硬件资源
  • 对网络要求高

2.4 部署方案对比表

在这里插入图片描述

部署选择建议:根据您的数据规模、性能需求、可⽤资源和预期增⻓来选择合适的部署⽅案。对于⽣产环境,MinIO强烈推荐使⽤多节点多驱动(MNMD)部署以确保⾼可⽤性和数据持久性。

3. MinIO部署操作命令实战

3.1 单节点单驱动器部署(Standalone)

这是最简单的MinIO部署方式,适合初始开发和评估MinIO对象存储及其S3兼容API层。

3.1.1 安装MinIO服务器

使用RPM安装(RHEL/CentOS):

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20241107005220.0.0-1.x86_64.rpm -O minio.rpm
sudo dnf install minio.rpm

使用DEB安装(Debian/Ubuntu):

wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20241107005220.0.0_amd64.deb -O minio.deb
sudo dpkg -i minio.deb

使用二进制安装:

wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
sudo mv minio /usr/local/bin/
3.1.2 启动MinIO服务器
# 创建存储目录
mkdir ~/minio# 启动MinIO服务器
minio server ~/minio --console-address :9001

服务器会输出类似以下内容:

API: http://192.0.2.10:9000  http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadminConsole: http://192.0.2.10:9001 http://127.0.0.1:9001
RootUser: minioadmin
RootPass: minioadmin

3.2 多节点多驱动器部署(Distributed)

这是推荐用于生产环境的部署方式,提供企业级性能、可用性和可扩展性。

3.2.1 前提条件
  • 确保所有节点之间具有完整的双向网络访问
  • 使用顺序主机名或IP地址配置
  • 存储驱动器应使用XFS格式化
  • 每个节点推荐至少32GiB内存
  • 所有节点保持时间同步
3.2.2 在每个节点上安装MinIO二进制文件

按照单节点部署中的步骤在每个节点上安装MinIO。

3.2.3 创建systemd服务文件

在每个节点上创建/usr/lib/systemd/system/minio.service文件:

[Unit]
Description=MinIO
Documentation=https://min.io/docs/minio/linux/index.html
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio[Service]
WorkingDirectory=/usr/localUser=minio-user
Group=minio-user
ProtectProc=invisibleEnvironmentFile=-/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not set in /etc/default/minio\"; exit 1; fi"
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES# Let systemd restart this service always
Restart=always# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=65536# Specifies the maximum number of threads this process can create
TasksMax=infinity# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no[Install]
WantedBy=multi-user.target

创建MinIO用户和组:

groupadd -r minio-user
useradd -M -r -g minio-user minio-user
chown minio-user:minio-user /mnt/disk1 /mnt/disk2 /mnt/disk3 /mnt/disk4
3.2.4 创建服务环境文件

在每个节点上创建/etc/default/minio文件:

# 设置MinIO启动时使用的主机和卷
MINIO_VOLUMES="https://minio{1...4}.example.net:9000/mnt/disk{1...4}/minio"# 设置MinIO服务器选项
MINIO_OPTS="--console-address :9001"# 设置根用户名
MINIO_ROOT_USER=minioadmin# 设置根密码
MINIO_ROOT_PASSWORD=minio-secret-key-CHANGE-ME
3.2.5 配置TLS/SSL证书

将TLS证书放置在/home/minio-user/.minio/certs目录中。
如果使用自签名或内部CA签名的证书,将CA证书放在/home/minio-user/.minio/certs/CAs目录中。

3.2.6 启动MinIO服务

在每个节点上运行以下命令:

sudo systemctl start minio.service
sudo systemctl enable minio.service

检查服务状态:

sudo systemctl status minio.service
journalctl -f -u minio.service
3.2.7 访问MinIO控制台

通过浏览器访问https://minio1.example.com:9001打开MinIO控制台,使用MINIO_ROOT_USER和MINIO_ROOT_PASSWORD登录。

3.3 使用Docker部署MinIO

对于开发环境或快速测试,Docker是一个方便的选择:

# 拉取MinIO镜像
docker pull minio/minio# 单节点部署
docker run -p 9000:9000 -p 9001:9001 \--name minio \-v ~/minio/data:/data \-e "MINIO_ROOT_USER=minioadmin" \-e "MINIO_ROOT_PASSWORD=minioadmin" \minio/minio server /data --console-address ":9001"

4. MinIO部署后的使用

4.1 基本概念

4.1.1 存储桶(Bucket)

存储桶是MinIO中存储对象的逻辑容器,类似于文件系统中的文件夹。存储桶名称在整个系统中必须唯一。

4.1.2 对象(Object)

对象是存储在MinIO中的基本实体,包括数据、元数据和唯一标识符。对象可以是任何类型的文件,如文档、图像、备份等。

4.1.3 服务器池(Server Pool)

服务器池是一组MinIO服务器节点,它们汇集各自的驱动器和资源来支持对象存储。在分布式部署中,可以有多个服务器池。

4.1.4 纠删集(Erasure Set)

纠删集是支持MinIO纠删码的一组多个驱动器。MinIO将对象分成称为分片的块,并将它们均匀分布在纠删集的每个驱动器上。

4.2 使用MinIO Client(mc)

MinIO Client是一个命令行工具,用于与MinIO服务器交互:

# 安装MinIO Client
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod +x mc
sudo mv mc /usr/local/bin/# 创建别名
mc alias set myminio http://127.0.0.1:9000 minioadmin minioadmin# 列出所有存储桶
mc ls myminio# 创建新存储桶
mc mb myminio/mybucket# 上传文件到存储桶
mc cp myfile.txt myminio/mybucket/# 下载文件
mc cp myminio/mybucket/myfile.txt myfile-download.txt# 列出存储桶中的对象
mc ls myminio/mybucket/# 删除对象
mc rm myminio/mybucket/myfile.txt# 删除存储桶
mc rb myminio/mybucket

4.3 使用MinIO Console

MinIO Console是一个直观的Web界面,用于管理和监控MinIO部署:

  1. 通过浏览器访问http://127.0.0.1:9001
  2. 使用root用户凭据登录
  3. 从控制台可以执行以下操作:
    • 管理存储桶和对象
    • 配置存储桶策略和通知
    • 管理用户和权限
    • 监控性能和容量
    • 查看日志和警报
    • 配置服务器设置

4.4 使用S3兼容SDK

MinIO完全兼容S3 API,因此可以使用任何S3兼容的SDK与MinIO交互。以下是使用AWS SDK for Python (Boto3)的示例:

import boto3
from botocore.client import Config# 初始化S3客户端
s3 = boto3.client('s3',endpoint_url='http://127.0.0.1:9000',aws_access_key_id='minioadmin',aws_secret_access_key='minioadmin',config=Config(signature_version='s3v4'),region_name='us-east-1'
)# 创建存储桶
s3.create_bucket(Bucket='mybucket')# 上传文件
with open('myfile.txt', 'rb') as data:s3.upload_fileobj(data, 'mybucket', 'myfile.txt')# 下载文件
s3.download_file('mybucket', 'myfile.txt', 'myfile-download.txt')# 列出存储桶中的对象
response = s3.list_objects_v2(Bucket='mybucket')
for obj in response.get('Contents', []):print(obj['Key'])# 删除对象
s3.delete_object(Bucket='mybucket', Key='myfile.txt')# 删除存储桶
s3.delete_bucket(Bucket='mybucket')

4.5 高级功能

4.5.1 对象锁定和保留

MinIO支持对象锁定功能,可以防止对象被删除或覆盖:

# 启用存储桶的对象锁定功能
mc mb --with-lock myminio/locked-bucket# 设置对象保留期限
mc retention set --default governance 1d myminio/locked-bucket
4.5.2 多站点复制

多站点复制(Site Replication)将多个MinIO部署链接在一起,并保持存储桶、对象和IAM设置在所有连接的站点之间同步:

# 添加复制配置
mc admin replicate add myminio site1 site2 site3# 检查复制状态
mc admin replicate status myminio
4.5.3 生命周期管理

可以配置对象生命周期规则,自动删除过期的对象:

# 创建生命周期配置
cat > lifecycle.json << EOF
{"Rules": [{"Status": "Enabled","Expiration": { "Days": 30 },"ID": "ExpireOldObjects","Filter": { "Prefix": "logs/" }}]
}
EOF# 应用生命周期配置
mc ilm import myminio/mybucket < lifecycle.json

5. MinIO运维方案

5.1 监控与告警

MinIO使用Prometheus数据模型发布实时指标,可以与多种监控工具集成。

5.1.1 Prometheus集成
  1. 部署Prometheus和Grafana
  2. 配置Prometheus抓取MinIO指标
  3. 导入MinIO Grafana仪表板
# 创建Prometheus配置
cat > prometheus.yml << EOF
global:scrape_interval: 15s
scrape_configs:- job_name: 'minio'metrics_path: /minio/v2/metrics/clusterscheme: httpstatic_configs:- targets: ['minio:9000']basic_auth:username: minioadminpassword: minioadmin
EOF# 启动Prometheus
docker run -d --name prometheus \-p 9090:9090 \-v $(pwd)/prometheus.yml:/etc/prometheus/prometheus.yml \prom/prometheus
5.1.2 InfluxDB集成

MinIO也可以与InfluxDB集成,用于监控和告警。配置Telegraf从MinIO抓取指标并发送到InfluxDB。

5.2 日志管理

MinIO可以将服务器日志和审计日志发布到HTTP webhook。

5.2.1 服务器日志

服务器日志包含与系统控制台相同的MinIO服务器操作,用于一般监控和故障排除。

# 配置服务器日志
mc admin config set myminio logger_webhook:server endpoint=http://logger-server:8080
5.2.2 审计日志

审计日志是对MinIO部署上每个操作的更详细描述,支持需要详细操作跟踪的安全标准和法规。

# 配置审计日志
mc admin config set myminio audit_webhook:audit endpoint=http://audit-server:8080

5.3 备份与恢复

5.3.1 使用mc mirror进行备份
# 创建完整备份
mc mirror myminio/mybucket backup/mybucket# 恢复备份
mc mirror backup/mybucket myminio/mybucket
5.3.2 使用MinIO桶复制进行持续备份

配置桶复制可以自动将对象从一个存储桶复制到另一个存储桶,甚至跨不同的MinIO部署:

# 设置桶复制
mc replicate add myminio/source-bucket dest/dest-bucket

5.4 扩展与缩减容量

5.4.1 扩展服务器池

分布式MinIO部署支持通过添加新的服务器池来扩展存储容量:

# 将新的服务器池添加到现有部署
minio server https://minio{1...4}.example.net/mnt/disk{1...4} \https://minio{5...8}.example.net/mnt/disk{1...4}
5.4.2 数据重新平衡

在扩展后,可以手动启动重新平衡操作,将数据在所有服务器池之间平衡分配:

# 启动重新平衡操作
mc admin rebalance start myminio
5.4.3 池停用

对于具有多个服务器池的部署,可以停用旧池并将数据迁移到部署中的新池:

# 停用服务器池
mc admin decommission start myminio https://minio{5...8}.example.net/mnt/disk{1...4}

5.5 升级MinIO部署

5.5.1 使用systemctl升级
# 下载新版本
wget https://dl.min.io/server/minio/release/linux-amd64/minio -O /usr/local/bin/minio.new
chmod +x /usr/local/bin/minio.new# 备份原有二进制文件
mv /usr/local/bin/minio /usr/local/bin/minio.old# 更新二进制文件
mv /usr/local/bin/minio.new /usr/local/bin/minio# 重启服务
systemctl restart minio
5.5.2 零停机升级

在分布式部署中,可以通过逐个升级节点来实现零停机升级:

  1. 选择要升级的节点
  2. 停止该节点上的MinIO服务
  3. 升级MinIO二进制文件
  4. 重启MinIO服务
  5. 等待节点重新加入集群
  6. 对其他节点重复以上步骤

5.6 健康检查与故障排除

MinIO提供了健康检查API端点,用于监控节点正常运行时间和集群高可用性:

  • /minio/health/live: 检查服务器是否正在运行
  • /minio/health/ready: 检查服务器是否准备好处理请求
  • /minio/health/cluster: 检查整个集群的健康状态
# 检查MinIO服务器健康状态
curl -s http://127.0.0.1:9000/minio/health/live# 检查集群健康状态
curl -s http://127.0.0.1:9000/minio/health/cluster

6. 总结

MinIO是一款功能强大的对象存储解决方案,提供了与Amazon S3兼容的API,可以部署在任何环境中。它的高性能、可扩展性和企业级特性使其成为现代数据基础设施的理想选择。

根据您的需求和资源,可以选择单节点单驱动器、单节点多驱动器或多节点多驱动器部署模式。生产环境应优先考虑多节点多驱动器(分布式)部署,以获得最佳的性能、可用性和可靠性。

通过本指南,您应该已经掌握了MinIO的基本概念、部署方法、使用技巧和运维策略。随着数据量的增长和应用需求的变化,可以利用MinIO的扩展和管理功能来适应这些变化。

无论是AI/ML数据湖、备份归档、内容分发还是云原生应用,MinIO都能为您提供可靠、高性能的对象存储基础设施。

参考资料

  • MinIO官方文档
  • MinIO部署指南
  • MinIO多节点部署
  • MinIO概念
  • MinIO监控

相关文章:

打造现代数据基础架构:MinIO对象存储完全指南

目录 打造现代数据基础架构&#xff1a;MinIO对象存储完全指南1. MinIO介绍1.1 什么是对象存储&#xff1f;1.2 MinIO核心特点1.3 MinIO使用场景 2. MinIO部署方案对比2.1 单节点单驱动器(SNSD/Standalone)2.2 单节点多驱动器(SNMD/Standalone Multi-Drive)2.3 多节点多驱动器(…...

SpringBoot条件注解全解析:核心作用与使用场景详解

目录 引言一、条件注解的核心机制二、SpringBoot内置条件注解详解1、ConditionalOnClass和ConditionalOnMissingClass2、ConditionalOnBean和ConditionalOnMissingBean3、ConditionalOnProperty4、ConditionalOnWebApplication和ConditionalOnNotWebApplication5、ConditionalO…...

智慧酒店企业站官网-前端静态网站模板【前端练习项目】

最近又写了一个静态网站&#xff0c;智慧酒店宣传官网。 使用的技术 html css js 。 特别适合编程学习者进行网页制作和前端开发的实践。 项目包含七个核心模块&#xff1a;首页、整体解决方案、优势、全国案例、行业观点、合作加盟、关于我们。 通过该项目&#xff0c;小伙伴们…...

#2 物联网组成要素

从下至上&#xff0c;则包括了5个要素&#xff0c;包括 设备 / 传感器 / 网络 / 物联网服务 / 数据分析 这五个要素。为了便于理解&#xff0c;我们用思维导图展示 物联网构成架构 设备 能够感测和反馈并连到网络进行物联网服务的装置 传感器 传感器和网关的融合实现了物…...

UE5 物理模拟 与 触发检测

文章目录 碰撞条件开启模拟关闭模拟 多层级的MeshUE的BUG 触发触发条件 碰撞 条件 1必须有网格体组件 2网格体组件必须有网格&#xff0c;没有网格虽然可以开启物理模拟&#xff0c;但是不会有任何效果 注意开启的模拟的网格体组件会计算自己和所有子网格的mesh范围 3只有网格…...

C++23 新特性静态operator[]、operator()与Lambda

文章目录 静态操作符 operator[] 和 operator()示例&#xff1a;静态 operator[]示例&#xff1a;静态 operator() 静态 Lambda 表达式&#xff08;P1169R4&#xff09;示例&#xff1a;静态 Lambda 表达式 编译器支持和总结深入静态操作符 operator[] 和 operator()性能优化代…...

C# 13新特性 - .NET 9

转载&#xff1a; C# 13 中的新增功能 | Microsoft Learn C# 13 包括以下新增功能。 可以使用最新的 Visual Studio 2022 版本或 .NET 9 SDK 尝试这些功能&#xff1a;Introduced in Visual Studio 2022 Version 17.12 and newer when using C# 13 C# 13 中的新增功能 | Micr…...

MyBatis SQL会话管理详解

目录 一、SQL会话的基本概念&#xff08;一&#xff09;创建SQL会话 二、SQL会话的生命周期&#xff08;一&#xff09;打开会话&#xff08;二&#xff09;执行SQL操作&#xff08;三&#xff09;提交事务&#xff08;四&#xff09;回滚事务&#xff08;五&#xff09;关闭会…...

Uniapp: 下拉选择框 ba-tree-picker

目录 1、效果展示2、如何使用2.1 插件市场2.2 引入插件 3、参数配置3.1 属性3.2 方法 4、遇见的问题4.1、设置下拉树的样式 1、效果展示 2、如何使用 2.1 插件市场 首先从插件市场中将插件导入到项目中 2.2 引入插件 在使用的页面引入插件 <view click"showPicke…...

【高性能缓存Redis_中间件】三、redis 精通:性能优化与生产实践

一、引言​ 在前两篇 Redis 消息队列的文章中&#xff0c;我们掌握了基础使用和高级特性。本文作为系列终篇&#xff0c;将聚焦生产环境的性能优化与全流程实践&#xff0c;请各位跟随小编的步伐一起构建高可靠、高性能的消息处理系统&#xff08;文章中的演示均为Centos7的背…...

自然语言处理Hugging Face Transformers

Hugging Face Transformers 是一个基于 PyTorch 和 TensorFlow 的开源库&#xff0c;专注于 最先进的自然语言处理&#xff08;NLP&#xff09;模型&#xff0c;如 BERT、GPT、RoBERTa、T5 等。它提供了 预训练模型、微调工具和推理 API&#xff0c;广泛应用于文本分类、机器翻…...

uniapp自定义tabbar,根据角色动态显示不同tabbar,无闪动问题

🤵 作者:coderYYY 🧑 个人简介:前端程序媛,目前主攻web前端,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐:《前端项目教程以及代码》 ✨一、前言 这个需求在开发中还是很常见的,搜索了网络其他教程,…...

狂神SQL学习笔记一:初识MySQL、关系型数据库和非关系型数据库

菜鸟教程学习一半了&#xff0c;但是已经疲倦了&#xff0c;所以换一个课程学习&#xff0c;来提升学习质量&#xff0c;可能会有很多已经学习到的地方&#xff0c;就当是复习巩固了。 按照SQL学习课程来划分&#xff0c;分为45集&#xff0c;所以可能也会写45篇文章&#xff…...

面向MoE和推理模型时代:阿里云大数据AI产品升级发布

阿里云 2025 AI 势能大会上&#xff0c;阿里云智能集团副总裁、阿里云智能计算平台事业部负责人汪军华带来主题演讲《范式演进&#xff1a;MoE&推理模型时代的挑战与应对》&#xff0c;并发布大数据 AI 平台一系列重磅产品能力升级。 汪军华认为&#xff0c;从 Generative …...

网络安全·第三天·ICMP协议安全分析

一、ICMP功能介绍 ICMP&#xff08;Internet Control Message Protocal&#xff09;是一种差错和控制报文协议&#xff0c;不仅用于传输差错报文&#xff0c; 还传输控制报文&#xff0c;但是ICMP只是尽可能交付&#xff0c;提供的服务是无连接、不可靠的&#xff0c;并不能保…...

Hadoop大数据平台部署(Hadoop3.2.4+Hive4.0.1)

这里写自定义目录标题 1、前置要求与规划2、基础环境配置3、Hadoop 3.2.4 集群部署4、MariaDB 10.6.x 安装&#xff08;仅 master 节点&#xff09;5、Hive 4.0.1 部署&#xff08;仅 master 节点&#xff09;6、Hive 离线数据预处理7、Sqoop导出预处理结果到MySQL 1、前置要求…...

JMeter使用

1.简介 1.1 打开方式 ①点击bat,打开 ②添加JMeter系统环境变量,输⼊命令jmeter即可启动JMeter⼯具 1.2 配置 简体中文 放大字体 1.3 使用 ①添加线程组 ②创建http请求 2. 组件 2.1 线程组 控制JMeter将⽤于执⾏测试的线程数&#xff0c;也可以把⼀个线程理解为⼀个测…...

API:科技赋能,引领智能文字识别、身份认证与发票查验真伪变革

在数字化进程不断加速的今天&#xff0c;各行业对高效、精准的数据处理和身份验证方式如饥似渴。 文字识别&#xff1a;精准捕捉&#xff0c;高效便捷 文字识别产品系列宛如一把把精准的信息采集利器&#xff0c;其中包含证件识别接口、车牌识别接口、文档识别接口、发票识别接…...

Docker 安装 Flink 实现数据实时统计 - 华为云

概述 案例介绍 Apache Flink 是一个开源的流处理框架&#xff0c;具有高吞吐、低延迟、可容错等特点&#xff0c;可同时支持批处理和流处理&#xff0c;为数据处理提供了强大而灵活的解决方案&#xff0c;Flink 在 Docker 中的应用场景主要是为了简化集群的部署和管理&#x…...

LeetCode算法题(Go语言实现)_46

题目 给你一个变量对数组 equations 和一个实数值数组 values 作为已知条件&#xff0c;其中 equations[i] [Ai, Bi] 和 values[i] 共同表示等式 Ai / Bi values[i] 。每个 Ai 或 Bi 是一个表示单个变量的字符串。 另有一些以数组 queries 表示的问题&#xff0c;其中 querie…...

AJAX与Axios基础

目录 一、AJAX 核心概念解析 1.1 AJAX 的核心概念 1.2 AJAX 工作原理 1.3 AJAX 局限性 二、axios 库介绍 2.1 Axios 核心特性 2.2 快速上手 2.3 核心配置项 2.4 错误处理标准方案 三、Axios 核心配置项 3.1 常用核心配置项 1. url 2. method 3. params 4. data …...

CodeReview工具集合

codereview 工具集合 在现代软件开发中&#xff0c;代码审查&#xff08;Code Review&#xff09; 已成为保障代码质量和团队协作效率的关键流程。一个合适的 Code Review 工具&#xff0c;不仅能帮助团队发现潜在问题&#xff0c;还能促进知识共享与规范统一。 本文整理了一些…...

LeetCode算法题(Go语言实现)_45

题目 n 座城市&#xff0c;从 0 到 n-1 编号&#xff0c;其间共有 n-1 条路线。因此&#xff0c;要想在两座不同城市之间旅行只有唯一一条路线可供选择&#xff08;路线网形成一颗树&#xff09;。去年&#xff0c;交通运输部决定重新规划路线&#xff0c;以改变交通拥堵的状况…...

C++23 新特性:[[assume(expression)]] 属性

文章目录 语法与基本用法作用与优化原理使用注意事项未满足假设时的行为使用场景 示例代码总结 C23 引入了一个新的属性 [[assume(expression)]]&#xff0c;它为程序员提供了一种向编译器传递额外信息的机制&#xff0c;从而让编译器能够生成更高效的代码。 语法与基本用法 …...

AI IDE 提示词

好的&#xff0c;这就将之前的分析内容整理成一篇适合发布在 CSDN 上的博客文章。 告别代码生成混乱&#xff1a;AI IDE 提示词模式权威指南 作者: (你的名字/昵称) 日期: 2025年4月14日 前言 随着人工智能技术的飞速发展&#xff0c;AI 助手&#xff08;如 GitHub Copilot…...

Framework Binder架构分解

整个 Binder 架构所涉及的总共有以下 5 个目录&#xff1a; 1. /framework/base/core/java/(Java) 2. /framework/base/core/jni/ (JNI) 3&#xff0c;/framework/native/libs/binder (Native) 4&#xff0c;/framework/native/cmds/servicemanager/ (Native) 5&#xff0c…...

三层交换机SVI功能(交换机虚拟接口)实现各个实训室电脑网络可互通,原本是独立局域网

三层交换机 SVI功能&#xff08;交换机虚拟接口&#xff09; 实现VLAN路由 需求 &#xff1a;各实训室使用独立局域网&#xff0c;即每个实训有自己的IP网段&#xff0c; 每个实训室只有内部互相访问。 需求&#xff1a;为了加强各实训室学生的交流&#xff0c;学校要求我们…...

Spark-SQL核心编程:DataFrame、DataSet与RDD深度解析

在大数据处理领域&#xff0c;Spark-SQL是极为重要的工具。今天就来深入探讨Spark-SQL中DataFrame、DataSet和RDD这三个关键数据结构。 Spark-SQL的前身是Shark&#xff0c;它摆脱了对Hive的过度依赖&#xff0c;在数据兼容、性能优化和组件扩展上有显著提升。DataFrame是基于R…...

腾讯云COS直传,官方后端demo,GO语言转JAVA

腾讯云COS直传,官方后端demo,GO写的,我们台是JAVA所以转一下,已跑通。废话不多说,直接上代码: Controller类如下: import com.ruoyi.web.core.config.CosConfig; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.Ht…...

c语言坦克对战(前言)

实现C语言中的“坦克大战”游戏逻辑&#xff0c;可以按照以下步骤进行&#xff1a; 游戏初始化 定义游戏窗口&#xff1a;设置游戏窗口的大小和标题。加载资源&#xff1a;加载坦克、子弹、敌人等图像资源。初始化游戏状态&#xff1a;设置初始分数、生命值、坦克位置等。 游…...

空间信息可视化——WebGIS前端实例(一)

技术栈&#xff1a;原生HTML 源代码&#xff1a;CUGLin/WebGIS: This is a project of Spatial information visualization 4 全国贫困县可视化系统 4.1 系统设计思想 党的十九大报告明确指出,要“确保到2020年我国现行标准下农村贫困人口实现脱贫,贫困县全部摘帽,解决区域…...

JVM考古现场(十九):量子封神·用鸿蒙编译器重铸天道法则

楔子&#xff1a;代码鸿蒙劫 "警告&#xff01;警告&#xff01;昆仑山服务器集群出现量子纠缠现象&#xff01;"凌霄殿监控中心警报响彻云霄。全息投影中&#xff0c;Java线程在四维时空中编织出克莱因瓶拓扑结构&#xff0c;GC日志里闪烁着霍金辐射般的奇点事件。本…...

思维与算法共舞:AIGC语言模型的艺术与科学

云边有个稻草人-个人主页 热门文章_云边有个稻草人的博客-本篇文章所属专栏~ 目录 引言&#xff1a;AIGC与文本生成概述 一、AIGC基础&#xff1a;语言模型的基本原理 1. 什么是语言模型&#xff1f; 2. 预训练与微调 二、AIGC的应用领域&#xff1a;文本生成的具体应用 …...

C++之 多继承

在学校里有老师和学生&#xff0c;他们都是人&#xff0c;我么应该创建一个名为 Person 的基类和两个名为 Teacher 和Student 的子类&#xff0c;后两者是从前者继承来的 有一部分学生还教课挣钱&#xff08;助教&#xff09;&#xff0c;也就是同时存在着两个”是一个”关系&…...

AI模型的主要分类及其详细对比,涵盖任务类型、架构、数据需求、应用场景等维度,并附上典型代表模型

以下是 AI模型的主要分类及其详细对比&#xff0c;涵盖任务类型、架构、数据需求、应用场景等维度&#xff0c;并附上典型代表模型&#xff1a; 一、AI模型的主要分类 1. 按任务类型分类 分类定义特点代表模型应用场景推理模型专注于逻辑推理、问题解决、因果关系分析的模型…...

TypeScript 快速入门

TypeScript 快速入门 1. 初识 TypeScript 1.1 TS 是什么&#xff1f; 以 JavaScript 为基础构建的语言&#xff1b;一个 JavaScript 的超集&#xff1b;可以在任何支持 JavaScript 的平台执行&#xff1b;TypeScript 扩展了 JavaScript 并添加了类型&#xff1b;TS 不能被 J…...

第一章 计算机网络和因特网

1.1 什么是因特网(Internet) 在博客这一系列文章中&#xff0c;我们使用一种特定的计算机网络&#xff0c;即公共因特网作为讨论计算机网络及其协议的主要载体。什么是因特网&#xff1f;可以用两种方式来回答这个问题&#xff1a;其一&#xff0c;我们能够通过因特网的具体构…...

【uni-app】axios 报错:Error: Adapter ‘http‘ is not available in the build

在 uni-app 中使用 axios 会报错&#xff1a;Error: Adapter ‘http‘ is not available in the build 解决方法&#xff1a;为 axios 添加 adapter 适配器。 import axios from axios; import settle from ../../node_modules/axios/lib/core/settle; import buildURL from …...

【路由交换方向IE认证】BGP选路原则之Weight属性

文章目录 一、路由器BGP路由的处理过程控制平面和转发平面选路工具 二、BGP的选路顺序选路的前提选路顺序 三、Wight属性选路原则规则9与规则11的潜移默化使用Weight值进行选路直接更改Weight值进行选路配合使用route-map进行选路 四、BGP邻居建立配置 一、路由器BGP路由的处理…...

思科模拟器的单臂路由,交换机,路由器,路由器只要两个端口的话,连接三台电脑该怎么办,划分VLAN,dotlq协议

单臂路由 1. 需求&#xff1a;让三台电脑互通 2. 在二层交换机划分vlan&#xff0c;并加入&#xff1b; 3. 将连接二层交换机和路由器的端口f0/4改为trunk模式 4. 路由器&#xff1a;进入连接路由器的f0/0端口将端口开启 5. 进入每个vlan设dotlq协议并设网络IP&#xff08…...

计算机视觉与深度学习 | 基于Matlab的钢筋计数

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 基于Matlab的钢筋计数 1、引言2、方法设计2.1 整体流程2.2 关键技术‌2…...

Pytorch深度学习框架60天进阶学习计划 - 第41天:生成对抗网络进阶(三)

Pytorch深度学习框架60天进阶学习计划 - 第41天&#xff1a;生成对抗网络进阶&#xff08;三&#xff09; 7. 实现条件WGAN-GP # 训练条件WGAN-GP def train_conditional_wgan_gp():# 用于记录损失d_losses []g_losses []# 用于记录生成样本的多样性&#xff08;通过类别分…...

MySQL 用 limit 影响性能的优化方案

一.使用索引覆盖扫描 如果我们只需要查询部分字段&#xff0c;而不是所有字段&#xff0c;我们可以尝试使用索引覆盖扫描&#xff0c;也就是让查询所需的所有字段都在索引中&#xff0c;这样就不需要再访问数据页&#xff0c;减少了随机 I/O 操作。 例如&#xff0c;如果我们…...

粉末冶金齿轮学习笔记分享

有一段小段时间没有更新了&#xff0c;不知道小伙们有没有忘记我。最近总听到粉末冶金齿轮这个概念&#xff0c;花点时间来学习一下&#xff0c;总结一篇笔记分享给大家。废话不多说&#xff0c;直接开始&#xff1a; “粉末冶金”是一种制造工艺&#xff0c;包括在高压下压实…...

数据结构第五版【李春葆】

​ 数据结构教程上机实验指导第5版&#xff08;李春葆主编&#xff09;.pdf 数据结构教程&#xff08;第5版&#xff09;&#xff08;李春葆&#xff09;.pdf 数据结构教程&#xff08;第五版&#xff09;课后习题参考答案&#xff08;李春葆&#xff09;.pdf 数据结构教…...

深入解析区块链技术:原理、应用与未来展望

1 区块链技术原理 1.1 基本概念 区块链本质上是一个分布式账本&#xff0c;它由一系列按照时间顺序排列的数据块组成&#xff0c;每个数据块包含了一定时间内的交易信息。这些数据块通过密码学技术相互链接&#xff0c;形成一个不可篡改的链条。其核心特点包括去中心化、不可篡…...

SAX解析XML:Java程序员的“刑侦破案式“数据处理

各位XML侦探们&#xff01;今天我们要化身代码界的福尔摩斯&#xff0c;学习用SAX解析XML——这种一边读文件一边破译线索的技术&#xff0c;就像在凶案现场逐帧查看监控录像&#xff0c;内存占用比你的咖啡杯还小&#xff01;&#xff08;DOM解析&#xff1f;那叫把整个监控室…...

Spring - 13 ( 11000 字 Spring 入门级教程 )

一&#xff1a; Spring AOP 备注&#xff1a;之前学习 Spring 学到 AOP 就去梳理之前学习的知识点了&#xff0c;后面因为各种原因导致 Spring AOP 的博客一直搁置。。。。。。下面开始正式的讲解。 学习完 Spring 的统一功能后&#xff0c;我们就进入了 Spring AOP 的学习。…...

SQL 解析 with as dual sysdate level

目录 sql的运行顺序 with as EXTRACT ​编辑 dual sysdate level ​编辑 ​编辑 Oracle中的日期存储 核心部分 拆解字符串并计算最小值 关联子查询 NVL 函数 REGEXP_SUBSTR() sql的运行顺序 <select id"getTrendList" parameterType"java.util.H…...

苍穹外卖day03

店铺状态接口 引入Redis&#xff0c;因为像存储店铺状态这种只有一个字段&#xff08;没必要存储在数据库&#xff09;&#xff0c;且登录后台就要被访问的数据&#xff08;加快查询速度&#xff0c;减少数据库压力&#xff09; 使用步骤&#xff1a;导入相关maven依赖、配置…...