目录

(一)基础配置

1.NFS服务安装

2.修改配置文件

3.重载配置文件

4.查看共享目录

5.客户端挂载

6.更换共享目录

7.基础实验

(二)布置lnmp平台

1.php

安装软件

检测

2.连接MySQL

测试

3.软件实施

软件安装配置

(三)iSCSI布置

1.识别磁盘

2.配置另一台

3.Windows连接

4.linux客户端连接

5.服务端测试


# NFS文件存储

关闭防火墙 上下文

(一)基础配置

1.NFS服务安装

 
[root@localhost ~]# yum install -y nfs-utils#服务端客户端都要装
 #查看是否启动[root@nfs-server ~]# netstat -anptul | grep 2049tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   tcp6       0      0 :::2049                 :::*                    LISTEN      -                   [root@nfs-server ~]# netstat -anptul | grep 111tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      17838/rpcbind       tcp        0      0 192.168.157.168:39998   111.13.18.31:443        TIME_WAIT   -                   tcp6       0      0 :::111                  :::*                    LISTEN      17838/rpcbind       udp        0      0 0.0.0.0:111             0.0.0.0:*                           17838/rpcbind       udp6       0      0 :::111                  :::*                                17838/rpcbind    

2.修改配置文件

 [root@nfs-server ~]# vim /etc/exports###默认是空的/data 192.168.157.0/24(rw,sync,no_root_squash)共享的目录 ip   权限,写入方式,降级​重载配置文件 重启  或 exportfs -arv

3.重载配置文件

 #重启  或 exportfs -arv[root@nfs-server ~]# mkdir /data[root@nfs-server ~]# exportfs -arvexportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.157.0/24:/data".Assuming default behaviour ('no_subtree_check').NOTE: this default has changed since nfs-utils version 1.0.x​exporting 192.168.157.0/24:/data

4.查看共享目录

 #在本地[root@nfs-server ~]# showmount -eExport list for nfs-server:/data 192.168.157.0/24#不在本地 需要指向服务器ip[root@web1 ~]# showmount -e 192.168.157.168Export list for 192.168.157.168:/data 192.168.157.0/24

5.客户端挂载

 
#客户端挂载[root@web1 ~]# mount 192.168.157.168:/data /mnt/[root@web1 ~]# df -Th文件系统                   类型      大小  已用  可用 已用% 挂载点/dev/mapper/openeuler-root ext4       69G  2.1G   63G    4% /devtmpfs                   devtmpfs  4.0M     0  4.0M    0% /devtmpfs                      tmpfs     713M     0  713M    0% /dev/shmtmpfs                      tmpfs     4.0M     0  4.0M    0% /sys/fs/cgrouptmpfs                      tmpfs     285M  5.5M  280M    2% /runtmpfs                      tmpfs     713M     0  713M    0% /tmp/dev/sda2                  ext4      974M  174M  733M   20% /boot/dev/mapper/openeuler-home ext4      125G   24K  119G    1% /home192.168.157.168:/data      nfs4       69G  2.1G   63G    4% /mnt

6.更换共享目录

