CTF-WEB:PHP伪协议用法总结

php:// 伪协议:

php:// 是 PHP 中的一个虚拟协议(或称为流包装器),用于访问 PHP 内部流资源。它是 PHP 提供的内置流协议之一,允许你通过流(stream)方式访问 PHP 内部的数据流、文件或其他资源。与 file:// 等协议不同,php:// 并不直接映射到文件系统,而是用于处理 PHP 特有的资源,如输入输出流、临时文件、PHP 自身的内存流等。

php:// 协议是 PHP 流包装器的一部分,允许在 PHP 脚本中灵活地处理不同类型的资源。php:// 有多个子协议,它们提供不同的功能,常见的子协议有 php://inputphp://outputphp://memory 等。

1. php://input:读取原始 POST 数据

php://input 是一个只读流,用于读取原始的 POST 数据。与 $_POST 不同,php://input 允许你直接访问 HTTP 请求中提交的原始数据,特别是对于非表单数据(如 JSON、XML 或其他自定义格式的内容)非常有用。

语法:
php://input
使用场景:
  • 处理 application/jsonapplication/xml 类型的请求体,直接读取原始数据而不通过 PHP 的 $_POST 全局数组。
  • 读取大数据量的流数据,避免将其加载到内存中。
示例:读取 JSON 格式的请求体
// 假设接收到的 POST 数据是一个 JSON 字符串
$json_data = file_get_contents("php://input");
$data = json_decode($json_data, true);
print_r($data);

在这个例子中,file_get_contents("php://input") 会读取 HTTP 请求体中的原始数据(例如,一个 JSON 字符串)。然后,使用 json_decode() 解析数据。

注意

  • php://input 只能读取一次,因为它是流的形式,读取后就无法再次访问相同的数据。因此,如果需要多次处理请求体,应该将其数据存储到一个变量中。
  • 它只能用于读取原始数据,不能像 $_POST 数组一样处理表单数据。

2. php://output:输出流

php://output 是一个写入流,允许你将数据直接写入到 PHP 的输出缓冲区。这意味着你可以将内容写入 HTTP 响应,而不需要直接使用 echoprint

语法:
php://output
使用场景:
  • 动态构建响应内容并将其输出到浏览器,而不是立即发送数据。
  • ob_start()ob_get_contents() 配合使用,缓存输出内容并在需要时发送到浏览器。
示例:将数据写入 php://output
// 打开 php://output 流
$output = fopen('php://output', 'w');
fwrite($output, "Hello, this is written to output.\n");
fclose($output);

在这个例子中,php://output 被用作一个写入流,将字符串写入 PHP 输出缓冲区。数据随后会发送到浏览器。

3. php://memory:内存中的临时文件

php://memory 是一个内存流,允许你在内存中创建一个临时文件。这类似于操作文件,但数据存储在内存中,不会写入磁盘。

语法:
php://memory
使用场景:
  • 当你需要快速读写临时数据,且不希望占用磁盘空间时,可以使用 php://memory
  • 适用于需要快速操作的小型数据集,如缓存、临时存储等。
示例:使用 php://memory 创建一个内存中的文件
// 打开 php://memory 流进行写操作
$handle = fopen('php://memory', 'w+');
fwrite($handle, "This is some data in memory.");
rewind($handle); // 将文件指针移回文件开头
$content = fread($handle, 1024);
fclose($handle);echo $content; // 输出:This is some data in memory.

在这个例子中,php://memory 用作内存流,可以在内存中快速读写数据。

4. php://temp:临时文件(使用内存或磁盘)

php://temp 是一个临时文件流,类似于 php://memory,但它可以根据文件大小自动切换存储方式:对于小文件,数据存储在内存中;对于较大的文件,数据会自动写入临时磁盘文件。

语法:
php://temp
使用场景:
  • 处理临时数据,自动管理内存和磁盘存储。
  • 适用于需要临时存储的数据,但又不希望事先知道数据量的情况。
示例:使用 php://temp 创建一个临时文件
// 打开 php://temp 流
$handle = fopen('php://temp', 'w+');
fwrite($handle, "This is a temporary file.\n");
rewind($handle);
$content = fread($handle, 1024);
fclose($handle);echo $content; // 输出:This is a temporary file.

5.php://stdinphp://stdout

  • php://stdin:用于读取标准输入流(stdin)。这是命令行 PHP 脚本中常用的流协议。
  • php://stdout:用于向标准输出流(stdout)写入数据。在命令行环境中,通常使用它来输出信息。
