目录

一、概述

NFS挂载原理

NFS工作原理

RPC与NFS通讯过程

二、NFS服务安装与启停

NFS服务安装

NFS服务启停

三、NFS服务配置文件

四、NFS文件共享配置文件

配置参数说明

五、命令解析

六、客户端访问

七、客户端挂载

实战案例

部署NFS文件存储及discuz论坛应用

一、挂载nfs共享目录

1、部署nfs服务器

2、部署nfs客户端

3、部署nfs客户端

4、测试结果

5、挂载nfs共享目录访问本地数据库

6、测试结果

二、配置网页discuz论坛应用

1、导入Discuz! X3.5 论坛系统的官方安装包压缩文件

2、进入数据库创建用户及赋予权限

3、网站访问图形化安装


一、概述

NFS是Network File System的缩写,默认监听2049端口号。它最大的功能就是可以通过网络,让不同的机器、不同的操作系统可以共享彼此的文件。

NFS服务器可以让PC将网络中的NFS服务器共享的目录挂载到本地端的文件系统中,而在本地端的系统中来看,那个远程主机的目录就好像是自己的一个磁盘分区一样,在使用上相当便利;NFS一般用来存储共享视频,图片等静态数据。

NFS分为服务端和客户端(C/S架构)。服务端提供共享目录或文件,客户端对服务端共享的目录或文件挂载后,就可以读取到服务端提供的文件或目录,在客户端看来就像访问本地一样。

RPC,远程过程调用协议。可以通过网络从远程主机程序上请求服务,而不需要了解底层网络技术。最重要的功能是远程连接、端口注册。使用UDP的111端口监听客户请求。

NFS挂载原理

NFS工作原理

NFS服务端和客户端之间通过随机选择端口来传输数据,NFS服务端利用RPC协议与客户端进行沟通决定使用的随机端口,然后利用这个端口来传输数据,使用的随机端口通常小于1024。RPC协议用来统一管理NFS的随机端口,其使用的端口默认为111。

RPC与NFS通讯过程

  1. 首先服务器端启动RPC服务,并开启111端口

  2. 服务器端启动NFS服务,并向RPC注册端口信息

  3. 客户端启动RPC(portmap服务),向服务端的RPC(portmap)服务请求服务端的NFS端口

  4. 服务端的RPC(portmap)服务反馈NFS端口信息给客户端。

  5. 客户端通过获取的NFS端口来建立和服务端的NFS连接并进行数据的传输。

二、NFS服务安装与启停

NFS服务安装

[root@nginx1 ~]# yum install -y nfs-utils

NFS服务启停

