结构化命令
章节目录:
- 一、使用 if-then 语句
- 二、if-then-else 语句
- 三、嵌套 if 语句
- 四、test 命令
- 4.1 数值比较
- 4.2 字符串比较
- 4.3 文件比较
- 五、复合条件测试
- 六、if-then 的高级特性
- 6.1 使用单括号
- 6.2 使用双括号
- 6.3 使用双方括号
- 七、case 命令
- 八、结束语
本章内容:
- 使用 if-then 语句
- 嵌套 if 语句
test
命令- 复合条件测试
- 使用双方括号和双括号
case
命令
一、使用 if-then 语句
有一类命令允许脚本根据条件跳过部分命令,改变执行流程。这样的命令通常被称为结构化命令( structured command )。其中最基本的结构化命令是 if-then 语句。
- 语句格式如下:
if command
thencommands
fi
-
bash shell 的 if 语句会运行 if 之后的命令。
-
如果该命令的退出状态码为 0 (命令成功运行),那么位于 then 部分的命令就会被执行。
-
如果退出状态码是其他值,则 then 部分的命令不会被执行,bash shell 会接着处理脚本中的下一条命令。
-
fi 语句用来表示 if-then 语句到此结束。
-
应用示例:
# 1.脚本内容。(这里第一个if块使用了存在的命令;第二个if块使用不存在的命令。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
if whoami
thenecho "ok"
fiecho -e "\n============\n"if notCommand
thenecho "ok"
fi# 2.执行脚本。(第一个if块顺利执行then;第二个if块未执行then。)
[root@VM-8-11-centos testdir]# ./test.sh
root
ok============./test.sh: line 9: notCommand: command not found
二、if-then-else 语句
当 if 语句中的命令返回非 0 退出状态码时,bash shell 会执行 else 部分中的命令。
- 语句格式如下:
if command
thencommands
elsecommands
fi
- 应用示例:
# 1.脚本内容。(if块使用不存在的命令。)
[root@VM-8-11-centos testdir]# cat ./test.sh
#!/bin/bash
if notCommand
thenecho "ok"
elseecho "use the correct command!"
fi# 2.执行脚本。(if退出码非0,执行else块。)
[root@VM-8-11-centos testdir]# ./test.sh
./test.sh: line 2: notCommand: command not found
use the correct command!
- 跟 then 部分一样,else 部分可以包含多条命令。
- fi 语句说明 else 部分结束。
三、嵌套 if 语句
有时需要在脚本中检查多种条件。对此,可以使用嵌套的 if-then 语句。
- 语句格式如下:
if command1
thencommands
elif command2
thencommands
elsecommands
fi
- elif 语句提供了另一个要测试的命令,这类似于原始的 if 语句行。
- 每个代码块会根据命令是否返回退出状态码 0 来执行。
- 记住,bash shell 会依次执行 if 语句,只有第一个返回退出状态码 0 的语句中的 then 部分会被执行。
- 应用示例:
# 1.脚本内容。(if不成立,elif都成立。 -> 提示:依次执行,只有第一个退出状态码0的then语句才会被执行。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
if notCommand
thenecho "if block"
elif whoami
thenecho "elif1 block"
elif pwd
thenecho "elif2 block"
elseecho "else block"
fi# 2.执行脚本。(只有第一个elif的then被执行到了。 -> 提示:如果if和elif退出状态码都非0,才会执行else)
[root@VM-8-11-centos testdir]# ./test.sh
./test.sh: line 2: notCommand: command not found
root
elif1 block
四、test 命令
test
命令可以在 if-then 语句中测试不同的条件。如果test
命令中列出的条件成立,那么就会退出并返回退出状态码 0 。
- 当用在 if-then 语句中时,格式如下:
if test condition
thencommands
elsecommands
fi
- 如果不写
test
命令的 condition 部分,则它会以非 0 的退出状态码退出并执行 else 代码块语句。 - 如果加入了条件,则
test
命令会测试该条件。 - bash shell 提供了另一种条件测试方法,无须在 if-then 语句中写明
test
命令:
if [ condition ]
thencommands
fi
- 方括号定义了测试条件。
- 注意事项:第一个方括号之后和第二个方括号之前必须留有空格,否则就会报错。
4.1 数值比较
使用
test
命令最常见的情形是对两个数值进行比较。
test
命令的数值比较功能:
比较 | 描述 |
---|---|
n1 -eq n2 | 检查 n1 是否等于 n2。 |
n1 -ge n2 | 检查 n1 是否大于或等于 n2。 |
n1 -gt n2 | 检查 n1 是否大于 n2。 |
n1 -le n2 | 检查 n1 是否小于或等于 n2。 |
n1 -lt n2 | 检查 n1 是否小于 n2。 |
n1 -ne n2 | 检查 n1 是否不等于 n2 |
- 应用示例:
# 1.脚本内容。(定义两个整数值进行测试比较。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
num1=10
num2=11
#
if [ $num1 -gt 5 ]
thenecho "$num1 is greater than 5."
fi
#
if [ $num1 -eq $num2 ]
thenecho "The values are equal."
elseecho "The values are different."
fi# 2.执行脚本。
[root@VM-8-11-centos testdir]# ./test.sh
10 is greater than 5.
The values are different.
- 注意事项:对于测试条件,bash shell 只能处理整数。尽管可以将浮点值用于某些命令( 比如
echo
),但它们在条件测试下无法正常工作。
4.2 字符串比较
测试条件还允许比较字符串值。
test
命令的字符串比较功能:
比较 | 描述 |
---|---|
str1 = str2 | 检查 str1 是否和 str2 相同。 |
str1 != str2 | 检查 str1 是否和 str2 不同。 |
str1 < str2 | 检查 str1 是否小于 str2 。 |
str1 > str2 | 检查 str1 是否大于 str2。 |
-n str1 | 检查 str1 的长度是否不为 0。 |
-z str1 | 检查 str1 的长度是否为 0。 |
4.2.1 字符串相等性
字符串的相等或不等条件不言自明。
- 应用示例:
# 1.脚本内容。(比较两个字符串是否相同。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
str1="hello"
#
if [ "hello" = $str1 ]
thenecho "euqal."
elseecho "not equal."
fi# 2.执行脚本。
[root@VM-8-11-centos testdir]# ./test.sh
euqal.
- 注意事项:在比较字符串的相等性时,比较测试会将所有的标点和大小写情况都考虑在内。
4.2.2 字符串顺序
要测试一个字符串是否大于或小于另一个字符串就开始变得棘手了。
- 使用测试条件的大于或小于功能时,会出现两个经常困扰的问题:
- 大于号或小于号必须转义,否则 shell 会将其视为重定向符,将字符串值当作文件名。
- 大于和小于顺序于
sort
命令所采用的不同。
- 问题一:
# 1.脚本内容。(比较时,没有对大于号进行转义。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
str1=soccer
str2=zorbfootball
#
if [ $str1 > $str2 ]
thenecho "$str1 is greater than $str2 ."
elseecho "$str1 is less than $str2 ."
fi# 2.执行脚本。(比较结果不符合预期,并且把大于号当作了重定向符号生成了新文件。)
[root@VM-8-11-centos testdir]# ./test.sh
soccer is greater than zorbfootball .
[root@VM-8-11-centos testdir]# ls z*
zorbfootball
- 问题一 - 正确使用示例:
# 1.移除文件。
[root@VM-8-11-centos testdir]# rm -rf zorbfootball # 2.修改脚本内容。(添加转义。)
[root@VM-8-11-centos testdir]# vim test.sh
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
str1=soccer
str2=zorbfootball
#
if [ $str1 \> $str2 ]
thenecho "$str1 is greater than $str2 ."
elseecho "$str1 is less than $str2 ."
fi# 3.执行脚本。(比较结果符合预期。)
[root@VM-8-11-centos testdir]# ./test.sh
soccer is less than zorbfootball .# 4.是否又重定向生成了新的文件。
[root@VM-8-11-centos testdir]# ls z*
ls: cannot access z*: No such file or directory
- 问题二:
# 1.sort排序时,优先出现小写字母。
[root@VM-8-11-centos testdir]# cat 1.txt
Soccer
soccer
[root@VM-8-11-centos testdir]# sort 1.txt
soccer
Soccer
[root@VM-8-11-centos testdir]# vim test.sh
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
str1=Soccer
str2=soccer
#
if [ $str1 \> $str2 ]
thenecho "$str1 is greater than $str2 ."
elseecho "$str1 is less than $str2 ."
fi# 2.执行脚本。(在比较测试中,大写字母被认为是小于小写字母的。)
[root@VM-8-11-centos testdir]# ./test.sh
Soccer is less than soccer .
- 比较测试中使用的是标准的 Unicode 顺序,根据每个字符的 Unicode 编码值来决定排序结果。
sort
命令使用的是系统的语言环境设置中定义的排序顺序。对于英语,语言环境设置指定了在排序顺序中小写字母出现在大写字母之前。- 注意事项:
test
命令和测试表达式使用标准的数学比较符号来表示字符串比较。而用文本代码来表示数值比较。
4.2.3 字符串大小
-n 和 -z 可以很方便地用于检查一个变量是否为空。
- 应用示例:
# 1.脚本内容。
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
str1=""
#
if [ -z "$str1" ]
thenecho "$str1 is empty."
elseecho "$str1 is not empty."
fi
#
if [ -n "$str1" ]
thenecho "$str1 is not empty."
elseecho "$str1 is empty."
fi# 2.执行脚本。
[root@VM-8-11-centos testdir]# ./test.sh is empty.is empty.
- 注意事项:空变量和未初始化的变量会对 shell 脚本测试造成灾难性的影响。如果不确定变量的内容,那么最好在将其用于数值或字符串比较之前先通过 -n 或 -z 来测试以下变量是否为空。
- 个人踩坑备注(-n 判断空字符串时,未加双引号引用变量,导致结果不符合预期。):
在shell中,引用变量时,加不加双引号是有区别的:1.如果不加双引号,shell会将变量展开为其值,并将其作为一个单词处理。这意味着,如果变量的值包含空格或其他特殊字符,这些字符会被解释为单词分隔符或特殊字符,可能会导致意外的结果。例如,假设有一个变量`var="hello world"`,如果不加双引号,使用`echo $var`命令输出的结果将是两个单词`hello`和`world`,而不是一个单词`hello world`。2.如果加上双引号,shell会将变量展开为其值,并将其作为一个整体处理。这意味着,变量的值中的空格和其他特殊字符会被保留,不会被解释为单词分隔符或特殊字符。例如,使用`echo "$var"`命令输出的结果将是一个单词`hello world`,而不是两个单词`hello`和`world`。结论:因此,为了避免意外的结果,建议在引用变量时加上双引号。
4.3 文件比较
最后一类比较测试很有可能是 shell 编程中最为强大且用得最多得比较形式。它允许测试 Linux 文件系统中文件和目录的状态。
test
命令的文本比较功能:
比较 | 描述 |
---|---|
-d file | 检查 file 是否存在且为目录。 |
-e file | 检查 file 是否存。 |
-f file | 检查 file 是否存在且为文件。 |
-r file | 检查 file 是否存在且可读。 |
-s file | 检查 file 是否存在且非空。 |
-w file | 检查 file 是否存在且可写。 |
-x file | 检查 file 是否存在且可执行。 |
-O file | 检查 file 是否存在且属当前用户所有。 |
-G file | 检查 file 是否存在且默认组与当前用户相同。 |
file1 -nt file2 | 检查 file1 是否比 file2 新。 |
file1 -ot file2 | 检查 file1 是否比 file2 旧。 |
- 应用示例:
# 1.脚本内容。(需求:如果目标文件为空则进行删除。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
# Check if a file is empty.
fileName=/home/tmp/1.txt
#
echo
echo "checking if $fileName file is empty... "
# if exists
if [ -f $fileName ]
then# is empty.if [ -s $fileName ]thenecho "$fileName file exists and has data in it."echo "will not remove this file."elseecho "$fileName file exists, but is empty."echo "deleting this file..."rm -rf $fileNameecho "$fileName file, successfully deleted!"fi#
elseecho "The $fileName file does not exist."
fi# 2.被操作文件为非空文件。
[root@VM-8-11-centos testdir]# ls -sh /home/tmp/1.txt
4.0K /home/tmp/1.txt# 3.执行脚本。
[root@VM-8-11-centos testdir]# ./test.sh checking if /home/tmp/1.txt file is empty...
/home/tmp/1.txt file exists and has data in it.
will not remove this file.
五、复合条件测试
if-then 语句允许使用布尔逻辑将测试条件组合起来。
-
布尔运算符 AND 来组合两个条件(都必须满足):[ condition ] && [ condition ]
-
布尔运算符 OR 来组合两个条件(任意条件满足):[ condition ] || [ condition ]
-
应用示例:
# 1.脚本内容。(如果$HOME目录存在且该目录下有名为newfile的可写文件,则提示写入。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
if [ -d $HOME ] && [ -w $HOME/newfile ]
thenecho "the file exists and you can write to it."
elseecho "you cannot write to the file."
fi# 2.当前无此文件。
[root@VM-8-11-centos testdir]# ls -l $HOME/newfile
ls: cannot access /root/newfile: No such file or directory
[root@VM-8-11-centos testdir]# ./test.sh
you cannot write to the file.# 3.创建文件,再次执行脚本测试。
[root@VM-8-11-centos testdir]# touch $HOME/newfile
[root@VM-8-11-centos testdir]# ls -l $HOME/newfile
-rw-r--r-- 1 root root 0 Jun 11 10:32 /root/newfile
[root@VM-8-11-centos testdir]# ./test.sh
the file exists and you can write to it.# 4.清理操作。
[root@VM-8-11-centos testdir]# rm -rf $HOME/newfile
六、if-then 的高级特性
bash shell 还提供了 3 个可在 if-then 语句中使用的高级特性。
- 在子 shell 中执行命令的单括号。
- 用于数学表达式的双括号。
- 用于高级字符串处理功能的双方括号。
6.1 使用单括号
单括号允许在 if 语句中使用子 shell。
-
在 bash shell 执行命令之前,会先创建一个子 shell ,然后在其中执行命令。
-
如果命令成功结束,则退出状态码会被设为 0 ,then 部分就会被执行。否则,不执行 then 部分的命令。
-
应用示例:
# 1.脚本内容。(使用子shell进行测试。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
echo $BAHS_SUBSHELL
#
if (echo $BASH_SUBSHELL)
thenecho "successsfully."
elseecho "not successfully."
fi# 2.执行脚本。(1表示使用了子shell。)
[root@VM-8-11-centos testdir]# ./test.sh 1
successsfully.
6.2 使用双括号
双括号命令允许在比较过程中使用高级数学表达式。相较于
test
命令进行比较时,双括号命令提供了更多的数学符号。
- 除了
test
命令使用的标准数学运算符,还有:
符号 | 描述 |
---|---|
val ++ | 后增。 |
val – | 后减。 |
++ val | 先增。 |
– val | 先减。 |
! | 逻辑求反。 |
~ | 位求反。 |
** | 幂运算。 |
<< | 左位移。 |
>> | 右位移。 |
& | 位布尔 AND。 |
| | 位布尔 OR。 |
&& | 逻辑 AND。 |
|| | 逻辑 OR。 |
- 双括号命令既可以在 if 语句中使用,也可以在脚本中的普通命令里用来赋值。
- 应用示例:
# 1.脚本内容。(num1的平方是否大于90,并将该值的平方赋值给num2)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
num1=10
#
if (( $num1 ** 2 > 90 ))
then(( num2=$num1 ** 2))echo "the suqare of $num1 is $num2."echo "which is greater than 90."
fi# 2.执行脚本。
[root@VM-8-11-centos testdir]# ./test.sh
the suqare of 10 is 100.
which is greater than 90.
- 注意事项:双括号中表达式的大于号不用转义。这是双括号命令的又一个优越性的体现。
6.3 使用双方括号
双方括号命令提供了针对字符串比较的高级特性。
- 除了
test
命令使用的标准字符串比较,还提供了test
命令所不具备的另一个特性——模式匹配。 - 在进行模式匹配时,可以定义通配符或正则表达式来匹配字符串。
- 应用示例:
# 1.脚本内容。(通配符匹配)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
#
echo $BASH_VERSION
#
if [[ $BASH_VERSION == 4.* ]]
thenecho "using version 4 series."
fi# 2.执行脚本。
[root@VM-8-11-centos testdir]# ./test.sh
4.2.46(2)-release
using version 4 series.
- 注意事项:双方括号在 bash shell 中运行良好。不过要小心,不是所有的 shell 都支持双方括号。
七、case 命令
尝试计算一个变量的值,在一组可能的值中寻找特定值。case 命令会采用列表格式来检查变量的多个值,就无须再写大量的 elif 语句来检查同一个变量的值了。
- 语句格式如下:
case 值 in
模式1)command1command2...commandN;;
模式2)command1command2...commandN;;
esac
- case 命令会将指定变量与不同模式进行比较。如果变量与模式匹配,那么 shell 就会执行为该模式指定的命令。
- 可以通过竖线运算符在一行中分隔出多个模式。
- 星号会捕获所有与已知模式不匹配的值。
- 应用示例:
# 1.脚本内容。(判断当前用户类型。)
[root@VM-8-11-centos testdir]# cat test.sh
#!/bin/bash
case $USER in
"jan" | "lucy")echo "$USER is a ordinary user.";;
"root")echo "$USER is the administrator.";;
*)echo "$USER It's a different type of account."
esac# 2.执行脚本。
[root@VM-8-11-centos testdir]# ./test.sh
root is the administrator.
八、结束语
“-------怕什么真理无穷,进一寸有一寸的欢喜。”
微信公众号搜索:饺子泡牛奶。
相关文章:
结构化命令
章节目录: 一、使用 if-then 语句二、if-then-else 语句三、嵌套 if 语句四、test 命令4.1 数值比较4.2 字符串比较4.3 文件比较 五、复合条件测试六、if-then 的高级特性6.1 使用单括号6.2 使用双括号6.3 使用双方括号 七、case 命令八、结束语 本章内容࿱…...
Java Web实训项目:西蒙购物网
文章目录 一、创建数据库和表1、创建数据库2、创建用户表3、创建类别表4、创建商品表5、创建订单表 二、创建Simonshop项目1、创建web项目2、修改Artifacts名称:simonshop3、重新部署项目4、编辑首页5、启动应用,查看效果 三、创建实体类1、用户实体类2、…...
ChatGPT Prompt 提示词设计技巧必知必会
本文内容整理自图灵社区直播《朱立成:ChatGPT Prompt提示词技巧必知必会》。 朱立成,图灵社区《ChatGPT即学即用》视频课程作者,软件工程师,对新事物充满好奇,关注ChatGPT应用。2001年毕业于浙江大学,从事软…...
尚硅谷-云尚办公-项目复盘
尚硅谷-云尚办公-项目复盘 资料地址本文介绍问题汇总问题1.knife4j无法下载 视频4问题2.dev等含义 视频5问题3.wrapper继承/实现图 视频8问题4.修改统一返回结果 视频11问题5.修改后新增也变修改 视频29问题6.redis中key值乱码 视频55-60问题7.RangeError: Maximum call stack …...
nacos升级到2.0.3(单机模式)
前提:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明 Spring Cloud AlibabaSpring CloudSpring BootNacos2.2.7.RELEASESpring Cloud Hoxton.SR122.3.12.RELEASE2.0.3 一、pom.xml文件 <parent><groupId>org.springframework.boot&…...
Koa学习3:用户添加、错误处理
模型 在src目录下创建model目录,用来存放模型 创建用户模型 user.model.js 注意: UUID类型是无法自增的,将id设置为UUID类型时只需要为其指定默认值即可 // 数据类型 const { DataTypes } require(sequelize); // 导入已经连接了数据库…...
网络安全入门学习第十五课——PHP基础
文章目录 一、WEB技术1、什么是web2、B/S架构3、C/S架构 二、PHP概述1、PHP是什么2、PHP受欢迎的原因3、基于MVC模式的PHP框架4、常用编译工具5、PHP环境搭建6、开发工具 三、PHP基本语法格式1、标记2、输出语句3、注释4、标识符 四、数据与运算1、常量1.1、常量定义1.2、预定义…...
电子科技大学 数学专业-功不唐捐,玉汝于成
电子科技大学 数学专业 功不唐捐,玉汝于成 1.本科背景 本科是坐落于湖南湘潭的湖南科技大学,专业为网络工程专业,因热爱数学专业,所以决定跨考数学专业。 本科专业课平均成绩85,排名10/104。CET 4 474分,…...
Android10.0 iptables用IOemNetd实现删除子链功能的实现
1.前言 在10.0的系统rom定制化开发中,在system中netd网络这块的产品需要中,会要求设置屏蔽ip地址之内的功能, liunx中iptables命令也是比较重要的,接下来就来在IOemNetd这块实现删除创建子链的相关功能 2. iptables用IOemNetd实现删除创建子链功能的实现的核心类 syste…...
OpenGL光照之光照贴图
文章目录 漫反射贴图镜面光贴图放射光贴图代码 每个物体都拥有自己独特的材质从而对光照做出不同的反应的方法。这样子能够很容易在一个光照的场景中给每个物体一个独特的外观,但是这仍不能对一个物体的视觉输出提供足够多的灵活性。 我们将整个物体的材质定义为一个…...
2018~2019 学年第二学期《信息安全》考试试题(B 卷)
北京信息科技大学 2018 ~2019 学年第 2 学期 《信息安全》课程期末考试试卷 B 课程所在学院:计算机学院 适用专业班级:计科 1601-06,重修 考试形式:(闭卷) 一. 选择题(本题满分 10 分,共含 10 道小题,每小题 1 分) 网络中存在的安全漏洞主…...
LeetCode-C#-0002.两数相加
0.声明 该题目来源于LeetCode 如有侵权,立马删除。 解法不唯一,如有新解法可一同讨论。 1.题目 0002两数相加 给你两个非空的链表,表示两个非负的整数,它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一…...
访问修饰符private,default,protected,public访问等级区别
private:private是最严格的访问修饰符,它将成员声明为私有的。私有成员只能在声明它们的类内部访问,其他类无法直接访问私有成员。这样可以确保数据的封装性和安全性。 default(默认):如果没有明确指定访问…...
阿里云(Linux)安装Docker教程
首先安装docker,需要找到帮助文档,那肯定是我们的官网: Install Docker Engine on CentOS | Docker Documentation 找到对应的位置,这里是安装在CentOS中,版本需要Ce…...
Linux C编程基础:获取时间
1.前言 对于linux下的编程,无论是用户态还是内核态,时间获取都是经常需要使用到的。以下分别从用户态和内核态整理了几个常用的时间获取接口,供编写代码时快速查阅。 2.用户态获取时间 2.1 clock_gettime() #include <time.h>int c…...
Spring核心注解
1、Bean注解 作用:用于把当前方法的返回值作为bean对象存入spring的ioc容器中位置: 一般出现在方法上面属性: name:用于指定bean的id。当不写时,默认值是当前方法的名称细节:当我们使用注解配置方法时,如果方法有参数,…...
哈希表原理,以及unordered_set/和unordered_map的封装和迭代器的实现
哈希表 unordered系列unordered_set和unordered_map的使用哈希哈希概念哈希冲突哈希函数闭散列开散列哈希表的扩容哈希表源码(开散列和闭散列) 封装unordered_set/和unordered_map,以及实现迭代器节点定义unordered_set定义unordered_map定义…...
如何把歌曲里的伴奏音乐提取出来,分享几个方法给大家!
对于一首歌,我们都知道,它有两部分组成:背景音乐人声。这两者合在一起,便是我们经常听的歌。部分用户想要直接获取歌曲伴奏,那么可以在UU伴奏网上下载。 操作方法比较简单,直接搜索想要的歌曲名称就可以了…...
区块链产业快速发展 和数集团开启区块链应用新时代
UTONMOS区块链游戏要来了。 就在5月底,UTONMOS品牌所属公司上海和数集团在泰国发布了【神念无界】系列的多款国际版链游,包括【神念无界-源起山海】、【北荒传奇】、【神宠岛】、【神农园】等区块链游戏。 以【神念无界-源起山海】为例,其是…...
初出茅庐的小李博客之常见字符串函数使用
C语言字符数组与字符串数组 在C语言中,字符数组和字符串数组实际上是同一种类型。字符串是由字符组成的字符数组,通常以空字符 ‘\0’ 结尾。C语言中的字符串是一种常见的数据类型。我们可以通过两种方式定义字符数组跟字符串数组 char charArray[10];…...
运筹学工程化流程和常见的运筹学算法分类以及常见软件
文章目录 前言运筹学工程化流程运筹学算法分类运筹学软件参考文献 前言 自2023年初新冠疫情管控放开后,各家公司各类岗位的人员都有被裁的消息传出,但用人市场上运筹学算法岗位却反其道行之,用工出现了激增。可以预见的是数据算法将从传统的…...
JAVA面向对象(三)
第三章 封装与继承 目录 第三章 封装与继承 1.1.封装 1.2.包 1.3.访问权限控制 1.4.static修饰符 1.4.1.成员变量 1.4.2.成员方法 1.4.3.代码块 总结 内容仅供学习交流,如有问题请留言或私信!!!!࿰…...
前端面试题---跨域处理和异常、错误处理
一.跨域处理 在前端开发中,当我们在浏览器中向不同域名或端口发起请求时,就会遇到跨域请求的限制。为了处理跨域请求,有几种常见的方法 1.JSONP(JSON with Padding) JSONP是一种利用 <script> 标签可以跨域加载…...
网络安全之反序列化漏洞分析
简介 FastJson 是 alibaba 的一款开源 JSON 解析库,可用于将 Java 对象转换为其 JSON 表示形式,也可以用于将 JSON 字符串转换为等效的 Java 对象分别通过toJSONString和parseObject/parse来实现序列化和反序列化。 使用 对于序列化的方法toJSONStrin…...
19 贝叶斯线性回归
文章目录 19 贝叶斯线性回归19.1 频率派线性回归19.2 Bayesian Method19.2.1 Inference问题19.2.2 Prediction问题 19 贝叶斯线性回归 19.1 频率派线性回归 数据与模型: 样本: { ( x i , y i ) } i 1 N , x i ∈ R p , y i ∈ R p {\lbrace (x_i, y_…...
第七十天学习记录:高等数学:微分(宋浩板书)
微分的定义 基本微分公式与法则 复合函数的微分 微分的几何意义 微分在近似计算中应用 sin(xy) sin(x)cos(y) cos(x)sin(y)可以用三角形的几何图形来进行证明。 假设在一个单位圆上,点A(x,y)的坐标为(x,y),点B(x’, y’)的坐标为(x’, y’)。则以两点…...
Jmeter
目录 一、jmeter 安装 二、jmeter 介绍 1、jmeter是什么? 2、jmeter 用来做什么? 3、优点 4、缺点 5、jmeter 目录介绍 ①_bin 目录介绍 ② docs 目录 — — 接口文档目录 ③ extras目录 — — 扩展插件目录 ④ lib 目录 — — 所用到的插件目录 ⑤ lic…...
Flutter 学习 之 时间转换工具类
Flutter 学习之时间转换工具类 在 Flutter 应用程序开发中,处理时间戳是非常常见的需求。我们通常需要将时间戳转换为人类可读的日期时间格式。为了实现这一点,我们可以创建一个时间转换工具类。 实现方法 以下是一个简单的时间转换工具类的示例&…...
docker consul
docker consul的容器服务更新与发现 服务注册与发现是微服务架构中不可或缺的重要组件,起始服务都是单节点的,不保障高可用性,也不考虑服务的承载压力,服务之间调用单纯的通过接口访问的,直到后来出现多个节点的分布式…...
全志V3S嵌入式驱动开发(开发环境再升级)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 前面我们陆陆续续开发了差不多有10个驱动,涉及到网口、串口、音频和视频等几个方面。但是整个开发的效率还是比较低的。每次开发调试的…...
360度搜索建站网/网站推广公司排名
今天弄了一上午的python-ldap,发现要么安装vc,要么用其他比较麻烦的方法,都比较麻烦。幸好找到这个地址: http://www.lfd.uci.edu/~gohlke/pythonlibs/ http://www.voidspace.org.uk/python/modules.shtml 这上面有很多python第三方包的二进制…...
小程序推广网站/百度网络推广怎么收费
中石油校内的比赛,只能后续补题了,题目来说还是比较的不错 A 数方格(思维) 规定了都是正方形,那么枚举就可以一行的按照规律也好枚举列数也好枚举 代码 #include <bits/stdc.h> using namespace std; int main()…...
甘孜州住房城乡建设局网站/2023b站免费推广入口
“private是私有的,其他类是不能访问的,子类也不可以访问,所以你可以重新实现父类的该方法,不会有冲突,但是你重新实现的方法,不叫重写也不叫重载,是一个该子类新增的方法,和子类的一般扩展方法一样” public class A {private void print() {System.out.println("A"…...
封面设计网站/买卖交易平台
游戏中的内容总是在不断的优化,不断地给玩家们提供一些更加便利的系统,可以让玩家在游戏中更加轻松一些,初代老玩家们看到这些系统都表示既非常羡慕,开荒时的困难是新玩家们无法想象到的。在本周的维护更新之后,游戏中…...
营销网站建设模板/品牌策划推广方案
1.自己写返回主键keyProperty"userId"中userId对应的值是领域模型TbSysUser中对应的userId;不是数据库中对应的字段名<!-- 测试插入返回主键 --><insert id"addUser" parameterType"com.czht.wdp.core.sys.pojo.TbSysUser" useGenerat…...
沈阳网站建设推广/西安网站制作推广
博客今天发表想写点近来看的智能机器的小册子,感觉深刻的是整个step的规划,就像一般软件项目开发的过程与整体规划。主体是跨步倾斜两个电机的过程先后判断,智能机器人亦步亦趋的行走着,采用at89s52控制过程简单,实用性…...