shell脚本之例题详解

news2024/12/22 23:33:00

文章目录

  • 1 检查用户家目录中的test.sh文件是否存在,并且检查是否有执行权限
  • 2 提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误
  • 3 用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录
  • 4 编写能够自动生成一个6位随机密码的脚本
  • 5 输出192.168.80.0/24网段内在线主机的ip地址,统计不在线主机的台数,并把不在线主机的ip地址和不在线时的时间保存到/opt/mywork/ip.txt文件里
  • 6 编写能够按照每100行分割文件的脚本
  • 7 将一个点分十进制格式的IP地址转换成点分二进制格式,比如 255.255.255.255 ——> 11111111.11111111.11111111.11111111
  • 8 使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数
  • 9 用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警
  • 10 求从1到100所有整数的偶数和、奇数和
  • 11 提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和
  • 12 计算从1到100所有整数的和
  • 13 提示用户输入内容,使用if 语句判断输入的内容是否为整数
  • 14 提示用户输入内容,使用if 语句判断输入的内容是否为整数,并判断输入的内容是奇数还是偶数
  • 15 用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中

1 检查用户家目录中的test.sh文件是否存在,并且检查是否有执行权限

(1) 检查用户家目录中的test.sh文件是否存在,并且检查是否有执行权限.
在这里插入图片描述

[root@clr /opt/mywork]# cat 1.sh
#!/bin/bash
#检查用户家目录中的 test.sh 文件是否存在,并且检查是否有执行权
cd /root
 
test -f test.sh
 
if [ $? -eq 0 ];then
 
  test -x test.sh
  if [ $? -eq 0 ];then
    echo "有test.sh文件且可执行"
  else
    echo "有test.sh文件但不可执行"
  fi
 
else
  echo "没有test.sh文件"
fi
[root@clr /opt/mywork]# bash 1.sh
有test.sh文件但不可执行
[root@clr /opt/mywork]# cd /root
[root@clr ~]# ll
-rw-r--r--. 1 root root  131 4月  27 19:26 test.sh

[root@clr ~]# chmod +x test.sh    #修改test.sh这个文件的执行权限
[root@clr ~]# ll

-rwxr-xr-x. 1 root root  131 4月  27 19:26 test.sh

[root@clr ~]# cd /opt/mywork/
[root@clr /opt/mywork]# bash 1.sh
有test.sh文件且可执行

2 提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误

(2) 提示用户输入100米赛跑的秒数,要求判断秒数大于0且小于等于10秒的进入选拔赛,大于10秒的都淘汰,如果输入其它字符则提示重新输入;进入选拔赛的成员再进一步判断男女性别,男生进男生组,女生进女生组,如果输入错误请提示错误。

  • 进入决赛的整数成绩判断;
    在这里插入图片描述
[root@clr /opt/mywork]# cat 2.sh
read -p "请输入您100米赛跑的秒数:" sec 
 
if [ $sec -gt 0 ] && [ $sec -le 10 ];then
     read -p "请输入您的性别(男|女):" sex 
    if [ $sex == "男" ];then
       echo "恭喜进入选拔赛男生组"
    elif [ $sex == "女" ];then
       echo "恭喜进入选拔赛女生组"
  else
    echo "输入错误,请重新输入"
  fi  
else
    echo "很遗憾,您被淘汰了"
fi

[root@clr /opt/mywork]# bash 2.sh
请输入您100米赛跑的秒数:4   
请输入您的性别(男|女):nan
输入错误,请重新输入
[root@clr /opt/mywork]# bash 2.sh
请输入您100米赛跑的秒数:78
很遗憾,您被淘汰了
[root@clr /opt/mywork]# bash 2.sh
请输入您100米赛跑的秒数:2
请输入您的性别(男|女):男
恭喜进入选拔赛男生组
[root@clr /opt/mywork]# bash 2.sh
请输入您100米赛跑的秒数:5
请输入您的性别(男|女):女
恭喜进入选拔赛女生组
  • 进入决赛的小数成绩判断;
    在这里插入图片描述
[root@clr /opt/mywork]# cat 2.sh
#小数判断:
#!/bin/bash

#提示用户输入秒数
read -p "请输入100米赛跑的秒数:" second

#判断是否为数字
if [[ ! "$second" =~ ^[0-9]+(\.[0-9]+)?$ ]] #正则表达式的匹配方式 
then                    
  echo "输入错误,请重新输入。"
  exit 1
fi

