引入Minio

前置条件

官网:https://www.minio.org.cn/download.shtml#/kubernetes

命令

# 查看系统上的网络连接和监听端口信息
netstat -tpnl
# 检查系统的指定端口占用情况
sudo netstat -tuln | grep 9000systemctl status firewalld
# 临时关闭
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld

安装

官网有不同系统的下载安装方式

Linux

注意:./是当前目录

# 下载
wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
# 修改权限
chmod +x minio
# 启动
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password ./minio server /mnt/data --console-address ":9001"
#也可以下面这样,他会默认用户名和密码
./minio server /mnt/data --console-address ":9001"
  • MINIO_ROOT_USER 指定 MinIO 的用户名;
  • MINIO_ROOT_PASSWORD 指定 MinIO 的密码;
  • /mnt/data 指定 MinIO 服务器用于存储数据的目录;
  • console-address “:9001” 指定 MinIO 控制台的监听地址和端口

后台启动(&结束):./minio server /mnt/data --console-address “:9001” &

docker

# 安装前查看系统是否已经安装了Docker
yum list installed | grep docker
# 卸载Docker  把查出来的都卸载就行了
yum remove docker.x86_64 -y
# 安装    这种方式安装的Docker版本比较旧;(查看版本:docker -v)
yum install docker -y
# 安装最新版的Docker
yum install yum-utils -y
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

安装启动

# 搜索MinIO镜像
docker search minio
# 拉取MinIO镜像
docker pull minio/minio
# 启动MinIO容器  不指定的话默认最新  这个启动命令官网是 podman 改成docker
docker run -p 9000:9000 -p 9001:9001 minio/minio server /data --console-address :9001

没有指定用户名和密码,默认是 minioadmin

  • p (映射端口) 虚拟机 : 容器
  • minio/minio 镜像名
  • server 启动参数
  • /data 数据文件存放的路径
  • console-address :9001 web 访问地址和端口

windows

下载 minio:https://dl.min.io/server/minio/release/windows-amd64/minio.exe

进入到 minio.exe 所在的目录
执行 minio.exe server D:\minio\data 启动 minio 服务,其中 D:\minio\data 是 MinIO 存储数据的目录路径

在浏览器输入:http://localhost:9000/ ,登录 MinIO 服务器 web 管理后台,默认用户名密码都是 minioadmin

springboot 集成

Bucket 是存储 Object 的逻辑空间,每个 Bucket 之间的数据是相互隔离的,对用户而言,相当于存放文件的顶层文件夹;

Object 是存储到 MinIO 的基本对象,对用户而言,相当于文件;

添加依赖

https://min.io/docs/minio/linux/developers/minio-drivers.html#java

<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.10</version>
</dependency>

配置类 MinioClientConfig

@Configuration
public class MinioClientConfig {@Beanpublic MinioClient minioClient() {return MinioClient.builder().endpoint("http://192.168.64.100:9000").credentials("minioadmin", "minioadmin").build();}
}

测试连接

@SpringBootTest
public class TestMain {@Autowiredprivate MinioClient minioClient;@Testpublic void test() {System.out.println(minioClient);}
}

MinioClient 的常用 API:

  • bucketExists():用于检查指定的存储桶是否存在,返回布尔值,表示存储桶是否存在;

  • makeBucket():用于创建一个新的存储桶(bucket),需要指定存储桶的名称;

  • listBuckets():用于列出用户有权访问的所有存储桶,返回存储桶的列表;

  • removeBucket():用于删除一个已存在的存储桶(bucket),删除失败会抛出异常;

  • putObject():用于上传文件到指定的存储桶;

  • statObject():用于检查指定的对象(文件)的状态;

  • getPresignedObjectUrl():用于生成一个对象(文件)的签名 URL,以便可以通过 HTTP 访问;

  • getObject():用于从指定的存储桶中下载文件;

  • listObjects():用于列出指定存储桶中的所有对象(文件);

  • removeObject():用于删除指定存储桶中的对象,需要指定存储桶名称和对象键;

Buckets 代码实现

