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

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

关于iview组件中使用 table , 绑定序号分页后序号从1开始的解决方案

问题描述&#xff1a;iview使用table 中type: "index",分页之后 &#xff0c;索引还是从1开始&#xff0c;试过绑定后台返回数据的id, 这种方法可行&#xff0c;就是后台返回数据的每个页面id都不完全是按照从1开始的升序&#xff0c;因此百度了下&#xff0c;找到了…...

代码规范和架构【立芯理论一】(2025.06.08)

1、代码规范的目标 代码简洁精炼、美观&#xff0c;可持续性好高效率高复用&#xff0c;可移植性好高内聚&#xff0c;低耦合没有冗余规范性&#xff0c;代码有规可循&#xff0c;可以看出自己当时的思考过程特殊排版&#xff0c;特殊语法&#xff0c;特殊指令&#xff0c;必须…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

Java设计模式:责任链模式

一、什么是责任链模式&#xff1f; 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09; 是一种 行为型设计模式&#xff0c;它通过将请求沿着一条处理链传递&#xff0c;直到某个对象处理它为止。这种模式的核心思想是 解耦请求的发送者和接收者&#xff0c;…...

前端打包工具简单介绍

前端打包工具简单介绍 一、Webpack 架构与插件机制 1. Webpack 架构核心组成 Entry&#xff08;入口&#xff09; 指定应用的起点文件&#xff0c;比如 src/index.js。 Module&#xff08;模块&#xff09; Webpack 把项目当作模块图&#xff0c;模块可以是 JS、CSS、图片等…...