当前位置: 首页 > news >正文

shell条件测试

目录

1.1.用途

1.2.基本语法

1.2.1.格式:

1.2.2.例

1.3 文件测试

1.4.整数测试

1.4.1.作用

1.4.2.操作符

1.4.3.示例:

1.5.逻辑操作符

1.5.1.符号

1.5.2.例:

1.6.命令分隔符


1.1.用途

        为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符.
        通过这些运算符,shell程序能够判断某种或者几个条件是否成立。
        条件测试在各种流程控制语句,例如判断语句和循环语句中发挥了重要的作用,所以了解和掌握这些条件测试是非常重要的

1.2.基本语法

1.2.1.格式:

        格式1:    test         -参数        条件表达式
        格式2:    [    条件表达式    ]    # 注意: [   ] 的左右要有空格
        格式3:    [[    条件表达式    ]]  # 注意: [   ] 的左右要有空格,格式1.2的增强版本,支持通配符                #  只有[[ ]]可以支持并且启用双重正则
        格式4:        ((条件表达式))

注意:

        test单独使用,判断条件为真,echo s?返回0,假返回1
        test与[   ]等价
        [[   ]] 是扩展命令,可以使用通配符等进行模式匹配,&& >等操作符可以直接应用于双中括号中,但不能用于单中括号中
        (())一般用于if语句里,两端不需要有空格,测试对象为整数

        在[   ]中参数:-a并且,-o或者

1.2.2.例

格式一:

test         -参数        条件表达式

测试passwd是否为普通文

[root@server ~]# test -f /etc/passwd                # -f 是否为普通文件
[root@server ~]# echo $?                                 # 以上俩条命令要配合使用

                        # 返回值0成立,返回值1不成立。

# test配合自编逻辑表示

[root@server ~]# test -f /etc/hosts && echo 1 || echo 0
1
[root@server ~]# test -f /etc/a1.txt && echo 1 || echo 0
0
# 解析: 

        并且(&&):左侧成立则右侧执行

        或者(||):左侧成立则右侧不执行

扩展:

[root@server ~]# test -f /etc/hosts && echo "文件为普通文件" || echo "文件不为普通文件"
文件为普通文件
[root@server ~]# test -f /etc/a1.txt && echo "文件为普通文件" || echo "文件不为普通文件"
文件不为普通文件

格式二:

  [    条件表达式    ]    # 注意: [   ] 的左右要有空格        # test与[ ]等价

