当前位置: 首页 > news >正文

几个常用脚本

系统初始化

#!/bin/bash
# 定义颜色常量
RED='\033[0;31m'
GREEN='\033[0;32m'
NC='\033[0m' # No Color
#功能菜单
menu() {clearecho "请选择要执行的操作:"echo "1. 检查网络"echo "2. 关闭防火墙和SELinux"echo "3. 替换YUM源"echo "4. 安装必要的工具"echo "5. 设置时间同步"echo "6. 磁盘分区"echo "7. 更新DNS"echo "8. 修改SSH会话保持"echo "9. 限制用户登录次数锁死时间"echo "0. 退出"read -p "请输入菜单编号: " choicecase $choice in1) network_check ;;2) disable_firewall_selinux ;;3) replace_yum_repo ;;4) install_tools ;;5) set_time_sync ;;6) disk_partition ;;7) update_dns ;;8) modify_ssh_session ;;9) limit_user_login ;;0) exit ;;*) echo "无效的选项,请重新输入!" ; sleep 2; menu ;;esac
}
# 1. 检查网络
function network_check() {echo "正在检查网络通信"ping -c1 www.baidu.com 2>/dev/nullif [ $? -eq 0 ]; thenecho "你的网络是没有问题的"elseecho "你的网络有问题,请先检查网络"exit 2fiecho "请选择网络配置方式:"echo "1. 使用DHCP"echo "2. 设置静态IP"read -p "请输入菜单编号: " choicecase $choice in1) configure_dhcp ;;2) configure_static_ip ;;*) echo "无效的选项,请重新输入!" ; sleep 2; network_check ;;esac
}# 1.1 使用DHCP
function configure_dhcp() {local ifcfg_file="/etc/sysconfig/network-scripts/ifcfg-ens33"# 检查文件是否存在if [ ! -f "$ifcfg_file" ]; thenecho "错误:文件 $ifcfg_file 不存在。请确认文件路径正确。"exit 1fi# 备份原始文件cp "$ifcfg_file" "$ifcfg_file.bak"echo "已备份原始文件至 ${ifcfg_file}.bak" # 使用 sed 修改 BOOTPROTO 为 dhcp# 查找并替换 BOOTPROTO 的行sed -i '/^BOOTPROTO=/c\BOOTPROTO=dhcp' "$ifcfg_file"# 如果文件中原本没有 BOOTPROTO 这一行,添加它if [ ! grep -q '^BOOTPROTO=' "$ifcfg_file" ]; thenecho "BOOTPROTO=dhcp" >> "$ifcfg_file"fi# 注释掉或删除与静态 IP 相关的行sed -i '/^IPADDR/d' "$ifcfg_file"sed -i '/^NETMASK/d' "$ifcfg_file"sed -i '/^GATEWAY/d' "$ifcfg_file"sed -i '/^DNS/d' "$ifcfg_file"# 显示修改后的文件内容echo -e "${GREEN}修改后的 ifcfg-ens33 文件内容:${NC}"cat "$ifcfg_file"# 重启网络服务systemctl restart networkecho "已重启网络服务以启用 DHCP."# 等待一段时间,让用户查看输出sleep 2# 返回主菜单menu
}# 定义函数以配置静态 IP 地址
function configure_static_ip() {# 提示用户输入静态 IP 地址while true; doecho "请输入静态 IP 地址 (例如: 192.168.1.10):"read -r ip_addressif [[ $ip_address =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; thenbreakelseecho "无效的 IP 地址格式,请重试."fidone# 提示用户输入子网掩码while true; doecho "请输入子网掩码 (例如: 255.255.255.0):"read -r netmaskif [[ $netmask =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; thenbreakelseecho "无效的子网掩码格式,请重试."fidone# 提示用户输入默认网关while true; doecho "请输入默认网关 (例如: 192.168.1.1):"read -r gatewayif [[ $gateway =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; thenbreakelseecho "无效的网关格式,请重试."fidone# 提示用户输入 DNS 服务器地址while true; doecho "请输入 DNS 服务器地址 (例如: 8.8.8.8):"read -r dns_serverif [[ $dns_server =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]]; thenbreakelseecho "无效的 DNS 服务器地址格式,请重试."fidone# 提示用户选择网络接口echo "请输入要配置的网络接口 (例如: ens33):"read -r interface# 读取现有的网卡配置文件config_file="/etc/sysconfig/network-scripts/ifcfg-$interface"if [[ ! -f "$config_file" ]]; thenecho "指定的网络接口配置文件不存在,请检查后重试."returnfi# 备份现有的网卡配置文件echo "是否需要备份现有的网卡配置文件? [y/N]"read -r backup_choiceif [[ $backup_choice =~ ^[Yy]$ ]]; thencp "$config_file" "${config_file}.bak"echo "备份成功."fi# 更新配置文件sed -i -e "s/^BOOTPROTO=.*/BOOTPROTO=static/" \-e '$a\' -e "IPADDR=$ip_address" \-e "/^NETMASK=/ s/.*/NETMASK=$netmask/" \-e "/^GATEWAY=/ s/.*/GATEWAY=$gateway/" \-e "/^DNS1=/ s/.*/DNS1=$dns_server/" \-e '$a\' -e "NETMASK=$netmask" \-e '$a\' -e "GATEWAY=$gateway" \-e '$a\' -e "DNS1=$dns_server" "$config_file"# 显示修改后的文件内容echo -e "${GREEN}修改后的 ifcfg-ens33 文件内容:${NC}"cat "$config_file"# 重启网络服务使配置生效systemctl restart network# 输出配置完成信息echo "静态 IP 配置完成."# 返回主菜单sleep 2menu
}# 2. 关闭防火墙和SELinux
function disable_firewall_selinux() {systemctl stop firewalldsystemctl disable firewalldsed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/sysconfig/selinuxsetenforce 0echo "防火墙和SELinux已关闭."sleep 1menu
}# 3. 替换YUM源
function replace_yum_repo() {echo "正在替换YUM源..."#备份原yum源配置文件mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup# 下载阿里云CentOS 7 YUM源配置文件curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repocurl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repoyum clean allyum makecacheecho "YUM源替换完成."sleep 2menu
}# 4. 安装必要的工具
function install_tools() {yum -y install vim wget ntpdate lrzsz unzip net-toolsecho "必要工具已安装."sleep 2menu
}# 5. 设置时间同步
function set_time_sync() {yum -y install ntpdatentpdate pool.ntp.org# 设置时区为上海时区(可以根据需要修改为你所需的时区)timedatectl set-timezone Asia/Shanghaisystemctl enable ntpdsystemctl start ntpd# 添加定时任务以每天凌晨1点同步时间(crontab -l ; echo "0 1 * * * /usr/sbin/ntpdate pool.ntp.org") | crontab -echo "时间同步已设置,已加入计划任务."sleep 2menu
}# 6. 磁盘分区
function disk_partition() {echo "请指定要分区的磁盘设备(例如 /dev/sdb):"read deviceread -p"请输入分区号"numread -p"请输入您的起始扇区(默认则直接回车)" startread -p"请输入您想要的分区空间(空间K/M/G/T)" spacefdisk $device <<EOF
n
p
$num
$start
$space
p
w
EOFpartprobe $deviceecho "磁盘分区已完成."sleep 2menu
}# 7. 更新DNS
function update_dns() {echo "请输入要配置的网络接口 (例如: ens33):"read -r interface# 读取现有的网卡配置文件local config_file="/etc/sysconfig/network-scripts/ifcfg-$interface"if [[ ! -f "$config_file" ]]; thenecho "指定的网络接口配置文件不存在,请检查后重试."returnfi  read -p"请输入想要更新的DNS地址(如114.114.114.114 8.8.8.8)" DNSipsed -ir '/^DNS/d' $config_filesed -ir -e '$a\' -e  "nameserver $DNSip" $config_filesystemctl restart networkecho "DNS更新完成."sleep 2menu
}# 8. 修改SSH会话保持
function modify_ssh_session() {
#  sed -i 's/^#Session\s*keepalive.*$/Session keepalive 60/' /etc/ssh/sshd_configread -p"发送心跳包间隔,如60(秒)" cairead -p"发送最大次数,如300(次)" cacmsed -ir "s/^#ClientAliveInterval.*/ClientAliveInterval $cai/" /etc/ssh/sshd_configsed -ir "s/^#ClientAliveCountMax.*/ClientAliveCountMax $cacm/" /etc/ssh/sshd_configsystemctl restart sshdecho "SSH会话保持时间已修改."sleep 2menu
}# 9. 限制用户登录次数锁死时间
function limit_user_login() {if ! rpm -q pam_tally2 &> /dev/null; thenecho -e "${RED}未检测到 pam_tally2,请先安装...${NC}"sudo yum install -y pam_tally2echo -e "${GREEN}pam_tally2 已安装.${NC}"elseecho -e "${GREEN}pam_tally2 已经安装.${NC}"fiecho "正在设置登录失败锁定..."cal pam_file="/etc/pam.d/sshd"# 检查配置是否存在if ! grep -q "auth required pam_tally2.so" "$pam_file"; then# 添加配置echo "auth  required  pam_tally2.so  deny=3  unlock_time=100 even_deny_root root_unlock_time=200" | sudo tee -a "$pam_file" > /dev/nullecho -e "${GREEN}登录失败锁定已设置.${NC}"elseecho -e "${GREEN}登录失败锁定已存在,无需再次设置.${NC}"fisystemctl restart sshdecho -e "${GREEN}SSHD 服务已重启.${NC}"# 这里应该修改实际的PAM配置文件sleep 2menu
}# 主程序入口
menu

