PHP基础语法(上)

目录

前言

一、基础语法

1.1 标记

1.2 输出语句

1.2.1 echo

1.2.2 print

1.3 注释

1.3.1 单行注释

1.3.2 多行注释

1.4 标识符

1.5 关键字

二、数据与运算

2.1  常量

2.1.1 常量的定义和使用

2.1.2 预定义常量

2.2 变量

2.2.1 变量的赋值

2.2.2 超全局变量

2.3 数据类型

2.3.1 标量数据类型

2.3.2 特殊数据类型

2.3.3 数据类型检测

2.3.4 数据类型转换

2.4 运算符及优先级

2.4.1 运算符

2.4.2 优先级

总结


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

本篇文章通过介绍PHP的基础语法,数据与运算,来让你了解PHP的魅力。详细内容请看正文。

 这是本篇文章的脉络图:


一、基础语法

1.1 标记

标记 :由于PHP 是嵌入式脚本语言,它在实际开发中经常会与HTML内容混编在一起,
所以为了区分HTML与PHP代码,需要使用标记对PHP代码进行标识。

注意 :当解析一个文件时, PHP 会寻找起始和结束标记,也就是告诉PHP 开始和停止解析二者之间的代码。此种解析方式使得PHP可以被嵌入到各种不同的文档中去,而任何起始和结束标记之外的部分都会被PHP 解析器忽略。

1.2 输出语句

1.2.1 echo

echo可将紧跟其后的一个或多个字符串、 表达式、变量和常量 的值输出到页面中,多个数据之间使用逗号“,”分隔。

1.2.2 print

print与echo的用法相同,唯一的区别是print只能输出一个值。
print_r() :PHP的内置函数,它可输出任意类型的数据,如字符串、数组等。
var_dump() :不仅可以打印一个或多个任意类型的数据,还可以获取数据的类型和元素个数。

例如:

<?php
var_dump("php","2");
?>

1.3 注释

注释 :在PHP开发中,为了便于对代码的阅读和维护,可以使用注释来进行解释和说明。它在程序解析时会被PHP解析器忽略。

1.3.1 单行注释

