PHP学习:PHP基础

以.php作为后缀结尾的文件,由服务器解析和运行的语言。

一、语法

PHP 脚本可以放在文档中的任何位置。

PHP 脚本以 <?php 开始,以 ?> 结束。

<!DOCTYPE html>
<html>
<body><h1>My first PHP page</h1><?php
echo "Hello World!";
?></body>
</html>

二、变量

PHP中无声明变量,$+变量名即为PHP的变量,在赋值的时候,自动创建变量。

<?php
$txt="Hello world!";
$x=5;
$y=10.5;
?>

PHP 变量规则:

  • 变量以 $ 符号开始,后面跟着变量的名称
  • 变量名必须以字母或者下划线字符开始
  • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
  • 变量名不能包含空格
  • 变量名是区分大小写的($y 和 $Y 是两个不同的变量)

三、数据类型

1.String字符串

单行字符串

        由双引号包裹的字符组成的序列。

<?php 
$x = "Hello world!";
echo $x;
echo "<br>"; 
$x = 'Hello world!';
echo $x;
?>
字符串连接(并置运算符)

字符串的连接用并置运算符的' . '连接。

<?php
$txt1="Hello world!";
$txt2="What a nice day!";
echo $txt1 . " " . $txt2;
?>
字符串查找(strpos()函数)

        用来在目标字符串里查找子串,第一个参数是目标字符串,第二个参数是要查找的子串,返回子串第一次出现的位置。

<?php
echo strpos("Hello world!","world");
?>
//返回6
字符串长度(strlen()函数)

返回字符串的长度。

<?php
echo strlen("Hello world!");
?>
多行字符串EOF

         定义多行字符串的方法,可以用来输出html代码块。

<?php
$x= <<<EOF<h1>我的第一个标题</h1><p>我的第一个段落。</p>
EOF;
// 结束需要独立一行且前后不能空格
echo $x
?>

 注意事项:

  •  EOF可以用任意大写字符代替,但要保证开始字符和结束字符相同。
  • 结束字符需要独立一行且前后不能空格
  • 位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。在EOF中,变量不需要用连接符 . 或 , 来拼接。

2.Integer整型

        整型可以用三种格式来指定:十进制 十六进制( 以 0x 为前缀)八进制(前缀为 0)

<?php 
$x = 5985;
var_dump($x);
echo "<br>"; 
$x = -345; // 负数 
var_dump($x);
echo "<br>"; 
$x = 0x8C; // 十六进制数
var_dump($x);
echo "<br>";
$x = 047; // 八进制数
var_dump($x);
?>

        var_dump(变量名):可以输出变量的数据类型和值,还可以显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

<?php
$a = array(1, 2, array("a", "b", "c"));
var_dump($a);
?>

3.Float浮点型

浮点数是带小数部分的数字,或是指数形式。

<?php 
$x = 10.365;
var_dump($x);
echo "<br>"; 
$x = 2.4e3;
var_dump($x);
echo "<br>"; 
$x = 8E-5;
var_dump($x);
?>

4.Boolean布尔型

布尔型可以是 TRUE 或 FALSE,布尔型通常用于条件判断。

$x=true;
$y=false;

5.Array数组

创建数组

使用函数  array()创建数组。

<?php 
$cars=array("Volvo","BMW","Toyota");
var_dump($cars);
?>
数值数组

数值数组就是普通的一维数组

<?php
$cars=array("Volvo","BMW","Toyota");
echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
?>
关联数组

关联数组更像映射map数组,需要指定键值和键名,键名要用符号 " => " 与键值连接。

<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
多维数组

语法

array (array (elements...),array (elements...),...
)

多维数组就是一维数组里的元素还是一维数组。

<?php
// 二维数组:
$cars = array
(array("Volvo",100,96),array("BMW",60,59),array("Toyota",110,100)
);
?>
<?php
$sites = array
("runoob"=>array("菜鸟教程","http://www.runoob.com"),"google"=>array("Google 搜索","http://www.google.com"),"taobao"=>array("淘宝","http://www.taobao.com")
);
print("<pre>"); // 格式化输出数组
print_r($sites);
print("</pre>");
?>

 遍历数组

