PHP概述、环境搭建与基本语法讲解

news2024/9/20 16:29:49

目录

【学习目标、重难点知识】

什么是网站?

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

 


【学习目标、重难点知识】

  1. 环境安装
  2. 基本语法
  3. 变量
  4. 常量
  5. 输出
  6. 数据类型及比较
  7. 运算符
  8. 分支语句
  9. 循环语句
  10. 数组
  11. 函数

什么是网站?

浏览器里面输入一个网址/域名所看到页面就可以理解为是一个网址

前端: 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 是什么?

  • 我们应用的所有软件都是由计算机语言编写的。
  • 目前流行的编程语言有很多,例如:PHPJavaPythonJavaScriptC/C++Go 语言等,全世界有 **600** 多种编程语言,PHP 则是众多计算机编程语言中的一种,用于网络开发,尤其适用于 Web 开发领域,主要目标是快速编写动态网页
  • PHP 做出的动态页面与其他的编程语言相比,PHP 是将程序嵌入到 HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成 HTML 标记的其他编程语言要高许多。
  • PHP 能运行在 WindowsLinux等绝大多数操作系统环境中,常与开源免费的 Web 服务器(ApacheNginx)和数据库(MysqlRedis)配合使用,用于 Linux 平台上(简称 LAMP/LNMP),具有最高的性价比,号称“Web 架构黄金组合”,形成了现在非常流行的 Web 开发技术。
  • PHPHypertext 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 流程控制

  • 流程控制(ifswitchwhile 等),之前在 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 关键字的前面加一些修饰类的关键字,例如 abstractfinal 等。类的声明格式如下:
[ 一些修饰类的关键字 ] class 类名 {
    类中成员;
}

7.2.2. 成员属性

  • 在类中直接声明变量就称为成员属性,可以在类中声明多个变量,即对象中有多个成员属性,每个变量都存储对象不同的属性信息。
  • 示例如下:定义个人
<?php
    
 class 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. 成员方法

  • 在对象中需要声明可以操作本对象成员属性的一些方法来完成对象的一些行为。在类中直接声明的函数就称为成员方法,可以在类中声明多个函数,对象中就有多个成员方法。
  • 示例如下:
<?php

class 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 cookiecookie 的名称自动指定为相同名称的变量。
  • 例如,如果被发送的 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语法进行讲解与总结,请关注持续更新!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Postman入门指南

前言 当前最为主流的开发模式&#xff1a;前后端分离 在这种模式下&#xff0c;前端技术人员基于"接口文档"&#xff0c;开发前端程序&#xff1b;后端技术人员也基于"接口文档"&#xff0c;开发后端程序。 由于前后端分离&#xff0c;对我们后端技术人…

PHP 无参数RCE总结

在这篇文章中&#xff0c;我总结了在参与CTF比赛过程中积累的关于PHP无参数远程代码执行&#xff08;RCE&#xff09;的经验。由于一直以来时间有限&#xff0c;今天终于有机会整理这些知识点。 可能用到的函数&#xff08;PHP的内置函数&#xff09; localeconv() 函数返回一…

String 事务

目录 一、什么是事务 二、Spring事务的实现方式 1、编程式事务 2、声明式事务 三、自动操作事务的注解的三个属性 1、rollbackFor 2、isolation 3、propagation 前言&#xff1a;本文所见围绕的主题是事务&#xff0c;所以笔者先讲解什么是事务&#xff0c;先让大家了解…

Selenium + Python 自动化测试15(模块化测试)

我们的目标是&#xff1a;按照这一套资料学习下来&#xff0c;大家可以独立完成自动化测试的任务。 上一篇我们讨论了使用SMTP 对象的sendmail 发送HTML报告的方法。 本篇文章我们接着讲测试代码的一些优化&#xff0c;提高我们测试代码的易读性&#xff0c;维护方便性。大家也…

ZooKeeper 集群的详细部署

ZooKeeper 集群部署 一、ZooKeeper 简介1.1 什么是 ZooKeeper1.2 ZooKeeper 特点 二 ZooKeeper 的架构和设计4.1 ZooKeeper 数据模型4.1.1 Znode 节点特性 三、ZooKeeper 的集群安装前准备工作3.1 需要的准备工作3.2 Linux 系统 3 个节点准备3.2.1 克隆3.2.2 配置另外两台服务器…

评论系统如何不崩溃?揭开海量评论背后的技术秘密

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! 大家好,我是小米!今天我们来聊聊一个非常实际的场景:海量新闻评论的入库问题。假设你在某个新闻平台工作,某条热门新闻突然火爆,用户的评论量如潮水…

SpringBoot Web开发(请求,响应,分层解耦)

Author_T17&#x1f965; 目录 一.请求响应概述 1.Servlet 2.DispatcherServlet 3.请求响应工作概图 4.BS/CS架构 二.API测试工具 三.请求 1.简单参数 &#xff08;1&#xff09;原始方式&#xff08;不推荐&#xff09; ​编辑 &#xff08;2&#xff09;Spring Boo…

【剑指 offer】删除链表中重复的结点

