网络安全入门学习第十七课——PHP数组

文章目录

  • 一、索引数组
  • 二、关联数组
  • 三、数组定义
    • 1、多维数组
    • 2、赋值方式
    • 3、短数组定义法([ ] PHP 5.4起增加的)
  • 四、访问数组
  • 五、遍历数组
    • 1、使用 for 循环
    • 2、foreach语句遍历
  • 六、合并两个数组
    • 1、“+”联合运算符
    • 2、array_combine 函数
  • 七、数组排序函数
  • 八、数组增删改查
    • 1、增(array_push)
    • 2、删(unset)
    • 3、改(array_replace)
    • 4、查(array_search)
  • 九、数组常用的指针函数
    • 1、指针操作函数
    • 2、数组元素操作函数
    • 3、检索函数
    • 4、字符串与数组转换
      • 4.1、字符串变成数组explode()
      • 4.2、把字符数组变成字符串


一、索引数组

索引数组是指键名为整数的数组。默认情况下,索引数组的键名是从0开始,并依次递增。它主要适用于利用位置(0、1、2……)来标识数组元素的情况。另外,索引数组的键名也可以自己指定。
在这里插入图片描述


二、关联数组

关联数组是指键名为字符串的数组。通常情况下,关联数组元素的“键”和“值”之间有一定的业务逻辑关系。因此,通常使用关联数组存储一系列具有逻辑关系的变量。关联数组的“键”都是字符串,并与“值”之间具有一一对应的关系。
在这里插入图片描述

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

三、数组定义

array() 语言结构法:array()语言结构中的数组元素使用键=>值的方式进行表示,各元素之间使用逗号,进行分割。

$fruits = array('apple', 'grape', 'pear'); // 省略键名
$sports = array(2 => 'basketball', 4 => 'swimming',); // 指定键名

数组在省略键名的设置时,默认从0开始,依次递增加1,因此该数组元素的键名依次为“0、1、2”。

除此之外,还可以根据实际需求自定义数组元素的键名,如上述示例中的$sports数组变量,将其第1个元素键名设置为2,第2个元素的键名设置为4,若无特殊,第3个元素的键名就从5开始。

举例:

<?php
$fruits = array('apple', 'grape', 'pear');
echo $fruits[0];
echo '<hr>';
echo $fruits[1];
echo '<hr>';
echo $fruits[2];
echo '<hr>';
?>

<?php
$sports = array(2 => 'basketball', 4 => 'swimming'); 
echo $sports[2];
echo '<hr>';
echo $sports[4];
echo '<hr>';

$info = array('id' => 10, 'name' => 'Tom', 'tel' => 18810888188);
?>

在定义关联数组时 “键”则有明确的数据类型要求,具体如下:

  • 键只能是整型或字符串型的数据,如果是其他类型,则会执行类型自动转换;
  • 合法整型的字符串会被转为整型,如“2”转为2,而“02”则不会被转换,因为其不是一个合法的十进制数值;
  • 浮点数会被舍去小数部分直接转换成整型,如“2.6”转为2;
  • 布尔类型的true会被转为1,false转为0;
  • NULL类型会被转为空字符串;
  • 若数组中存在相同键名的元素时,后面的元素会覆盖前面元素的值。

在定义数组时,还可以定义没有任何元素的数组,以及既有索引表示方式、又有关联表示方式的数组元素。

$mixed = array(2, 'str', 'id' => 5, 5 => 'b', 'a');
echo $mixed['6'];

$mixed数组的元素“b”指定了数字键名为“5”, “b”元素后的“a”元素会自动将前面最大的数字键名加1后,作为其键名,即5+1得到键名6。

1、多维数组

多维数组是包含一个或多个数组的数组。 在多维数组中,主数组中的每一个元素也可以是一个数组,子数组中的每一个元素也可以是一个数组。 一个数组中的值可以是另一个数组,另一个数组的值也可以是一个数组,依照这种方式,我们可以创建二维或者三维数组。

$data = array(
   0 => array('name' => 'Tom', 'gender' => '男'),
   1 => array('name' => 'Lucy', 'gender' => '女'),
   2 => array('name' => 'Jimmy', 'gender' => '男')
);
print_r($data[0]); //输出第一个元素
print_r($data[1]);

2、赋值方式

使用赋值方式定义数组,实际上就是创建一个数组变量,然后使用赋值运算符直接给变量赋值。