[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl stop nfs
[root@localhost ~]# systemctl enable --now nfs

三、NFS服务配置文件

[root@localhost ~]# cat /etc/nfs.conf
# 这是一个NFS服务器的配置文件
# This is a general configuration for the NFS daemons and tools
​
#[general]
# pipefs-directory=/var/lib/nfs/rpc_pipefs  # 设置RPC管道文件系统的目录
​
#[exportfs]
# debug=0  # 设置导出时的调试级别为0
​
#[gssd]
# verbosity=0  # 设置GSSAPI的日志级别为0
# rpc-verbosity=0  # 设置RPC日志级别为0
# use-memcache=0  # 是否使用内存缓存,这里设置为0,不使用
# use-machine-creds=1  # 是否使用机器凭证,这里设置为1,使用
# avoid-dns=1  # 是否避免DNS查找,这里设置为1,避免
# limit-to-legacy-enctypes=0  # 是否限制使用旧的对等体类型,这里设置为0,不限制
# context-timeout=0  # 设置上下文超时时间为0,即无超时时间
# rpc-timeout=5  # 设置RPC超时时间为5秒
# keytab-file=/etc/krb5.keytab  # 指定Kerberos的keytab文件路径
# cred-cache-directory=  # 凭证缓存目录为空,可能这个配置项被注释掉了或者不存在
# preferred-realm=  # 首选领域为空,可能是默认的领域值
​
#[lockd]
# port=0  # 锁管理器监听的端口为0,可能未配置或默认值
# udp-port=0  # UDP端口为0,可能未配置或默认值
​
#[mountd]
# debug=0  # 挂载时的调试级别为0
# manage-gids=n  # 是否管理组ID,这里设置为n,不管理
# descriptors=0  # 描述符数量为0,可能未配置或默认值
​
#[nfsdcltrack]
# debug=0  # NFS数据流跟踪的调试级别为0
# storagedir=/var/lib/nfs/nfsdcltrack  # 数据存储目录为空,可能这个配置项被注释掉了或者不存在
​
#[nfsd]
# debug=0  # NFS服务的调试级别为0
# threads=8  # 并发线程数为8,可以提供更高的性能
# host=  # 主机的IP地址或域名,这里为空,可能是默认值或未配置
​
​
#[statd]
# debug=0  # 设置statd服务的调试级别为0,即不进行调试
# port=0  # 设置statd服务的监听端口为0,可能表示默认值或未配置
# outgoing-port=0  # 设置statd服务发送数据的端口为0,可能表示默认值或未配置
# name=  # 设置statd服务的名称为空,可能表示默认值或未配置
# state-directory-path=/var/lib/nfs/statd  # 设置statd服务的状态目录路径为/var/lib/nfs/statd
# ha-callout=  # 设置高可用调用为空,可能表示未配置
# no-notify=0  # 设置是否禁用通知为0,即不禁用通知
​
#[sm-notify]
# debug=0  # 设置sm-notify服务的调试级别为0,即不进行调试
# force=0  # 设置是否强制发送通知为0,即不强制发送
# retry-time=900  # 设置发送通知请求的延迟时间为900秒
# outgoing-port=  # 设置发送数据的端口为空,可能表示默认值或未配置
# outgoing-addr=  # 设置发送数据的地址为空,可能表示默认值或未配置
# lift-grace=y  # 设置是否解除宽限期为y,即解除宽限期

四、NFS文件共享配置文件

[root@localhost ~]# cat /etc/exports
###默认是空的
配置参数说明
参数作用
ro只读
rw读写
root_squash当以root身份访问时,映射为NFS服务端的匿名用户
no_root_squash当以root身份访问时,映射为NFS服务端的root用户
all_squash无论使用什么账户访问,均映射为NFS服务端的匿名用户
sync同时将数据写入内存和硬盘中,保证不丢失数据
async先将数据写入内存,然后写入硬盘中,可能会造成数据丢失

五、命令解析

命令字选项作用
exportfs-d开启调试模式。有效的调试类型包括:all, auth, call, general 和 parse。在/etc/nfs.conf的[exportfs]部分中设置debug=也可以开启调试模式。
-a导出或取消导出所有目录。
-o指定一个与exports(5)文件中的导出选项列表相同的选项列表。
-i忽略/etc/exports文件和/etc/exports.d目录下的文件,仅使用命令行中给出的默认选项和选项。
-r重导出所有目录,将/var/lib/nfs/etab与/etc/exports和/etc/exports.d下的文件同步。该选项会删除来自/var/lib/nfs/etab中已从/etc/exports或/etc/exports.d下的文件的删除条目,并删除内核导出表中已不再有效的条目。
-u取消导出一个或多个目录。
-f如果/proc/fs/nfsd或/proc/fs/nfs被挂载,则将内核的导出表中的所有内容清除。活跃客户端的新的内核导出表条目是由rpc.mountd在它们下次发出NFS挂载请求时添加的。
-v显示详细信息。在导出或取消导出时,显示正在进行的事情。在显示当前导出列表时,还会显示导出选项列表。
-s显示适合/etc/exports的当前导出列表
shoumountshowmount [ -adehv ] [ --all ] [ --directories ] [ --exports ] [ --help ] [ --version ] [ host ]
-a列出客户端主机名或IP地址以及以主机目录格式表示的挂载目录。
-d仅列出由客户端挂载的目录。
-e显示NFS服务器的导出列表。(常用)
-h提供简短的帮助摘要。
-v报告程序的当前版本号。

六、客户端访问

#####查看nfs服务器192.168.115.128的共享目录
[root@localhost ~]# showmount -e 192.168.115.128

七、客户端挂载

####手动挂载##
[root@localhost ~]# mount 192.168.115.128:/nfsdir /mnt
###自动挂载,建议启动挂载NFS文件系统的主机前,先去查看NFS服务器是否能够正常提供服务!!##
[root@localhost ~]# vim /etc/fstab
192.168.115.128:/nfsdir /mnt    nfs4    defaults    0 0
##重载systemd
[root@localhost ~]# systemctl daemon-reload
###测试挂载####
[root@localhost ~]# mount -a
####查看挂载###
[root@localhost ~]# df -Th
文件系统                类型      容量  已用  可用 已用% 挂载点
devtmpfs                devtmpfs  475M     0  475M    0% /dev
tmpfs                   tmpfs     487M     0  487M    0% /dev/shm
tmpfs                   tmpfs     487M  7.6M  479M    2% /run
tmpfs                   tmpfs     487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs       116G  1.9G  114G    2% /
/dev/sda1               xfs       497M  131M  367M   27% /boot
tmpfs                   tmpfs      98M     0   98M    0% /run/user/0
192.168.115.111:/nfsdir nfs4      116G  1.9G  114G    2% /mnt
​

实战案例

部署NFS文件存储及discuz论坛应用

NAS(网络附加存储,是通过网络附加到当前主机文件系统之上的存储)

文件系统级别的存储,本身就是一个做好的文件系统,通过nfs接口在用户空间输出后,客户端基于内核模块与远程主机进行网络通信,把它转为好像本地文件系统一样来使用,这种存储服务是没办法对它再一次格式化创建文件系统块的

操作前准备

准备三台OpenEuler虚拟机(ip分别为192.168.58.180、192.168.58.182、192.168.58.183)

从官方网站下载Discuz! X3.5 论坛系统的官方安装包压缩文件

一、挂载nfs共享目录

1、部署nfs服务器
####192.168.58.180
##安装nfs-utils、mysql-server服务
[root@bogon ~]# yum install -y nfs-utils mysql-server
​
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# systemctl start nfs
##修改主机名
[root@bogon ~]# hostnamectl set-hostname nfs-server
[root@bogon ~]# bash
​
​
Welcome to 6.6.0-79.0.0.84.oe2403sp1.x86_64
​
System information as of time:  2025年 07月 09日 星期三 21:57:34 CST
​
System load:    0.06
Memory used:    7.8%
Swap used:      0%
Usage On:       5%
IP address:     192.168.58.180
Users online:   1
​
##修改配置文件,设置192.168.58.0/24网段能访问的目录位置
[root@nfs-server ~]# vim /etc/exports
/home/data  192.168.58.0/24(rw,sync,no_root_squash)
​
##创建共享目录
[root@nfs-server ~]# mkdir /home/data
​
##开启动态管理共享目录
[root@nfs-server ~]# exportfs -arv
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.58.0/24:/home/data".Assuming default behaviour ('no_subtree_check').NOTE: this default has changed since nfs-utils version 1.0.x
​
exporting 192.168.58.0/24:/home/data
​
​
[root@nfs-server ~]# cd /home/data/
##创建一个PHP网站页面
[root@nfs-server data]# vim index.html
<?php
phpinfo();
?>
​
[root@nfs-server data]# mv index.html index.php
2、部署nfs客户端
####192.168.58.182
##安装 nfs-utils、mysql-server
[root@bogon ~]#  yum install -y nfs-utils mysql-server
​
[root@bogon ~]# systemctl stop firewalld
​
##查看nfs服务器192.168.58.180的共享目录
[root@bogon ~]# showmount -e 192.168.58.180
Export list for 192.168.58.180:
/home/data 192.168.58.0/24
​
##手动挂载
[root@bogon ~]# mount 192.168.58.180:/home/data /mnt/
[root@bogon ~]# df -h
文件系统                    大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root   69G  3.1G   62G    5% /
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       1.7G     0  1.7G    0% /dev/shm
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
efivarfs                    256K   51K  201K   21% /sys/firmware/efi/efivars
tmpfs                       675M  9.1M  666M    2% /run
tmpfs                       1.7G     0  1.7G    0% /tmp
/dev/nvme0n1p2              974M  248M  659M   28% /boot
/dev/nvme0n1p1              599M  6.1M  593M    2% /boot/efi
/dev/mapper/openeuler-home  119G   40K  113G    1% /home
192.168.58.180:/home/data   119G     0  113G    0% /mnt
##在本机/mnt/目录下可以查看到nfs服务器的共享目录内容
​
##安装nginx服务,实现网站服务
[root@bogon ~]# yum install -y nginx
​
##重新挂载在nginx服务的目录下手动挂载
[root@bogon ~]# umount /mnt/
[root@bogon ~]# mount 192.168.58.180:/home/data /usr/share/nginx/html/
[root@bogon ~]# df -h
文件系统                    大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root   69G  3.1G   62G    5% /
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       1.7G     0  1.7G    0% /dev/shm
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
efivarfs                    256K   51K  201K   21% /sys/firmware/efi/efivars
tmpfs                       675M  9.1M  666M    2% /run
tmpfs                       1.7G     0  1.7G    0% /tmp
/dev/nvme0n1p2              974M  248M  659M   28% /boot
/dev/nvme0n1p1              599M  6.1M  593M    2% /boot/efi
/dev/mapper/openeuler-home  119G   40K  113G    1% /home
192.168.58.180:/home/data   119G     0  113G    0% /usr/share/nginx/html
​
​
[root@bogon ~]# systemctl start nginx
##修改主机名
[root@bogon ~]# hostnamectl set-hostname lnmp-web1
[root@bogon ~]# bash
​
​
Welcome to 6.6.0-79.0.0.84.oe2403sp1.x86_64
​
System information as of time:  2025年 07月 09日 星期三 22:05:24 CST
​
System load:    0.01
Memory used:    7.2%
Swap used:      0%
Usage On:       5%
IP address:     192.168.58.182
Users online:   1
​
##修改mysql数据库配置文件
[root@lnmp-web1 ~]# vim /etc/my.cnf
##在最后加上
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 密码验证方式
default_authentication_plugin=mysql_native_password
​
​
##安装php、php-mysqlnd、php-fpm
[root@lnmp-web1 ~]# yum install -y php php-mysqlnd php-fpm
​
[root@lnmp-web1 ~]# systemctl start php-fpm
[root@lnmp-web1 ~]# systemctl restart nginx
​
[root@lnmp-web1 php-fpm]# systemctl start mysqld
3、部署nfs客户端
####192.168.58.183
##安装 nfs-utils、mysql-server
[root@bogon ~]#  yum install -y nfs-utils mysql-server
​
[root@bogon ~]# systemctl stop firewalld
[root@bogon ~]# yum install -y nginx
​
##查看nfs服务器192.168.58.180的共享目录
[root@bogon ~]# showmount -e 192.168.58.180
Export list for 192.168.58.180:
/home/data 192.168.58.0/24
​
##手动挂载
[root@bogon ~]# mount 192.168.58.180:/home/data /usr/share/nginx/html/
[root@bogon ~]# df -h
文件系统                    大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root   69G  3.1G   62G    5% /
devtmpfs                    4.0M     0  4.0M    0% /dev
tmpfs                       1.7G     0  1.7G    0% /dev/shm
tmpfs                       4.0M     0  4.0M    0% /sys/fs/cgroup
efivarfs                    256K   51K  201K   21% /sys/firmware/efi/efivars
tmpfs                       675M  9.1M  666M    2% /run
tmpfs                       1.7G     0  1.7G    0% /tmp
/dev/nvme0n1p2              974M  248M  659M   28% /boot
/dev/nvme0n1p1              599M  6.1M  593M    2% /boot/efi
/dev/mapper/openeuler-home  119G   40K  113G    1% /home
192.168.58.180:/home/data   119G     0  113G    0% /usr/share/nginx/html
​
​
[root@bogon ~]# systemctl start nginx
##修改主机名
[root@bogon ~]# hostnamectl set-hostname lnmp-web2
[root@bogon ~]# bash
​
​
Welcome to 6.6.0-79.0.0.84.oe2403sp1.x86_64
​
System information as of time:  2025年 07月 09日 星期三 22:08:45 CST
​
System load:    0.00
Memory used:    7.2%
Swap used:      0%
Usage On:       5%
IP address:     192.168.58.183
Users online:   1
​
##修改mysql数据库配置文件
[root@lnmp-web2 ~]# vim /etc/my.cnf
##在最后加上
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
log-error=/var/log/mysql/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
# 密码验证方式
default_authentication_plugin=mysql_native_password
​
​
##安装php、php-mysqlnd、php-fpm
[root@lnmp-web2 ~]# yum install -y php php-mysqlnd php-fpm
​
[root@lnmp-web2 ~]# systemctl start php-fpm
[root@lnmp-web2 ~]# systemctl restart nginx
[root@lnmp-web2 ~]# systemctl start mysqld
4、测试结果

访问192.168.58.182和192.168.58.183显示

5、挂载nfs共享目录访问本地数据库

配置网页访问本地数据库文件

####192.168.58.180
##编辑新的网页文件
[root@nfs-server data]# vim /home/data/mysql_conn.php
<?php$link = mysqli_connect('localhost','root','');if ($link) {echo "connect successful";  }else{echo "connect faile";}
mysqli_close($link);
?>
6、测试结果

访问192.168.58.182/mysql_conn.php和192.168.58.183/mysql_conn.php显示

二、配置网页discuz论坛应用

1、导入Discuz! X3.5 论坛系统的官方安装包压缩文件
####192.168.58.180
##导入Discuz_X3.5_SC_UTF8_20240520.zip压缩包
[root@nfs-server ~]# cd /home/data
[root@nfs-server data]# ls
index.php  mysql_conn.php
[root@nfs-server data]# yum install -y lrzsz
[root@nfs-server data]# rz
rz waiting to receive.**[root@nfs-server data]# ls
Discuz_X3.5_SC_UTF8_20240520.zip  index.php  mysql_conn.php
​
##压缩包解压
[root@nfs-server data]# unzip Discuz_X3.5_SC_UTF8_20240520.zip
​
[root@nfs-server data]# ls
Discuz_X3.5_SC_UTF8_20240520.zip  index.php  LICENSE  mysql_conn.php  qqqun.png  readme  readme.html  upload  utility.html
[root@nfs-server data]# cd upload
[root@nfs-server upload]# ls
admin.php  archiver     crossdomain.xml  forum.php  index.php   misc.php    robots.txt  static     uc_server
api        config       data             group.php  install     plugin.php  search.php  template
api.php    connect.php  favicon.ico      home.php   member.php  portal.php  source      uc_client
​
##更改文件属主
[root@nfs-server upload]# chown apache -R ./
[root@nfs-server upload]# ls -l
总计 108
-rw-r--r--  1 apache root 2869 2024年 5月20日 admin.php
drwxr-xr-x 10 apache root 4096 2024年 5月20日 api
-rw-r--r--  1 apache root  727 2024年 5月20日 api.php
drwxr-xr-x  2 apache root 4096 2024年 5月20日 archiver
drwxr-xr-x  2 apache root 4096 2024年 5月20日 config
-rw-r--r--  1 apache root 1040 2024年 5月20日 connect.php
-rw-r--r--  1 apache root  106 2024年 5月20日 crossdomain.xml
drwxr-xr-x 12 apache root 4096 2024年 5月20日 data
-rw-r--r--  1 apache root 5558 2024年 5月20日 favicon.ico
-rw-r--r--  1 apache root 2357 2024年 5月20日 forum.php
-rw-r--r--  1 apache root  906 2024年 5月20日 group.php
-rw-r--r--  1 apache root 1325 2024年 5月20日 home.php
-rw-r--r--  1 apache root 6920 2024年 5月20日 index.php
drwxr-xr-x  5 apache root 4096 2024年 5月20日 install
-rw-r--r--  1 apache root  998 2024年 5月20日 member.php
-rw-r--r--  1 apache root 2410 2024年 5月20日 misc.php
-rw-r--r--  1 apache root 1790 2024年 5月20日 plugin.php
-rw-r--r--  1 apache root 1086 2024年 5月20日 portal.php
-rw-r--r--  1 apache root  639 2024年 5月20日 robots.txt
-rw-r--r--  1 apache root 1755 2024年 5月20日 search.php
drwxr-xr-x 10 apache root 4096 2024年 5月20日 source
drwxr-xr-x  7 apache root 4096 2024年 5月20日 static
drwxr-xr-x  3 apache root 4096 2024年 5月20日 template
drwxr-xr-x  8 apache root 4096 2024年 5月20日 uc_client
drwxr-xr-x 13 apache root 4096 2024年 5月20日 uc_server
2、进入数据库创建用户及赋予权限
####192.168.58.182
[root@lnmp-web1 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.42 Source distribution
​
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
​
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
mysql> create user ultrax@127.0.0.1 identified by '123.com';
Query OK, 0 rows affected (0.04 sec)
​
mysql> grant all on ultrax.* to ultrax@127.0.0.1;
Query OK, 0 rows affected (0.01 sec)
​
mysql> exit
Bye
​
​
####192.168.58.183
[root@lnmp-web2 ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 13
Server version: 8.0.42 Source distribution
​
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
​
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
​
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
​
mysql> create user ultrax@127.0.0.1 identified by '123.com';
Query OK, 0 rows affected (0.03 sec)
​
mysql> grant all on ultrax.* to ultrax@127.0.0.1;
Query OK, 0 rows affected (0.00 sec)
​
mysql> exit
Bye
​
​
3、网站访问图形化安装

网站访问192.168.58.183/upload

1、同意

2、取消

3、下一步

4、下一步

5、创建数据库

6、完成论坛安装

网站访问192.168.58.182/upload,访问失败,把192.168.58.183创建的库文件拷给192.168.58.182

####192.168.58.183
[root@lnmp-web2 ~]# mysqldump --databases ultrax > ultrax.sql
[root@lnmp-web2 ~]# scp ultrax.sql 192.168.58.182:/root
The authenticity of host '192.168.58.182 (192.168.58.182)' can't be established.
ED25519 key fingerprint is SHA256:MLxF58+VVC/Hxl5/cFvqToS1pVkPMVDruVAYkzCSOc4.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.58.182' (ED25519) to the list of known hosts.
​
Authorized users only. All activities may be monitored and reported.
root@192.168.58.182's password: 
ultrax.sql                                                          100% 2224KB  15.3MB/s   00:00   
####192.168.58.182
[root@lnmp-web1 ~]# ls
anaconda-ks.cfg  ultrax.sql
[root@lnmp-web1 ~]# mysql < ultrax.sql 

网站再次访问192.168.58.182/upload,访问成功

查看服务器生成了两个文件

####192.168.58.180
##网页安装后生成两个新文件
[root@nfs-server upload]# cd config
[root@nfs-server config]# ls
config_global_default.php  config_ucenter_default.php  index.htm
config_global.php          config_ucenter.php
​
​

看到感觉有帮助的朋友,劳烦动动发财的小手给博主点个赞

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

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

相关文章

JavaScript 对象创建:new 操作符全解析

引言 在 JavaScript 中&#xff0c;new 操作符是实现面向对象编程的​​核心机制​​之一。本文将从原理层面对 new 操作符进行深度剖析&#xff0c;探讨其工作机制、内部实现和实际应用场景。无论您是 JavaScript 初学者还是资深开发者&#xff0c;都能从本文获得以下知识和技…

Spring Boot + Vue.js 全栈开发:从前后端分离到高效部署,打造你的MVP利器!

文章目录一、为何选择 Spring Boot Vue.js&#xff1f;全栈开发的“黄金搭档”&#xff01;二、项目初始化与基础架构搭建2.1 后端&#xff1a;初始化 Spring Boot 项目2.2 前端&#xff1a;初始化 Vue.js 项目2.3 核心配置&#xff1a;打通前后端通信与跨域&#xff01;后端 …

容器技术技术入门与Docker环境部署

目录 一&#xff1a;Docker 概述 1&#xff1a;什么是Docker 2:Docker 的优势 3&#xff1a;Docker的应用场景 4&#xff1a;Docker核心概念 二&#xff1a;Docker 安装 三&#xff1a;Docker 镜像操作 1&#xff1a;获取镜像 2&#xff1a;查看镜像信息 3&#xff1a…

构建高效分布式系统:bRPC组合Channels与HTTP/H2访问指南

构建高效分布式系统&#xff1a;bRPC组合Channels与HTTP/H2访问指南 引言 在现代分布式系统中&#xff0c;下游服务访问的复杂性日益增加。bRPC通过组合Channels和HTTP/H2访问优化&#xff0c;提供了解决多层级RPC调用、负载均衡和协议兼容性问题的完整方案。本文将深入解析两大…

WSL创建Ubuntu子系统与 VS code 开发

文章目录一、打开Windows的虚拟化基础功能二、安装WSL和Ubuntu1. 安装 WSL2. 安装 Ubuntu三、 VScode一、打开Windows的虚拟化基础功能 控制面板-程序和功能-启动或关闭Windows功能&#xff0c;勾选适用于Linux的Windows子系统、虚拟机平台&#xff0c; 完成后根据提示重启电脑…

AlpineLinux二进制文件部署prometheus

在Alpine Linux上通过二进制文件部署Prometheus的步骤如下: 创建用户和组: groupadd prometheus useradd -g prometheus -m -s /sbin/nologin prometheus下载Prometheus二进制文件: 你可以从Prometheus的官方GitHub发布页面下载最新的二进制文件。例如,使用wget命令: wget…

IoT 小程序:如何破解设备互联的碎片化困局?

一、IoT 设备管理为何需要轻量化解决方案&#xff1f;随着物联网设备规模爆发式增长 —— 预计 2025 年全球连接数将达 270 亿台&#xff0c;传统 Native 应用开发模式的弊端日益凸显&#xff1a;某智能家居厂商开发 3 款主流设备 APP&#xff0c;需维护 iOS/Android/ 小程序 3…

Word 怎么让字变大、变粗、换颜色?

这是Word中最常用也最基础的操作之一。学会它&#xff0c;你的文档就会立刻变得重点突出&#xff0c;清晰易读。 记住一个核心前提&#xff1a;无论做什么格式修改&#xff0c;第一步永远是【先选中你要修改的文字】。 你可以把鼠标放在文字的开头&#xff0c;按住左键&#xf…

Ruby 安装 - Linux

Ruby 安装 - Linux 引言 Ruby 是一种广泛使用的高级编程语言,以其简洁、优雅和强大的功能而闻名。在 Linux 系统上安装 Ruby 是许多开发者的首要任务。本文将详细介绍如何在 Linux 系统上安装 Ruby,包括准备工作、安装过程和常见问题解决。 准备工作 在开始安装 Ruby 之前…

数组的应用示例

任意输入【0,9】范围内的整数&#xff0c;统计输入的每一种数字的个数并输出&#xff0c;输入-1结束程序 #include <stdio.h> int main(){const int number 10;int x;int i;int count[number];for ( i 0; i < number; i){count[i] 0;}printf("请输入0&#xf…

鸿蒙智行6月交付新车52747辆 单日交付量3651辆

近日&#xff0c;鸿蒙智行公布最新销量数据&#xff0c;6月单月全系交付52747辆&#xff0c;单日交付量3651辆&#xff0c;分别刷新鸿蒙智行单月、单日销量历史新高。仅用39个月实现全系累计交付80万辆&#xff0c;创下新势力汽车最快交付纪录。 尊界S800自5月30日上市以来&…

基于模糊控制及BP神经网络开关磁阻电机的matlab仿真

1.模型简介本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2015Rb&#xff09;软件。2.仿真算法:1&#xff09;采用转速、转矩双闭环控制算法&#xff1b;2&#xff09;外环是速度环&#xff0c;采用改进复合模糊控制&#xff0c;实现速度跟踪&#xff1b;3&#xff09;…

最新团购源码商城 虚拟商城系统源码 全开源

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 最新团购源码商城 虚拟商城系统源码 全开源 基于PHP开发的多功能在线商城系统&#xff0c;适合个人、小型企业或创业团队快速搭建自己的商品销售平台。系统界面美观&#xff0c;功能丰富…

Visual Studio 旧版软件下载教程

一、前言最近在开发过程中编译使用Cuda的版本较低&#xff0c;导致与最新的Visual Studio Community 2022 17.14.8不兼容。编译报错如下&#xff1a;[cmake] C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\yvals_core.h(902): e…

乐橙亮相2025广州建博会:用AI重新定义家庭安全与技术边界

在智能锁迈入AI新时代的关键节点&#xff0c;谁才是真正的技术引领者&#xff1f;2025年广州建博会&#xff0c;乐橙用一场“不炫技、重本质”的深度展演给出了答案。智哪儿在现场了解到&#xff0c;在A区3.1-28展位&#xff0c;乐橙围绕“智启新境 All in Intelligent”这一主…

快速搭建服务器,fetch请求从服务器获取数据

1.strapi首先strapi是一个api管理系统&#xff0c;可以让我们直接用网页的形式去定义自己的api&#xff0c;包括设置模型和权限等功能。首先直接在项目目录里面安装库。npx create-strapilatest server --quickstart这样就可以直接在项目目录创建一个连接数据库的服务器了。不用…

UGF开发记录_3_使用Python一键转换Excle表格为Txt文本

使用UnityGameFramework日常记录_3_配一键转换配置表 该系列只做记录 不做教程 所以文章简洁直接 会列出碰到的问题和解决方案 只适合UGF萌新 为了提高效率&#xff0c;我使用Python编写了一个脚本&#xff0c;实现了一键将Excel表格批量转换为带分隔符的Txt文件&#xff0c…

leetcode 3440. 重新安排会议得到最多空余时间 II 中等

给你一个整数 eventTime 表示一个活动的总时长&#xff0c;这个活动开始于 t 0 &#xff0c;结束于 t eventTime 。同时给你两个长度为 n 的整数数组 startTime 和 endTime 。它们表示这次活动中 n 个时间 没有重叠 的会议&#xff0c;其中第 i 个会议的时间为 [startTime[i]…

大型语言模型(LLM)的最新研究进展及相关新信息技术

大型语言模型(LLM)的最新研究进展及相关新信息技术 一、Google的Gemini 2.0系列 1. Gemini 2.0 Flash Thinking 核心技术:引入“推理时计算”(Inference-Time Computation)机制,支持模型在回答复杂问题前自主“思考”,显著提升数学和代码任务的准确性。多模态能力:支…

c++-友元函数和友元类

友元友元提供了一种突破封装的方式&#xff0c;有时提供了便利。但是友元会增加耦合度&#xff0c;破坏了封装&#xff0c;所以 友元不宜多用。 友元分为&#xff1a;友元函数和友元类友元函数问题现在尝试去在Date类里重载operator<<。无论怎样设置参数&#xff0c;只要…