做题遇见的PHP函数汇总

mb_substr函数

mb_substr() 函数返回字符串的一部分,之前学过 substr() 函数,它只针对英文字符,如果要分割的中文文字则需要使用 mb_substr()

语法:
mb_substr ( $str ,$start [, $length = NULL [, $encoding = mb_encoding() ]] 参数:
$str:必需。从该 string 中提取子字符串。$start:必需。规定在字符串的何处开始。
正数 - 在字符串的指定下标位置开始
负数 - 在从字符串结尾的指定位置开始

$length :可选。规定要返回的字符串长度。默认是直到字符串的结尾。
正数 - 从 start 参数所在的位置返回
负数 - 从字符串末端返回

$encoding:指定字符编码,可选

mb_strpos函数

语法:
mb_strpos ($str1 ,$str2 )
mb_strpos():返回str2在str1中首次出现的下标位置
参数:
$str1:要被检查的字符串。
$str2:要搜索的字符串。

unserialize() 函数

unserialize() 函数用于将通过 serialize() 函数序列化后的对象或数组进行反序列化,并返回原始的对象结构。

语法结构
unserialize ($str )
$str:序列化的字符串
如果传递的字符串不可解序列化,则返回 FALSE,并抛出异常

如果不可解序列化,则返回false

serialize() 函数

serialize() 函数用于序列化对象或数组,并返回一个字符串。

serialize() 函数序列化对象后,可以很方便的将它传递给其他需要它的地方,且其类型和结构不会改变。

语法
serialize ($value )
$value: 要序列化的对象或数组。

可以看到,当序列化以后输出的结果是一串字符。

a:表示一个数组,由array首字符表示,例如int序列化后回显就是i

4:表示数组的元素个数为4

{}:数组元素的集合(下标 +元素)

i:表示是整型,0:表示元素内容,这里是数组下标

s:表示类型为字符串,长度为6,内容为:Google

__construct

构造函数(也称为构造器)是类中的一种特殊函数,当使用 new 关键字实例化一个对象时,构造函数将会自动调用。代码中用到了 $this,它表示当前调用的对象,而且 $this 只能在类的方法中使用

以下代码大致的意思就是:

定义了一个名为Web的类,该类有三个属性:name、url和title,以及一个构造函数__construct()。构造函数在创建Website对象时自动调用,它接受三个参数并将它们分别赋值给类的属性。

构造函数还调用了类的另一个方法ec(),该方法会输出对象的属性值。

最后,创建了一个Web对象$object,并传入了三个参数。在构造函数中,$object的属性被赋值并输出。因为类无法直接访问,需要得到类的具体对象才能访问,可以通过实例化new来实现对象的创建

__wakeup()

__wakeup():当类外部使用`unserialize()` 时,会检查是否存在一个 `__wakeup()` 方法。如果存在,则会先调用 `__wakeup` 方法,预先准备对象需要的资源。

作用:
__wakeup() 经常用在反序列化操作中,例如重新建立数据库连接,或执行其它初始化操作。
这里的作用就是先将username赋值,使我们传入的username永远为guest

__destruct():

析构函数/方法,析构函数的作用和构造函数正好相反,析构函数只有在对象被垃圾收集器收集前(即对象从内存中删除之前)才会被自动调用。析构函数允许我们在销毁一个对象之前执行一些特定的操作,例如关闭文件、释放结果集等。

public 、public、protected

类中的 公有、私有、受保护成员

  • public 表示全局,类内部外部子类都可以访问;

  • private表示私有的,只有本类内部可以使用;

  • protected表示受保护的,只有本类或子类或父类中可以访问;

不同的访问修饰符对应的序列化也有不同。

各访问修饰符序列化后的区别:

  • public:属性被序列化的时候属性名还是原来的属性名,没有任何改变

  • protected:属性被序列化的时候属性名会变成\0*\0字段名

  • private:属性被序列化的时候属性名会变成\0类名\0字段名

foreach

foreach 循环只适用于数组,并用于遍历数组中的每个键/值对。在PHP中,foreach可以用于遍历数组和对象的属性

通过使用foreach循环,我们可以方便地遍历数组和对象的元素,并对其进行相应的操作。

基本的foreach语法如下:
foreach ($array as $key => $value) {
// 在这里执行代码
}

在这里,$array代表要遍历的数组或对象,$key和$value是在每次循环中被赋值的变量,$key表示数组或对象的键名,$value表示对应的值。

每进行一次循环迭代,当前数组元素的值就会被赋值给 $value 变量,并且数组指针会逐一地移动,直到到达最后一个数组元素。

例如,我们有一个包含一些学生姓名和年龄的关联数组:

$students = array("Alice" => 18,"Bob" => 20,"Charlie" => 19
);

我们可以使用foreach循环遍历这个数组并输出每个学生的姓名和年龄:

foreach ($students as $name => $age) {echo "姓名:" . $name . ",年龄:" . $age . "<br>";
}
输出:姓名:Alice,年龄:18
姓名:Bob,年龄:20
姓名:Charlie,年龄:19

foreach循环还可以用于遍历对象的属性。首先,我们需要创建一个对象:

class Person{public $name;public $age;public function __construct($name, $age) {$this->name = $name;$this->age = $age;}
}$person1 = new Person("Alice", 18);
$person2 = new Person("Bob", 20);
$person3 = new Person("Charlie", 19);$people = array($person1, $person2, $person3);

然后,我们可以使用foreach循环遍历$people数组中的每个Person对象,并输出其属性:

foreach ($people as $person) {echo "姓名:" . $person->name . ",年龄:" . $person->age . "<br>";
}
输出:姓名:Alice,年龄:18
姓名:Bob,年龄:20
姓名:Charlie,年龄:19

文件上传

PHP file_exists() 函数

定义和用法

file_exists() 函数检查文件或目录是否存在。

如果指定的文件或目录存在则返回 TRUE,否则返回 FALSE。

语法:
file_exists(文件路径)

$_FILES

PHP $_FILES 是一个预定义的数组,用来获取通过 POST 方法上传文件的相关信息。当客户端提交后,我们获得了一个$_FILES 数组

<?php
if ($_FILES["file"]["error"] > 0)
{echo "错误:" . $_FILES["file"]["error"] . "<br>";
}
else
{echo "上传文件名: " . $_FILES["file"]["name"] . "<br>";echo "文件类型: " . $_FILES["file"]["type"] . "<br>";echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"];
}
?>

通过使用 PHP 的全局数组 $_FILES,可以从客户计算机向远程服务器上传文件。

第一个参数是表单的 input name,第二个下标可以是 "name"、"type"、"size"、"tmp_name" 或 "error"。如下所示:

  • $_FILES["file"]["name"] - 上传文件的名称

  • $_FILES["file"][tmp_name] - 保存的是文件上传到服务器临时文件夹之后的文件名

  • $_FILES["file"]["type"] - 上传文件的类型

  • $_FILES["file"]["size"] - 上传文件的大小,以字节计

  • $_FILES["file"]["error"] - 由文件上传导致的错误代码

PHP move_uploaded_file() 函数

定义和用法

move_uploaded_file() 函数把上传的文件移动到新位置。

如果成功该函数返回 TRUE,如果失败则返回 FALSE。

该函数仅用于通过 HTTP POST 上传的文件。

如果目标文件已经存在,将会被覆盖。

语法:
move_uploaded_file( file, newloc )

参数

描述

file

必需。规定要移动的文件。

newloc

必需。规定文件的新位置。

PHP trim() 函数

trim() 函数移除字符串两侧的空白字符或其他预定义字符。

相关函数:
ltrim() - 移除字符串左侧的空白字符或其他预定义字符。
rtrim() - 移除字符串右侧的空白字符或其他预定义字符。
语法
trim(string,charlist)

参数

描述

string

必需。规定要检查的字符串。

charlist

可选。规定从字符串中删除哪些字符。如果省略该参数,则移除下列所有字符:

  • "\0" - NULL

  • "\t" - 制表符

  • "\n" - 换行

  • "\x0B" - 垂直制表符

  • "\r" - 回车

  • " " - 空格

deldot函数

这个函数是upload-labs中常见的函数,这其实是一个自定义函数,定义在common.php中

其主要目的是移除文件名末尾的点

例如$a = shell.php.

调用本函数后,就得到$a = shell.php

语法:
deldot(x)
函数定义如下:
function deldot($s){for($i = strlen($s)-1;$i>0;$i--){$c = substr($s,$i,1);if($i == strlen($s)-1 and $c != '.'){return $s;}
​if($c != '.'){return substr($s,0,$i+1);}}
}

函数大致解释就是:

strlen函数返回的是字符串的长度

从指定字符串倒数第二个字符开始,向后截取一个字符赋给c,直到c不等于0时结束循环

PHP strrchr() 函数

定义和用法

strrchr() 函数查找字符串在另一个字符串中最后一次出现的位置

并返回从该位置到字符串结尾的所有字符。

语法:
strrchr( string,char)

参数

描述

string

必需。规定被搜索的字符串。

char

必需。规定要查找的字符。如果该参数是数字,则搜索匹配数字 ASCII 值的字符。

这个函数一般用来获取,上传文件的后缀名,比如

PHP strtolower() 函数

属实发现php的函数名很多都是英语直译过来的

定义和用法

strtolower() 函数把字符串转换为小写。

相关函数:
strtoupper() - 把字符串转换为大写
lcfirst() - 把字符串中的首字符转换为小写
ucfirst() - 把字符串中的首字符转换为大写
ucwords() - 把字符串中每个单词的首字符转换为大写
语法:
strtolower(string)

参数

描述

string

必需。规定要转换的字符串。

PHP str_ireplace() 函数

定义和用法

str_ireplace() 函数替换字符串中的一些字符(不区分大小写)。

该函数必须遵循下列规则:

  • 如果搜索的字符串是一个数组,那么它将返回一个数组。

  • 如果搜索的字符串是一个数组,那么它将对数组中的每个元素进行查找和替换。

  • 如果同时需要对某个数组进行查找和替换,并且需要执行替换的元素少于查找到的元素的数量,那么多余的元素将用空字符串进行替换。

该函数是不区分大小写的。请使用 str_replace() 函数执行区分大小写的搜索。


语法
str_ireplace(find,replace,string,count)

参数

描述

find

必需。规定要查找的值。

replace

必需。规定用于替换的值。

string

必需。规定被搜索的字符串。

count

可选。一个变量,对替换数进行计数。

PHP strrpos() 函数

定义和用法

strrpos() 函数查找字符串在另一字符串中最后一次出现的位置(区分大小写)

相关函数:

  • strpos() - 查找字符串在另一字符串中第一次出现的位置(区分大小写)

  • stripos() - 查找字符串在另一字符串中第一次出现的位置(不区分大小写)

  • strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)


