Shell编程之循环语甸与函数

for  遍历循环

1)for 变量  in  取值列表
for i in  $(seq 1 10)
do
    命令序列
    ....
done

2)for ((变量=初始值; 变量范围; 变量的迭代方式))
for ((i=1; i<=10; i++))
do
    命令序列
    ....
done


IFS  for循环取值列表分隔符 
set | grep IFS  -->  IFS=$' \t\n'    默认包含 空格、制表符、换行符

求字符串分片  ${变量:下标:长度}     #下标从0开始
求字符串长度  ${#变量}
求随机数      $RANDOM         #0~32767
求0到N-1之间的随机数    $[RANDOM % N]   

for循环实现多线程
for ((i=1; i<=10; i++))
do
  {
    命令序列
     ....
  }&          #将每次循环的进程都放入后台自行运行
done
wait          #等待上面所有循环的进程都执行完毕后再执行后面的命令
命令序列

    

vim /etc/passwd

禁用当前系统除了root用户以外的可登录用户

查看可登录用户

过滤root用户

 除了root用户以外的可登录用户


ip

cat result.txt

查询结果

wang前追加

往后追加

小写转大写


for in 循环


创建用户 

 ` ` 和 ( )效果一样的·

修改密码 


批量添加用户,用户名存放在users.txt文件中,每行一个,初始密码均设为123456 

#!/bin/bash
#批量添加用户,用户名存放在users.txt文件中,每行一个,初始密码均设为123456
userfile=/root/users.txt

for name in $(cat $userfile)
do
  useradd $name
  echo 123456 | passwd --stdin $name &> /dev/null
done 

echo "批量添加用户完成"

禁用当前系统除了root用户以外的可登录用户 

#!/bin/bash
#禁用当前系统除了root用户以外的可登录用户

usrname=$(cat /etc/passwd | grep "/bin/bash$" | grep -v "^root" | awk -F: '{print $1}')

for iname in $usrname
do
    #echo $iname
    usermod -L $iname
done

 根据IP地址检查主机状态 IP地址存放在ipadds.txt文件中,每行一个 使用ping命令检测各主机的连通性

#!/bin/bash
#根据IP地址检查主机状态 IP地址存放在ipadds.txt文件中,每行一个 使用ping命令检测各主机的连通性
filepath=/root/for/ipadds.txt

for hostip in $(cat $filepath)
do
    ping -c 4 -i 0.5 -W 2 $hostip &> /dev/null
    if [ $? -eq 0 ];then
        echo "$hostip is online" >> /root/for/result.txt
    else
        echo "$hostip is offline">> /root/for/result.txt
    fi
done

 根据IP地址检查主机状态 使用ping命令检测 192.168.80.10 20 30 40 50 60主机的连通性

#!/bin/bash
#根据IP地址检查主机状态 使用ping命令检测 192.168.80.10 20 30 40 50 60主机的连通性

for num in {1..6}
do
    hostip="192.168.80.${num}0"
    ping -c 4 -i 0.5 -W 2 $hostip &> /dev/null
    if [ $? -eq 0 ];then
      echo "$hostip is online"
    else
      echo "$hostip is offline"
    fi
done

用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码:若该用户不存在,提示用户输入密码,建立用户并设立其密码 

#!/bin/bash
#用户名存放在users.txt文件中,每行一个,判断文件里的用户是否存在,若该用户存在,输出提示该用户已存在;用户存在但没设密码,则提示用户并让用户设置密码:若该用户不存在,提示用户输入密码,建立用户并设立其密码

usrfile=/root/users.txt
#循环遍历文件里的每行用户
for iname in $(cat $usrfile)
do
  #判断是否存在
  grep "^$iname" /etc/passwd &> /dev/null
  if [ $? -eq 0 ];then
    echo "$iname 用户已存在"
    #判断用户是否设置密码
    userpasswd=$(cat /etc/shadow | grep "^$iname" | awk -F: '{print $2}')
    if [ "$userpasswd" == "!!" ] || [ "$userpasswd" == "*" ] || [ -z "$userpasswd" ];then
      echo "$iname 用户没设密码。"
      read -p "请设置 $iname 用户的密码:" pd1
      read -p "请确认设置 $iname 用户的密码:" pd2
        if [ "$pd1" == "$pd2" ];then
          echo $pd1 | passwd --stdin $iname &> /dev/null
        else
          echo "密码输入不正确,放弃设置...."   
        fi
    fi  
  else
    #创建不存在的用户并设置密码
    echo "$iname 用户不存在,正常创建用户....."
    read -p "请设置 $iname 用户的密码:" password1
    read -p "请确认设置 $iname 用户的密码:" password2
    if [ "$password1" == "$password2" ];then
      useradd $iname
      echo $password1 | passwd --stdin $iname &> /dev/null
    else
      echo "密码输入不正确,放弃设置...."   
    fi
  fi
done


 输出1到10的整数,并判断奇偶数

#!/bin/bash
#输出1到10的整数,并判断奇偶数

for ((i=1; i<=10; i++))
do
  a=$[i % 2]
  if [ $a -eq 1 ];then
    echo "$i 为奇数"   
  else
    echo "$i 为偶数"
  fi

done

求1到10的和

#!/bin/bash
#求1到10的和
sum=0
for ((i=1; i<=10; i++))
{
 sum=$[sum + $i] 
}
echo "1到10的和为 $sum"

猴子摘下了n个香蕉,当天吃掉一半多一个,第二天也是吃掉剩下香蕉一半多一个,到了第十天,香蕉只剩下了1个。问:猴子第一天摘了多少香蕉?

#!/bin/bash
#猴子摘下了n个香蕉,当天吃掉一半多一个,第二天也是吃掉剩下香蕉一半多一个,到了第十天,香蕉只剩下了1个。问:猴子第一天摘了多少香蕉?

n=1

for ((i=1; i<=9; i++))
do
   n=$[(n+1)*2]

done
   echo "第一天摘了 $n 个香蕉"

自动生成一个8位数的随机密码,密码范围可以是小大写字母和数字
 

#!/bin/bash
#自动生成一个8位数的随机密码,密码范围可以是小大写字母和数字

STR="0123456789shicaijundashuaigeABCDEFGHIJKLMNOPQRSTUVWXYZ"

for ((i=1; i<=8; i++))
do
   #获取字符串所有下标的随机数
   num=$[RANDOM % ${#STR}]
   #根据随机下标获取一个随机字符
   passd=${STR:num:1}
   #将随机字符进行拼接
   password+=$passd

done

echo "8位随机密码为 $password"

根据IP地址检查主机状态 使用ping命令检测 192.168.80.0~255 的主机,获取在线的主机清单

#!/bin/bash
#根据IP地址检查主机状态 使用ping命令检测 192.168.80.0~255 的主机,获取在线的主机清单

for num in {0..255}
do
  {
    hostip="192.168.80.$num"
    ping -c 4 -i 0.5 -W 2 $hostip &> /dev/null
    if [ $? -eq 0 ];then
      echo "$hostip is online" >> /root/host.txt
    fi
  }&
done
wait
cat /root/host.txt


 输出PATH环境变量的目录里所有以xy开头的文件

#!/bin/bash
#输出PATH环境变量的目录里所有以xy开头的文件

IFS_OLD=$IFS
IFS=$IFS':'

for i in $PATH
do
  #ls $i/xy* 2> /dev/null
  find $i -name "xy*" -print 2> /dev/null
done

求裴波拉切数:1,1,2,3,5,8,13,21,34,55,89...,数列从第3项开始每一项等于前两项之和,打印前10个元素

#!/bin/bash
#求裴波拉切数:1,1,2,3,5,8,13,21,34,55,89...,数列从第3项开始每一项等于前两项之和,打印前10个元素

first=1
second=1

for ((i=1; i<=10; i++))
do
  echo $first
  C=$[first + second]
  first=$second
  second=$C
done


输出PATH环境变量的目录里所有以se开头的文件

#!/bin/bash
#输出PATH环境变量的目录里所有以se开头的文件
IFS_OLD=$IFS
IFS=$IFS':'

for folder in $PATH
do
   find $folder -name "se*" 2> /dev/null

done

IFS=$IFS_OLD

求裴波拉切数列中的前十二个数值 

#!/bin/bash
#求裴波拉切数列中的前十二个数值
#前一个数
a=1 
#后一个数
b=1 


for i in {1..12}
do
  echo $a
  #获取第三个数值
  c=$[a + b]
  #设置下次的前一个数的值为原第二个数的值
  a=$b
  #设置下次的后一个数的值为原第三个数的值
  b=$c

done

使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数 

#!/bin/bash
#使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数
#减法正排
read -p "请输入一个0-255的整数:" num
#for i in 128 64 32 16 8 4 2 1
a=256
for ((i=1; i<=8; i++))
do
   a=$[a / 2]
   result=$[num - a]
   if [ $result -lt 0 ];then
      echo -n 0
   else
      echo -n 1
      let num-=$a	  
   fi
done
echo ''

请输入一个0-255的整数: 

#!/bin/bash

read -p "请输入一个0-255的整数:" num
for i in {1..8}
do
   yushu=$[num % 2]
   num=$[num / 2]
   
   result=$yushu$result
   
done
echo $result

while

 退出循环

设置猜测次数

 将一个200行的文件分割成多个50行的文件

#!/bin/bash
#将一个200行的文件分割成多个50行的文件

filepath=/root/day10/test.txt
#定义行数计数器变量
a=0
#定义文件序号变量
i=1

IFS_OLD=$IFS
IFS=$'\n'

for line in $(cat $filepath)
do
  let a++
  #判断是否已经读入50行,满50行则文件序号+1
  c=$[a % 50]
  if [ $c -eq 0 ];then
    echo $line >> /root/day10/test${i}.txt
    let i++
  else
    echo $line >> /root/day10/test${i}.txt
  fi
done

IFS=$IFS_OLD

 写个脚本实现 猜测0-999的随机价格,猜不中则一直猜


PRICE=$[RANDOM % 1000]
a=1
b=0
while [ $a -eq 1 ];
do
  read -p "请输入你猜测的价格(0-999):" NUM  
  let b++
  if [ $NUM -eq $PRICE ] && [ $b -le 5 ];then
    echo "恭喜!你猜中了!!"
    exit 0
  elif [ $NUM -gt $PRICE ] && [ $NUM -le 999 ];then
    if [ $b -lt 5 ];then
      echo "猜大了!!请重猜"
    else
      echo "真遗憾,猜测次数用完!"
      exit 1
    fi
  elif [ $NUM -le $PRICE ] && [ $NUM -ge 0 ];then
    if [ $b -lt 5 ];then
      echo "猜小了!!请重猜"
    else
      echo "真遗憾,猜测次数用完!"
      exit 2
    fi
  else
    echo "输入有误!请重新输入!!"
  fi
done

 批量添加用户 用户名称以stu开头,按数字顺序进行编号 一共添加20个用户,即stu1、stu2、……、stu20 初始密码均设为123456

#!/bin/bash
#批量添加用户 用户名称以stu开头,按数字顺序进行编号 一共添加20个用户,即stu1、stu2、……、stu20 初始密码均设为123456

i=1

while [ $i -le 20 ]
do
   useradd stu$i &> /dev/null
   echo 123456 | passwd --stdin stu$i > /dev/null
   echo "stu$i用户密码已创建完毕"
   let i++
done

计算从1到100所有整数的和  

#!/bin/bash
#计算从1到100所有整数的和

a=1
sum=0
read -p "请输入一个1到100的整数:" num
if [ $num -ge 1 ] && [ $num -le 100 ];then

  while [ $a -le $num ]
  do
    let sum+=a
    let a++

  done

  echo "1到100总和为$sum"

else
  echo "输入有误!"
fi

求从1到100所有整数的偶数和、奇数和 

#!/bin/bash
#求从1到100所有整数的偶数和、奇数和

a=1

jisum=0
ousum=0
while [ $a -le 100 ]
do
   b=$[a % 2]
   if [ $b -eq 0 ];then
     let ousum+=$a
   else
     let jisum+=$a
   fi
   let a++
done

echo -e "奇数和为 $jisum\n偶数和为 $ousum"

每10秒检查系统内存使用率是否超过80% 

#!/bin/bash
#每10秒检查系统内存使用率是否超过80%

while true
do
  memused=$(free | grep Mem | awk '{print $3}')
  memtotal=$(free | grep Mem | awk '{print $2}')

  usedpercent=$[memused * 100 / memtotal]

  if [ $usedpercent -ge 20 ];then
    echo "警告!当前系统内存使用率超过80%,当前使用率为 ${usedpercent}%"
  fi

  sleep 10
done

用while循环将一个200行的文件分割成多个50行的文件 

#!/bin/bash
#用while循环将一个200行的文件分割成多个50行的文件


filepath=/root/day10/test.txt
#定义行数计数器变量
a=0
#定义文件序号变量
i=1

cat $filepath | while read line
do
  let a++
  #判断是否已经读入50行,满50行则文件序号+1
  c=$[a % 50]
  if [ $c -eq 0 ];then
    echo $line >> /root/day10/test${i}.txt
    let i++
  else
    echo $line >> /root/day10/test${i}.txt
  fi
done

echo

until 循环

until [ 条件表达式 ]       until test 条件表达式        until 命令行 &> /dev/null      #条件不成立时才会循环执行do里面的命令序列
do
    命令序列
    ....
    变量的迭代方式
done

a=1
while [ $a -ge 10 ]
do
  echo $a
  let a++
done 

循环退出

exit     退出脚本进程      exit N    还可以指定脚本退出的状态返回码

break    跳出单个循环      break 2   跳出2层循环

continue  中止本次循环中的其它命令执行,但不会完全中止整个循环运行

for ((a=1; a<=6; a++))
do
    echo $a
    for ((b=1; b<=6; b++))
    do
        echo $b
        if [ $b -eq 3 ];then
            break
        fi
    
    done
done

 

A='11:22:33:44'
echo ${A%:*}  -->  11:22:33        #从最右边开始删内容,直到最近的一个 : 的位置
echo ${A%%:*} -->  11              #从最右边开始删内容,直到最远的一个 : 的位置
echo ${A#*:}  -->  22:33:44        #从最左边开始删内容,直到最近的一个 : 的位置
echo ${A##*:}  --> 44              #从最左边开始删内容,直到最远的一个 : 的位置 

 

 

#!/bin/bash

a=1
length=$(echo $PATH | awk -F: '{print NF}')

while [ $a -le $length ]
do
    folder=$(echo $PATH | awk -F: "{print \$$a}")
    find $folder -name "se*" 2> /dev/null
    let a++
done

将一个点分十进制格式的IP地址转换成点分二进制格式 

#!/bin/bash
#将一个点分十进制格式的IP地址转换成点分二进制格式
IP="192.168.80.30"

n=0

#外循环分割出IP的每段数值
for ((i=1; i<=4; i++))
do
     num=${IP%%.*}
     IP=${IP#*.}
     #echo $num
     #每次开始内循环前将result变量值清空 
     result=''
     #内循环使用余数倒排法进行数值转换
     for j in {1..8}
     do
         yushu=$[num % 2]
         num=$[num / 2]

         result=$yushu$result
     done
     let n++
     #使用n变量作为计数器,当n=4即转换IP的第4段数值后不再使用echo -n
     if [ $n -lt 4 ];then
         echo -n ${result}.
     else
         echo $result
     fi
done

输出PATH环境变量的目录里所有以se开头的不可执行文件

#!/bin/bash
#输出PATH环境变量的目录里所有以se开头的不可执行文件
IFS_OLD=$IFS
IFS=$IFS':'

for folder in $PATH
do
   file=$(find $folder -name "se*" 2> /dev/null)
   for i in $file
   do
       if [ ! -x $i ];then
           echo $i
       fi
   done
done

IFS=$IFS_OLD

 

#!/bin/bash

for ((a=1; a<=5; a++))
do
    echo "外循环a等于$a"
    for ((b=1; b<=5; b++))
    do
        echo -e "\t内循环b等于$b"
        if [ $b -ge 2 ] && [ $b -le 4 ];then
            continue
        fi
        echo -e "\t\tHello World"
    done
done

#!/bin/bash

a=1
while [ $a -le 5 ]
do
    echo "外循环a等于$a"
    let a++
    b=0
    while [ $b -lt 5 ]
    do
        let b++
        echo -e "\t内循环b等于$b"
        if [ $b -eq 3 ];then
            continue
        fi
        echo -e "\t\tHelloWorld"
    done
done

99乘法表

#!/bin/bash
#99乘法表

for ((second=1; second<=9; second++))
do
    for ((first=1; first<=second; first++))
    do  
       echo -n -e "${first}*${second}=$[first*second]\t"    
    done	
    echo ''
done

 

#!/bin/bash

a=1
while [ $a -le 9 ]
do
    b=1
    while [ $b -le $a ]
    do
        ji=$[a * b]
        echo -n -e "$a*$b=$ji\t"
        let b++
    done
    let a++
    echo ''
done

 输出由20个*组成的直线

#!/bin/bash
#输出由20个*组成的直线

for ((i=1; i<=20; i++))
do
    echo -n '*'

done
echo ''

输出长度为9个*,4行的矩形 

#!/bin/bash
#输出长度为9个*,4行的矩形

for ((a=1; a<=4; a++))
do
   for ((b=1; b<=9; b++))
   do
       echo -n '*'
   done
   echo ''
done

正直角三角形

#!/bin/bash
#正直角三角形

#外循环控制三角的行数
for ((a=9; a>=1; a--))
do
    #内循环控制每行输出的 * 的数量,第一行输出一个*,每行递增
    for ((b=9; b>=a; b--))
    do 
        echo -n "*"
    done
    echo ""
done

倒直角三角形 

#!/bin/bash
#倒直角三角形

#外循环控制行数
for ((a=1; a<=9; a++))
do
    #内循环控制每行输出的*数量,第一行输出最多,每行做递减
    for ((b=9; b>=a; b--))
    do
        echo -n "*"
    done
    echo ""
done

等腰三角形 

#!/bin/bash
#等腰三角形

read -p "请输入三角形的大小数值:" num

#控制三角形的行数
for ((a=1; a<=num; a++))
do
    #输出倒三角每行的空格数,第一行4个,第二行3个,每行做递减
    for ((i=num; i>a; i--))
    do
        echo -n " "
    done
    #输出等腰三角每行的*数,第一行输出1个,第二行3个,第三行5个,以此类推
    c=$[(a*2)-1]
    for ((b=1; b<=c; b++))
    do
        echo -n "*"
    done
    echo ""
done

倒等腰三角形,5行

#!/bin/bash
#倒等腰三角形,5行

#外循环控制三角的行数
for ((a=5; a>=1; a--))
do
    #输出空格正三角
    for ((b=5; b>a; b--))
    do
        echo -n " "
    done

    #输出倒等腰三角
    c=$[(a*2)-1]
    for ((i=1; i<=c; i++))    
    do
        echo -n "*"
    done
    echo ""
done

等腰三角形控制大小

菱形

#!/bin/bash
#菱形
read -p "请输入大小数值:" num

for ((a=1; a<=num; a++))
do
    for ((i=num; i>a; i--))
    do
        echo -n " "
    done
    c=$[(a*2)-1]
    for ((b=1; b<=c; b++))
    do
        echo -n "*"
    done
    echo ""
done


for ((a=num-1; a>=1; a--))
do
    #输出空格正三角
    for ((b=num; b>a; b--))
    do
        echo -n " "
    done

    #输出倒等腰三角
    c=$[(a*2)-1]
    for ((i=1; i<=c; i++))
    do
        echo -n "*"
    done
    echo ""
done

写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。

#!/bin/bash
#写个逛淘宝选购商品脚本,每家商店有五种商品选购(衣服500元,裤子400元,鞋子350元,帽子150元,袜子50元),每次选购完或不买都会提示用户是否继续逛下一家商店,如果不再继续逛的话进行购物车结算总额。

#店数的变量
n=1
#购物总额的变量
sum=0
while true
do
    echo "来到第${n}家商店的门口"
    read -p "是否进店逛逛?(yes/no)" doing
    until [ "$doing" == "no" ]
    do
        echo -e "欢迎光临!\n1:衣服¥500\n2:裤子¥400\n3:鞋子¥300\n4:帽子¥200\n5:袜子¥100\n6:放弃购买"
        read -p "请选择需要购买的商品序号:" num
        case $num in
        1)
            echo "衣服购买成功"
            let sum+=500
            ;;
        2)
            echo "裤子购买成功"
            let sum+=400
            ;;
        3)
            echo "鞋子购买成功"
            let sum+=300
            ;;
        4)
            echo "帽子购买成功"
            let sum+=200
            ;;
        5)
            echo "袜子购买成功"
            let sum+=100
            ;;
        6)
            echo "放弃购买"
            ;;
        *)
            echo "输入错误"
        esac
        read -p "是否继续在这家店购物?(yes/no)" doing
    done

    read -p "是否继续逛下一家店?(yes/no)" going
    if [ "$going" == "yes" ];then
        let n++
    else
        break
    fi