count()函数:返回数组的长度

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);for($x=0;$x<$arrlength;$x++)
{echo $cars[$x];echo "<br>";
}
?>
数组排序
  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列
<?php$cars=array("Volvo","BMW","Toyota");sort($cars);
?>

6.Object对象

使用class声明对象,内部要定义一个构造函数,在新建对象时候自动调用。

<?php
class Car
{var $color;function __construct($color="green") {//构造函数$this->color = $color;}function what_color() {return $this->color;}
}
?>

7.Resource资源类型

        resource 是一种特殊变量,保存了到外部资源的一个引用。常见资源数据类型有打开文件、数据库连接、图形画布区域等。

        由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此将其它类型的值转换为资源没有意义。

        使用 get_resource_type() 函数可以返回资源(resource)类型。

<?php
$c = mysql_connect();
echo get_resource_type($c)."\n";
// 打印:mysql link$fp = fopen("foo","w");
echo get_resource_type($fp)."\n";
// 打印:file$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."\n";
// 打印:domxml document
?>

七、条件判断语句

if.......else条件语句

<?php
$t=date("H");
if ($t<"10")
{echo "Have a good morning!";
}
elseif ($t<"20")
{echo "Have a good day!";
}
else
{echo "Have a good night!";
}
?>

switch条件语句

<?php
$favcolor="red";
switch ($favcolor)
{
case "red":echo "你喜欢的颜色是红色!";break;
case "blue":echo "你喜欢的颜色是蓝色!";break;
case "green":echo "你喜欢的颜色是绿色!";break;
default:echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}
?>

八、循环

1.while循环

<html>
<body><?php
$i=1;
while($i<=5)
{echo "The number is " . $i . "<br>";$i++;
}
?></body>
</html>

 2.do....while循环

<html>
<body><?php
$i=1;
do
{$i++;echo "The number is " . $i . "<br>";
}
while ($i<=5);
?></body>
</html>

3.for循环 

<?php
for ($i=1; $i<=5; $i++)
{echo "数字为 " . $i . PHP_EOL;
}
?>

4.foreach循环

语法:数值数组

        每进行一次循环,当前数组元素的值就会被赋值给 $value 变量(数组指针会逐一地移动),在进行下一次循环时,您将看到数组中的下一个值。

foreach ($array as $value)
{要执行代码;
}

 案例:

<?php
$x=array("Google","Runoob","Taobao");
foreach ($x as $value)
{echo $value . PHP_EOL;//PHP_EOL: 这是一个 PHP 内置的常量,表示特定操作系统下的换行符。
}
?>

语法:关联数组

        每一次循环,当前数组元素的键与值就都会被赋值给 $key 和 $value 变量(数字指针会逐一地移动),在进行下一次循环时,你将看到数组中的下一个键与值

foreach ($array as $key => $value)
{要执行代码;
}

案例:

<?php
$x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao");
foreach ($x as $key => $value)
{echo "key  为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;
}
?>

九、函数

1.自定义函数

语法:

<?php
function functionName()
{// 要执行的代码return 返回值
}
?>

案例:

<?php
function add($x,$y)
{$total=$x+$y;return $total;
}echo "1 + 16 = " . add(1,16);
?>

2.isset函数

语法:

bool isset( $var )

返回值:

isset() 返回一个布尔类型的值。

  • true :变量「已定义」
  • false:变量「未定义」或变量为 NULL 或 变量被 unset()

3.include函数和require函数

   二者的作用都是在一个php文件插入另一个文件并执行,但二者有区别。

  • require 一般放在 PHP 文件的最前面,程序在执行前就会先导入要引用的文件;
  • include 一般放在程序的流程控制中,当程序执行时碰到才会引用,简化程序的执行流程。
  • require 引入的文件有错误时,执行会中断,并返回一个致命错误;
  • include 引入的文件有错误时,会继续执行,并返回一个警告。
  • 对于include() 语句来说,在执行文件时每次都要进行读取和评估;
  • 对于 require() 来说,文件只处理一次(实际上,文件内容替换 require() 语句)

案例:

<?php
include 'test-nothing.php';
echo 'abc';
?>

十、常量

定义常量define

语法:

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