语法
strrpos(string,find,start)

参数

描述

string

必需。规定被搜索的字符串。

find

必需。规定要查找的字符。

start

可选。规定开始搜索的位置。

注意返回的是字符的下标索引,而不是实在位置

PHP stripos() 函数

定义和用法

stripos() 函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)。

语法
stripos(string,find,start)

注意:函数返回字符串在另一字符串中第一次出现的位置,如果没有找到字符串则返回 FALSE。

字符串位置从 0 开始,不是从 1 开始。

参数

描述

string

必需。规定被搜索的字符串。

find

必需。规定要查找的字符。

start

可选。规定开始搜索的位置。

PHP substr() 函数

定义和用法

substr() 函数返回字符串的一部分。

注意:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。


语法
substr(string,start,length)

参数

描述

string

必需。规定要返回其中一部分的字符串。

start

必需。规定在字符串的何处开始。

  • 正数 - 在字符串的指定位置开始

  • 负数 - 在从字符串结尾的指定位置开始

  • 0 - 在字符串中的第一个字符处开始

length

可选。规定要返回的字符串长度。默认是直到字符串的结尾。

  • 正数 - 从 start 参数所在的位置返回

  • 负数 - 从字符串末端返回

PHP unpack() 函数

unpack() 函数从二进制字符串对数据进行解包。