<?php
$arr[] = 123; //没有写下标自动索引+1赋值 arr[0] // 存储结果:$arr[0] = 123
$arr[] = 'hello'; //这里就赋值arr[1] // 存储结果:$arr[1] = 'hello'
$arr[4] = 'PHP'; // 存储结果:$arr[4] = 'PHP'
$arr['name'] = 'Tom'; // 存储结果:$arr['name'] = 'Tom'
$arr[] = 'Java'; // 存储结果:$arr[5] = 'Java'
print_r($arr);
?> 
输出结果:
echo 'body -html' Array ( [0] => 123 [1] => hello [4] => PHP [name] => Tom [5] => Java )

赋值方式定义数组就是单独为数组元素赋值。需要注意的是,赋值方式不能定义一个空数组。

3、短数组定义法([ ] PHP 5.4起增加的)

短数组定义法 [ ] 与array()语法结构相同,只需将array()替换为[ ]即可

//创建一个空数组
$arr = array();
var_dump( $arr );
$arrs = [];
var_dump( $arrs );

更详细例子:
// 相当于:array('id' => 12, 'name' => 'PHP')
$object = ['id' => 12, 'name' => 'PHP'];
//相当于:array(array(1, 3), array(2, 4))
执行结果:
echo 'body -html' Array ( [id] => 12 [name] => PHP ) Array ( [id] => 12 [name] => PHP )

四、访问数组

数组定义完成后,若想要查看数组中某个具体的元素,则可以通过“数组名[键]”的方式获取。

$sub = ['PHP', 'Java', 'C', 'Android'];
$data = ['goods' => 'clothes', 'num' => 49.90, 'sales' => 500];
echo $sub[1];		// 输出结果:Java
echo $sub[3];		// 输出结果:Android
echo $data['goods'];	// 输出结果:clothes
echo $data['sales'];	// 输出结果:500

另外,若要一次查看数组中的所有元素,则可以利用前面学习过的输出语句函数print_r()var_dump(),并且通常情况下为了使输出的函数按照一定的格式打印,查看时经常与pre标记一起使用。

使用echo打印数据只会打印arr不会把arr数组里的值打印出来

注意:<pre></pre>标签加上print_r( )函数格式化输出:

$arr = [
   '纯净水',
   '矿泉水',
   '苏打水',
];
print_r($arr)
echo '<pre>';
print_r($arr); // print_r()函数打印数组变量$arr 
echo '</pre>';

五、遍历数组

1、使用 for 循环

<?php
$cars=array("Volvo","BMW","Toyota");
$arrlength=count($cars);

for($x=0;$x<$arrlength;$x++)
{
   echo $cars[$x];
   echo "<br>";
}
?>

2、foreach语句遍历

如果是遍历无顺序的数组,由于数组中的键没有规律可循,所以可以使用foreach循环语句,foreach仅用于数组,有两种语法。格式如下:

第一种格式:
foreach ($array as $value){循环体}
第二种格式:
foreach($array as $key => $value){循环体}

$array表示数组 as $key表示键 $value表示值
  • 第一种格式会循环遍历给定的 数组。每次循环中,当前数组元素的值被赋给 $value,下一次循环中将会得到下一个数组元素,直到遍历到数组的末尾,停止遍历并退出循环。
  • 第二种格式功能与第一种相同,只是除了当前数组元素的键名也会在每次循环中被赋给变量 $key。

举例:

<?php
$h=array("可乐","雪碧","柠檬茶");

foreach($h as $value){
	echo "$value <br>";
}
?>

不仅前面讲解的标量数据类型可以进行比较运算,数组这种复合数据类型也可以进行运算,不过数组有其专门提供的数组操作符进行对应的运算。


六、合并两个数组

1、“+”联合运算符

“+”为联合运算符,用于合并数组,如果出现下标相同的元素,则保留第1个数组内的元素。

$num = [2, 4];
$alp = ['a', 'b', 'c'];
$mer1 = $num + $alp;  // [2, 4] + ['a', 'b', 'c'];
$mer2 = $alp + $num;
print_r($mer1); // 输出结果:Array ( [0] => 2 [1] => 4 [2] => c )
echo '<hr>'; 
print_r($mer2); // 输出结果:Array ( [0] => a [1] => b [2] => c )

2、array_combine 函数

array_combine 函数,通过合并两个数组来创建一个新数组,其中的一个数组是键名另一个数组的值为键值

