当前位置: 首页 > news >正文

深入浅出:PHP中的数组操作全解析

文章目录

    • 引言
    • 理解数组
      • 创建数组
        • 使用方括号
        • 使用array()函数
      • 访问数组元素
        • 数值索引数组
        • 关联数组
      • 遍历数组
        • 使用for循环
        • 使用foreach循环
      • 添加和修改数组元素
        • 添加元素
        • 修改元素
      • 删除数组元素
        • 删除单个元素
        • 删除整个数组
      • 多维数组
        • 创建多维数组
        • 访问多维数组元素
    • 常用数组函数
      • 获取数组长度
      • 搜索数组
      • 排序数组
        • 升序排列
        • 降序排列
        • 按键值排序
      • 合并数组
      • 分割数组
      • 转换数组
        • 数组转字符串
        • 字符串转数组
    • 实战案例
    • 总结与展望
    • 参考资料

引言

在编程的世界里,数组是一种非常重要的数据结构。它们允许我们以有序的方式存储多个值,并且可以方便地进行各种操作。本文将带你深入了解PHP中的数组,从基础的创建和访问到高级的操作和实用函数,帮助你掌握如何高效地管理和操作数组。

理解数组

创建数组

在PHP中,创建数组有多种方式。最简单的方法是直接用方括号[]或者array()函数来定义一个数组。

使用方括号

这种方式适合快速初始化简单的数值索引数组。

<?php
$numbers = [1, 2, 3, 4, 5];
?>
使用array()函数

对于更复杂的关联数组或需要指定键的情况,推荐使用array()函数。

<?php
$person = array("name" => "Alice", "age" => 30);
?>

访问数组元素

要访问数组中的元素,可以通过其索引(对于数值索引数组)或键名(对于关联数组)来进行。

数值索引数组

通过数字索引来获取元素。

<?php
$numbers = [10, 20, 30];
echo $numbers[1]; // 输出: 20
?>
关联数组

通过键名来获取对应的值。

<?php
$person = ["name" => "Bob", "age" => 25];
echo $person["name"]; // 输出: Bob
?>

遍历数组

当需要逐个处理数组中的所有元素时,我们可以使用循环结构来遍历数组。

使用for循环

适用于已知数组长度的情况。

<?php
$numbers = [1, 2, 3, 4, 5];
for ($i = 0; $i < count($numbers); $i++) {echo $numbers[$i] . " ";
}
// 输出: 1 2 3 4 5
?>
使用foreach循环

这是遍历数组最简便的方式,尤其是当你不需要知道当前元素的位置时。

<?php
$fruits = ["apple", "banana", "cherry"];
foreach ($fruits as $fruit) {echo $fruit . " ";
}
// 输出: apple banana cherry
?>

对于关联数组,还可以同时获取键名和值。

<?php
$person = ["name" => "Charlie", "age" => 28];
foreach ($person as $key => $value) {echo "$key: $value\n";
}
// 输出:
// name: Charlie
// age: 28
?>

添加和修改数组元素

你可以轻松地向数组中添加新元素或修改现有元素的值。

添加元素

对于数值索引数组,只需直接赋值即可自动追加到末尾;对于关联数组,则需指定键名。

<?php
$numbers = [1, 2, 3];
$numbers[] = 4; // 追加元素
$numbers[5] = 6; // 显式指定索引位置$person = ["name" => "David"];
$person["age"] = 35; // 添加新的键值对
?>
修改元素

直接通过索引或键名重新赋值。

<?php
$numbers = [1, 2, 3];
$numbers[1] = 10; // 修改第二个元素$person = ["name" => "Eve"];
$person["name"] = "Evelyn"; // 修改名称
?>

删除数组元素

有时你需要移除数组中的某些元素,这可以通过unset()函数实现。

删除单个元素

指定要删除的元素的索引或键名。

<?php
$numbers = [1, 2, 3, 4, 5];
unset($numbers[2]); // 删除第三个元素
print_r($numbers);
// 输出: Array ( [0] => 1 [1] => 2 [3] => 4 [4] => 5 )
?>
删除整个数组