如果成功则返回数组,如果失败则返回 FALSE。


语法
unpack(format,data)

参数

描述

format

必需。规定在解包数据时所使用的格式。

可能的值:

  • a - NUL 填充的字符串

  • A - SPACE 填充的字符串

  • h - 十六进制字符串,低位在前

  • H - 十六进制字符串,高位在前

  • c - signed char

  • C - unsigned char

  • s - signed short(总是16位, machine 字节顺序)

  • S - unsigned short(总是16位, machine 字节顺序)

  • n - unsigned short(总是16位, big endian 字节顺序)

  • v - unsigned short(总是16位, little endian 字节顺序)

  • i - signed integer(取决于 machine 的大小和字节顺序)

  • I - unsigned integer(取决于 machine 的大小和字节顺序)

  • l - signed long(总是32位, machine 字节顺序)

  • L - unsigned long(总是32位, machine 字节顺序)

  • N - unsigned long(总是32位, big endian 字节顺序)

  • V - unsigned long(总是32位, little endian 字节顺序)

  • f - float(取决于 machine 的大小和表示)

  • d - double(取决于 machine 的大小和表示)

  • x - NUL 字节

  • X - 备份一个字节

  • Z - NUL 填充的字符串

  • @ - NUL 填充绝对位置

data

必需。规定被解包的二进制数据。

