minio集群部署

news2024/11/24 16:36:53

最近接触到minio, 将本地集群部署,分别在ubuntu、centos stream9上进行了搭建,目前看里面的小坑不小,记录以下教程,以备忘、以供他人借鉴。

#### 准备

1、因新版本的minio要求,集群部署必须使用挂载非 root 盘的目录,所以这里使用系统盘之外的磁盘

2、各类限制、创建目录等

2.1 防火墙关闭

systemctl stop firewalld

systemctl disable firewalld

systemctl status firewalld

2.2 如果用centos桌面版需要将规则关闭访问控制机制 SELinux(Security-Enhanced Linux)

编辑SELinux的配置文件/etc/selinux/config,将SELINUX设置为disabled

重启后查看状态 getenforce 显示为disabled

2.3 各节点创建 /etc/minio目录,并给权限

2.4 如果是虚机添加磁盘,需先分区再格式化,创建数据目录,挂载,mount -a

2.5 下载minio执行文件为https://dl.min.io/server/minio/release/linux-amd64/minio (注:不要用商用版)

2.6 使用命令测试,最后用sh脚本启动 (注:不用写到配置文件里的形式)

2.7 集群所有节点,命令测试启动成功后,登录后台创建bucket并创建Access Keys,并设置access keys为public

2.8 启动时添加上环境变量,两命令export MINIO_ACCESS_KEY= "accesskeys" export MINIO_SECRET_KEY="xxxxx"

2.9 创建/data/minio/data01目录,需要查看所有者,生产环境权限有限。find ./目录名 -ls

2.9.1 cannot open /dev/sdb1: Device or resource busy 这个错误表明设备

/dev/sdb1正在被某个进程或操作使用,因此无法打开。

sudo fuser -m /dev/sdb1

2.9.2 查询minio错误日志

journalctl -u minio.service

/var/log/message

执行步骤参看以下命令

```
root@wolf-Parallels-Virtual-Platform:~# fdisk -l  或 lsblk
Disk /dev/loop0:4 KiB,4096 字节,8 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop1:61.96 MiB,64970752 字节,126896 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop2:163.29 MiB,171225088 字节,334424 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop3:400.8 MiB,420265984 字节,820832 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop4:91.69 MiB,96141312 字节,187776 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop5:45.86 MiB,48091136 字节,93928 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop6:46.96 MiB,49242112 字节,96176 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/loop7:284 KiB,290816 字节,568 个扇区
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


Disk /dev/sda:64 GiB,68719476736 字节,134217728 个扇区   #这个是系统盘
Disk model: Ubuntu Linux2-0
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
磁盘标签类型:gpt
磁盘标识符:DC11A4D4-0F37-4E41-8F16-4689EBC57DB4

设备          起点      末尾      扇区  大小 类型
/dev/sda1     2048      4095      2048    1M BIOS 启动
/dev/sda2     4096   1054719   1050624  513M EFI 系统
/dev/sda3  1054720 134215679 133160960 63.5G Linux 文件系统


Disk /dev/sdb:64 GiB,68719476736 字节,134217728 个扇区   #这个是我新增加的磁盘
Disk model: Ubuntu Linux2-3
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节


Disk /dev/sdc:64 GiB,68719476736 字节,134217728 个扇区   #这个也是我新增加的磁盘
Disk model: Ubuntu Linux2-4
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 4096 字节
I/O 大小(最小/最佳):4096 字节 / 4096 字节
```

对磁盘进行格式化并挂载,在格式化之前先对磁盘进行分区,这里我直接分一个区