使用双斜线(//)来注释单行代码。注释符号后面的内容将被视为注释,不会被解释器执行。
例如:

<?php 
// 这是一个单行注释示例 
$variable = "Hello World";
?>

1.3.2 多行注释

使用斜线加星号(/*... */)来注释多行代码。注释符号之间的内容将被视为注释,不会被解释器执行。
例如:

<?php
/* 这是一个多行 
注释示例 */ 
$variable2 = "Hello World";
?>

1.4 标识符

标识符:PHP程序开发中,经常需要自定义一些符号来标记一些名称,如变量名、函数名、类名等,这些符号被称为标识符。
标识符的定义需要遵循一定的规则,具体如下:
1. 标识符只能由字母、数字、下划线组成,且不能包含空格
2.标识符只能以字母或下划线开头的任意长度的字符组成
3.标识符用做变量名时,区分大小写 $a,$A
4.如果标识符由多个单词组成,那么应使用下划线进行分隔(例如:user_name)
例如:
合法标识符: itcast、itcast88、_itcast、username、password等。
非法标识符:66itcast、it cast、123、@itcast等。

1.5 关键字

关键字:是编程语言里事先定义好并赋予特殊含义的单词,也称作保留字。和其他语言一样,PHP中保留了许多关键字,下面是PHP的一些主要关键字:

1. echo:用于在屏幕上输出文本或变量的值。
2. if、else、elseif:用于条件语句,根据指定条件执行不同的代码块。
3. for、while、do-while:用于循环结构,重复执行一段代码块。
4. switch、case:用于多重条件判断,根据不同情况执行不同的代码块。
5. break:用于退出循环或switch语句。
6. continue:用于跳过当前循环的剩余代码,继续下一轮循环。
7. function:用于定义和声明一个函数。
8. class、interface、trait、extends、implements:用于面向对象编程,定义类、接口和特性,实现类之间的继承和接口的实现。
9. public、protected、private:用于定义类的成员属性或方法的访问级别。
10. static:用于定义静态属性和方法,可以在不创建类的实例的情况下访问。
11. final:用于防止类被继承或方法被覆盖。
12. abstract:用于声明抽象类或方法,不能直接实例化。
13. namespace:用于声明命名空间,避免类名冲突。
14. use:用于导入其他命名空间的类或函数。

二、数据与运算

2.1  常量

概念:常量就是在脚本运行过程中值始终不变的量。
特点:是一旦被定义就不能被修改或重新定义。
举例:数学中的圆周率π就是一个常量,其值就是固定且不能被改变的。
命名规则:遵循标识符的命名规则, 默认大小写敏感,习惯上常量名称总是使用大写字母表示。

2.1.1 常量的定义和使用

在PHP中,可以使用`define()`函数来定义常量。常量是无法被改变的值,在定义后不能再次进行修改。常量的定义方式有两种:

1. 使用 `define()` 函数定义常量:

define ('PAI', '3.14'); 
echo 'PI =', PAI; / / Output result: PI =3.14 
define ('R', '5', true); 
echo 'radius =', R; / / Output result: Radius =5 
echo 'radius =', r; / / Output result: Radius =5
首个参数定义常量的名称,第二个参数定义常量的值,可选的第三个参数规定常量名是否对大小写不敏感。默认是 false。 如果设置为 TRUE ,该常量则大小写不敏感。默认是大小写敏感的。常量定义后,可以在任何地方使用,不需要加`$`符号,直接使用常量名称即可。

2. 使用`const`关键字定义常量(PHP 5.3+):

const R = 6;
const P = 2 * R;
echo 'P=', P; // 输出结果:P=12

无论使用哪种方式定义常量,都无法在定义后再次修改常量的值。另外,常量的作用域是全局的,可以在任何地方访问,包括函数内部。

2.1.2 预定义常量

PHP中有许多预定义常量,它们是由PHP提供的全局常量。这些常量可以在任何地方直接使用,无需进行定义或声明。以下是一些常用的预定义常量及其解释:

  1. __FILE__:当前执行的文件的完整路径和文件名。
  2. __DIR__:当前执行的文件所在的目录的绝对路径。
  3. __LINE__:当前代码行号。
  4. __FUNCTION__:当前所在函数的函数名。
  5. __CLASS__:当前所在类的类名。
  6. __METHOD__:当前所在方法的方法名。
  7. __NAMESPACE__:当前所在命名空间的命名空间名。
  8. PHP_VERSION:当前PHP版本号。
  9. PHP_OS:运行PHP的操作系统。
  10. PHP_EOL:当前操作系统的换行符。

这些预定义常量可以帮助我们获取有关代码和环境信息,方便进行调试和编程。可以通过直接在代码中使用它们来获取相应的值。示例:

echo __FILE__; // 输出当前文件的完整路径和文件名
echo __DIR__; // 输出当前文件所在的目录的绝对路径
echo __LINE__; // 输出当前代码行号function myFunction() {echo __FUNCTION__; // 输出当前所在函数的函数名echo __CLASS__; // 输出当前所在类的类名echo __METHOD__; // 输出当前所在方法的方法名
}echo PHP_VERSION; // 输出当前PHP版本号
echo PHP_OS; // 输出运行PHP的操作系统

2.2 变量

概念:变量是用于存储信息的"容器":
组成:在PHP中,变量是由$符号和变量名组成的。
规则:变量名的命名规则与标识符相同。
举例:如$number、$_it为合法的变量名,而$123、$*math为非法变量名。

2.2.1 变量的赋值

在PHP中,变量赋值是将一个值保存到变量中的过程。PHP是一种动态类型的语言,因此在赋值时无需事先声明变量的数据类型。以下是关于PHP变量赋值的三种方式:

1. 传值赋值:

$variable_name = value;

这是最常见的赋值语法,通过=操作符将一个值赋给变量。$variable_name是变量名,value是要赋给变量的值。

示例:

$name = "John"; // 将字符串 "John" 赋给变量 $name
$age = 25; // 将数字 25 赋给变量 $age
$is_active = true; // 将布尔值 true 赋给变量 $is_active

2. 引用赋值:
在PHP中,通过引用赋值可以使用多个变量引用同一个值。

$variable_name = &$reference_variable;

`&$reference_variable`表示一个引用变量,它与其他变量共享相同的内存空间,即对其中一个变量的修改会影响其他引用变量。

示例:

$a = 10;
$b = &$a; // 将 $a 的引用赋给 $b
$b = 20; // 修改 $b 的值也会影响 $a
echo $a; // 输出 20
两种实现方式的区别:传值赋值方式当一个变量值发生改变时,不影响另一个变量;而引用赋值的方式,另一个变量会随之变化。