#需要先将服务端 挂载卸掉
[root@web1 ~]# umount /mnt
[root@web1 ~]# df -Th
文件系统                   类型      大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root ext4       69G  2.1G   63G    4% /
devtmpfs                   devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                      tmpfs     713M     0  713M    0% /dev/shm
tmpfs                      tmpfs     4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                      tmpfs     285M  5.5M  280M    2% /run
tmpfs                      tmpfs     713M     0  713M    0% /tmp
/dev/sda2                  ext4      974M  174M  733M   20% /boot
/dev/mapper/openeuler-home ext4      125G   24K  119G    1% /home
#在/home 下新建共享目录
[root@nfs-server ~]# cd /home
[root@nfs-server home]# mkdir data
[root@nfs-server home]# ls
data  lost+found
#修改配置文件
[root@nfs-server home]# vim /etc/exports
/home/data 192.168.157.0/24(rw,sync,no_root_squash)
#重载配置文件
[root@nfs-server home]# exportfs -arv
exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "192.168.157.0/24:/home/data".Assuming default behaviour ('no_subtree_check').NOTE: this default has changed since nfs-utils version 1.0.xexporting 192.168.157.0/24:/home/data
#客户端重新挂载
[root@web1 home]# mount 192.168.157.168:/home/data /mnt/
[root@web1 home]# df -Th
文件系统                   类型      大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root ext4       69G  2.1G   63G    4% /
devtmpfs                   devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                      tmpfs     713M     0  713M    0% /dev/shm
tmpfs                      tmpfs     4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                      tmpfs     285M  5.5M  280M    2% /run
tmpfs                      tmpfs     713M     0  713M    0% /tmp
/dev/sda2                  ext4      974M  174M  733M   20% /boot
/dev/mapper/openeuler-home ext4      125G   24K  119G    1% /home
192.168.157.168:/home/data nfs4      125G     0  119G    0% /mnt

7.基础实验

让两台web服务器访问相同内容

#安装nginx
[root@web1 home]# yum install -y nginx
#把共享目录 挂载到/usr/share/nginx/html/
[root@web1 html]# mount 192.168.157.168:/home/data /usr/share/nginx/html/
[root@web1 html]# !d
df -Th
文件系统                   类型      大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root ext4       69G  2.1G   63G    4% /
devtmpfs                   devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                      tmpfs     713M     0  713M    0% /dev/shm
tmpfs                      tmpfs     4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                      tmpfs     285M  5.5M  280M    2% /run
tmpfs                      tmpfs     713M     0  713M    0% /tmp
/dev/sda2                  ext4      974M  174M  733M   20% /boot
/dev/mapper/openeuler-home ext4      125G   24K  119G    1% /home
192.168.157.168:/home/data nfs4      125G     0  119G    0% /usr/share/nginx/html
#启动nginx
[root@web1 html]# systemctl start nginx
#nfs服务端
[root@nfs-server home]# ls
data  lost+found
[root@nfs-server home]# cd data
[root@nfs-server data]# vim index.html
cc2505
#web2配置
[root@web2 ~]# showmount -e 192.168.157.168
Export list for 192.168.157.168:
/home/data 192.168.157.0/24
[root@web2 ~]# mount 192.168.157.168:/home/data /usr/share/nginx/html/
[root@web2 ~]# systemctl start nginx

测试

web1

web2

(二)布置lnmp平台

1.php

安装软件
 #正常情况应安装以下软件 在上述操作已安装nginx mysql-server[root@web1 html]# yum install -y nginx mysql-server php php-mysqlnd php-fpm###[root@web1 html]# yum install -y php php-mysqlnd php-fpmphp语言 php-mysqlnd连接数据库驱动,php对数据库进行操作  php-fpm 让nginx识别php[root@web1 html]# rpm -ql php-fpm#/etc/php-fpm.d#/etc/php-fpm.d/www.conf#由于openEuler关于php的配置已经配置好 所有不用改配置文件#php-fpm 和 nginx 在同一主机

 [root@web1 conf.d]# systemctl start php-fpm[root@web1 conf.d]# systemctl restart nginx[root@nfs-server data]# vim index.html<?phpphpinfo();?>root@nfs-server data]# mv index.html index.php[root@nfs-server data]# lsindex.php[root@web2 ~]# yum install -y php php-mysqlnd php-fpm[root@web2 ~]# systemctl start php-fpm[root@web2 ~]# systemctl restart nginx
检测

 
**php-fpm 和 nginx 不在同一主机** 拓展[root@web1 php-fpm.d]# vim www.conf listen = /run/php-fpm/www.sock#改为listen = 192.168.157.169:9000修改listen.allowed_clients = 127.0.0.1

 ​2.连接MySQL

 
#nfs 添加#nfs web1 web2 都 启动mysqlroot@nfs-server data]# lsindex.php  mysql_conn.php[root@nfs-server data]# vim mysql_conn.php <?php$link = mysqli_connect('localhost', 'root', '');if ($link) {echo "connect successful";} else {echo "connect fail ";}mysqli_close($link);?>
测试

