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

如何在PHP中编写条件语句

引言

决策是生活不可缺少的一部分。从平凡的着装决定,到改变人生的工作和家庭决定。在开发中也是如此。要让程序做任何有用的事情,它必须能够对某种输入做出响应。当用户点击网站上的联系人按钮时,他们希望被带到联系人页面。如果什么都没有发生,或者他们被带到错误的页面,用户可能会选择完全停止使用该网站或公司。

在代码中编写决策时使用的是条件语句:“如果x,则y”。即使是单击一个按钮,也是一种条件语句:“如果单击该按钮,则跳转到某个页面。”条件语句是计算机程序逻辑、决策或流程控制的一部分。你可以把条件语句比作一本“选择你自己的冒险”的书或流程图。

让我们看一些使用条件语句的例子:

  • 如果学生考试成绩超过65%,报告她的成绩及格;如果没有,就报告她的成绩不及格。
  • 如果账户中有存款,计算利息;如果透支了,要收取罚款。
  • 如果他们购买10个或更多的橙子,计算5%的折扣;如果他们少买,那就不要买。
  • 检查用户所在的位置,并根据国家显示正确的语言。
  • 提交时发送表单,或者在缺失的必填字段旁边显示警告信息。
  • 在单击事件中打开下拉菜单,或者关闭已经打开的下拉菜单。
  • 显示酒店的预订表单,但不显示酒店是否已预订。

当评估条件并根据这些条件是否满足来分配代码运行时,我们编写的是条件代码。

本教程将首先概述用于构建条件语句的比较运算符。接下来,它将带你使用PHP编写条件语句,包括ifelseelseif关键字。这也包括使用逻辑运算符and or or来组合条件。最后还会介绍一些特殊的条件运算符,以更精确地描述一种情况。

比较操作符概述

条件语句(conditional statement)计算一个条件是否为true或false。这通常是两个值比较的结果。顾名思义,比较操作符用于比较两个值。PHP是一种* 松散类型 *语言,这意味着默认情况下,PHP将尝试更改数据类型以匹配预期结果。这被称为类型杂耍,在使用比较操作符时变得非常重要。例如,以下所有值都被认为是相等的,尽管它们的类型不同:

false
0
0.0
''

PHP提供了一些比较操作符来表达对value和type/value组合的所需比较:

  • ==是在类型相等,在类型更改之后,意味着前一个代码块中的所有值都是相等的。
  • ===是在类型中都是相同的,这意味着前面的值都不相同,因为它们都是不同的类型。
  • !=<>不相等的,类型变换。作为相等的反义词,比较false != 0会被判定为false,因为两个值是匹配的。
  • !==是在类型中都不相同的。比较false !== 0会被求值为true,因为虽然这两个值求值相同,但类型不同。

**注意:**请特别注意感叹号!,它的作用是否定其他条件。

除了相等和相同之外,PHP还提供了比较操作符来表达值之间的关系。

  • 小于 <用于表示5 < 6是真的。
  • 大于 >用于表示5 > 4是真的。
  • 小于或等于 <=用于表示5 <= 55 <= 6都是真。
  • 大于或等于 >=用于表示5 >= 55 >= 4都为真。

现在我们知道了什么是比较操作符,可以看看如何使用它们来编写条件语句了。

编写条件语句

比较运算符与ifelseelseif关键字结合使用,可以构建控制程序流程的条件语句。

使用if语句

当我们希望仅在满足某个条件时执行一段特定的代码时,我们使用条件语句if,然后是括号()中的条件,然后是花括号{}中要执行的代码。只有当条件求值为true时,条件语句中的代码才会执行。当条件不是true时,条件语句中的代码将被忽略,并在条件语句结束后继续处理。让我们看看代码会是什么样子:

if ($inventory > 0) {echo "Add to Cart";
}

字符串“Add to Cart”只会在变量$inventory包含一个大于0的数字时显示。
另外,如果条件后面只有一个表达式,PHP允许我们完全省略大括号。PHP将执行条件之后的第一个表达式,以分号结尾。这包括它们之间的空白。下面的代码的计算方式与前面的例子相同:

if ($inventory > 0) echo "Add to Cart";

使用else语句

当我们希望执行一段特定的代码或另一段代码时,我们在条件语句if中添加一个else块。只有当语句的计算结果为true时,if块中的代码才会执行,而else块中的代码只有当语句的计算结果为true时才会执行。让我们看一个例子,如果购物者购买10件或更多商品,就会获得折扣:

if (count($cart) >= 10) {$discount = $subtotal * .3;
} else {$discount = 0;
}

当购物车中的商品数量大于或等于10时,语句求值为true,并根据$subtotal计算30%的折扣。当购物车中的商品数量小于10时,语句求值为false,然后执行else代码块,这没有折扣。比较也可以写成count($cart) > 9