如果你不再需要某个数组,可以将其设置为null或使用unset()清除它。

<?php
$person = ["name" => "Frank"];
$person = null; // 清空数组
// 或者
unset($person); // 完全移除
?>

多维数组

多维数组是指数组中的元素本身也是一个数组。它们非常适合表示表格或其他层次化数据结构。

创建多维数组

可以通过嵌套的方式来创建多维数组。

<?php
$matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
];
?>
访问多维数组元素

按照层级依次访问各个维度的索引。

<?php
$matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
];
echo $matrix[1][2]; // 输出: 6
?>

常用数组函数

PHP提供了大量的内置函数来简化数组的操作。下面是一些常用的函数及其用法。

获取数组长度

使用count()函数可以很容易地得到数组中元素的数量。

<?php
$fruits = ["apple", "banana", "cherry"];
echo count($fruits); // 输出: 3
?>

搜索数组

如果你想查找某个特定的值是否存在于数组中,可以使用in_array()函数。

<?php
$fruits = ["apple", "banana", "cherry"];
if (in_array("banana", $fruits)) {echo "Found banana!";
}
?>

排序数组

PHP提供了一系列排序函数,如sort()rsort()asort()等,可以根据不同的需求对数组进行排序。

升序排列

使用sort()函数按升序排列数组。

<?php
$numbers = [3, 1, 4, 1, 5, 9];
sort($numbers);
print_r($numbers);
// 输出: Array ( [0] => 1 [1] => 1 [2] => 3 [3] => 4 [4] => 5 [5] => 9 )
?>
降序排列

使用rsort()函数按降序排列数组。

<?php
$numbers = [3, 1, 4, 1, 5, 9];
rsort($numbers);
print_r($numbers);
// 输出: Array ( [0] => 9 [1] => 5 [2] => 4 [3] => 3 [4] => 1 [5] => 1 )
?>
按键值排序

对于关联数组,可以使用asort()保持原有键名不变的情况下按值排序。

<?php
$ages = ["Alice" => 30, "Bob" => 25, "Charlie" => 35];
asort($ages);
print_r($ages);
// 输出: Array ( [Bob] => 25 [Alice] => 30 [Charlie] => 35 )
?>

合并数组

当需要将两个或更多数组合并成一个新的数组时,可以使用array_merge()函数。

<?php
$array1 = ["a" => "apple", "b" => "banana"];
$array2 = ["c" => "cherry", "d" => "date"];
$mergedArray = array_merge($array1, $array2);
print_r($mergedArray);
// 输出: Array ( [a] => apple [b] => banana [c] => cherry [d] => date )
?>

分割数组

如果想从一个大数组中提取部分元素形成新的数组,可以使用array_slice()函数。

<?php
$fruits = ["apple", "banana", "cherry", "date"];
$slicedFruits = array_slice($fruits, 1, 2);
print_r($slicedFruits);
// 输出: Array ( [0] => banana [1] => cherry )
?>

转换数组

有时候我们需要将数组与其他类型的数据相互转换,例如将数组转换为字符串或将字符串转换为数组。这里介绍几个常见的转换函数。

数组转字符串

使用implode()函数可以将数组元素连接成一个字符串。

<?php
$fruits = ["apple", "banana", "cherry"];
$string = implode(", ", $fruits);
echo $string; // 输出: apple, banana, cherry
?>
字符串转数组

使用explode()函数可以从字符串中分离出多个子串并放入数组中。

<?php
$string = "apple, banana, cherry";
$fruits = explode(", ", $string);
print_r($fruits);
// 输出: Array ( [0] => apple [1] => banana [2] => cherry )
?>

实战案例

为了更好地理解这些概念,下面是一个简单的实战案例,演示如何结合使用不同的数组操作来构建一个基本的Web应用程序。

假设我们要创建一个管理学生信息的应用程序,该应用能够添加、显示和删除学生记录。我们将利用数组来存储和操作这些信息。