跳转机

#!/bin/bash# 服务器 IP 和名称列表
server_ip=(192.168.175.128 192.168.175.129 192.168.175.130)
server_name=("web-1" "web-2" "mysql-server")# 遍历服务器列表
for ((i=0; i<${#server_ip[@]}; i++))
doecho "${i}---${server_ip[i]}---${server_name[i]}"
done# 提示用户输入要连接的序号
echo "请输入要连接的序号:" && read n# 判断用户输入的序号是否有效
if [[ $n -ge 0 && $n < ${#server_ip[@]} ]]; thenecho "正在链接${server_ip[n]}"# 使用 expect 脚本进行 SSH 登录/opt/expect.sh "${server_ip[n]}" 
elseecho "请输入范围内的序号..."
fi

ssh自动跳转

#!/usr/bin/expect
set user root
set ip [lindex $argv 0]
set pass 1
spawn ssh $user@$ipexpect {"yes/no" {send "yes\r"; exp_continue}"password:" {send "$pass\r"}
}
interact

逻辑备份

#!/bin/bash
echo "正在使用逻辑备份方式备份数据库"
echo "正在创建逻辑备份目录"
cd /opt && [ -d /mysql_logic ] || mkdir -p /opt/mysql_logic if [ $? -eq 0 ];thenecho "逻辑备份目录/opt/mysql_logic已创建"elseecho "逻辑备份目录创建失败,请检查目录情况后运行"fi  backup_dir=/opt/mysql_logic
date=$(date +%Y-%m-%d)
file=/tmp/my.txt
read -p "请输入备份使用的用户名:" user  
read -s -p "请输入用户登录密码:" pass  
mysql -u$user -p'$pass' dev/null &> /dev/nullif [ $? -ne 0 ];thenecho -e "$user\n$pass" > "$file"  echo "mysql用户密码输入正确,密码凭证已存储$file中,将在备份完成后删除。" elseecho "mysql密码输入错误,请输入正确密码"rm -rf /tmp/my.txtexit 1fi read -p "请输入数据库所在主机(本机:localhost,远端:ip地址):"  host
mysqlshow -u"$(head -1 "$file")" -p"$(tail -1 "$file")" -h$host 2> /dev/null
echo "请选择备份类型:"  
echo "1. 备份数据库"  
echo "2. 备份表" 
read -p "请输入选择(1/2): " bckif [ "$bck" = "1" ]; then echo "关于备份数据库的参数"
cat <<EOF
++++++++++++++++++++++++++++++++++
-A, 备份所有库。
-B, 备份多个数据库。
-d 不导出任何数据,只导出数据库表结构。
++++++++++++++++++++++++++++++++++
EOFread -p "请输入所要备份的数据库名:" databasemysqldump -u"$(head -1 "$file")" -p"$(tail -1 "$file")" $database > $backup_dir/$date-$database.bck &> /dev/nullif [ $? -eq 0 ];thenecho "数据库备份成功"else  echo "数据库备份失败,请检查数据库是否存在"  rm -rf "$use_file"exit 1    fi  elif [ "$bck" = "2" ];thenread -p "请输入备份表所在的数据库:" library    mysqlshow -u"$(head -1 "$file")" -p"$(tail -1 "$file")" -h$host $library 2> /dev/nullread -p "请输入要备份的表名(多个表名用空格分隔):" tables  for table in $tables;do mysqldump -u"$(head -1 "$file")" -p"$(tail -1 "$file")" $library $table > $backup_dir/$date-${table}.sql  &> /dev/nullif [ $? -eq 0 ];then  echo "表 $table 备份成功"  else  echo "表 $table 备份失败"  rm -rf "$use_file"fi  done  else  echo "无效的选择,请重新运行脚本并选择正确的备份类型"  rm -rf "$use_file"exit 1  fi  
clear
rm -rf "$file"  
echo "密码文件已删除,本次备份完成。"

物理备份

#!/bin/bash# 检查 xtrabackup 是否已安装
if ! command -v innobackupex &> /dev/null 
thenecho "xtrabackup 似乎没有安装。"read -p "是否要尝试自动安装?(y/n): " responseif [[ $response =~ ^[Yy]$ ]]; thenif [ $(id -u) -ne 0 ]; thenecho "请使用 root 权限重新运行此脚本以安装 xtrabackup。"exit 1fi# 更新系统包缓存sudo yum update -ywget https://www.percona.com/downloads/percona-release/percona-release-0.1-4/redhat/percona-release-0.1-4.noarch.rpmrpm -ivh percona-release-0.1-4.noarch.rpm# 安装 xtrabackupyum -y install percona-xtrabackup-24.x86_64# 验证安装if innobackupex --version | grep -q 'Percona XtraBackup'thenecho "XtraBackup 安装成功!"elseecho "XtraBackup 安装失败,请检查错误并手动安装。"fielseecho "用户选择不安装 xtrabackup。"fi
elseecho "xtrabackup 已经安装。"
fi#校准时间
#yum install -y ntpdate
ntpdate  cn.pool.ntp.org
# MySQL 用户名和密码
read -p "请输入用户名: " user
read -s -p "请输入用户密码: " password# 获取当前时间戳
timestamp=$(date +"%Y-%m-%d_%H-%M-%S")# 备份目录
backup_dir="/xtrabackup"# 创建备份目录
mkdir -p "$backup_dir" &>>/dev/null# 压缩并归档七天前的日志文件
archive_logs() {# 创建归档目录mkdir -p "$backup_dir/archive_logs"# 查找7天前的日志文件log_files=$(find "$backup_dir" -name "xtrabackup-*.log" -mtime +7)# 如果找到了符合条件的日志文件if [ -n "$log_files" ]; then# 归档7天前的日志文件while IFS= read -r -d '' file; do# 压缩日志文件tar -czf "$backup_dir/archive_logs/$(basename "$file").tar.gz" "$file"# 删除原始日志文件rm "$file"done echo "压缩并归档了七天前的日志文件。"elseecho "没有找到7天前的日志文件进行归档。"fi
}# 创建备份目录
for i in {1..7}; dodir_to_create="$backup_dir/z$i"if [ ! -d "$dir_to_create" ]; thenmkdir -p "$dir_to_create" &>>/dev/nullfi
done# 完全备份函数 (周一)
z1() {# 检查 z1 是否为空if [ -z "$(ls -A "$backup_dir/z1")" ]; then# 执行完全备份到 z1 目录innobackupex --user=$user --password=$password "$backup_dir/z1" &>> "$backup_dir/xtrabackup-$timestamp.log"# 检查备份是否成功if [ $? -eq 0 ]; thenecho "完全备份成功。"elseecho "完全备份失败。"fielseecho "完全备份已存在。"fi# 记录最新备份的时间戳z1=$(ls -t "$backup_dir/z1" | awk 'NR==1 {print $1}') &>>/dev/null
}# 增量备份函数 (周二、三、五、六增量,周四、日差异)
z2() {# 执行增量备份到 z2 目录innobackupex --user=$user --password=$password --incremental "$backup_dir/z2" --incremental-basedir="$backup_dir/z1/$z1" &>> "$backup_dir/xtrabackup-$timestamp.log"# 检查备份是否成功if [ $? -eq 0 ]; thenecho "增量备份成功。"elseecho "增量备份失败。"fi# 记录最新备份的时间戳z2=$(ls -t "$backup_dir/z2" | awk 'NR==1 {print $1}') &>>/dev/null
}z3() {# 执行增量备份到 z3 目录innobackupex --user=$user --password=$password --incremental "$backup_dir/z3" --incremental-basedir="$backup_dir/z2/$z2" &>> "$backup_dir/xtrabackup-$timestamp.log"# 检查备份是否成功if [ $? -eq 0 ]; thenecho "增量备份成功。"elseecho "增量备份失败。"fi# 记录最新备份的时间戳z3=$(ls -t "$backup_dir/z3" | awk 'NR==1 {print $1}') &>>/dev/null
}z4() {# 执行差异备份到 z4 目录innobackupex --user=$user --password=$password --incremental "$backup_dir/z4" --incremental-basedir="$backup_dir/z1/$z1" &>> "$backup_dir/xtrabackup-$timestamp.log"# 检查备份是否成功if [ $? -eq 0 ]; thenecho "差异备份成功。"elseecho "差异备份失败。"fi# 记录最新备份的时间戳z4=$(ls -t "$backup_dir/z4" | awk 'NR==1 {print $1}') &>>/dev/null
}z5() {# 执行增量备份到 z5 目录innobackupex --user=$user --password=$password --incremental "$backup_dir/z5" --incremental-basedir="$backup_dir/z4/$z4" &>> "$backup_dir/xtrabackup-$timestamp.log"# 检查备份是否成功if [ $? -eq 0 ]; thenecho "增量备份成功。"elseecho "增量备份失败。"fi# 记录最新备份的时间戳z5=$(ls -t "$backup_dir/z5" | awk 'NR==1 {print $1}') &>>/dev/null
}z6() {# 执行增量备份到 z6 目录innobackupex --user=$user --password=$password --incremental "$backup_dir/z6" --incremental-basedir="$backup_dir/z5/$z5" &>> "$backup_dir/xtrabackup-$timestamp.log"# 检查备份是否成功if [ $? -eq 0 ]; thenecho "增量备份成功。"elseecho "增量备份失败。"fi# 记录最新备份的时间戳z6=$(ls -t "$backup_dir/z6" | awk 'NR==1 {print $1}') &>>/dev/null
}z7() {# 执行差异备份到 z7 目录innobackupex --user=$user --password=$password --incremental "$backup_dir/z7" --incremental-basedir="$backup_dir/z1/$z1" &>> "$backup_dir/xtrabackup-$timestamp.log"# 检查备份是否成功if [ $? -eq 0 ]; thenecho "差异备份成功。"elseecho "差异备份失败。"fi# 记录最新备份的时间戳z7=$(ls -t "$backup_dir/z7" | awk 'NR==1 {print $1}') &>>/dev/null
}# 星期判断函数
function show_date() {# 输出当前星期date +"%A" >>/dev/null
}# 获取当前日期
current_day=$(show_date)
# 转换星期名称为小写
time=$(echo "$current_day" | awk '{print tolower($0)}')# 检查是否存在完全备份
if [ -z "$(ls -A "$backup_dir/z1")" ]; then# 执行完全备份 (周一)z1
else# 执行对应的备份任务case $time inmonday)# 执行完全备份 (周一)z1;;tuesday)# 执行增量备份 (周二)z2;;wednesday)# 执行增量备份 (周三)z3;;thursday)# 执行差异备份 (周四)z4;;friday)# 执行增量备份 (周五)z5;;saturday)# 执行增量备份 (周六)z6;;sunday)# 执行差异备份 (周日)z7;;esac
fi# 在每天执行完备份后,归档日志
archive_logs

相关文章:

几个常用脚本

系统初始化 #!/bin/bash # 定义颜色常量 RED\033[0;31m GREEN\033[0;32m NC\033[0m # No Color #功能菜单 menu() {clearecho "请选择要执行的操作:"echo "1. 检查网络"echo "2. 关闭防火墙和SELinux"echo "3. 替换YUM源"echo "…...

gtest中TEST和TEST_F和TEST_P的区别是什么

gtest&#xff08;Google Test&#xff09;是Google开发的一个开源的C测试框架&#xff0c;它提供了多种宏来支持不同类型的测试。其中&#xff0c;TEST、TEST_F和TEST_P是三个常用的宏&#xff0c;它们各自有不同的用途和特性。以下是它们之间的主要区别&#xff1a; TEST 用…...

VS2022如何调出输出窗口,并在输出窗口打印日志

在输出窗口打印 System.Diagnostics.Debug.WriteLine("这是一行自定义的输出。Debug.WriteLine");System.Diagnostics.Debug.Write("这是第二行自定义的输出&#xff0c;Debug.Write");System.Diagnostics.Debug.WriteLine("换行");System.Diagn…...

【全国大学生电子设计竞赛】2021年I题

&#x1f970;&#x1f970;全国大学生电子设计大赛学习资料专栏已开启&#xff0c;限时免费&#xff0c;速速收藏~...

【项目】基于Vue2+Router+Vant 前端面经项目

环境配置 Vue脚手架的创建 在终端中打开输入 vue create 项目包名 -m npm注意⚠️&#xff1a;项目名称不再允许包含大写字母。 选择第三项 3.选择要安装的模块 从上到下的功能模块&#xff1a; Babel - ES&#xff1a;降级处理Router-Vue&#xff1a;路由插件CSS预处理器E…...

【论文阅读】YOLOv10: Real-Time End-to-End Object Detection

题目&#xff1a;YOLOv10: Real-Time End-to-End Object Detection 作者&#xff1a;Ao Wang Hui Chen∗ Lihao Liu Kai Chen Zijia Lin Jungong Han Guiguang Ding∗ 清华大学的 motivation: 作者觉得YOLO系列的NMS和某些结构非常的耗时&#xff0c;提出NMS-free和一些列高效…...

计算资源消耗

计算资源消耗 计算资源的消耗分成&#xff1a; 模型参数本身的存储。模型参数的梯度以及梯度momentum的存储。token的传播过程 例如以llama3-7b为例&#xff1a; 模型参数存储&#xff1a; 模型参数量 * fp32 例如llama3-70b为例&#xff0c;7 * 10^9 * 4 模型参数的梯度以…...

企业微信推送消息的Java实现教程

在这篇教程中&#xff0c;我们将介绍如何使用Java实现企业微信的消息推送功能&#xff0c;特别是在完成任务后&#xff0c;将结果信息通过企业微信推送给指定的用户。我们将基于您提供的代码进行说明。 1. 环境准备 1.1 依赖库 在开始编写代码之前&#xff0c;确保您的项目中…...

强化学习之Actor-Critic算法(基于值函数和策略的结合)——以CartPole环境为例

0.简介 DQN算法作为基于值函数的方法代表&#xff0c;基于值函数的方法只学习一个价值函数。REINFORCE算法作为基于策略的方法代表&#xff0c;基于策略的方法只学习一个策略函数。Actor-Critic算法则结合了两种学习方法&#xff0c;其本质是基于策略的方法&#xff0c;因为其目…...

Linux学习记录(五)-------三类读写函数

文章目录 三种读写函数1.行缓存2.无缓存3.全缓存4.fgets和fputs5.gets和puts 三种读写函数 1.行缓存 遇到新行&#xff08;\n&#xff09;,或者写满缓存时&#xff0c;即调用系统函数 读&#xff1a;fgets,gets,printf,fprintf,sprintf写&#xff1a;fputs,puts,scanf 2.无缓…...

2024年8月13日(lvs NAT脚本 RS脚本 ds脚本)

lvs-nat模式的优点配置简单,缺点是请求和响应都必须经过ds,容易称为性能瓶颈 希望有这样的模式,请求的时候使用input链进行负载均衡,响应的时候就不要经过ds,直接由rs响应给客户端 在nat模式的时候,请求vip,接收vip的响应 构想 请求vip,接受rip响应,这是不允许lvs-dr模式 NAT脚…...

css实现水滴效果图

效果图&#xff1a; <template><div style"width: 100%;height:500px;padding:20px;"><div class"water"></div></div> </template> <script> export default {data() {return {};},watch: {},created() {},me…...

接口测试面试题目,你都会了吗?

面试题 什么是接口测试&#xff1f; 接口自动化测试的流程是什么&#xff1f; GET请求和POST请求区别是什么&#xff1f; 接口测试的常用工具有哪些&#xff1f; HTTP接口的请求参数类型有哪些&#xff1f; 如何从上一个接口获取相关的响应数据传递到下一个接口&#xff1…...

jmeter-beanshell学习16-自定义函数

之前写了一个从文件获取指定数据&#xff0c;用的时候发现不太好用&#xff0c;写了一大段&#xff0c;只能取出一个数&#xff0c;再想取另一个数&#xff0c;再粘一大段。太不好看了&#xff0c;就想到了函数。查了一下确实可以写。 public int test(a,b){return ab; } ctes…...

LogicFlow工作流在React和Vue3中的使用

LogicFlow 是一款流程图编辑框架&#xff0c;提供了一系列流程图交互、编辑所必需的功能和简单灵活的节点自定义、插件等拓展机制&#xff0c;方便我们快速在业务系统内满足类流程图的需求。 核心能力 可视化模型&#xff1a;通过 LogicFlow 提供的直观可视化界面&#xff0c…...

Python循环语句:不到长城心不死

Python中的循环语句是编程中非常重要的结构&#xff0c;它们允许你重复执行一段代码多次&#xff0c;直到满足某个条件为止。Python提供了两种主要的循环类型&#xff1a;for循环和while循环。 文章目录 1. for 循环2. while 循环循环控制语句range() 函数结合循环语句和 rang…...

Unity教程(九)角色攻击的改进

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…...

宠物空气净化器真的能除毛吗?有哪些选购技巧和品牌推荐修改版

夏日炎炎&#xff0c;有猫超甜。作为一名资深铲屎官&#xff0c;家里养有猫让我倍感幸福&#xff0c;夏天里有空调、有西瓜、有猫&#xff0c;这几个搭配在一起真的是超级爽。但在这么高温的夏天&#xff0c;家里养有宠物还是有不少烦恼的。比如家里的浮毛一直飘&#xff0c;似…...

Qt自定义注释

前言 是谁在Qt中编写代码&#xff0c;函数注释&#xff0c;类注释时&#xff0c;注释符号一个一个的敲&#xff1f; comment注释brief简洁的 Detailed详细的 第一步&#xff1a; 打开Qt 工具->选项->文本编辑器->片段 第二步&#xff1a; 点击添加 然后点击OK…...

【模电笔记】——信号的运算和处理电路(含电压比较器)

tips&#xff1a;本章节的笔记已经打包到word文档里啦&#xff0c;建议大家下载文章顶部资源&#xff08;有时看不到是在审核中&#xff0c;等等就能下载了。手机端下载后里面的插图可能会乱&#xff0c;建议电脑下载&#xff0c;兼容性更好且易于观看&#xff09;&#xff0c;…...

Java之 equals()与==

目录 运算符用途&#xff1a;用于比较两个引用是否指向同一个对象。比较内容&#xff1a;比较的是内存地址&#xff08;引用&#xff09;。适用范围&#xff1a;适用于基本数据类型和对象引用 equals() 方法用途&#xff1a;用于比较两个对象的内容是否相同。比较内容&#xf…...

Ubuntu20.04 运行深蓝路径规划hw1

前言 环境&#xff1a; ubuntu 20.04 &#xff1b; ROS版本&#xff1a; noetic&#xff1b; 问题 1、出现PCL报错&#xff1a;#error PCL requires C14 or above catkin_make 编译时&#xff0c;出现如下错误 解决&#xff1a; 在grid_path_searcher文件夹下面的CMakeLis…...

企业如何组建安全稳定的跨国通信网络

当企业在海外设有分公司时&#xff0c;如何建立一个安全且稳定的跨国通信网络是一个关键问题。为了确保跨国通信的安全和稳定性&#xff0c;可以考虑以下几种方案。 首先&#xff0c;可以在分公司之间搭建虚拟专用网络。虚拟专用网络通过对传输数据进行加密&#xff0c;保护通信…...

WordPress原创插件:Download-block-plugin下载按钮图标美化

WordPress原创插件&#xff1a;Download-block-plugin下载按钮图标美化 https://download.csdn.net/download/huayula/89632743...

前端【详解】缓存

HTTP 缓存 https://blog.csdn.net/weixin_41192489/article/details/136446539 CDN 缓存 CDN 全称 Content Delivery Network,即内容分发网络。 用户在浏览网站的时候&#xff0c;CDN会选择一个离用户最近的CDN边缘节点来响应用户的请求 CDN边缘节点的缓存机制与HTTP 缓存相同…...

P5821 【LK R-03】密码串匹配

[题目通道](【L&K R-03】密码串匹配 - 洛谷) 一道神题。 如果没有修改操作&#xff0c;翻转A数组或B数组后就是裸的FFT了 如果每次操作都暴力修改FFT时间复杂度显然爆炸 如果每次操作都不修改&#xff0c;记下修改序列&#xff0c;询问时加上修改序列的贡献&#xff0c;…...

httpx,一个网络请求的 Python 新宠儿

大家好&#xff01;我是爱摸鱼的小鸿&#xff0c;关注我&#xff0c;收看每期的编程干货。 一个简单的库&#xff0c;也许能够开启我们的智慧之门&#xff0c; 一个普通的方法&#xff0c;也许能在危急时刻挽救我们于水深火热&#xff0c; 一个新颖的思维方式&#xff0c;也许能…...

计算机网络408考研 2014

1 计算机网络408考研2014年真题解析_哔哩哔哩_bilibili 1 111 1 11 1...

JavaScript 资源大全中文版

目录 JavaScript资源大全中文版 包管理器加载器组件管理器打包工具测试框架QA工具MVC 框架和库基于 Node 的 CMS 框架模板引擎文章和帖子数据可视化 时间轴电子表格 编辑器文档工具 文件函数式编程响应式编程数据结构日期字符串数字存储颜色国际化和本地化控制流路由安全性日志…...

如何获取能直接在浏览器打开的播放地址?

背景&#xff1a;需要在浏览器上直接打开设备的画面&#xff0c;但又不想二次开发 本文介绍一种极简的取流方式&#xff0c;不需要掌握前端开发知识&#xff0c;按照本文档拼接就能得到设备的播放地址 一、准备工作 1.将设备接入到萤石账号下。萤石设备接入指南&#xff1a;h…...