【大數據】通過 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 保姆級教程就完結了,有任何疑問請關注我公眾號:大數據與云原生技術分享,加群交流或私信溝通,,如本篇文章對您有所幫助,麻煩幫忙一鍵三連(點贊、轉發、收藏)~

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/719671.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/719671.shtml
英文地址,請注明出處:http://en.pswp.cn/news/719671.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【SQL】608. 樹節點(流控制語句 CASE + IF語句)

前述 知識點推薦學習: sql中的 IF 條件語句的用法 MySQL:if語句、if…else語句、case語句,使用方法解析 題目描述 leetcode 題目:608. 樹節點 思路 關鍵點:如何確定有沒有子節點 根節點:父節點為空內節…

基于Redo log Undo log的MySQL的崩潰恢復

基于Redo log & Undo log的MySQL的崩潰恢復 Redo log Undo log Redo log 重做日志,記錄,修改過的數據 Undo log 回滾日志,記錄修改之前的數據 兩個我不做詳細的介紹了,redo log就是記錄哪些地方被修改了 undo log是記錄修改之前我們的數據長什么樣 更新流程 我們來捋一…

python封裝,繼承,復寫詳解

目錄 1.封裝 2.繼承 復寫和使用父類成員 1.封裝 class phone:__voltage 0.5def __keepsinglecore(self):print("單核運行")def callby5g(self):if self.__voltage > 1:print("5g通話開啟")else:self.__keepsinglecore()print("不能開啟5g通…

Redis集群(主從)

1.主從集群 集群結構: 一.單機安裝redis 1.上傳壓縮包并解壓,編譯 tar -xzf redis-6.2.4.tar.gz cd redis-6.2.4 make && make install 2.修改redis.config的配置并啟動redis # 綁定地址,默認是127.0.0.1,會導致只能在本地訪問。…

Tomcat布署及優化-----JDK和Tomcat

1.Tomcat簡介 Tomcat 是 Java 語言開發的,Tomcat 服務器是一個免費的開放源代碼的 Web 應用服務器,Tomcat 屬于輕量級應用服務器,在中小型系統和并發訪問用戶不是很多的場合下被普遍使用,是開發和調試 JSP 程序的首選。一般來說&…

C++ //練習 10.2 重做上一題,但讀取string序列存入list中。

C Primer(第5版) 練習 10.2 練習 10.2 重做上一題,但讀取string序列存入list中。 環境:Linux Ubuntu(云服務器) 工具:vim 代碼塊 /******************************************************…

Vue前端加密后的數據發送到服務器端

首先,定義了一個名為 PUBLIC_KEY 的公鑰和一個名為 PRIVATE_KEY 的私鑰。然后,通過 JSEncrypt 創建了兩個實例 encrypt 和 decrypt,分別用于加密和解密操作。 對于加密操作,調用了 encrypt.setPublicKey() 方法設置公鑰&#xff…

升級Centos7的openssh到openssh-9.6p1版本 shell腳本 漏掃整改

升級Centos7的openssh到openssh-9.6p1版本 shell腳本 漏掃整改 #!/bin/bash# 聲明: 該腳本適用于升級Centos7的openssh到openssh-9.6p1版本# 定義源碼包版本號 OPENSSH_VERSIONopenssh-9.6p1 OPENSSL_VERSIONopenssl-3.2.1 ZILB_VERSIONzlib-1.3.1# 安裝編譯環境 yum -y insta…

【前端面試題5】利用 border 屬性畫一個三角形

舉例1:利用 border 屬性畫一個三角形(小技巧) 完整代碼如下: div{width: 0;height: 0;border: 50px solid transparent;border-top-color: red;border-bottom: none; }步驟如下: (1)當我們設…

【QT+QGIS跨平臺編譯】之五十六:【QGIS_CORE跨平臺編譯】—【qgsmeshcalclexer.cpp生成】

文章目錄 一、Flex二、生成來源三、構建過程一、Flex Flex (fast lexical analyser generator) 是 Lex 的另一個替代品。它經常和自由軟件 Bison 語法分析器生成器 一起使用。Flex 最初由 Vern Paxson 于 1987 年用 C 語言寫成。 “flex 是一個生成掃描器的工具,能夠識別文本中…

Android 拍照本地圖片選擇框架適配

前言 通常技術方案的選擇、會帶來后續一些不可控的東西,這也是沒法避免的,程序開發者中同時面對、測試、領導、產品各種要求。同時在網絡上查找的資料也只是很舊的,不一定適合新設備,需要推倒重新弄 1、解決方案通過意圖選擇器做…

day6 數組 嵌套循環

1&#xff1a;打印楊輝三角 91 int arr[6][6];92 int i,j0;93 for(i0;i<6;i)94 {95 for(j0;j<i;j) 96 {97 if(j0||ij)98 {99 arr[i][j]1; …

2024-3-4 如何寫出具有python風格的代碼

寫出具有python風格的代碼 什么是python風格如何寫出具有python風格的自定義數據類型 什么是python風格 python風格是指自定義的數據類型表現得得與內置類型一樣。比如&#xff0c;我創建了一個類&#xff0c;它的實例不用調用類的方法就可以實現迭代、切片&#xff0c;可以直…

推特API(Twitter API)對接說明,用戶code To Token換取

前期準備 提前準備、說明&#xff1a;目前對接推特api開發門戶分為3個版本&#xff0c;分別是免費的&#xff0c;100美金一個月的基礎版以及5000美金一個月的企業版&#xff0c;免費的目前就兩個接口可以調用&#xff0c;所以想要對接和使用推特最基本的也需要付100美元一個月…

百度百科人物創建要求是什么?

百度百科作為我國最大的中文百科全書&#xff0c;其收錄的人物詞條要求嚴謹、客觀、有權威性。那么&#xff0c;如何撰寫一篇高質量的人物詞條呢&#xff1f;本文伯樂網絡傳媒將從內容要求、注意事項以及創建流程與步驟三個方面進行詳細介紹。 一、內容要求 1. 基本信息&#…

什么是 web 應用的 type-ahead search help

在 Web 前端設計領域&#xff0c;type-ahead search help&#xff08;又稱為自動完成或即時搜索&#xff09;是一種用戶界面功能&#xff0c;它能夠在用戶輸入搜索詞的同時&#xff0c;實時提供搜索建議或結果。這種功能極大地提升了用戶體驗&#xff0c;因為它可以幫助用戶快速…

LeetCode每日一題【c++版】- 用隊列實現棧與用棧實現隊列

用隊列實現棧 題目描述 請你僅使用兩個隊列實現一個后入先出&#xff08;LIFO&#xff09;的棧&#xff0c;并支持普通棧的全部四種操作&#xff08;push、top、pop 和 empty&#xff09;。 實現 MyStack 類&#xff1a; void push(int x) 將元素 x 壓入棧頂。int pop() 移除…

Studio One 6永久激活版 附完整圖文安裝破解教程

Studio One 6是一款功能強大的音樂制作和錄音軟件&#xff0c;專為Mac操作系統設計。它提供了多軌錄音和混音、MIDI音樂制作、實時效果和處理、VST插件支持以及高級編輯和編排等豐富的功能。無論是專業音樂制作人還是音樂愛好者&#xff0c;都可以使用Studio One 6來創建和編輯…

程序員英語詞匯寶典(建議收藏)

很多小伙伴說&#xff0c;英文不好能不能學習編程&#xff0c;我個人的看法是英文不好&#xff0c;并不影響你學習編程&#xff0c;但有可能會影響到你的編程上限&#xff0c;因為一些最新的文檔都是英文的。如果你想成為一個編程大牛&#xff0c;那么英文還是很有必要的。今天…

cocos-lua定時器用法

本文介紹cocos-lua(非Quick-cocos)的定時器用法 定時器按是否會隨節點銷毀&#xff0c;可分為節點調度器和全局調度器 一.節點調度器 frameworks\cocos2d-x\cocos\scripting\lua-bindings\script\cocos2d\deprecated.lua中實現了了schedule和 performWithDelay 1.1.schedul…