#判断是否进入选拔赛
if (( $(echo "$second <= 10" | bc -l) )) #bc -l 命令会对输入进行数学计算,如果结果为真,则返回1 否则,返回0。
then    
  #进入选拔赛
  #提示用户输入性别
  read -p "请输入您的性别(男/女):" sex
  #判断性别
  if [[ "$sex" == "男" ]]
  then
    echo "恭喜您进入男生组!"
  elif [[ "$sex" == "女" ]]
  then
    echo "恭喜您进入女生组!"
  else
    echo "输入错误,请重新输入。"
  fi
else
  echo "很遗憾,您未能进入选拔赛。"
fi
[root@clr /opt/mywork]# bash 2.sh
请输入100米赛跑的秒数:9.8956664
请输入您的性别(男/女):男
恭喜您进入男生组!
[root@clr /opt/mywork]# bash 2.sh
请输入100米赛跑的秒数:4656.2
很遗憾,您未能进入选拔赛。
[root@clr /opt/mywork]# bash 2.sh
请输入100米赛跑的秒数:4.23
请输入您的性别(男/女):课件撒
输入错误,请重新输入。
[root@clr /opt/mywork]# bash 2.sh
请输入100米赛跑的秒数:4.6
请输入您的性别(男/女):女 
恭喜您进入女生组!

3 用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包到 /opt 目录

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim 8.sh

#!/bin/bash
#用case语句解压根据后缀名为 .tar.gz 或 .tar.bz2 的压缩包>到 /opt 目录
read -p "请输入你要解压的文件:" file
case $file in
*.tar.bz2)
echo "正在解压bz2文件至opt目录中....."
tar -jxvf $file -C /opt  #bz2文件类型的标志是j
;;

*.tar.gz)
echo "正在解压gz文件至opt目录中....."
tar -zxvf $file -C /opt  #gz文件类型的标志是z
;;

*)
echo "文件格式有误,请重新输入文件"

esac

4 编写能够自动生成一个6位随机密码的脚本

在这里插入图片描述

[root@clr /opt/mywork]# vim 1.sh

