Linux中MFS分布式文件系统(实战教程)全网最详细

news2024/11/13 10:39:17

MFS架构图

  1. 元数据服务器(Master):在整个体系中负责管理文件系统,维护元数据。

  2. 元数据日志服务器(MetaLogger):备份Master服务器的变化日志文件,文件类型为 changelog_ml.*.mfs。当 Master 服务器数据丢失或者损坏,可以从日志服务器中取得 文件恢复。

  3. 数据存储服务器(Chunk Server):真正存储数据的服务器。存储文件时,会把文件分 块保存,并在数据服务器之间复制,数据服务器越多,能使用的“容量”就越大,可靠 性就越高,性能越好。

  4. 客户端(Client):可以像挂载NFS一样挂载MFS文件系统,其操作是相同的。

MFS的原理

数据读取流程

  1. 客户端向元数据服务器发送读取请求。
  2. 元数据服务器返回所需数据的存放位置,包括 Chunk Server 的 IP 地址和对应的 Chunk 编号。
  3. 客户端向指定的 Chunk Server 请求数据。
  4. Chunk Server 将所请求的数据发送给客户端。

数据写入流程

  1. 客户端向元数据服务器发送写入请求。
  2. 元数据服务器与 Chunk Server 交互(仅在所需的分块 Chunks 存在时进行)。
  3. 元数据服务器在指定的 Chunk Server 上创建新的分块 Chunks,成功创建后,Chunk Server 通知元数据服务器操作成功。
  4. 元数据服务器告知客户端可以在哪个 Chunk Server 的哪些 Chunks 中写入数据。
  5. 客户端向指定的 Chunk Server 写入数据。
  6. 该 Chunk Server 与其他 Chunk Server 进行数据同步,同步成功后,Chunk Server 通知客户端数据写入成功。
  7. 客户端通知元数据服务器本次写入操作已完成。

实验案例:

本案例使用六台服务器模拟搭建MFS文件系统,

主机操作系统IP 地址主要软件
Master ServerCentOS 7.3 x86_64192.168.9.200moosefs-3.0.84-1.tar.gz
MetaLogger ServerCentOS 7.3 x86_64192.168.9.202moosefs-3.0.84-1.tar.gz
Chunk Server 1CentOS 7.3 x86_64192.168.9.209moosefs-3.0.84-1.tar.gz
Chunk Server 2CentOS 7.3 x86_64192.168.9.168moosefs-3.0.84-1.tar.gz
Chunk Server 3CentOS 7.3 x86_64192.168.9.246moosefs-3.0.84-1.tar.gz
ClientCentOS 7.3 x86_64192.168.9.247moosefs-3.0.84-1.tar.gz
fuse-2.9.7.tar.gz

案例实施 分别在六台服务器上关闭防火墙、设置地址解析记录、安装相关依赖包。
为了确保集群各节点能够正常通信,并顺利安装 MooseFS,需要在六台服务器上进行以下操作:

  1. 在所有服务器上关闭防火墙并设置 SELinux

  2. 关闭防火墙:

[root@mfsmaster ~]# systemctl stop firewalld
[root@mfsmaster ~]# systemctl disable firewalld
  1. 禁用 SELinux:

编辑 /etc/sysconfig/selinux 文件,将 SELINUX 设置为 disabled

[root@mfsmaster ~]# vi /etc/sysconfig/selinux

修改内容:

SELINUX=disabled
  1. 配置地址解析记录:

编辑 /etc/hosts 文件,添加以下内容:

[root@mfsmaster ~]# vi /etc/hosts

添加内容:

192.168.9.200 mfsmaster
192.168.9.202 metalogger
192.168.9.209 chunk1
192.168.9.168 chunk2
192.168.9.246 chunk3
192.168.9.247 client
  1. 安装相关依赖包:
[root@mfsmaster ~]# yum -y install gcc zlib-devel
  1. 重启系统:

在所有更改完成后,重启系统以使设置生效。

1. 搭建 Master Server

  1. 创建用户:
[root@mfsmaster ~]# useradd -s /sbin/nologin -M mfs
  1. 安装源码包:
    1. 解压安装包:
[root@mfsmaster ~]# tar zxvf moosefs-3.0.84-1.tar.gz
  2. 进入解压后的目录:
[root@mfsmaster ~]# cd moosefs-3.0.84/
  3. 配置并编译安装:
[root@mfsmaster moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmount --disable-mfschunkserver
[root@mfsmaster moosefs-3.0.84]# make && make install 
  1. 复制并修改 Master 配置文件:
    1. 进入配置文件目录:
[root@mfsmaster mfs]# cd /usr/local/mfs/etc/mfs
  2. 复制配置文件模板并修改:
[root@mfsmaster mfs]# cp mfsmaster.cfg.sample mfsmaster.cfg
[root@mfsmaster mfs]# cp mfsexports.cfg.sample mfsexports.cfg
[root@mfsmaster mfs]# cp mfstopology.cfg.sample mfstopology.cfg
  1. 初始化元数据文件:
    1. 进入元数据目录:
[root@mfsmaster mfs]# cd /usr/local/mfs/var/mfs
  2. 复制空的元数据文件:
[root@mfsmaster mfs]# cp metadata.mfs.empty metadata.mfs

至此,Master Server 的基础搭建工作完成。

4) 修改配置文件
以下内容了解即可,此实验并没有修改任何内容
在 MooseFS 的 Master Server 上,主要需要配置两个文件:mfsmaster.cfg(主配置文件)和 mfsexports.cfg(被挂载目录及权限配置文件)。

1. **mfsmaster.cfg** 文件常用参数解释:

  • RUNTIME OPTIONS:
    • WORKING_USER=mfs:运行 masterserver 的用户。
    • WORKING_GROUP=mfs:运行 masterserver 的组。
    • SYSLOG_IDENT=mfsmaster:在 syslog 中表示是 mfsmaster 产生的日志。
    • DATA_PATH=/usr/local/mfs/var/mfs:数据存放路径。
    • EXPORTS_FILENAME=/usr/local/mfs/etc/mfs/mfsexports.cfg:导出的文件配置路径。
    • TOPOLOGY_FILENAME=/usr/local/mfs/etc/mfs/mfstopology.cfg:拓扑配置文件路径。
    • MATOML_LISTEN_PORT=9419metalogger 监听的端口地址。
    • MATOCS_LISTEN_PORT=9420chunkserver 连接的端口地址。
    • MATOCL_LISTEN_PORT=9421:客户端挂接连接的端口地址。
  1. **mfsexports.cfg**** 文件参数格式**:
  • 每个条目分为三部分:
    1. 客户端的 IP 地址:例如 * 表示所有的 IP 地址。
    2. 被挂接的目录:例如 / 标识 MFS 根目录。
    3. 客户端的权限:例如 rw 表示读写权限。
  • 参数示例:
* / rw,alldirs,admin,maproot=0:0

以上是 Master Servermfsmaster.cfgmfsexports.cfg 配置文件的解释。根据需求,这些文件可以在生产环境中针对业务需求修改,以优化 MFS 性能。

5) 启动 Master Server

  1. 启动命令:
[root@mfsmaster mfs]# /usr/local/mfs/sbin/mfsmaster start

如果成功启动,会显示类似如下信息:

open files limit has been set to: 16384
working directory: /usr/local/mfs/var/mfs
...
mfsmaster daemon initialized properly
  1. 检查是否启动成功:
[root@mfsmaster mfs]# ps -ef | grep mfs

如果 mfsmaster 成功启动,你会看到相关的进程信息。
停止 Master Server 的命令为:

[root@mfsmaster mfs]# /usr/local/mfs/sbin/mfsmaster stop

以上是 Master Server 完整的配置与启动流程。

2.搭建 MetaLogger Server 详细步骤

MetaLogger Server 主要用于备份 Master Server 的变更日志文件 (changelog_ml.*.mfs),确保在 Master Server 出现问题时能够接替其工作。下面是搭建 MetaLogger Server 的详细步骤和每一条命令的输出:

1. 安装 Metalogger 服务

首先,我们需要添加一个系统用户来运行 Metalogger 服务,并解压安装包。

