当前位置: 首页 > 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;…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题&#xff08;可多选&#xff09; 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘&#xff1a;专注于发现数据中…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

spring:实例工厂方法获取bean

spring处理使用静态工厂方法获取bean实例&#xff0c;也可以通过实例工厂方法获取bean实例。 实例工厂方法步骤如下&#xff1a; 定义实例工厂类&#xff08;Java代码&#xff09;&#xff0c;定义实例工厂&#xff08;xml&#xff09;&#xff0c;定义调用实例工厂&#xff…...

【2025年】解决Burpsuite抓不到https包的问题

环境&#xff1a;windows11 burpsuite:2025.5 在抓取https网站时&#xff0c;burpsuite抓取不到https数据包&#xff0c;只显示&#xff1a; 解决该问题只需如下三个步骤&#xff1a; 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

什么是EULA和DPA

文章目录 EULA&#xff08;End User License Agreement&#xff09;DPA&#xff08;Data Protection Agreement&#xff09;一、定义与背景二、核心内容三、法律效力与责任四、实际应用与意义 EULA&#xff08;End User License Agreement&#xff09; 定义&#xff1a; EULA即…...

【Oracle】分区表

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...