Centos系列:shell编程综合练习(个人学习记录)

shell编程综合练习(个人学习记录)

    • shell编程
      • until 循环
      • 跳出循环
        • 1. break命令
        • 2. continue 命令
    • Shell函数
      • 特殊变量
      • 输入输出重定向
          • 输出重定向
          • 输入重定向
          • 重定向
    • Shell实战
      • 监控centos7运行状态
      • /proc/stat文件
      • 编写脚本
      • free命令监控系统内存




shell编程

until 循环

until 循环执行一系列命令直至条件为 true 时停止。until 循环与 while 循环在处理方式上刚好相反。一般while循环优于until循环,但在某些时候,也只是极少数情况下,until 循环更加有用

# until 循环格式为:until commanddoStatement(s) to be executed until command is truedone# command 一般为条件表达式,如果返回值为 false,则继续执行循环体内的语句,否则跳出循环# 例 使用 until 命令输出 0 ~ 9 的数字:[root@localhost test]# vim until.sh
[root@localhost test]# cat until.sh
#!/bin/bash
a=0
until [ ! $a -lt 10 ]
doecho $aa=`expr $a + 1`
done
[root@localhost test]# chmod +x until.sh
[root@localhost test]# sh until.sh
0
1
2
3
4
5
6
7
8
9

跳出循环

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,像大多数编程语言一样,Shell也使用 break 和 continue 来跳出循环

1. break命令

break命令允许跳出所有循环(终止执行后面的所有循环)

# 例:脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,就要使用break命令# 代码如下:
[root@localhost test]# vim break.sh
[root@localhost test]# chmod +x break.sh
[root@localhost test]# cat break.sh
#!/bin/bash
while :
doecho -n "Input a number between 1 to 5: "read aNumcase $aNum in1|2|3|4|5) echo "Your number is $aNum!";;*) echo "You do not select a number between 1 to 5,game is over !"break;;esac
done# 运行效果如下: 
[root@localhost test]# sh break.sh
Input a number between 1 to 5: 1
Your number is 1!
Input a number between 1 to 5: 2
Your number is 2!
Input a number between 1 to 5: 3
Your number is 3!
Input a number between 1 to 5: 4
Your number is 4!
Input a number between 1 to 5: 5
Your number is 5!
Input a number between 1 to 5: 6
You do not select a number between 1 to 5,game is over !
# 在嵌套循环中,break 命令后面还可以跟一个整数,表示跳出第几层循环。
#例如:
break n
表示跳出第 n 层循环# 代码如下
[root@localhost test]# vim break-2.sh
[root@localhost test]# chmod +x break-2.sh
[root@localhost test]# cat break-2.sh
#!/bin/bash
for var1 in 1 2 3
dofor var2 in 0 5doif [ $var1 -eq 2 -a $var2 -eq 0 ]thenbreak 2elseecho "$var1 $var2"fidone
done# 运行结果如下
[root@localhost test]# sh break-2.sh
1 0
1 5
2. continue 命令

continue命令与break命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环

# 例:
# 代码入下:
[root@localhost test]# vim continue.sh
[root@localhost test]# chmod +x continue.sh
[root@localhost test]# cat continue.sh
#!/bin/bash
while :
doread -p "Input a number between 1 to 5: " aNumcase $aNum in1|2|3|4|5) echo "Your number is $aNum!";;*) echo "You do not select a number between 1 to 5!"continueecho "Game is over!";;esac
done# 运行效果如下:
[root@localhost test]# sh continue.sh
Input a number between 1 to 5: 1
Your number is 1!
Input a number between 1 to 5: 2
Your number is 2!
Input a number between 1 to 5: 8
You do not select a number between 1 to 5!
Input a number between 1 to 5: 5
Your number is 5!
Input a number between 1 to 5: 8
You do not select a number between 1 to 5!
Input a number between 1 to 5: 9
You do not select a number between 1 to 5!
Input a number between 1 to 5: ^C
[root@localhost test]## 运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句
echo "Game is over!"
永远不会被执行

Shell函数

函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高。像其他编程语言一样,Shell 也支持函数。Shell 函数必须先定义后使用