2.2.2 超全局变量

在PHP中,超全局变量(superglobal variables)是一类预定义的全局变量,它们在脚本的任何地方都可以直接访问,无需额外的声明或引用。这些超全局变量在整个脚本中都是可用的,无论是在函数、类、循环还是条件语句中。

以下是PHP中最常用的超全局变量:

1. `$_GET`:用于获取通过 URL 查询字符串传递的参数。它是一个关联数组,其中的键是参数名,值是参数的值。

示例:

// URL: example.com?name=John&age=25
echo $_GET['name']; // 输出 "John"
echo $_GET['age']; // 输出 "25"

2. `$_POST`:用于获取通过 HTTP POST 方法提交的表单数据。它也是一个关联数组,其中的键是表单字段名,值是字段的值。

示例:

// 表单中的字段:<input type="text" name="name"> 和 <input type="text" name="age">
echo $_POST['name']; // 输出提交的 name 字段的值
echo $_POST['age']; // 输出提交的 age 字段的值

3. `$_REQUEST`:用于获取通过 HTTP GET 或 POST 方法提交的参数和表单数据。它是`$_GET`和`$_POST`的合并。

4. `$_COOKIE`:用于获取客户端提交的 Cookie 值。它是一个关联数组,其中的键是 Cookie 名称,值是 Cookie 的值。

示例:

echo $_COOKIE['username']; // 输出名为 username 的 Cookie 值

5. `$_SESSION`:用于访问当前会话的 session 数据。它是一个关联数组,用于在不同页面之间存储和读取会话信息。

示例:

session_start();
$_SESSION['username'] = 'John'; // 设置 session 变量
echo $_SESSION['username']; // 输出 'John'

6. `$_SERVER`:包含了有关服务器和执行环境的信息,例如请求的方法、请求的 URL、服务器的主机名等。它是一个关联数组。

示例:

echo $_SERVER['REQUEST_METHOD']; // 输出请求的方法(GET、POST、PUT等)
echo $_SERVER['SERVER_NAME']; // 输出服务器的主机名

2.3 数据类型

PHP中支持3类数据类型:
1.标量数据类型
2.复合数据类型
3.特殊数据类型

2.3.1 标量数据类型

1.布尔型

布尔型是PHP中较常用的数据类型之一,通常用于逻辑判断。 表示事物的“真”和“假”,并且不区分大小写。

示例:
$isTrue = true;
$isFalse = false;

2.整型

整型可以由十进制、八进制和十六进制数指定,用来表示整数。
(1) 在它前面加上“-”符号,可以表示负数。
(2)八进制数使用0~7表示,前缀为0。
(3) 十六进制数使用0~9与A~F表示,以0x为前缀。
3.浮点型
概念 :浮点数是程序中表示小数的一种方法,或是指数形式。
表示方式 :通常使用标准格式和科学计数法格式表示。
4.字符串型
概念:字符串是由连续的字母、数字或字符组成的字符序列。
表示方式:分别为单引号、双引号、heredoc语法结构和nowdoc 语法结构。
示例:
<?php
$number = 100;
echo 'number=',$number;
echo '<br>';
echo "$number=",$number;
?>

注意:单引号输出字符串,双引号里面可以解析变量。

上述例子运行结果如下:

2.3.2 特殊数据类型

1.NULL
NULL 值表示变量没有值。NULL 是数据类型为 NULL 的值。 NULL 值指明一个变量是否为空值。 同样可用于数据空值和NULL值的区别。 可以通过设置变量值为 NULL 来清空变量数据:
<?php
$x="Hello world!";
$x=null;
var_dump($x);
?>
在下列情况下一个变量被认为是NULL:
(1)被赋值为NULL。
(2)尚未被赋值。
(3)被unset()。

2.3.3 数据类型检测

PHP中变量的 数据类型通常不是开发人员设定的,而是根据该 变量使用的 上下文在运行时决定的。
PHP中提供了许多检测数据类型的函数,大致可以分为两种:gettype()函数和is_*()类函数,括号里的参数为待要检测的值。
is_*()如果检测的值符合检测的数据类型,则返回true,否则返回false。

2.3.4 数据类型转换

时机 :在PHP中,对两个变量进行操作时,若其数据类型不相同,则需要对其进行数据类型转换。
分类 :通常情况下,数据类型转换分为自动类型转换和强制类型转换。

1.自动类型转换