<?php
// 初始化学生列表
$students = [];// 添加学生
function addStudent(&$students, $name, $age) {$id = uniqid();$students[$id] = ["name" => $name, "age" => $age];
}// 显示所有学生
function showStudents($students) {foreach ($students as $id => $student) {echo "ID: $id, Name: " . htmlspecialchars($student['name']) . ", Age: " . $student['age'] . "\n";}
}// 删除学生
function deleteStudent(&$students, $id) {if (isset($students[$id])) {unset($students[$id]);echo "Student with ID $id has been deleted.\n";} else {echo "Student with ID $id not found.\n";}
}// 示例操作
addStudent($students, "Alice", 22);
addStudent($students, "Bob", 21);
showStudents($students);deleteStudent($students, key($students));
showStudents($students);
?>

这段代码首先定义了一个空的学生列表,然后提供了三个功能函数:添加学生、显示所有学生以及删除指定ID的学生。最后,通过一些示例操作展示了如何使用这些函数。这里还展示了如何安全地处理用户输入(使用htmlspecialchars防止XSS攻击),这是编写安全PHP代码的重要一环。

总结与展望

通过本文的学习,你应该对PHP中的数组有了更深入的理解。了解这些基础知识不仅有助于编写功能性的代码,还能提高代码的安全性和性能。未来,你可以进一步探索更多高级主题,如面向对象编程、设计模式以及最佳实践等,从而成为一名更加专业的PHP开发者。

参考资料

  • PHP官方文档
  • PHP: The Right Way
  • W3Schools PHP Tutorial
  • MDN Web Docs on PHP
  • Codecademy PHP Course

欢迎在评论区互动,彼此交流相互学习! 😊

相关文章:

深入浅出:PHP中的数组操作全解析

文章目录 引言理解数组创建数组使用方括号使用array()函数 访问数组元素数值索引数组关联数组 遍历数组使用for循环使用foreach循环 添加和修改数组元素添加元素修改元素 删除数组元素删除单个元素删除整个数组 多维数组创建多维数组访问多维数组元素 常用数组函数获取数组长度…...

2024年12月7日历史上的今天大事件早读

1732年12月07日英国皇家大剧院在伦敦开幕 1798年12月07日清代诗人袁枚逝世 1889年12月07日第一个充气轮胎受专利保护 1916年12月07日劳合-乔治出任英国首相 1926年12月07日第一台电冰箱受美国专利保护 1937年12月07日南京保卫战正式打响 1941年12月07日日本偷袭珍珠港 1…...

pymysql模块详解

华子目录 简介安装pymysql连接对象常用方法游标对象常用方法数据库操作查改批量增加删 使用with语句总结 简介 pymysql是一个用于Python编程的第三方模块&#xff0c;用于连接和操作MySQL数据库。它提供了一个简单而强大的接口&#xff0c;使开发者能够轻松地在Python程序中执…...

计算机网络研究实训室建设方案

一、概述 本方案旨在规划并实施一个先进的计算机网络研究实训室&#xff0c;旨在为学生提供一个深入学习、实践和研究网络技术的平台。实训室将集教学、实验、研究于一体&#xff0c;覆盖网络基础、网络架构、网络安全、网络管理等多个领域&#xff0c;以培养具备扎实理论基础…...

WEB安全 PHP学习

PHP基础 PHP编码显示问题 header ("Content-type: text/html; charsetgb2312"); header("Content-Type: text/html;charsetutf-8"); windows需要使用gbk编码显示 源码是 <?php header ("Content-type: text/html; charsetgb2312"); sys…...

Redis高阶之容错切换

当一台主机master宕掉之后&#xff0c;他的从机会取代主机么&#xff1f; 查看集群状态 127.0.0.1:6385> cluster nodes c8ff33e8da5fd8ef821c65974dda304d2e3327f9 192.168.58.129:638216382 slave f6b1fd5e58df90782f602b484c2011d52fc3482d 0 1733220836918 1 connecte…...

构建高效OTA旅游平台的技术指南

1. 引言 在信息技术高速发展的今天&#xff0c;互联网深刻地改变了人们的旅行方式。传统的旅行社模式逐渐被在线旅游平台所取代&#xff0c;OTA&#xff08;Online Travel Agency&#xff0c;在线旅行社&#xff09;旅游平台应运而生&#xff0c;成为人们获取旅游信息、预订旅…...