        case_insensitive :可选参数,如果设置为 TRUE,该常量则大小写不敏感,默认是大小写敏感的。 

案例: 

<?php
// 区分大小写的常量名
define("GREETING", "欢迎访问 Runoob.com");
echo GREETING;    // 输出 "欢迎访问 Runoob.com"
echo '<br>';
echo greeting;   // 输出 "greeting",但是有警告信息,表示该常量未定义
?>

 定义常量const

语法:

const CONSTANT_NAME = "value";

案例: 

const SITE_URL = "https://www.runoob.com";
echo SITE_URL; // 输出 "https://www.runoob.com"

总结

这两种常量的定义方法在引用时候无需加$,因为其为常量不是变量。 

十一、超级全局变量

        超级全局变量(superglobals) ,这意味着它们在一个脚本的全部作用域中都可用。 你不需要特别说明,就可以在函数及类中使用

 变量名解释

$_COOKIE

存储客户端的 Cookie 数据的全局数组
 $_GET接受所有以 get 方式发送的请求的全局数组
$_POST接受所有以 post 方式发送请求的全局数组

$_REQUEST

用于收集来自 HTTP 请求的数据

 1.$_GET

获取url问号后面的数据,在url里#是锚定位符,GET方法无法获取锚定位符后面的内容

案例: 

<?php  
$name = $_GET['name']; // "John"  
$age = $_GET['age'];   // "25"  echo "姓名: " . htmlspecialchars($name) . "<br>";  
echo "年龄: " . htmlspecialchars($age);  //htmlspecialchars() 或 filter_input()可以避免SQL 注入和 XSS(跨站脚本攻击)
?>
<?php
$q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
if($q) {if($q =='RUNOOB') {echo '菜鸟教程<br>http://www.runoob.com';} else if($q =='GOOGLE') {echo 'Google 搜索<br>http://www.google.com';} else if($q =='TAOBAO') {echo '淘宝<br>http://www.taobao.com';}
} else {?><form action="" method="get"> <input type="radio" name="q" value="RUNOOB" />Runoob<input type="radio" name="q" value="GOOGLE" />Google<input type="radio" name="q" value="TAOBAO" />Taobao<input type="submit" value="提交">
</form><?php
}
?>

2.$_POST

获取由POST方法提交的参数。 

 案例:

<?php
$q = isset($_POST['q'])? $_POST['q'] : '';
if(is_array($q)) {$sites = array('RUNOOB' => '菜鸟教程: http://www.runoob.com','GOOGLE' => 'Google 搜索: http://www.google.com','TAOBAO' => '淘宝: http://www.taobao.com',);foreach($q as $val) {// PHP_EOL 为常量,用于换行echo $sites[$val] . PHP_EOL;}} else {?><form action="" method="post"> <input type="checkbox" name="q[]" value="RUNOOB"> Runoob<br> <input type="checkbox" name="q[]" value="GOOGLE"> Google<br> <input type="checkbox" name="q[]" value="TAOBAO"> Taobao<br><input type="submit" value="提交">
</form><?php
}
?>

 3.$_COOKIE

设置Cookie

语法:

setcookie(name, value, expire, path, domain);

 参数说明:

  • name(必需):

                这是 cookie 的名称。它是一个字符串,必须符合变量命名规则。

  • value(必需):

                这是与 cookie 关联的值。它是一个字符串,表示你要存储在客户端的内容。

  • expire(可选):

                这是 cookie 过期的时间。它是一个 Unix 时间戳(即从1970年1月1日到现在的秒

                数),可以通过 time() 函数来获取当前的时间戳。如果设置为 0,cookie 会在浏

                览器会话结束时过期;如果设置为将来的时间,则 cookie 会在指定的时间到期。

  • path(可选):

    • 这是 cookie 可用的路径。默认值是当前脚本的路径。设置此参数可以限制 cookie 的可用范围。例如,如果设置为 /,那么该 cookie 可以在整个域名下的所有路径中使用。
  • domain(可选):

    • 这是 cookie 可用的域名。可以用来设置 cookie 的作用域。默认情况下,cookie 将只在所发出的域名下有效。如果指定了子域名(例如 example.com),则 cookie 也可以在子域名(如 www.example.com 和 sub.example.com)下使用。

案例:

setcookie() 函数用于设置 cookie,且setcookie() 函数必须位于 <html> 标签之前

<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?><html>
.....

 获取Cookie的值

使用$_COOKIE超级全局数组来获取前面设定的Cookie值。

<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body><?php
if (isset($_COOKIE["user"]))echo "欢迎 " . $_COOKIE["user"] . "!<br>";
elseecho "普通访客!<br>";
?></body>
</html>

案例使用了isset函数来判断是否设置了Cookie

4.$_REQUEST

  $_REQUEST 是 PHP 中的一个超全局数组,用于收集来自 HTTP 请求的数据。它包含了 $_GET$_POST 两个数组中传递的数据。使用 $_REQUEST 时,可以方便地获取这两种方式发送的请求参数。

案例: 

// 假设用户通过 GET 或 POST 请求传递了一个名为 "username" 的参数  
$username = $_REQUEST['username'];  // 处理参数...  
echo "Hello, " . htmlspecialchars($username);

十二、面向对象(类)

十三、命名空间

1.定义命名空间

语法:

<?php  
// 定义代码在 'MyProject' 命名空间中  
namespace MyProject;  // ... 代码 ...  

案例: 单个文件多个命名空间(不推荐)

<?php  
namespace MyProject;const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }namespace AnotherProject;const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
?>  