指的是当运算需要或与期望的结果类型不匹配时,PHP将自动进行类型转换,无需开发人员做任何操作。

分类:最常见的有3种,分别为转换成布尔型、转换成整型和转换成字符串型。

2.强制类型转换

所谓强制类型转换,就是在编写程序时手动转换数据类型,在要转换的数据或变量之前加上“(目标类型)”即可。
例如:
var_dump((int) "6.66");

2.4 运算符及优先级

2.4.1 运算符

运算符 ,专门用于告诉程序执行特定运算或逻辑操作的符号。PHP提供了一系列的运算符,用于执行不同的数学、逻辑和字符串操作。以下是PHP中常见的运算符及其作用:
  1. 算术运算符:

    • + 加法:对两个数进行相加。
    • - 减法:从一个数中减去另一个数。
    • * 乘法:将两个数相乘。
    • / 除法:将一个数除以另一个数。
    • % 取模:取得两个数相除后的余数。
  2. 赋值运算符:

    • = 赋值:将右侧的值赋给左侧的变量。
    • += 加法赋值:将右侧的值加到左侧的变量上。
    • -= 减法赋值:从左侧的变量中减去右侧的值。
    • *= 乘法赋值:将左侧的变量乘以右侧的值并重新赋值给左侧的变量。
    • /= 除法赋值:将左侧的变量除以右侧的值并重新赋值给左侧的变量。
  3. 比较运算符:

    • == 等于:检查两个值是否相等。
    • != 不等于:检查两个值是否不相等。
    • > 大于:检查左侧的值是否大于右侧的值。
    • < 小于:检查左侧的值是否小于右侧的值。
    • >= 大于等于:检查左侧的值是否大于或等于右侧的值。
    • <= 小于等于:检查左侧的值是否小于或等于右侧的值。
  4. 逻辑运算符:

    • && 逻辑与:检查两个条件是否同时为真。
    • || 逻辑或:检查两个条件是否至少有一个为真。
    • ! 逻辑非:对条件进行取反。
  5. 字符串运算符:

    • . 连接:连接两个字符串。
    • .= 连接赋值:将右侧的字符串连接到左侧的字符串上并重新赋值给左侧的字符串。
  6. 自增/自减运算符:

    • ++ 自增:将变量的值加1。
    • -- 自减:将变量的值减1。
  7. 数组运算符:

    • + 合并:将两个数组合并为一个新数组。
    • == 相等:检查两个数组是否相等。
    • === 全等:检查两个数组的键和值是否完全相同。

2.4.2 优先级

运算符的优先级决定了它们在表达式中的结合性和执行顺序。如果有多个运算符同时出现,优先级高的运算符会先于优先级低的运算符进行计算。可以使用括号 () 来改变运算符的优先级和强制先执行某些部分。

例如:先乘除,后加减。
补充:圆括号()优先级别最高。例如, 5 + 6 * 7的输出结果为47,(5 + 6) * 7的输出结果为77。

以下是运算符的优先级(从高到低):

  1. 一元运算符:
    一元运算符包括前置递增/递减运算符 ++$x--$x 和取反、正数运算符 -$x+$x。它们具有最高的优先级,会先于其他运算符进行计算。

  2. 乘性运算符:
    乘性运算符包括乘法 *、除法 / 和取模 %,以及字符串连接运算符 .。它们的优先级高于加性运算符,但低于一元运算符。乘性运算符按照从左到右的顺序进行计算。

  3. 加性运算符:
    加性运算符包括加法 + 和减法 -,以及字符串连接运算符 .。它们的优先级低于乘性运算符,但高于位移运算符。加性运算符按照从左到右的顺序进行计算。

  4. 位移运算符:
    位移运算符包括左移 << 和右移 >>。它们的优先级低于加性运算符,但高于比较运算符。

  5. 比较运算符:
    比较运算符包括小于 <、小于等于 <=、大于 >、大于等于 >=,以及等于 ==、不等于 !=、全等 ===、不全等 !==。比较运算符的优先级低于位移运算符,但高于位运算符和逻辑运算符。

  6. 位运算符:
    位运算符包括按位与 &、按位异或 ^、按位或 |。它们的优先级低于比较运算符,但高于逻辑运算符。

  7. 逻辑运算符:
    逻辑运算符包括逻辑与 &&、逻辑或 ||,以及逻辑异或 ^ 和逻辑非 !。逻辑运算符的优先级低于位运算符,但高于条件运算符。

  8. 三元条件运算符:
    三元条件运算符 expr1 ? expr2 : expr3 用于根据条件选择表达式的值。它的优先级低于逻辑运算符,但高于赋值运算符。

  9. 赋值运算符:
    赋值运算符用于给变量赋值,如 =+=-=*=/=%=.= 等。赋值运算符具有最低的优先级。