3.软件实施

Discuz! 安装向导

#访问http://192.168.157.169/upload
#进入安装界面
#发现权限不够 缺少依赖
#查看php-fpm
[root@web1 php-fpm.d]# ps aux | grep php-fpm
root       45460  0.0  1.9 195744 28644 ?        Ss   20:42   0:00 php-fpm: master process (/etc/php-fpm.conf)
apache     45461  0.0  1.3 196296 19612 ?        S    20:42   0:00 php-fpm: pool www
apache     45462  0.0  1.3 196296 20300 ?        S    20:42   0:00 php-fpm: pool www
apache     45463  0.0  1.6 270292 24568 ?        S    20:42   0:00 php-fpm: pool www
apache     45464  0.0  1.2 196296 18816 ?        S    20:42   0:00 php-fpm: pool www
apache     45465  0.0  1.6 270292 23604 ?        S    20:42   0:00 php-fpm: pool www
apache     68624  0.0  0.9 196296 14472 ?        S    21:52   0:00 php-fpm: pool www
root       69603  0.0  0.5  21988  8104 pts/0    S+   21:55   0:00 grep --color=auto php-fpm
#查看nginx
[root@web1 php-fpm.d]# ps aux | grep nginx
root       62712  0.0  0.2  30404  3256 ?        Ss   21:34   0:00 nginx: master process /usr/sbin/nginx
nginx      62713  0.0  0.4  31416  7228 ?        S    21:34   0:00 nginx: worker process
nginx      62714  0.0  0.4  31416  7152 ?        S    21:34   0:00 nginx: worker process
root       70146  0.0  0.5  21988  7920 pts/0    S+   21:57   0:00 grep --color=auto nginx
#选择用哪个账户
#测试之后发现用apache账户
#在nfs上安装 php-fpm 但是不用启动
[root@nfs-server data]# yum install -y php-fpm
[root@nfs-server data]# cd upload/
#更改属主
[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
#然后就可以安装了
软件安装配置
 #web1上 新建 给软件连接用的账户[root@web1 php-fpm.d]# mysqlmysql> create user ultrax@127.0.0.1 identified by '123.com';Query OK, 0 rows affected (0.01 sec)mysql> grant all on ultrax.* to ultrax@127.0.0.1;Query OK, 0 rows affected (0.01 sec)#web2上 新建 给软件连接用的账户[root@web2 php-fpm.d]# mysqlmysql> create user ultrax@127.0.0.1 identified by '123.com';Query OK, 0 rows affected (0.01 sec)mysql> grant all on ultrax.* to ultrax@127.0.0.1;Query OK, 0 rows affected (0.01 sec)#安装软件

 #WEB2[root@web1 ~]# mysqldump --databases ultrax > ultrax.sql[root@web1 ~]# scp ultrax.sql 192.168.157.170:/rootThe authenticity of host '192.168.157.170 (192.168.157.170)' can't be established.ED25519 key fingerprint is SHA256:1+6pwJp4PGRy3pTuY4/lM2+SKaA3eNsCqwvp/0Dd9BQ.This key is not known by any other names.Are you sure you want to continue connecting (yes/no/[fingerprint])? yesWarning: Permanently added '192.168.157.170' (ED25519) to the list of known hosts.​Authorized users only. All activities may be monitored and reported.root@192.168.157.170's password: Permission denied, please try again.root@192.168.157.170's password: ultrax.sql #[root@web2 ~]# mysql < ultrax.sql 

(三)iSCSI布置

1.识别磁盘

#添加两块磁盘
#热识别
[root@target ~]# for i in `ls /sys/class/scsi_host`;do echo "- - -" >/sys/class/scsi_host/$i/scan;done
[root@target ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  200G  0 disk 
├─sda1               8:1    0    1M  0 part 
├─sda2               8:2    0    1G  0 part /boot
└─sda3               8:3    0  199G  0 part ├─openeuler-root 253:0    0   70G  0 lvm  /├─openeuler-swap 253:1    0    2G  0 lvm  [SWAP]└─openeuler-home 253:2    0  127G  0 lvm  /home
sdb                  8:16   0   20G  0 disk 
sdc                  8:32   0   20G  0 disk 
sr0                 11:0    1 1024M  0 rom  
#安装
[root@target ~]# yum install -y scsi-target-utils
#新建target
[root@target ~]# tgtadm -L iscsi -o new -m target -t 1 -T iqn.20250710.com.jx.www:sda 
#查看
[root@target ~]# tgtadm -o show -m target
Target 1: iqn.20250710.com.jx.www:sdaSystem information:Driver: iscsiState: readyI_T nexus information:LUN information:LUN: 0Type: controllerSCSI ID: IET     00010000SCSI SN: beaf10Size: 0 MB, Block size: 1Online: YesRemovable media: NoPrevent removal: NoReadonly: NoSWP: NoThin-provisioning: NoBacking store type: nullBacking store path: NoneBacking store flags: Account information:
ACL information:
#查看
[root@target ~]# tgt-admin -s
Target 1: iqn.20250710.com.jx.www:sdaSystem information:Driver: iscsiState: readyI_T nexus information:LUN information:LUN: 0Type: controllerSCSI ID: IET     00010000SCSI SN: beaf10Size: 0 MB, Block size: 1Online: YesRemovable media: NoPrevent removal: NoReadonly: NoSWP: NoThin-provisioning: NoBacking store type: nullBacking store path: NoneBacking store flags: Account information:ACL information:
#生成lun
[root@target ~]# tgtadm -o new -m logicalunit -t 1 -l 1 -b /dev/sda
#删除lun
[root@target ~]# tgtadm -o delete -m logicalunit -t 1 -l 1 
#新建
#先建target 在建lun
[root@target ~]#tgtadm -L iscsi -o new -m target -t 1 -T iqn.20250710.com.jx.www:sda 
[root@target ~]# tgtadm -o new -m logicalunit -t 1 -l 1 -b /dev/sda
#查看
[root@target ~]# tgt-admin -s
Target 1: iqn.20250710.com.jx.www:sdaSystem information:Driver: iscsiState: readyI_T nexus information:LUN information:LUN: 0Type: controllerSCSI ID: IET     00010000SCSI SN: beaf10Size: 0 MB, Block size: 1Online: YesRemovable media: NoPrevent removal: NoReadonly: NoSWP: NoThin-provisioning: NoBacking store type: nullBacking store path: NoneBacking store flags: LUN: 1Type: diskSCSI ID: IET     00010001SCSI SN: beaf11Size: 214748 MB, Block size: 512Online: YesRemovable media: NoPrevent removal: NoReadonly: NoSWP: NoThin-provisioning: NoBacking store type: rdwrBacking store path: /dev/sdaBacking store flags: Account information:ACL information:
##配置访问ACL
[root@target ~]# tgtadm -L iscsi -m target -o bind -t 1 -I ALL
##保存配置
[root@target ~]# tgt-admin --dump >> /etc/tgt/targets.conf

   

2.配置另一台

#新建target
[root@target ~]# tgtadm -L iscsi -o new -m target -t 2 -T iqn.20250710.com.jx.www:sdb
#新建lun
[root@target ~]# tgtadm -o new -m logicalunit -t 2 -l 1 -b /dev/sdb
##配置访问ACL
[root@target ~]# tgtadm -L iscsi -m target -o bind -t 2 -I ALL
##保存配置
[root@target ~]# tgt-admin --dump > /etc/tgt/targets.conf

3.Windows连接

打开iSCSI程序

计算机 右键管理 磁盘管理 重新格式化

4.linux客户端连接
#先安装
[root@web1 ~]# yum install -y scsi-initiator-utils
[root@web1 ~]# systemctl start iscsid
#识别
[root@web1 ~]#  iscsiadm -m discoverydb -t sendtargets -p 192.168.157.168:3260 -D
192.168.157.168:3260,1 iqn.20250710.com.jx.www:sda
192.168.157.168:3260,1 iqn.20250710.com.jx.www:sdb
[root@web1 ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  200G  0 disk 
├─sda1               8:1    0    1M  0 part 
├─sda2               8:2    0    1G  0 part /boot
└─sda3               8:3    0  199G  0 part ├─openeuler-root 253:0    0   70G  0 lvm  /├─openeuler-swap 253:1    0    2G  0 lvm  [SWAP]└─openeuler-home 253:2    0  127G  0 lvm  /home
sdb                  8:16   0   20G  0 disk 
sr0                 11:0    1 1024M  0 rom  
#分区
[root@web1 ~]# fdisk /dev/sdb欢迎使用 fdisk (util-linux 2.39.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。设备不包含可识别的分区表。
Created a new DOS (MBR) disklabel with disk identifier 0x224616b8.命令(输入 m 获取帮助):n
分区类型p   主分区 (0个主分区,0个扩展分区,4空闲)e   扩展分区 (逻辑分区容器)
选择 (默认 p):将使用默认回应 p。
分区号 (1-4, 默认  1): 
第一个扇区 (2048-41943039, 默认 2048): 
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-41943039, 默认 41943039): 创建了一个新分区 1,类型为“Linux”,大小为 20 GiB。命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
#格式化
[root@web1 ~]# mkfs.ext4 /dev/sdb1
mke2fs 1.47.0 (5-Feb-2023)
创建含有 5242624 个块(每块 4k)和 1310720 个 inode 的文件系统
文件系统 UUID:cd9b36d3-1849-4e5f-b754-9df79dc68d71
超级块的备份存储于下列块:32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000正在分配组表:完成                            
正在写入 inode表:完成                            
创建日志(32768 个块):完成
写入超级块和文件系统账户统计信息:已完成 
#挂载
[root@web1 ~]# mount /dev/sddb1 /mnt/
mount: /mnt: 特殊设备 /dev/sddb1 不存在.dmesg(1) may have more information after failed mount system call.
[root@web1 ~]# mount /dev/sdb1 /mnt/
[root@web1 ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  200G  0 disk 
├─sda1               8:1    0    1M  0 part 
├─sda2               8:2    0    1G  0 part /boot
└─sda3               8:3    0  199G  0 part ├─openeuler-root 253:0    0   70G  0 lvm  /├─openeuler-swap 253:1    0    2G  0 lvm  [SWAP]└─openeuler-home 253:2    0  127G  0 lvm  /home
sdb                  8:16   0   20G  0 disk 
└─sdb1               8:17   0   20G  0 part /mnt
sr0                 11:0    1 1024M  0 rom   
5.服务端测试
分区
[root@target ~]# fdisk /dev/sda欢迎使用 fdisk (util-linux 2.39.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。该磁盘目前正在使用 - 不建议您重新分区。
推荐您卸载此磁盘上所有的文件系统,并关闭(swapoff)上面的交换分区。命令(输入 m 获取帮助):q
#这个被Windows挂载 不能再用了
#查看另一块 挂载在Linux上的  发现已经分区
[root@target ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.39.1)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。命令(输入 m 获取帮助):p
Disk /dev/sdb:20 GiB,21474836480 字节,41943040 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x224616b8设备       启动  起点     末尾     扇区 大小 Id 类型
/dev/sdb1        2048 41943039 41940992  20G 83 Linux命令(输入 m 获取帮助):
#直接挂载
root@target ~]# mount /dev/sdb1 /mnt/
[root@target ~]# lsblk
NAME               MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda                  8:0    0  200G  0 disk 
├─sda1               8:1    0    1M  0 part 
├─sda2               8:2    0    1G  0 part /boot
└─sda3               8:3    0  199G  0 part ├─openeuler-root 253:0    0   70G  0 lvm  /├─openeuler-swap 253:1    0    2G  0 lvm  [SWAP]└─openeuler-home 253:2    0  127G  0 lvm  /home
sdb                  8:16   0   20G  0 disk 
└─sdb1               8:17   0   20G  0 part /mnt
sdc                  8:32   0   20G  0 disk 
sr0                 11:0    1 1024M  0 rom
#linux 不能与Windows 共用一块 
#两个linux可以同时挂载一个,但是不能实时同步 需卸载重挂

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

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

相关文章

Redis深度解析:从缓存原理到高并发实战

第一部分&#xff1a;Redis核心概念与架构设计1.1 Redis本质解析Redis&#xff08;Remote Dictionary Server&#xff09;作为开源的内存数据结构存储系统&#xff0c;其核心价值在于&#xff1a;内存优先架构&#xff1a;数据主要存储在内存中&#xff0c;读写性能达到10万 QP…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博类别信息爬取

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解架构搭建 视频在线地址&#xff1a; 2026…

GD32/STM32嵌入CMSIS-DSP的库(基于Keil)

当你要用到三角函数、开方、矩阵运算等复杂的数学运算时&#xff0c;可以选择用C库的math.h里面的函数&#xff0c;如果要求速度快的话就得用CMSIS-DSP库里面的函数了&#xff0c;因为CMSIS-DSP库充分运用了CM4内核的浮点运算单元&#xff08;若有&#xff09;和DSP相关的指令&…

页面登录阻止浏览器提醒是否保存密码

一、原因 使用input的type"password"类型&#xff0c;浏览器会提醒是否记住密码。 二、解决 取消type"password" 三、实现输入密码*代替 通过input输入框&#xff0c;监听输入值&#xff0c;进行替换成*符号&#xff0c;避免使用input的type"password…

【iOS】dyld加载流程——应用程序的加载

目录 前言 编译过程与动静态库 编译过程 动静态库 dyld &#x1f4cc; 什么是 dyld&#xff1f; dyld_shared_cache: dyld加载流程 _dyld_start dyldbootstrap::start dyld::main() 配置环境变量 共享缓存 主程序的初始化 插入动态库 link主程序 link动态库 弱…

从零开始,手把手教你本地部署Stable Diffusion AI绘画(Win最新版)

本号之前有发过一篇win平台的教程&#xff0c;由于是去年10月发布的&#xff0c;而Al绘画技术发展很快&#xff0c;那篇教程已经有些不适用了&#xff0c;有些同学执行到第二步就出错了。 应广大同学的期望&#xff0c;我更新一版新版详细教程。 一、前言 1.为什么要本地部署…

day21 力扣669. 修剪二叉搜索树 力扣108.将有序数组转换为二叉搜索树 力扣538.把二叉搜索树转换为累加树

修剪二叉搜索树 给你二叉搜索树的根节点 root &#xff0c;同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树&#xff0c;使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即&#xff0c;如果没有被移除&#xff0c;原有的父代子代关…

《设计模式之禅》笔记摘录 - 7.中介者模式

中介者模式的定义中介者模式的定义为&#xff1a;Define an object that encapsulates how a set of objects interact.Mediator promotes loose coupling by keeping objects from referring to each other explicitly, and it lets you vary their interaction independently…

Flutter:上传图片,选择相机或相册:wechat_assets_picker

图片选择功能&#xff1a;可选单张&#xff0c;或多张。 1、showModalBottomSheet&#xff08;选择相册/相机&#xff09; 2、WechatImagePicker&#xff08;选取图片&#xff09; 3、CompressMediaFile&#xff08;图片压缩&#xff09;1、ActionSheetUtilimport package:duca…

pytest--0

1 pytest 使用方式 pytest测试框架-- 基本功能使用详解 2 pytest-mock常用方式 pytest–1–pytest-mock常用的方法 3

multiprocessing.Pool 中的 pickle 详解

前言&#xff1a; 在 Python 的 multiprocessing.Pool 中&#xff0c;任务和数据需要通过序列化&#xff08;pickle&#xff09;传递给子进程。pickle 是 Python 的内置序列化模块&#xff0c;用于将 Python 对象转换为字节流&#xff0c;以便在进程间通信时传递。然而&#xf…

Java集合框架体系详解:List/Set/Map接口对比与核心实现原理

一、集合框架核心接口对比 1.1 List/Set/Map接口特性接口类型特性描述典型实现List有序可重复&#xff0c;支持索引访问ArrayList/LinkedListSet无序不可重复&#xff0c;基于哈希表或树实现HashSet/TreeSetMap键值对存储&#xff0c;键唯一值可重复HashMap/TreeMap核心差异&am…

LeafletJS 进阶:GeoJSON 与动态数据可视化

引言 LeafletJS 作为一个轻量、灵活的 JavaScript 地图库&#xff0c;以其对 GeoJSON 数据格式的强大支持而闻名。GeoJSON 是一种基于 JSON 的地理数据格式&#xff0c;能够表示点&#xff08;Point&#xff09;、线&#xff08;LineString&#xff09;、多边形&#xff08;Po…

【STM32实践篇】:F407 时钟系统

文章目录1. 时钟与启动2. CubeMX 时钟树2.1 时钟源2.2 PLL 锁相环2.3 时钟分发与选择2.4 频率限制1. 时钟与启动 复位默认时钟&#xff1a;系统复位后&#xff0c;CPU 时钟默认由 16MHz 内部 RC 振荡器&#xff08;HSI&#xff09;提供&#xff0c;该 RC 振荡器经工厂校准&…

纯前端html实现图片坐标与尺寸(XY坐标及宽高)获取

纯前端html实现图片坐标与尺寸&#xff08;XY坐标及宽高&#xff09;获取。用于证书图片或pdf打印的坐标测定。 <!DOCTYPE html> <html lang"zh-CN"> <head> <meta charset"UTF-8"> <title>纯html前端实现图片坐标与尺寸&am…

飞睿UWB超宽带定位测距技术,数字钥匙重塑智能生活,高精度厘米级定位无感解锁

最近&#xff0c;数字钥匙领域动作频频&#xff0c;科技巨头与车企正掀起一波创新浪潮。小米15S Pro搭载恩智浦UWB芯片&#xff0c;用户靠近闸机即可无感通行深圳云巴一号线&#xff0c;轻触小米YU7车门自动解锁&#xff0c;实现手机-汽车-公共交通的无缝数字钥匙生态。在智能家…

基于springboot+vue+mysql平台的医疗病历交互系统(源码+论文)

一、开发环境 相关技术介绍 B/S模式分析 C/S模式&#xff1a;主要由客户应用程序(Client)、服务器管理程序(Server)和中间件(middleware)三个部件组成。客户应用程序是系统中用户与数据组件交互。服务器程序负责系统资源&#xff0c;如管理信息数据库的有效管理。中间件负责连…

arm架构,arm内核,处理器之间的关系

一、情景分析 我们经常说&#xff0c;stm32f103是采用cotex-M3内核&#xff0c;基于armv7架构设计的。 那么&#xff0c;stm32f103、cotex-M3、armv7之间有什么关系呢&#xff1f; 二、层次分析 1. 架构&#xff08;Architecture&#xff09; 定义&#xff1a;架构是处理器…

基于PHP的招投标系统_603gk

目录具体实现截图课程项目技术路线开发技术介绍PHP核心代码部分展示系统测试详细视频演示/源码获取具体实现截图 课程项目技术路线 招投标系统后端采用 PHP 语言搭配Thinkphp或者 Laravel 框架&#xff0c;PHP 语法简洁且功能强大&#xff0c;Laravel 或者Thinkphp框架能优化代…

深入解析 JavaScript 中的 `$.ajax()`:专业指南与实战示例

文章目录一、为什么需要 $.ajax()&#xff1f;二、核心语法解析三、关键参数深度剖析四、实战示例&#xff1a;从基础到进阶五、错误处理最佳实践六、性能与安全优化七、现代替代方案对比八、总结作为网站编辑&#xff0c;我将带您深入剖析 jQuery 的 $.ajax() 方法。本文不仅涵…