例:@unpack("C2chars", $bin)

在 PHP 中,unpack() 函数用于将二进制数据解包为数组。对于给定的二进制数据 $bin,@unpack("C2chars", $bin) 将会返回一个关联数组,其中键名为 chars1 和 chars2,对应着解包后的两个字节。

在这里,C 表示一个无符号字符 (一个字节),2 表示要解包两个这样的字符。因此,@unpack("C2chars", $bin) 会将 $bin 解包为两个字节,并将结果存储在 $strInfo 中。

PHP intval() 函数

intval() 函数通过使用指定的进制 base 转换(默认是十进制),返回变量 var 的 integer 数值。

成功时返回 var 的 integer 值,失败时返回 0。 空的 array 返回 0,非空的 array 返回 1。

如果字符串不以数字开始,则 intval() 函数将返回 0

intval() 不能用于 object,否则会产生 E_NOTICE 错误并返回 1。

语法:
int intval ( mixed $var [, base] )

参数说明:

  • $var:要转换成 整型 的数量值。

  • $base:转化所使用的进制。

如果 base 是 0,通过检测 var 的格式来决定使用的进制:

  • 如果字符串包括了 "0x" (或 "0X") 的前缀,使用 16 进制 (hex);

  • 如果字符串以 "0" 开始,使用 8 进制(octal);

  • 如果是科学计数法,也会转换为十进制形式

  • 默认将使用 10 进制 (decimal)。

PHP image_type_to_extension - 获取图片后缀

语法
string image_type_to_extension ( int $imagetype [, bool $include_dot = TRUE ] )
根据给定的常量 IMAGETYPE_XXX 返回后缀名。

参数:

  • $imagetype:表示图像类型的整数常量,例如 IMAGETYPE_JPEG、IMAGETYPE_PNG 等。

  • $include_dot(可选):指定是否包括扩展名前的点号,默认为 TRUE,表示包括点号。

返回值:

  • 返回一个字符串,表示与给定图像类型相对应的文件扩展名。

实例
<?php
// 创建图像实例
$im = imagecreatetruecolor(100, 100);// 保存图像 png 格式
imagepng($im, './test' . image_type_to_extension(IMAGETYPE_PNG));
imagedestroy($im);
?>

执行以上文件会在当期目录下生成一个 test.png 的图片。

php getimagesize 函数 - 获取图像信息

getimagesize() 函数用于获取图像大小及相关信息

成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

语法格式:
array getimagesize ( string $filename [, array &$imageinfo ] )

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。

返回结果说明

  • 索引 0 给出的是图像宽度的像素值

  • 索引 1 给出的是图像高度的像素值

  • 索引 2 给出的是图像的类型,返回的是数字,其中1 = GIF,2 = JPG,3 = PNG,4 = SWF,5 = PSD,6 = BMP,7 = TIFF(intel byte order),8 = TIFF(motorola byte order),9 = JPC,10 = JP2,11 = JPX,12 = JB2,13 = SWC,14 = IFF,15 = WBMP,16 = XBM

  • 索引 3 给出的是一个宽度和高度的字符串,可以直接用于 HTML 的 <image> 标签

  • 索引 bits 给出的是图像的每种颜色的位数,二进制格式

  • 索引 channels 给出的是图像的通道值,RGB 图像默认是 3

  • 索引 mime 给出的是图像的 MIME 信息,此信息可以用来在 HTTP Content-type 头信息中发送正确的信息,如: header("Content-type: image/jpeg");

exif_imagetype

exif_imagetype 是一个 PHP 内置函数,用于获取图像文件的类型。它的语法是:

exif_imagetype(string $filename): int|false

参数:

  • $filename:要检查的图像文件的路径。