示例:使用 php://stdinphp://stdout
// 读取标准输入数据并写入标准输出
$input = fopen("php://stdin", "r");
$output = fopen("php://stdout", "w");fwrite($output, "Enter some text: ");
$line = fgets($input);
fwrite($output, "You entered: " . $line);

php://filter 伪协:

php://filter 是 PHP 提供的一个特殊协议,它允许在文件流操作中应用各种过滤器。通过使用 php://filter,你可以在读取文件或写入文件时对内容进行过滤或转换。这种功能非常适用于处理压缩、加密、解密、字符编码转换等需求,而不必手动处理文件内容。

基本概念

php://filter 是通过组合流协议和过滤器来实现的。它允许你在访问文件流时应用一个或多个过滤器,过滤器可以改变数据的表现形式或内容。

语法

php://filter 的基本格式如下:

php://filter/[filter_name]/resource=[resource]
  • filter_name:过滤器的名称,指定要应用的过滤器。
  • resource:资源名称,指示操作的实际文件或流。

常见过滤器

php://filter 支持多种过滤器,它们可以用于对文件内容进行多种处理。过滤器可以分为以下几类:

1. 压缩和解压缩过滤器

这些过滤器可以将数据流进行压缩或解压缩。

  • zlib.deflate:将数据流压缩为 DEFLATE 格式(无文件扩展名)。适用于压缩文本数据。
  • zlib.gzip:将数据流压缩为 GZIP 格式。
  • zlib.gunzip:解压缩 GZIP 格式的文件。
  • bzip2.compress:将数据流压缩为 BZIP2 格式。
  • bzip2.decompress:解压缩 BZIP2 格式的文件。
示例:使用 zlib.deflate 压缩数据
$compressed = file_get_contents("php://filter/zlib.deflate/resource=/path/to/file.txt");
echo $compressed;

此代码会读取 /path/to/file.txt 文件的内容,并将其压缩为 DEFLATE 格式。

2. 字符编码过滤器

这些过滤器允许你转换字符编码格式。

  • convert.iconv.*:转换字符编码格式。例如,convert.iconv.ISO-8859-1/UTF-8 将文件从 ISO-8859-1 编码转换为 UTF-8 编码。
示例:使用 convert.iconv 转换字符编码
$content = file_get_contents("php://filter/convert.iconv.ISO-8859-1/UTF-8/resource=/path/to/file.txt");
echo $content;

这会将 /path/to/file.txt 文件从 ISO-8859-1 编码转换为 UTF-8 编码。

3. 加密与解密过滤器

一些过滤器可用于对文件内容进行加密或解密操作。

  • mcrypt.encryptmcrypt.decrypt:使用 Mcrypt 库对数据进行加密或解密。
示例:使用 mcrypt 加密
$encrypted = file_get_contents("php://filter/mcrypt.encrypt/resource=/path/to/file.txt");
echo $encrypted;
4. 其他常见过滤器
  • string.toupper:将文件内容转换为大写。
  • string.tolower:将文件内容转换为小写。
  • string.strip_tags:去除 HTML 标签。
  • string.rot13:将文本进行 ROT13 加密。
示例:将文件内容转换为大写
$content = file_get_contents("php://filter/string.toupper/resource=/path/to/file.txt");
echo $content;

使用 php://filter 的一些示例

1. 读取并压缩文件内容

如果你想在读取文件的同时进行压缩,可以使用 php://filter 配合 zlib.deflate 过滤器:

// 压缩文件内容并输出
$compressed_content = file_get_contents("php://filter/zlib.deflate/resource=/path/to/large_file.txt");
echo $compressed_content;

这段代码会读取 /path/to/large_file.txt 文件的内容,并将其压缩成 DEFLATE 格式输出。

2. 转换文件编码

假设你有一个文件使用 ISO-8859-1 编码,但你需要将其内容转换为 UTF-8 编码后读取,可以使用 convert.iconv 过滤器:

$content = file_get_contents("php://filter/convert.iconv.ISO-8859-1/UTF-8/resource=/path/to/file.txt");
echo $content;
3. 加密文件内容

如果你需要对文件内容进行加密,可以使用 mcrypt.encrypt 过滤器(注意,Mcrypt 扩展在 PHP 7.1 之后已被标记为弃用,但仍然可以在一些 PHP 版本中使用):