@SpringBootTest
public class TestBucket {@Autowiredprivate MinioClient minioClient;@Testpublic void removeBucket() throws Exception {// 删除bucketminioClient.removeBucket(RemoveBucketArgs.builder().bucket("test").build());}@Testpublic void listBuckets() throws Exception {// 列出所有有权访问的 bucketminioClient.listBuckets().forEach(bucket -> {System.out.println(bucket.name()+bucket.creationDate());});}@Testpublic void createBucket() throws Exception {// 创建bucketminioClient.makeBucket(MakeBucketArgs.builder().bucket("test").build());}@Testpublic void bucketExists() throws Exception {boolean bucketExists = minioClient.bucketExists(BucketExistsArgs.builder().bucket("test").build());System.out.println("test目录是否存在:"+bucketExists);}@Testpublic void test() {System.out.println(minioClient);}
}

Object 代码实现

@SpringBootTest
public class TestObject {@Autowiredprivate MinioClient minioClient;@Testpublic void removeObject() throws Exception {//用于删除指定存储桶中的指定对象(文件)minioClient.removeObject(RemoveObjectArgs.builder().bucket("test").object("1.jpg").build());}@Testpublic void listObjects() {//用于列出指定存储桶中的所有对象(文件)Iterable<Result<Item>> test = minioClient.listObjects(ListObjectsArgs.builder().bucket("test").build());test.forEach(result -> {try {Item item = result.get();System.out.println(item.objectName());} catch (Exception e) {throw new RuntimeException(e);}});}@Testpublic void getObject() throws Exception {//用于从指定的存储桶中下载文件GetObjectResponse response = minioClient.getObject(GetObjectArgs.builder().bucket("test").object("1.jpg").build());//io.minio.GetObjectResponse@6a5dd083System.out.println(response);System.out.println(response.transferTo(new FileOutputStream("D:\\Desktop\\projects\\springoot3-vues\\minio\\day01\\src\\main\\resources\\static\\1.jpg")));}@Testpublic void getPresignedObjectUrl() throws Exception {//用于生成一个对象(文件)的签名URL,以便可以通过HTTP访问String url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().bucket("test").expiry(3, TimeUnit.MINUTES)//设置过期时间.object("1.jpg").method(Method.GET).build());System.out.println("url = " + url);}@Testpublic void statObject() throws Exception {StatObjectResponse test = minioClient.statObject(StatObjectArgs.builder().bucket("test").object("1.jpg").build());//用于检查指定的对象(文件)的状态;//ObjectStat{bucket=test, object=1.jpg, last-modified=2024-05-10T08:30:35Z, size=1145359}System.out.println(test);}@Testpublic void putObject() throws Exception {File file = new File("D:\\Pictures\\0.jpg");ObjectWriteResponse test = minioClient.putObject(PutObjectArgs.builder().bucket("test").object("1.jpg")//上传到minio后的文件名.stream(new FileInputStream(file), file.length(), -1).build());//test = io.minio.ObjectWriteResponse@1815577bSystem.out.println("test = " + test);ObjectWriteResponse test1 = minioClient.uploadObject(UploadObjectArgs.builder().bucket("test").object("1.jpg").filename("D:\\Pictures\\0.jpg").build());}
}

集群

纠删码模式部署

纠删码(Erasure Code)简称 EC,是一种数据保护方法,也是一种算法;

MinIO 对纠删码模式的算法进行了实现,采用 Reed-Solomon code(简称 RScode)纠错码将对象拆分成 N/2 数据和 N/2 奇偶校验块,Reed Solomon 利用范德蒙矩阵(Vandermonde matrix)、柯西矩阵(Cauchy matrix)的特性来实现;

即将数据拆分为多个数据块和多个校验块,分散存储在不同的磁盘上,即使在部分磁盘损坏或丢失的情况下,也可以通过剩余的数据块和校验块恢复出原始数据;

举个例子,现在有 12 块磁盘,一个对象数据会被分成 6 个数据块、6 个奇偶校验块,你可以损坏或丢失任意 6 块磁盘(不管其是存放的数据块还是奇偶校验块),你仍可以从剩下的磁盘中恢复数据

linux 启动纠删码模式

wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
# 修改权限
chmod +x minio
# 单机多磁盘的部署   记得执行上行命令 在/usr/local/minio下  /opt/minio/data 数据卷目录
MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password /usr/local/minio/minio server --console-address ":9001" /opt/minio/data/data{1...12}

单机多磁盘的部署,会报错

执行命令:lsblk
lsblk 是 Linux 中的一个命令,用于列出所有可用的块设备(数据存储设备,如硬盘、闪存驱动器)的信息,如设备名称、大小、挂载点等;
执行命令:lsblk
lsblk 是 Linux 中的一个命令,用于列出所有可用的块设备(数据存储设备,如硬盘、闪存驱动器)的信息,如设备名称、大小、挂载点等;


添加一块磁盘,上图是没加磁盘

# 不重启,直接刷新磁盘数据总线,获取新加的磁盘
for host in $(ls /sys/class/scsi_host) ; do echo "- - -" > /sys/class/scsi_host/$host/scan; done

再次执行 lsblk


启动纠删码

MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password /usr/local/minio/minio server --console-address ":9001" /opt/minio/data/data{1...12}

登录 minio 查看

上传一个文件查看数据目录发现每个目录都存了文件

linux 启动纠删码模式-后台启动

# 这样就不能设置用户名和密码了,咱也不知道为啥一会必须设置一会不能设置,默认用户名密码 minioadmin   不知道是不是版本原因
nohup /usr/local/minio/minio server --console-address ":9001" /opt/minio/data/data{1...12} > /opt/minio/data/minio.log 2>&1 &
  • nohup: 这是一个 Unix 命令,用于运行另一个命令在后台,并且忽略挂起(HUP)信号,也就是即使你退出了终端或关闭了会话,该命令也会继续运行;
  • > /opt/minio/data/minio.log: 这部分是将标准输出(stdout)重定向到 /opt/minio/data/minio.log 文件,这意味着 MinIO 服务器的所有正常输出(如启动信息、状态更新等)都会被写入到这个日志文件中;
  • 2>&1: 这部分是将标准错误输出(stderr)重定向到标准输出(stdout),即输出到 /opt/minio/data/minio.log 文件,这样,无论是标准输出还是错误输出,都会被写入到同一个日志文件中;
  • &: 这个符号是在命令的末尾,用于将命令放到后台执行,也就是即使你启动了 MinIO 服务器,你的终端或 shell 会话也不会被阻塞,你可以继续执行其他命令;

docker 启动纠删码模式

docker logs minio

# 这里的密码也不能少于八位 不然容器就会一直处于重启状态(查看日志就会说密码少于八位了)
docker run -d \
-p 9000:9000 \
-p 9001:9001 \
--name=minio \
--restart=always \
-e "MINIO_ROOT_USER=root" \
-e "MINIO_ROOT_PASSWORD=password" \
-v /home/minio/data1:/data1 \
-v /home/minio/data2:/data2 \
-v /home/minio/data3:/data3 \
-v /home/minio/data4:/data4 \
-v /home/minio/data5:/data5 \
-v /home/minio/data6:/data6 \
-v /home/minio/data7:/data7 \
-v /home/minio/data8:/data8 \
--privileged=true \
minio/minio server /data{1...8} \
--console-address ":9000" \
--address ":9001"

上传个文件并使用 tree 命令查看目录 /home/minio
安装 tree:yum install tree

集群部署-Linux

纠删码模式是单机多磁盘方式,如果这台机器宕机了,那么 minio 就不能对外提供服务了
准备 4 台机器;(根据 MinIO 的架构设计,至少需要 4 个节点来构建集群,这是因为在一个 N 节点的分布式 MinIO 集群中,只要有 N/2 节点在线,数据就是安全的,同时,为了确保能够创建新的对象,需要至少有 N/2+1 个节点,因此,对于一个 4 节点的集群,即使有两个节点宕机,集群仍然是可读的,但需要有 3 个节点才能写数据;)

准备四台虚拟机—下面的操作四台都需要执行

192.168.64.100
192.168.64.102
192.168.64.103
192.168.64.104

minio 集群需要独占磁盘块,不能使用 Linux 的 root 磁盘块
都添加一块硬盘去目录看–> linux 启动纠删码模式

# 不重启,直接刷新磁盘数据总线,获取新加的磁盘
for host in $(ls /sys/class/scsi_host) ; do echo "- - -" > /sys/class/scsi_host/$host/scan; done

将添加的磁盘格式化为 xfs 格式:

mkfs.xfs /dev/sdb

将磁盘挂载到 minio 的存储目录:

# 递归创建文件夹 若文件夹不存在
mkdir -p /opt/minio/data
mount /dev/sdb /opt/minio/data

开机自动挂载-Linux

开机自动挂载,不配置自动挂载的话,重启之后需要手动进行挂载
一、修改 /etc 下的 fstab 文件

vim /etc/fstab
source /etc/fstab

在最后一行加入以下内容

/dev/sdb                /opt/minio/data         xfs      defaults       0 0
  • /dev/sdb 是设备的路径。
  • /opt/minio/data 是挂载点。
  • xfs 是文件系统类型。
  • defaults 是一组默认选项。
  • 0 0 是用于文件系统检查的选项。

在这里插入图片描述

注意:不要写错和少写,我没有写文件系统类型和默认选项,重启后进入了紧急模式
二、修改 /etc 下的 rc.local 文件或者 /etc/rc.d 下的 rc.local 文件
这个配置文件会在用户登陆之前读取,这个文件中写入了什么命令,在每次系统启动时都会执行一次。

vim /etc/rc.local
# 加入 mount /dev/sdb /opt/minio/data
# 重新加载 rc.local 文件
source /etc/rc.local

在这里插入图片描述

每台机器上安装好 minio;(安装在 /usr/local/minio 目录下,版本统一)

# 下载
wget https://dl.minio.org.cn/server/minio/release/linux-amd64/minio
# 修改权限
chmod +x minio

在四台虚拟机的 /usr/local/minio 下编写 minio.sh 启动脚本

#!/bin/bash
export MINIO_ROOT_USER=admin
export MINIO_ROOT_PASSWORD=password
/usr/local/minio/minio server --config-dir /etc/minio --address :9000 --console-address :9001 \
http://192.168.64.100/opt/minio/data/data1 http://192.168.64.100/opt/minio/data/data2 \
http://192.168.64.100/opt/minio/data/data3 http://192.168.64.100/opt/minio/data/data4 \
http://192.168.64.102/opt/minio/data/data1 http://192.168.64.102/opt/minio/data/data2 \
http://192.168.64.102/opt/minio/data/data3 http://192.168.64.102/opt/minio/data/data4 \
http://192.168.64.103/opt/minio/data/data1 http://192.168.64.103/opt/minio/data/data2 \
http://192.168.64.103/opt/minio/data/data3 http://192.168.64.103/opt/minio/data/data4 \
http://192.168.64.104/opt/minio/data/data1 http://192.168.64.104/opt/minio/data/data2 \
http://192.168.64.104/opt/minio/data/data3 http://192.168.64.104/opt/minio/data/data4 &

给脚本修改权限