#!/bin/bash
#编写能够自动生成一个6位随机密码的脚本
str='1234567890'
#passwd=00  #切记此处绝不可将passwd变量赋值为0,该>代码中是实现字符串的拼接,而不是数字的累加
for i in {1..6}
do
  a=$[RANDOM % ${#str}] #${#str}计算出字符串str的长
度,a用于获得0-9之间的任意随机数字
  tmp=${str:a:1} #tmp根据任意数字a,从str字符串中获
得a下标及之后的一个字段
  passwd+=$tmp  #passwd=$($passwd+$tmp)将每次从str>字符串中的任意字段,进行累计拼接

done
echo "生成的6位随机密码为:$passwd"

5 输出192.168.80.0/24网段内在线主机的ip地址,统计不在线主机的台数,并把不在线主机的ip地址和不在线时的时间保存到/opt/mywork/ip.txt文件里

在这里插入图片描述

[root@clr /opt/mywork]# vim 4.sh

#!/bin/bash
ip=192.168.80.
j=0
for i in {1..5}
do
#{
  ping -c 3 -w 2 $ip$i &> /dev/null
  if [ $? -eq 0 ];then
    echo "在线的主机有:$ip$i"
  else
    let j++
    echo $ip$i >> /opt/mywork/ip.txt
    date >> /opt/mywork/ip.txt   #记录不在线主机的>时间
  fi
#  echo "不在线的主机台数有$j"
# }&
done
#wait  #该命令起到的效果是,等到并发执行结束后,才>会执行后面的命令
echo "不在线的主机台数有$j"

知识点拓展:并发执行时,自增变量会失效;
在这里插入图片描述

6 编写能够按照每100行分割文件的脚本

在这里插入图片描述

[root@clr /opt/mywork]# vim 2.sh

#!/bin/bash
#编写能够按照每100行分割文件的脚本

#定义记录行数的变量
a=0
#定义分割的文件序号标识
b=1

IFS_OLD=$IFS       #先备份保存环境变量
IFS=$'\n'    #在当前for循环中修改环境变量为以换行符进行分割
read -p "请输入您需要分割的文件(该文件的绝对路径):" file
for i in $(cat $file)
#for i in $(cat passwd)
do
 let a++

 c=$[a % 100]
 if [ $c -eq 0 ];then
  echo $i >> wc-$b
  let b++
 else
  echo $i >> wc-$b
 fi
done

IFS=$IFS_OLD    #运行完for循环条件后,再次将环境变量保存为原来
的值,防止影响后续的for循环操作                                                                                                

7 将一个点分十进制格式的IP地址转换成点分二进制格式,比如 255.255.255.255 ——> 11111111.11111111.11111111.11111111

方法一:多方位控制输出二进制;
在这里插入图片描述
·

[root@clr /opt/mywork]# vim 3.sh

#!/bin/bash
#使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数(余数倒排法)

read -p "请输入一个十进制的IP地址:" num
num1=$(echo $num | awk -F. '{print $1}')
num2=$(echo $num | awk -F. '{print $2}')
num3=$(echo $num | awk -F. '{print $3}')
num4=$(echo $num | awk -F. '{print $4}')

 if [ ${num1} -ge 0 ] && [ ${num1} -le 255 ]; then
    for ((i=1; i<=8; i++))   #由于十进制数在0到255之间,可得对应的二进制数最多为8位,循环八次
    do
        yu1="$[ $num1 %2 ]$yu1"     #将$num取余数并赋予$num1, 后面跟一个$num1表示$num1之前的反向输出
        num1=$[ $num1 /2 ]  #迭代更新num作为被除数的值
    done
 else
   echo "$num1输入错误!"
 fi

 if [ $num2 -ge 0 ] && [ $num2 -le 255 ]; then
    for ((i=1; i<=8; i++))   #由于十进制数在0到255之间,可得对应的二进制数最多为8位,循环八次
    do
        yu2="$[ $num2 %2 ]$yu2"     #将$num取余数并赋予$num1, 后面跟一个$num1表示$num1之前的反向输出
        num2=$[ $num2 /2 ]  #迭代更新num作为被除数的值
    done
 else
   echo "$num2输入错误!"
 fi

 if [ $num3 -ge 0 ] && [ $num3 -le 255 ]; then
    for ((i=1; i<=8; i++))   #由于十进制数在0到255之间,可得对应的二进制数最多为8位,循环八次
    do
        yu3="$[ $num3 %2 ]$yu3"     #将$num取余数并赋予$num1, 后面跟一个$num1表示$num1之前的反向输出
        num3=$[ $num3 /2 ]  #迭代更新num作为被除数的值
    done
 else
   echo "$num3输入错误!"
 fi

 if [ $num4 -ge 0 ] && [ $num4 -le 255 ]; then
    for ((i=1; i<=8; i++))   #由于十进制数在0到255之间,可得对应的二进制数最多为8位,循环八次
    do
        yu4="$[ $num4 %2 ]$yu4"     #将$num取余数并赋予$num1, 后面跟一个$num1表示$num1之前的反向输出
        num4=$[ $num4 /2 ]  #迭代更新num作为被除数的值
    done
 else
   echo "$num4输入错误!"
 fi

echo "十进制数${num}转换二进制为: $yu1.$yu2.$yu3.$yu4"

方法二:余数倒排法;

在这里插入图片描述

[root@clr /opt/mywork]# vim 3.sh

#!/bin/bash
#使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数(余数倒排法)

read -p "请输入一个十进制的IP地址:" num
num1=$(echo $num | awk -F. '{print $1}')
num2=$(echo $num | awk -F. '{print $2}')
num3=$(echo $num | awk -F. '{print $3}')
num4=$(echo $num | awk -F. '{print $4}')

for i in {1..8} #循环执行8次,确保将0-255范围内的十进制数转换为相应的八位二进制数
do
  a1=$[ num1 %2 ]$a1   #将IP地址中第一字段转换为二进制
  let num1=$[num1 /2]

  a2=$[ num2 %2 ]$a2    #将IP地址中第二字段转换为二进制 
  let num2=$[num2 /2]

  a3=$[ num3 %2 ]$a3  #将IP地址中第三字段转换为二进制
  let num3=$[num3 /2]

  a4=$[ num4 %2 ]$a4   #将IP地址中第四字段转换为二进制
  let num4=$[num4 /2]
done
echo "十进制的IP地址$num转换为二进制数为:${a1}.${a2}.${a3}.${a4}"

方法三:减数正排法;
在这里插入图片描述

[root@clr /opt/mywork]# vim 3.sh

#!/bin/bash
#减数正排法
read -p "请输入十进制的IP地址(0-255):" ip
b=0
IFSB=$IFS
IFS=$IFS'.'  #修改for循环默认的分隔符,将.分隔符添加到IFS环境变量中
for a in  $(echo $ip)  #IP字段以点分割为4段
do
  for i in {128,64,32,16,8,4,2,1}
  do
    NUM=$[$a - $i]
    if [ $NUM -lt 0 ];then
      echo -n "0"    #被减数不够减的情况,不换行输出0
    else
      echo -n "1"
      a=$NUM    #被减数够减的情况,不换行输出1
    fi
done

let b+=1
if [ $b -lt 4 ];then   #此处控制输出三个点
  echo -n "."
fi
done
echo   #此处控制输出空格,换行

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

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim 7.sh

#!/bin/bash
#使用循环语句将一个 0到255 之间的十进制数转换成8位数二进制数(余数倒排法)

read -p "请输入一个十进制整数:" num
a=$num   #用于记录原始十进制最初的值
if [ $num -ge 0 ] && [ $num -le 255 ]
then
    for ((i=1; i<=8; i++))   #由于十进制数在0到255之间,可得对应的二进制数最>多为8位,循环八次
    do
        yu="$[ $num %2 ]$yu"  #将$num取余数并赋予$num1, 后面跟一个$num1表示$num1之前的反向输出
        num=$[ $num /2 ]  #迭代更新num作为被除数的值
    done
  echo "十进制数$a 转二进制为: $yu"
else
  echo "输入错误!"
fi

9 用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续输错3次则报警

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim 6.sh

#!/bin/bash
#用户输入密码,脚本判断密码是否正确,正确密码为123456,输入正确提示正确信息,连续
输错3次则报警
password=123456
i=0

while true
do
  read -p "请用户输入密码:" input
  if [  $password == $input  ];then
    echo "密码输入正确"
    break
  elif [ $i -lt 2 ];then    #i符合取值的范围为01(先输入密码,后进行判断)
    let i+=1
    echo "密码第${i}次错误,请重新输入"
    continue      #终止本次循环,不再继续执行下面的代码
  else
    echo -e "错误已超过三次\a"  #\a发出警告声
    exit 2     #连续三次错误输错密码,退出当前环境,并设置错误退出的状态码为2
  fi
done

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

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim 3.sh

#!/bin/bash
# 求从1到100所有整数的偶数和、奇数和
sum_ou=0
sum_ji=0
for ((i=1;i<=100;i++))
do
  if [ $[ $i % 2 ] -eq 0 ] ;then  #$[ $i % 2 ]=0时,此时i是偶数,不等于0时,此时i是奇数
    let sum_ou+=$i
  else
    let sum_ji+=$i
  fi
done
echo "从1到100所有整数的偶数和为:$sum_ou"
echo "从1到100所有整数的奇数和为:$sum_ji"

11 提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim 2.sh

#!/bin/bash
#提示用户输入一个小于100的整数,并计算从1到该数之间所有整数的和

read -p "请您输入一个小于100的整数:" num
sum=0
i=1
until [ $i -gt $num ]  #设置条件:当i大于num时,循环停止
do
 # if [ $i -le $num ];then
        let sum+=$i  #符合条件的最后一个i一定等于num
        let i++
 # else
 #   echo "从1到您输入整数之间的和为:$sum"
#  fi
done
echo "从1到您输入整数之间的和为:$sum"

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

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim 1.sh

#!/bin/bash

#计算从1到100所有整数的和
sum=0
for ((i=1;i<=100;i++))
do
        let sum+=i
done
echo "1到100所有整数的和为:$sum"

13 提示用户输入内容,使用if 语句判断输入的内容是否为整数

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim 9.sh

#!/bin/bash
#if 语句判断输入的内容是否为整数。
read -p "请输入一个数字:" num     #只能进行整数运算,来>判断输入的数字是否是整数
if [ $num -eq $num ] &> /dev/null;then  #-eq只能用于整数>之间的运算
  echo "你输入的是整数"
else
  echo "你输入的不是整数"
fi                       

14 提示用户输入内容,使用if 语句判断输入的内容是否为整数,并判断输入的内容是奇数还是偶数

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim 10.sh

#!/bin/bash
#判断输入的内容是奇数还是偶数
read -p "请输入一个数字:" num
if [ $num -eq $num ] &> /dev/null;then
  echo "你输入的是整数"
    if [ $[ $num % 2 ] -eq 0 ];then
      echo "你输入的是偶数"
    else
      echo "你输入的是奇数"
    fi
else
  echo "你输入的不是整数"
fi

15 用case语句在/etc/init.d/目录中写一个firewalld脚本,并加入到系统服务管理中

使能够使用 service firewalld start|stop|restart|status 来管理firewalld服务,
要求如果命令选项不对,则提示 “用法: $0 {start|stop|status|restart}”

在这里插入图片描述

[root@clr /opt/mywork/demo]# vim firewalld.sh 

case $1 in
start)
        echo -n "正在启动 firewalld 服务 ... "
        systemctl start firewalld.service
        echo "OK"
;;
stop)
        echo -n "正在停止 firewalld 服务 ... "
        pkill "firewalld" &> /dev/null
        echo "OK"
