shell 循环语句
一、命令补充
1. echo 命令
echo -n 表示不换行输出
echo -e 表示输出转义符
常用的转义符有:
选项 | 作用 |
---|---|
\r | 光标移至行首,并且不换行 |
\s | 当前shell的名称,如bash |
\t | 插入Tab键,制表符 |
\n | 输出换行 |
\f | 换行,但光标仍停留在原处 |
\ | 表示插入"\"本身转义 |
\b | 表示退格 不显示前一个字符 |
\c | 抑制更多的输出或不换行 |
关于 \b 用法
[root@localhost ~]#echo -e "12345\b678"
##退格删除前面的字符
1234678
[root@localhost ~]#echo -e "12345\b\b678"
123678
[root@localhost ~]#echo -e "12345\b\b\b678"
12678
[root@localhost ~]#echo -e "12345\b\b\b\b678"
16785
###注意退格键和末尾的字符相关,超过末尾的字符数量 会出bug
关于换行
[root@localhost ~]#echo "123456"
123456
#正常换行输出[root@localhost ~]#echo -n "123456"
123456[root@localhost ~]#
#不换行输出[root@localhost ~]#echo -e "123456\c"
123456[root@localhost ~]#
[root@localhost ~]#echo -e "123456\c789"
123456[root@localhost ~]####\c 注意 使用在数字中间会把后面内容删除使用 \n 可以实现输出换行(回车)的操作。比如实现自动硬盘分区#!/bin/bash
read -p "请输入你要分区的设备(/dev/sd*):" disk
read -p "请输入你要分区的大小(+数字G):" numecho -e "n\n\n\n\n${num}\nw\n " | fdisk ${disk}
2. data 命令
- date查看当前系统时间
- -d 你描述的日期,显示指定字符串所描述的时间,而非当前时间
- %F 完整日期格式,等价于 %Y-%m-%d
- %T 时间(24小时制)(hh:mm:ss)
[root@localhost data]#date #查看当前系统时间
2024年 01月 25日 星期四 22:33:46 CST[root@localhost data]#date +%F #完整格式显示日期
2024-01-25[root@localhost data]#date +%T #完整格式显示时间
22:40:39[root@localhost data]#date +%F-%T #时间与日期使用 - 号分隔
2024-01-25-22:42:37
[root@localhost data]#date '+%F '%T #时间与日期使用 空格 号分隔
2024-01-25 22:42:48[root@localhost data]#date -d "-3 day" #前三天
2024年 01月 22日 星期一 22:45:40 CST[root@localhost data]#date -d "+3 day" #后三天
2024年 01月 28日 星期日 22:45:46 CST[root@localhost data]#date -d '-3 day' '+%F '%T
2024-01-22 22:46:20日历:
[root@localhost data]#cal 2024
#查看日历[root@localhost data]#cal 9 2024 #查看哪一年哪一月的日历。九月 2024
日 一 二 三 四 五 六1 2 3 4 5 6 78 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30关于 计划任务 crontab 里 不能有 % 号,想要使用 要加 \ 转义符30 2 * * * /bin/cp -a /etc/ /data/etc`date +\%F_\%T`!!!!!!!!!不加转义符号无法识别!!!!!!!!!!!
30 2 * * * /bin/cp -a /etc/ /data/etc`date +‘%F_%T’` #无法执行。
3. seq
[root@localhost data]#seq 3
1
2
3[root@localhost data]#seq 1 2 10
#从1 开始 步长为2 到10 为止
1
3
5
7
9[root@localhost data]#seq 0 2 10
#从 0 开始 步长为 2 到10 为止 都为偶数。
0
2
4
6
8
10[root@localhost data]#seq 3 -1 1
#从 3 开始 依次 减 1 ,到 1 为止。
3
2
1[root@localhost data]#seq 3 -1 -1
3
2
1
0
-1
二、for 循环
循环含义
将某代码段重复运行多次,通常有进入循环的条件和退出循环的条件
重复运行次数
- 循环次数事先已知 for
- 循环次数事先未知 while until
常见的循环的命令:for, while, until
列表循环
语法:
for 变量名 in {list}
docommand(需要循环的事件)
donefor i in {1..10}
doecho "i=$i"
done1.for循环有次数
2.for循环开始时,会对变量i进行赋值
3.for循环在赋值后,会执行do 和done之间的代码
4.for循环在第一次循环后执行到done,再次赋值第二个
5.for循环在赋值后,会执行do 和done之间的代码
6.for循环在第一次循环后执行到done,再次赋值第三个
7.for循环在赋值后,会执行do 和done之间的代码
花括号的用法
花括号{}和seq在for循环的应用:
for i in {1..50..2} 1-50的奇数
doecho "$i"
donefor i in {2..50..2} 2-50的偶数
for i in {10..1} 1-10倒序排列$() 和 `` 都是调用命令的执行结果。for i in $(seq 10) 1-10正序排列
for i in $(seq 10 -1 1) 1-10倒序排列
for i in $(seq 1 2 10) 1-10的奇数,中间为步长#要想有结果要在后面输入完整的格式。
不带列表循环
语法:
for 变量名
docommand
done
例子:
1. 打印 hello
[root@server ~]# vim for2.sh #!/bin/bash
for i
doecho hello
done[root@server ~]#bash for2.sh
#没有给脚本传参所以执行了没有结果[root@server ~]#bash for2.sh a
#把a赋值给变量i,i有值了它就开始执行do..done了
hello
类似于C语言风格的for循环
语法:
for (( 表达式1; 表达式2; 表达式3 )); do 命令; donefor ((expr1;expr2;expr3))
docommand
doneexpr1:定义变量并赋初值
expr2:决定是否循环
expr3:决定循环变量如何改变,决定循环什么时候退出比如:sum=0
for ((i=0;i<=100;i++))
dosum=$[sum+i]
done
echo "$sum"计算 1 到 100 累加的值 5050i=0 是给 i 变量赋值为 0
i<=100 是定义 变量的范围 在范围内继续循环,不在结束循环。
i++ 是 变量 i 每运行一次都会加1。let sum+=i 等于 let sum=sum+i
#需要使用 let 命令++ 自身变量+1
-- 自身变量-1
+=5 自身变量+5
-=5 自身变量-5
*=5 自身变量*5
/=5 自身变量/5
%=5 自身变量%5
例子:
使用脚本 输出 十次 hello world 。#!/bin/bash
for i in {1..10}
doecho "hello world"
done不编辑脚本 使用命令 输出 十次 hello world 。[root@localhost data]#for i in {1..10};do echo "hello world";done
或
[root@localhost data]#for i in `seq 10`;do echo "hello world";done
使用三种方法过滤出当前目录下 以 sh 结尾的文件 且 只显示文件名。[root@localhost data]#ls|grep sh$[root@localhost data]#find -name '*sh'|cut -d "/" -f2[root@localhost data]#for i in *sh;do echo $i;done
#当前目录下以sh 结尾的文件名 会赋值给 变量 i ,然后输出变量,然后循环 直至 全部输出 停止循环。
一 到 一百 奇数和 与 偶数和。
[root@localhost data]#vim he.sh#!/bin/bash
sum=0
for i in {1..100..2}
dosum=$[sum+i]
done
echo "1到100的奇数和为:$sum"sum=0
for i in {0..100..2}
dosum=$[sum+i]
done
echo "1到100的偶数和为:$sum"[root@localhost data]#bash he.sh
1到100的奇数和为:2500
1到100的偶数和为:2550另一种格式:
#!/bin/bash
sum=0
for ((i=0;i<=100;i+=2))
dosum=$[sum+i]
done
echo "$sum"sum=0
for ((i=1;i<=100;i+=2))
dosum=$[sum+i]
done
echo "$sum"
九九乘法表:
正 九九乘法表#!/bin/bash
for j in {1..9}
dofor i in `seq $j`doecho -e "${i}x${j}=$[i*j]\t\c"
#\t 可以对齐
#\c 不换行(要放在最后)done
echo
done倒 九九乘法表#!/bin/bash
for j in {9..-1..1}
dofor i in `seq $j`doecho -e "${i}x${j}=$[i*j]\t\c"done
echo
done
批量添加用户
#!/bin/bash
read -p "请输入你要添加的用户名称:" usrfor uname in $usr
douseradd $unameecho "123123" |passwd --stdin $uname &>/dev/null
done或#!/bin/bash
ulist=$(cat /opt/user.txt) #用户名称文件
for uname in $ulist
douseradd $unameecho "123123" |passwd --stdin $uname &>/dev/null
done[root@localhost ~]#cat /opt/user.txt
lisi
wangwu
zhangsan
ping 一个网段内所有的ip地址
#!/bin/bash
ip=192.168.80.
for i in {1..254}
do
{ping -c2 -W2 ${ip}${i} &> /dev/nullif [ $? -eq 0 ];thenecho "$i is up" >> /mnt/up.txt
#正确结果追加到/mnt/up.txt 文件里elseecho "$i is down" >> /mnt/down.txt
#错误结果追加到/mnt/down.txt 文件里fi
} &
done
批量改后缀名:
#!/bin/bash
read -p "你想要在mnt目录下改什么后缀的文件(输入后缀):" w
b=`find /mnt/* -name "*.${w}" | wc -l`
if [ $b -gt 0 ];thenread -p "你想要改后缀为:" hfile=`ls /mnt/*.${w}|cut -d "/" -f3`for i in $filedoname=`echo $i | cut -d "." -f1`mv /mnt/$i /mnt/${name}.${h}done
elseecho -e "\E[1;35m没有这个后缀的文件\E[0m"echobash $0
fi纯属乱加的,^-^批量改后缀名:
DIR=/data/test
cd $DIR || { echo 无法进入 $DIR;exit 1; }
for FILE in *
doPRE=`echo $FILE|grep -Eo ".*\."`mv $FILE ${PRE}bak
done #!/bin/bash
cd /data
for file in *
do
name=`echo $file |cut -d "." -f1`
mv $file ${name}.bak
done
关于随机取值
$RANDOM 取值范围: 0-32767
[root@test1 ~]# echo $[$RANDOM%50]
37
#随机输出 0-49 以内的随机数。[root@test1 ~]# echo $[$RANDOM%50+1]
1
#随机输出 1-50 以内的随机数。
三、 while
相对于for,需要知道循环次数
我们只知道停止条件,不知道次数,就需要使用 while
直到达到条件
while循环
1、语法结构
2、死循环
while循环一般用于有条件判断的循环,若判断条件为真,则进入循环,当条件为假就跳出循环
格式:
while 条件判断
do命令
done当命令判断为假时停止
死循环:
while死循环
while [ 1 -eq 1 ] //写一个永远为真的表达式,1等于1这个条件永远为真,所以这个脚本会一直循环下去
docommand
done
#因为1 永远等于 1 ,所以会一直循环。while true
docommand
donewhile :
docommand
done: 是一个空的命令。没有效果; 此命令不做任何操作。 表示总是成功(总为真)
批量建立用户
#!/bin/bash
i=1
while [ "${i}" -le 33 ]
#循环33次 ,变量小于等于33
do
useradd stu${i}
#建立stu1 至 stu33 的用户
echo "123456" |passwd --stdin stu${i} &>/dev/null
if [ $? -eq 0 ]
#使用 $? 判断上一次命令执行结果是否为0(真)
then
echo "用户 stu${i} 被建立"
#等于 0 执行上面语句,不等于执行下面语句
else
echo "用户 stu${i} 建立失败"
fi
let i++
#每循环一次都要给变量加1。
done
猜价格游戏
while 格式#!/bin/bash
p=`echo $[RANDOM%2000+1]`
t=0while true
do
read -p "请输入商品的价格1-1000:" num
let t++
if [ $num -eq $p ]
then
echo "恭喜你猜中了,实际价格是$p"
echo "您一共猜了${t}次"
exit 0
#退出循环,不加会一直循环。
elif [ $num -gt $p ]
then
echo "您猜的价格高了"
else
echo "您猜的价格低了"
fi
done
四、双重循环以及跳出循环
-
break跳出单个循环 break n 数字数字是几代表跳出n层循环
-
continue终止某次循环中的命令,但是不会完全终止命令
-
exit 直接退出脚本
关于 continue
[root@localhost ~]#cat continue.sh
#结束某次循环
#!/bin/bash
for i in {1..10}
do
if [ $i -eq 5 ]
then continue
fi
echo i=$i
done#then后面加上continue 的意思是当变量等于 5 时终止当前循环,但第 6 次循环还会继续执行。
关于 break
[root@localhost ~]#cat break.sh
#结束一层循环
#!/bin/bash
for j in {1..9} #行数
dofor i in {1..9} #列数doif [ $i -eq 5 ]thenbreakfiecho -n "i=$i "done
echo
done#结果 等于 5 时直接结束 本层 循环。 for j in {1..9} 还会继续执行。[root@localhost dst]#bash break.sh
i=1 i=2 i=3 i=4
i=1 i=2 i=3 i=4
i=1 i=2 i=3 i=4
i=1 i=2 i=3 i=4
i=1 i=2 i=3 i=4
i=1 i=2 i=3 i=4
i=1 i=2 i=3 i=4
i=1 i=2 i=3 i=4
i=1 i=2 i=3 i=4#可以看到 到第四列的时候就没有了 ,这是因为 负责列数的循环已经停止执行了,但行数的
循环还在执行,所以就会出现 九行 四列的情况。
关于 exit
[root@localhost ~]#cat break.sh
#结束一层循环
#!/bin/bash
for j in {1..9} #行数
dofor i in {1..9} #列数doif [ $i -eq 5 ]thenexitfiecho -n "i=$i "done
echo
done#这个将更加暴力,执行第一次行数循环 后 列数的循环执行到第五次将直接退出脚本,不再执行任何的循环。[root@localhost dst]#bash break.sh
i=1 i=2 i=3 i=4 [root@localhost dst]#
五、until 循环
until 循环与 while 循环类似,while 循环能实现的脚本 until 同样也可以实现,但区别是while 循环在条件为真是继续执行循环,而 until 则是在条件为假时执行循环
until 循环语句的语法结构如下所示。
until 条件测试操作
do
命令序列
done
实例1:求和
#!/bin/bash
sum=0
i=0
until [ $i -gt 100 ]
#变量 i 为假 (不大于 100),将执行循环,当变量大于100退出循环。
do
let sum=$i+$sum
let i++
done
echo sum=$sum
实例2:判断用户是否在线,在线就发消息。
#!/bin/bash
username=$1
if [ $# -lt 1 ]
then
echo "请在脚本后输入 用户名和发送信息"
exit 1
fiif grep "^$username" /etc/passwd &>/dev/null
then :
elseecho "用户不存在"exit 1
fiuntil who |grep $username &>/dev/null
do
echo "用户不在线"
sleep 5
donemes=$2
echo $mes |write $username
select 菜单选择
[root@localhost data]#help select
select: select NAME [in 词语 ... ;] do 命令; done从列表中选取词并且执行命令。WORDS 变量被展开,生成一个词的列表。展开的词集合被打印在标准错误输出设备上,每个以一个数字做前缀。如果没有 `in WORDS'则假定使用`in "$@"'。PS3提示符会被显示并且从标准输入读入一行如果该行由被显示的词对应的数字组成,则 NAME 变量被设定为相应的词。如果行为空,则 WORDS 变量和提示符被重新显示。如果读取了文件结束符,则命令完成。读入任何其他的值会导致 NAME 变量被设定为空。读入的行被存放在变量 REPLY 中。COMMANDS 命令在每次选择之后执行直到执行一个 break 命令。退出状态:返回最后一个执行的命令的状态。一定要使用$REPLY
[root@localhost ~]#select menu in 配置网卡 配置yum源;do echo $menu;done
1) 配置网卡
2) 配置yum源
#? 1
配置网卡
#? 2
配置yum源
#?
[root@localhost ~]#PS3="请选择功能(1-2):";select menu in 配置网卡 配置yum源;do echo $menu;done
1) 配置网卡
2) 配置yum源
请选择功能(1-2):1
配置网卡
请选择功能(1-2):2
配置yum源
请选择功能(1-2):PS1 提示符
PS2 多行重定向
PS3 菜单选择
例子:
#!/bin/bash
sum=0
PS3="请输入(1-6):"
MENU="
宫保鸡丁
酸菜鱼
鱼香肉丝
佛跳墙
水煮肉片
点菜结束
"select menu in $MENU
do
case $REPLY in
1)
echo $menu 价格是20
let sum+=20
;;
2)
echo $menu 价格是60
let sum+=60
;;3)
echo $menu 价格是25
let sum+=25
;;4)
echo $menu 价格是150
let sum+=150
;;5)
echo $menu 价格是60
let sum+=60
;;6)
echo "点菜结束"
break
;;*)
echo "点菜错误,请重新选择"
;;esac
doneecho "总价是$sum"
EOF 菜单
#!/bin/bash
cat <<EOF
1.本地yum仓库 5.
2.pxe网络装机 6.
3.DNS主从 7.
4.LVM逻辑卷 8.
EOF
read -p "输入你要选的选项:(1-10)" a
相关文章:
shell 循环语句
一、命令补充 1. echo 命令 echo -n 表示不换行输出 echo -e 表示输出转义符 常用的转义符有: 选项作用\r光标移至行首,并且不换行\s当前shell的名称,如bash\t插入Tab键,制表符\n输出换行\f换行,但光标仍停留在…...
C++(1) 命名空间
文章目录 C1. C 概述2.C 相对于 C 语言的增强2.1C 第一行代码2.2 C 补充 bool 类型2.3 作用域运算符2.4 命名空间 namespace2.4.1 命名空间基本内容和开放性2.4.2 多个命名空间操作2.4.3 命名空间函数定义和实现分离2.4.4 匿名命名空间2.4.5 命名空间别名 C 1. C 概述 C 之父…...
【机组】单元模块实验的综合调试与驻机键盘和液晶显示器的使用方式
🌈个人主页:Sarapines Programmer🔥 系列专栏:《机组 | 模块单元实验》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 1. 综合实验的调试 1.1 实验…...
React中实现虚拟加载滚动
前言:当一个页面中需要接受接口返回的全部数据进行页面渲染时间,如果数据量比较庞大,前端在渲染dom的过程中需要花费时间,造成页面经常出现卡顿现象。 需求:通过虚拟加载,优化页面渲染速度 缺点:…...
vue中的Mutations
目录 一:介绍 二:例子 一:介绍 Vuex 中的 mutation 非常类似于事件: 每个 mutation 都有一个字符串的 事件类型 (type) 和 一个 回调函数 (handler)。这个回调函数就是我们实际进行状态更改的函数,并且它会接受 sta…...
C#用 DateAndTime.DateAdd方法和DateTime.Add(TimeSpan) 方法分别添加一段时间间隔
目录 一、基本方法 1.用 DateAndTime.DateAdd方法添加一段时间间隔 2.用DateTime.Add方法添加一段时间间隔 二、实例 1.实例1:用 DateAndTime.DateAdd方法 2.实例2:用DateTime.Add方法 一、基本方法 1.用 DateAndTime.DateAdd方法添加一段时间间隔…...
四、Kotlin 表达式
1. 常量 & 变量 1.1 可读写变量(var) var x initValue // x 称为可读写变量注意:当 var 声明的变量做成员属性时,默认提供 setter/getter 方法。 1.2 只读变量(val) val x initValue // x 称为只…...
Web开发4:单元测试
在Web开发中,单元测试是一种重要的开发实践,它可以帮助我们确保代码的质量和可靠性。通过编写和运行单元测试,我们可以验证代码的正确性,减少错误和缺陷,并提高代码的可维护性。本文将介绍单元测试的概念、好处以及如何…...
Ubuntu 16 让ufw防火墙控制docker容器中所有端口
使用docker ps 查询docker在运行端口。 rootai-0003:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS …...
<蓝桥杯软件赛>零基础备赛20周--第18周--动态规划初步
报名明年4月蓝桥杯软件赛的同学们,如果你是大一零基础,目前懵懂中,不知该怎么办,可以看看本博客系列:备赛20周合集 20周的完整安排请点击:20周计划 每周发1个博客,共20周。 在QQ群上交流答疑&am…...
vb如何获取鼠标形状的特征码
vb如何获取鼠标形状的特征码 好像按键精灵有一个GetCursorShape()函数可以获取特征码,不知道VB6能不能实现类似的功能? 附注: 1 最好是机器无关的,不是也可以。 2 特征码就是一串数字,用来区分不同的鼠标形状。 3 获取…...
chroot: failed to run command ‘/bin/bash’: No such file or directory
1. 问题描述及原因分析 在busybox的环境下,执行 cd rootfs chroot .报错如下: chroot: failed to run command ‘/bin/bash’: No such file or directory根据报错应该rootfs文件系统中缺少/bin/bash,进入查看确实默认是sh,换成…...
蓝桥杯备战——2.矩阵键盘
1.分析原理图 由上图可以看到若J5跳线帽接地,就S4~S7就可以当做四路独立按键,若接到P44,则就是4*4的矩阵键盘。 2.独立按键处理 相对传统的按键延时消抖方案,这里我采用更高效,更经典,更偏向产品级应用的…...
Docker部署思维导图工具SimpleMindMap并实现公网远程访问
文章目录 1. Docker一键部署思维导图2. 本地访问测试3. Linux安装Cpolar4. 配置公网地址5. 远程访问思维导图6. 固定Cpolar公网地址7. 固定地址访问 SimpleMindMap 是一个可私有部署的web思维导图工具。它提供了丰富的功能和特性,包含插件化架构、多种结构类型&…...
机器学习实验2——线性回归求解加州房价问题
文章目录 🧡🧡实验内容🧡🧡🧡🧡数据预处理🧡🧡代码缺失值处理特征探索相关性分析文本数据标签编码数值型数据标准化划分数据集 🧡🧡线性回归🧡&am…...
宝塔+nextcloud+docker+Onlyoffice 全开启https
折腾了我三天的经验分享 1.宝塔创建网站 nextcloud版本为28.0.1 php8.2 ,导入nextcloud绑定域名对应的证书 ,不用创建mysql 因为nextcloud 要求是mariadb:10.7 宝塔里没有,就用docker安装一个 端口设置为3307 将数据库文件映射出来/ww…...
呼吸机电机控制主控MCU方案
呼吸机是一种能代替、控制或改变人的正常生理呼吸,增加肺通气量,改善呼吸功能,减轻呼吸功消耗,节约心脏储备能力的装置。呼吸机连接一条管子到患者的嘴或鼻子,氧气量可以通过监视器加以控制。 基于灵动微控制器的呼吸…...
gitlab备份-迁移-升级方案9.2.7升级到15版本最佳实践
背景 了解官方提供的版本的升级方案 - GitLab 8: 8.11.Z 8.12.0 8.17.7 - GitLab 9: 9.0.13 9.5.10 9.2.7 - GitLab 10: 10.0.7 10.8.7 - GitLab 11: 11.0.6 11.11.8 - GitLab 12: 12.0.12 12.1.17 12.10.14 - GitLab 13: 13.0.14 13.1.11 13.8.8 13.12.15 - G…...
redis面试题合集-基础
前言 又来到每日的复习时刻,昨天我们学习了mysql相关基础知识,还有分布式数据库介绍(后续总结时再持续更新)。今日继续学习缓存杀器:redis redis基础面试题合集 什么是Redis? Redis是一个开源的、内存中…...
(Unity)C# 中的字符串格式化
前言 在软件开发中,理解和掌握字符串的格式化及调试技巧对于编写高效和可维护的代码至关重要。 字符串插值 ($ 符号) 在 C# 中,字符串插值是通过在字符串前加 $ 符号来实现的。这允许我们将变量、表达式或函数调用直接嵌入到字符串中。 string name &qu…...
【项目日记(五)】第二层: 中心缓存的具体实现(上)
💓博主CSDN主页:杭电码农-NEO💓 ⏩专栏分类:项目日记-高并发内存池⏪ 🚚代码仓库:NEO的学习日记🚚 🌹关注我🫵带你做项目 🔝🔝 开发环境: Visual Studio 2022 项目日…...
使用PSIM软件生成DSP28335流水灯程序
最近在学习DSP28335芯片,然后在使用PSIM仿真软件时发现这个仿真软件也支持28335芯片,于是就想学习下如何在PSIM软件中使用DSP28335芯片。在PSIM自带的官方示例中有使用DSP28335芯片的相关例子。 工程下载链接 https://download.csdn.net/download/qq_20…...
【iOS ARKit】人脸检测追踪基础
在计算机人工智能(Artificial Inteligence,AI)物体检测识别领域,最先研究的是人脸检测识别,目前技术发展最成熟的也是人脸检测识别。人脸检测识别已经广泛应用于安防、机场、车站、闸机、人流控制、安全支付等众多社会领域&#x…...
ES的一些名称和概念总结
概念 先看看ElasticSearch的整体架构: 一个 ES Index 在集群模式下,有多个 Node (节点)组成。每个节点就是 ES 的Instance (实例)。每个节点上会有多个 shard (分片), P1 P2 是主分片, R1 R2…...
Javaweb之SpringBootWeb案例之阿里云OSS服务集成的详细解析
2.3.3 集成 阿里云oss对象存储服务的准备工作以及入门程序我们都已经完成了,接下来我们就需要在案例当中集成oss对象存储服务,来存储和管理案例中上传的图片。 在新增员工的时候,上传员工的图像,而之所以需要上传员工的图像&…...
【GitHub项目推荐--不错的 Go 学习项目】【转载】
开源实时性能分析平台 Pyroscope 是基于 Go 的开源实时性能分析平台,在源码中添加几行代码 pyroscope 就能帮你找出源代码中的性能问题和瓶颈、CPU 利用率过高的原因,调用树展示帮助你理解程序,支持 Go、Python、Ruby 语言。 Pyroscope 可以…...
【Git】windows系统安装git教程和配置
一、何为Git Git(读音为/gɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 二、git安装包 有2种版本,Git for Windows Setup和Git for Windows Portable(便携版)两个版本都可以。 三、Git for Windows Por…...
办公技巧:PPT制作技巧分享,值得收藏
目录 1、黑屏/白屏你用过么 2、图形组合替代动画刷 3、等距分布图形元素 4、快速统一字体 5、文本框也是可以改的 6、批量修改形状 7、搞定“怎么也选不中” 8、妙用CtrlD 9、图片阵列怎么做 10、临时放大某一区域 11、Word快速导入PPT 12、炫酷小人怎么做的&#…...
Google Chrome RCE漏洞 CVE-2020-6507 和 CVE-2024-0517 流程分析
本文深入研究了两个在 Google Chrome 的 V8 JavaScript 引擎中发现的漏洞,分别是 CVE-2020-6507 和 CVE-2024-0517。这两个漏洞都涉及 V8 引擎的堆损坏问题,允许远程代码执行。通过EXP HTML部分的内存操作、垃圾回收等流程方式实施利用攻击。 CVE-2020-…...
前端怎么监听手机键盘是否弹起
摘要: 开发移动端中,经常会遇到一些交互需要通过判断手机键盘是否被唤起来做的,说到判断手机键盘弹起和收起,应该都知道,安卓和ios判断手机键盘是否弹起的写法是有所不同的,下面讨论总结一下两端的区别以及…...
一个大型网站建设得多少钱/seo新人培训班
转自:http://www.cnblogs.com/niexiaobo/p/4597958.html 当调用系统键盘输入时,预输入,会奔溃,当调用以下的方法时, - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range repl…...
代做网站 猪八戒网/友情链接购买网站
1、获取数组最后一个位置的值 比较常规的是:$arr[count($arr)-1]; 貌似还有一个数组函数end();可以直接获取最后一个元素的值。相应的还有reset(),next(),current(),prev(); 本文转自 努力的C 51CTO博客,原文链接:http://blog.51cto.com/fulin0532/1966245...
网站建设公司知名企业/网络营销服务商
bansangkou答疑小能手01-29TA获得超过8069个赞电脑开机慢怎么办,不改变电脑硬件的前提下,以下方法可以很好的提高电脑的性能: 方法一、杀毒。拨掉网络连线、关闭系统还原,在安全模式下,用最新版本的杀毒软件杀毒。 方法…...
哪里有零基础网站建设教学公司/整合营销
在上一章中我们说到了,多态.面向对象的最后一个特征.本章中我们来说一下在面向对象所用到的关键字,还有没用到的关键字本章内容要求背诵目前已经学过的关键字有:1,访问权限修饰符中的public:公共的protected:受保护的private:私有的2,类的关键字class3,继承的关键字extends4,创…...
呼和浩特做网站公司/竞价外包运营
1. kafka是一个分布式的消息发布-订阅队列。2. 其中有一些主要的概念: Topic: 就是对放入队列的消息进行分类,分类消息分开储存,比如现在有订单消息和用户投诉消息,则分成订单topic和投诉topic Message: 放入消息队…...
惠州市两学一做网站/seo还可以做哪些推广
预备知识:缓冲区的刷新方式 fflush(stdout)\n能启动刷新缓冲区的作用 1.进程终止的5种方式 正常退出 从main函数返回–语言级别的返回操作 调用exit–C库函数 调用_exit–系统调用异常退出 调用abort 产生SIGAORT信号 由信号终止 ctrlc /SIGINT 2.exit和_exit的…...