$encrypted_content = file_get_contents("php://filter/mcrypt.encrypt/resource=/path/to/file.txt");
echo $encrypted_content;

组合过滤器

php://filter 允许你将多个过滤器组合起来使用。多个过滤器会依次应用于文件流,顺序非常重要。例如,你可以先压缩文件内容,再转换编码:

// 先进行压缩,再转换字符编码
$content = file_get_contents("php://filter/zlib.deflate/convert.iconv.ISO-8859-1/UTF-8/resource=/path/to/file.txt");
echo $content;

在这个例子中,文件内容会先被压缩,然后再从 ISO-8859-1 转换为 UTF-8 编码。

data:// 伪协议:

data:// 伪协议是 PHP 中的一种特殊协议,允许在不依赖外部文件的情况下,直接将数据嵌入到 PHP 代码中进行处理。data:// 协议常用于嵌入小型的数据内容(如文本或图像),它通过在 URL 中直接包含数据的方式,简化了文件操作的需求,尤其适用于在 Web 应用中处理嵌入式资源时的场景。

data:// 伪协议的语法

data:// 协议的基本语法如下:

data://[MIME-type];base64,[data]
  • data://:协议标识符,表示这是一个 data 协议。
  • MIME-type:可选的 MIME 类型,指定数据的格式。例如:text/plainimage/png 等。
  • base64:如果数据是二进制数据(如图片或其他文件),则通常采用 Base64 编码。这个标识符表示数据部分是经过 Base64 编码的。
  • [data]:要嵌入的数据部分。如果数据是文本,可以直接使用;如果是二进制数据,通常需要进行 Base64 编码。

语法解释

  1. data:// 协议头:指定了这是一个数据协议。
  2. MIME-type:定义数据的类型。例如,如果是文本数据,通常是 text/plain;如果是图像,可能是 image/pngimage/jpeg 等。
  3. base64(可选):这是一个标记,表示数据是经过 Base64 编码的。Base64 编码常用于将二进制数据(如图片或文件内容)转为 ASCII 字符串,这样它就可以嵌入到 URL 中。
  4. [data]:实际的数据。文本数据直接嵌入;二进制数据需要经过 Base64 编码。

示例

1. 简单的文本数据

如果你想通过 data:// 协议嵌入一段简单的文本数据,你可以按如下方式写:

$data = file_get_contents("data://text/plain,Hello%20World%21");
echo $data;  // 输出: Hello World!

在这个示例中:

  • data://text/plain,Hello%20World%21 是一个包含文本 “Hello World!” 的数据 URL。
  • text/plain 是 MIME 类型,表示这是普通的文本数据。
  • Hello%20World%21 是 URL 编码的文本,表示 Hello World!,空格被编码为 %20,感叹号被编码为 %21
2. Base64 编码的二进制数据

对于图像或其他二进制数据,你通常需要使用 Base64 编码。这是因为 data:// 协议能够传输二进制数据,但必须以文本的形式进行表示。

例如,如果你有一个小的图像文件并希望将其嵌入到 PHP 中,你首先需要将图像进行 Base64 编码:

$img_data = file_get_contents('image.png');
$base64_img = base64_encode($img_data);
$data_url = "data:image/png;base64," . $base64_img;echo $data_url;

在这个示例中:

  • file_get_contents('image.png') 读取了一个 PNG 图像文件。
  • base64_encode($img_data) 将图像数据编码为 Base64 格式。
  • data:image/png;base64,... 就是包含图像数据的 data:// URL。

如果你需要显示这个图像,可以在 HTML 中使用这个 data:// URL:

<img src="data:image/png;base64,..." />

... 代表你的 Base64 编码数据,浏览器会解析并显示这个图像。

3. 小型嵌入的文本文件

如果你有一个小的文本文件,并且希望将其嵌入到 PHP 中以进行读取或操作,可以使用 data:// 协议。比如:

$text = file_get_contents("data://text/plain,This%20is%20a%20test%20file");
echo $text;  // 输出: This is a test file

在这个示例中,data://text/plain,This%20is%20a%20test%20file 是一个包含文本 This is a test file 的数据 URL。

file:// 伪协议:

file:// 协议是 PHP 中用于访问文件系统的标准协议,允许你通过 URL 形式访问本地文件系统中的文件。这使得 PHP 脚本能够直接与文件交互,比如读取文件内容或写入数据。file:// 协议的核心作用是提供一个统一的接口,使得 PHP 可以在不同的文件系统中通过一致的方式进行文件操作。