# Shell 函数的定义格式如下:function_name  ( ) {list of commands[ return value ]}
  • 函数返回值,可以显式增加return语句;如果不加,会将最后一条命令运行结果作为返回值

  • Shell 函数返回值只能是整数,一般用来表示函数执行成功与否,0表示成功,其他值表示失败

  • 在Shell中,调用函数时可以向其传递参数。在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数…

# 例:代码如下[root@localhost test]# vim funWithParam
[root@localhost test]# chmod +x funWithParam
[root@localhost test]# cat funWithParam
#!/bin/bash
funWithParam(){echo "The value of the first parameter is $1 !"echo "The value of the second parameter is $2 !"echo "The value of the tenth parameter is $10 !"echo "The value of the tenth parameter is ${10} !"echo "The value of the eleventh parameter is ${11} !"echo "The amount of the  parameter is $# !"echo "The string of the  parameter is $* !"
}# 运行如下:
[root@localhost test]# source funWithParam
[root@localhost test]# funWithParam 1 2 3 5 6 7 4 20 21
The value of the first parameter is 1 !
The value of the second parameter is 2 !
The value of the tenth parameter is 10 !
The value of the tenth parameter is  !
The value of the eleventh parameter is  !
The amount of the  parameter is 9 !
The string of the  parameter is 1 2 3 5 6 7 4 20 21 !

特殊变量

在这里插入图片描述

输入输出重定向

从标准输入设备(stdin)获取输入,将结果输出到标准输出设备(stdout)显示。一般情况下,标准输入设备就是键盘,标准输出设备就是终端,即显示器

输出重定向

命令的输出不仅可以是显示器,还可以很容易的转移向到文件,这被称为输出重定向

# 例:
[root@localhost test]# who
root     pts/0        2023-03-25 09:00 (192.168.180.1)
[root@localhost test]# who > username.txt
[root@localhost test]# cat username.txt
root     pts/0        2023-03-25 09:00 (192.168.180.1)# 注意:>   输出重定向会覆盖文件内容>>  输出重定向追加到文件末尾# 追加
[root@localhost test]# pwd >> username.txt
[root@localhost test]# cat username.txt
root     pts/0        2023-03-25 09:00 (192.168.180.1)
/root/test
输入重定向
# 格式
command  <  file# 例:计算 username文件中的行数[root@localhost test]# wc -l < username.txt
2
重定向
  • 一般情况下,每个 Unix/Linux 命令运行时都会打开三个文件:

  • 标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。

  • 标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。

  • 标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。

1.默认情况下,command  >  file 将 stdout 重定向到 file,command  < file 将stdin 重定向到 file
# 如果希望 stderr 重定向到 file,可以这样写:
$command 2 > file# 如果希望 stderr 追加到 file 文件末尾,可以这样写:
$command 2 >> file
2 表示标准错误文件(stderr)# 如果希望将 stdout 和 stderr 合并后重定向到 file,可以这样写:
$command >> file 2>&1
或
$command > file 2>&1# 如果希望执行某个命令,但又不希望在屏幕上显示输出结果,那么可以将输出重定向到 /dev/null:
$ command > /dev/null# 如果希望屏蔽 stdout 和 stderr,可以这样写:
command > /dev/null 2>&1# /dev/null: 表示 的是一个黑洞,通常用于丢弃不需要的数据输出, 或者用于输入流的空文件# 例:将无用的输出流写入到黑洞丢弃。错误信息定位到黑洞curl -l  www.baidu.com 2>/dev/null 
将标准输出信息定位输出到/dev/null黑洞
curl -l www.baidu.com 1> /dev/null # 在书写定时任务,规范的写法就是将所有定时任务脚本结尾加上>/dev/null 2>&1,让所有的输出流(包括错误的和正确的)都定向到空设备丢弃。例:00 01 * * * /bin/sh/server/scripts/mysqlbak.sh  >/dev/null  2>&1

Shell实战

监控centos7运行状态

利用vmstat工具监控CPU详细信息,然后基于/proc/stat计算CPU利用率进行监控,超过80报警并提取出占用cpu最高的前十进程

vmstat是Linux系统监控工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps及CPU活动的信息