```
root@wolf-Parallels-Virtual-Platform:~# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.37.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x5c7bcbc7 的新 DOS 磁盘标签。

命令(输入 m 获取帮助): n #输入n
分区类型
   p   主分区 (0 primary, 0 extended, 4 free)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p): p  #选择主分区,下面就一直回车即可
分区号 (1-4, 默认  1):
第一个扇区 (2048-134217727, 默认 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-134217727, 默认 134217727):

创建了一个新分区 1,类型为“Linux”,大小为 64 GiB。

命令(输入 m 获取帮助): w #保存
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
root@wolf-Parallels-Virtual-Platform:~# fdisk /dev/sdc #第二个磁盘

欢迎使用 fdisk (util-linux 2.37.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x87a1d682 的新 DOS 磁盘标签。

命令(输入 m 获取帮助): n
分区类型
   p   主分区 (0 primary, 0 extended, 4 free)
   e   扩展分区 (逻辑分区容器)
选择 (默认 p): p
分区号 (1-4, 默认  1):
第一个扇区 (2048-134217727, 默认 2048):
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-134217727, 默认 134217727):

创建了一个新分区 1,类型为“Linux”,大小为 64 GiB。

命令(输入 m 获取帮助): w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
```

格式化

```
root@wolf-Parallels-Virtual-Platform:~# mkfs.xfs /dev/sdb1 #没有mkfs.xfs 那就安装即可
找不到命令 “mkfs.xfs”,但可以通过以下软件包安装它:
apt install xfsprogs
root@wolf-Parallels-Virtual-Platform:~# apt install xfsprogs
root@wolf-Parallels-Virtual-Platform:~# mkfs.xfs /dev/sdb1 #格式化
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=4194240 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=16776960, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=8191, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =无                    extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
root@wolf-Parallels-Virtual-Platform:~# mkfs.xfs /dev/sdc1
meta-data=/dev/sdc1              isize=512    agcount=4, agsize=4194240 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1    bigtime=0 inobtcount=0
data     =                       bsize=4096   blocks=16776960, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=8191, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =无                    extsz=4096   blocks=0, rtextents=0
Discarding blocks...Done.
```

挂载到系统里

```
root@wolf-Parallels-Virtual-Platform:~# mkdir /data/minio/{data01,data02} -p
root@wolf-Parallels-Virtual-Platform:~# chown wolf:wolf /data/minio -R #给挂载的目录授权
root@wolf-Parallels-Virtual-Platform:~# ls -l /data/minio
总计 12
drwxr-xr-x 3 wolf wolf   24  9月 29 15:59 data01
drwxr-xr-x 3 wolf wolf   24  9月 29 15:59 data02
root@wolf-Parallels-Virtual-Platform:~# mount /dev/sdb1 /data/minio/data01 #临时挂在,重启失效
root@wolf-Parallels-Virtual-Platform:~# mount /dev/sdc1 /data/minio/data02
root@wolf-Parallels-Virtual-Platform:~# blkid #查看磁盘的id
/dev/sda3: UUID="f11cdc00-8283-42d8-99ac-f260516112ac" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="ec38747c-6bad-4db4-9264-0d0d8b6ecba9"
/dev/loop1: TYPE="squashfs"
/dev/sdb1: UUID="04d19afa-3c2b-4fe1-89c8-f44ecdd98c30" BLOCK_SIZE="4096" TYPE="xfs" PARTUUID="5c7bcbc7-01"
/dev/loop6: TYPE="squashfs"
/dev/loop4: TYPE="squashfs"
/dev/loop2: TYPE="squashfs"
/dev/loop0: TYPE="squashfs"
/dev/sdc1: UUID="5abe4743-d0e8-47ea-b87d-941536e79cdf" BLOCK_SIZE="4096" TYPE="xfs" PARTUUID="87a1d682-01"
/dev/loop7: TYPE="squashfs"
/dev/sda2: UUID="C6C5-DEF7" BLOCK_SIZE="512" TYPE="vfat" PARTLABEL="EFI System Partition" PARTUUID="3f5a0baa-261f-40bf-8d29-6f8fc2392ebf"
/dev/sda1: PARTUUID="6d53a19e-91c2-4016-8006-2df8d723705f"
/dev/loop5: TYPE="squashfs"
/dev/loop3: TYPE="squashfs"
root@wolf-Parallels-Virtual-Platform:~# cat /etc/fstab #在启动文档里把挂在的盘加进去
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point>   <type>  <options>       <dump>  <pass>
# / was on /dev/sda3 during installation
UUID=f11cdc00-8283-42d8-99ac-f260516112ac /               ext4    errors=remount-ro 0       1
# /boot/efi was on /dev/sda2 during installation
UUID=C6C5-DEF7  /boot/efi       vfat    umask=0077      0       1
/swapfile                                 none            swap    sw              0       0
UUID=04d19afa-3c2b-4fe1-89c8-f44ecdd98c30 /data/minio/data01 xfs default 0 0 #对应的/dev/sdb1
UUID=5abe4743-d0e8-47ea-b87d-941536e79cdf /data/minio/data02 xfs default 0 0 #对应的/dev/sdc1
```