 案例: 单个文件多个命名空间(推荐)

<?php
namespace MyProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */  }
}namespace AnotherProject {const CONNECT_OK = 1;class Connection { /* ... */ }function connect() { /* ... */  }
}
?>

         当使用全局代码和命名空间代码混用时候,必须使用花括号{},并且HTML页面代码应该另写在一个不包含命名空间的文件里,通过require和include函数来引入

<?php
namespace MyProject {const CONNECT_OK = 1;
class Connection { /* ... */ }
function connect() { /* ... */  }
}namespace { // 全局代码
session_start();
$a = MyProject\connect();
echo MyProject\Connection::start();
}
?>

 2.子命名空间

相当于目录与子目录的关系

<?php
namespace MyProject\Sub\Level{  //声明分层次的单个命名空间const CONNECT_OK = 1;class Connection { /* ... */ }function Connect() { /* ... */  }
}?>

十四、文件操作

 1.fopen()函数

用于在php打开文件。

语法:

fopen("文件名","参数")

案例: 

<html>
<body><?php
$file=fopen("welcome.txt","r");
?>
</body>
</html>

2.fwrite()函数

用来向文件写入信息。

语法: 

fwrite(file,string,length)
//file	必需。规定要写入的打开文件。
//string	必需。规定要写入文件的字符串。
//length	可选。规定要写入的最大字节数。

 案例:

<?php
$file = fopen("test.txt","w");
echo fwrite($file,"Hello World. Testing!");
fclose($file);
?>

3.fclose()函数

用来关闭文件。

案例: 

<?php
$file = fopen("test.txt","r");//执行一些代码fclose($file);
?>

4.feof() 函数

检测是否已到达文件末尾(EOF),返回值为bool类型。

注意:在 w 、a 和 x 模式下,您无法读取打开的文件!

案例:

if (feof($file)) echo "文件结尾";

5.fgets() 函数

从文件中逐行读取文件。

注意:在读取完一行后,指针会移动到新的一行。

 案例:

<?php
$file = fopen("welcome.txt", "r") or exit("无法打开文件!");
// 读取文件每一行,直到文件结尾
while(!feof($file))
{echo fgets($file). "<br>";
}
fclose($file);
?>

6.fgetc() 函数

从文件中逐字符地读取文件。

注意:在调用该函数之后,文件指针会移动到下一个字符。

案例: 

<?php
$file=fopen("welcome.txt","r") or exit("无法打开文件!");
while (!feof($file))
{echo fgetc($file);
}
fclose($file);
?>