<?php
   $a=['id','name','email','age'];
   $b=['1','小马','253166555@qq.com','20'];
   $c=array_combine($a,$b);
   print_r($c);
?>

七、数组排序函数

对于数组的排序,除了可使用前面讲解的排序算法实现外,PHP还提供了内置的数组排序函数,可以轻松对数组实现排序、逆向排序、按键名排序等操作。

函数名称功能描述
sort()对数组排序(从低到高)
rsort()对数组逆向排序(从高到低) reverse
asort()对数组进行排序并保持键值关系
ksort()对数组按照键名排序
arsort()对数组进行逆向排序并保持键值关系
krsort()对数组按照键名逆向排序
shuffle()将数组元素顺序打乱
array_multisort()对多个数组或多维数组进行排序

八、数组增删改查

1、增(array_push)

php增加数组元素的方法是:可以通过array_push()函数来实现。该函数可以向数组尾部插入一个或多个元素,并返回新数组的元素个数。
函数语法:【array_push(array, value)】

函数介绍:array_push() 函数向数组尾部插入一个或多个元素。该函数返回新数组的元素个数。
函数语法: array_push(array,value1,value2…)

array必须,规定一个数组;value1必须,规定要添加的值;value2可选,规定要添加的值;

举例:

<?php
$a=array("red","green");
array_push($a,"blue","yellow");
print_r($a);
?>

2、删(unset)

在数组定义完成后,有时也需要根据实际情况去除数组的某个元素。

例如,一个保存全班学生信息的多维数组,若这个班级中有一个学生转学了,那么在这个班级学生信息管理中就需要删除此学生。此时,可以使用PHP提供的unset()函数完成数据的删除。

数组删除:

<?php
$array = array(0 => "a", 1 => "b", 2 => "c");
unset($array[1]);		//你要删除的数组元素值的键
print_r($array);

unset ($bar['quux']);	// 销毁单个数组元素
?>

3、改(array_replace)

array_replace() 函数使用后面数组的值替换第一个数组的值。

<?php 
$a1=array("red","green");
$a2=array("blue","yellow");
var_dump($a1);
echo '<br>';
var_dump(array_replace($a1,$a2));
?>

使用修下标改数组

<?php 
$arr=array(11,22,33,44);
$arr[0]=66;  //数组变为$arr=array(66,22,33,44);;
print_r($arr);
?>

4、查(array_search)

顺序查找法是最简单的查找法,只需按照数组中元素的保存顺序,利用待查的值与数组中的元素从前往后一个一个的进行比较,直到找到目标值或查找失败。

array_search() 函数在数组中搜索某个键值,并返回对应的键名。

<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_search("red",$a);
?>

九、数组常用的指针函数

数组指针:用于指向数组中的某个元素,默认情况下,指向数组的第1个元素。通过移动或改变指针的位置,可以访问数组中的任意元素。

函数名称功能描述
current()获取数组中当前指针指向的元素的值
key()获取数组中当前指针指向的元素的键
next()将数组中的内部指针向前移动一位
prev()将数组中的内部指针倒回一位
each()获取数组中当前的键值对并将数组指针向前移动一步
end()将数组的内部指针指向最后一个元素
reset()将数组的内部指针指向第一个元素

1、指针操作函数

<?php
$arr=['a','b','c','d','e','f'];
//刚开始指针指向a
echo key($arr) . ' - ' . current($arr); //0 -a // 获取当前指针指向的键和值:0 - a
echo ''.PHP_EOL;

next($arr);
echo key($arr) . ' - ' . current($arr); //1-b
echo ''.PHP_EOL;

next($arr);
echo key($arr) . ' - ' . current($arr); //2-c
echo ''.PHP_EOL;

prev($arr); //回退一个
echo key($arr) . ' - ' . current($arr); //1-b
echo ''.PHP_EOL;

reset($arr); //复位
echo key($arr) . ' - ' . current($arr); //0-a
echo ''.PHP_EOL;

echo end($arr);
echo key($arr) . ' - ' . current($arr); //5-f
echo ''.PHP_EOL;
?>

输出结果:
0 - a
1 - b
2 - c
1 - b
0 - a
f5 - f

2、数组元素操作函数

在操作数组过程中,经常会遇到在数组的前面或后面添加或删除元素的情况。