数据结构 (25)图的存储结构

前言 数据结构中的图是一种用于表示多对多关系的结构&#xff0c;其存储结构主要有两种&#xff1a;邻接矩阵和邻接表。 一、邻接矩阵 定义&#xff1a;邻接矩阵是一个二维数组&#xff0c;用于存储图中各个顶点之间的关系。数组的行和列分别代表图中的顶点&#xff0c;元素的值…...

【C语言】fscanf 和 fprintf函数

【C语言】fscanf 和 fprintf函数 文章目录 [TOC](文章目录) 前言一、定义二、代码例程三、实验结果四、参考文献总结 前言 使用工具&#xff1a; 1.编译器&#xff1a;DEVC 2.C Primer Plus 第六版-1 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一…...

C#调用c++创建的动态链接库dll文件

在C#中调用外部DLL文件是一种常见的编程实践&#xff0c;它具有以下几个重要意义&#xff1a;1.代码重用&#xff1b;2.模块化&#xff1b;3.性能优化&#xff1b;4.安全性&#xff1b;5.跨平台兼容性&#xff1b;6.方便更新和维护&#xff1b;7.利用特定技术或框架&#xff1b…...

【数字电路与逻辑设计】实验一 序列检测器

文章总览&#xff1a;YuanDaiMa2048博客文章总览 【数字电路与逻辑设计】实验一 序列检测器 一、实验内容二、设计过程&#xff08;一&#xff09;作出状态图或状态表&#xff08;二&#xff09;状态化简&#xff08;三&#xff09;状态编码 三、源代码&#xff08;一&#xff…...

沈阳工业大学《2024年827自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《沈阳工业大学827自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题...

Javascript Clipper library, v6(介绍目录)

1.老祖宗C#版的Clipper2 Clipper2库可以对简单和复杂的多边形执行交集、并并、差分和异或布尔运算。它还执行多边形偏移 github地址&#xff1a;GitHub - AngusJohnson/Clipper2: Polygon Clipping and Offsetting - C, C# and Delphi 2.目前的移植版本 基于C#版的移植版本…...

uniapp+vue3+ts请求接口封装

1.安装luch-request yarn add luch-requestnpm install luch-request2.新建文件src/utils/request.ts 需要自己修改config.baseURL和token&#xff08;获取存储的token&#xff09; // import HttpRequest from luch-request; import type { HttpRequestConfig, HttpRespons…...

​‌Spring Boot中的@GetMapping注解可以用于处理HTTP GET请求,并且可以接收对象参数​,详细示例

下面内容来自Ai回答&#xff0c;经过亲自验证&#xff0c;正确 ‌ Spring Boot中的GetMapping注解可以用于处理HTTP GET请求&#xff0c;并且可以接收对象参数。‌ 接收对象参数的基本方式 在Spring Boot中&#xff0c;可以通过GetMapping注解接收对象参数&#xff0c;这通…...

详解Vue设计模式

详解 vue 设计模式 ​ Vue.js 作为一个流行的前端框架&#xff0c;拥有许多设计模式&#xff0c;这些设计模式帮助开发者更好地组织和管理代码&#xff0c;提升代码的可维护性、可扩展性和可读性。Vue 设计模式主要体现在以下几个方面&#xff1a; 1. 组件化设计模式 (Compon…...

webpack 题目

文章目录 webpack 中 chunkHash 和 contentHash 的区别loader和plugin的区别&#xff1f;webpack 处理 image 是用哪个 loader&#xff0c;限制 image 大小的是...&#xff1b;webpack 如何优化打包速度 webpack 中 chunkHash 和 contentHash 的区别 主要从四方面来讲一下区别&…...

Mysql - 存储引擎

一 MYSQL体系结构简介 MYSQL的体系结构可以分为四个层级&#xff0c;从上往下依次为&#xff1a; 1. 连接层: 最上层为客户端以及一些连接服务&#xff0c;包含连接操作&#xff0c;例如JAVA想要与MYSQL建立连接就需要用到JDBC&#xff0c;PHP语言与Python也可以连接到MYSQL&am…...