验证一下挂载的磁盘

```
root@wolf-Parallels-Virtual-Platform:~# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
udev on /dev type devtmpfs (rw,nosuid,relatime,size=965252k,nr_inodes=241313,mode=755,inode64)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,noexec,relatime,size=200496k,mode=755,inode64)
/dev/sda3 on / type ext4 (rw,relatime,errors=remount-ro)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev,inode64)
tmpfs on /run/lock type tmpfs (rw,nosuid,nodev,noexec,relatime,size=5120k,inode64)
cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate,memory_recursiveprot)
pstore on /sys/fs/pstore type pstore (rw,nosuid,nodev,noexec,relatime)
bpf on /sys/fs/bpf type bpf (rw,nosuid,nodev,noexec,relatime,mode=700)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=29,pgrp=1,timeout=0,minproto=5,maxproto=5,direct,pipe_ino=5906)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
debugfs on /sys/kernel/debug type debugfs (rw,nosuid,nodev,noexec,relatime)
tracefs on /sys/kernel/tracing type tracefs (rw,nosuid,nodev,noexec,relatime)
mqueue on /dev/mqueue type mqueue (rw,nosuid,nodev,noexec,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,nosuid,nodev,noexec,relatime)
configfs on /sys/kernel/config type configfs (rw,nosuid,nodev,noexec,relatime)
ramfs on /run/credentials/systemd-sysusers.service type ramfs (ro,nosuid,nodev,noexec,relatime,mode=700)
/var/lib/snapd/snaps/bare_5.snap on /snap/bare/5 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide)
/var/lib/snapd/snaps/firefox_1635.snap on /snap/firefox/1635 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide)
/var/lib/snapd/snaps/core20_1587.snap on /snap/core20/1587 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide)
/var/lib/snapd/snaps/gnome-3-38-2004_112.snap on /snap/gnome-3-38-2004/112 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide)
/var/lib/snapd/snaps/gtk-common-themes_1535.snap on /snap/gtk-common-themes/1535 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide)
/var/lib/snapd/snaps/snapd_16292.snap on /snap/snapd/16292 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide)
/var/lib/snapd/snaps/snap-store_582.snap on /snap/snap-store/582 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide)
/var/lib/snapd/snaps/snapd-desktop-integration_14.snap on /snap/snapd-desktop-integration/14 type squashfs (ro,nodev,relatime,errors=continue,threads=single,x-gdu.hide)
/dev/sda2 on /boot/efi type vfat (rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=iso8859-1,shortname=mixed,errors=remount-ro)
tmpfs on /run/user/127 type tmpfs (rw,nosuid,nodev,relatime,size=200492k,nr_inodes=50123,mode=700,uid=127,gid=133,inode64)
portal on /run/user/127/doc type fuse.portal (rw,nosuid,nodev,relatime,user_id=127,group_id=133)
tmpfs on /run/snapd/ns type tmpfs (rw,nosuid,nodev,noexec,relatime,size=200496k,mode=755,inode64)
gvfsd-fuse on /run/user/127/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=127,group_id=133)
nsfs on /run/snapd/ns/snapd-desktop-integration.mnt type nsfs (rw)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=200492k,nr_inodes=50123,mode=700,uid=1000,gid=1000,inode64)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
portal on /run/user/1000/doc type fuse.portal (rw,nosuid,nodev,relatime,user_id=1000,group_id=1000)
/dev/sdb1 on /data/minio/data01 type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota) # 这两个是挂载的磁盘
/dev/sdc1 on /data/minio/data02 type xfs (rw,relatime,attr2,inode64,logbufs=8,logbsize=32k,noquota)
```