在这里插入图片描述

  • r:运行队列中的进程数;

  • b:等待IO的进程数

  • swpd:已用虚拟内存大小(k);free:空闲内存大小;buff:已用缓冲大小;cache:已用缓存大小。

  • si:每秒从交换区写入内存的大小(kb/s);

  • so:每秒从内存写入交换分区的大小

  • bi:每秒读取的块数;bo每秒写入的块数。

  • in:每秒中断数,包括时钟中断;cs:每秒上下文切换数。

  • us(user time):用户进程执行消耗cpu时间;

  • sy(system time):系统进程执行消耗cpu时间;

  • id:空闲时间(包括IO等待时间);

  • wa:等待IO时间。

/proc/stat文件

该文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。可以利用其中信息计算cpu的利用率

[root@localhost test]# cat /proc/stat
cpu  372 0 1266 2494149 125 0 25 0 0 0
cpu0 70 0 492 623135 14 0 15 0 0 0
cpu1 136 0 316 623496 96 0 6 0 0 0
cpu2 79 0 212 623795 8 0 1 0 0 0
cpu3 86 0 246 623722 6 0 2 0 0 0
intr 525088 73 10 0 0 0 0 0 0 1 0 0 0 16 0 0 6218 2800 8124 68 13796 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 797 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 896071
btime 1679705900
processes 1729
procs_running 1
procs_blocked 0
softirq 312789 1 121008 1253 13800 11060 0 873 100236 0 64558

编写脚本