【实战教程】使用YOLOv8 OBB进行旋转框目标检测的数据集定义与训练【附源码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

怎么实现邮件营销自动化?

邮件营销能够出色地帮助我们与客户建立良好关系。无论是新客户还是老客户&#xff0c;都可以通过邮件来达成较为良好的客户关系。然而&#xff0c;从消费者的角度来看&#xff0c;每个人都有自己独特的习惯和特点&#xff0c;没有人希望收到千篇一律、营销意味过重的邮件。因此…...

华为服务器使用U盘重装系统

一、准备工作 下载官方系统&#xff08;注意服务器CPU的架构是x86-64还是aarch64&#xff0c;不然可能报意想不到的错&#xff09;制作启动U盘&#xff08;下载rufus制作工具&#xff0c;注意文件系统选FAT32还是NTFS&#xff09; 二、安装步骤 将U盘插入USB接口重启服务器…...

空安全编程的典范:Java 8中的安全应用指南

文章目录 一、Base64 编码解码1.1 基本的编码和解码1.2 URL 和文件名安全的编码解码器1.3 MIME Base64编码和解码 二、Optional类三、Nashorn JavaScript 一、Base64 编码解码 1.1 基本的编码和解码 Base64 编码&#xff1a; 使用 Base64.getEncoder().encodeToString(origin…...

深入解析 Loss 减少方式:mean和sum的区别及其在大语言模型中的应用 (中英双语)

深入解析 Loss 减少方式&#xff1a;mean 和 sum 的区别及其在大语言模型中的应用 在训练大语言模型&#xff08;Large Language Models, LLM&#xff09;时&#xff0c;损失函数&#xff08;Loss Function&#xff09;的处理方式对模型的性能和优化过程有显著影响。本文以 re…...

opencv4.8 ubuntu20.04源码编译 安装报错记录

-- IPPICV: Downloading ippicv_2021.8_lnx_intel64_20230330_general.tgz from https://raw.githubusercontent.com/opencv/opencv_3rdparty/1224f78da6684df04397ac0f40c961ed37f79ccb/ippicv/ippicv_2021.8_lnx_intel64_20230330_general.tgz make -j8 到这咋不动了 代理配…...

16-03、JVM系列之:内存与垃圾回收篇(三)

JVM系列之&#xff1a;内存与垃圾回收篇(三) ##本篇内容概述&#xff1a; 1、执行引擎 2、StringTable 3、垃圾回收一、执行引擎 ##一、执行引擎概述 如果想让一个java程序运行起来&#xff0c;执行引擎的任务就是将字节码指令解释/编译为对应平台上的本地机器指令才可以。 简…...

在 Spring Boot 中使用 JPA(Java Persistence API)进行数据库操作

步骤 1: 添加依赖 在 pom.xml 文件中添加相关依赖&#xff1a; <dependencies><!-- Spring Boot Starter Web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><…...

【sqlserver】mssql 批量加载数据文件 bulk copy使用

参考文章&#xff1a; Using bulk copy with the JDBC driver SqlServer数据批量写入 SqlServer批量插入数据方法–SqlBulkCopy sqlserver buld copy需要提供&#xff0c;数据文件的对应表的元数据信息主要的字段的位置、字段的名称、字段的数据类型。 执行bulk load时候不一…...

卷积神经网络(CNN)的层次结构

卷积神经网络&#xff08;CNN&#xff09;是一种以其处理图像和视频数据的能力而闻名的深度学习模型&#xff0c;其基本结构通常包括以下几个层次&#xff0c;每个层次都有其特定的功能和作用&#xff1a; 1. 输入层&#xff08;Input Layer&#xff09;&#xff1a; 卷积神经网…...

使用Excel的COUNTIFS和SUMIFS函数进行高级数据分析