;;
restart)
        echo -n "正在重启 firewalld 服务 ..."
        systemctl restart firewalld
        echo "OK"
;;
status)
        if pgrep "firewalld" &>/dev/null ; then  #pgrep是
通过程序的名字来查询进程的工具,一般是用来判断程序是否正>在运行。在服务器的配置和管理中,这个工具常被应用,简单明>了。
        echo "firewalld 服务已经启动."
        else
        echo "firewalld 服务已经停止."
        fi
;;
* )
        echo "用法: $0 {start|stop|status|restart}"

esac

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Selenium:集成测试报告

目录 一、分拆后的实现代码 二、创建用于执行所有用例的ALL_HTMLtest.py文件 三、集成测试报告 随着软件不断迭代功能越来越多&#xff0c;对应的测试用例也会呈指数增长。一个实现几十个功能的项目&#xff0c;对应的用例可能有上百个甚至更多&#xff0c;如果全部集成在一…

RocketMQ中单消费者订阅多个Topic,会阻塞消费吗?

RocketMQ 问题 背景是这样&#xff1a; 最近有个项目用MQ做消息流转&#xff0c;在RocketMQ集群模式下&#xff0c;一个消费者实例&#xff0c;订阅了两个Topic A、B。 Topic A&#xff1a;存储的是批量业务消息。 Topic B&#xff1a;存储的是单个业务消息。 有个小伙伴问我…