参考资料

PHP 教程 | 菜鸟教程 (runoob.com)

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

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

相关文章

3千米以上音视频键鼠延长解决方案:KVM光纤延长器

KVM光纤延长器​​​​​​​是什么&#xff1f; KVM光纤延长器是一种使用光纤来传输键盘、视频和鼠标&#xff08;KVM&#xff09;信号的设备&#xff0c;由发送端和接收端组成&#xff0c;一般成对使用。它可以让用户在远离电脑的地方如同在本地一样方便快捷的操作电脑。 KV…

mysql数据库基础语法(未完)

数据库的超级用户是root 一、注释 &#xff08;1&#xff09;“-- ”减号减号空格 注意不要省略空格 &#xff08;2&#xff09;“#” 井号 二、数据库操作 1、创建 CREATE DATABASE [IF NOT EXISTS] <数据库名> [CHARACTER SET utf8] 2、删除 DROP DATABASE …

MySQL —— 初始数据库

数据库概念 在学习数据库之前&#xff0c;大家保存数据要么是在程序运行期间&#xff0c;例如&#xff1a;在学习编程语言的时候&#xff0c;大家写过的管理系统&#xff0c;运用一些简单的数据结构&#xff08;例如顺序表&#xff09;来组织数据&#xff0c;可是程序一旦结束…

硬盘数据丢失不再怕,四大恢复工具帮你轻松逆转局面!

硬盘故障、误删文件、病毒攻击等原因导致数据丢失的情况时有发生。面对这种情况&#xff0c;如何高效、快速地进行硬盘数据恢复呢&#xff1f;接下来几款好用的数据恢复软件推荐给大家。 一、福昕数据恢复&#xff1a;全方位恢复&#xff0c;让数据无遗漏 链接&#xff1a;ww…

Windows(Win10、Win11)本地部署开源大模型保姆级教程

目录 前言1.安装ollama2.安装大模型3.安装HyperV4.安装Docker5.安装聊天界面6.总结 点我去AIGIS公众号查看本文 本期教程用到的所有安装包已上传到百度网盘 链接&#xff1a;https://pan.baidu.com/s/1j281UcOF6gnOaumQP5XprA 提取码&#xff1a;wzw7 前言 最近开源大模型可谓闹…

观测器控制仿真案例详解(s-function函数)

目录 一、弹簧-质量-阻尼系统1. 系统状态空间方程2. 观测器状态空间方程 二、仿真(Simulink s-function函数)1. 搭建Simulink仿真模型2. s-function函数代码3. 仿真效果 控制理论–观测器设计 一、弹簧-质量-阻尼系统 系统参数&#xff1a; m 1 , K 1 , B 0.5 m 1\,, K 1…

【前端面试题】后端一次性返回10w条数据,该如何渲染?

后端一次返回 10w 条数据&#xff0c;本身这种技术方案设计就不合理。 问题分析&#xff1a; JS 支持处理10w 条数据&#xff0c;但 DOM 一次渲染 10w 条数据&#xff0c;可能会卡顿&#xff0c;所以需想办法减少 DOM 渲染 若非要实现&#xff0c;则可以考虑以下两种方案 自…

【C语言】程序环境,预处理,编译,汇编,链接详细介绍,其中预处理阶段重点讲解

目录 程序环境 翻译环境 1. 翻译环境的两个过程 2. 编译过程的三个阶段 执行环境 预处理(预编译) 1. 预定义符号 2. #define 2.1 用 #define 定义标识符(符号) 2.2 用 #define 定义宏 2.3 #define 的替换规则 2.4 # 和 ## 的用法 2.5 宏和函数 2.6 #undef …

Java小白入门到实战应用教程-权限修饰符

Java小白入门到实战应用教程-权限修饰符 前言 在前面的内容中我们其实已经接触到了权限修饰符&#xff1a;public 在java中权限修饰符除了public外&#xff0c;还有private、protected、默认权限。 权限修饰符可用来修饰类、成员变量、方法(函数)。 其中修饰类只能用publi…

使用Response.Write实现在页面的生命周期中前后台的交互