总结

PHP在当今世界仍然是一门流行和重要的服务器端脚本语言。它具有广泛的应用领域、强大的生态系统和不断发展的特点,为Web开发提供了可靠和灵活的解决方案。随着技术的进步和改进,PHP有望继续保持其在Web开发领域的重要地位。

关注,点赞,收藏,希望友友们能一键三连哦!评论会回访的。文章底部还有一个投票,大家不要错过了哦。

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

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

相关文章

Nginx:反向代理(示意图+配置)

示意图&#xff1a; 反向代理 反向代理&#xff08;Reverse Proxy&#xff09;是代理服务器的一种&#xff0c;它代表服务器接收客户端的请求&#xff0c;并将这些请求转发到适当的服务器。当请求在后端服务器完成之后&#xff0c;反向代理搜集请求的响应并将其传输给客户端。…

Tableau:商业智能(BI)工具

Tableau入门 1、Tableau概述2、Tableau Desktop2.1、初识Tableau Desktop2.2、Tableau工作区2.3、数据窗格与分析窗格2.4、功能区和标记卡2.4.1、列和行功能区2.4.2、标记卡2.4.3、筛选器功能区2.4.4、页面功能区2.4.5、附加功能区、图例、控件 3、Tableau视图4、Tableau工作簿…

LeetCode讲解篇之198. 打家劫舍

LeetCode讲解篇之198. 打家劫舍 文章目录 LeetCode讲解篇之198. 打家劫舍题目描述题解思路题解代码 题目描述 题解思路 该问题可以通过递推来完成 递推公式&#xff1a; 前n间房的最大金额 max&#xff08;前n-1间房的最大金额&#xff0c; 前n-2间房的最大金额第n-1间房的最…

Hadoop2.0探讨

文章目录 8. Hadoop 再探讨8.1 Hadoop的优化与发展8.2 HDFS 的FA和Federation(Hadoop2.0新特性)8.2.1 HDFS HA8.2.2 HDFS Federation 8.3 YARN8.3.1 MapReduce1.0的缺陷8.3.2 Yarn设计思路8.3.3 Yarn体系结构8.3.4 Yarn工作流程8.3.5 Yarn框架和MapReduce1.0框架对比分析8.3.6 …

asp.net酒店餐饮管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio

一、源码特点 asp.net酒店餐饮管理系统是一套完善的web设计管理系统&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为vs2010&#xff0c;数据库为sqlserver2008&#xff0c;使用c#语言 开发 ASP.NE 酒店餐饮管理系统 二、功能…

AMD AFMF不但能用在游戏,也适用于视频

近期AMD发布了AMD Software Adrenalin Edition预览版驱动程序&#xff0c;增加了对平滑移动帧&#xff08;AMD Fluid Motion Frames&#xff0c;AFMF&#xff09;功能的支持&#xff0c;也就是AMD的“帧生成”技术&#xff0c;与DLSS 3类似&#xff0c;作为FidelityFX Super Re…

毅速丨模具3D打印材料有哪些选择

当前1.2709和CX是市面上最常用的3D打印模具钢材料&#xff0c;模具3D打印有没有更多的材料选择呢&#xff1f; 据了解&#xff0c;上海毅速推出的几款3D打印新材料正在被越来越多的行业所采用。如毅速的EM191S高性能高抛光不锈钢粉末&#xff0c;这款材料的抗开裂和耐腐蚀性能是…

LeetCode【240】搜索二维矩阵

题目&#xff1a; 思路&#xff1a; 1、单靠对角线元素无法判定位置 2、主要逐行进行二分 代码&#xff1a; public boolean searchMatrix(int[][] matrix, int target) {int rows matrix.length;int columns matrix[0].length;// 按行进行二分for (int i 0; i < rows…

与HTTP相关的各种概念

网络世界 网络世界中最重要的一个名词就是互联网&#xff08;Internet&#xff09;,它以TCP/IP协议族为基础&#xff0c;构建成了一望无际的信息传输网络。而我们通常所说的“上网”&#xff0c;主要就是访问互联网的一个子集——万维网&#xff08;World Wide Web&#xff09…