基于C++的职工管理系统

1、管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 本教程主要利用C++来实现一个基于多态的职工管理系统 公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责 普通员工职责:完成经理交给的任务 经理职责:完成…

分布式系统概念和设计-分布式文件系统服务体系结构和实践经验

分布式系统概念和设计 文件系统的特点 负责文件的组织&#xff0c;存储&#xff0c;检索&#xff0c;命名&#xff0c;共享和保护 文件包含数据和属性 数据&#xff1a;包含一系列数据项——8比特的字节&#xff0c;读写操作可访问任何一部分数据属性&#xff1a;用一个记录表…

一文详解 SCTP 协议

SCTP(Stream Control Transmission Protocol)流控制传输协议,由 RFC2960 定义。SCTP的设计目的是提供一种可靠的、面向消息的数据传输服务,以便于支持多点通信以及满足传输的可靠性需求。SCTP 目前广泛应用于VoIP、移动通信和云计算等领域。 SCTP 主要特点SCTP 消息结构SCTP …

Android9.0 原生系统SystemUI下拉状态栏和通知栏视图之锁屏通知布局

1.前言 在9.0的系统rom定制化开发中,对于系统原生systemui的锁屏界面的功能也是非常重要的,所以在锁屏页面布局中,也是有通知栏布局的,所以接下来对于息屏亮屏 通知栏布局的相关流程分析,看下亮屏后锁屏页面做了哪些功能 2.原生系统SystemUI下拉状态栏和通知栏视图之锁…

应用层开发想转Android framework开发要从何开始

前言 现如今&#xff0c;由于市面上应用App的更新逐渐变少&#xff0c;很多Android移动应用开发者都开始转型做系统开发&#xff0c;这比开发应用有趣多了&#xff0c;因为你可以探索系统模块的运行原理&#xff0c;从框架层面去了解它。 在应用层&#xff0c;你只需要配置好…

JAVA-异常

文章目录 1.异常的体系1.3异常的分类 2.异常的处理2.2异常的抛出throw2.3异常的捕获2.3.1异常声明throws2.3.2 try-catch捕获并处理2.3.3 finally 2.4 异常的处理流程 3.自定义异常类 1.异常的体系 Throwable&#xff1a;是异常体系的顶层类&#xff0c;其派生出两个重要的子类…

前端框架篇学习--选择命令式还是声明式

命令式与声明式定义 大白话&#xff1a;假期回家了&#xff0c;我想吃老妈的大盘鸡&#xff0c;然后老妈就去采购食材&#xff0c;剁鸡块&#xff0c;卤鸡肉&#xff0c;切土豆&#xff0c;然后爆炒起来&#xff0c;想方设法给我做好吃的大盘鸡。老妈上菜的餐桌&#xff0c;我…