目 录 描述: 在一个排序的链表中&#xff0c;存在重复的结点&#xff0c;请删除该链表中重复的结点&#xff0c;重复的结点不保留&#xff0c;返回链表头指针。 例如&#xff0c;链表 1->2->3->3->4->4->5 处理后为 1->2->5 思路&#xff1a; 通过快慢…

2024年阳光电源社招校招入职测评:前程无忧智鼎题库全解析

在职场竞争日益激烈的今天&#xff0c;企业对人才的选拔标准越来越高。阳光电源&#xff0c;作为行业的领军企业&#xff0c;采用了前程无忧智鼎题库进行社招校招入职测评&#xff0c;旨在通过科学的方法选拔出与企业文化和价值观高度契合的人才。 测评概览 测评名称&#xff1…

大模型RAG企业级项目实战:Chatdoc智能助手文档(从零开始,适合新手)

大模型RAG企业级项目实战&#xff1a;Chatdoc智能助手文档&#xff08;从零开始&#xff0c;适合新手&#xff09; 大模型RAG企业级项目实战完整链接 LLM模型缺陷&#xff1a; ​ 知识是有局限性的(缺少垂直领域/非公开知识/数据安全) ​ 知识实时性(训练周期长、成本高) …

5计算机网络全面解析

网络功能和分类 计算机网络是计算机技术与通信技术相结合的产物&#xff0c;它实现了远程通信、远程信息处理和资源共享。 计算机网络的功能&#xff1a;数据通信、资源共享、管理集中化、实现分布式处理、负载均衡。 网络性能指标&#xff1a;速率、带宽&#xff08;频带宽…

1.微服务发展阶段

单体应用阶段 简介 系统业务量很小的时候我们把所有的代码都放在一个项目中&#xff0c;然后将这个项目部署在一台服务器上&#xff0c;整个项目所有的服务都由这台服务器去提供 优点 1.展现层、控制层、持久层全都在一个应用里面&#xff0c;调用方便、快速&#xff0c;单个请…

Unity URP 曲面细分学习笔记

Unity URP 曲面细分学习笔记 1.曲面细分与镶嵌1.1 外壳着色器 Hull Shader1.2 镶嵌器阶段 Tessellator1.3 域着色器阶段 Domain Shader 2.具体实现2.1 不同的细分策略2.1.1 平面镶嵌 Flat Tessellation2.1.2 PN Tessellation&#xff08;Per-Node Tessellation&#xff09;2.1.…

NPM使用教程:从入门到精通

NPM使用教程&#xff1a;从入门到精通&#xff0c;掌握Node.js包管理神器 引言 随着Node.js的流行&#xff0c;JavaScript已经成为服务器端开发的主力军。NPM&#xff08;Node Package Manager&#xff09;作为Node.js的官方包管理工具&#xff0c;为开发者提供了一个庞大的代…

用R的界面来安装扩展包

下面内容摘录自《R 语言与数据科学的终极指南》专栏文章的部分内容&#xff0c;每篇文章都在 5000 字以上&#xff0c;质量平均分高达 94 分&#xff0c;看全文请点击下面链接&#xff1a; 2章4节&#xff1a;认识和安装R的扩展包&#xff0c;什么是模糊搜索安装&#xff0c;工…

Linux高级编程 8.12 标准IO

目录 一、标准io 二、文件 三、man手册 四、操作文件 1.fopen 2.fputc 3.fgetc 4.fgets 5.fputs 6.fread 7.fwrite 五、命令解读 1.显示目录下的文件信息命令 2.vimdiff小工具 3.stat命令 一、标准io IO&#xff1a; input output I&#xff1a; 键盘是标准输…

吃透张宇18讲+1000题,最后能考到110+吗?

张宇18讲太难了怎么办&#xff1f; 当然是换一本 不难的&#xff0c;张宇18讲的难度确实超过大多数同学能够接受的程度&#xff0c;张宇老师也说&#xff0c;默认大家基础已经很好&#xff0c;所以&#xff0c;如果你想很好的利用张宇18讲&#xff0c;必须要有一个一个很好的基…

ViT——探索自监督视觉Transformers在深度伪造检测中的应用

介绍 论文地址&#xff1a;https://arxiv.org/abs/2405.00355 在这篇评论文章中&#xff0c;我们研究了自监督、预训练Transformers与监督、预训练Transformers和传统神经网络&#xff08;ConvNets&#xff09;相比&#xff0c;在检测深度伪造方面的效果如何。 我们尤其关注…

开源的 P2P 跨平台传文件应用「GitHub 热点速览」

就在上周&#xff0c;发完那篇文章之后不久&#xff0c;我就有幸获得了 GitHub Models 服务公测的访问权限&#xff0c;所以就体验了一下 Playground 聊天功能。 起初&#xff0c;我以为这是“微软菩萨”降临&#xff0c;但玩了一圈下来&#xff0c;发现实际效果并没有那么惊艳…

❤️【接口测试面试】精选50接口测试面试题目,或许能帮到金九银十面试浪潮中的你❤️

基本理论知识 1、什么是(软件)接口测试? 接口测试&#xff1a;是测试系统组件间接口的一种测试方法 接口测试的重点&#xff1a;检查数据的交换&#xff0c;数据传递的正确性&#xff0c;以及接口间的逻辑依赖关系 接口测试的意义&#xff1a;在较早期开展&#xff0c;在软…