[root@localhost test]# vim vmstat.sh
[root@localhost test]# chmod +x vmstat.sh# 代码如下:
[root@localhost test]# cat vmstat.sh
#!/bin/bash
CPU_us=$(vmstat | awk '{print $13}' | sed -n '$p')
CPU_sy=$(vmstat | awk '{print $14}' | sed -n '$p')
CPU_id=$(vmstat | awk '{print $15}' | sed -n '$p')
CPU_wa=$(vmstat | awk '{print $16}' | sed -n '$p')
CPU_st=$(vmstat | awk '{print $17}' | sed -n '$p')CPU1=`cat /proc/stat | grep 'cpu' | awk '{print $2" " $3" " $4" " $5" " $6" "$7" "$8}'`
sleep 5
CPU2=`cat /proc/stat | grep 'cpu' | awk '{print $2" " $3" " $4" " $5" " $6" "$7" "$8}'`
IDLE1=`echo $CPU1 | awk '{print $4}'`
IDLE2=`echo $CPU2 | awk '{print $4}'`
CPU1_TOTAL=`echo $CPU1 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
CPU2_TOTAL=`echo $CPU2 | awk '{print $1+$2+$3+$4+$5+$6+$7}'`
IDLE=`echo "$IDLE2-$IDLE1" | bc`
CPU_TOTAL=`echo "$CPU2_TOTAL - $CPU1_TOTAL" | bc`
RATE=`echo "scale=4;($CPU_TOTAL-$IDLE)/$CPU_TOTAL*100" | bc | awk '{printf "%.2f",$1}'`
echo -e "us=$CPU_us\tsy=$CPU_sy\tid=$CPU_id\twa=$CPU_wa\tst=$CPU_st"
echo "CPU_RATE:${RATE}%"
CPU_RATE=`echo $RATE | cut -d. -f1`
if  [ $CPU_RATE -ge 80 ]
then    echo "CPU Warn"ps aux | grep -v USER | sort -rn -k3 | head
fi# 运行效果如下[root@localhost test]# sh vmstat.sh
us=0    sy=0    id=100  wa=0    st=0
CPU_RATE:0.04%
[root@localhost test]#

free命令监控系统内存

[root@localhost test]# vim free.sh
[root@localhost test]# chmod +x free.sh# 代码如下:
[root@localhost test]# cat free.sh
#!/bin/bash
total=$(free -m | sed -n '2p' | awk '{print $2}')
used=$(free -m | sed -n '2p' | awk '{print $3}')
free=$(free -m | sed -n '2p' | awk '{print $4}')
shared=$(free -m | sed -n '2p' | awk '{print $5}')
buff=$(free -m | sed -n '2p' | awk '{print $6}')
cached=$(free -m | sed -n '2p' | awk '{print $7}')
rate=`echo "scale=2;$used/$total" | bc | awk -F. '{print $2}'`
echo -e "total\tused\tfree\tshared\tbuffer\tavailable"
echo -e "${total}M\t${used}M\t${free}M\t${shared}M\t${buff}M\t${cached}M\nrate:${rate}$"
if      [ $rate -ge 80 ]
then    echo "Memory Warn"ps aux | grep -v USER | sort -rn -k4 | head
fi# 运行如下:
[root@localhost test]# sh free.sh
total   used    free    shared  buffer  available
1819M   222M    1339M   9M      256M    1447M
rate:12$







喜欢水星记

shell编程综合练习(个人学习记录)

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

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

相关文章

h5网站开发-微信浏览器无法自动播放视频的解决方式?

一、需求&#xff1a; 使用h5开发的网站&#xff0c;首页的banner是一个video视频&#xff0c;在PC端上和手机浏览器上都能正常播放&#xff0c;但是在手机微信浏览器里面视频是无法自动播放的。 二、实现效果&#xff1a; 1.微信浏览器的效果&#xff1a; 2.正常效果&…

如何实现高效代码审查,赋能大规模开发

对于许多企业来说&#xff0c;代码审查都是开发过程中不可缺少的一环。软件开发人员通常会对代码审查感到又爱又恨。一般来说&#xff0c;实施代码审查的企业普遍认为通过及早发现问题和低效率&#xff0c;在长远来看可节省时间。 阅读本篇文章&#xff0c;您将了解到什么是代…

JS浮点数精度问题及解决方案

前端面试大全JS浮点数精度问题及解决方案 &#x1f31f;经典真题 &#x1f31f;浮点数精度常见问题 &#x1f31f;为什么会有这样的问题 &#x1f31f;真题解答 &#x1f31f;总结 &#x1f31f;经典真题 为什么 console.log(0.20.10.3) 得到的值为 false &#x1f31f;…

vs-code之vue3插件

1.Vue 3 Support - All In One Vue3 代码片段突出显示了 Visual Studio Code 的格式化程序生成器 生成vue3对应的的代码 如ref等&#xff0c; 2.Volar 相信使用 VSCode 开发 Vue2 的同学一定对 Vetur 插件不会陌生&#xff0c;作为 Vue2 配套的 VSCode 插件&#xff0c;它的主…

C++学习之路(十)C++ 用Qt5实现一个工具箱(增加一个时间戳转换功能)- 示例代码拆分讲解

上篇文章&#xff0c;我们用 Qt5 实现了在小工具箱中添加了《JSON数据格式化》功能&#xff0c;还是比较实用的。为了继续丰富我们的工具箱&#xff0c;今天我们就再增加一个平时经常用到的功能吧&#xff0c;就是「 时间戳转换 」功能&#xff0c;而且实现点击按钮后文字进行变…

Unity中C#如何访问并修改Shader材质

文章目录 前言一、我们用点击按钮来改变Shader传入的颜色值1、在渲染GUI时&#xff0c;绘制一个按钮2、我们使用一个公共的成员变量存储需要进行修改的游戏对象3、最后给绘制的按钮点击增加逻辑即可 二、测试使用的代码1、Shader代码&#xff1a;2、C#脚本 前言 我们写好Shade…

电源自动测试系统| 电源模块温度循环怎么测试?

在一些应用领域&#xff0c;电源模块会在极端环境温度条件下工作。为了确保电源在高低温环境下可以正常运行&#xff0c;满足设备需求&#xff0c;需要对电源模块进行温度循环测试。 温度循环测试是指电源模块经过升温、保温、降温等多次循环试验来检测其在温度变化下的耐热性、…

关于自动化测试框架pytest的Fixture固件

什么是固件 Fixture 翻译成中文即是固件的意思。它其实就是一些函数&#xff0c;会在执行测试方法/测试函数之前&#xff08;或之后&#xff09;加载运行它们&#xff0c;常见的如接口用例在请求接口前数据库的初始连接&#xff0c;和请求之后关闭数据库的操作。 我们之前在A…

Hana Studio打开BW失败

Hana Studio打开BW失败 JCo initialization failed with java.lang.UnsatisfiedLinkError: D:\ycy\BW培训\HANA\configuration\org.eclipse.osgi\357\0.cp\lib\sapjco3.dll: Can’t find dependent libraries 这个提示应该是VC版本问题&#xff0c;按如下链接中的地址下载安装…

使用SD-WAN新方式,解锁分公司访问总部私有云

某企业是一家跨地区运营的大型企业&#xff0c;总部位于上海&#xff0c;拥有多个分公司遍布全国。其中北京分公司作为该企业在北方地区的重要分支机构&#xff0c;负责着该地区的市场开拓和业务发展。 为了实现分公司与总部之间的有效沟通和信息共享&#xff0c;北京分公司使用…

Linux快速配置拨号

在Linux上进行ADSL拨号配置&#xff0c;通常需要使用pppoeconf命令进行设置。pppoeconf是一个用于配置pppoe连接的工具&#xff0c;它可以帮助用户快速设置pppoe连接并生成配置文件。下面是一个详细的步骤指南&#xff0c;以帮助您在Linux上进行ADSL拨号配置。 步骤1&#xff…

ToDesk优惠码来了,需要的不容错过

最近发现Todesk也有活动了&#xff0c;很多小伙伴不知道&#xff0c;除了中秋国庆双节&#xff0c;ToDesk另有专享优惠码&#xff0c;输入优惠码最高立减25元&#xff0c;即使是活动日也能折上折&#xff0c;不影响此优惠码的折扣力度&#xff01; Todesk作为国内优良的远程控制…

Centos系列:Centos7下的DNS服务器部署(每一步图文结合超详细,适用于初学者)

Centos7下的DNS服务器部署&#xff08;每一步图文结合超详细&#xff0c;适用于初学者&#xff09; Centos7下的DNS服务器部署引言部署步骤实验环境DNS服务端&#xff1a;DNS客户端&#xff1a; 正向解析安装DNS&#xff08;DNS服务端&#xff0c;客户端都要操作&#xff09;修…

ubuntu 创建conda 环境失败 HTTP 000 CONNECTION FAILED

如有帮助点赞收藏关注&#xff01; 如需转载&#xff0c;请注明出处&#xff01; 现在内存分配好了&#xff0c;创建一个专门的conda环境处理文件&#xff0c;报错了&#xff0c;创建不成功&#xff01; 什么情况&#xff0c;之前明明可以的。 百度吧。 参照一些博客修改了文档…

深入解析Linux内核网络-拥塞控制系列(一)

谈起网络拥塞控制&#xff0c;大家可能很熟悉八股文中的"加法增大“、”乘法减小“、”慢开始“、“拥塞避免”、“快重传”、“快恢复”等概念。没错&#xff0c;这是一种经典网络拥塞控制算法的基础理论&#xff0c;但在实际的实现时不同的拥塞控制算法&#xff0c;有很…

Redis事务管理

概述 事务的本质是一组命令的集合。一个事务中的所有命令都会按照命令的顺序去执行&#xff0c;而中间不会被其他命令加塞。 执行过程 UNWATCH&#xff1a;解除监控(退出事务的指令也会解除监控) 事务中异常的处理 命令语法错误&#xff1a; 针对语法错误&#xff0c;会导致整…

9、Qt使用随机验证码

一、新建项目 创建一个"Qt Widget Application"项目&#xff0c;基类选择“QMainWindow” 二、自定义CaptchaLabel类 右击项目名&#xff0c;选择"Add New...” C -> CClass&#xff0c;点击“Choose” 更改类名CaptchaLabel&#xff0c;添加基类QLabel&a…

HT7183 高功率异步升压转换器 中文资料

HT7183是一款高功率异步升压转换器&#xff0c;集成120mΩ功率开关管&#xff0c;为便携式系统提供G效的小尺寸处理方案。HT7183具有2.6V至5.5V输入电压范围&#xff0c;可为各类不同供电的应用提供支持。HT7183具备3A开关电流能力&#xff0c;并且能够提供高达16V的输出电压。…

C#/.NET/.NET Core优秀项目和框架2023年11月简报

前言 公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架&#xff08;公众号每周至少推荐两个优秀的项目和框架当然节假日除外&#xff09;&#xff0c;公众号推文有项目和框架的介绍、功能特点以及部分截图等&#xff08;打不开或者打开GitHub很慢的同学可以优先查看…

Python搭建代理IP池实现接口设置与整体调度

目录 前言 1. 搭建免费代理IP爬虫 2. 将获取到的代理IP存储到数据库中 3. 构建一个代理IP池 4. 实现调度器来调度代理IP池 5. 实现带有代理IP池的爬虫 总结 前言 在网络爬虫中&#xff0c;代理IP池是一个非常重要的组件。由于许多网站对单个IP的请求有限制&#xff0c;…