PHP概述、环境搭建与基本语法讲解
目录
【学习目标、重难点知识】
什么是网站?
1. PHP 介绍
1.1. PHP 概述
1.1.1. PHP 是什么?
1.1.2. PHP 都能做什么?
1.2. PHP 环境搭建
1.2.1. PhpStudy
2. PHP 基本语法
2.1. PHP 语法入门
2.1.1. 第一个 PHP 程序
2.1.2. PHP 语言标记
2.1.2.1. 标准标记 *
2.1.2.2. 短标记 *
2.1.2.3. ASP 标记(默认关闭)
2.1.2.4. Script 标记
2.1.3. PHP 注释
2.1.4. PHP 语句输出
2.2. 变量
2.2.1. 变量命名
2.2.2. 可变变量
2.2.3. 销毁/确认/检查变量
2.2.4.预定义变量(重中之重)
2.3. PHP 数据类型
2.3.1. 字符串
2.3.2. 数组
2.4. PHP 运算符/表达式
3. PHP 流程控制
4. PHP 函数应用
4.1. 函数声明
4.2. 可变函数
4.3. 匿名函数
4.4. 函数的参数
4.4.1. 参数默认值
4.5. header() 函数
5. 变量作用域
6. 函数返回值
7. PHP 面向对象
7.1. 面向过程 & 面向对象
7.2. 抽象一个类
7.2.1. 类的声明
7.2.2. 成员属性
7.2.3. 成员方法
7.3. 实例化对象
7.3.1. 实例化对象
7.3.2. 成员访问
7.3.3. 特殊的引用 this
8. 会话与权限管理
8.1. Cookie 与 Session
8.1.1. Cookie
8.2. PHP Cookie
8.2.1. setcookie()
8.2.2. $_COOKIE
【学习目标、重难点知识】
- 环境安装
- 基本语法
- 变量
- 常量
- 输出
- 数据类型及比较
- 运算符
- 分支语句
- 循环语句
- 数组
- 函数
什么是网站?
浏览器里面输入一个网址/域名所看到页面就可以理解为是一个网址
前端: html+css+js
后端:数据处理/逻辑处理
数据库:MySQL,Oracle,MSSql......
数据的产生,数据的传输,数据存储
BS架构,CS架构
BS: Brower<---->Server
- 只要有浏览器就可以访问系统
- 更新系统只需要对应服务商直接再服务器更新即可---->程序只有一套放在服务器的--->只用维护一套
- 为什么没有全部用BS架构?--->网速不够
- 如果以后网速够了---->90%都会转成BS
CS:Client<------->Server
- 必须要安装一个客户端软件
- 更新软件客户端必须要更新----->需要用户统一---->程序有两套----->同时要维护两套程序(游戏软件原神LOL...社交软件QQ微信...视频软件爱奇艺腾讯....)
- 需要提前下载很多资源
- 现在手机上的CS架构其实是伪CS架构: 套了一个壳子,里面还是网页
网页: 静态网页,动态网页
静态网页:里面的数据是写死的,不和后端进行交互
动态网页:数据是动态渲染的,数据是和后端进行交互的
动态网页必定是有后端:
后端有哪些技术呢?
PHP: LAMP(Linux+Apache+MySQL+PHP)
JAVA: Spring+SpringBoot+SpringCloud+MyBatis/Hibernate+MySQL/Oracle+Linux JSP
Python: Flask框架,Django框架
Perl:LAMP(Linux+Apache+MySQL+Perl)
C#:.NET, ASP C#+Windows+MSSQL
Node.js: 昙花一现
主流遇到的后端的语言: PHP, JAVA
PHP: 主要是网站, 开放给所有人访问的(网站首页、门户网站等等)
JAVA: 主要系统, 业务系统,数据量巨大,用户是专业的用户(各大功能业务线的网站,需要高并发)
PHP单纯从功能的角度,没有任何一点比Java差
Java的并发性能很高
Java是编译性的语言,超级浪费时间,时间成本很高
1. PHP 介绍
1.1. PHP 概述
1.1.1. PHP 是什么?
- 我们应用的所有软件都是由计算机语言编写的。
- 目前流行的编程语言有很多,例如:
PHP
、Java
、Python
、JavaScript
、C/C++
和Go
语言等,全世界有**600**
多种编程语言,PHP
则是众多计算机编程语言中的一种,用于网络开发,尤其适用于Web
开发领域,主要目标是快速编写动态网页。
- 用
PHP
做出的动态页面与其他的编程语言相比,PHP
是将程序嵌入到HTML
(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML
标记的其他编程语言要高许多。
PHP
能运行在Windows
、Linux
等绝大多数操作系统环境中,常与开源免费的Web
服务器(Apache
或Nginx
)和数据库(Mysql
及Redis
)配合使用,用于Linux
平台上(简称LAMP/LNMP
),具有最高的性价比,号称“Web
架构黄金组合”,形成了现在非常流行的Web
开发技术。
PHP
是Hypertext Preprocessor
(超文本预处理器)的缩写,是一种在服务器端运行的的开源的、可以嵌入在 HTML 页面中的脚本语言。
PHP
的默认文件扩展名是以.php
结尾的。
问:上面的 Hypertext Preprocessor
是怎么简写成 PHP
的?
PHP(Personal Home Page)
是PHP
最早的名字。
1.1.2. PHP 都能做什么?
PHP
能做很多事,但PHP
主要是在Web
开发中用于服务器端的脚本程序。
PHP
需要安装PHP
应用程序服务器去解释执行,是用来协助Web
服务器工作的编程语言,也可以说是对Web
服务器功能的扩展,并外挂在Web
服务器上一起工作。
- 用户如果通过浏览器访问
Web
服务器需要得到动态响应的结果,Web
服务器就要委托PHP
脚本编程语言来完成了。
1.2. PHP 环境搭建
1.2.1. PhpStudy
- 官网地址:小皮面板-好用、安全、稳定的Linux服务器面板!
- 简单,基本没有系统环境要求
2. PHP 基本语法
2.1. PHP 语法入门
2.1.1. 第一个 PHP 程序
- 新建一个
txt
文档,在里面写入如下代码:
<?php phpinfo(); ?>
- 将上述代码保存,文件名改为
test.php
(注意开启文件扩展名)。
- 启动
PhpStudy
,在浏览器中输入http://127.0.0.1/test.php
访问结果如下:
2.1.2. PHP 语言标记
- 通常情况
PHP
脚本以<?php 开头,以 ?> 结尾
,这是我们最常见的写法,其实标识脚本为PHP
的方法有四种。
2.1.2.1. 标准标记 *
- 写法:
<?php Code ?>
<?php echo "Hello World"; ?>
- 标准标记是
PHP
最常用的标记类型,具有更好的兼容性、可移植性、可复用性。
- 提问:
;
能不能不写
-
- 可以,
?>
起到结束的作用。
- 可以,
- 如果整个页面都是
PHP
代码,PHP
结束符时可以省略的(推荐)
2.1.2.2. 短标记 *
- 写法:
<? Code ?>
<? echo "Hello World" ?>
- 短标记非常简单,但是使用短标记需要在配置文件
php.ini
中启用short_open_tag
选项。
- 短标记在许多环境的默认设置中是不支持的,因此
PHP
不推荐使用这种标记。
2.1.2.3. ASP 标记(默认关闭)
- 写法:
<% Code %>
<% echo "Hello World" %>
ASP
标记与短标记类似,必须在配置文件php.ini
中启用asp_tags
选项。
ASP
标记在许多环境的默认设置中是不支持的,因此PHP
不推荐使用这种标记,且在PHP7
以上该写法已废弃。
2.1.2.4. Script 标记
- 写法:
<script language="php"> Code </script>
Script
标记类似于javascript
语言标记,由于PHP
一般不推荐使用该标记,了解即可。
2.1.3. PHP 注释
PHP
注释分为:
-
- 单行注释
-
- 多行注释
<?php
// 单行注释
# 单行注释
/*
多行注释
*/
2.1.4. PHP 语句输出
echo
:输出,无返回值 *
<?php
echo "Hello World";
print
:输出,输出成功返回 1
<?php
print "Hello World";
echo print "Hello World";
print_r()
:输出数组 *
<?php
$arr = array('A'=>'a',123);
print_r($arr);
print_r($arr['A']);
var_dump()
:输出数据的详细信息,带有数据类型和数据长度 *
<?php
$arr = array('A'=>'a',123);
var_dump($arr);
2.2. 变量
- 变量是指在程序的运行过程中随时可以发生变化的量,是程序中数据的临时存放场所。
- 变量的本质就是内存中的一段空间。
2.2.1. 变量命名
- 变量必须以
$
开头,$
不是变量的一部分,仅表示后面的标识符是变量名。
- 除了
$
以外,以字母、下划线开头,后面跟着数字、字母、下划线。
- 变量名区分大小写,
$a
和$A
是两个变量。
2.2.2. 可变变量
- 变量名可以变,将变量名存储在另一个变量中:
<?php
$a = 10;
$b = 'a';
echo $$b;
2.2.3. 销毁/确认/检查变量
- 用
unset()
来销毁变量,销毁的是变量名,变量值由PHP
垃圾回收机制销毁:
<?php
$name1 = 'yz';
$name2 = 'gok';
unset($name1);
echo $name1;
- 用
isset()
检测变量是否设置:
<?php
$name1 = 'yz';
$name2 = 'gok';
isset($name1);
echo $name1;
- 用
empty()
函数检查一个变量是否为空:
<?php
$name1 = '';
$name2 = 'gok';
echo empty($name1);
2.2.4.预定义变量(重中之重)
预定义变量又叫超全局变量,它们不需要提前声明就可以在所有的作用域中使用。通过这些预定义变量可以获取用户会话、用户操作系统的环境和本地操作系统的环境等信息。
常用的预定义变量如下所示:
- $GLOBALS:全局作用域中的全部可用变量;
- $_SERVER:服务器和执行环境的信息;
- *GET, *COOKIE 的所有信息;
- a=$_POST['name']
- $_GET:通过 GET 方法提交的数据;
- $_FILES:通过 POST 方式上传到服务器的文件数据;
- $_ENV:通过环境方式传递给当前脚本的变量组成的数组;
- $_COOKIE:通过 HTTP Cookies 方式传递给当前脚本的变量所组成的数组;
- $_SESSION:当前脚本可用 SESSION 变量组成的数组。
<form method="get" action="./get.php"><input name="a" value="请输入" type="text"><button type="submit">提交</button></form><?php
$a = $_GET['a'];
echo $a
?>
2.3. PHP 数据类型
2.3.1. 字符串
- 在
PHP
中单引号字符串和双引号字符串是由区别的。
-
- 单引号字符串是真正的字符串。
-
- 双引号字符串要解析字符串中的变量。
- 示例:
<?php
$a = 'hello';echo '$a';
echo "$a";
- 两种方式进行变量拼接:
<?php
$a = 'hello';echo "$a".'world';
echo "{$a}world";
2.3.2. 数组
- 在
PHP
中数组有两种形式:
-
- 索引数组:用整数做下标,默认从 0 开始,后面一次加一。
-
- 关联数组:用字符串做下标,通过
=>
符号将下标和值关联起来。
- 关联数组:用字符串做下标,通过
- 示例如下:
<?php
//1. 索引数组的声明
$arr1 = array('tom', 'perry', 'ketty'); //索引数组
print_r($arr1); // 输出数组 Array ( [0] => tom [1] => berry [2] => ketty )//2、关联数组
$arr2 = array('name' => '李白', 'sex' => '男', 'age' => 22);
print_r($arr2); //Array ( [name] => 李白 [sex] => 男 [age] => 22 )
- 数组的声明
直接赋值的方式声明数组
$数组变量名[下标] = 值
$array[0] = 'GOK';
$array[1] = 'PHP 学习';
$array[2] = 'PHP 数组'使用 array() 函数声明数组
$数组变量名 = array(key1 => value1, key2 => value2, ..., keyN => valueN);
$array = array(0 => 'GOK', 1 => 'PHP 学习', 2 => 'PHP 数组');
- 可以使用
foreach
遍历数组:
<?php
$arr = array('tom', 'berry', 'ketty');
foreach ($arr as $key => $value) {echo $key . '=>' . $value;
}
2.4. PHP 运算符/表达式
- 之前在
JavaScript
那都有讲过了,触类旁通这里不过多赘述。
3. PHP 流程控制
- 流程控制(
if
、switch
、while
等),之前在JavaScript
那都有讲过了,触类旁通这里不过多赘述。
if (判断条件) {
语句块 1;
} else {
语句块 2;
}
4. PHP 函数应用
- 函数就是一段代码块
- 函数可以实现模块化编程
4.1. 函数声明
- 在
PHP
中声明一个自定义的函数可以使用下面的语法格式:
<?php
function 函数名 (参数 1,参数 2,…,参数 n) { 函数体; return 返回值;
}
- 通过
函数名()
调用函数:
<?php
function show(a,b)
{echo '锄禾日当午<br>';
}
show();
4.2. 可变函数
- 将函数名存储到变量中:
<?php
function show($args)
{echo $args, '<br>';
}
$str = 'show';
$str('锄禾日当午');
4.3. 匿名函数
- 匿名函数就是没有名字的函数:
<?php
$fun = function () {echo '锄禾日当午<br>';
};
$fun();
4.4. 函数的参数
- 函数的参数有
-
- 形参:定义函数时候的参数,只起形式作用,没有具体的值
-
- 实参:调用函数时候的参数,有具体的值
<?php//这里的$num1, $num2为形式参数
function fun($num1, $num2)
{echo $num1 + $num2;
}
fun(10, 20);
4.4.1. 参数默认值
- 在定义函数的时候给形参赋值就是参数的默认值:
<?php
function fun($name, $add = '地址不详')
{echo '姓名:' . $name, '<br>';echo '地址:' . $add, '<hr>';
}
fun('tom', '北京');
fun('berry');
- 默认值必须是值,不能用变量代替。
4.5. header() 函数
header()
函数向客户端发送原始的HTTP
报头。
注:最好在任何实际的输出被发送之前调用 header() 函数。
- 掌握以下两种:
-
- 页面跳转
<?php
header("location:https://www.baidu.com");
-
- 页面编码
<?php
header("Content-Type:text/html;charset=utf8");
echo "国科";
5. 变量作用域
- 局部变量:在函数里面,默认情况下函数内部是不会去访问函数外部的变量。函数外面也无法调用里面的变量。
- 全局变量:在函数外面。
<?php
$num1 = 10;
function fun()
{$num2 = 20;echo $num1;echo $num2;
}
fun();
echo $num2;
- 超全局变量:可以在函数内部和函数外部访问
<?php
$_GET['num1'] = 10;
function fun()
{$_GET['num2'] = 20;echo $_GET['num1'];
}
fun();
echo $_GET['num2'];
- 还有一种方式可以使函数内部访问外部:全局变量 -
$GLOBALS
<?php
$num1 = 10;
function fun()
{echo $GLOBALS[num1];
}
fun();
6. 函数返回值
PHP
函数中return
作用如下:
-
- 终止脚本执行:中断
return
之后的代码执行。
- 终止脚本执行:中断
<?php
echo '锄禾日当午<br>';
return;
echo '汗滴禾下土<br>';
-
- 返回结果,需要赋予一个返回值。
<?php
function add($num)
{return $num * 2;
}
echo add(100);
7. PHP 面向对象
PHP5
以上版本的最大特点是引入了面向对象的全部机制,保留了向下兼容性。
7.1. 面向过程 & 面向对象
- 面向过程和面向对象都是对软件分析、设计和开发的一种思想,它指导着人们以不同的方式去分析、设计和开发软件。
- 早期先有面向过程思想,随着软件规模不断的扩大,问题的复杂性的提高,面向过程的弊端越来越明显,随即出现了面向对象的思想并成为目前主流的模式。
- 面向过程思想思考问题时,我们首先思考怎么按步骤实现?,并将步骤对应成方法,一步一步最终完成。
- 这个适合简单任务,不需要过多协作的情况下。
-
- 比如:如何开车?
-
-
- 插钥匙
-
-
-
- 发动
-
-
-
- 挂挡
-
-
-
- 油门
-
-
-
- 走你
-
- 面对过程适合简单,不需要协作的事务。但是当我们思考比较复杂的问题,比如:如何造车?就会发现列出步骤是不太现实的。正是应为这样,造车太复杂,需要很多协作才能完成,此时面向对象思想就营运而生了。
- 面向对象思想思考造车,发现车由如下对象组成:
-
- 轮胎
-
- 发动机
-
- 车架
-
- 玻璃
-
- ......
- 为了便于协作,我们从各大零件工厂进行材料采购,各大工厂同时进行车的制造,最终进行组装,大大提高了效率。但是,具体到工厂的零件生产时,仍是有步骤的,最终离不开面向过程思想。
- 千万不要把面向过程和面向对象两者进行对立,他们是相辅相成的,面向对象离不开面向过程!
- 总结:
-
- 两者都是解决问题的思维方式,都是代码组织的方式。
-
- 解决简单问题可以使用面向过程。
-
- 解决复杂问题:宏观上使用面向对象把控,微观上使用面向过程
7.2. 抽象一个类
- 面向对象程序的单位就是对象,但对象又通过类的实例化出来,所以我们首先要做的就是如何来声明类。
7.2.1. 类的声明
- 类的声明非常简单,和函数的声明比较类似。只需要使用一个关键字
class
,后面加上一个自定义的类别名称,并加上一对花括号就可以了。有时也需要在class
关键字的前面加一些修饰类的关键字,例如abstract
或final
等。类的声明格式如下:
[ 一些修饰类的关键字 ] class 类名 {类中成员;
}
7.2.2. 成员属性
- 在类中直接声明变量就称为成员属性,可以在类中声明多个变量,即对象中有多个成员属性,每个变量都存储对象不同的属性信息。
- 示例如下:定义个人
<?phpclass Person{var $name;var $age;var $sex;function(){id}b
}class qwe
- 关键字修饰符:
修饰符 | 说明 |
public | 用于修饰成员变量或方法,表示它们可以在任何地方被访问 |
private | 用于修饰成员变量或方法,表示它们只能在所属类的内部访问,无法在类的外部或子类中直接访问 |
protected | 用于修饰成员变量或方法,表示它们只能在所属类的内部以及其子类中访问,无法在类的外部直接访问 |
static | 用于修饰成员变量或方法,表示它们属于类本身而不是实例化对象,可以直接通过类名访问,而无需创建对象 |
var | 在 PHP 5 中已经被废弃,并且在 PHP 7 中已经移除 |
- 示例如下:
<?php
class Person{public $name;private $age;protected $sex;}
7.2.3. 成员方法
- 在对象中需要声明可以操作本对象成员属性的一些方法来完成对象的一些行为。在类中直接声明的函数就称为成员方法,可以在类中声明多个函数,对象中就有多个成员方法。
- 示例如下:
<?phpclass zhuc{var $name;var $age;var $sex;function say(){echo "你真是个帅比";}
}
7.3. 实例化对象
- 面向对象程序的单位就是对象,但对象又是通过类的实例化产生出来的。
7.3.1. 实例化对象
- 将类实例化成对象非常容易,只需要使用
new
关键字并在后面加上一个和类名同名的方法即可。
<?php
class Person
{var $name;var $age;var $sex;function say(){echo "你真是个帅比";}
}$xiaoming = new Person();
7.3.2. 成员访问
- 对象中包含成员属性和成员方法,访问对象中的成员则包括成员属性的访问和成员方法的访问。而对成员属性的访问又包括赋值操作和获取成员属性值的操作。
- 访问对象中的成员和访问数组中的元素类似,只能通过对象的引用来访问对象中的每个成员。但还要使用一个特殊的运算符号
->
来完成对象成员的访问。
<?php
class Person
{var $name;var $age;var $sex;function say(){echo "你真是个帅比";}
}
$xiaoming = new Person();
$xiaoming->say();
echo $xiaoming->name;
$xiaoming->name = '葫芦娃';
echo $xiaoming->name;
7.3.3. 特殊的引用 this
- 对象一旦被创建,在对象中的每个成员方法里都会存在一个特殊的对象引用
$this
。
- 成员方法属于哪个对象,
$this
引用就代表哪个对象,专门用来完成对象内部成员之间的访问。
- 示例:没有
this
的情况
<?php
class Person
{var $name;var $age;var $sex;function say($name){echo $name . "你真是个帅比";}
}
$xiaoming = new Person();
$xiaoming->say('葫芦娃');
echo $xiaoming->name;
- 示例:使用
this
赋值
<?php
class Person
{var $name;var $age;var $sex;function say($name){$this->name = $name;echo $this->name . "你真是个帅比";}
}$xiaoming = new Person();
$xiaoming->say('葫芦娃');
echo $xiaoming->name;
8. 会话与权限管理
8.1. Cookie 与 Session
8.1.1. Cookie
Cookie
的工作机制是用户识别及状态管理, 用来管理服务器和客户之间的状态,由服务器生成保存在客户端的数据载体,用于会话跟踪。
Web
网站为了管理用户的状态会通过Web
浏览器,把一些数据临时写入用户的计算机内。
- 接着当用户访问该
Web
网站时,可通过通信方式取回之前发放的Cookie
。
Cookie
比喻成身份信息,国家没有保留你的身份信息,你的身份信息你自己带着,Cookie
就相当于你的身份证,去哪都要出示身份证,证明你是你。
8.2. PHP Cookie
8.2.1. setcookie()
setcookie()
函数向客户端发送一个HTTP cookie
,cookie
的名称自动指定为相同名称的变量。
- 例如,如果被发送的
cookie
名为user
,则会自动创建一个名为$user
的变量,包含cookie
的值。,必须在任何其他输出发送到客户端前对cookie
进行赋值。
- 语法:
setcookie(name,value,expire,path,domain,secure)
参数 | 描述 |
name | 必需。规定 cookie 的名称。 |
value | 必需。规定 cookie 的值。 |
expire | 可选。规定 cookie 的过期时间。time()+3600 24 30 将设置 cookie 的过期时间为 30 天。如果这个参数没有设置,那么 cookie 将在 session 结束后(即浏览器关闭时)自动失效。 |
..... | ....... |
- 示例:
<?php
$value = "my cookie value";
setcookie("NAME", 'TOM');
<?php
$value = "mycookie";
setcookie("TestCookie", $value, time() + 3600);
8.2.2. $_COOKIE
PHP
的$_COOKIE
变量用于取回cookie
的值。
- 示例:
<?php
$value = "my cookie value";
setcookie("TestCookie", $value, time() + 3600);
echo $_COOKIE['TestCookie'];
- 可以使用
isset()
函数确认Cookie
是否存在:
<?php
$value = $_POST['name'];
setcookie("TestCookie1", $value, time() + 3600);
if (isset($_COOKIE['TestCookie'])) {echo $_COOKIE['TestCookie'];
} else {echo "Cookie not exist!";
}
本文部分内容来自课件,如有版权问题请与我联系
之后我会继续就php语法进行讲解与总结,请关注持续更新!
相关文章:
PHP概述、环境搭建与基本语法讲解
目录 【学习目标、重难点知识】 什么是网站? 1. PHP 介绍 1.1. PHP 概述 1.1.1. PHP 是什么? 1.1.2. PHP 都能做什么? 1.2. PHP 环境搭建 1.2.1. PhpStudy 2. PHP 基本语法 2.1. PHP 语法入门 2.1.1. 第一个 PHP 程序 2.1.2. PHP …...
实现信创Linux麦克风摄像头录制(源码,银河麒麟、统信UOS)
随着信创国产化浪潮的来临,在国产操作系统上的应用开发的需求越来越多,其中一个就是需要在银河麒麟或统信UOS上实现录制摄像头视频和麦克风声音,将它们录制成一个mp4文件。那么这个要如何实现了? 一. 技术方案 要完成这些功能&a…...
深度学习9--目标检测
1.概念介绍 目标检测不仅可以检测数字,而且可以检测动物的种类、汽车的种类等。例如,自动驾驶车辆需要自动识别前方物体是车辆还是行人,需要自动识别道路两 旁的指示牌和前方的红绿灯颜色。对于自动检测的算法,有两个要求…...
第131天:内网安全-横向移动Kerberos 攻击SPN扫描WinRMWinRSRDP
案例一:域横向移动-RDP-明文&NTLM RDP利用的三种方式 1.直接在当前被控主机上进行远程连接 2.建立节点进行连接 3.端口转发,(访问当前主机的2222端口等于访问目标的3389) 第一种方式(动静太大) 直接利用被控主机进行远程连接…...
微信小程序的四种弹窗使用
在做小程序的过程中,弹窗也算是非常实用的功能了,这几天写的几个功能就用到了弹窗,也可能是初学者的问题,比较菜,想找一个可以带图片的自定义的弹窗,,这里简单介绍一下官方封装好的四个弹窗…...
我的第一个CUDA程序
MatAdd算法 实现两个矩阵对应元素相加 #include <stdio.h> #include <stdlib.h>// 矩阵加法函数 void MatAdd(int height, int width) {// 在主机内存中为 A、B 和 C 分配内存float* A (float*)malloc(height * width * sizeof(float));float* B (float*)malloc…...
workerman下的webman路由浏览器跨域的一种问题
软件版本 "php": ">7.2", "workerman/webman-framework": "^1.5.0",问题情景 使用“分组路由”做API接口前后端分离跨域,在接口测试工具调试是能正常获取数据的;但在网页浏览器上调试就遇到了CORS、404的错…...
Windows11 -MASKRCNN-部署测试
文章目录 Detectron2环境配置搭建python 环境安装Cuda \CUDNN 、PyTorch、 torchvision、cudatoolkit1、Cuda \CUDNN2、 PyTorch、 torchvision、cudatoolkit进入python测试:错误信息 3、detectron2环境在安装detecteron中,遇到报错:编译的时…...
函数(子程序)的常见、易混淆概念详解【对初学者有帮助】
C语⾔中的函数也被称做子程序,意思就是⼀个完成某项特定的任务的⼀小段代码。 C语⾔标准中提供了许多库函数,点击下面的链接可以查看c语言的库函数和头文件。 C/C官⽅的链接:https://zh.cppreference.com/w/c/header 目录 一、函数头与函…...
TiDB-从0到1-DM工具
TiDB从0到1系列 TiDB-从0到1-体系结构TiDB-从0到1-分布式存储TiDB-从0到1-分布式事务TiDB-从0到1-MVCCTiDB-从0到1-部署篇TiDB-从0到1-配置篇TiDB-从0到1-集群扩缩容TiDB-从0到1-数据导出导入TiDB-从0到1-BR工具 一、DM原理 支持全量抽取数据\检测新的数据变化同步到下游实例…...
AppScan——Web 应用安全扫描的得力工具
一、引言 在当今数字化时代,Web 应用成为企业业务的重要支撑,但同时也面临着各种安全威胁。AppScan 作为一款专业的 Web 应用安全扫描工具,为保障 Web 应用的安全性提供了有力的支持。本文将对 AppScan 进行详细介绍,包括其功能、…...
虚幻5|AI行为树,进阶篇
一,打开敌人的角色蓝图,编写以下蓝图,该蓝图只是创建一个敌人并非ai行为树 1.编写蓝图 2.打开主界面,创建一个导航网格体积,上一章都有讲,在添加体积这里面,找到导航网格体积,点击创…...
在 Spring Boot 中配置 Tomcat 监听多个端口
在现代微服务架构中,应用程序可能需要监听多个端口,以支持不同的服务或协议。Spring Boot 提供了灵活的配置选项,使得这一需求变得简单而高效。本文将介绍如何在 Spring Boot 中配置 Tomcat 以监听多个端口,并简要说明其中一些关键…...
stm32f407新建项目工程及烧录
1、新建一个文件夹,打开keil5将项目工程放入文件夹中 2、弹出选择对应型号设备 3、弹出选择对应库 可以看见出现下图:感叹号表示有错 最后如图所示:点击ok就行了 4、创建对应的文件夹存放文件 4、建立main.c 5、添加对应的设置 最后写一个空白…...
c++中加不加const的值传递和引用传递的区别
文章目录 可以修改参数值的比较值传递(int x)和引用传递(int &x)使用const不修改参数值的比较值传递(const int x)和引用传递(const int &x)1. const int x 示例2. const int &x 示例 可以修改参数值的比较值传递(int x)和引用传递(int &x) #include <iost…...
Qt的窗口设置
本文介绍Qt的窗口设置。 采用Qt开发界面程序,会涉及到窗口的设置,如窗口标题栏是否显示,是否有最小,最大化按钮等,窗口当前显示最小化,最大化等。本文简要介绍常用的窗口设置方法。 1.窗口属性 窗口属性…...
51单片机-LCD1602显示屏
简介 是一个液晶显示屏,通过电压对显示区域进行控制,有电就显示。 能够同时显示32个字符,分为两行,一行显示16个字符。可以显示的内容只能是字母、数字或者一些特殊符号。 使用ASCII码来让LCD1602来显示对应的字符。 电路图 …...
多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题
多模态分析代理 MAIA:多智能体解决 视觉模型 黑盒问题 论文:https://arxiv.org/pdf/2404.14394 代码:https://github.com/multimodal-interpretability/maia 提出背景 神经网络方法提取的特征,没有可解释性。 数据在通过多个层…...
AT360-6T杭州中科微单频高精度授时模块场景应用
AT360-6T是一款高性能多系统卫星定位授时模块,基于自主研发的北斗多系统SOC芯片,可以同时接收中国的BDS(北斗二号和北斗三号)、美国的GPS、俄罗斯的GLONASS、欧盟的 GALILEO 和日本的QZSS等多个卫星导航系统的GNSS信号来实现多系统联合定位授时ÿ…...
Python酷库之旅-第三方库Pandas(081)
目录 一、用法精讲 336、pandas.Series.str.rpartition方法 336-1、语法 336-2、参数 336-3、功能 336-4、返回值 336-5、说明 336-6、用法 336-6-1、数据准备 336-6-2、代码示例 336-6-3、结果输出 337、pandas.Series.str.slice方法 337-1、语法 337-2、参数 …...
C语言基础⑩——构造类型(结构体)
一、数据类型分类 1、基本类型 整数型 短整型:short(2个字节);整型(默认):int(4个字节);长整型:long(8个字节)…...
宝兰德荣获openEuler项目群青铜捐赠人称号,共筑开源生态繁荣新篇章
近日,开放原子开源基金会正式公布了新增捐赠人名单,宝兰德凭借在开源领域的卓越贡献与深厚实力,被授予openEuler项目群青铜捐赠人称号。 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构,于2020年6月在北京成立。开放…...
【Python单元测试】学习笔记3
文章目录 08.PyTest框架什么是PyTestPyTest的优点PyTest的测试环境PyTest常用参数跳过测试 09.PyTest fixture基础PyTest fixture定义和使用引用多个Fixture 10. conftest.pyconftest.py的用途 11. 参数化测试用例为什么需要参数化测试用例使用parameterizer插件实现使用pytest…...
OpenSSL源码编译及Debug
** 1. 环境 Linux 5.19.0-14-generic 22.04.1-Ubuntu 2. 所需工具 gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04) cmake version 3.22.1 3. 步骤 3.1 获取openssl源码 方法可以git clone获得源码,或者直接去GitHub上下载压缩包,GitHub网址…...
go之goburrow/modbus 学习
goburrow/modbus 是一个用Go语言实现的Modbus协议库,提供了Modbus主机(Master)和从机(Slave)的实现,支持两种主要的Modbus传输模式:Modbus TCP和Modbus RTU。 功能介绍 1. 支持的传输模式 Mod…...
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么?
开放词汇目标检测(Open-Vocabulary Object Detection, OVOD)算法是什么? 随着计算机视觉技术的快速发展,目标检测(Object Detection)已经在各种应用场景中得到了广泛的应用。然而,传统的目标检…...
【教程】Ubuntu给pycharm添加侧边栏快捷方式
转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 以下教程不仅限于pycharm,其他软件也是一样操作 1、进入到pycharm的目录,先通过命令行打开pycharm: ./bin/pycharm…...
三个月外贸小白好迷茫,该何去何从?
最近看到一个共性的问题,也许对于大多数外贸新人来说,都有过这样的困扰和无力感,也许对于每一个没有强大背景的外贸小伙伴来说,可能都是这样一路成长起来的。 大家好,我是一名普通二本英专生,八月中旬入职…...
MySQL数据库——基本查询(Create)
CRUD:Create(创建)Retrieve(读取)Update(更新)Delete(删除) 1.Create ①单行数据全列插入 insert [into] table_name [(colume[,colume]……)] values (value_list) […...
spring-security-1-快速入门
1 功能 身份认证(authentication)授权(authorization)防御常见攻击 身份认证:常见账号密码登录,短信登录 授权:什么样的角色,能看见什么菜单,能访问哪些接口。 2 pom <dependency><groupId>org.springf…...
哈尔滨网站基础优化/百度运营优化师
for循环的作用:注意:要主要满足条件一和二后是先执行语句,后再执行条件三。简单重复的输出for(int i0;i<10;i){printf("对一句话简单重复输出输出10");printf("\n");}其基本结构:(如…...
广州公司网站制作公司/淘宝大数据查询平台
笔者浏览电商平台的时候发现向来以低配高价著称的vivo居然有一款手机售价低至799元,这应该是它有史以来最低价的手机,去年四季度它在国内前五名当中下跌幅度最大、下跌幅度创下了去年四个季度的新高,似乎显示出它面临着出货量的巨大压力下被迫…...
莱州网站建设公司/电商网站对比
问题提出:M(如10亿)个int整数,只有其中N个数重复出现过,读取到内存中并将重复的整数删除。 问题分析:我们肯定会先想到在计算机内存中开辟M个int整型数据数组,来one bye one读取M个int类型数组&…...
域名备案要先做网站的吗/合肥做网站推广
笔者原以为是个挺容易个事儿, 毕竟是微软自家的产品安装在自家的操作系统上, 没想到还是让我费了半天劲. 写在这里吧, 方便其他的朋友. 具体步骤 1. 准备好Windows Server 2012 R2 RTM的一台虚拟机, 准备SharePoint 2013 RTM的安装包, 和SP1的安装包. 2. 制作slipstream安装文…...
做soho建立网站/seo课程培训机构
在Vs2005中新建一个Web项目,添加两个Web窗体(Default、Default2),在Default窗体上添加两个标准控件,一个TextBox(TextBox1)、一个Button(Button1),设置Button…...
岳阳做网站/全球外贸采购网
软件无线电SDR应用(1)MATLAB信号产生MATLAB简介常用信号产生函数常用信号处理和滤波函数滤波函数filter单位抽样响应函数impz单位滤波函数freqzMATLAB简介 本系列利用MATLAB和Verilog语言进行软件无线电开发。MATLAB的主要优势体现在以下方面࿱…...