函数名称功能描述
array_pop()将数组最后一个元素弹出(出栈)
array_push()将一个或多个元素压入数组的末尾(入栈)//在末尾插入元素
array_unshift()在数组开头插入一个或多个元素 //在开头
array_shift()将数组开头的元素移出数组
array_unique()移除数组中重复的值
array_slice()从数组中截取部分数组
array_splice()将数组中的一部分元素去掉并用其他值取代

举例:

$arr = ['puff', 'Tiramisu'];

array_pop($arr);          // 移出数组最后一个元素
print_r($arr);          // 输出结果:Array ( [0] => puff ) 

array_push($arr, 'cookie'); // 在数组末尾添加元素
print_r($arr);          // 输出结果:Array ( [0] => puff [1] => cookie ) 

array_unshift($arr, 22, 33);// 在数组开头插入多个元素
print_r($arr);          // 输出结果: Array ( [0] => 22 [1] => 33 [2] => puff [3] => cookie ) 

array_shift($arr);                 // 移出数组第一个元素
print_r($arr);          // 输出结果:Array ( [0] => 33 [1] => puff [2] => cookie )

3、检索函数

数组中元素的查找,除了前面讲解的查找算法外,PHP还为其提供了内置函数。

函数名称功能描述
in_array()检查数组中是否存在某个值,注意搜索的是value不是key
array_search()在数组中搜索给定的值,如果成功则返回相应的键名,搜索的是value
array_key_exists()检查给定的键名是否存在于数组中,这里才是搜索的是key
  • in_array()array_key_exists()函数的返回值类型均为布尔型,检测的数据存在返回true,否则返回false。

  • 函数array_search()返回值则是查找的“值”对应的键名。检索函数返回值类型对程序开发中的判断起着重要的作用。

除了前面提到的几种类型外,PHP还提供了很多其他常用的数组函数。如建立指定范围的数组,获取数组中所有元素的值或键名等。

函数名称功能描述
count()计算数组中的元素数目或对象中的属性个数
range()建立一个包含指定范围元素的数组
array_rand()从数组中随机取出一个或多个元素
array_keys()获取数组中部分的或所有的键名
array_values()获取数组中所有的值
array_column()获取数组中指定的一列
array_sum()计算数组中所有值的和
array_reverse()返回一个元素顺序相反的数组
函数名称功能描述
array_merge()合并一个或多个数组
array_flip()交换数组中的键和值
array_combine()创建数组,用一个数组的值作为其键名,另一个数组的值作为其值
array_chunk()将一个数组分割成多个
array_fill()用给定的值填充数组
array_replace()使用传递的数组替换第一个数组的元素
array_map()为数组中的每个元素应用回调函数
array_walk()使用自定义函数对数组中的每个元素做回调处理

4、字符串与数组转换

4.1、字符串变成数组explode()

字符串 ‘abc’ 可以认为是字符数组[‘a’,‘b’,‘c’]

PHP提供的explode()函数用于根据指定字符对字符串进行分割

explode()函数的返回值类型是数组类型

  • 第1个参数表示分隔符
  • 第2个参数表示要分割的字符串
  • 第3个参数是可选的。规定所返回的数组元素的数目。

limit的可能的值:

  • 大于 0 - 返回包含最多 limit 个元素的数组
  • 小于 0 - 返回包含除了最后的 -limit 个元素以外的所有元素的数组(如果是-2,从后面开始数去掉最后两个元素,把其余元素返回)
  • 0 - 会被当做 1, 返回包含一个元素的数组

举例:

// 字符串分割成数组
echo '>>>>';
var_dump(explode('n', 'banana'));
输出结果:
array(3) { [0]=> string(2) "ba" [1]=> string(1) "a" [2]=> string(1) "a" } 

// 分割时限制次数
echo '>>>>';
var_dump(explode('n', 'banana', 2));
输出结果:
array(2) { [0]=> string(2) "ba" [1]=> string(3) "ana" } 

// 返回除了最后2个元素外的所有元素
echo '>>>>';
var_dump(explode('n', 'banana', 0));
输出结果:
array(1) { [0]=> string(6) "banana" }

// 返回除了最后1个元素外的所有元素
echo '>>>>';
var_dump(explode('n', 'banana', -1)); 
输出结果:
array(2) { [0]=> string(2) "ba" [1]=> string(1) "a" }

// 返回除了最后2个元素外的所有元素
echo '>>>>';
var_dump(explode('n', 'banana', -2)); //ba 
输出结果:
array(1) { [0]=> string(2) "ba" }