 chmod 744 minio.sh

启动脚本

# 如果在 minio 的安装目录下 /usr/local/minio
./minio.sh
# 若不在安装目录下,则写全路径
/usr/local/minio/minio.sh

启动可能会报错


查看防火墙的状态关闭防火墙

systemctl status firewalld
# 临时关闭
systemctl stop firewalld
# 永久关闭
systemctl disable firewalld

脚本加入开机启动-Linux

在 /usr/lib/systemd/system 下编写服务

vim /usr/lib/systemd/system/minio.service

加入以下内容

#固定写法,换一下路径即可
#!/bin/sh
[Unit]
Description=xxx-service
Documentation=https://docs.minio.io/
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
# 脚本的位置
ExecStart=/usr/local/minio/minio.sh
WorkingDirectory=/opt/minio
PrivateTmp=true
[Install]
WantedBy=multi-user.target

添加权限

chmod +x /usr/lib/systemd/system/minio.service

可以一台一台的新建脚本,也可以用下列命令把建好的脚本拷贝给其他机器

# 先ssh连一下目标服务器
ssh 192.168.64.102
# 退出 192.168.64.102
exit
scp -r /usr/lib/systemd/system/minio.service 192.168.64.102:/usr/lib/systemd/system/minio.service

如果 ssh 由于秘钥问题连不上可用下面命令

ssh -o StrictHostKeyChecking=no 192.168.64.100
# 重新连接

启动

#将服务添加到开机自启服务中
systemctl enable minio.service
#系统服务刷新
systemctl daemon-reload
#启动服务
systemctl start minio.service
#查看服务状态
systemctl status minio
#停止服务
systemctl stop minio
#取消开机自启
systemctl disable minio

在这里插入图片描述

集群部署-Docker

看了好多人写的,都没成功,放着吧

Nginx 负载均衡

官网:https://nginx.org/en/download.html

Nginx 下载安装

# 下载 下载到当前目录
wget https://nginx.org/download/nginx-1.26.0.tar.gz
# 安装相关库
yum install gcc openssl openssl-devel pcre pcre-devel zlib zlib-devel -y
# 解压
tar -zxvf nginx-1.26.0.tar.gz
# 切换至解压后的nginx主目录
cd nginx-1.26.0/
# 在nginx主目录nginx-1.26.0下执行命令  --prefix是指定nginx安装路径
./configure --prefix=/usr/local/nginx  
# 执行命令进行编译
make
# 执行命令进行安装
make install
# 安装完成建议删除 nginx-1.26.0  nginx 安装在了/usr/local
# 这个删除的是下载解压的文件
rm -rf nginx-1.26.0

Nginx 启动

# -c是指定配置文件
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
# 重启
/usr/local/nginx/sbin/nginx -s reload

Nginx 关闭

# 会将已经进来的请求处理完后再关闭
# 找出nginx的进程号
ps -ef | grep nginx
# QUIT  必须是大写
kill -QUIT 主pid
# 快速关闭会直接关闭,已经进来的请求也不会处理
ps -ef | grep nginx
# TERM 必须是大写
kill -TERM 主pid

Nginx配置检查

# 当修改Nginx配置文件后,可以使用Nginx命令进行配置文件语法检查,用于检查Nginx配置文件是否正确
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf -t

Nginx 修改配置文件

1、在http模块配置upstream

upstream api {server  192.168.64.100:9000;server  192.168.64.102:9000;server  192.168.64.103:9000;server  192.168.64.104:9000;
}
upstream webui {server  192.168.64.100:9001;server  192.168.64.102:9001;server  192.168.64.103:9001;server  192.168.64.104:9001;
}

2、在server模块里配置