配置minio集群的启动

```
root@wolf-Parallels-Virtual-Platform:~# chmod +x /usr/local/bin/minio
#注意,如果执行在用普通用户执行会出现没有权限写入,如果执行了,需要把/data/minio/data01和/data/minio/data02的隐藏文件删除在用普通用户执行
root@wolf-Parallels-Virtual-Platform:~# minio server --config-dir /etc/minio --console-address :9001         --address :9000         http://10.211.55.9/data/minio/data01  http://10.211.55.9/data/minio/data02 http://10.211.55.10/data/minio/data01 http://10.211.55.10/data/minio/data02
.............................................................
Automatically configured API requests per node based on available memory on the system: 19
All MinIO sub-systems initialized successfully in 1.865853508s
WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables
MinIO Object Storage Server
Copyright: 2015-2023 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2023-08-09T23-30-22Z (go1.19.12 linux/amd64)

Status:         4 Online, 0 Offline.
S3-API: http://10.211.55.9:9000  http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin

Console: http://10.211.55.9:9001 http://127.0.0.1:9001
RootUser: minioadmin
RootPass: minioadmin
```

测试启动通过,下面设置开机自启动

```
root@wolf-Parallels-Virtual-Platform:~# vim /etc/default/minio.sh
#!/bin/bash
minio server --config-dir /etc/minio --console-address :9001         --address :9000         http://10.211.55.9/data/minio/data01  http://10.211.55.9/data/minio/data02 http://10.211.55.10/data/minio/data01 http://10.211.55.10/data/minio/data02
root@wolf-Parallels-Virtual-Platform:~# chmod +x /etc/default/minio.sh
root@wolf-Parallels-Virtual-Platform:~# vim /usr/lib/systemd/system/minio.service
[Unit]
Description=Minio service
Documentation=https://docs.minio.io/

[Service]
User=wolf
Group=wolf
ExecStart=/etc/default/minio.sh
Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target
root@wolf-Parallels-Virtual-Platform:~# chmod +x  /usr/lib/systemd/system/minio.service
root@wolf-Parallels-Virtual-Platform:~# chown wolf:wolf -R /etc/default/
```

使用普通用户启动

```
wolf@wolf-Parallels-Virtual-Platform:~$ sudo systemctl daemon-reload
[sudo] wolf 的密码:
wolf@wolf-Parallels-Virtual-Platform:~$ sudo systemctl restart minio
wolf@wolf-Parallels-Virtual-Platform:~$ sudo systemctl status minio
● minio.service - Minio service
     Loaded: loaded (/lib/systemd/system/minio.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2024-09-29 16:39:15 CST; 6s ago
       Docs: https://docs.minio.io/
   Main PID: 2667 (minio.sh)
      Tasks: 9 (limit: 2262)
     Memory: 150.7M
        CPU: 486ms
     CGroup: /system.slice/minio.service
             ├─2667 /bin/bash /etc/default/minio.sh
             └─2668 minio server --config-dir /etc/minio --console-address :9001 --address :9000 http://10.211.55.9/dat>

Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]: MinIO Object Storage Server
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]: Copyright: 2015-2023 MinIO, Inc.
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]: License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl->
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]: Version: RELEASE.2023-08-09T23-30-22Z (go1.19.12 linux/>
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]: Status:         4 Online, 0 Offline.
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]: S3-API: http://10.211.55.9:9000  http://127.0.0.1:9000
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]: Console: http://10.211.55.9:9001 http://127.0.0.1:9001
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]: Documentation: https://min.io/docs/minio/linux/index.ht>
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]:  You are running an older version of MinIO released 1 y>
Sep 29 16:39:16 wolf-Parallels-Virtual-Platform minio.sh[2668]:  Update: Run `mc admin update`

wolf@wolf-Parallels-Virtual-Platform:~$ ls -l /usr/lib/systemd/system/minio.service
-rwxr-xr-x 1 root root 204 Sep 29 16:38 /usr/lib/systemd/system/minio.service
```