使用Excel的COUNTIFS和SUMIFS函数进行高级数据分析 引言 在处理数据时&#xff0c;Excel 提供了多种内置函数来帮助用户快速获取所需信息。其中&#xff0c;COUNTIFS 和 SUMIFS 是两个非常强大的多条件聚合函数&#xff0c;它们允许你根据一个或多个标准来统计或汇总数据。本…...

上传ssh公钥到目标服务器

创建密钥 ssh-keygen -t rsa -b 4096 -C "xxxx.xx"上传 sudo ssh-copy-id -i /Users/xx/.ssh/id_rsa.pub root127.0.0.1...

在visio2021 中插入MathType公式

首先要确保有着两个软件&#xff0c;且能用。 1、打开visio2021&#xff0c;之后点击“插入”-“对象” 2、打开后&#xff0c;选择MathType&#xff0c;确定 3、确定后就会弹出MathType编辑器...

【计算机视觉】图像的几何变换

最常见的几何变换有仿射变换和单应性变换两种&#xff0c;最常用的仿射变换有缩放、翻转、旋转、平移。 1. 缩放 将图像放大或缩小会得到新的图像&#xff0c;但是多出的像素点如何实现----插值 1.1 插值方法 最近邻插值 双线性插值 cv2.resize() 是 OpenCV 中用于调整图像…...

IS-IS四