file:// 语法详解

file:// 协议的基本语法如下:

file://[host]/path/to/file
  • file://:协议标识符,表示文件协议。
  • [host](可选):在某些系统中,file:// 可以包含一个主机部分。通常这个部分对于本地文件系统来说可以忽略,特别是在 UNIX 或 Linux 系统中。
  • /path/to/file:文件路径,指定你要访问的文件的完整路径。在 Windows 系统中,路径通常以盘符开始(如 C:/path/to/file);在类 UNIX 系统(如 Linux、macOS)中,路径通常从根目录 / 开始。

1. 访问本地文件

在最常见的用法中,file:// 协议用于访问本地文件系统中的文件。你可以将文件路径通过 file:// 协议指定为 URL,从而使用诸如 file_get_contents()fopen() 等函数读取或写入文件。

1.1 UNIX 和 Linux 系统

在 UNIX 和 Linux 系统中,文件路径从根目录 / 开始。假设你有一个位于 /var/www/html/test.txt 的文件,你可以使用 file:// 协议来访问它:

// 读取文件内容
$contents = file_get_contents("file:///var/www/html/test.txt");
echo $contents;
  • file:// 是协议标识符,表示这是一个本地文件访问。
  • /var/www/html/test.txt 是文件的绝对路径。
1.2 Windows 系统

在 Windows 系统中,路径通常以盘符(如 C:)开始,路径分隔符为反斜杠 \,但在 file:// 协议中,反斜杠需要转换为正斜杠 /。例如,如果文件位于 C:\xampp\htdocs\test.txt,可以用 file:// 协议访问:

// 读取文件内容
$contents = file_get_contents("file:///C:/xampp/htdocs/test.txt");
echo $contents;

在这个例子中:

  • file:// 协议标识符表示本地文件。
  • C:/xampp/htdocs/test.txt 是文件的路径,注意这里的路径分隔符是 / 而不是反斜杠 \

2. 访问远程文件系统(网络共享)

在某些情况下,file:// 协议可以用于访问远程的文件系统或网络共享资源,尤其是在网络文件系统(NFS)、SMB(Samba)等协议支持的环境中。在这种情况下,file:// 协议的路径可以包含主机名和共享路径。

2.1 网络共享路径

例如,如果你需要访问一个 Windows 网络共享文件夹,路径可能如下所示:

// 访问远程共享的文件夹
$contents = file_get_contents("file://192.168.1.100/shared-folder/test.txt");
echo $contents;
  • 192.168.1.100 是共享文件夹所在计算机的 IP 地址。
  • /shared-folder/test.txt 是共享文件夹中的文件路径。
2.2 Windows 文件共享(SMB)

在 Windows 网络共享中,路径格式通常为 \\server\share\path。在 file:// 协议中,反斜杠 \ 需要转换为正斜杠 /,并且前面需要加上 file:// 前缀。例如,访问一个共享文件夹时的路径可能如下:

// 访问 Windows 文件共享
$contents = file_get_contents("file:server/shared-folder/test.txt");
echo $contents;

这里,//server/shared-folder/test.txt 是网络共享文件的路径,server 是共享计算机的名称。

3. 使用 file:// 协议进行文件读取

PHP 提供了多个函数来使用 file:// 协议进行文件操作,最常用的是 file_get_contents()fopen()

3.1 file_get_contents()

file_get_contents() 是 PHP 中读取文件内容的一个常用函数。你可以通过 file:// 协议指定文件路径,读取本地或远程的文件。

$contents = file_get_contents("file:///path/to/file.txt");
echo $contents;

该函数读取整个文件并返回文件内容。对于大文件,可能需要使用流式读取(例如 fopen())来避免内存消耗过大。

3.2 fopen() 和其他文件操作函数

你也可以使用 fopen()fread()fwrite() 等函数进行文件操作。它们支持 file:// 协议来访问本地文件:

$handle = fopen("file:///path/to/file.txt", "r");
if ($handle) {$contents = fread($handle, filesize("file:///path/to/file.txt"));fclose($handle);echo $contents;
}

这个例子中,fopen() 打开文件并返回文件句柄,fread() 读取文件内容,fclose() 关闭文件。

3.3 写入文件

你可以使用 file_put_contents()fopen() + fwrite() 来向文件写入数据:

// 使用 file_put_contents 写入文件
file_put_contents("file:///path/to/file.txt", "Hello, World!");

或者使用 fopen()fwrite()

$handle = fopen("file:///path/to/file.txt", "w");
if ($handle) {fwrite($handle, "Hello, World!");fclose($handle);
}

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

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

相关文章

男同事36岁,听说被裁拿了12万。今天看到他退了群,但下午领导就反悔了,让他回来,还要把12万补偿退回来

亲爱的读者们&#xff0c;今天咱们来聊聊职场那些事儿。你听说过吗&#xff1f;有位男同事&#xff0c;36岁&#xff0c;被裁了&#xff0c;拿了12万补偿金&#xff0c;然后退了群。你以为这就是结局&#xff1f;不&#xff0c;故事才刚刚开始&#xff01; 想象一下&#xff0…

李佳琦回到巅峰背后,双11成直播电商分水岭

时间倏忽而过&#xff0c;又一年的双11即将宣告结束。 从双11正式开始前的《新所有女生的offer》&#xff0c;到被作为“比价”标杆被其他平台直播间蹭、被与其他渠道品牌比较&#xff0c;再到直播间运营一时手快多发了红包……整个双11周期下来&#xff0c;李佳琦直播间在刷新…

Golang | Leetcode Golang题解之第546题移除盒子

题目&#xff1a; 题解&#xff1a; func removeBoxes(boxes []int) int {dp : [100][100][100]int{}var calculatePoints func(boxes []int, l, r, k int) intcalculatePoints func(boxes []int, l, r, k int) int {if l > r {return 0}if dp[l][r][k] 0 {r1, k1 : r, k…

Python | Leetcode Python题解之第553题最优除法

题目&#xff1b; 题解&#xff1a; class Solution:def optimalDivision(self, nums: List[int]) -> str:if len(nums) 1:return str(nums[0])if len(nums) 2:return str(nums[0]) "/" str(nums[1])return str(nums[0]) "/(" "/".joi…

新手 Vue 项目运行

前言&#xff1a;前面讲了我们已经将spingboot项目运行起来了&#xff0c;现在我们只需将后台管理的Vue项目运行起来即可完成整个项目。 在运行vue项目之前&#xff0c;请先运行springboot项目&#xff0c;运行步骤请看&#xff1a;运行Springboot Vue 项目_springbootvue项目…

光学全息详解

一、光学全息概述 1.1 光学全息的基本思想与原理的概述 光波是电磁波, 随时间振动,并在空间传播。光波照射物体时, 其振幅和相位就被空间调制。物光波的振幅给出物体的亮度(强度)信息, 相位给出物体的方位(深度和位置)信息。若能采用某种方法把物光波的振幅和相位同时记录下来…

自定义包和第三方包

1.自定义包由自己创建&#xff08;创建步骤如下&#xff09; 2.第三方包由大佬开发可通过python安装后自带的pip安装第三方包&#xff08;安装时由于默认连接的是外网网速较慢&#xff0c;可换国内的网如(清华网)&#xff1a;https://pypi.tuna.ysinghua.edu.cn/simple&#x…

SNH48 GROUP燃动杭州 第五届偶像运动会落下帷幕

2024年11月9日&#xff0c;“我们能赢”SNH48 GROUP第五届偶像运动会在杭州运河体育公园盛大开赛&#xff0c;本次运动会由高榕及SNH48郭爽、GNZ48梁娇作为赛事特邀主持人&#xff0c;并于小红书、微信视频号、SNH48 GROUP官方直播APP口袋48及MEET48全程直播。SNH48&#xff08…

Latex使用花体符号\mathbb{R}报错解决办法

一、背景 latex的优势是可以进行自动排版&#xff0c;以及复杂公式的编辑。然而&#xff0c;编辑花体符号R时&#xff0c;使用命令\mathbb{R}报错&#xff0c;编译不通过&#xff0c;这里记录一下解决办法。 二、Latex使用花体符号\mathbb{R}报错解决办法 在LaTeX中&#xf…

当当网创始人李国庆邀您:共襄创客匠人5000人“全球创始人IP领袖高峰论坛”

创客匠人正式官宣&#xff01;当当网原CEO、联合创始人和首席大股东、CRYSTO董事长、CEO李国庆&#xff0c;受邀参加创客匠人5000人“全球创始人IP领袖高峰论坛”&#xff0c;将与我们携手共赴这场巅峰盛宴。 由创客匠人打造的“全球创始人IP领袖高峰论坛”将在2024年12月26日-…

