RHCE的学习(22)
第四章 流程控制之条件判断
条件判断语句是一种最简单的流程控制语句。该语句使得程序根据不同的条件来执行不同的程序分支。本节将介绍Shell程序设计中的简单的条件判断语句。
if语句语法
单分支结构
# 语法1:
if <条件表达式>
then指令
fi
#语法2:
if <条件表达式>;then指令
fi
双分支结构
if <条件表达式>
then指令序列1
else指令序列2
fiif id username;thenecho ""
elseecho " cunzai"
fi
多分支结构
语法:
if 条件表达式1;then命令序列1
elif 条件表达式2;then命令序列2
....
else命令序列n
fi
案例
-
例1:编写脚本choice1.sh,利用单分支结构实现输入2个整数,输出最大值
[root@server ~]# vim choice1.sh
#!/bin/bash
read -p "请输入第一个整数: " x
read -p "请输入第二个整数: " y
max=$x
if (($max<y))
thenmax=$y
fi
echo "最大值:$max"
-
例2:面试题,编写脚本choice2.sh,判断系统内存剩余容量大小,若低于100M则发送消息进行告警
#!/bin/bash
free_mem=$( free -m | grep Mem | tr -s " " | cut -d " " -f4 )
if (($free_mem<100))
thenecho "警告,剩余内存:$free_mem ,低于警戒线100MB"
elseecho "剩余内存:$free_mem,空间足够."
fi
# free -m :表示显示内存即虚拟内存的信息,-m以MB单位显示数字
# grep Mem:表示过滤包含Mem所在行
# tr -s " ": 压缩空格为一个
# cut -d " " -f4 :以空格为间隔符,取其第4部分
-
扩展:编写脚本,判断当前系统剩余内存大小,如果低于100M,邮件报警管理员,使用计划任务,每10分钟检查一次。
-
[root@locaklhost ~]# echo "邮件正文" | mail -s "邮件主题" alice
分析:核心是如何获取当前剩余内存大小
[root@localhost ~]# free -m | grep "Mem:" |tr -s " " | cut -d" " -f4
600
[root@localhost ~]# free -m | awk '/Mem:/ {print $4}'
600
vim mem.sh
mem=free -m |grep Mem | tr -s " " | cut -d “ ” -f 4
free -m | grep Mem | awk -F " " ‘{print }’
if test $mem \< 100 ;thenecho 内存严重不足 | mail -s 内存报警 lxx@163.com
elseecho 内存足够
fi
-
例3:编写脚本choice3.sh,判断当前脚本的执行者,若不是root账户则提示,并退出
# 检查当前账户的4种方法
[root@server ~]# whoami
root#使用环境变量
[root@server ~]# echo $USER
root
#id -u,结果为零则为root
[root@server ~]# id -u
0[root@server ~]# echo $UID
0
[root@server ~]# vim choice3.sh
#!/bin/bash
if [ "$USER" != "root" ] #或者if [ !$c_user == root ];then
then echo "please switch user root"
fi
[root@server ~]# bash choice3.sh # root账户下执行
[root@server ~]# pwd
/root
[root@server ~]# mv choice3.sh / # 让普通账户能访问脚本,需要移动到/
[root@server ~]# chmod +x /choice3.sh # 赋予执行权限
[root@server ~]# ll /choice3.sh
-rwxr-xr-x 1 root root 81 6月 18 10:10 /choice3.sh
[root@server ~]# tail -1 /etc/passwd # 查看普通账户名
fox:x:1000:1000::/home/fox:/bin/bash
[root@server ~]# su fox # 切换账户
[fox@server root]$ cd /
[fox@server /]$ bash choice3.sh
please switch user root
-
例4:编写脚本choice4.sh,实现闰年的判断
[root@server ~]# vim choice4.sh
#!/bin/bash
read -p "请输入4位数整数年份: " year
if [ -n "$year" ] # 非空测试
thenif ((year%4==0)) && ((year%100!=0)) || ((year%400==0))thenecho "闰年"elseecho "平年"fi
elseecho "请输入有效4位整数年份"
fi
-
例5:判断数字大于500则执行big.sh 小于等于500则退出脚本,并输出报错信息
read -p "s数字" num
if [ $num -gt 500 ] ;thenbash /big.sh
elseexit 0
fi
-
例6:编写脚本choice5.sh,判断sshd是否运行
分析:核心在于判断进程是否运行的方法?
方法1:查看进程 systemctl is-active sshd systemctl status sshd
[root@localhost ~]# ps -elf | grep sshd | grep -v grep | wc -l
4
方法2:查看端口
本地查看netstat、ss、lsof --- https://www.jianshu.com/p/644e75af4405
远程查看telnet、nmap、nc
[root@localhost ~]# netstat -lnupt | grep 22 | wc -l
2
[root@localhost ~]# ss -lnupt | grep 22 | wc -l
2
[root@localhost ~]# lsof -i:22
[root@localhost ~]# nmap -p 22 127.0.0.1 | grep open | wc -l
1
# 分析
# 根据进程数判断
[root@server ~]# ps -ef | grep sshd | grep -v grep | wc -l
# 根据端口号判断
[root@server ~]# netstat -lntup | grep 22 | wc -l
[root@server ~]# vim choice5.sh
#!/bin/bash
num=$(ps -ef | grep sshd | grep -v grep | wc -l)
if (($num>0))
thenecho "sshd is running"
elseecho "sshd is not running"
fi方法2:
read -p "请输入要判断的程序名称:" server_name
count=`ps -aux | grep -cw $server_name`if [ $count -gt 1 ];thenecho $server_name服务已运行
elseecho $server_name服务未运行
fi
-
例7:面试题,编写脚本choice6.sh,判断主机是否存活
[root@server ~]# vim choice6.sh
#!/bin/bash
read -p "请输入测试主机的IP地址:" ip
ping -c 2 -w 3 $ip &> /dev/null
# -c 2 表示发送2个数据包,-w 3 表示等待3秒结束,注意:不能等待1秒结束,有可能第二个数据包没有ping完就结束了,会返回错误的状态码
if [ $? -eq 0 ]
thenecho "主机$ip 已运行"
elseecho "主机$ip 未运行"
fi
# 上例修改,使用循环测试多台主机是否存活,设置显示颜色
[root@server ~]# vim choice6.sh
#!/bin/bash
for ip in 192.168.48.{125..135}
do
ping -c 2 -w 3 $ip &> /dev/nullif [ $? -eq 0 ]thenecho -e "\e[1;31m!!主机 $ip 已运行!!\e[0m" # 高亮、红色elseecho "主机$ip 未运行"fi
done
-
例8:编写脚本choice7.sh,输入百分制成绩,判断等级成绩
[root@server ~]# vim choice7.sh
#!/bin/bash
read -p "请输入百分制成绩: " score
if [ -z $score ]
thenecho "未输入,请重新输入"
elif [ $score -lt 0 -o $score -gt 100 ]
thenecho "成绩输入有误,请输入0-100间数字"
elif [ $score -ge 90 ]
thenecho "成绩优秀"
elif [ $score -ge 80 ]
thenecho "成绩良好"
elif [ $score -ge 60 ]
thenecho "成绩及格"
elseecho "补考"
fi
- 扩展:根据用户输入成绩,判断优良中差。85-100 优秀--A 70-84 良好--B 60-69 合格--C 60分以下不合格--D
read -p "Please enter your score (0-100): " gradeif [ $grade -ge 85 ]
thenecho "$grade, A"
elif [ $grade -ge 70 ]
thenecho "$grade, B"
elif [ $grade -ge 60 ]
thenecho "$grade, C"
elseecho "$grade, D"
fi更完善的:(多层嵌套)
grade=$1if [[ $1 =~ ^[0-9]*$ ]];then #判断是否是纯数值,有小数也不行if [ $grade -ge 85 -a $grade -le 100 ];thenecho "$grade, A"elif [ $grade -ge 70 -a $grade -le 84 ];thenecho "$grade, B"elif [ $grade -ge 60 -a $grade -le 69 ];thenecho "$grade, C"elif [ $grade -ge 0 -a $grade -le 60 ];thenecho "$grade, D"elseecho "输入的成绩不在(0-100)范围内"fi
elseecho "请输入正确成绩"
fi解释:$1 =~ ^[0-9]*$
=~:正则符匹配
^[0-9]:以0-9开头的任意一个
*:匹配前一个字符任意次(正则符)
$:结束符(保证数值结束前后没有其他信息)
-
例9:编写脚本,根据用户输入的内容,判断是数字、字母、其它字符
[root@server ~]# vim choice8.sh
#!/bin/bash
read -p "请输入数字、字母、符号: " str
if echo $str | grep [a-zA-Z] > /dev/null
thenecho "字母"
elif echo $str | grep [0-9] > /dev/null
thenecho "数字"
elseecho "符号"
fi
-
例10:编写脚本choice9.sh,判断当前主机cpu生产商
其信息在/proc/cpuinfo文件中vendor_id一行中。 如果其生产商为GenuineIntel,就显示其为Intel公司; 如果其生产商为AuthenticAMD,就显示其为AMD公司; 否则,就显示无法识别;
[root@server ~]# vim choice9.sh
#!/bin/bash
vendor=$(grep "vendor_id" /proc/cpuinfo | uniq | cut -d " " -f2)
if [ $vendor == GenuineIntel ]
then echo "Intel"
elif [ $vendor == AuthenticAMD ]
then echo "AMD"
else echo "other"
fi
- 例11:两个整数比较大小(if嵌套)
read -p "请输入整数" a
read -p "在次输入" b
if [ -n "$a" -a -n "$b" ];then[[ "$a" =~ ^[0-9]+$ ]] && [[ "$b" =~ ^[0-9]+$ ]]# echo "$a"|[ -n "`sed -n '/^[0-9]*$/p'`" ] && echo "$b" |[-n "`sed -n '/^[0-9]*$/p'`"]if [ $? -eq 0 ];thenif [[ "$a" -gt "$b" ]];thenecho 第一个数大于第二个数elif [[ "$a" -lt "$b" ]];thenecho 第一个数小于第二个数elseecho 两个数相等fielseecho 请输入数字fi
elseecho 输入信息不能为空
fi
exit退出程序 (复习)
- exit语句的基本作用是终止Shell程序的执行。
- 除此之外,exit语句还可以带一个可选的参数,用来指定程序退出时的状态码。
- exit语句的基本语法如下: exit status
- 其中,status参数表示退出状态,该参数是一个整数值,其取值范围为0~255。
- 与其他的Shell命令的一样,Shell程序的退出状态也储存在系统变量$?中,因此,用户可以通过该变量取得Shell程序返回给父进程的退出状态码。
case多条件判断
case可针对谋变量不同的值结果进行情景分析。
格式
case 变量名 in值1)指令1;;值2)指令2;;值3)指令3 ;;*)默认
esac也可以写在一行,例: 值1) 指令1 ;;
最后一个;;可以写也可以不写
执行过程
-
case语句会将该变量的值与 )括号中的值相比较,如果与某个值相等,则执行对应语句。
-
当遇到“;;”符号时,就跳出case语句,执行esac语句后面的语句。
-
如果没有与任何一个值相匹配,则执行*)后面的一组语句
示例
-
例1:编写脚本choice10.sh,对上例7的百分制成绩判断等级成绩进行改写
[root@server ~]# vim choice10.sh
#!/bin/bashread -p "请输入百分制成绩: " scorecase $score in9[0-9]|100)echo "成绩优秀";;8[0-9])echo "成绩良好";;6[0-9]|7[0-9])echo "成绩及格";;*)echo "补考"
esac
-
例2:判断今天是星期几,根据星期几来判断今天是工作日还是休息日
[root@server ~]# vim choice11.sh
#!/bin/bash
a=`date +%w` #将日期转换为星期几,用数字0-6表示
case $a in
[1-5])echo "今天是工作日,社畜没有休息日哦。";;
[06])echo "哦~今天是休息日呢,请好好休息哦~";;
esac
- 例3:由用户从键盘输入一个字符,并判断该字符是否为字母、数字或者其他字符, 并输出相应的提示信息
read -p "Please enter a character, press enter to continue: " -n 1 str
if echo "$str"|grep "[a-zA-Z]" >/dev/null
thenecho "Input is letter"
elif echo "$str"|grep "[0-9]" >/dev/null
thenecho "Input is number"
elseecho "Input is other"
firead -p "Please enter a character, press enter to continue: " -n 1 KEY
case "$KEY" in[[:alpha:]])echo "Input is letter";;[0-9])echo "Input is number";;*)echo "Input is other characters"
esac
- 例4:将判断分数范围多分支语句用case语句实现
read -p "Please enter your score (0-100): " grade
case "$grade" in8[5-9]|9[0-9]|100) #{85..100} [85-100]echo "$grade, A";;7[0-9]|8[0-4])echo "$grade, B";;6[0-9])echo "$grade, C";;*)echo "$grade, D"
esac
练习
-
开发rsync起停脚本
[root@server ~]# vim cc_rsync
#!/bin/bash
if [ "$#" -ne 1 ]; thenecho "Usage: $0 {start|stop|restart}"exit 1
fi
# 当用户选择是start
case "$1" in"start")/usr/bin/rsync --daemonsleep 1if [ `netstat -lntup | grep rsync | wc -l` -ge 1 ]; thenecho "rsync is started"exit 0fi;;"stop")killall rsync &>/dev/nullsleep 1if [ `netstat -lntup | grep rsync | wc -l` -eq 0 ]; thenecho "rsync is stopped"exit 0fi;;"restart")if [ `netstat -lntup | grep rsync | wc -l` -ge 1 ]; thenkillall rsync &>/dev/nullsleep 1fi/usr/bin/rsync --daemonsleep 1start_flag=`netstat -lntup | grep rsync | wc -l`#if [ "$stop_flag" -eq 0 -a "$start_flag" -ge 1 ]; then#if [ "$stop_flag" -eq 0 && "$start_flag" -ge 1 ]; thenif [ `netstat -lntup | grep rsync | wc -l` -ge 1 ]; thenecho "rsync is restarted"exit 0fi;;*)echo "Usage: $0 {start|stop|restart}"
esac
扩展远程端口监听 telnet nmap nc
-
nc:netcat 是一个简单的 Unix 工具,它使用 TCP 或 UDP 协议去读写网络连接间的数据。
-
nmap
:(“Network Mapper”)是一个用于网络探索和安全审计的开源工具,被设计用来快速地扫描大规模网络。 -
telnet
:被用来交互地通过 TELNET 协议与另一台主机通信。
1)nc
即 netcat
。netcat
是一个简单的 Unix 工具,它使用 TCP 或 UDP 协议去读写网络连接间的数据。
它被设计成为一个可信赖的后端工具,可被直接使用或者简单地被其他程序或脚本调用。
与此同时,它也是一个富含功能的网络调试和探索工具,因为它可以创建你所需的几乎所有类型的连接,并且还拥有几个内置的有趣功能。
netcat
有三类功能模式,它们分别为连接模式、监听模式和隧道模式。
nc
(netcat
)命令的一般语法:
$ nc [-options] [HostName or IP] [PortNumber]
在下面的例子中,我们将检查远程 Linux 系统中的 22 端口是否开启。
假如端口是开启的,你将获得类似下面的输出。
# nc -zvw3 192.168.1.8 22
Connection to 192.168.1.8 22 port [tcp/ssh] succeeded!
命令详解:
-
nc
:即执行的命令主体; -
z
:零 I/O 模式(被用来扫描); -
v
:显式地输出; -
w3
:设置超时时间为 3 秒; -
192.168.1.8
:目标系统的 IP 地址; -
22
:需要验证的端口。
当检测到端口没有开启,你将获得如下输出:
# nc -zvw3 192.168.1.95 22
nc: connect to 192.168.1.95 port 22 (tcp) failed: Connection refused
2)nmap
(“Network Mapper”)是一个用于网络探索和安全审计的开源工具,被设计用来快速地扫描大规模网络,尽管对于单个主机它也同样能够正常工作。
nmap
以一种新颖的方式,使用裸 IP 包来决定网络中的主机是否可达,这些主机正提供什么服务(应用名和版本号),它们运行的操作系统(系统的版本),它们正在使用的是什么包过滤软件或者防火墙,以及其他额外的特性。
尽管 nmap
通常被用于安全审计,许多系统和网络管理员发现在一些日常任务(例如罗列网络资产、管理服务升级的计划、监视主机或者服务是否正常运行)中,它也同样十分有用。
nmap
的一般语法:
$ nmap [-options] [HostName or IP] [-p] [PortNumber]
假如端口是开启的,你将获得如下的输出:
# nmap 192.168.1.8 -p 22
Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 03:37 IST Nmap scan report for 192.168.1.8 Host is up (0.00031s latency).
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 host up) scanned in 13.06 seconds
假如端口没有开启,你将得到类似下面的结果:
# nmap 192.168.1.8 -p 80
Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 04:30 IST
Nmap scan report for 192.168.1.8
Host is up (0.00036s latency).
PORT STATE SERVICE
80/tcp closed http
Nmap done: 1 IP address (1 host up) scanned in 13.07 seconds
3)telnet
命令被用来交互地通过 TELNET 协议与另一台主机通信。
telnet
命令的一般语法:
$ telnet [HostName or IP] 80
假如探测成功,你将看到类似下面的输出:
$ telnet 192.168.1.9 22
Trying 192.168.1.9...
Connected to 192.168.1.9.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.3
^]
Connection closed by foreign host.
假如探测失败,你将看到类似下面的输出:
$ telnet 192.168.1.9 80
Trying 192.168.1.9...
telnet: Unable to connect to remote host: Connection refused
示例 2:检查主机是否存活,并输出结果
分析:最简单方式是通过ping命令检测ping -c 2 -W 1 192.168.95.16 &> /dev/null通过$?判断,也可以直接 if ping -c 2 -W 1 192.168.95.16 &> /dev/null测试
扩展:
[root@bogon day04]# dnf whatprovides nmap #查询命令nmap所能提供的安装包
相关文章:
RHCE的学习(22)
第四章 流程控制之条件判断 条件判断语句是一种最简单的流程控制语句。该语句使得程序根据不同的条件来执行不同的程序分支。本节将介绍Shell程序设计中的简单的条件判断语句。 if语句语法 单分支结构 # 语法1: if <条件表达式> then指令 fi #语法2&#x…...
【前端知识】简单讲讲什么是微前端
微前端介绍 一、定义二、背景三、核心思想四、基本要素五、核心价值六、实现方式七、应用场景八、挑战与解决方案 什么是single-spa一、核心特点二、核心原理三、应用加载流程四、最佳实践五、优缺点六、应用场景 什么是 qiankun一、概述二、特点与优势三、核心功能四、使用场景…...
AWS IAM
一、介绍 1、简介 AWS Identity and Access Management (IAM) 是 Amazon Web Services 提供的一项服务,用于管理 AWS 资源的访问权限。通过 IAM,可以安全地控制用户、组和角色对 AWS 服务和资源的访问权限。IAM 是 AWS 安全模型的核心组成部分,确保只有经过授权的用户和应…...
丹摩|丹摩助力selenium实现大麦网抢票
丹摩|丹摩助力selenium实现大麦网抢票 声明:非广告,为用户体验 1.引言 在人工智能飞速发展的今天,丹摩智算平台(DAMODEL)以其卓越的AI算力服务脱颖而出,为开发者提供了一个简化AI开发流程的强…...
基于Qt/C++/Opencv实现的一个视频中二维码解析软件
本文详细讲解了如何利用 Qt 和 OpenCV 实现一个可从视频和图片中检测二维码的软件。代码实现了视频解码、多线程处理和界面更新等功能,是一个典型的跨线程图像处理项目。以下分模块对代码进行解析。 一、项目的整体结构 项目分为以下几部分: 主窗口 (M…...
智慧理财项目测试文档
目录 幕布思维导图链接:https://www.mubu.com/doc/6xk3c7DzgFs学习链接:https://www.bilibili.com/video/BV15J4m147vZ/?spm_id_from333.999.0.0&vd_source078d5d025b9cb472d70d8fda1a7dc5a6智慧理财项目测试文档项目介绍项目基本信息项目业务特性系…...
R | 统一栅格数据的坐标系、分辨率和行列号
各位同学,在做相关性等分析时,经常会遇到各栅格数据间的行列号不统一等问题,下面的代码能直接解决这类麻烦。以某个栅格数据的坐标系、分辨率和行列号为准,统一文件夹内所有栅格并输出到新的文件夹。 代码只需要更改输入输出和ti…...
C++学习——编译的过程
编译的过程——预处理 引言预处理包含头文件宏定义指令条件编译 编译、链接 引言 C程序编译的过程:预处理 -> 编译(优化、汇编)-> 链接 编译和链接的内容可以查阅这篇文章(点击查看) 预处理 编译预处理是指&a…...
当你要改文件 但是原来的文件内容又不能丢失的时候,拷贝一份(备注原来的),然后添加后缀:.bak
当你要改文件 但是原来的文件内容又不能丢失的时候,拷贝一份(备注原来的),然后添加后缀:.bak !!!文件不要直接删除,若你以后要还原的话会找不到...
MATLAB神经网络(五)——R-CNN视觉检测
5.1 目标分类、检测与分割 在计算机视觉领域,目标分类、检测与分割是常用计数。三者的联系与区分又在哪呢?目标分类是解决图像中的物体是什么的问题;目标检测是解决图像中的物体是什么,在哪里的问题;目标分割时将目标和…...
mock.js:定义、应用场景、安装、配置、使用
前言:什么是mock.js? 作为一个前端程序员,没有mockjs你不感觉很被动吗?你不感觉你的命脉被后端那个男人掌握了吗?所以,我命由我不由天!学学mock.js吧! mock.js 是一个用于生成随机…...
【GAT】 代码详解 (1) 运行方法【pytorch】可运行版本
GRAPH ATTENTION NETWORKS 代码详解 前言0.引言1. 环境配置2. 代码的运行2.1 报错处理2.2 运行结果展示 3.总结 前言 在前文中,我们已经深入探讨了图卷积神经网络和图注意力网络的理论基础。还没看的同学点这里补习下。接下来,将开启一个新的阶段&#…...
Transformer中的Self-Attention机制如何自然地适应于目标检测任务
Transformer中的Self-Attention机制如何自然地适应于目标检测任务: 特征图的降维与重塑 首先,Backbone(如ResNet、VGG等)会输出一个特征图,这个特征图通常具有较高的通道数、高度和宽度(例如CHWÿ…...
2411rust,1.75.0
原文 Rust团队很高兴地声明推出Rust的新版本1.75.0. 如果你rustup安装了以前版本的Rust,你可如下取1.75.0: $ rustup update stable1.75.0稳定版中的功能 async fn和特征中的返回位置impl Trait. 指针字节偏移API 原始指针(*const T和*mutT)过去主要支持,T为单位的操作.如…...
远程办公新宠:分享8款知识共享软件
远程办公模式下,知识共享软件成为了团队协作和沟通的重要工具。以下是8款备受推崇的知识共享软件: 1、HelpLook AI知识库 简介:HelpLook是一款快速搭建AI知识库的系统,具备强大功能,如快速精准的知识检索、灵活定制的…...
3.9MayBeSomeAssembly
就是先从数组里,乘4得到正确地址 32(&s3),s3是基址,32是偏移量,就是先从数组里取出数到临时寄存器,然后再在临时寄存器上加上变量,最后再把临时寄存器上的变量存到数组里,偏移量࿰…...
i春秋-签到题
练习平台地址 竞赛中心 题目描述 题目内容 点击GUESS后会有辨识细菌的选择题 全部完成后会有弹窗提示 输入nickname后提示获得flag F12检查 元素中没有发现信息 检查后发现flag在控制台中 flag flag{663a5c95-3050-4c3a-bb6e-bc4f2fb6c32e} 注意事项 flag不一定要在元素中找&a…...
TypeScript 中扩展现有模块的用法
declare module 是 TypeScript 中用于扩展现有模块的特性。它允许开发者在已有模块的基础上,添加新的功能(比如扩展接口、添加类型声明等)。通过 declare module,可以将额外的声明合并到原模块中。以下是用法详解: 用…...
【报错记录】解决Termux中pulseaudio启动报错,报:E: [pulseaudio] main.c: Daemon startup failed.
前言 在尝试使用Termux-X11启动Minecraft过程中,不知道怎么回事原本好好的pulseaudio居然无法启动了,一直在报: E: [pulseaudio] main.c: Daemon startup failed. 重装了好几次也没用解决方案如下。 排除重复启动 如果pulseaudio之前已经…...
Java list
在 Java 中,链表(LinkedList)是一个非常重要的数据结构,它可以动态地插入和删除元素,因此比数组更灵活。Java 提供了 LinkedList 类,该类实现了 List 接口,并且是基于双向链表实现的,…...
MAC借助终端上传jar包到云服务器
前提:保证工程本地已打包完成:图中路径即为项目的target目录下已准备好的jar包 第一步:打开终端(先不要连接自己的服务器),输入下面的上传命令: scp /path/to/local/app.jar username192.168.1…...
对原jar包解压后修改原class文件后重新打包为jar
文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class(不好用-不推荐直接跳过)提醒 参考资料-推荐阅读拓…...
YY币支付系统改源码(改良版本)
Nginx :1.20.1(版本都可以) MySQL:5.6.50(兼容该版本其他不知道) 简单优化服务器(可不安装,看要求) PHP安装扩展名称:fileinfo | opcache | imagemagick …...
【Swift】类型标注、类型安全和类型推断
文章目录 类型标注类型安全和类型推断什么是类型安全和类型推断为什么说Swift是一门安全语言类型安全带来的好处 类型标注 当你声明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类型。如果要添加类…...
06 —— Webpack优化—压缩过程
css代码提取后想要压缩 —— 使用css-minimizer-webpack-plugin插件 下载 css-minimizer-webpack-plugin 本地软件包 npm install css-minimizer-webpack-plugin --save-dev 配置 webpack.config.js 让webpack拥有该功能 const CssMinimizerPlugin require(css-minimizer-…...
uniapp页面样式和布局和nvue教程详解
uniapp页面样式和布局和nvue教程 尺寸单位 uni-app 支持的通用 css 单位包括 px、rpx px 即屏幕像素。rpx 即响应式px,一种根据屏幕宽度自适应的动态单位。以750宽的屏幕为基准,750rpx恰好为屏幕宽度。屏幕变宽,rpx 实际显示效果会等比放大…...
单条推理转批量推理prompt
为了将单条推理程序改为批量推理程序,并实现您的要求,我们需要进行以下步骤: 输入的图片和视频都是随机从视频文件夹、图片文件夹挑选,组成输入对: 需要编写一个函数来读取指定文件夹中的所有图片和视频文件。 使用随…...
网络安全审计概述与分类
目录 网络安全审计概述等保五个级别对审计要求网络安全审计系统组成网络安全审计系统类型 网络安全审计概述 4A分别是认证、授权、账号、审计 网络安全审计是指对网络信息系统的安全相关活动信息进行获取、记录、存储分析和利用的工作。 网络安全审计的作用在于建立“事后”…...
【已解决】“EndNote could not connect to the online sync service”问题的解决
本人不止一次在使用EndNote软件时遇到过“EndNote could not connect to the online sync service”这个问题。 过去遇到这个问题都是用这个方法来解决: 这个方法虽然能解决,但工程量太大,每次做完得歇半天身体才能缓过来。 后来再遇到该问…...
数据脱敏工具:基于 FFmpeg 的视频批量裁剪
在数据处理和隐私保护领域,数据脱敏是一项重要的任务,尤其是在处理包含敏感信息的视频数据时。本文介绍了一种使用 Python 和 FFmpeg 实现的视频批量裁剪工具,该工具可以将视频中的敏感区域裁剪掉,从而实现数据脱敏。通过使用 PyI…...
网站 png逐行交错/推广普通话宣传周
MySQL Community Downloads MySQL社区版压缩包下载地址 https://dev.mysql.com/downloads/mysql/ 解压到了C盘 没打算设置环境变量 右键点击开始 或 winx 以管理员身份打开 PowerShell 进入到安装目录下的 bin 目录 可以输入cd 后, 拖动 bin 文件夹到控制台&…...
做网站如何找项目/seo排名第一的企业
Netty Netty是什么? 本质:JBoss做的一个Jar包 目的:快速开发高性能、高可靠性的网络服务器和客户端程序 优点:提供异步的、事件驱动的网络应用程序框架和工具 通俗的说:一个好使的处理Socket的东东 如果没有Netty&…...
阿里云 wordpress cdn/seo的工作内容主要包括
今天为了将mxnet框架转为tensorflow 框架,参考了下面帖子来操作一下 pip install mmdnn 装好后,页面有提示,就先忽略掉了 mxnet-cu100 1.4.1 has requirement numpy<1.15.0,>1.8.2, but youll have numpy 1.16.4 which is incompatible. mxnet-cu90 1.4.1 has require…...
白云区网站建设mg126/百度快照优化排名推广怎么做
简介 “const” 是constant的缩写, 表示"海枯石烂, 恒定不变, 一旦相伴, 永不变心". how to 理解 将类型去掉看 const 修饰谁, 谁就拥有了不变的特性. 举例 const int a 10; 去掉 int, 变成了 const a 10, a的值不变. int const a 10; 去掉 int, 变成了 c…...
文化共享工程网站建设情况/河北seo网络推广
今天我们就来探讨一篇论文《One Model to Serve All: Star Topology Adaptive Recommender for Multi-Domain CTR Prediction》,该论文称一个模型能服务所有的点击率模型。传统的推荐系统,都是每个业务领域训练一个模型服务该业务,然而&#…...
想自学做网站/爱站网长尾关键词挖掘
字符串内置方法的使用 设置字符串:st‘hello kitty’ 1、统计元素个数 Print(st.count(‘l’)) #结果为2 2、首字母大写 Print(st.capitalize()) #结果为Hello kitty 3、居中 Print(st.center(20,’#’)) #结果为…...