目录 点到点中LSP(类似LSA&#xff09;的同步过程 注意LSP只有&#xff08;1类LSA和2类LSA) 查看详细信息&#xff1a;display isis lsdb 0000.0000.0001.00-00 verbose 开摸&#xff1a; ISIS的伪节点LSP&#xff08;类似LSA&#xff09;没有路由信息 L1路由器的路由计算…...

CODA 离线安装及虚幻镜迁移

1、离线安装 1.1 下载Miniconda安装脚本 wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh1.2 添加权限 chmod x Miniconda3-latest-Linux-x86_64.sh1.3 执行安装 ./Miniconda3-latest-Linux-x86_64.sh遇到问题&#xff0c;一路回车即可 1.4 …...

【Rive】混合动画

1 混合动画简介 【Rive】动画 中介绍了 Rive 中动画的基础概念和一般动画的制作流程&#xff0c;本文将介绍混合动画的基础概念和一般制作流程。Unity 中混合动画介绍详见→ 【Unity3D】动画混合。 混合动画是指同一时刻多个动画按照一定比例同时执行&#xff0c;这些动画控制的…...

软件体系结构复习-02 软件体系结构定位及构建

软件体系结构复习-02 软件体系结构定位及构建 原文链接&#xff1a;《软件体系结构复习-02 软件体系结构定位及构建》 目录 软件体系结构复习-02 软件体系结构定位及构建 1 什么是软件体系结构 2 软件生命周期中的软件体系结构 2.1 生命周期 2.2 定位与作用 1 规划和需求…...

MySQL-SQL语句

文章目录 一. SQL语句介绍二. SQL语句分类1. 数据定义语言&#xff1a;简称DDL(Data Definition Language)2. 数据操作语言&#xff1a;简称DML(Data Manipulation Language)3. 数据查询语言&#xff1a;简称DQL(Data Query Language)4. 数据控制语言&#xff1a;简称DCL(Data …...

Windows版Docker上不了网怎么办?

1、判断你的config文件、daemon文件的位置。 docker info命令输入&#xff0c; buildx: Docker Buildx (Docker Inc.) Version: v0.17.1-desktop.1 Path: C:\Users\AAA\.docker\cli-plugins\docker-buildx.exe 这个是你电脑这些文件的位置&#xff0c;修改linu…...

Zabbix监控Oracle 19c数据库完整配置指南

Zabbix监控Oracle 19c数据库完整配置指南 本文将详细介绍如何使用Zabbix配置Oracle 19c数据库监控&#xff0c;包括安装、配置、问题排查等全过程。本指南适合新手独立完成配置。 1. 环境准备 1.1 系统要求 Oracle 19c数据库服务器Zabbix服务器&#xff08;版本5.0或更高&a…...

解决 Maven 部署中的 Artifact 覆盖问题:实战经验分享20241204

&#x1f6e0;️ 解决 Maven 部署中的 Artifact 覆盖问题&#xff1a;实战经验分享 &#x1f4cc; 引言 在软件开发过程中&#xff0c;持续集成和持续部署&#xff08;CI/CD&#xff09;是提高开发效率和代码质量的关键手段。Hudson 和 Maven 是两种广泛使用的工具&#xff0…...

mb108里opengl相关

linux/linuxgdi.cpp里CreateWindowExW的 g_signal_connect(self->m_glArea, "render", G_CALLBACK(onRenderGlTextures), self); 绑定了一个渲染事件回调。 另外有 g_signal_connect(self->m_glArea, "realize", G_CALLBACK(onRealizeGlTextures)…...

使用docker让项目持续开发和部署

大多人选择开发时在本地&#xff0c;部署时文件都在容器里&#xff0c;如果没有容器&#xff0c;那就本地开发&#xff0c;没有映射文件&#xff0c;如果部署环境到容器了&#xff0c;容器内部启动时设置执行命令&#xff0c;再将映射的文件进行编译&#xff0c;这就直接能实现…...

数据结构-查找

数据结构——二叉树先序、中序、后序及层次四种遍历&#xff08;C语言版&#xff09;_中序遍历-CSDN博客...

2030. gitLab A仓同步到B仓

文章目录 1 A 仓库备份 到 B 仓库2 B 仓库修改main分支的权限 1 A 仓库备份 到 B 仓库 #!/bin/bash# 定义变量 REPO_DIR"/home/xhome/opt/git_sync/zz_xx_xx" # 替换为你的本地库A的实际路径 REMOTE_ORIGIN"http://192.168.1.66:8181/zzkj_software/zz_xx_xx.…...

Ubuntu防火墙管理(五)——ufw源规则解读与修改

firewalld与nftables 在 /etc/firewalld/firewalld.conf 文件中&#xff0c;FirewallBackend 选项用于指定 Firewalld 使用的防火墙后端实现。具体来说&#xff1a; nftables&#xff1a;这是当前的默认选项&#xff0c;表示 Firewalld 将使用 nftables 作为防火墙后端。nftab…...

Flink+Paimon实时数据湖仓实践分享

随着 Paimon 近两年的推广普及&#xff0c;使用 FlinkPaimon 构建数据湖仓的实践也越来越多。在 Flink 实时数据开发中&#xff0c;对于依赖大量状态 state 的场景&#xff0c;如长周期的累加指标计算、回撤长历史数据并更新等&#xff0c;使用实时数仓作为中间存储来代替 Flin…...

全面解析DApp开发中的智能合约设计

在DApp的开发过程中&#xff0c;智能合约的设计起到了至关重要的作用。智能合约是运行在区块链上的程序&#xff0c;负责处理和执行DApp中的逻辑、交易和数据存储。下面我们将深入探讨智能合约的设计原则、挑战和优化方法&#xff0c;帮助开发者掌握如何设计高效、安全的智能合…...

强化学习新突破:情节记忆与奖励机制引领多智能体协作

简介 本推文介绍了韩国科学技术院发表在人工智能顶会ICLR 2024上的论文《Efficient Episodic Memory Utilization of Cooperative Multi-Agent Reinforcement Learning》。该论文提出创新性高效情节记忆利用&#xff08;Efficient Episodic Memory Utilization&#xff0c;EMU…...

VUE3学习二

教程视频 【尚硅谷Vue3入门到实战&#xff0c;最新版vue3TypeScript前端开发教程】https://www.bilibili.com/video/BV1Za4y1r7KE?p67&vd_sourcef1bd3b5218c30adf0a002c8c937e0a27 零 环境搭建 学习环境 windows10node 18vue3 创建项目 npm create vuelatest 选项中…...

MySQL Group Replication

参考文档&#xff1a; https://dev.mysql.com/doc/refman/8.4/en/group-replication-configuring-instances.html MySQL版本&#xff1a; mysql> select version(); ----------- | version() | ----------- | 8.4.3 | ----------- 1 row in set (0.00 sec)mysql> …...