NFS搭建
NFS搭建
- 单节点安装配置
- 服务器
- 安装
- 配置
- 启动并使NFS服务开机自启
- 客户端挂载
- 查看是否能发现服务器的共享文件夹
- 创建挂载目录
- 临时挂载
- 自动挂载
- 双节点安装配置
- 服务器
- 安装
- 配置
- 服务端
- 配置NFS服务端
- 配置Keepalived
- 编辑nfs_check.sh监控脚本
- 安装部署Rsync+Inofity
- 客户端
单节点安装配置
服务器
操作系统 | IP地址 | 子网掩码 | 角色 |
---|---|---|---|
alma linux9.3 | 10.168.31.180 | 16 | server |
alma linux9.3 | 10.168.31.181 | 16 | client |
alma linux9.3 | 10.168.31.182 | 16 | client |
alma linux9.3 | 10.168.31.183 | 16 | client |
安装
在每台机器上执行下列的命令
dnf install -y nfs-utils rpcbind
配置
NFS配置文件 /etc/exports
- 挂载目录
一般来说,会挂载一块高性能磁盘,作为NFS的目录使用。本文未挂载额外磁盘,磁盘挂载请参考此文章,其余相同。
这里使用数据目录为/nfs,如果没有需要自行创建。
mkdir /nfs
- 访问的主机
IP | 允许范围 |
---|---|
10.168.31.180 | 单个主机 |
10.168.0.0/16 | 10.168.31.181 |
10.168.0.* | 10.168.31.182 |
主机名 | DNS A解析 轮询 |
- 权限
权限 | 作用 |
---|---|
rw | 可读可写 |
ro | 只读 |
sync | 写到磁盘才算完成,安全,慢 |
async | 异步写到远程缓冲区,快,不安全 |
no_root_squash | 允许NFS客户端上的root用户对NFS共享目录拥有至高权限 |
no_all_squash | 客户端所有用户拥有服务端匿名用户权限 |
echo '/nfs 10.168.0.0/16(rw,sync,no_root_squash,no_all_squash)' >> /etc/exports
启动并使NFS服务开机自启
systemctl start nfs-server.service
systemctl enable nfs-server.service
客户端挂载
查看是否能发现服务器的共享文件夹
showmount -e IP
创建挂载目录
mkdir /nfs
临时挂载
NFS客户端挂载的命令格式
# 挂载命令 挂载的格式类型 NFS服务器提供的共享目录 NFS客户端要挂载的目录(必须存在)
# mount -t nfs <server-ip>:/<shared-directory> /nfs
# 示例:
mount -t nfs 10.168.31.180:/nfs /nfs
自动挂载
# NFS服务器提供的共享目录 NFS客户端要挂载的目录(必须存在) 挂载的格式类型 挂载时使用的参数 是否进行备份 fsck检查文件系统的优先级
# <server-ip>:/<shared-directory> /nfs nfs defaults 0 0
# 示例:
echo '10.168.31.180:/nfs /nfs nfs defaults 0 0' >> /etc/fstab
双节点安装配置
服务器
操作系统 | IP地址 | 子网掩码 | 角色 |
---|---|---|---|
alma linux9.3 | 10.168.31.180 | 16 | server |
alma linux9.3 | 10.168.31.181 | 16 | server |
alma linux9.3 | 10.168.31.182 | 16 | client |
alma linux9.3 | 10.168.31.183 | 16 | client |
alma linux9.3 | 10.168.31.171 | 16 | vip |
安装
在每台机器上执行下列的命令
dnf install -y nfs-utils rpcbind
同时,对10.168.31.180和10.168.31.181两个服务端做Keepalived负载均衡。具体配置参考Keepalived部署。
配置
服务端
配置NFS服务端
参考单节点服务端配置
配置Keepalived
参考Keepalived部署
配置文件需要在参考文章基础上做修改
mkdir -p /etc/keepalived
cat <<EOF | tee /etc/keepalived/keepalived.conf
! Configuration File for keepalivedglobal_defs {router_id LVS_DEVEL
}# 增加脚本
vrrp_script chk_nfs {script "/etc/keepalived/nfs_check.sh" interval 2weight -20
}
vrrp_instance VI_1 {state MASTER #主节点interface ens160virtual_router_id 51 #相同id管理同一个虚拟路由priority 100 #优先级advert_int 1authentication {auth_type PASSauth_pass 1111}# 引用脚本track_script {chk_nfs}virtual_ipaddress {10.168.31.171/16 dev ens160 label ens160:1}
}
EOF
编辑nfs_check.sh监控脚本
mkdir -p /etc/keepalived
cat <<EOF | tee /etc/keepalived/nfs_check.sh
#!/bin/bash
A=\`ps -C nfsd --no-header | wc -l\`
if [ \$A -eq 0 ];thensystemctl restart nfs-server.servicesleep 2if [ \`ps -C nfsd --no-header| wc -l\` -eq 0 ];thenpkill keepalivedfi
fi
EOF
chmod +x /etc/keepalived/nfs_check.sh
安装部署Rsync+Inofity
两台master节点都要操作
- 安装软件
dnf install -y rsync inotify-tools
inotify-tools无法安装可以先换成阿里源
dnf install -y https://mirrors.aliyun.com/epel/epel-release-latest-9.noarch.rpm
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
dnf install -y inotify-tools
- 配置
在第一个主节点
cat <<EOF | tee /etc/rsyncd.conf
uid = root
gid = root
# 如果"use chroot"指定为true,那么rsync在传输文件以前首先chroot到path参数所指定的目录下。
# 这样做的原因是实现额外的安全防护,但是缺点是需要以roots权限,并且不能备份指向外部的符号连接所指向的目录文件。
# 默认情况下chroot值为true。
use chroot = yes
port = 873
#允许ip访问设置,可以指定ip或ip段
hosts allow = 10.168.0.0/16
max connections = 0
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
log file = /var/log/rsyncd.log
log format = %t %a %m %f %b
transfer logging = yes
syslog facility = local3# 模块名称,和comment对应
[master]
# 要同步的目录
path = /nfs
# 当前节点模块名称
comment = master
# 是否允许客户端上传文件
ignore errors
read only = no
list = no
# 指定由空格或逗号分隔的用户名列表,只有这些用户才允许连接该模块
auth users = rsync
# 保存密码和用户名文件,需要自己生成
secrets file = /etc/rsync/rsyncd.passwd
EOF# 创建自定义配置文件目录
mkdir /etc/rsync# 密码和用户文件(格式为"用户名:密码")
cat <<EOF | tee /etc/rsync/rsyncd.passwd
rsync:123456
EOF# 编辑同步密码(注意这个文件和上面的密码和用户文件路径不一样)
# 该文件内容只需要填写从服务器的密码,例如这里从服务器配的用户名密码都是rsync:123456,则主服务器则写123456一个就可以了
cat <<EOF | tee /etc/rsync/slave.passwd
123456
EOF# 设置文件执行权限
chmod 600 /etc/rsync/rsyncd.passwd
chmod 600 /etc/rsync/slave.passwd# 设置开机启动
echo "/usr/bin/rsync --daemon" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
另外一个节点的配置需要修改rsyncd.conf文件内模块的名称为slave,其余相同。
测试
rsync -avzP --progress --delete --timeout=100 /nfs/ rsync@10.168.31.181::slave --password-file=/etc/rsync/slave.passwd
rsync常用命令
# -v,--verbose 详细模式输出,传输是的进度信息
# -z,--compress 传输是进行压缩以提高传输效率,--comperess -level = NUM可以按级别压缩
# -a,--archive 归档模式,表示以递归方式传输文件,并保持所有文件属性(等于-rtopgDl)
# --port 指定端口
# -e 'ssh -p 2222' 指定使用ssh及其端口
# --timeout 超时时间
# --partial-dir 临时目录,传输完毕,移动到正式目录
# --password-file 指定存密码的文件
# --progress 打印进度
# --delete 删除目标目录中源目录没有的文件
# -P 支持断点,综合了--partial --progress两个参数
- 配置自动同步
在主节点
# 自动同步脚本
cat <<EOF | tee /etc/rsync/rsync_inotify.sh
#!/bin/bash
#配置另外一个节点的IP
host=10.168.31.181
#配置另外一个节点的名称
des=slave
src=/nfs/
password=/etc/rsync/slave.passwd
user=rsync
inotifywait=/usr/bin/inotifywait\$inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib /nfs/ \\
| while read files ;dorsync -avzP --progress --delete --timeout=100 /nfs/ rsync@10.168.31.181::slave --password-file=/etc/rsync/slave.passwd done
EOF# VIP监控脚本
cat <<EOF | tee /etc/rsync/vip_monitor.sh
#!/bin/bash
VIP_NUM=\`ip addr|grep 31.171|wc -l\`
RSYNC_INOTIRY_NUM=\`ps -ef|grep /usr/bin/inotifywait|grep -v grep|wc -l\`
if [ \${VIP_NUM} -ne 0 ];thenecho "VIP在当前NFS节点服务器上" >/dev/null 2>&1if [ \${RSYNC_INOTIRY_NUM} -ne 0 ];thenecho "rsync_inotify.sh脚本已经在后台执行中" >/dev/null 2>&1elseecho "需要在后台执行rsync_inotify.sh脚本" >/dev/null 2>&1/bin/bash -x /etc/rsync/rsync_inotify.sh >/dev/null 2>&1fi
elseecho "VIP不在当前NFS节点服务器上" >/dev/null 2>&1if [ \${RSYNC_INOTIRY_NUM} -ne 0 ];thenecho "需要关闭后台执行的rsync_inotify.sh脚本" >/dev/null 2>&1ps -ef|grep rsync_inotify.sh|grep -v grep|awk '{print \$2}'|xargs kill -9ps -ef|grep /usr/bin/inotifywait|grep -v grep|awk '{print \$2}'|xargs kill -9elseecho "rsync_inotify.sh脚本当前未执行" >/dev/null 2>&1fi
fi
EOF# 持续执行脚本
cat <<EOF | tee /etc/rsync/rsync_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do/bin/bash -x /etc/rsync/vip_monitor.sh >/dev/null 2>&1
done
EOF# 设置rsync_monit.sh脚本的开机启动
chmod 755 /etc/rsync/rsync_inotify.sh
chmod 755 /etc/rsync/vip_monitor.sh
chmod 755 /etc/rsync/rsync_monit.sh
echo "nohup sh /etc/rsync/rsync_monit.sh > /tmp/rsync_monit.log 2>&1 & " >> /etc/rc.d/rc.local
在从节点
# 自动同步脚本
cat <<EOF | tee /etc/rsync/rsync_inotify.sh
#!/bin/bash
#配置另外一个节点的IP
host=10.168.31.180
#配置另外一个节点的名称
des=master
src=/nfs/
password=/etc/rsync/slave.passwd
user=rsync
inotifywait=/usr/bin/inotifywait\$inotifywait -mrq --timefmt '%Y%m%d %H:%M' --format '%T %w%f%e' -e modify,delete,create,attrib /nfs/ \\
| while read files ;dorsync -avzP --progress --delete --timeout=100 /nfs/ rsync@10.168.31.180::master --password-file=/etc/rsync/slave.passwd done
EOF# VIP监控脚本
cat <<EOF | tee /etc/rsync/vip_monitor.sh
#!/bin/bash
VIP_NUM=\`ip addr|grep 31.171|wc -l\`
RSYNC_INOTIRY_NUM=\`ps -ef|grep /usr/bin/inotifywait|grep -v grep|wc -l\`
if [ \${VIP_NUM} -ne 0 ];thenecho "VIP在当前NFS节点服务器上" >/dev/null 2>&1if [ \${RSYNC_INOTIRY_NUM} -ne 0 ];thenecho "rsync_inotify.sh脚本已经在后台执行中" >/dev/null 2>&1elseecho "需要在后台执行rsync_inotify.sh脚本" >/dev/null 2>&1/bin/bash -x /etc/rsync/rsync_inotify.sh >/dev/null 2>&1fi
elseecho "VIP不在当前NFS节点服务器上" >/dev/null 2>&1if [ \${RSYNC_INOTIRY_NUM} -ne 0 ];thenecho "需要关闭后台执行的rsync_inotify.sh脚本" >/dev/null 2>&1ps -ef|grep rsync_inotify.sh|grep -v grep|awk '{print \$2}'|xargs kill -9ps -ef|grep /usr/bin/inotifywait|grep -v grep|awk '{print \$2}'|xargs kill -9elseecho "rsync_inotify.sh脚本当前未执行" >/dev/null 2>&1fi
fi
EOF# 持续执行脚本
cat <<EOF | tee /etc/rsync/rsync_monit.sh
#!/bin/bash
while [ "1" = "1" ]
do/bin/bash -x /etc/rsync/vip_monitor.sh >/dev/null 2>&1
done
EOF# 设置rsync_monit.sh脚本的开机启动
chmod 755 /etc/rsync/rsync_inotify.sh
chmod 755 /etc/rsync/vip_monitor.sh
chmod 755 /etc/rsync/rsync_monit.sh
echo "nohup sh /etc/rsync/rsync_monit.sh > /tmp/rsync_monit.log 2>&1 & " >> /etc/rc.d/rc.local
客户端
挂载同单节点挂在,但是挂载IP为配置的VIP
相关文章:
NFS搭建
NFS搭建 单节点安装配置服务器安装配置启动并使NFS服务开机自启客户端挂载查看是否能发现服务器的共享文件夹创建挂载目录临时挂载自动挂载 双节点安装配置服务器安装配置服务端配置NFS服务端配置Keepalived编辑nfs_check.sh监控脚本安装部署RsyncInofity 客户端 单节点安装配置…...
RNN与LSTM,通过Tensorflow在手写体识别上实战
简介:本文从RNN与LSTM的原理讲起,在手写体识别上进行代码实战。同时列举了优化思路与优化结果,都是基于Tensorflow1.14.0的环境下,希望能给您的神经网络学习带来一定的帮助。如果您觉得我讲的还行,希望可以得到您的点赞…...
Docker部署FastAPI实战
在现代 Web 开发领域,FastAPI 作为一款高性能的 Python 框架,正逐渐崭露头角,它凭借简洁的语法、快速的执行速度以及出色的类型提示功能,深受开发者的喜爱。而 Docker 容器化技术则为 FastAPI 应用的部署提供了便捷、高效且可移植…...
【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好
博客主页:小馒头学python 本文专栏: Python数据分析五十个小案例 专栏简介:分享五十个Python数据分析小案例 在现代电影行业中,数据分析已经成为提升用户体验和电影推荐的关键工具。通过分析电影评分数据,我们可以揭示出用户的…...
Vue2学习记录
前言 这篇笔记,是根据B站尚硅谷的Vue2网课学习整理的,用来学习的 如果有错误,还请大佬指正 Vue核心 Vue简介 Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。 它基于标准 HTML、CSS 和 JavaScr…...
TMS FNC UI Pack 5.4.0 for Delphi 12
TMS FNC UI Pack是适用于 Delphi 和 C Builder 的多功能 UI 控件的综合集合,提供跨 VCL、FMX、LCL 和 TMS WEB Core 等平台的强大功能。这个统一的组件集包括基本工具,如网格、规划器、树视图、功能区和丰富的编辑器,确保兼容性和简化的开发。…...
Redis主从架构
Redis(Remote Dictionary Server)是一个开源的、高性能的键值对存储系统,广泛应用于缓存、消息队列、实时分析等场景。为了提高系统的可用性、可靠性和读写性能,Redis提供了主从复制(Master-Slave Replication…...
logback动态获取nacos配置
文章目录 前言一、整体思路二、使用bootstrap.yml三、增加环境变量四、pom文件五、logback-spring.xml更改总结 前言 主要是logback动态获取nacos的配置信息,结尾完整代码 项目springcloudnacosplumelog,使用的时候、特别是部署的时候,需要改环境&#…...
KETTLE安装部署V2.0
一、前置准备工作 JDK:下载JDK (1.8),安装并配置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。如果你的环境中已存在,可以跳过这步。KETTLE(8.2)压缩包:LHR提供关闭防火墙…...
[RabbitMQ] 保证消息可靠性的三大机制------消息确认,持久化,发送方确认
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
aws服务--机密数据存储AWS Secrets Manager(1)介绍和使用
一、介绍 1、简介 AWS Secrets Manager 是一个完全托管的服务,用于保护应用程序、服务和 IT 资源中的机密信息。它支持安全地存储、管理和访问应用程序所需的机密数据,比如数据库凭证、API 密钥、访问密钥等。通过 Secrets Manager,你可以轻松管理、轮换和访问这些机密信息…...
Java设计模式笔记(一)
Java设计模式笔记(一) (23种设计模式由于篇幅较大分为两篇展示) 一、设计模式介绍 1、设计模式的目的 让程序具有更好的: 代码重用性可读性可扩展性可靠性高内聚,低耦合 2、设计模式的七大原则 单一职…...
Unity3d C# 实现一个基于UGUI的自适应尺寸图片查看器(含源码)
前言 Unity3d实现的数字沙盘系统中,总有一些图片或者图片列表需要点击后弹窗显示大图,这个弹窗在不同尺寸分辨率的图片查看处理起来比较麻烦,所以,需要图片能够根据容器的大小自适应地进行缩放,兼容不太尺寸下的横竖图…...
【es6进阶】vue3中的数据劫持的最新实现方案的proxy的详解
vuejs中实现数据的劫持,v2中使用的是Object.defineProperty()来实现的,在大版本v3中彻底重写了这部分,使用了proxy这个数据代理的方式,来修复了v2中对数组和对象的劫持的遗留问题。 proxy是什么 Proxy 用于修改某些操作的默认行为࿰…...
w~视觉~3D~合集3
我自己的原文哦~ https://blog.51cto.com/whaosoft/12538137 #SIF3D 通过两种创新的注意力机制——三元意图感知注意力(TIA)和场景语义一致性感知注意力(SCA)——来识别场景中的显著点云,并辅助运动轨迹和姿态的预测…...
IT服务团队建设与管理
在 IT 服务团队中,需要明确各种角色。例如系统管理员负责服务器和网络设备的维护与管理;软件工程师专注于软件的开发、测试和维护;运维工程师则保障系统的稳定运行,包括监控、故障排除等。通过清晰地定义每个角色的职责࿰…...
一文学习开源框架OkHttp
OkHttp 是一个开源项目。它由 Square 开发并维护,是一个现代化、功能强大的网络请求库,主要用于与 RESTful API 交互或执行网络通信操作。它是 Android 和 Java 开发中非常流行的 HTTP 客户端,具有高效、可靠、可扩展的特点。 核心特点 高效…...
自研芯片逾十年,亚马逊云科技Graviton系列芯片全面成熟
在云厂商自研芯片的浪潮中,亚马逊云科技无疑是最早践行这一趋势的先驱。自其迈出自研芯片的第一步起,便如同一颗石子投入平静的湖面,激起了层层涟漪,引领着云服务和云上算力向着更高性能、更低成本的方向演进。 早在2012年&#x…...
Stable Diffusion 3 部署笔记
SD3下载地址:https://huggingface.co/stabilityai/stable-diffusion-3-medium/tree/main https://huggingface.co/spaces/stabilityai/stable-diffusion-3-medium comfyui 教程: 深度测评:SD3模型表现如何?实用教程助你玩转Stabl…...
微信小程序WXSS全局样式与局部样式的使用教程
微信小程序WXSS全局样式与局部样式的使用教程 引言 在微信小程序的开发中,样式的设计与实现是提升用户体验的关键部分。WXSS(WeiXin Style Sheets)作为微信小程序的样式表语言,不仅支持丰富的样式功能,还能通过全局样式与局部样式的灵活运用,帮助开发者构建美观且易于维…...
Docker 部署 MongoDB
🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🍃 vue-uniapp-template 🌺 仓库主页: GitCode💫 Gitee …...
Unity图形学之法线贴图原理
1.正常贴图:RGBA 4通道 每个通道取值范围 0-255 贴图里面取值是 0-1 2.法线贴图:法线怎么存入正常贴图的过程 每个通道里面存储的是一个向量(x,y,z,w) 通常我们会对应xyzw为rgba 存储值的范围也是0-1向量的取值范围是 -1到1法线怎么存入正常贴图的过程&…...
爬虫开发(5)如何写一个CSDN热门榜爬虫小程序
笔者 綦枫Maple 的其他作品,欢迎点击查阅哦~: 📚Jmeter性能测试大全:Jmeter性能测试大全系列教程!持续更新中! 📚UI自动化测试系列: SeleniumJava自动化测试系列教程❤ 📚…...
JVM系列之OOM观测准备
OOM, 全称 “Out Of Memory”,即内存用完的意思。JVM 因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时(可分配内存大于需要分配的内存), 就会抛出 java.lang.OutOfMemoryError。在实际的生产应用中,一旦…...
Qt | 开发技能提升档次哈
点击上方"蓝字"关注我们 01、Creator常用快捷键 >>> F1 查看帮助 F2 跳转到函数定义 Shift+F2 声明和定义之间切换 F3 查找下一个 F4 头文件和源文件之间切换 Ctrl+1 欢迎模式 Ctrl+2 编辑模…...
D79【 python 接口自动化学习】- python基础之HTTP
day79 requests模块发送请求 学习日期:20241125 学习目标:http定义及实战 -- requests模块进行get请求带参数&requests模块进行post请求 学习笔记: requests模块进行get请求 import requestsparams{"shouji":"130999…...
C++【日志模块中的writer类】前文中 循环队列用法
用到前文中的循环队列模板 /* ** File name: LogWriter.h ** Author: ** Date: 2024-11-4 ** Brief: 日志写入类 ** Note: 日志写入类,负责将日志写入文件和连接客户端。 ** Copyright (C) 1392019713qq.com All rights reserve…...
Linux:文件管理(一)——文件描述符fd
目录 一、文件基础认识 二、C语言操作文件的接口 1.> 和 >> 2.理解“当前路径” 三、相关系统调用 1.open 2.文件描述符 3.一切皆文件 4.再次理解重定向 一、文件基础认识 文件 内容 属性。换句话说,如果在电脑上新建了一个空白文档࿰…...
【C++初阶】第3课—类和对象(类的默认成员函数)
文章目录 1. 类的默认成员函数2. 构造函数3. 拷贝构造函数3.1 传值传参3.2 传值返回3.3 深拷贝和浅拷贝3.4 总结 4. 析构函数5. 赋值运算符重载5.1 运算符重载5.2 赋值运算符重载5.3 日期类的实现 6. 取地址运算符重载6.1 const 成员函数6.2 取地址运算符重载 1. 类的默认成员函…...
uni-app初学笔记:文件路径与作用
components:可复用的组件pages:页面(可见/不可见)static:静态资源,存放图片视频等 (相当于vue项目的 assets)mainjs:Vue初始化入口文件App.vue:应用配置,用来配置App全局样式以及监听pages.json :配置页面路…...
做网站的费用入账/免费b站网站推广
链接:https://pan.baidu.com/s/1zqhbQELzIJn_z6JDz8gKDA 提取码:52pj...
小程序怎么放在桌面/天津网站建设优化
下面是我的github,首页后面的教程按照这个来的。https://github.com/wangsrGit119github.com创建同用户名仓库看下图,就是我的用户名同名仓库创建过程,因为之前创建了的所以提示已存在注意点:1.勾选public 2.勾选 Initialize th…...
在线表白网页/网站搜索引擎优化的步骤
闭包(Closure)是前端开发者经常会听到的一个概念,也是我们在求职面试中经常会遇到的题目之一。透过表象去理解闭包的本质,对前端开发者来说是进阶的必经之路。 闭包跟执行上下文中的变量对象和作用域链有着千丝万缕的关系…...
专注于网站营销服务/谷歌google官方下载
1.创建index.jsp页面。新建表单 注意: action 填写 input,这个之后再web.xml配置时要注意对应。 method 提交 postt <body> <form action"input" method "post"> 用户名:<input type "text"…...
wordpress外联插件/太原seo推广
亲爱的BCGSoft用户,我们非常高兴地宣布BCGControlBar Professional for MFC和BCGSuite for MFC v31.0正式发布!全新的CBCGPMultiViewFrameWnd类(实现多视图单文档界面)、新增主题CBCGPNumericIndicatorImpl、在高DPI模式下改进的功…...
wordpress安装主题报错/最佳的搜索引擎
一种基于ipmi的对服务器进行自动化重启测试的方法【技术领域】[0001]本发明涉及重启测试技术技术,尤其涉及一种基于IPMI的对服务器进行自动化重启测试的方法。【背景技术】[0002]随着服务器行业的高速发展,在各个领域中越来越多的客户采用计算能力更强的…...