		location / {#root   html;#index  index.html index.htm;proxy_pass http://api;proxy_set_header Host $http_host;proxy_set_header Server MinIO;proxy_set_header Accept-Ranges bytes;}

再写个server 指定 webui

server {listen       50000;server_name  localhost;location / {proxy_pass http://webui;}
}

在这里插入图片描述
在这里插入图片描述

测试访问

在地址栏输入:http://192.168.64.100:50000/ 可以正常访问 minio 后台在这里插入图片描述

常见问题

服务器时间不同步

The difference between the request time and the server’s time is too large.
解决:

yum install ntpdate -y
ntpdate pool.ntp.org

上传的文件默认是不能访问的

http://ip:9000/存储桶/文件名

一、后台修改 bucke t 的访问策略

二、代码实现

@Testpublic void createBucket() throws Exception {String bucketName = "test1";boolean bucketExists = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if (!bucketExists) {// 创建bucketminioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}//创建的时候设置访问策略  2012-10-17  不能改String policyJsonString = "{\n" +"    \"Version\": \"2012-10-17\",\n" +"    \"Statement\": [\n" +"        {\n" +"            \"Effect\": \"Allow\",\n" +"            \"Principal\": {\"AWS\": [\"*\"]},\n" +"            \"Action\": [\"s3:GetBucketLocation\",\"s3:ListBucket\",\"s3:ListBucketMultipartUploads\"],\n" +"            \"Resource\": [\"arn:aws:s3:::"+bucketName+"\"]\n" +"        },\n" +"        {\n" +"            \"Effect\": \"Allow\",\n" +"            \"Principal\": {\"AWS\": [ \"*\"]},\n" +"            \"Action\": [\"s3:DeleteObject\",\"s3:GetObject\", \"s3:ListMultipartUploadParts\",\"s3:PutObject\",\"s3:AbortMultipartUpload\"],\n" +"            \"Resource\": [\"arn:aws:s3:::"+bucketName+"/*\"]\n" +"        }\n" +"    ]\n" +"}";minioClient.setBucketPolicy(SetBucketPolicyArgs.builder().bucket(bucketName).config(policyJsonString).build());}

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

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

相关文章

生信人写程序1. Perl语言模板及配置

生物信息领域常用语言 个人认为&#xff1a;是否能熟悉使用Shell(项目流程搭建)R(数据统计与可视化)Perl/Python/Java…(胶水语言&#xff0c;数据格式转换&#xff0c;软件间衔接)三门语言是一位合格生物信息工程师的标准。 生物信息常用语言非常广泛&#xff0c;我常用的有…

在macOS中开发的Django项目部署到局域网的Win10服务器上

由于windows10是日常办公电脑&#xff0c;没有服务器基本环境&#xff0c;部署工程耗费不少时间&#xff0c;记录一下。 1、安装Python 访问Python官方下载页面&#xff1a;Python Downloads&#xff0c;下载适用于Windows的安装程序并按照提示进行安装。开发环境python版本是…

Python可以自学但是千万不要乱学,避免“埋头苦学”的陷阱!

前言 Python可以自学但是千万不要乱学&#xff01; 归根结底因为学习是个反人性的过程&#xff01; 复盘没学下去的网课&#xff0c;都有以下特点&#xff1a; &#x1f605; 臣妾听不懂啊&#xff01; 初次接触编程遇到太多抽象高深的概念&#xff0c;不了解老师口中的一个…

基于51单片机的二氧化碳检测及调节系统仿真

基于51单片机的二氧化碳检测及调节系统 &#xff08;仿真&#xff0b;程序&#xff09; 功能介绍 具体功能&#xff1a; 1.二氧化碳传感器测得二氧化碳数据后经过单片机处理。 2.LCD1602实时显示&#xff0c;第一行显示测得的浓度值&#xff0c;第二行显示报警阈值。 3.测…

棱镜七彩参编《网络安全技术 软件供应链安全要求》国家标准发布

据全国标准信息公共服务平台消息显示&#xff0c;《网络安全技术 软件供应链安全要求》&#xff08;GB/T 43698-2024&#xff09;国家标准已于2024年4月25日正式发布&#xff0c;并将于2024年11月1日正式实施。棱镜七彩作为主要编制单位之一参与该国家标准的编制&#xff0c;为…

Taro 快速开始

大家好我是苏麟 , 今天聊聊Trao. 官网 : Taro 介绍 | Taro 文档 (jd.com) 点击快速开始 全局安装 CLI 初始化一个项目 选择配置 : 根据自己需求选择 安装失败先不用管 , 用前端工具打开项目 npm install 安装 , 显示安装失败 怎么解决 ? : 查看报错信息 百度 , 问 AI 工具 运…

睿尔曼机械臂ROS控制

下载git工程 git clone https://github.com/RealManRobot/rm_robot.git安装配置 catkin build rm_msgs source devel/setup.bash catkin build source setup.bash这里注意&#xff0c;如果采用setup.sh多半不会成功&#xff0c;必须要source setup.bash文件&#xff0c;ros才…

train_gpt2_fp32.cu

源程序 llm.c/test_gpt2_fp32.cu at master karpathy/llm.c (github.com) #include <stdio.h> #include <stdlib.h> #include <math.h> #include <time.h> #include <assert.h> #include <float.h> #include <string.h> #include…

力扣每日一题-收集垃圾的最少总时间-2024.5.11

力扣题目&#xff1a;收集垃圾的最少总时间 题目链接: 2391.收集垃圾的最少总时间 题目描述 代码纯享版 class Solution {public int garbageCollection(String[] garbage, int[] travel) {int sum 0;int last_M -1,last_P -1, last_G -1;for(int i 0; i < garbage.…

以Azure为例的SSO

由于文章的篇幅有限&#xff0c;无法将全部的代码贴上来&#xff0c;如想要看完整案例&#xff0c;请在公众号文章中留言(其他平台很少看…毕竟最近印度同事的UI组件库搞得我好烦) 1.关于SSO 单点登录又称之为SSO,全称为 Single Sign On &#xff0c;一般在多个应用系统中&…

Github2024-05-10开日报 Top10

根据Github Trendings的统计&#xff0c;今日(2024-05-10统计)共有10个项目上榜。根据开发语言中项目的数量&#xff0c;汇总情况如下&#xff1a; 开发语言项目数量Python项目4TypeScript项目4JavaScript项目1Lua项目1C项目1Rust项目1Dart项目1 RustDesk: 用Rust编写的开源远…

U盘文件剪切丢失怎么办?揭秘原因并给出恢复方法

在日常生活和工作中&#xff0c;U盘已成为我们不可或缺的数据存储和传输工具。但有时候&#xff0c;我们在对U盘中的文件进行剪切操作时&#xff0c;会遇到文件丢失的情况。这种突如其来的数据消失往往会让人感到惊慌和困惑。那么&#xff0c;为什么U盘剪切时文件会丢失呢&…

IDEA 常见设置问题

OutOfMemoryError IDEA 第一次运行项目时&#xff0c;会报错误 - java.lang.OutOfMemoryError: Java heap space / insufficient memory&#xff0c;解决办法是&#xff1a; 将图示部分由默认的 700 改为 2048。 import * 工程lint检查时不允许使用import *&#xff0c;IDE…

使用Selenium自动化操作浏览器!

Selenium可以自动化操作浏览器&#xff0c;例如&#xff1a;选择元素&#xff0c;输入&#xff0c;点击等&#xff0c;可以用于软件自动化测试&#xff0c;爬虫等工作&#xff0c;也可以做你想做的任何事情。 本文环境&#xff1a; Python3.12&#xff0c;Windows10&#xff0…

python实现星号打印出金字塔

#编程实现下列图形的打印 a input() for i in range(int(a)//21): num * * ((i1)*2-1) print(num.center(int(a), )) 编译后通过。输入20后得到下面的星号金字塔

c#教程——索引器

前言&#xff1a; 索引器&#xff08;Indexer&#xff09;可以像操作数组一样来访问对象的元素。它允许你使用索引来访问对象中的元素&#xff0c;就像使用数组索引一样。在C#中&#xff0c;索引器的定义方式类似于属性&#xff0c;但具有类似数组的访问方式。 索引器&#x…

Cloudera的简介及安装部署

简介 Cloudera是一家位于美国的软件公司&#xff0c;成立于2008年&#xff0c;专注于为企业客户提供基于Apache Hadoop的软件、支持、服务以及培训。Cloudera的开源Apache Hadoop发行版&#xff0c;即Cloudera Distribution including Apache Hadoop&#xff08;CDH&am…

【计算机网络原理】初识网络原理和一些名词解释​​

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…

未来办公新方式--智能体与程序完美配合

Agent AI智能体的未来 工作中&#xff0c;有时候我们就像是在不停地踩着缝纫机&#xff0c;重复地做着那些单调乏味的任务&#xff0c;不仅耗时费力&#xff0c;还特别容易出错。可是&#xff0c;咱们现在可是生活在数字化时代啊&#xff01;这时候&#xff0c;Python编程语言…

docker私有仓库registry

简介 Docker私有仓库的Registry是一个服务&#xff0c;主要用于存储、管理和分发Docker镜像。具体来说&#xff0c;Registry的功能包括&#xff1a; 存储镜像&#xff1a;Registry提供一个集中的地方来存储Docker镜像&#xff0c;包括镜像的层次结构和元数据。 版本控制&…