docker安装zookeeper,以及zk可视化界面介绍

1. zookeeper 1.1. zookeeper简单介绍 ZooKeeper 是一个分布式的开源协调服务&#xff0c;最初由 Apache Hadoop 项目开发&#xff0c;用于构建分布式应用程序。它提供了一个简单的接口&#xff0c;允许开发人员实现诸如配置维护、域名服务、分布式同步、组服务等常见任务。Z…

SIwave:释放 SIwizard 求解器的强大功能

SIwave 是一种电源完整性和信号完整性工具。SIwizard 是 SIwave 中 SI 分析的主要工具&#xff0c;也是本博客的主题。 SIwizard 用于研究 RF、clock 和 control traces 的信号完整性。该工具允许用户进行瞬态分析、眼图分析和 BER 计算。用户可以将 IBIS 和 IBIS-AMI 模型添加…

Mac中禁用系统更新

Mac中禁用系统更新 文章目录 Mac中禁用系统更新1. 修改hosts&#xff0c;屏蔽系统更新检测联网1. 去除系统偏好设置--系统更新已有的小红点标记 1. 修改hosts&#xff0c;屏蔽系统更新检测联网 打开终端&#xff0c;执行命令&#xff1a; sudo vim /etc/hosts127.0.0.1 swdis…

macOS 下的 ARM 裸机嵌入式开发入门- 第二部分:实现第一个裸机应用并且调试

1、准备二进制运行程序镜像 利用 QEMU 仿真一个完整的系统&#xff0c;并创建最简单的“Hello world!”示例。 QEMU 模拟器支持 VersatilePB 平台&#xff0c;该平台包含一个 ARM926EJ-S 核心&#xff0c;以及其他外设&#xff0c;四个 UART 串行端口&#xff1b;特别是第一个…

分享三个python爬虫案例

一、爬取豆瓣电影排行榜Top250存储到Excel文件 近年来&#xff0c;Python在数据爬取和处理方面的应用越来越广泛。本文将介绍一个基于Python的爬虫程序&#xff0c;用于抓取豆瓣电影Top250的相关信息&#xff0c;并将其保存为Excel文件。 获取网页数据的函数&#xff0c;包括以…

怎么禁止Ubuntu自动更新升级

怎么禁止Ubuntu自动更新升级 笔者在做MIT 6.S081的时候发现他给我的qemu自动更新了又卡住了&#xff0c;故关闭了自动更新 文章目录 怎么禁止Ubuntu自动更新升级一、图形化修改二、基于命令行修改配置文件的方法 一、图形化修改 1.打开设置->软件和更新->更新 2.选择自…

论文1—《基于卷积神经网络的手术机器人控制系统设计》文献阅读分析报告

论文报告&#xff1a;基于卷积神经网络的手术机器人控制系统设计 摘要 本研究针对传统手术机器人控制系统精准度不足的问题&#xff0c;提出了一种基于卷积神经网络的手术机器人控制系统设计。研究设计了控制系统的总体结构&#xff0c;并选用PCI插槽上直接内插CAN适配卡作为上…

水库大坝安全监测预警方法

一、监测目标 为了确保水库大坝的结构安全性和运行稳定性&#xff0c;我们需要采取一系列措施来预防和减少因自然灾害或其他潜在因素所引发的灾害损失。这不仅有助于保障广大人民群众的生命财产安全&#xff0c;还能确保水资源的合理利用和可持续发展。通过加强大坝的监测和维护…

赖茅:“酱香酒+羽毛球”营销理念的先驱者与领航者

前言&#xff1a;贵州赖茅酒业有限公司成立于2014年&#xff0c;由贵州茅台酒股份有限公司与中石化易捷销售有限公司强强联合&#xff0c;引入民营资本组建。2018年签约成为世界羽联首家内地官方合作伙伴&#xff0c;突破白酒企业传统模式&#xff0c;创新打造“酱香酒&#xf…

二叉搜索树的应用(了解补充)

前言 前面我们对二叉搜索树进行了讲解&#xff0c;本节内容我们将对该树的应用进行讲解&#xff0c;对二叉搜素树进行进一步的了解。 二叉搜索树key和key/value使用场景 key搜索场景 只有key作为关键码&#xff0c;结构中只需要存储key即可&#xff0c;关键码即为需要搜索到的值…