返回值:

  • 如果给定的文件是一个有效的图像文件,则返回图像类型的常量值。常量值可能是 IMAGETYPE_GIF、IMAGETYPE_JPEG、IMAGETYPE_PNG 等。

  • 如果给定的文件不是有效的图像文件,或者无法读取文件信息,函数会返回 false。

#示例代码
$filename = "image.jpg";
$image_type = exif_imagetype($filename);
if ($image_type) {echo"该文件是图像文件,类型为:" . $image_type;
} else {echo"该文件不是图像文件";
}

注意事项:

  • exif_imagetype 函数需要开启 PHP 的 exif 模块才能正常工作。

  • 这个函数只能获取图像文件的类型,无法判断文件是否为图像文件。

PHP unlink() 函数

unlink() 函数删除文件。

如果成功,该函数返回 TRUE。如果失败,则返回 FALSE。

语法
unlink(filename,context)

参数

描述

filename

必需。规定要删除的文件。

context

可选。规定文件句柄的环境。context 是一套可以修改流的行为的选项。

PHP strval() 函数

strval() 函数用于获取变量的字符串值。

语法
string strval ( $var )
参数说明:
$var: 可以是任何标量类型,但不能是数组或对象。
返回字符串。

PHP srand() 函数

srand() 函数播种随机数生成器(rand())。

srand 函数用于设置随机数生成器的种子,以便在调用随机生成函数 rand() 时产生不同的随机数序列

提示:从 PHP 4.2.0 开始,随机数生成器自动播种,因此没有必要使用该函数。


语法
srand(seed);

参数

描述

seed

可选。规定播种值。

例:srand(time());

time() 函数返回当前的时间戳,作为种子值传递给 srand 函数,可以确保每次运行代码时都会生成不同的随机数序列。

通过设置种子,可以在不同的时间和环境下得到不同的随机数序列,使生成的随机数更加随机和不可预测。

需要注意的是,srand 函数只需要在需要生成随机数之前调用一次即可,通常放在代码的开头部分。在同一个代码文件中多次调用 srand 函数可能会产生相同的随机数序列,因此最好只在需要时设置一次种子。

imagecreatefromjpeg

拆分理解image create from jpeg用于从 JPEG 图像文件创建一个新的图像资源。

imagecreatefromjpeg 函数还支持其他类型的图像文件,比如 PNG、GIF 等。只需根据文件类型选择对应的函数即可(如 imagecreatefrompng、imagecreatefromgif 等)。

语法:
imagecreatefromjpeg ( string $filename )
  • $filename:要打开的 JPEG 图像文件的路径。

  • 如果成功,返回一个新的图像资源,表示打开的 JPEG 图像文件;如果失败,返回 false。

php复制代码$filename = 'path/to/image.jpg';
$image = imagecreatefromjpeg($filename);
if ($image) {// 成功打开图像文件// 进行后续操作
} else {// 打开图像文件失败
}

imagejpeg

是一个用于将图像保存为 JPEG 格式的 PHP 函数。

函数的返回值是一个布尔值,表示图像是否成功保存。

imagejpeg 函数还支持其他类型的图像文件,比如 PNG、GIF 等。只需根据文件类型选择对应的函数即可(如 imagepng、imagegif 等)。

语法:
imagejpeg ( $image [,$to [, $quality ]] )

参数解释:

  • $image 是一个图像资源,通常通过 imagecreatefromjpeg 等函数创建的。

  • $to 是可选参数,用于指定保存的文件路径。如果不提供该参数,则函数会将图像数据直接输出到浏览器。

  • $quality 是可选参数,用于指定 JPEG 图像的质量,取值范围是 0-100。默认值是 75。

PHP is_uploaded_file() 函数

定义和用法

is_uploaded_file() 函数检查指定的文件是否是通过 HTTP POST 上传的。

如果文件是通过 HTTP POST 上传的,该函数返回 TRUE。

语法
is_uploaded_file(file)

参数

描述

file

必需。规定要检查的文件。

PHP is_writable() 函数

定义和用法

is_writable() 函数检查指定的文件是否可写。

如果文件可写,该函数返回 TRUE。

语法
is_writable(file)

参数

描述

file

必需。规定要检查的文件。

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

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

相关文章

docker中运行RabbitMq的启用插件指南