MDK自动生成带校验带SVN版本号的升级文件

MDK自动生成带校验带SVN版本号的升级文件 获取SVN版本信息 确保SVN安装了命令行工具&#xff0c;默认安装时不会安装命令行工具 编写一个模板头文件 svn_version.temp.h, 版本号格式为 1_0_0_SVN版本号 #ifndef __SVN_VERSION_H #define __SVN_VERSION_H#define SVN_REVISIO…

网络-HTTPS

文章目录 前言一、HTTPS简介优点SSL/TSL工作流程 加密1、对称加密2、非对称加密 二、使用HTTPS1.openSSL生成私钥&#xff08;1&#xff09;node服务端&#xff08;2&#xff09;nginx配置https服务&#xff08;前端&#xff09; nginx服务 总结 前言 Http 存在不安全、无状态…

[数据结构]——单链表超详细总结

带你走进链表的世界 目录&#xff1a;一、线性表的概念二、顺序表三、链表3.1 链表的概念3.2 链表的分类3.3 无头单向非循环链表的实现3.4 带头双向循环链表的实现 四、顺序表和链表的区别和联系 目录&#xff1a; 链表是个优秀的结构&#xff0c;没有容量概念&#xff0c;可以…

基于PHP的芒果销售交易平台

有需要请加文章底部Q哦 可远程调试 基于PHP的芒果销售交易平台 一 介绍 芒果销售交易平台基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。用户可注册登录&#xff0c;购物下单&#xff0c;评论等。管理员登录后台可对芒果&#xff0c;用户&#xff0c;订…

解决win10因为WSL问题无法正常启动docker

解决win10无法成功启动dockerdesktop因为WSL问题无法启动 问题起因解决方法 问题起因 因为需要在windows复现一个CVE漏洞&#xff0c;就需要安装在WIN10上装docker&#xff0c;但是在启动的时候出现下面报错。 然后查了一下是因为WSL的版本太低了。更新以后发现打开docker仍然…

【PyTorch2 之027】在 PyTorch 中的R-CNN、Fast R-CNN和 Faster R-CNN

一、说明 亮点&#xff1a;对象检测是计算机视觉中最重要的任务之一。在这篇文章中&#xff0c;我们将概述最有影响力的对象检测算法家族之一&#xff1a;R-CNN、Fast R-CNN 和 Faster R-CNN。我们将重点介绍它们中的每一个的主要新颖性和改进。 最后&#xff0c;我们将专注于 …

【SOA-KELM分类】基于海鸥算法优化核极限学习机分类研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

【C/C++数据结构 - 2】:稳定性与优化揭秘,揭开插入排序、希尔排序和快速排序的神秘面纱!

文章目录 排序的稳定性插入排序插入排序的优化 希尔排序快速排序 排序的稳定性 稳定排序&#xff1a;排序前2个相等的数在序列中的前后位置顺序和排序后它们2个的前后位置顺序相同。&#xff08;比如&#xff1a;冒泡、插入、基数、归并&#xff09; 非稳定排序&#xff1a;排…

商品API接口优秀案例 │ 国家电网办公物资电商化采购项目API解决方案

苏宁易购集团股份有限公司&#xff08;以下简称“苏宁”&#xff09;作为中国领先的O2O智慧零售商&#xff0c;在互联网、物联网、大数据盛行的时代&#xff0c;持续推进智慧零售和线上线下融合战略&#xff0c;全品类经营&#xff0c;全渠道运营&#xff0c;开放苏宁物流云、数…

video_topic

使用qt5,ffmpeg6.0,opencv&#xff0c;os2来实现。qt并非必要&#xff0c;只是用惯了。 步骤是&#xff1a; 1.读取rtsp码流&#xff0c;转换成mat图像 2.发送ros::mat图像 项目结构如下&#xff1a; videoplayer.h #ifndef VIDEOPLAYER_H #define VIDEOPLAYER_H#include …

机器学习笔记 - 车道检测的几种深度学习方法

一、简述 人们在打造自动驾驶汽车时首先想到的就是实现车道检测。这是 Tesla 和 mobileye 所说的“强制性”任务,也是 Sebastian Thrun(自动驾驶汽车教父)在接受采访时所说的首要任务。 这个方向有很多传统的 OpenCV 算法,这些算法由不再使用的非常旧的函数组成。目前全部都…