最近在做一个很大的查询&#xff0c;花时间很多&#xff0c; 用户会以为死掉了&#xff0c;就做了一个前后交互的&#xff0c;用于显示执行进度&#xff0c;在网上找了一下&#xff0c;这个比较合适。 主要是简单&#xff0c;大道至简 改进了一下&#xff1a;效果如下图 代码…

【数学建模】评价类模型:优劣解距离法

【数学建模】评价类模型&#xff1a;优劣解距离法 目录 【数学建模】评价类模型&#xff1a;优劣解距离法 1&#xff1a;前言 2&#xff1a;算法 1. 将原始矩阵正向化(统一为极大型) 2. 正向矩阵标准化(消除量纲) 3. 计算得分并归一化 3&#xff1a;例题 4&#xff1a…

shell脚本自动化部署

1、自动化部署DNS [rootweb ~]# vim dns.sh [roottomcat ~]# yum -y install bind-utils [roottomcat ~]# echo "nameserver 192.168.8.132" > /etc/resolv.conf [roottomcat ~]# nslookup www.a.com 2、自动化部署rsync [rootweb ~]# vim rsync.sh [rootweb ~]# …

jenkins集成jmeter

jenkins 安装插件HTML Publisher startup trigger Groovy 脚本介绍 cd /app/jmeter rm -rf result.jtl jmeter.log report mkdir -p report sh /app/jmeter/apache-jmeter-5.6.3/bin/jmeter.sh -n -t test.jmx -l result.jtl -e -o ./report-n: 表示以非 GUI 模式运行 JMete…

Java每日一练_模拟面试题1(死锁)

一、死锁的条件 死锁通常发生在两个或者更多的线程相互等待对方释放资源&#xff0c;从而导致它们都无法继续执行。死锁的条件通常被描述为四个必要条件&#xff0c;也就是互斥条件、不可剥夺条件、占有并等待条件和循环等待条件。 互斥条件&#xff1a;资源不能被共享&#x…

unity中实现流光效果——世界空间下

Properties{_MainTex ("Texture", 2D) "white" {}_FlowColor ("Flow Color", Color) (1, 1, 1, 1) // 流光颜色_FlowFrequency ("Flow Frequency", Float) 1.0 // 流光频率_FlowSpeed ("Flow Speed", Float) 1.0 // 流光…

QListView实现自定义的控件展示(可以根据选中与否置顶展示)

文章目录 0 问题引入1、方案1&#xff1a;使用QListwidget自定义的widget1.1 效果1.1 思路 2、方案2&#xff1a;使用QListView自定义model自定义delegate2.1.浅谈2.2.实现 3、总结4、引用 0 问题引入 问题&#xff1a;有人问我如何实现上图的功能&#xff0c;当时我脑海里有了…

手把手使用 SVG + CSS 实现渐变进度环效果

效果 轨道 使用 svg 画个轨道 <svg viewBox"0 0 100 100"><circle cx"50" cy"50" r"40" fill"none" stroke-width"10" stroke"#333"></circle></svg>简单的说&#xff0c;就是…

【Gin】深度解析:在Gin框架中优化应用程序流程的责任链设计模式(下)

【Gin】深度解析&#xff1a;在Gin框架中优化应用程序流程的责任链设计模式(下) 大家好 我是寸铁&#x1f44a; 【Gin】深度解析&#xff1a;在Gin框架中优化应用程序流程的责任链设计模式(下)✨ 喜欢的小伙伴可以点点关注 &#x1f49d; 前言 本次文章分为上下两部分&#xf…

计算机毕业设计Hadoop+Spark旅游景点可视化 旅游景点推荐系统 景区游客满意度预测与优化 Apriori算法 景区客流量预测 旅游大数据 景点规划

### 开题报告 **论文题目&#xff1a;** 基于Spark的旅游景点可视化系统的设计与实现 **研究背景与意义&#xff1a;** 随着旅游业的快速发展&#xff0c;人们对旅游信息的获取和处理需求越来越高。传统的旅游信息系统虽然能够提供静态的数据查询和展示功能&#xff0c;但在…