[root@metalogger ~]# useradd -s /sbin/nologin -M mfs
[root@metalogger ~]# tar zvxf moosefs-3.0.84-1.tar.gz
[root@metalogger ~]# cd moosefs-3.0.84/
解压安装包输出:
moosefs-3.0.84/
moosefs-3.0.84/configure
moosefs-3.0.84/Makefile.in
moosefs-3.0.84/src/
...

运行配置脚本,指定安装路径及配置选项:

[root@metalogger moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfschunkserver --disable-mfsmount
配置脚本输出:
checking for gcc... gcc
checking whether the C compiler works... yes
checking for a BSD-compatible install... /usr/bin/install -c
...
config.status: creating Makefile

编译并安装:

[root@metalogger moosefs-3.0.84]# make && make install
编译和安装输出:
Making all in src
make[1]: Entering directory '.../moosefs-3.0.84/src'
...
make[1]: Leaving directory '.../moosefs-3.0.84/src'
Making install in src
...
2. 复制 Metalogger 主配置文件

进入配置文件目录并复制示例配置文件:

[root@metalogger moosefs-3.0.84]# cd /usr/local/mfs/etc/mfs
[root@metalogger mfs]# ll
total 24
-rw-r--r--. 1 root root  4057 Feb 20 17:42 mfsexports.cfg.sample
-rw-r--r--. 1 root root  8597 Feb 20 17:42 mfsmaster.cfg.sample
-rw-r--r--. 1 root root  2175 Feb 20 17:42 mfsmetalogger.cfg.sample
-rw-r--r--. 1 root root  1052 Feb 20 17:42 mfstopology.cfg.sample

复制配置文件:

[root@metalogger mfs]# cp mfsmetalogger.cfg.sample mfsmetalogger.cfg
3. 修改 Metalogger 主配置文件,指定 Master Server 地址

编辑 mfsmetalogger.cfg 文件,找到以下行并修改为 Master Server 的 IP 地址:

[root@metalogger mfs]# vi mfsmetalogger.cfg

找到 MASTER_HOST 行并修改:

MASTER_HOST = 192.168.9.200  # 修改为Master Server的IP地址
4. 启动 Metalogger 服务

启动 Metalogger 服务:

[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger start
启动服务输出:
open files limit has been set to: 4096
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
initializing mfsmetalogger modules ...
mfsmetalogger daemon initialized properly

检查 Metalogger 服务状态:

[root@metalogger mfs]# ps -ef | grep mfs
检查服务状态输出:
root      5895     1  0 20:31 ?        00:00:00 /usr/local/mfs/sbin/mfsmetalogger start
root      5897  1111  0 20:32 pts/0    00:00:00 grep mfs
5. 停止 MetaLogger Server

要停止 MetaLogger Server,可以使用以下命令:

[root@metalogger mfs]# /usr/local/mfs/sbin/mfsmetalogger stop
总结

以上是完整的搭建 MetaLogger Server 的步骤和每一条命令的输出。从安装服务、复制配置文件、修改配置文件到启动和停止服务,确保每一步都正确执行以保证 Metalogger 正常运行。

3.搭建Chunk Server

搭建Chunk Server的过程涉及三个Chunk Server(chunk1、chunk2、chunk3),每台服务器的搭建步骤是相同的。以下是搭建步骤的详细说明:
统一配置

步骤1:安装Metalogger服务

  1. 添加mfs用户,不允许登录且不创建home目录:
[root@chunk1 ~]# useradd -s /sbin/nologin -M mfs
  1. 解压MooseFS安装包:
[root@chunk1 ~]# tar zvxf moosefs-3.0.84-1.tar.gz
  1. 进入解压后的目录:
[root@chunk1 ~]# cd moosefs-3.0.84/
  1. 配置MooseFS,禁用mfsmaster和mfsmount,指定安装路径和默认用户、组为mfs
[root@chunk1 moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfsmount
  1. 编译并安装MooseFS:
[root@chunk1 moosefs-3.0.84]# make && make install

步骤2:复制mfschunk配置文件

  1. 进入配置文件目录:
[root@chunk1 moosefs-3.0.84]# cd /usr/local/mfs/etc/mfs
  1. 查看配置文件列表:
[root@chunk1 mfs]# ll   total 12
-rw-r--r--. 1 root root 3491 Feb 20 17:42 mfschunkserver.cfg.sample
-rw-r--r--. 1 root root 1648 Feb 20 17:42 mfshdd.cfg.sample
-rw-r--r--. 1 root root 2175 Feb 20 17:42 mfsmetalogger.cfg.sample
  1. 复制mfschunkserver.cfg配置文件:
[root@chunk1 mfs]# cp mfschunkserver.cfg.sample mfschunkserver.cfg
  1. 复制mfshdd.cfg配置文件:
[root@chunk1 mfs]# cp mfshdd.cfg.sample mfshdd.cfg   ```

步骤3:修改mfschunk主配置文件,指定Master Server

  1. 使用vi编辑mfschunkserver.cfg文件:
[root@chunk1 mfs]# vi mfschunkserver.cfg
  1. 在配置文件中,找到以下部分并修改MASTER_HOST为Master Server的IP地址:
# MASTER CONNECTION OPTIONS #
# LABELS =
# BIND_HOST = *
MASTER_HOST = 192.168.9.200
# MASTER_PORT = 9420
# MASTER_TIMEOUT = 60
# MASTER_RECONNECTION_DELAY = 5
# AUTH_CODE = mfspassword

在这里,将MASTER_HOST设置为实际的Master Server的IP地址,例如192.168.9.200

步骤4:创建MFS分区

  1. 使用vi编辑mfshdd.cfg文件:
[root@chunk1 mfs]# vi mfshdd.cfg
  1. 在文件中添加一行/data,表示为MFS指定的分区路径:
# mount points of HDD drives
#
# /mnt/hd1
# /mnt/hd2
…
# /mnt/hd7
/data

在这里,/data是一个给MFS使用的分区,建议在生产环境中使用独立的分区或将磁盘挂载到此目录。

  1. 创建/data目录:
[root@chunk1 mfs]# mkdir /data
  1. 修改/data目录的所有者为mfs用户和组:
[root@chunk1 mfs]# chown -R mfs:mfs /data
  1. 启动Chunk Server:
[root@chunk1 mfs]# /usr/local/mfs/sbin/mfschunkserver start

启动时会显示以下输出:

open files limit has been set to: 16384
working directory: /usr/local/mfs/var/mfs
lockfile created and locked
setting glibc malloc arena max to 4
setting glibc malloc arena test to 4
initializing mfschunkserver modules ...
hdd space manager: path to scan: /data/
hdd space manager: start background hdd scanning (searching for available chunks)
main server module: listen on *:9422
no charts data file- initializing empty charts
mfschunkserver daemon initialized properly
  1. 检查Chunk Server进程是否正常运行:
[root@chunk1 mfs]# ps -ef | grep mfs

可能的输出示例:

mfs 5699 1 0 21:56 ? 00:00:00 /usr/local/mfs/sbin/mfschunkserver start
root 5725 1111 0 21:57 pts/0 00:00:00 grep mfs

停止Chunk Server

要停止Chunk Server,可以使用以下命令:

[root@chunk1 mfs]# /usr/local/mfs/sbin/mfschunkserver stop

以上步骤完整描述了在三台服务器上搭建Chunk Server的过程,请按步骤逐步执行。

4.MFS客户端

搭建和配置MFS客户端涉及多个步骤,包括安装FUSE、安装MFS客户端、挂载MFS文件系统等。以下是详细的步骤说明:

步骤1:安装FUSE

  1. 下载FUSE源码包:
[root@client ~]# wget https://github.com/libfuse/libfuse/releases/download/fuse-2.9.7/fuse-2.9.7.tar.gz
  1. 解压FUSE源码包:
[root@client ~]# tar zvxf fuse-2.9.7.tar.gz
  1. 进入解压后的目录:
[root@client ~]# cd fuse-2.9.7/
  1. 配置FUSE:
[root@client fuse-2.9.7]# ./configure
  1. 编译并安装FUSE:
[root@client fuse-2.9.7]# make && make install
  1. 设置环境变量,编辑/etc/profile文件:

bash [root@client ~]# vim /etc/profile
在文件末尾添加以下内容以设置PKG_CONFIG_PATH环境变量:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
  1. 重新加载环境变量:
[root@client ~]# source /etc/profile

步骤2:安装MFS客户端

  1. 添加mfs用户,不允许登录且不创建home目录:
[root@client ~]# useradd -s /sbin/nologin -M mfs
  1. 解压MooseFS安装包:
[root@client ~]# tar zvxf moosefs-3.0.84-1.tar.gz
  1. 进入解压后的目录:
[root@client ~]# cd moosefs-3.0.84/
  1. 配置MooseFS客户端,禁用mfsmaster和mfschunkserver,启用mfsmount,指定安装路径和默认用户、组为mfs
[root@client moosefs-3.0.84]# ./configure --prefix=/usr/local/mfs --with-default-user=mfs --with-default-group=mfs --disable-mfsmaster --disable-mfschunkserver --enable-mfsmount
  1. 编译并安装MooseFS客户端:
[root@client moosefs-3.0.84]# make && make install

步骤3:挂载MFS文件系统

  1. 创建挂载点目录:
[root@client ~]# mkdir /mnt/mfs
  1. 加载FUSE模块到内核:
[root@client ~]# modprobe fuse
  1. 挂载MFS文件系统,指定Master Server的IP地址:
[root@client ~]# /usr/local/mfs/bin/mfsmount /mnt/mfs -H 192.168.9.200

挂载成功后,会显示以下信息:

mfsmaster accepted connection with parameters: read-write,restricted_ip,admin ; root mapped to root:root
  1. 查看挂载情况:
[root@client ~]# df -Th

可能的输出示例:

Filesystem                Type      Size  Used Avail Use% Mounted on
/dev/mapper/cl-root       xfs        19G  5.3G   13G  29% /
devtmpfs                  devtmpfs  2.0G     0  2.0G   0% /dev
tmpfs                     tmpfs     2.0G  144k  2.0G   1% /dev/shm
tmpfs                     tmpfs     2.0G   27M  2.0G   2% /run
tmpfs                     tmpfs     2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/vda1                 xfs       1.1G  181M  883M  17% /boot
tmpfs                     tmpfs     398M  4.1k  398M   1% /run/user/42
tmpfs                     tmpfs     398M   37k  398M   1% /run/user/0
192.168.9.200:9421        fuse.mfs   65G   16G   50G  24% /mnt/mfs
  1. 如果需要卸载MFS文件系统,可以使用以下命令:
[root@client ~]# umount /mnt/mfs

步骤4:MFS常用操作

  1. 添加MFS命令路径到环境变量,编辑/etc/profile文件:
[root@client ~]# vim /etc/profile

在文件末尾添加以下内容:

export PATH=/usr/local/mfs/bin:$PATH
  1. 重新加载环境变量:
[root@client ~]# source /etc/profile
  1. 使用mfsgetgoal命令查看文件的复制份数,可以通过-r选项递归查询整个目录:
[root@client ~]# mfsgetgoal -r /mnt/mfs/

输出示例:

/mnt/mfs/:
directories with goal 2 : 1
  1. 使用mfssetgoal命令设置文件的复制份数:
[root@client ~]# mfssetgoal-r 3 /mnt/mfs/

修改后的复制份数可以通过以下命令验证:

[root@client ~]# mfsgetgoal -r /mnt/mfs/
  1. 测试在MFS中创建文件:
[root@client ~]# cd /mnt/mfs
[root@client mfs]# touch test
[root@client mfs]# mfsgetgoal test

输出示例:

test: 3

以上步骤完整描述了配置MFS客户端的过程,请按步骤逐步执行。

5. MFS 监控

  • MFS 监控简介:

    • Mfscgiserv 是一个用 Python 编写的 Web 服务器,监听端口为 9425。
    • 可在 Master Server 上通过命令 /usr/local/mfs/sbin/mfscgiserv 启动。
    • 用户可以通过浏览器访问 http://192.168.9.200:9425 进行全面监控。
      在这里插入图片描述
  • 监控内容:

    • Info 部分: 显示 MFS 的基本信息。
    • Servers 部分: 列出现有的 Chunk Server。
    • Disks 部分: 显示 Chunk Server 的硬盘信息。
    • Exports 部分: 列出可被挂载的目录。
    • Mounts 部分: 列出已经被挂载的目录。
    • Operations 部分: 显示当前正在执行的操作。
    • Resources 部分: 列出当前的存储信息。
    • Quitas 部分: 显示当前的配额信息。
    • Master charts 部分: 展示 Master Server 的操作情况(如读、写、删除等操作)。
    • Server charts 部分: 展示 Chunk Server 的操作情况、数据传输率及系统状态。

6. MFS 维护及灾难恢复

1) MFS 集群的启动与停止
  • 启动顺序:
    1. 启动 mfsmaster 进程。
    2. 启动所有的 mfschunkserver 进程。
    3. 启动 mfsmetalogger 进程(如果配置了 mfsmetalogger)。
    4. 在所有客户端挂载 MFS 文件系统。
  • 停止顺序:
    1. 在所有客户端卸载 MFS 文件系统。
    2. 使用 mfschunkserver stop 命令停止 Chunk Server 进程。
    3. 使用 mfsmetalogger stop 命令停止 Metalogger 进程。
    4. 使用 mfsmaster stop 命令停止 Master 进程。
2) MFS 灾难恢复
  • 主服务器故障处理:
    • 直接断电后,Master Server 可能无法启动。可以使用命令 /usr/local/mfs/sbin/mfsmaster-a 进行修复。
  • 元数据:
    • metadata.mfs: 主要元数据文件,当 mfsmaster 运行时会被命名为 metadata.mfs.back
    • changelog.*.mfs: 存储了过去 N 小时的文件变更日志(由 BACK_LOGS 参数决定,配置在 mfschunkserver.cfg 中)。
  • 从 Metalogger 恢复 Master:
    1. 安装一台新的 mfsmaster,使用与原 Master 相同的配置。
    2. 将 Metalogger 上的 /usr/local/mfs/var/mfs/ 目录下的文件复制到新的 mfsmaster 目录中。
scp root@192.168.9.202:/usr/local/mfs/var/mfs/* /usr/local/mfs/var/mfs/
  3. 使用 `mfsmetarestore` 命令合并元数据 `changelogs`。
/usr/local/mfs/sbin/mfsmaster-a
  • 注意事项:
    • 如果是全新安装的 Master,恢复数据后需要更改 metaloggerchunkserver 的配置文件中的 MASTER_HOST IP 地址,并重新挂载客户端。

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

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

相关文章

第六届机器学习、大数据与商务智能国际会议(MLBDBI 2024)

目录 主办单位 大会简介 会议组委会 征稿主题 参会方式 会议日程 重要信息 大会官网:www.mlbdbi.org 会议时间:2024年11月1-3日 会议地点:中国-杭州 收录检索:EI Compendex,Scopus 主办单位 大会简介 由…

SSD300模型总结

1、SSD网络结构 SSD以VGG16作为特征提取特征的基础模型,然后在VGG16的基础上增加了额外的卷积和池化操作来获得更多不同尺度的特征图用来检测不同大小的目标 本文主要是SSD300作为例子进行分析 整体主要分为3个部分 backbone网络:VGG16Extra网络&…

使用Mid360进行FAST_LIO建图,并使用Octomap在线转栅格地图

在之前的教程中,我们已经成功的安装了激光雷达驱动,成功复现了FAST_LIO,并使用OCtomap将点云地图转为栅格地图。 但是之前我们是建图生成了.PCD文件后,读取pcd文件进行离线octomap转栅格地图,这样在实际的场景中并不完…

Python实现贝叶斯优化器(Bayes_opt)优化卷积神经网络-双向长短时记忆循环神经网络分类模型(CNN-BiLSTM分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 随着深度学习技术的发展,卷积神经网络(Convolutional Neural Networks, CNNs&a…

Linux驱动基础 | sys文件系统

前言思考sys文件系统简介 sys文件系统是什么sys文件系统功能描述sysfs与objectsysfs接口使用 sysfs读写操作例子sysfs常用的接口sysfs常用的结构体代码实验总结 前言 上篇介绍了Linux驱动中procfs接口的创建,今天介绍sysfs接口的创建,本篇内核采用5.10版…

分支电路导体的尺寸确定和保护

本文旨在确定为分支电路负载供电的导体的尺寸和保护。 支路额定电流 NEC 第 210 条规定了分支电路导体尺寸和过流保护的一般要求。 允许额定电流或过流保护装置的设置确定了分支电路额定值 (210.18)。电路的安培额定值取决于保护导体的断路器或保险丝的额定值,而…

传统CV算法——图像基本操作与形态学操作

环境配置地址 图像显示 import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB imgcv2.imread(cat.jpg) img_gray cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) img_gray.shape cv2.imshow("img_gray", img_gray) cv2…

SprinBoot+Vue实验室考勤管理微信小程序的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue3.6 uniapp代码 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平…

d3dx9_43.dll文件缺失的具体处理方法,科学分析5种d3dx9_43.dll修复方法

在使用电脑的过程中,尤其是启动某些游戏或程序时,可能会弹出一条错误信息:“无法找到 d3dx9_43.dll”或者“d3dx9_43.dll文件缺失”。这通常表明你的系统中缺少重要的 DirectX 动态链接库(DLL)文件,阻碍了程序的正常运行。本文将提…

GEE数据集:欧美1950-2022年扩展春季指数(SI-x)

目录 高分辨率扩展春季指数数据库 简介 数据集说明 空间信息 代码 代码链接 APP链接 结果 引用 许可 网址推荐 0代码在线构建地图应用 机器学习 高分辨率扩展春季指数数据库 简介 扩展春季指数(SI-x)为研究春季开始的时间及其与气候变化的…

【加密社】如何根据.bat文件恢复密钥

加密社 看了这篇指南,你将了解助记词和密钥地址(qianbao)背后的基本原理。 以及,如何找回你的大饼密钥。 Not your key, not your coin 如果你不掌握自己加密货币钱包的私钥,那么你实际上并不能完全控制你的资产 在当今…

科研|基于SprinBoot+vue的科研管理系统(源码+数据库+文档)

科研管理系统 基于SprinBootvue的科研管理系统 一、前言 二、系统设计 三、系统功能设计 系统功能实现 后台模块实现 管理员功能实现 科研队伍功能实现 用户功能实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#x…

CTF Show逆向4reserve wp--mingyue

(本题难度较大,分析起来比较复杂,针对该题本文对其中比较重要的部分做了较详细的概述,有问题的地方,请指正) 第一步 查壳。本题为64位 第二步 各部分函数分析 (一) 分析main函数。 函数签名 int __…

达梦数据库事务管理

目录 一、事务简介 二、事务特性 1.原子性 2.一致性 3.隔离性 4.持久性 三、事务提交 1.自动提交模式 2.手动提交模式 3.隐式提交 四、事务回滚 1.自动回滚 2.手动回滚 3.回滚到保存点 4.语句级回滚 五、事务锁定 1.锁模式 (1)共享锁 …

WebGIS与WebGL是什么,两者之间的关系?

WebGL和 WebGlS 都是 web 技术领域的重要内容,特别是这几年webgis开发领域,和webgl打交道是必然的,常见的WebGL开发的基础上,比如二维的Leaflet、三维的Cesium也都是热门。 WebGL是一种基于 HTML5 Canvas 元素的 JavaScriptAPI&a…

sqli-labs靶场通关攻略(61-65)

Less-61 步骤一:查看数据库 ?id1)) and updatexml(1,concat(1,(select database())),1)-- 步骤二:查看表名 ?id1)) and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schemasecurity)),1)--…

【专题】2024年中国游戏出海洞察报告合集PDF分享(附原数据表)

原文链接:https://tecdat.cn/?p37570 2023 年全球游戏市场规模高达 6205.2 亿美元,且预计未来持续增长,这清晰地展示了该市场的巨大潜力和良好前景。 中国游戏在全球移动游戏市场的份额于 2023 年已达 37%,产业贡献超 30% 的市场…

手动添加jar包到本地仓库

依赖包不存在于任何的maven仓库中,所以要手工添加进本地仓库,过程如下: 将EasyModbusJava.jar包复制到maven目录的 bin目录下;执行cmd到该bin目录路径下执行以下指令 mvn install:install-file -DfileEasyModbusJava.jar -Dgroup…

C++笔记15•数据结构:二叉树之二叉搜索树•

二叉搜索树 1.二叉搜索树 概念: 二叉搜索树又称二叉排序树也叫二叉查找树,它可以是一棵空树。 二叉树具有以下性质: 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都…