我们使用 Docker 来运行 RabbitMQ&#xff0c;有时需要启用一些插件&#xff0c;这个与正常安装的启用插件的步骤会有所不同。以下是在 Docker 中启用 RabbitMQ 插件的一般步骤&#xff1a; 首先&#xff0c;确认已经将 rabbitmq_delayed_message_exchange-3.12.0.ez 插件文件复…

adb: failed to install .\xxxxxx.apk: Failure [INSTALL_FAILED_USER_RESTRICTED

开发者模式和USB调试均已打开&#xff0c;adb安装时报错。看了一下&#xff0c;小米手机还需要开启USB安装才行。 问题已解决

《永劫无间》免费!《永劫无间》配置要求如何?

《永劫无间》于2021年7月8日开启不删档测试&#xff0c;8月12日在Steam全球公测&#xff0c;终于赶在两周年&#xff0c;2023年7月14日的炎炎夏日转为免费游戏。在《永劫无间》中&#xff0c;玩家可以选择不同的英雄&#xff0c;每个英雄都有独特的技能和风格&#xff0c;通过搜…

深入解析Redis的LRU与LFU算法实现

作者&#xff1a;vivo 互联网服务器团队 - Luo Jianxin 重点介绍了Redis的LRU与LFU算法实现&#xff0c;并分析总结了两种算法的实现效果以及存在的问题。 一、前言 Redis是一款基于内存的高性能NoSQL数据库&#xff0c;数据都缓存在内存里&#xff0c; 这使得Redis可以每秒轻…

【Python】Python项目打包发布(五)(制作Windows安装包)

Python项目打包发布汇总 【Python】Python项目打包发布&#xff08;一&#xff09;&#xff08;基于Pyinstaller打包多目录项目&#xff09; 【Python】Python项目打包发布&#xff08;二&#xff09;&#xff08;基于Pyinstaller打包PyWebIO项目&#xff09; 【Python】Pytho…

视图与索引的详细用法

视图与索引的详细用法 1.视图的主要作用包括&#xff1a;1.简化查询&#xff1a;2.数据安全性&#xff1a;3.数据抽象&#xff1a; 2.索引简介1.索引的作用主要有以下几个方面&#xff1a;1.快速定位数&#xff1a;2. 提高查询性能3.加速排序和连接操作4.维护数据完整性 3.索引…

从0开始学架构-架构的定义

从0开始学架构-架构的定义 文章目录 从0开始学架构-架构的定义系统与子系统模块与组件框架与架构软件框架&#xff08;Software framework&#xff09;软件架构区别 重新定义架构&#xff1a;4R 架构软件架构重新定义 三组容易混淆的概念&#xff1a; 系统与子系统模块与组件框…

机器学习算法之决策树(decision tree)

1 决策树算法介绍 决策树(Decision Tree,又称为判定树)算法是机器学习中常见的一类算法&#xff0c;是一种以树结构形式表达的预测分析模型。决策树属于监督学习&#xff08;Supervised learning&#xff09;&#xff0c;根据处理数据类型的不同&#xff0c;决策树又为分类决策…

在 Jetpack Compose 中使用 BottomAppBar

简介 Jetpack Compose 是一个现代化的、声明式的 UI 工具包&#xff0c;它使我们能够更方便地构建 Android 的用户界面。本篇文章将介绍如何在 Jetpack Compose 中使用 BottomAppBar 来创建底部应用栏。 什么是 BottomAppBar? BottomAppBar 是一个在屏幕底部的应用栏&#x…

SpringBoot原理分析 | 安全框架:Security

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Security Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架&#xff1b;提供一组可以在Spring应用上下文中配置的Be…

zookeper第二三课-Zookeeper经典应用场景实战

1. Zookeeper Java客户端实战 ZooKeeper应用的开发主要通过Java客户端API去连接和操作ZooKeeper集群。可供选择的Java客户端API有&#xff1a; ZooKeeper官方的Java客户端API。第三方的Java客户端API&#xff0c;比如Curator。 ZooKeeper官方的客户端API提供了基本的操作。例…

干货 | 智能网联汽车大数据基础平台构建研究

以下内容整理自大数据能力提升项目必修课《大数据系统基础》同学们的期末答辩汇报。 各位老师大家上午好&#xff0c;我们组的题目是智能网联汽车大数据基础平台的构建。我们的指导企业是西部智联。我们的汇报将从这五个方面进行展开&#xff0c;第一个方面是项目背景与需求分析…