验证

在其中一个节点里创建一个文件,看另一个节点是否有,如果有说明成功

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

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

相关文章

Java基础:字符串详解

1 深入解读String类源码 1.1 String类的声明 public final class Stringimplements java.io.Serializable, Comparable<String>, CharSequence { }String类是final的&#xff0c;意味着它不能被子类继承&#xff1b;String 类实现了Serializable接口&#xff0c;意味着…

没人告诉你的职场人情世故

看到前同事在群里分享的新年开工遭遇&#xff0c;真是让人感同身受。 第一天就遇到挫折&#xff0c;因为工作做得太快、太早交付&#xff0c;结果反被领导批评&#xff0c;还得重做&#xff0c;头大如斗。这不就提醒我们得时时刻刻记着职场里的那些不成文的规矩吗&#xff1f;…

Hunuan-DiT代码阅读

一 整体架构 该模型是以SD为基础的文生图模型&#xff0c;具体扩散模型原理参考https://zhouyifan.net/2023/07/07/20230330-diffusion-model/&#xff0c;代码地址https://github.com/Tencent/HunyuanDiT&#xff0c;这里介绍 Full-parameter Training 二 输入数据处理 这里…

一、Spring入门

文章目录 1. 课程内容介绍2. Spring5 框架概述3. Spring5 入门案例 1. 课程内容介绍 2. Spring5 框架概述 3. Spring5 入门案例

Java反射专题

目录 一.反射机制 1.Java Reflection 2.反射相关的主要类 3.反射的优缺点 4.反射调用优化—关闭访问检查 二.Class类 1.基本介绍 2.常用方法 3.获取Class对象的方式 4.那些类型有Class对象 三.类加载 1.介绍 2.类加载时机 3.类加载各阶段 四.获取类结构的信息 1…

25.第二阶段x86游戏实战2-背包属性补充

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

机器学习项目——运用机器学习洞察青年消费趋势

1. 项目背景 在21世纪的第三个十年&#xff0c;全球经济和技术的飞速发展正深刻影响着各个领域&#xff0c;尤其是青年消费市场。随着数字化进程的加速&#xff0c;尤其是移动互联网的广泛普及&#xff0c;青年的消费行为和生活方式发生了前所未有的转变。 然而&#xff0c;面对…

开源版GPT-4o来了!互腾讯引领风潮,开源VITA多模态大模型,开启自然人机交互新纪元[文末领福利]

目录 总览 VITA 模型的详细介绍 2.1 LLM 指令微调 2.2 多模态对齐 2.2.1 视觉模态 2.3 音频模态 多模态指令微调 3.1 训练数据 3.1.1 训练过程 模型部署&#xff1a;双工策略 4.1 非唤醒交互 4.2 音频中断交互 评估 5.1 语言表现 5.2 音频表现 5.3 多模态表现 …

离散微分几何中的网格(Meshes)

https://zhuanlan.zhihu.com/p/893338073 一、引言 ![](https://img-blog.csdnimg.cn/img_convert/c5e06e652822e0003cf6be91d26436b7.png) 在离散微分几何的广袤领域中&#xff0c;网格&#xff08;Meshes&#xff09;作为一个核心概念&#xff0c;犹如一座桥梁&#xff0c;…

小灰:从0到年入100万+,从程序员到自由职业者他经历了什么?

这是开发者说的第20期&#xff0c;这次给大家带来的畅销书《漫画算法》作者、自媒体创作者程序员小灰。 小灰做自媒体的时间已经有8年了&#xff0c;目前在全网有60w粉丝&#xff0c;同时《漫画算法》系列和《漫画ChatGPT》的书籍&#xff0c;在全网卖了12万册&#xff0c;靠写…

rocky9 samba共享