4.2、把字符数组变成字符串

PHP提供的implode()函数用于利用指定字符将一维数组内的元素值连接成字符串

  • implode()函数的返回值类型为字符串型
  • 第1个参数表示连接字符串
  • 第2个参数表示待转换的数组。其中,不论指定字符是否存在,只要第2个参数是空数组,结果都为空字符串。

值得一提的是,由于历史原因,该函数的第1个参数可以省略。

举例:

<?php
//['a', 'b', 'c'] abc a-b-c
// ① 利用指定字符连接一维数组元素的值
echo implode('-', ['a', 'b', 'c']); // 输出结果:a-b-c
echo PHP_EOL;
echo implode(',', ['a' => 1, 'b' => 2]); // 输出结果:1,2
// ② 省略指定字符
echo PHP_EOL;
echo implode(['a', 'b', 'c']); // 输出结果:abc
// ③ 利用指定字符连接一个空数组
echo PHP_EOL;
var_dump(implode('it', [])); // 输出结果:string(0) ""
?>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

低成本开发专属小程序支持自定义开发设计

传统定制开发小程序成本高&#xff0c;还需要不断地沟通和交流才能一步步地去实现你想要的功能和效果&#xff0c;那么除了传统的定制开发小程序外&#xff0c;用户其实还可以选择使用模板开发小程序&#xff0c;不仅能实现小程序的所有基础功能&#xff0c;还不用编程维护和开…

基于html+css的图展示128

准备项目 项目开发工具 Visual Studio Code 1.44.2 版本: 1.44.2 提交: ff915844119ce9485abfe8aa9076ec76b5300ddd 日期: 2020-04-16T16:36:23.138Z Electron: 7.1.11 Chrome: 78.0.3904.130 Node.js: 12.8.1 V8: 7.8.279.23-electron.0 OS: Windows_NT x64 10.0.19044 项目…

Rust语言从入门到入坑——(3)小谈Cargo工具以及VScode配置Rust

文章目录 0 引入1、Cargo 是什么2、常用Cargo指令3、VScode配置Rust环境3.1.tasks.json3.2.launch.json 4、总结 0 引入 上一节我们谈了在编译工程的时候用到Cargo&#xff08;卡狗&#xff09; 1、Cargo 是什么 Cargo 是 Rust 的构建系统和包管理器。 Rust 开发者常用 Carg…

AI翻唱整合

感谢阅读 不完全原创声明环境部署下载工具包安装人声背景音分离工具分离消除脏数据&#xff08;比如杂音&#xff09;准备自己的声音预处理完工效果参考 不完全原创声明 本人使用了多个第三方软件&#xff0c;并修改了一部分代码使得其可以在PC上训练&#xff0c;如有侵权请联…

《项目实战》构建SpringCloud alibaba项目

文章目录 1、概要2、整体架构流程2.1、技术结构组成部分 3、技术名词解释4、技术细节4.1、构建父工程4.1.1、选择构建Maven项目4.1.2、修改父工程文件4.1.3、修改父工程pom.xml配置4.1.3.1、添加springboot支持4.1.3.2、修改JDK版本、编码、springboot版本配置4.1.3.3、添加Spr…

完美解决 RabbitMQ 可视化界面中 Overview 不显示图形的问题

&#x1f4a7; 记录一下今天遇到的 b u g \color{#FF1493}{记录一下今天遇到的bug} 记录一下今天遇到的bug&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 数据结构与算法…

拷贝构造函数

拷贝构造函数 以值传递的方式调用函数时&#xff0c;如果实参为对象&#xff0c;会调用拷贝构造函数。函数以值的方式返回对象时&#xff0c;可能会调用拷贝构造函数&#xff08;VS会调用&#xff0c;Linux不会&#xff0c;g编译器做了优化&#xff09;浅拷贝存在的问题 类似于…

反射---getattr,hasattr,setattr,delattr加插播enumerate

什么是反射&#xff1f; 用字符串数据类型的变量名来访问这个变量的值 反射的方法&#xff1a;getattr&#xff0c;hasattr&#xff0c;setattr&#xff0c;delattr 类&#xff1a;(通过类名反射类名空间里面的内容的) 类&#xff1a;静态属性&#xff0c;类方法&#xff0c;静…

【python】flask+pymysql 实现Web端操作数据库!

