RHCE的学习(21)
第三章 Shell条件测试
用途
-
为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。
-
通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。
-
条件测试在各种流程控制语句,例如判断语句和循环语句中发挥了重要的作用,所以了解和掌握这些条件测试是非常重要的
基本语法
格式:

格式1: test -参数 条件表达式test 数值比较 -eq test a -eq b test 字符比较 a = b test a == b [ ] 算数比较 -eq = ==但> <运算符有问题需要通过\转义符 -a -o ! [ ] 字符比较test支持= ==; 不支持-eq 测试符和测试值之间通过空格分割[[ ]] && || 算数比较不需要转义符 [[ ]] 可以支持正则 =~格式2: [ 条件表达式 ] # 注意:[]的左右要有空格
格式3: [[ 条件表达式 ]] # 注意:[]的左右要有空格
格式4: ((条件表达式))
重点数值比较符通过字符类的测试测试
| test | [ ] | [[ ]] ---支持正则符 | |
|---|---|---|---|
| 数值比较 | test 1-eq 2 (-eq -gt -lt -ge -le -ne) | -eq -gt -lt -ge -le -ne -a -o ! | -eq -gt -lt -ge -le -ne && || ! --测试符都支持 |
| 字符比较 | test a = b 或者 test a == b -a -o ! | = == -a -o ! | = == && || ! a =~ ".*" a == a |
-
test单独使用,判断条件为真,echo $?返回0,假返回1
-
test与[ ]等价
-
[[ ]] 是扩展命令,可以使用通配符等进行模式匹配,&& || > < 等操作符可以直接应用于双中括号中,但不能用于单中括号中
-
(()) 一般用于if语句里,两端不需要有空格,测试对象为整数
例
# test语法
[root@server ~]# test -f /etc/passwd
[root@server ~]# echo $?
0
[root@server ~]# test -f /etc/aa
[root@server ~]# echo $?
1
[root@server ~]#
[root@server ~]# test -f /etc/passwd && echo 1 || echo 0
1
[root@server ~]# test -f /etc/aa && echo 1 || echo 0
0
[root@server ~]# test -f /etc/passwd && echo yes || echo no
yes
[root@server ~]# test -f /etc/aa && echo yes || echo no
no
[root@server ~]# if test -f /etc/passwd ; then echo 1 ; else echo no ;fi
1
[root@server ~]# if test -f /etc/aa ; then echo 1 ; else echo no ;fi
no
# [] 语法
[root@server ~]# [-f /etc/passwd] # 注意:[] 中要有空格
bash: [-f: command not found...
[root@server ~]# [ -f /etc/passwd ]
[root@server ~]# echo $?
0
[root@server ~]# [ -f /etc/aa ]
[root@server ~]# echo $?
1
[root@server ~]# [ -f /etc/aa ] && echo y || echo n
n
[root@server ~]# [ -f /etc/passwd ] && echo y || echo n
y
[root@server ~]# if [ -f /etc/passwd ] ; then echo 1 ; else echo no ;fi
1
[root@server ~]# if [ -f /etc/aa ] ; then echo 1 ; else echo no ;fi
no
# [[]] 语法
[root@server ~]# [[ 3 > 2 || 1 > 2 ]] && echo 1 || echo 0
1
[root@server ~]# [[ 3 > 2 && 1 > 2 ]] && echo 1 || echo 0
0
(()) 语法
[root@server ~]# ((9>5)) && echo 1 || echo 0
1
[root@server ~]# (( 9 > 5 )) && echo 1 || echo 0
1
[root@server ~]# ((9>5)) && echo 1 || echo 0
1
[root@server ~]# ((9>13)) && echo 1 || echo 0
0
[root@server ~]# ((9>13.5)) && echo 1 || echo 0 # 注意:不支持小数运算
-bash: ((: 9>13.5:语法错误: 无效的算术运算符 (错误符号是 ".5")
0
文件测试
参数:
| 参数 | 作用 |
|---|---|
| -b 文件名 | 检测文件是否是块设备文件,是返回 true |
| -c 文件名 | 是否是字符设备文件 |
| -d 文件名 | 是否是目录 |
| -f 文件名 | 是否是普通文件(既不是目录,也不是设备文件) |
| -S 文件名 | 是否为socket文件 |
| -P 文件名 | 是否为管道符文件 |
| -L 文件名 | 是否为链接文件 |
| -u 文件名 | 是否有suid的权限 |
| -s 文件名 | 是否为空(文件大小是否大于0),不为空返回 true |
| -e 文件名 | 检测文件(包括目录)是否存在,如果是,则返回 true |
| -r 文件名 | 检测文件是否可读,如果是,则返回 true。 |
| -w 文件名 | 检测文件是否可写,如果是,则返回 true |
| -x 文件名 | 检测文件是否可执行,如果是,则返回 true |
| f1 -nt f2 | 文件f1比文件f2新则为真(根据文件修改时间计算) |
| f1 -ot f2 | 文件f1比文件f2旧则为真(根据文件修改时间计算) |
例
//普通文件测试
[root@localhost ~]# touch file1.txt
[root@localhost ~]# [ -f file1.txt ] && echo yes || echo no
yes
//目录测试
[root@localhost ~]# [ -d /tmp ] && echo yes || echo no
yes
//测试文件属性
[root@localhost ~]# ll file1.txt
-rw-r--r-- 1 root root 0 8月 28 12:30 file1.txt
[root@localhost ~]# [ -r file1.txt ] && echo yes || echo no
yes
[root@localhost ~]# [ -x file1.txt ] && echo yes || echo no
no
[ -e ]
[ -s ]
[root@server ~]# [ -d /root ] && echo y || echo n
y
[root@server ~]# [ -d /aa ] && echo y || echo n
n
[root@server ~]# [ -b /dev/nvme0n1 ] && echo y || echo n
y
[root@server ~]# [ -L /dev/cdrom ] && echo y || echo n
y
[root@server ~]# ll /dev/cdrom
lrwxrwxrwx 1 root root 3 3月 22 11:31 /dev/cdrom -> sr0
[root@server ~]# [ -e /file1 ] && echo y || echo n
n
[root@server ~]# touch /file1
[root@server ~]# [ -e /file1 ] && echo y || echo n
y
# 编写脚本,测试文件是否存在,不存在则创建
[root@server ~]# vim temp1.sh
#!/bin/bash
FILE=$1
echo FILE
if test -e $FILE
thenecho "$FILE文件已存在"
else echo "$FILE文件不存在,开始新建..."touch $FILEls -l $FILE
fi
[root@server ~]# bash temp1.sh /etc/passwd
/etc/passwd
/etc/passwd文件已存在
[root@server ~]# bash temp1.sh temp
temp
temp文件不存在,开始新建...
-rw-r--r-- 1 root root 0 6月 17 14:53 temp
# 上例改写
[root@server ~]# vim temp1.sh
#!/bin/bash
read -p "请输入文件名: " FILE
if test -e $FILE
thenecho "$FILE文件已存在"
elseecho "$FILE文件不存在,开始新建..."touch $FILEls -l $FILE
fi
[root@server ~]# bash temp1.sh
请输入文件名: /etc/sos/sos.conf
/etc/sos/sos.conf文件已存在
[root@server ~]# bash temp1.sh
请输入文件名: t1
t1文件不存在,开始新建...
-rw-r--r-- 1 root root 0 6月 17 14:56 t1
字符串运算符
示例:

//-n如果字符串长度不为零输出yes,否则输出no
[root@localhost ~]# [ -n "hello" ] && echo yes || echo no
yes
[root@localhost ~]# [ -n "" ] && echo yes || echo no
no
注意://变量为空时通过[[]]进行测试,[]测试有问题
[root@localhost ~]# str=`grep xixi /etc/passwd`
[root@localhost ~]# [[ -n $str ]] && echo 有 || echo 无
无
[root@localhost ~]# [ -n $str ] && echo 有 || echo 无
有//-z如果字符串长度为零输出yes,否则输出no
[root@localhost ~]# [ -z "hello" ] && echo yes || echo no
no
[root@localhost ~]# [ -z "" ] && echo yes || echo n
yes
// 字符串相等比较
注意:=的左右有空格,没有空格将会导致逻辑错误。
[root@localhost ~]# [ "HELLO" = "hello" ] && echo yes || echo no
no
[root@localhost ~]# [ "HELO" != "hello" ] && echo yes || echo no
yesif [ -z $a ]
thenecho "-z $a : 字符串长度为 0"
elseecho "-z $a : 字符串长度不为 0"
fi
if [ -n "$a" ]
thenecho "-n $a : 字符串长度不为 0"
elseecho "-n $a : 字符串长度为 0"
fi
if [ $a ] -------$判断z字符串是否为空,不空为真,空为假
thenecho "$a : 字符串不为空"
elseecho "$a : 字符串为空"
fi
整数测试(关系运算符 )
作用
-
用于比较两个数值的大小关系,操作的对象是数值
操作符

数值测试:
[root@172 ~]# [ 1 -eq 2 ] && echo yes || echo no
no
[root@172 ~]# test 1 -eq 2 && echo yes || echo no
no
[root@172 ~]# [[ 1 = 2 ]] && echo yes || echo no
no
[root@172 ~]# [[ 1 -eq 2 ]] && echo yes || echo no
no
[root@172 ~]# ((1>=2)) && echo yes || echo no
no字符串比较
[root@172 ~]# [[ "a" == "b" ]]
[root@172 ~]# echo $?
1
示例:
[root@localhost ~]# [ 5 -gt 3 ] && echo yes || echo no
yes
[root@localhost ~]# [ `id -u` -eq 0 ] && echo admin || echo other
admin
[root@localhost ~]# su - student
[student@localhost ~]$ [ `id -u` -eq 0 ] && echo admin || echo other
other
例
[root@server ~]# [ 5 -gt 3 ] && echo y || echo n
y
[root@server ~]# test 5 -gt 3 && echo y || echo n
y
[root@server ~]# ((5>3)) && echo y || echo 0
y
# 知识拓展
# 检查左侧内容是否包含右侧的表达式,可以使用 =~ 正则匹配,表示是否包含
[root@server ~]# n=123
[root@server ~]# [[ "$n" =~ ^[0-9]+$ ]] && echo y || echo n
y
[root@server ~]# n=123ttt
[root@server ~]# [[ "$n" =~ ^[0-9]+$ ]] && echo y || echo n
n
逻辑操作符/布尔运算符
符号

例:
[root@server ~]# [ -f /etc/passwd -a -f /etc/services ] && echo 1 || echo 0
1
[root@server ~]# [ -f /etc/hosts -o -d /etc/services ] && echo 1 || echo 0
1
[root@server ~]# ((5<10 && 5>2)) && echo y || echo n
y
[root@server ~]# ((2<5<10)) && echo y || echo n
y
[root@server ~]# ((2<5<1)) && echo y || echo n
n
[root@server ~]# ((6<5<10)) && echo y || echo n
y
[root@server ~]# ((2<5<-1)) && echo y || echo n
n
-
命令分隔符
cmd1;cmd2 以独立的进程依次执行cmd1和cmd2
(cmd1;cmd2) 在同一进程中依次执行cmd1和cmd2
cmd1&cmd2 cmd1和cmd2同时执行,分属于不同的进程
cmd1&&cmd2 当cmd1为真时,则执行cmd2
cmd1||cmd2 当cmd1不为真时,则执行cmd2
cmd& 后台执行
# 若账户fox10不存在,则添加账户
[root@server ~]# id fox10 &> /dev/null && echo "fox10已存在" || useradd fox10# &> /dev/null 表示将左侧命令执行的正确和错误输出到“黑洞”即不显示到屏幕
命令执行顺序
复合指令:即一串命令
()和{}都是对一串的命令进行执行,但有所区别:
相同点:
- ()和{}都是把一串的命令放在括号里面,如果命令在一行命令之间用;号隔开
- ()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令
不同点 :
- ()只是对一串命令重新开一个子shell进行执行, {}对一串命令在当前shell执行
- ()最后一个命令可以不用分号,{}最后一个命令要用分号
- ()里的第一个命令和左边括号不必有空格,{}的第一个命令和左括号之间必须要有一个空格
示例:
[root@localhost scripts]# (pwd;cd /tmp;pwd)
/scripts
/tmp
# ()子shell中执行,执行完毕,当前路径不变
[root@localhost tmp]# { pwd;cd /tmp;pwd; } > aaa
/tmp
/tmp
[root@localhost tmp]# pwd;cd /;pwd
示例:
// 如果目录/abc存在给出提示信息目录已存在,否则创建目录
[ -e /abc -a -d /abc ]
方法1:[root@localhost ~]# [ -d /abc ] && echo exists || mkdir /abc
方法2:[root@localhost ~]# [ ! -d /abc ] && mkdir /abc || echo exists
案例分析
-
例1:判断当前已登录账户数,若超过5个则输出“Too many”
分析:1)如何查看当前登录用户--> who
2)已登录的用户数--> who | wc -l
num=$(who | wc -l)
[ $num -gt 5 ] && echo "Too many"
[root@server ~]# num=$(who | cut -d " " -f1 | sort -u | wc -l)[root@server ~]# [ $num -gt 5 ] && echo "Too many" || echo "已登录账户数:$num"
已登录账户数:1# who : 查看当前已登录的账户信息# cut -d " " -f1 :以空格为列向分割符,截取第1部分# sort -u :去重后排序# wc -l:计算行数# 上例改写为:
[root@server ~]# (($num>5)) && echo "Too many" || echo "已登录账户数:$num"
-
例2:编写脚本temp2.sh ,程序从键盘读入一个目录名,判断该命令是否存在,若不存在则创建,并显示目录信息
[root@server ~]# vim temp2.sh
#!/bin/bashcd /
ls
read -p "请输入一个目录名:" dir
test -d $dir && ls -l $dir || (echo "目录不存在,开始新建..." ; mkdir $dir ; ls -l $dir)
-
例3:如果/var/log/messages文件行数大于30行,则显示提示信息
[root@server ~]# (($(cat /var/log/messages | wc -l)>30)) && echo "好大一个文件" || echo "还能接受"
-
例4:编写脚本temp3.sh,功能:显示root目录下的文件信息,之后建立一个aa目录,在aa目录下新建一个文件bb.txt,并修改该文件的权限为可执行,最后再次浏览信息
[root@server ~]# vim temp3.sh
#!/bin/bashls -l /rootmkdir /root/aatouch /root/aa/bb.txtchmod +x /root/aa/bb.txtls -l /root
-
例5:编写脚本temp4.sh,从键盘读入x,y,计算和值后输出
[root@server ~]# vim temp4.sh
#!/bin/bashread -p "请输入x的值:" xread -p "请输入y的值:" yif [ -n "$x" -a -n "$y" ] # -n判断非空
thenif [[ "$x" =~ ^[0-9]+$ ]] && [[ "$y" =~ ^[0-9]+$ ]] # 判断是数字thenecho $[x+y]elseecho "请输入数字"fi
elseecho "请输入有效内容"
fi
-
例6:编写temp5.sh脚本显示所有用户,选择一个用户输入,判断是root账户还是系统账户还是普通账户
[root@server ~]# vim temp5.sh
#!/bin/bashcat /etc/passwd | cut -d ":" -f1 | sort -uread -p "请输入一个账户名:" usus_num=$(id -u $us)if (($us_num==0))
thenecho "此用户为管理员账户"
elseif (($us_num>=1 && $us_num<=999))thenecho "此账户为系统账户"elseecho "普通账户"fi
fi
-
例7:编写脚本temp6.sh ,给定文件/etc/sos/sos.conf,判断是否存在空白行,若存在则显示行数,否则显示“无空白行”提示信息
[root@server ~]# vim temp6.sh
#!/bin/bashnum=$(grep ^$ /etc/sos/sos.conf | wc -l)if (($num>0))
thenecho "/etc/sos/sos.conf文件含有空白行,行数:$num,位置如下:"grep -n ^$ /etc/sos/sos.conf
elseecho "/etc/sos/sos.conf此文件无空白行"
fi
总结:
- 文件测试
- 算数运算符
- 字符串运算符 -n
- 关系型运算符
- 逻辑运算符
相关文章:
RHCE的学习(21)
第三章 Shell条件测试 用途 为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。 通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句,例如判断语句和循环语句中…...
Ubuntu 18.04 配置sources.list源文件(无法安全地用该源进行更新,所以默认禁用该源)
如果你 sudo apt update 时出现诸如 无法安全地用该源进行更新,所以默认禁用该源 的错误,那就换换源吧,链接: https://mirror.tuna.tsinghua.edu.cn/help/ubuntu/ 注意版本: 修改源文件: sudo nano /etc…...
19.UE5道具掉落
2-21 道具掉落,回血、回蓝、升级提升伤害_哔哩哔哩_bilibili 目录 1.道具的创建,道具功能的实现 2.随机掉落 1.道具的创建,道具功能的实现 新建Actor蓝图,并命名为道具总类,添加一个Niagara粒子组件和一个碰撞箱bo…...
MySQL —— MySQL逻辑架构与查询过程
文章目录 MySQL逻辑架构整体分为三层连接层服务层查询缓存解析器优化器执行器 存储引擎层系统文件层 MySQL 查询过程查询过程框图 博客1 博客2 MySQL逻辑架构整体分为三层 最上层为客户端层,并非MySQL所独有,诸如:连接管理、授权认证、权限校…...
ODOO学习笔记(12):自定义模块开发
一、Odoo模块结构基础 基本目录结构 Odoo自定义模块通常有一个特定的目录结构。一个典型的模块目录包含以下文件和文件夹: __init__.py:这是一个Python模块初始化文件。它使得该目录被视为一个Python模块。在这个文件中,你可以通过from. impo…...
Excel单元格中自适应填充多图
实例需求:在Excel插入图片时,由于图片尺寸各不相同,如果希望多个图片填充指定单元格,依靠用户手工调整,不仅费时费力,而且很难实现完全填充。如下图中的产品图册,有三个图片,如下图所…...
20.useMediaQuery
React useMediaQuery 钩子:如何优雅地实现响应式设计? 在现代 Web 开发中,响应式设计是一个关键概念,它允许应用根据不同的屏幕尺寸和设备特性调整其布局和行为。useMediaQuery 钩子提供了一种声明式的方法来在 React 组件中使用媒体查询,使得响应式逻辑的实现变得简单而…...
无人机场景 - 目标检测数据集 - 车辆检测数据集下载「包含VOC、COCO、YOLO三种格式」
数据集介绍:无人机场景车辆检测数据集,真实场景高质量图片数据,涉及场景丰富,比如无人机场景城市道路行驶车辆图片、无人机场景城市道边停车车辆图片、无人机场景停车场车辆图片、无人机场景小区车辆图片、无人机场景车辆遮挡、车…...
聚合查询(查询)
count:统计表中所有的行数 指定某一列不统计NULL sum:求和 NULL值不参与计算(省略) avg():对所有行的指定列求平均值 max() min():求所有指定行中最大值与最小值 分组查询 group by: ROUDN()小数点 havin…...
QT QLineEdit失去焦点事件问题与解决
本文介绍如何获得QLineEdit的失去焦点事件和获得焦点的输入框也会触发失去焦点事件的问题! 目录 一、QLineEdit获得失去焦点事件 1.自定义类继承自QLineEdit 2.重写 focusOutEvent 3.使用 二、失去焦点事件问题 1.问题描述 2.问题解决 三、源码分享 lineed…...
Remora
Remora Remora 模型能够独立于碱基识别过程预测甲基化/修饰碱基的状态。Remora 仓库专注于准备修饰碱基训练数据和训练修饰碱基模型。此外,还提供了一些用于运行 Remora 模型和调查原始信号的功能。对于生产环境中的修饰碱基识别,建议使用 Dorado <https://github.com/na…...
MySQL中将一个字符串字段按层级树状展开
水善利万物而不争,处众人之所恶,故几于道💦 文章目录 需求1.分析2.实现3.思路刨析表结构和数据 需求 数据库中有个字段如下 如何将其转换为如下形式: 1.分析 1.他的层级个数是不确定的,也就是说有的有2层有的有5…...
vue面试题8|[2024-11-14]
问题1:什么是渐进式框架? vue.js router vuex element ...插件 vue.js 渐0 router 渐1 vuex 渐2 vue.js只是一个核心库,比如我再添加一个router或者vuex,不断让项目壮大,就是渐进式框…...
ARM(安谋) China处理器
0 Preface/Foreword 0.1 参考博客 Cortex-M23/M33与STAR-MC1星辰处理器 ARM China,2018年4月established,独立运行。 1 处理器类型 1.1 周易AIPU 1.2 STAR-MC1(星辰处理器) STAT-MC1,主要为满足AIOT应用性能、功…...
基于python Django的boss直聘数据采集与分析预测系统,爬虫可以在线采集,实时动态显示爬取数据,预测基于技能匹配的预测模型
本系统是基于Python Django框架构建的“Boss直聘”数据采集与分析预测系统,旨在通过技能匹配的方式对招聘信息进行分析与预测,帮助求职者根据自身技能找到最合适的职位,同时为招聘方提供更精准的候选人推荐。系统的核心预测模型基于职位需求技…...
MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk)
MATLAB实现GARCH(广义自回归条件异方差)模型计算VaR(Value at Risk) 1.计算模型介绍 使用GARCH(广义自回归条件异方差)模型计算VaR(风险价值)时,方差法是一个常用的方法。GARCH模型能够捕捉到金融时间序列数据中的波…...
深入Linux基础:文件系统与进程管理详解
在Linux运维领域,文件系统和进程管理是两个至关重要的基础知识。理解它们的原理和实际操作,不仅有助于我们更高效地管理服务器,还能快速定位问题、优化性能。本文将带你全面了解这两大模块,并配以示例代码进行讲解,帮助…...
缓存及其不一致
在实际开发过程中,一般都会遇到缓存,像本地缓存(直接在程序里搞个map也可以,但是可能会随着数据的增长出现OOM,建议使用正经的本地缓存框架,因为自己实现淘汰策略啥的挺费劲的)、分布式缓存&…...
Leetcode 有效的数独
这段代码解决的是 验证一个数独是否有效 的问题,其算法思想是基于 规则校验和状态记录。具体思想如下: 算法思想 核心目标: 检查每个数字在 同一行、同一列 和 同一个 3x3 子格 中是否重复。 状态记录: 使用 3 个布尔二维数组分别…...
《Java核心技术 卷I》用户界面中首选项API
首选项API 在桌面程序中,通常都会存储用户首选项,如用户最后处理的文件、窗口的最后位置等。 利用Properties类可以很容易的加载和保存程序的配置信息,但有以下缺点: 有些操作系统没有主目录概念,很难为匹配文件找到…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