1. 安装samba服务&#xff0c;设置开机自启。 2. 创建四个用户user1&#xff0c;user2&#xff0c;sale1&#xff0c;manager&#xff0c;user1&#xff0c;user2属于finance组&#xff0c;sale1属于sales组&#xff0c;manager属于manager组。 3. 建立共享目录/opt/finance_…

模版进阶 非类型模版参数

一.模板参数分类类型形参与非类型形参。 类型形参即&#xff1a;出现在模板参数列表中&#xff0c;跟在class或者typename之类的参数类型名称。 非类型形参&#xff0c;就是用一个常量作为类(函数)模板的一个参数&#xff0c;在类(函数)模板中可将该参数当成常量来使用。 #i…

打印1000年到2000年之间的闰年

我们要打印1000年到2000年之间的闰年&#xff0c;首先我们先输出1000年到2000年之间的所有的年份&#xff0c;同时我们将闰年的判断方法输入到其中 闰年需要满足下列两个条件的其中之一&#xff1a; 1.能被4整除但不能被100整除 2.能被400整除 打印1000年到2000年之间的闰年…

PCL 贪婪三角投影三角化

目录 一、概述二、代码三、结果 一、概述 PCL中贪婪三角投影三角化的简单使用案例 二、代码 greedy_projection.cpp #include <pcl/point_types.h> #include <pcl/io/pcd_io.h> #include <pcl/search/kdtree.h> // for KdTree #include <pcl/features/…

【软件系统架构设计师-案例-1】架构风格

1. 请用200字以内说明系统可靠性的定义及包含的4个子特性&#xff0c;并简要指出提高系统可靠性一般采用哪些技术&#xff1f; &#xff08;1&#xff09;可靠性定义&#xff1a;系统在规定的时间或环境条件下&#xff0c;完成规定功能的能力&#xff0c;就是系统无故障运行的…

【AD速成】半小时入门AltiumDesigner(速通基础)

一.创建工程 1.工程 文件->新的->项目 PCB选择<Default>Project Name填入自己的工程名称Folder选择工程保存的路径 创建后如图&#xff1a; 这里的.prjPcb的文件即为AD的工程文件。 如果没有Project栏可以在视图->面板->Projects中勾选Projects CtrlS保存工…

Java学习-JVM调优

目录 1. JDK工具包 1.1 jps 1.2 jstat 1.3 jinfo 1.4 jmap 1.5 jhat 1.6 jstack 1.7 VisualVM 2. 第三方工具 2.1 GCEasy 2.2 MAT 2.3 Arthas 3. JVM参数 3.1 标准参数 3.2 非标准参数 3.3 不稳定参数 4. 调优 4.1 什么时候调优 4.2 调优调什么 4.3 调优原…

LINUX 系统管理操作

基础编辑 Tab 单击一次补全 双击列举候选 CTRL U 删除光标前 K 删除光标后 L 清屏&#xff08;只剩新命令行&#xff09; C 取消当前操作 反斜杠“\” 在需要转行的时候输入反斜杠 “\”回车 在>后继续输入 帮助命令 help 命令 大部分内建命令 格式&#xff1a;h…

直播预告 | 药品安全与合规保障难?智能温度监测助您领先制药工业4.0!

您是否在为温度敏感药品的运输和存储合规而苦恼&#xff1f; 是否担心冷链物流中的温度监控漏洞导致药品质量下降&#xff1f; 制药环境中的温湿度监控是否让您无从下手&#xff1f; 这些问题不仅影响药品的安全性&#xff0c;也直接影响企业的合规性和市场竞争力。如何确保环…

Android 保存图片到相册却不在“照片”中显示,只在相簿中显示

背景 需要从网络上下载图片到本地&#xff0c; 并显示在相册中 问题 将图片保存到内存中&#xff0c; 通过媒体API插入到媒体库后&#xff0c;图片只在“相簿”中的“所有项目”中显示&#xff0c;第一个页面的“照片”却不显示 解决办法 图片被保存到 Pictures/AppName 目录…