[root@server ~]# [ -f /etc/hosts ]  && echo 1 || echo 0 
1
[root@server ~]# [ -f /etc/a1.txt ]  && echo 1 || echo 0 
0
[root@server ~]# [ -f /etc/hosts ] && echo "文件为普通文件" || echo "文件不为普通文件" 
文件为普通文件
[root@server ~]# [ -f /etc/a1.txt ] && echo "文件为普通文件" || echo "文件不为普通文件" 
文件不为普通文件
[root@server ~]# [ 3 > 2 && 1 <  2 ] && echo yes ||echo no 
-bash: [: 缺少 `]'                                # 不支持通配符等进行模式匹配
no

 格式三:   

[[    条件表达式    ]]                  # 注意: [   ] 的左右要有空格,格式1.2的增强版本,支持通配符

[root@server ~]# [[ 3>2 || 1>2 ]]
-bash: 条件命令中有未预期的符号 284
-bash: “3>”附近有语法错误                
# 报错原因<, > 俩侧需要加空格

&&(并且):
[root@server ~]# [[ 3 > 2 && 1 > 2 ]] && echo yes ||echo no
no
[root@server ~]# [[ 3 <  2 && 1 > 2 ]] && echo yes || echo no
no
[root@server ~]# [[ 3 < 2 && 1 > 2 ]] && echo yes || echo no
no
[root@server ~]# [[ 3 < 2 &&  1 <  2 ]] && echo yes || echo no
no
[root@server ~]# [[ 3 > 2 && 1 <  2 ]] && echo yes ||echo no
yes                                 # 结论:左右都成立才返回真

||(或者):

[root@server ~]# [[ 3 > 2 || 1 > 2 ]] && echo yes ||echo no
yes

[root@server ~]# [[ 3 > 2 || 1 > 2 ]] && echo yes || echo no
yes
[root@server ~]# [[ 3 < 2 || 1 <  2 ]] && echo yes || echo no
yes
[root@server ~]# [[ 3 < 2 || 1 > 2 ]] && echo yes || echo no
no                                   # 结论:只要左右有一方成立则返回为真             

[root@server ~]# [[ -f /etc/passwd ]]  && echo 1 || echo 0
1

 格式四:

        ((条件表达式))   # 一般只支持整数的操作

[root@server ~]# ((3>5))  && echo 1 || echo 0
0
[root@server ~]# ((3<5))  && echo 1 || echo 0
1

不可执行:
[root@server ~]# ((3.1<5))  && echo 1 || echo 0
-bash: ((: 3.1<5:语法错误: 无效的算术运算符 (错误符号是 ".1<5")
0

[root@server ~]# ((-f /etc/passwd))  && echo 1 || echo 0
-bash: ((: -f /etc/passwd:除以 0 (错误符号是 "etc/passwd")
0

1.3 文件测试

可使用以下命令的参数:test  ,[   ]    [[  ]]

参数作用
-b     文件名检测文件是否是块设备文件,是返回 true
-c     文件名是否是字符设备文件
-d     文件名是否是目录
-f     文件名是否是普通文件 (不是目录,也不是设备文件)
-S    文件名是否为socket文件
-P    文件名是否为管道符文件
-L    文件名是否为链接文件
-u    文件名是否有suid的权限
-s    文件名是否为空(文件大小是否大于0) ,不为空返回 true
-e    文件名检测文件 (包括目录)是否存在,如果是,则返回 true
-r    文件名检测文件是否可读,如果是,则返回 true。
-w    文件名检测文件是否可写,如果是,则返回 true
-X    文件名检测文件是否可执行,如果是,则返回 true
-n    参数检测数字是否为整数
f1 -nt f2文件f1比文件f2则为真 (根据文件修改时间计算)
f1 -ot f2文件f1比文件f2则为真 (根据文件修改时间计算)

例:

[root@server ~]# [ -e /etc/passwd ]  && echo yes || echo no
yes
[root@server ~]# [ -f /etc/passwd ]  && echo yes || echo no
yes
[root@server ~]# [ -d /etc/passwd ]  && echo yes || echo no
no
[root@server ~]# [ -d /etc ]  && echo yes || echo no
yes
[root@server ~]# [ -s /etc/passwd ]  && echo yes || echo no
yes
[root@server ~]# [ -x /bin/over ] && echo yes || echo no        
yes

# d开头的均为块文件。c 为字符串文件, l开头为链接文件

则有:

[root@server ~]# [ -c /dev/sr0 ] && echo yes || echo no 
no
[root@server ~]# [ -b /dev/sr0 ] && echo yes || echo no 
yes 

[root@server ~]# [ -L /dev/cdrom ] && echo yes || echo no 
yes                                        # 光盘的快捷方式
[root@server ~]# touch /etc/a.txt
[root@server ~]# [ -s /etc/a.txt ] && echo yes || echo no

no
[root@server ~]# echo  "hello world" > /etc/a.txt 
[root@server ~]# [ -s /etc/a.txt ] && echo yes || echo no

yes

读,写,执行:

[root@server ~]# ll /etc/a.txt 
-rw-r--r--. 1 root root 12 12月 10 16:30 /etc/a.txt
[root@server ~]# [ -r /etc/a.txt ] && echo yes || echo no
yes
[root@server ~]# [ -w /etc/a.txt ] && echo yes || echo no
yes
[root@server ~]# [ -x /etc/a.txt ] && echo yes || echo no
no

f1 -nt f2:比较的主要是最近改动时间

例题:编写脚本,测试根目录文件是否存在,文件名从键盘输入,若不存在则创建

方法一:使用read命令来获取变量名

        [root@server ~]# vim test1.sh

#!/bin/bash
read -p "请输入文件名称:"  filename
if test -e /$filename     
thenecho "$filename exists and it is a normal file"
elseecho "$filename doesn't exit!!"echo "create file $filename"touch /$filename
fi    

        执行查看/下是否存在mnt,并且查看nmt是否存在,若不存在则创建 

方法二:使用位置变量来获取变量名

         [root@server ~]# vim test1.sh

#!/bin/bash
filename=$1
if test -e /$filename
thenecho "$filename exists and it is a normal file"
elseecho "$filename doesn't exit!!"echo "create file $filename"touch /$filename
fi

  执行查看/下是否存在mnt,并且查看mnnt是否存在,若不存在则创建

注意:使用find检索文件,无论成功与否状态码均为一

1.4.整数测试

1.4.1.作用

        用于比较两个数值的大小关系,操作的对象是数值

1.4.2.操作符

整数二元比较操作符使用参考

在[  ]以及 test 中使用的比较符号在(())和[[ ]] 中使用的比较符号说明
-eq==或=相等,全拼为 equal
-ne!=不相等,全拼为 not equal
-gt>大于,全拼为 greater than
-ge>=大于等于,全拼为 greater equal
-lt<小于,全拼为 less than
-le<=小于等于,全拼为 less equal
#知识扩展
#=~ :     检查左侧内容是否匹配右侧的正则表达式

1.4.3.示例:

[root@server ~]# [ 6 -gt 3 ] && echo yes || echo no
yes
[root@server ~]# [ 6 -lt 3 ] && echo yes || echo no
no
[root@server ~]# test  6 -lt 3  && echo yes || echo no
no
[root@server ~]# test  6 -gt 3  && echo yes || echo no
yes
[root@server ~]# [[ 6 < 3 ]] && echo yes || echo no
no
[root@server ~]# [[ 6 > 3 ]] && echo yes || echo no
yes
[root@server ~]# ((6>3)) && echo yes || echo no
yes
[root@server ~]# ((6<3)) && echo yes || echo no
no
[root@server ~]# ((6 < 3)) && echo yes || echo no
no

        #=~ :     检查左侧内容是否匹配右侧的正则表达式

[root@server ~]# n1=123
[root@server ~]# [[ $n1 =~ ^[0-9]+$ ]] && echo yes || echo no

yes                                         # 匹配n1内的内容是否全为数字

[root@server ~]# n1=123abd
[root@server ~]# [[ $n1 =~ ^[0-9]+$ ]] && echo yes || echo no

no
[root@server ~]# n1="china"
[root@server ~]# [[ $n1 =~ ^[0-9]+$ ]] && echo yes || echo no

no

例题一:编写表达式,测试系统用户以50个为界限输出相关信息。(多余或少于)

[root@server ~]# [[ $(cat /etc/passwd |wc -l) > 50 ]] &&  echo "用户大于50" || echo "用户小于50" 
用户小于50

例题二:判断当前的已登录的账户数,超过5个则输出提示信息

方法一:

[root@server ~]#  who |cut -d " " -f1 | sort -u | wc -l   # 过滤登陆用户个数
1

who:查看账户信息   

# cut -d  " " -f1: 以空格作为列间隔符,截取第1列

# sort -u : 去重后排序

[root@server ~]# [ $(who |cut -d " " -f1 | sort -u | wc -l) -lt 5 ] && echo "登陆用户数小于5" || echo "登陆用户数大于5" 
登陆用户数小于5

方法二:

[root@server ~]#  num=$(who |cut -d " " -f1 | sort -u | wc -l)  
[root@server ~]# [ $num -lt 5 ] && echo "登陆用户数小于5" || echo "登陆用户数大于5" 
登陆用户数小于5

例三:如果/var/log/messages 文件行数大于50行,则显示提示信息

方法一:

        [root@server ~]# mnu=$(cat /var/log/messages | wc -l)  
        [root@server ~]# echo $mnu

        102
        [root@server ~]# [ $mnu -gt 50 ] && echo "文件行数大于50" || echo "文件行数小于50"
        文件行数大于50

方法二:

        [root@server ~]# [ $(cat /var/log/messages | wc -l) -lt 50 ] && echo "文件行数小于50" || echo "文件行数大于50" 
        文件行数大于50
        [root@server ~]# [ $(cat /var/log/messages | wc -l) -gt 50 ] && echo "文件行数大于50" || echo "文件行数小于50" 
        文件行数大于50

        [root@server ~]# (( $(cat /var/log/messages | wc -l) > 50 )) && echo "文件行数大于50" || echo "文件行数小于50" 
        文件行数大于50
注意:

        [root@server ~]# [[ $(cat /var/log/messages | wc -l) > 50 ]] && echo "文件行数大于50" || echo "文件行数小于50" 
        文件行数小于50               

        # 答案错误,原因:双方括号 [[ ]],它是 Bash shell 特有的条件判断符号。在这个命令中,$(cat /var/log/messages | wc -l) 的计算方式与第一个命令相同。然而,条件判断符号 > 在双方括号中被解释为字符串的比较而不是数字的比较,因此结果是错误的。

例三:编写一个脚本mkfs.sh,功能: 显示root账户下的文件信息,之后建立一个aa目录,在aa目录中新建一个文件bb.txt,并修改为可执行的权限

[root@server ~]# vim mkfs.sh

# Author: xx
# Email: xx@163.com
# Organization: http://www.xx.com/xx/
# Created Time : 2023-12-10 18:40:07
# Description:
##############################################################
ls /root
mkdir /root/aa
touch /root/aa/bb.sh
chmod a+x /root/aa/bb.txt

 [root@server ~]# bash mkfs.sh 

例四: 编写脚本mkd.sh,从键盘输入一个目录名,判断是否存在,不存在则创建

方法一:

        [root@server ~]# vim mkd.sh

# 任务:编写脚本mkd.sh,从键盘输入一个目录名,判断是否存在,不存在则创建read -p "请输入一个目录名称:" dir[ -d /$dir  ] && ls -l $dir && echo "目录$dir存在"  || echo "$dir目录不存在,创建目录$dir" && mkdir /$dirls /

        测试:查看根目录下是否有haha目录

方法二:

#!/bin/bash
# 任务:编写脚本mkd.sh,从键盘输入一个目录名,判断是否存在,不存在则创建read -p "请输入一个目录名称:" dir[ -d /$dir  ] && ls -l $dir && echo "目录$dir存在"  || (echo "$dir目录不存在,创建目录$dir" ; mkdir /$dir;ls -l /)

注意:   ";" 链接括号中多个子语句,从左到右一次执行  

        测试:查看根目录下是否有haha目录

例5: 编写脚本sum1.sh,从键盘读入俩个整数存储到x,y中,计算其和值后输出

方法一:缺点:每输入一次(无论对错)就要执行一次.sh文件)

read -p "输入整数x:" x
read -p "输入整数y:" y
[[ $x =~ ^[0-9]+$ ]] && [[ $y =~ ^[0-9]+$ ]] && echo "输出整数x+y的结果;$[x+y]" || echo ">请输入数字"

方法二:

read -p "输入整数x:" x
read -p "输入整数y:" y
if [ -n $x -a -n $y ]        # 判断是否为空
thenif [[ $x =~ ^[0-9]+$ && $y =~ ^[0-9]+$ ]]        # 判断是否为数字thensum=$[x+y]echo "俩参数和为$sum"elseecho "请输入数字"fi
elseecho "请输入有效数字"fi

例6: 编写脚本user1.sh,显示所有账户,选择一个账户输入,若id为0则表示管理员,否则表示其他账户

首先取出账户名:paswd文件的第列

        [root@server ~]# cat /etc/passwd  | cut -d ":" -f1

去重并排序:

        [root@server ~]# cat /etc/passwd  | cut -d ":" -f1 | sort -u

[root@server ~]# vim user2.sh

#!/bin/bashcat /etc/passwd |cut -d ":" -f1 | sort -u
read -p "请输入账户名" name
[ $(id -u $name) -eq 0 ]  && echo "该账户为管理员" || echo "此账户为普通用户"

        例7: 编写脚本line1.sh,统计/etc/sos/sos.conf文件中的空白行,若有空白行则显示行数,否则输出提示信息(空白行:行首行尾以及中间没有内容"^$"来表示空白行)

[root@server ~]# grep  ^$ /etc/sos/sos.conf |wc -l
4                                # 输出文件中的空白行 (使用正则表达式中的^:行首,$:行尾表示。)

 [root@server ~]# vim line1.sh

#!bin/bash
num=$( grep ^$ /etc/sos/sos.conf |wc -l )if [ $num -gt 0 ]
then    echo "/etc/sos/sos.conf有$num行"echo "行好为:"grep -n ^$ /etc/sos/sos.conf
else    echo “该文件没有空白行”
fi

扩展:将以上服务业务扩展到任何可读文件 

read -p "输入文件路径:" filenamenum=$( grep ^$ /$filename |wc -l )if [ $num -gt 0 ]
thenecho "/$filename有$num行"echo "行号为:"grep -n ^$ /$filename
elseecho “该文件没有空白行”
fi

1.5.逻辑操作符

1.5.1.符号

逻辑操作符

在[]和 test 中使用的操作符在[[ ]] 和(())中使用的操作符说明
-a&&and,与,两端都为真,则结果为真
-o||or,或,两端有一个为真,则结果为真
!!not,非,两端相反,则结果为真

1.5.2.例:

root@server ~]#  [ -f /etc/passwd -a -f /etc/services ]  && echo 1 || echo 0
1
[root@server ~]#  [ -f /etc/passwd -o -f /etc/services ]  && echo 1 || echo 0
1

[root@server ~]#  [ -f /etc/passwd -a -d /etc/services ]  && echo 1 || echo 0
0
[root@server ~]#  [ -f /etc/passwd -o -d /etc/services ]  && echo 1 || echo 0
1

1.6.命令分隔符

cmd1;cmd2                      以独立的进程依次执行cmd1和cmd2

(cmd1;cmd2)                   在同一进程中依次执行cmd1和cmd2

cmd1&cmd2                    cmd1和cmd2同时执行,分属于不同的进程        

cmd1&&cmd2                当cmd1为真时,则执行cmd2        

cmd1llcmd2                   当cmd1不为真时,则执行cmd2

cmd&                             后台执行

例:

判断一个账户是否存在,若账户fox10不存在,则添加账户

        [root@server ~]# id fox10 &> /dev/null && echo "fox10已存在" || useradd fox10

                        #  第一次执行命令无返回值,原因,系统判断无fox10因此添加账户ox10
        [root@server ~]# id fox10 &> /dev/null && echo "fox10已存在" || useradd fox10

        fox10已存在      # 由于上一次执行命令时以添加fox10因此显示已存在

注意:   &>  /dev/null  表示将左侧命令执行的正确(或错误)输出到“黑洞”即不显示到屏幕

相关文章:

shell条件测试

目录 1.1.用途 1.2.基本语法 1.2.1.格式: 1.2.2.例 1.3 文件测试 1.4.整数测试 1.4.1.作用 1.4.2.操作符 1.4.3.示例&#xff1a; 1.5.逻辑操作符 1.5.1.符号 1.5.2.例&#xff1a; 1.6.命令分隔符 1.1.用途 为了能够正确处理Shell程序运行过程中遇到的各种情况&am…...

python在线读取传奇列表,并解析为需要的JSON格式

python在线读取传奇列表,并解析为需要的JSON格式,以下为传奇中使用的TXT列表格式, [Server] ; 使用“/”字符分开颜色,也可以不使用颜色,支持以前的旧格式,只有标题和服务器标题支持颜色 ; 标题/颜色代码(0-255)|服务器标题/颜色代码(0-255)|服务器名称|服务器IP|服务器端…...

【docker 】 安装docker(centOS7)

官网 docker官网 github源码 官网 在CentOS上安装Docker引擎 官网 在Debian上安装Docker引擎 官网 在 Fedora上安装Docker引擎 官网 在ubuntu上安装Docker引擎 官网 在RHEL (s390x)上安装Docker引擎 官网 在SLES上安装Docker引擎 最完善的资料都在官网。 卸载旧版本 …...

智能网联汽车场景数据图像标注要求及方法

智能网联汽车场景数据图像标注要求及方法 1 范围 本标准规定了智能网联汽车场景数据图像中交通参与者、交通信号灯、交通标志、交通标线、可行驶区域、光照条件、遮挡截断情况7类元素的标注要求及方法。 本标准适用于智能网联汽车图像数据标注。 2 规范性引…...

四. 基于环视Camera的BEV感知算法-BEVFormer

目标 前言0. 简述1. 算法动机&开创性思路2. 主体结构3. 损失函数4. 性能对比5. BEVFormerv2总结下载链接参考 前言 自动驾驶之心推出的《国内首个BVE感知全栈系列学习教程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们来学习下课程第四章—…...

gin投票系统3

对应视频v1版本 1.优化登陆接口 将同步改为异步 原login前端代码&#xff1a; <!doctype html> <html lang"en"> <head><meta charset"utf-8"><title>香香编程-投票项目</title> </head> <body> <m…...

windows如何解决端口冲突(实用篇)

在项目设计中&#xff0c;环境配置成功点击运行瞬间&#xff0c;一大堆红爆出&#xff0c;8080端口占用&#xff0c;这个是很烦人的。。。 解决方式&#xff1a; 笨方法&#xff1a;一、查看所有端口实用情况&#xff08;挨个扫&#xff09; 按住【WINR】快捷键打开运行输入…...

「PPT 下载」Google DevFest Keynote | 复杂的海外网络环境下,如何提升连接质量

&#xff08;全网都在找的《社交泛娱乐出海作战地图》&#xff0c;点击获取&#x1f446;&#xff09; 12 月 10 日&#xff0c;“Google DevFest 2023 上海站”大会如期在上海市东方万国宴会中心举办。延续过往的技术交流碰撞、前沿技术学习基调传统&#xff0c;本届大会聚焦行…...

Logstash输入Kafka输出Es配置

Logstash介绍 Logstash是一个开源的数据收集引擎&#xff0c;具有实时管道功能。它可以从各种数据源中动态地统一和标准化数据&#xff0c;并将其发送到你选择的目的地。Logstash的早期目标主要是用于收集日志&#xff0c;但现在的功能已经远远超出这个范围。任何事件类型都可…...

Bash脚本处理ogg、flac格式到mp3格式的批量转换

现在下载的许多音乐文件是flac和ogg格式的&#xff0c;QQ音乐上下载的就是这样的&#xff0c;这些文件尺寸比较大&#xff0c;在某些场合使用不便&#xff0c;比如在车机上播放还是mp3格式合适&#xff0c;音质这些在车机上播放足够了&#xff0c;要求不高。比如本人就喜欢下载…...

Android 依据Build相关信息判断机型

Android 依据Build相关信息判断机型 本文主要通过Build的相关信息获取机型,目前机型判断的较少,后续继续维护更新 public static String parseBuild() {StringBuilder sb new StringBuilder();String deriveFingerprint Build.FINGERPRINT;String manufacturer Build.MANU…...

2024年甘肃省职业院校技能大赛信息安全管理与评估赛项一阶段样题一

2024年甘肃省职业院校技能大赛高职学生组电子与信息大类信息安全管理与评估赛项样题一 竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防…...

ARM:作业3

按键中断代码编写 代码: key_it.h #ifndef __KEY_IT_H__ #define __KEY_IT_H__#include "stm32mp1xx_gpio.h" #include "stm32mp1xx_exti.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_gic.h"void key1_it_config(); voi…...

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(二)

目录 前言总体设计系统整体结构图系统流程图 运行环境Python环境TensorFlow 环境Jupyter Notebook环境Pycharm 环境微信开发者工具OneNET云平台 相关其它博客工程源代码下载其它资料下载 前言 本项目基于Keras框架&#xff0c;引入CNN进行模型训练&#xff0c;采用Dropout梯度…...

*上位机的定义

上位机是指在分布式控制系统中&#xff0c;负责监控和控制下位机&#xff08;也称为远程终端设备&#xff09;的计算机或者计算机网络。它通常是一个高性能的计算设备&#xff0c;运行着特定的监控软件&#xff0c;用于实时监测、控制和管理下位机设备。 上位机负责与各个下位…...

架构LAMP

目录 1.什么是LAMP 2.LAMP组成及作用 3.搭建Apache httpd服务 4.编译安装mysqld 服务 5.编译安装PHP 解析环境 6.安装论坛 1.什么是LAMP LAMP架构是目前成熟的企业网站应用模式之一&#xff0c;指的是协同工作的一整套系统和相关软件&#xff0c;能够提供动态Web站点服务…...

vue实现浏览器不同分辨率下的不同样式,css的媒体查询与js判断当前浏览器宽度

前言&#xff1a; 实现实现浏览器不同分辨率下的不同样式的方法很多&#xff0c;这里整理两种&#xff0c;1个是css的媒体查询来实现&#xff0c;另一个是js判断当前浏览器的宽度&#xff0c;然后动态给他添加不同的class名&#xff0c;或者动态用style修改样式&#xff0c;添加…...

CentOS7 安装包 MariaDB 10.4.x

CentOS7 安装包 MariaDB 10.4.x 统一 MariaDB安装包 https://www.alipan.com/s/fvLg3gN7LPX 提取码: nh81 打开「阿里云盘」...

js中箭头函数简单介绍

1.箭头函数是 ES6 中新增的一种函数定义方式&#xff0c; 简单举例为 var nameA function(a){return a} 可以用箭头函数简化为 var nameA a >a; 返回的是你输入的值 比如 nameA(5) 返回的就是5 nameA(2) 返回的就是2 以上两个表达的含义是一样的。nameA为名字 2.…...

分布式ID服务实践

背景 分布式场景下需要一个全局 ID 来标识唯一性&#xff0c;比如在单数据库时通过表唯一主键即可实现唯一 ID&#xff0c;分库分表时就需要全局唯一 ID。 业务对唯一 ID 的要求如下&#xff1a; 全局唯一性 不能出现重复的 ID 号&#xff0c;既然是唯一标识&#xff0c;这…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

网络编程(UDP编程)

思维导图 UDP基础编程&#xff08;单播&#xff09; 1.流程图 服务器&#xff1a;短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...