**注意:**在计算百分比时不能使用百分号%,因为%用于计算模,即$a除以$b的余数: 3% % 8 = 2。相反,要计算百分比,只需将百分比除以100,将其转换为小数。所以30%就是30/100,或者0.30,或者0.3

添加一个else块有时会使代码更加混乱。值得考虑的是,我们是否可以在没有else块的情况下完成相同的事情。例如,前面的条件也可以写成下面这样:

$discount = 0;
if (count($cart) >= 10) {$discount = $subtotal * .3;
}

我们为折扣设置了默认值0,并仅在满足条件时更改它。

使用elseif语句

当需要第二个条件时,可以添加第二个条件语句:

$discount = 0;
if (count($cart) >= 5) {$discount = $subtotal * .15
}
if (count($cart) >= 10) {$discount = $subtotal * .3;
}

当以这种方式添加第二条语句时,PHP必须检查每条语句,即使第一条语句已经匹配。如果购物车中有14件商品,第一个条件语句将求值为’ true ',因为14大于或等于5,这将把折扣设置为15%。之后,第二个条件语句也会计算为true,因为14也大于或等于10,再次将折扣设置为30%。

如果条件的顺序不对,也可能返回错误的折扣。当有可能匹配多个条件时,最好仔细检查一下是否按正确的顺序计算了这些条件。

通过使用elseif代码块,可以更清晰地说明和评估代码:

$discount = 0;
if (count($cart) >= 10) {$discount = $subtotal * .3;
} elseif (count($cart) >= 5) {$discount = $subtotal * .15
}

在这个例子中,代码首先检查是否有大于或等于10的值。如果第一个语句的计算结果为true,则执行第一个条件块中的代码,而其他条件语句永远不会计算。只有当第一个条件不满足时,才计算下一个条件。
一个条件语句可以有任意多个elseif条件,但只能有一个else

嵌套条件语句

就像套娃一样,条件语句可以包含其他条件语句“嵌套”其中。嵌套条件语句时,使用一致的缩进极大地提高了可读性。让我们扩大折扣范围,提供更多选择:

$discount = 0;
if ($country === 'China') {if (count($cart) >= 10) {if ($coupon_discount > .3) {$discount = $subtotal * $coupon_discount;} else {$discount = $subtotal * .3;}} elseif (count($cart) >= 5) {if ($coupon_discount > .15) {$discount = $subtotal * $coupon_discount;} else {$discount = $subtotal * .15}}
}

在这个例子中,折扣仅适用于中国,所以在我们检查折扣之前,我们首先验证$country变量是否被设置为China。只有当第一个条件为true时,其余的条件才会被满足。

接下来,我们检查购物车中的商品数量是否大于或等于10。如果第二个条件为true,那么我们检查$coupon_discount的值是否大于订购10个或更多商品时正常情况下的30%折扣。如果第三个条件为true,那么使用$coupon_discount来计算$discount。否则,第三个条件为false,然后使用正常的30%来计算折扣。

这将我们带到了第二个条件的else块。与else不同,elseif区块用于在给予二次折扣之前验证购物车中的商品数量大于或等于5。我们再次检查$coupon_discount变量中的值是否大于二次批量折扣(15%)。如果第四个条件为真,$coupon_discount将用于计算$discount。否则,第四个条件为false,则我们到达最后一个15%的折扣。

嵌套条件语句(就像我们刚刚看到的那样)可能很难理解,特别是当你开始添加额外的级别时。如果可能的话,考虑如何重写条件语句以消除嵌套。前面的条件也可以写成:

$discount = 0;
if ($country !== 'China') {// 非中国店不打折
} elseif ($coupon_discount > .3) {$discount = $subtotal * $coupon_discount;
} elseif (count($cart) >= 10) {$discount = $subtotal * .3;
} elseif ($coupon_discount > .15) {$discount = $subtotal * $coupon_discount;
} elseif (count($cart) >= 5) {$discount = $subtotal * .15;
}

因为PHP允许一个空的条件块,我们可以首先检查国家并跳过任何其他条件。注意否定词!==表示该国家与值China不匹配。虽然可以让一个块完全为空,但添加注释可以解释为什么要让该块为空。

对于elseif区块,我们从最严格的开始,一直往下。在中国,如果某人的优惠券价值20% (.2),那么前3个区块将被评估为false。然后它们会到达第三个elseif,它会被评估为true,因为.2大于.15。折扣率将被计算出来,并传递最后一个条件块。

替代语法

如前面的例子所示,条件语句最常见的语法是使用大括号。PHP确实提供了一种替代语法,当每个条件语句之间有很长的代码块时,或者当在条件语句中使用同样使用大括号的循环时,它可以使代码更易于阅读。这种替代语法在条件语句之后使用冒号编写,并以endif;语句结束条件块。discount示例可以使用这种替代语法编写如下:

$discount = 0;
if ($country !== 'China')// 非中国店不打折
elseif ($coupon_discount > .3)$discount = $subtotal * $coupon_discount;
elseif (count($cart) >= 10)$discount = $subtotal * .3;
elseif ($coupon_discount > .15)$discount = $subtotal * $coupon_discount;
elseif (count($cart) >= 5)$discount = $subtotal * .15;
else$discount = $subtotal * .05;
endif;

虽然在这些条件块中嵌套循环是可以接受的,但在这些条件块中嵌套大括号条件可能会导致意想不到的结果。最好还是使用花括号或冒号。

**注意:**由于PHP处理空格的方式,当使用大括号时,它将接受elseif之间的空格:}else if(…){。但是,如果在使用冒号定义语句时使用空格: elseif(…):,PHP将会解析失败。在实践中,最好避免空格,并始终将其写成单独的elseif

其他的比较操作符

在每个条件语句中都使用一个比较操作符并不是使用比较操作符的唯一方式。我们不仅可以组合条件,还可以在条件语句之外使用比较操作符。

使用逻辑运算符组合条件

当有多个条件都需要为真,或者多个条件的影响相同时,可以使用逻辑运算符将这些条件语句组合成一个块。

  • And And表示两个条件都必须为true
  • Or Or表示有一个条件为true,或者两个条件都为true
  • Xor Xor表示只有一个条件为true
  • Not !用来否定一个条件,这会将其从true变为false
  • And &&表示两个条件都必须为true
  • Or ||表示有一个条件为true,或者两个条件都为true

andor操作符之所以有两种不同的变体,是因为它们以不同的优先级进行操作。运算符的优先级指定了它将两个表达式绑定在一起的“紧密程度”,或者运算符的求值顺序。(操作符优先级参见文档。)两种方式都是完全可以接受的,并且在大多数情况下都是一样的。PHP中的运算符是不区分大小写的,这意味着运算符也可以写成OR(或者甚至是OROR,我不建议使用这两种写法)。为了减少混乱,最重要的是无论你选择什么,都要保持一致。我将在例子中使用’ and ‘和’ or ',因为它们读起来更自然。
在折扣示例中使用:为了检查变量$country是否都被设置为China,以及购物车中的商品是否大于等于10,可以使用and操作符组合这些条件:

$discount = 0;
if ($country === 'China' and count($cart) >= 10) {$discount = $subtotal * .3;
}

这个例子有两个条件$country === 'China'count($cart) >= 10。如果这两个条件都为true,则该块中的代码将被执行。这个例子使用了and操作符,但它也可以使用and甚至&&操作符,结果完全相同。

我们还可以组合得到相同结果的条件。如果购物车中有10件或10件以上的商品可以获得30%的折扣,或者小计金额在100元或以上也可以获得30%的折扣,可以将这些条件组合起来:

$discount = 0;
if (count($cart) >= 10 or $subtotal >= 100) {$discount = $subtotal * .3;
}

两个以上的条件也可以结合;然而,在使用它们时要格外谨慎。让我们试着将country评估、购物车数量和小分类比较结合起来:

# BAD
$discount = 0;
if ($country === 'China' and count($cart) >= 10 or $subtotal >= 100) {$discount = $subtotal * .3;
}

这个例子实际上并没有按照预期的方式工作,因为首先使用cart的计数来计算国家,然后使用or对小类总数进行比较。这意味着无论country或count的值是什么,如果$subtotal大于或等于100,整个条件语句将计算为true

可以使用括号来确保条件按预期的顺序执行:

$discount = 0;
if ($country === 'China' and (count($cart) >= 10 or $subtotal >= 100)) {$discount = $subtotal * .3;
}

现在通过小计比较来评估cart计数,然后根据结果来评估国家。这提供了所需的结果,要求$country的值为China,然后购物车的计数或小计的比较(或两者)也必须计算为true

有时,比较两个值并不需要整个条件块。PHP提供了一些简写比较操作符来更精确地描述一种情况。

三元运算符

当一个表达式为true时应该有一个结果,而同一个表达式为false时应该有另一个结果时,可以使用三元运算符。如果expr1求值为true,表达式ddd求值为expr2,如果expr1求值为false,表达式(expr1) ? (expr2) : (expr3)求值为expr3。假设访问者的用户名应该显示,如果他们已登录,则应该显示单词“Guest”。函数isset将帮助我们评估这个条件,因为它将检查变量是否实际被定义。如果变量被定义了,isset返回true;否则,isset返回false

echo (isset($username)) ? 'Guest' : $username;

这和if/else语句是一样的:

if (isset($username)) {echo 'Guest';
} else {echo $username;
}

可以省略三元运算符的中间部分。如果expr1求值为true,表达式expr1 ?: expr3返回expr1,否则返回expr3。要显示用户名或单词“Guest”,三元运算符如下所示:

echo $username ?: 'Guest';

如果$username设置为空字符串,这是有效的,但如果$username根本没有设置,我们会得到一个错误。在这种情况下不能使用isset函数,因为isset($username)的输出将是truefalse,而不是$username的值。这就引出了下一个操作符。

Null合并运算符

null合并运算符(??)被添加为“语法糖”(虽然很甜,但不是必需的),以满足需要与isset()一起使用三元运算符的常见情况。如果存在且不是null,则返回第一个操作数;否则返回第二个操作数。要显示用户名或单词“Guest”,可以使用null合并操作符:

echo $username ?? 'Guest';

三向比较运算符

The spaceship operator (<=>) is used for comparing two expressions: $a <=> $b. It returns -1, 0, or 1 when $a is respectively less than (<), equal to (=), or greater than (>$b
三向比较运算符(<=>)用于比较两个表达式:$a <=> $b。当$a分别小于(<)、等于(=)或大于(>)$b时,它返回-1、0或1:

echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1

**警告:**虽然三向比较运算符不常使用,但在编写“用户自定义排序”(usort)函数时,它非常方便。下面的示例包含了您可能还不熟悉的其他概念。如果你现在没有完全理解代码,也不用担心。我将解释这个示例中发生了什么,我们将在后面的教程中更深入地介绍这些概念。
让我们创建一个新产品的数组。反过来,数组中的每个产品都是自己的产品属性嵌套数组:

$products = [['name'=>'Flippers', 'price'=>7.99],['name'=>'Wet Suit', 'price'=>18.99),['name'=>'Snorkel', 'price'=>2.99),['name'=>'Mask', 'price'=>6.99),
];

现在假设我们想要按照每个商品的价格降序对$products数组进行排序。我们可以通过使用usort函数来做到这一点,然后我们向该函数传递一个处理排序逻辑的匿名函数。让我们看一下代码:

usort($products, function($item1, $item2) {return $item2["price"] <=> $item1["price"];
});

usort函数接受两个参数(传递给函数的值)。第一个参数是$products数组。第二个是一个匿名函数,它告诉usort函数如何处理数组中的每个元素。如果$item2的价格小于$item1的价格,运算符将返回-1,这将把$item2移动到$item1之前。如果价格相同,运算符将返回0,这将使物品保持相同的顺序。最后,如果$item2的价格大于$item1,运算符将返回1,这将把$item2放在$item1之后,这仍然是他们开始时的顺序。
为了按价格升序排序,我们翻转了$item1$item2的位置,从而改变了比较的顺序:

usort($products, function($item1, $item2) {return $item1["price"] <=> $item2["price"];
});

总结

条件语句为我们提供了流控制,以确定程序的输出选择。它们是编程的基本构件之一,几乎在所有编程语言中都可以找到。
本教程涵盖了用于比较值的比较操作符和用于组合条件的逻辑操作符。它演示了ifelseelseif关键字在查看嵌套语句和组合条件时的使用。最后介绍了其他比较运算符的使用,包括三元运算符、null合并运算符和三向比较运算符。继续练习条件语句:

  • 尝试使用不同的运营商: <>=====
  • 使用andor组合运算符
  • 使用三元运算符、null合并运算符和三向比较运算符重新创建一个if语句

相关文章:

如何在PHP中编写条件语句

引言 决策是生活不可缺少的一部分。从平凡的着装决定&#xff0c;到改变人生的工作和家庭决定。在开发中也是如此。要让程序做任何有用的事情&#xff0c;它必须能够对某种输入做出响应。当用户点击网站上的联系人按钮时&#xff0c;他们希望被带到联系人页面。如果什么都没有…...

LLM架构自注意力机制Transformers architecture Attention is all you need

使用Transformers架构构建大型语言模型显著提高了自然语言任务的性能&#xff0c;超过了之前的RNNs&#xff0c;并导致了再生能力的爆炸。 Transformers架构的力量在于其学习句子中所有单词的相关性和上下文的能力。不仅仅是您在这里看到的&#xff0c;与它的邻居每个词相邻&…...

计算机网络 QA

DNS 的解析过程 浏览器缓存。当用户通过浏览器访问某域名时&#xff0c;浏览器首先会在自己的缓存中查找是否有该域名对应的 IP 地址&#xff08;曾经访问过该域名并且没有清空缓存&#xff09;系统缓存。当浏览器缓存中无域名对应的 IP 地址时&#xff0c;会自动检测用户计算机…...

安果天气预报 产品介绍

软件介绍版本号 2.0.5 安果天气预报&#xff1a;全世界覆盖&#xff0c;中国定制 想要查找北京、上海、纽约、东京还是巴黎的天气&#xff1f;一款简约的天气预 报应用为你呈现。专注于为用户提供纯净的天气体验&#xff0c;我们不发送任何打扰的通知。包含空气质量、能见度、…...

net start Mysql 启动服务时 ,显示“Mysql服务正在启动 Mysql服务无法启动 服务没有报告任何错误

一、问题 有时候&#xff0c;输入net start Mysql 启动服务时 mysql>net start Mysql 显示 Mysql服务正在启动 Mysql服务无法启动 服务没有报告任何错误 二、原因 由于mysql的默认端口是3306&#xff0c;因此在启动服务的时候&#xff0c;如果此端口被占用&#xff0c;就会出…...

DAY24

题目一 啊 看着挺复杂 其实很简单 第一种方法 就是纵轴是怪兽编号 横轴是能力值 看看能不能打过 逻辑很简单 看看能不能打得过 打过的就在花钱和直接打里面取小的 打不过就只能花钱 这种方法就导致 如果怪兽的能力值很大 那么我们就需要很大的空间 所以引出下一种做法 纵…...

Redis过期数据的删除策略

1 介绍 Redis 是一个kv型数据库&#xff0c;我们所有的数据都是存放在内存中的&#xff0c;但是内存是有大小限制的&#xff0c;不可能无限制的增量。 想要把不需要的数据清理掉&#xff0c;一种办法是直接删除&#xff0c;这个咱们前面章节有详细说过&#xff1b;另外一种就是…...

如何使用CSS实现一个拖拽排序效果?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 实现拖拽排序效果的CSS和JavaScript示例⭐ HTML 结构⭐ CSS 样式 (styles.css)⭐ JavaScript 代码 (script.js)⭐ 实现说明⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦…...

leetcode 118.杨辉三角

⭐️ 题目描述 &#x1f31f; leetcode链接&#xff1a;https://leetcode.cn/problems/pascals-triangle/description/ 代码&#xff1a; class Solution { public:vector<vector<int>> generate(int numRows) {// 先开空间vector<vector<int>> v;v.…...

微服务框架之SpringBoot面试题汇总

微服务框架之SpringBoot面试题汇总 什么是Spring Boot&#xff1f; 多年来&#xff0c;随着新功能的增加&#xff0c;spring变得越来越复杂。Spring项目&#xff0c;我们必须添加构建路径或添加Maven依赖关系&#xff0c;配置应用程序服务器&#xff0c;添加spring配置。因此&…...

Promise详解

目录 一、前言&#xff1a;为什么会出现Promise?二、Promise是什么?2.1 Promise的初体验 三、使用Promise的好处?3.1 指定回调函数的方式更加灵活3.2 可以解决回调地狱问题&#xff0c;支持链式调用 四、Promise实例对象的两个属性五、resolve函数以及reject函数六、Promise…...

Oracle 查询(当天,月,年)的数据

Trunc 在oracle中&#xff0c;可利用 trunc函数 查询当天数据&#xff0c;该函数可用于截取时间或者数值&#xff0c;将该函数与 select 语句配合使用可查询时间段数据 查询当天数据 --sysdate是获取系统当前时间函数 --TRUNC函数用于截取时间或者数值&#xff0c;返回指定的…...

什么是梯度下降

什么是梯度下降 根据已有数据的分布来预测可能的新数据&#xff0c;这是回归 希望有一条线将数据分割成不同类别&#xff0c;这是分类 无论回归还是分类&#xff0c;我们的目的都是让搭建好的模型尽可能的模拟已有的数据 除了模型的结构&#xff0c;决定模型能否模拟成功的关键…...

开黑啦kook 机器人开发 PHP swoole Liunx 服务器(宝塔)

安装环境 PHP 拓展 直接使用 宝塔一键安装 &#xff08;Windows系统不支持&#xff09; 设置命令行的PHP版本避免执行脚本时 获取不到 swoole 检查swoole是否安装成功 获取官方SDK GitHub - kaiheila/php-bot: 开黑啦机器人的php版本https://github.com/kaiheila/php-bot 配…...

Vue 中hash 模式与 history 模式的区别

hash 模式&#xff1a; - 地址中永远带着 # 号&#xff0c;不美观。 - 兼容性比较好。 - 通过手机 app 分享地址时&#xff0c;如果 app 效验严格&#xff0c;该地址会被标记为不合法。 history 模式&#xff1a; - 地址干净&#xff0c;美观。 - 兼容性和 hash 模式相比…...

Dockerfile推送私有仓库的两个案例

一&#xff0c;编写Dockerfile制作Web应用系统nginx镜像&#xff0c;生成镜像nginx:v1.1&#xff0c;并推送其到私有仓库。 具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff…...

【指标】指标公式大全,款款经典(建议珍藏)!-神奇指标网

三、指标源码&#xff1a; 1、连续三天高开高走的选股公式 count(o〉ref(c,1&#xff09;andc>o&#xff0c;3)3&#xff1b; 2、连续3天每天的最低价都比前一天高 count&#xff08;l〉ref(c,1&#xff09;,3)3&#xff1b; 3、周量缩小50%或40&#xff05;或n&#x…...

面试题目收集

Zset排行榜功能如何设计key&#xff1f; key就设计成排行榜的名字&#xff0c;比如下面插入或者更新数据 Long zadd(final String key, final double score, final String member) key : 排行榜的名字 memeber : 用户 score : 用户的分数 项目…...

创建R包-2.1:在RStudio中使用Rcpp制作R-Package(更新于2023.8.23)

目录 0-前言 1-在RStudio中创建R包项目 2-创建R包 2.1通过R函数创建新包 2.2在RStudio通过菜单来创建一个新包 2.3关于R包创建的说明 3-添加R自定义函数 4-添加C函数 0-前言 目标&#xff1a;在RStudio中创建一个R包&#xff0c;这个R包中包含C函数&#xff0c;接口是Rc…...

chatGPT如何解释泽众PerformanceRunner性能测试工具?

PerformanceRunner 是一个性能测试工具&#xff0c;可以帮助测试人员进行性能测试。它的主要功能包括&#xff1a; 1. 脚本录制和回放&#xff1a; PerformanceRunner可以录制 HTTP/HTTPS 通信协议的脚本&#xff0c;并能够回放模拟真实用户的行为。通过录制和回放&#xff0c…...

LA@向量组线性相关性

文章目录 向量组线性相关性线性相关线性无关多向量向量组线性相关单向量向量组的线性相关性单位向量向量组线性相关性双向量向量组的线性相关性双向量线性相关的几何意义三向量线性相关的几何意义包含零向量的向量组线性相关概念迁移:线性方程组和线性相关齐次线性方程组和向量…...

[k8s] 基于ubuntu22部署k8s1.28记录

k8s1.28部署已经不依赖docker了&#xff0c;所以不需要安装docker。同理&#xff1a;如果想查看镜像和运行容器&#xff0c;也不能用docker命令去查询了&#xff1a;需要使用crictl。不过crictl命令参数兼容docker&#xff0c;所以使用上手没有啥难度。 1. 配置安装源 根据k8…...

React 事件代理 和原生事件绑定混用:你的选择会导致什么问题?

在React开发中&#xff0c;事件处理是一个常见的任务。React提供了一个方便的事件系统&#xff0c;但有时我们可能会在React组件中与原生DOM事件一起使用。本文将讨论React的事件代理机制与原生事件绑定混用可能导致的一些问题。 React的事件代理 React采用了一种称为"事…...

使用阿里云国外和国内云服务器有什么注意事项?

使用阿里云的国外和国内云服务器时&#xff0c;有一些注意事项需要考虑&#xff1a; 地理位置&#xff1a;选择离你的用户或数据中心最近的地理位置&#xff0c;可以减少延迟和提高访问速度。对于国内用户&#xff0c;使用国内云服务器可能更好&#xff1b;对于国外用户&#…...

【计算机网络】【常考问题总结】

1. ping 127.0.0.1 后会发生什么&#xff1f; ping 127.0.0.1 &#xff1b;ping 0.0.0.0 &#xff1b; ping localhost 面试官问&#xff1a;断网了&#xff0c;还能ping通 127.0.0.1 吗&#xff1f;为什么&#xff1f;_kevin_tech的博客-CSDN博客 2. MTU&#xff0c;MMU是…...

前端基础(props emit slot 父子组件间通信)

前言&#xff1a;如何实现组件的灵活使用&#xff0c;今天学习组件封装用到的props、slot和emit。 目录 props 子组件 父组件 示例代码 slot 示例代码 作用域插槽 emit 示例代码 props 需要实现在其他组件中使用同一个子组件。 子组件 子组件&#xff08;所谓子组件…...

即时通讯:短轮询、长轮询、SSE 和 WebSocket 间的区别

在现代 Web 开发中&#xff0c;即时通讯已经成为许多应用程序的重要组成部分。为了实现即时通讯&#xff0c;开发人员通常使用不同的技术和协议。本文将介绍四种常见的即时通讯实现方法&#xff1a;短轮询、长轮询、SSE&#xff08;服务器发送事件&#xff09;和 WebSocket&…...

高忆管理:药店零售概念回落,开开实业走低,此前7日大涨超80%

药店零售概念18日盘中大幅下挫&#xff0c;到发稿&#xff0c;华人健康跌逾11%&#xff0c;漱玉布衣、塞力医疗跌超9%&#xff0c;重药控股、浙江震元、榜首医药等跌超7%&#xff0c;药易购跌超6%&#xff0c;开开实业跌超3%。 值得注意的是&#xff0c;开开实业此前7个交易日斩…...

Go1.19 排序算法设计实践 经典排序算法对比

详解经典排序算法 01 为什么要学习数据结构与算法 抖音直播排行榜功能 案例 规则&#xff1a;某个时间段内&#xff0c;直播间礼物数TOP10房间获得奖励&#xff0c;需要在每个房间展示排行榜解决方案 •礼物数量存储在Redis-zset中&#xff0c;使用skiplist使得元素整体有序 •…...

3:Ubuntu上配置QT交叉编译环境并编译QT程序到Jetson Orin Nano(ARM)

1.Ubuntu Qt 配置交叉编译环境 1.1 ubuntu 20.04安装Qt sudo apt-get install qtcreator 1.2 配置QT GCC配置同上 最后配置Kits 上面设置完成之后 &#xff0c;设置Kits 中的Device(这是为了能够直接把项目部署到arm设备上) 点击NEXT之后会出现连接被拒绝&#xff0c;不用担…...

CentOS下MySQL的彻底卸载的几种方法

这里我为大家详细讲解下“CentOS下MySQL的彻底卸载的几种方法”的完整攻略。 前言 先通过下列命令找到需要删除的相关文件 rpm -qa mysql* whereis mysql find / -name mysql 需要上传的命令介绍 删除 MySQL 数据目录 rm -rf /var/lib/mysql 删除配置文件 rm -rf /etc/my.cnf…...

Spring 的异常处理机制

Spring 的异常处理机制 ​ 在Spring中&#xff0c;异常处理是一个非常重要的方面&#xff0c;用于捕获和处理应用程序中可能出现的异常情况。Spring提供了多种方式来处理异常。 ​ 使用Spring的异常处理机制主要有以下优点&#xff1a; ​ **统一的异常处理&#xff1a;**通…...

java八股文面试[JVM]——JVM参数

参考&#xff1a;JVM学习笔记&#xff08;一&#xff09;_卷心菜不卷Iris的博客-CSDN博客 堆参数调优入门 jdk1.7&#xff1a; jdk1.8&#xff1a; 面试题&#xff1a;给定-Xms Xmx -Xmn 问 最大的eden区域是多少M。 常用JVM参数 怎么对jvm进行调优&#xff1f;通过参数配…...

面试热题(复原ip地址)

有效 IP 地址 正好由四个整数&#xff08;每个整数位于 0 到 255 之间组成&#xff0c;且不能含有前导 0&#xff09;&#xff0c;整数之间用 . 分隔。 例如&#xff1a;"0.1.2.201" 和 "192.168.1.1" 是 有效 IP 地址&#xff0c;但是 "0.011.255.24…...

【JavaSE】Java方法的使用

【本节目标】 1. 掌握方法的定义以及使用 2. 掌握方法传参 3. 掌握方法重载 4. 掌握递归 目录 1.方法概念及使用 1.1什么是方法(method) 1.2 方法定义 1.3 方法调用的执行过程 1.4 实参和形参的关系 2. 方法重载 2.1 为什么需要方法重载 2.2 方法重载概念 3. 递归 3.…...

Node.js 安装和配置(完整详细版)

在Windows上安装和配置Node.js&#xff1a; 下载Node.js安装程序&#xff1a; 前往Node.js官方网站&#xff08;https://nodejs.org/&#xff09;&#xff0c;在主页上找到"Downloads"&#xff08;下载&#xff09;选项。然后选择适用于Windows的"Windows Insta…...

剪枝基础与实战(4):稀疏训练及剪枝效果展示

稀疏训练是通过在损失loss中增加BN的 γ \gamma γ 参数的L1正则,从而让绝大多数通道对应的 γ \gamma γ值趋近与0, 从而使得模型达到稀疏化的效果:...

CentOS 7.6使用yum安装stress,源码安装stree-ng 0.15.06,源码安装sysstat 12.7.2

cat /etc/redhat-release看到操作系统的版本是CentOS Linux release 7.6.1810 (Core)&#xff0c;uname -r可以看到内核版本是3.10.0-957.21.3.el7.x86_64 yum install stress sysstat -y安装stress和sysstat。 使用pidstat -u 5 1没有%wait项&#xff1a; 原因是CentOS 7仓…...

POI groupRow 折叠分组,折叠部分不显示问题

折叠组是什么&#xff1f;如图就是用POI 实现的&#xff0c;代码很简单&#xff1a;sheet.groupRow(开始行&#xff0c;结束行)即可 但是万万没想到&#xff0c;最终实现出的结果&#xff0c;合并的组&#xff0c;有一部分并没有渲染出来&#xff0c;如下图&#xff1a; 因为我…...

一、数据库基础

数据库 一、数据库基础 1、一些概念 数据库&#xff1a;数据库&#xff08;DataBase &#xff0c;简称DB&#xff09;&#xff0c;就是信息的集合。数据库是由数据库管理系统管理的数据的集合&#xff1b;数据库管理系统&#xff1a;简称DBMS 。是一种操纵和管理数据库的大型…...

Harmony OS教程学习笔记

基础知识 1.如何修改程序启动的第一个页面&#xff1f; 不想使用创建的默认的页面&#xff0c;这时需要修改启动页面&#xff0c;修改的地方在EntryAbility文件中的onWindowStageCreate方法中。 onWindowStageCreate(windowStage: window.WindowStage) {// Main window is cr…...

605. 种花问题

链接 假设有一个很长的花坛&#xff0c;一部分地块种植了花&#xff0c;另一部分却没有。可是&#xff0c;花不能种植在相邻的地块上&#xff0c;它们会争夺水源&#xff0c;两者都会死去。给你一个整数数组 flowerbed 表示花坛&#xff0c;由若干 0 和 1 组成&#xff0c;其中…...

Elasticsearch 常见的简单查询

查看es中有哪些索引 请求方式&#xff1a;GET 请求地址&#xff1a;http://localhost:9200 /_cat/indices?v 参数&#xff1a;无 结果&#xff1a; 查看索引全部数据 请求方式&#xff1a;GET 请求地址&#xff1a;http://localhost:9200/index-2023-08/_search 参数&a…...

C#使用xamarin进行跨平台开发

使用 Xamarin 进行跨平台开发可以使用 C# 和 .NET 平台来开发移动应用程序&#xff0c;同时将代码在多个主要移动操作系统上运行&#xff0c;包括 Android 和 iOS。以下是在 C# 中使用 Xamarin 进行跨平台开发的一般步骤&#xff1a; 安装 Xamarin&#xff1a; 在开始之前&…...

xargs 的用法 在1个文件夹中批量删除文件,这些删除的文件名是另一个文件夹中的文件名。

xargs 的用法 在1个文件夹中批量删除文件&#xff0c;这些删除的文件名是另一个文件夹中的文件名。 1、问题背景 应用场景 1、问题背景 应用场景 在二进制部署docker时&#xff0c;会把docker的所有可执行文件复制到/usr/bin下。 如果说复制过去后&#xff0c;想要反悔&#x…...

集简云本周新增/更新:新增2大功能,集成2款应用,更新4款应用,新增近20个动作

本周更新概要 新增功能 新增功能&#xff1a;Claude2 新增功能&#xff1a;语聚AI对话助手对话背景设定 应用新增 新增应用&#xff1a;领星ERP 新增应用&#xff1a;slack(自建) 应用更新 更新应用&#xff1a;企业微信(代开发) 更新应用&#xff1a;阿里云效2020(新版…...

MySQL存储过程怎么写?看完这篇秒懂

今天测试一个数据展示模块&#xff0c;依赖于数据部推送数据&#xff0c;但是他们没有人员配合&#xff0c;为了赶工&#xff0c;于是自己徒手造数据&#xff0c;有些页面&#xff0c;要查看翻页和权限等相关的功能&#xff0c;手动造是不可能的&#xff0c;因为我懒....哈哈哈…...

STM32电源名词解释

STM32电源架构 常用名词 VCC Ccircuit 表示电路&#xff0c;即接入电路的电压。 VDD Ddevice 表示器件&#xff0c; 即器件内部的工作电压。 VSS Sseries 表示公共连接&#xff0c;通常指电路公共接地端电压。 VDDA Aanalog 表示模拟&#xff0c;是模拟电路部分的电源。主要为…...

《操作系统真象还原》学习笔记:第七章 中断

由于 CPU 获知了计算机中发生的某些事&#xff0c;CPU 暂停正在执行的程序&#xff0c;转而去执行处理该事件的程序&#xff0c;当这段程序执行完毕后&#xff0c;CPU 继续执行刚才的程序。整个过程称为中断处理&#xff0c;也称为中断。 把中断按事件来源分类&#xff0c;来自…...

【学习笔记之vue】These dependencies were not found:

These dependencies were not found:方案一 全部安装一遍 我们先浅试一个axios >> npm install axios 安装完报错就没有axios了&#xff0c;验证咱们的想法没有问题&#xff0c;实行&#xff01; ok...