SQL语句学习笔记(对库、表、字段、的操作)

查看mysql的状态 status 启动、停止 mySQL服务 图像界面方法&#xff1a; dos窗口执行&#xff1a;services.msc 控制面板–>管理工具–>服务 命令行方法&#xff1a; 启动&#xff1a; net start mysql80 停止&#xff1a; net stop mysql80 启动与环境变量 添加环境…

UnityShaderBook中消融dissolve详解

消融这个效果算得上游戏开发中用的比较多的一个效果&#xff0c;表现游戏对象消失的时候经常用到&#xff0c;这个效果实现也非常简单&#xff0c;因此在《UnityShader入门精要》中也就短短几句话讲完了&#xff0c;这里我想针对书中的效果详细讲解一下。 Shader源代码&#x…

(浙大陈越版)数据结构 第二章 线性结构 2.2 堆栈

目录 2.2.1 什么是堆栈 堆栈 什么是堆栈 例子&#xff1a;计算机如何进行表达式求值&#xff1f;如&#xff1a;56/2-3*4 后缀表达式 堆栈的抽象数据类型描述 2.2.2 堆栈的顺序存储实现 例子&#xff1a;用一个数组实现两个堆栈&#xff0c;要求能最大利用数组空间&…

路径之谜(DFS)-2016年蓝桥杯国赛

路径之谜-2016年国赛 1、题目描述2、解题思路3、代码实现1、题目描述 小明冒充 X 星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 nn* 个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能…

【Java虚拟机】JVM常见诊断命令和调试工具

1.JVM常用命令行参数jps和jinfo实操 准备测试代码 /*** author lixiang* date 2023/5/4 20:53*/ public class JVMTest {public static void main(String[] args) throws InterruptedException {Thread.sleep(1000000);} }&#xff08;1&#xff09;命令jps&#xff1a;全称 …

【exgcd】牛客练习赛 D-青蛙兔子的约会

D-青蛙兔子的约会_牛客练习赛111 (nowcoder.com) 题意&#xff1a; 思路&#xff1a; 感觉和那个青蛙的约会比较像 就是列了个方程&#xff1a; a*xb*yn 考虑用exgcd解方程 然后看x在[L,R]有没有解 做法就是先把x的最小整数解求出来&#xff0c;然后考虑它的通解 xx0b/…

2023年五一数学建模 B 题过程与结果

文章目录 第一问第二问数据时序分析Auto-ARIMA第二问求解解的情况A->Q:D-> AQ-V总快递数 第三问第四问遗传算法求解 第五问SARIMA 模型拟合季节性规律 第一问 见 2023 年 五一杯 B 题过程 代码&#xff08;第一问&#xff09; 第二问 第二问考虑是一个时序预测问题&a…

图像生成论文阅读:Latent Diffusion算法笔记

标题&#xff1a;High-Resolution Image Synthesis with Latent Diffusion Models 会议&#xff1a;CVPR2022 论文地址&#xff1a;https://ieeexplore.ieee.org/document/9878449/ 官方代码&#xff1a;https://github.com/CompVis/latent-diffusion 作者单位&#xff1a;慕尼…

数字乡村建设与示范项目可行性研究报告(word可编辑)

本资料来源公开网络&#xff0c;仅供个人学习&#xff0c;请勿商用&#xff0c;如有侵权请联系删除 5.1 “三平台”&#xff1a;建设支撑农业发展农村治理惠民服务的三大应用平 台 5.3.1 建设智慧农业综合服务平台 夯实数字农业基础&#xff0c;推进重要农产品全产业链大数据…

redis服务搭建,C++实现redis客户端,redis远程可视化工具

目录 redis简介redis服务搭建redis常用命令C实现redis客户端redis远程可视化工具:Another Redis DeskTop Manager redis简介 官方网址&#xff1a;https://redis.io/ 开源地址&#xff1a;https://github.com/redis 中文文档&#xff1a;http://www.redis.cn/documentation.ht…

造轮子系列】面试官问:你能手写Vuex吗(一)?

大厂面试题分享 面试题库 前后端面试题库 &#xff08;面试必备&#xff09; 推荐&#xff1a;★★★★★ 地址&#xff1a;前端面试题库 web前端面试题库 VS java后端面试题库大全 Vuex 是 Vue.js 的状态管理模式&#xff0c;它主要解决了组件之间共享状态时的问题。在本文…