Flask是一个使用 Python 编写的轻量级 Web 应用框架。其 WSGI 工具箱采用 Werkzeug &#xff0c;模板引擎则使用 Jinja2 。Flask使用 BSD 授权。 Flask也被称为 “microframework” &#xff0c;因为它使用简单的核心&#xff0c;用 extension 增加其他功能。Flask没有默认使用…

Qt5.15.10+msvc2019_x86+qwebengine(含mp4)源码编译

系统要求: win10 64bit 英文版(或者把“区域”->“管理”->“非Unicode程序中所使用的当前语言”->改为"英语(美国)") 内存16g够用,cpu性能越高越好,硬盘在安装环境、下载源码后,至少还有100g可用空间 下载源码: https://download.qt.io/archiv…

大话设计模式之——单例模式

单例&#xff08;Singleton&#xff09; Intent 确保一个类只有一个实例&#xff0c;并提供该实例的全局访问点。 Class Diagram 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。 私有构造函数保证了不能通过构造函数来创建对象实例&#xff0c;只能…

Python零基础入门(二)——IDE介绍以及Python+PyCharm的安装

系列文章目录 个人简介&#xff1a;机电专业在读研究生&#xff0c;CSDN内容合伙人&#xff0c;博主个人首页 Python入门专栏&#xff1a;《Python入门》欢迎阅读&#xff0c;一起进步&#xff01;&#x1f31f;&#x1f31f;&#x1f31f; 码字不易&#xff0c;如果觉得文章不…

路径规划算法:基于适应度相关优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于适应度相关优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于适应度相关优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能…

Unity基础4——LineRenderer

一、参数面板 二、参数介绍 Loop&#xff1a;是否首尾相连 Positions&#xff1a;线段的点 Width&#xff1a;线段宽度曲线的调整 Color&#xff1a;颜色变化 需要搭配材质才有效果 Corner Vertices&#xff1a;角顶点、圆角 此属性指&#xff0c;在一条线中绘制角时使用了…

一文读懂功率信号源(信号发生器)

功率信号源是一种用于产生高功率信号的电子设备&#xff0c;它广泛应用于各个领域&#xff0c;在生产、测试和调试中起着重要的作用。下面就让安泰将介绍功率信号源的基本概念、工作原理、分类以及应用。 功率信号源是一种能够产生稳定输出功率的设备。它通常由一个稳压电源和一…

红帽认证常见答疑(二):电脑配置、实验环境和考试环境、可以自学吗

学习红帽需要配置什么样的电脑&#xff1f; RHCE推荐学员自己的电脑内存在16G左右&#xff0c;RHCA推荐学员电脑内存在32-64G&#xff0c;且最好配置128G以上的固态硬盘&#xff0c;如果自己没有该配置的电脑&#xff0c;誉天可以提供远程学习环境&#xff0c;可以随时随地连接…

Java实现的五子棋游戏 ~java.awtjava.swing

文章目录 Java实现的五子棋游戏1.实现效果2.实现源码2.1运行主函数main.java2.2 棋盘布局Chessboard.java3.Algorithm算法 点击下载链接&#xff1a;Java实现的五子棋游戏源码下载 Java实现的五子棋游戏 作业要求&#xff1a; &#xff08;1&#xff09;课题代号&#xff1a; …

【裸机开发】使用汇编清除 .bss 段

目录 1、为什么要清除 .bss 段 2、使用汇编清除 .bss 段 1、为什么要清除 .bss 段 .bss 段保存的是 未被初始化 或者 初始化为0 的全局/静态变量。在编译器看来&#xff0c;这些东西是多余的&#xff0c;实际并不会给他们分配空间。因此&#xff0c;编译生成目标文件的时候&…

提升安全性与合规性的关键工具ADAudit Plus

在当今数字化时代&#xff0c;企业对于安全性和合规性的要求越来越高。特别是在Active Directory&#xff08;AD&#xff09;域中&#xff0c;作为组织的核心身份验证和访问管理系统&#xff0c;审计活动的重要性变得前所未有。为了满足这一需求&#xff0c;ADAudit Plus成为了…

A Survey of Large Language Models

本文是LLM系列的第一篇文章&#xff0c;针对《A Survey of Large Language Models》的翻译。 大语言模型综述 摘要1 引言2 概述2.1 LLM的背景2.2 GPT系列模型 的技术演化 3 LLMs的资源3.1 公开可用的模型检查点或APIs3.2 常用的语料库3.3 库资源 4 预训练4.1 数据收集4.1.1 数…