done

echo -e "一共逛了${n}家店,\n合计总消费为${sum}元"

通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件

#!/bin/bash
#通过脚本输出环境变量PATH所包含的所有目录以及其中的子目录和所有不可执行文件

length=$(echo $PATH | awk -F: '{print NF}')
path=$PATH


for ((i=1; i<=length; i++))
do
   folder=${path%%:*}
   path=${path#*:}
   
   find $folder -type d
   files=$(find $folder -type f)

   for j in $files
   do
       if [ ! -x $j ];then
           echo "$j 为不执行文件"
       fi
   done

done



等腰三角 图形拼接的方式

#!/bin/bash
#等腰三角 图形拼接的方式


#控制三角形的行数
for ((a=1; a<=9; a++))
do
    #输出空格倒三角
    for ((i=9; i>a; i--))
    do
        echo -n " "
    done
    #输出正直角三角
    for ((b=1; b<=a; b++))
    do
        echo -n "*"
    done
    #输出小一号的正直角三角,第一行不输出*
    for ((c=1; c<a; c++))
    do
        echo -n "*"
    done
    #每行换行
    echo ""
done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/619261.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SSH常用功能介绍-高级功能

一、介绍 SSH&#xff08;Secure Shell&#xff09;是一种用于远程登录和执行命令的网络协议&#xff0c;它提供了加密的连接&#xff0c;保证了数据的安全性。除了基本的远程登录功能外&#xff0c;SSH还提供了许多高级功能&#xff0c;以下是一些常用的高级功能介绍&#xf…

Redis集群安装

将Redis安装包分别上传到3个文件夹&#xff0c;并解压缩 #编译并指定安装目录 cd /root/usr/local/redis-cluster/redis-7001/redis-6.2.6/ make make PREFIX/root/usr/local/redis-cluster/redis-7001 install # cd /root/usr/local/redis-cluster/redis-7002/redis-6.2.6/ m…

FreeRTOS二值信号量

目录 一、信号量的概念 1、信号量的基本概念 2、信号量的分类 二、二值信号量简介 三、二值信号量相关API 1、创建二值信号量 2、释放二值信号量 3、获取二值信号量 四、二值信号量实操 1、实验需求 2、CubeMX配置 3、代码实现 一、信号量的概念 1、信号量的基本概…

使用 CloudFlare 后如何才能不影响搜索引擎蜘蛛爬虫

今天,明月给大家再次详细讲解一下,明月在使用 CloudFlare 后如何才能不影响搜索引擎蜘蛛爬虫对站点的抓取,因为这是很多首次使用 CloudFlare 的站长们容易忽略和触犯的问题,并不是 CloudFlare 不友好,而是 CloudFlare 的防火墙(WAF)实在是太给力。其实在【CloudFlare 如…

IDEA及Maven配置代理及Maven中央仓库配置详解

一、配置代理 首先&#xff0c;需要本地开启代理入口&#xff0c;如图。 这个跟你使用代理软件有关。像我使用的是qv2ray。 其次&#xff0c;idea配置代理&#xff0c;如图。 1.1 idea配置代理 打开Settings&#xff0c;如图 1.2 maven配置代理 maven配置代理&#xff0c;修…

2024湖南理工学院程序设计竞赛(同步赛) G. 区间递减(思维题 分类讨论 ST表)

题目 https://ac.nowcoder.com/acm/contest/82672/G 思路来源 出题人 涼風青葉7代码 题解 注意到三种情况即可&#xff0c; 第一种情况&#xff0c;10 9 8 1 2&#xff0c;保留1 第二种情况&#xff0c;6 5 10 9 4 4&#xff0c;保留5 4 4 第三种情况&#xff0c;6 5 4&…

基于Springboot的校园疫情防控管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园疫情防控管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

Python 整数类型(int)详解:无限范围与多种进制

引言 在编程中&#xff0c;整数是最基本的数据类型之一。不同编程语言对整数的处理方式各不相同&#xff0c;这往往影响到程序的性能和开发者的选择。本文将深入探讨 Python 中的整数类型&#xff08;int&#xff09;&#xff0c;其独特的处理方式&#xff0c;以及它在日常编程…

【数据结构】环状链表OJ题

✨✨✨专栏&#xff1a;数据结构 &#x1f9d1;‍&#x1f393;个人主页&#xff1a;SWsunlight 一、OJ 环形链表&#xff1a; 快慢指针即可解决问题: 2情况&#xff1a; 快指针走到结尾&#xff08;不是环&#xff09;快指针和尾指针相遇&#xff08;是环的&#xff09; …

C语言——文件缓冲区

一、用户缓冲区和系统缓冲区 缓冲区的概念确实可以分为多个层次&#xff0c;其中最常见的两个层次是用户缓冲区和系统缓冲区。 这里的用户缓冲区和系统缓冲区都包括输入输出缓冲区。 1、用户缓冲区&#xff08;User-space Buffer&#xff09; 用户缓冲区是指由用户程序&…

09.zabbix自定义模块并使用

zabbix自定义模块并使用 根据tcp的11中状态获取值&#xff0c;进行批量配置监控项 [rootyunlong66 ~]# cat /etc/zabbix/zabbix_agentd.d/tcp.conf UserParameterESTABLISHED,netstat -antp |grep -c ESTABLISHED UserParameterSYN_SENT,netstat -antp |grep -c SYN_SENT Use…

免费思维13招之七:空间型思维

免费思维13招之七:空间型思维 本篇给你带来的是空间型思维。 空间型思维,具体分为内部空间型思维和外部空间型思维。 什么叫内部空间型思维呢? 内部空间型就是充分利用现有空间或资源为社会提供免费服务,积累人气,增加流量,从而带动消费。 为什么你生意不好?为什么你…

银河麒麟服务器操作系统扩展磁盘容量方法(非LVM)

此方法的使用场景为&#xff1a;对普通的分区扩容&#xff0c;分区格式为xfs&#xff0c;不适用于lvm逻辑卷的扩容。 注意&#xff1a;扩展磁盘空间的操作风险较高&#xff0c;最好先做好备份&#xff0c;或在实验环境下操作成功后&#xff0c;再对目标系统进行扩容操作&#…

当代 Qt 正确的 安装方法 及 多版本切换

此文写于 20240511 首先去网站Index of /official_releases/online_installers下载一个安装器 安装器有什么用? 可以浏览安装版本 安装组件 安装器版本越能 能装的东西越多 现在只能选Qt5 和 Qt6 至于你公司用的Qt4 我也没招 见招时再拆招 安装器 默认国外源 可以换国内…

栈的讲解

栈的概念及结构 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底&#xff08;因为先进后出&#xff09;。栈中的数据元素遵守后进先出LIFO&#xff08;Last In Firs…

18 【Aseprite 作图】工具栏介绍

1 在没有输入法的情况下&#xff0c; 按住Shift 大写的N&#xff0c;就可以快速新建图层 ctrl z 撤回这个图层 2 双击图层&#xff0c;可以修改图层名称和属性 3 按住图层&#xff0c;拖动图层&#xff0c;可以把图层拉到 组&#xff0c;就可以方便一组一组管理图层 4 保存的…

Redis—图文详解高可用原因

本文不会讲解Redis的用途&#xff0c;关于用途会发另一片文章讲解&#xff0c;本文主要讲的是高可用的原理。 Redis高可用主要有以下三个原因&#xff1a;主从模式(上一篇讲Kafka的文章里有涉及到)&#xff0c;哨兵模式&#xff0c;Redis-Cluster(Redis集群)。 什么是主从模式…

消息队列——Kafka

1、什么是消息队列&#xff0c;什么是Kafka&#xff1f; 我们通常说的消息队列&#xff0c;简称MQ&#xff08;Message Queue&#xff09;&#xff0c;它其实就指消息中间件&#xff0c;比较流行的开源消息中间件有&#xff1a;Kafka、RabbitMQ、RocketMQ等。今天我们要介绍的…

基于yolov8+gradio目标检测演示系统设计

YOLOv8与Gradio&#xff1a;开启目标检测的可视化新篇章 随着人工智能技术的飞速发展&#xff0c;目标检测作为计算机视觉领域的重要分支&#xff0c;已经广泛应用于安防监控、自动驾驶、医疗影像等多个领域。而YOLO&#xff08;You Only Look Once&#xff09;系列算法作为目…

(七)SQL基础知识练习题(选择题)(上)#CDA学习打卡

本文整理了SQL基础知识相关的练习题&#xff0c;共133道&#xff0c;可作为CDA一级的补充习题&#xff0c;也适用于刚入门初级SQL想巩固基础的同学。来源&#xff1a;如荷学数据科学题库&#xff08;技术专项-SQL&#xff09;。暂时按照原题库顺序present&#xff0c;如有需要之…