深入浅出:PHP函数的定义与使用
文章目录
- 前言
- 什么是函数
- 定义函数
- 语法
- 示例
- 调用函数
- 示例
- 参数传递
- 按值传递
- 示例
- 按引用传递
- 示例
- 默认参数
- 示例
- 可变数量的参数
- 示例
- 返回值
- 示例
- 变量作用域
- 全局作用域
- 示例
- 局部作用域
- 示例
- 静态作用域
- 示例
- 匿名函数
- 示例
- 闭包
- 示例
- 递归函数
- 示例
- 内置函数
- 常见内置函数
- 示例
- 用户自定义函数
- 示例
- 函数的高级用法
- 回调函数
- 示例
- 箭头函数
- 示例
- 错误处理
- 示例
- 综合案例
- 场景描述
- 代码示例
- 总结
- 参考资料
前言
在编程中,函数是代码组织和重用的基本构建块。它们使得我们可以将一组相关的操作封装在一起,从而提高代码的可读性和维护性。对于初学者来说,理解如何定义和使用函数是非常重要的。本文将带你深入了解PHP中的函数,从基本概念到高级用法,并通过具体例子帮助你更好地掌握这些技能。
什么是函数
函数是一段可以重复使用的代码块,用于执行特定的任务。它可以接受输入(参数),执行一系列操作,并返回结果(返回值)。函数的主要优点是可以减少代码重复,提高代码的模块化和可维护性。
定义函数
在PHP中,使用function
关键字来定义一个函数。函数定义的基本语法如下:
语法
function functionName($parameter1, $parameter2, ...) {// 函数体
}
示例
下面我们定义一个简单的函数,用于计算两个数的和:
<?php
function add($a, $b) {return $a + $b;
}echo "5 + 3 = " . add(5, 3); // 输出: 5 + 3 = 8
?>
调用函数
定义好函数后,我们可以通过函数名来调用它。调用函数时,需要提供所需的参数(如果有),并接收返回值(如果有)。
示例
下面我们调用上面定义的add
函数,并输出结果:
<?php
$result = add(10, 7);
echo "10 + 7 = " . $result; // 输出: 10 + 7 = 17
?>
参数传递
函数可以接受多个参数,参数之间用逗号分隔。参数可以是任何合法的PHP数据类型,如整数、字符串、数组等。
按值传递
默认情况下,PHP按值传递参数。这意味着函数内部对参数的修改不会影响外部的变量。
示例
<?php
function modifyValue($x) {$x = $x * 2;echo "函数内部: " . $x . "\n";
}$number = 5;
modifyValue($number);
echo "函数外部: " . $number . "\n"; // 输出: 函数外部: 5
?>
按引用传递
有时我们希望函数能够修改外部变量的值,这时可以使用按引用传递参数。在参数前加上&
符号即可。
示例
<?php
function modifyReference(&$x) {$x = $x * 2;echo "函数内部: " . $x . "\n";
}$number = 5;
modifyReference($number);
echo "函数外部: " . $number . "\n"; // 输出: 函数外部: 10
?>
默认参数
PHP允许为函数参数指定默认值。如果调用函数时没有提供某个参数,则使用默认值。
示例
<?php
function greet($name = "Guest") {echo "Hello, " . $name . "!\n";
}greet(); // 输出: Hello, Guest!
greet("Alice"); // 输出: Hello, Alice!
?>
可变数量的参数
PHP支持可变数量的参数。可以使用func_num_args()
、func_get_arg()
和func_get_args()
函数来处理不定数量的参数。
示例
<?php
function sum() {$sum = 0;for ($i = 0; $i < func_num_args(); $i++) {$sum += func_get_arg($i);}return $sum;
}echo "Sum: " . sum(1, 2, 3, 4, 5); // 输出: Sum: 15
?>
返回值
函数可以使用return
语句返回一个值。返回值可以是任何合法的PHP数据类型,如整数、字符串、数组等。如果没有显式返回值,默认返回null
。
示例
下面我们定义一个返回字符串的函数:
<?php
function getGreeting($name) {return "Hello, " . $name . "!";
}echo getGreeting("Bob"); // 输出: Hello, Bob!
?>
变量作用域
变量的作用域决定了它在哪些地方可以被访问。PHP中有三种主要的作用域:全局作用域、局部作用域和静态作用域。
全局作用域
全局变量可以在函数外部的任何地方访问。要在函数内部访问全局变量,可以使用global
关键字或$GLOBALS
数组。
示例
<?php
$x = 10;function printGlobal() {global $x;echo "全局变量 x: " . $x . "\n";
}printGlobal(); // 输出: 全局变量 x: 10
?>
局部作用域
局部变量只能在函数内部访问。函数执行完毕后,局部变量会被销毁。
示例
<?php
function printLocal() {$y = 20;echo "局部变量 y: " . $y . "\n";
}printLocal(); // 输出: 局部变量 y: 20
echo $y; // 报错: Undefined variable $y
?>
静态作用域
静态变量在函数第一次执行时初始化,并在后续调用中保留其值。可以使用static
关键字声明静态变量。
示例
<?php
function counter() {static $count = 0;$count++;echo "计数: " . $count . "\n";
}counter(); // 输出: 计数: 1
counter(); // 输出: 计数: 2
counter(); // 输出: 计数: 3
?>
匿名函数
匿名函数是没有名称的函数,通常用于作为回调函数或闭包。可以将匿名函数赋值给变量或直接传递给其他函数。
示例
<?php
$greet = function($name) {echo "Hello, " . $name . "!\n";
};$greet("Alice"); // 输出: Hello, Alice!
?>
闭包
闭包是一种特殊的匿名函数,它可以捕获并保存其定义时所在的作用域中的变量。闭包可以使用use
关键字来引入外部变量。
示例
<?php
$message = "Welcome to our website";$greet = function($name) use ($message) {echo $message . ", " . $name . "!\n";
};$greet("Bob"); // 输出: Welcome to our website, Bob!
?>
递归函数
递归函数是指在其定义中调用自身的函数。递归函数通常用于解决可以分解为更小子问题的问题,如阶乘、斐波那契数列等。
示例
下面我们定义一个计算阶乘的递归函数:
<?php
function factorial($n) {if ($n == 0 || $n == 1) {return 1;} else {return $n * factorial($n - 1);}
}echo "5! = " . factorial(5); // 输出: 5! = 120
?>
内置函数
PHP提供了大量内置函数,涵盖了字符串处理、数组操作、文件系统、日期时间等各种功能。熟悉这些内置函数可以帮助我们更高效地编写代码。
常见内置函数
strlen()
:获取字符串长度str_replace()
:替换字符串中的某些字符array_push()
:向数组末尾添加一个或多个元素file_get_contents()
:读取文件内容date()
:格式化当前日期/时间
示例
<?php
$string = "Hello, World!";
echo "字符串长度: " . strlen($string) . "\n"; // 输出: 字符串长度: 13$newString = str_replace("World", "PHP", $string);
echo $newString . "\n"; // 输出: Hello, PHP!$array = [1, 2, 3];
array_push($array, 4, 5);
print_r($array); // 输出: Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )$fileContent = file_get_contents("example.txt");
echo "文件内容: " . $fileContent . "\n";echo "当前日期: " . date("Y-m-d") . "\n"; // 输出: 当前日期: 2024-12-05
?>
用户自定义函数
除了使用内置函数外,我们还可以根据需求定义自己的函数。用户自定义函数可以包含任意复杂的逻辑,帮助我们实现特定的功能。
示例
下面我们定义一个计算圆面积的函数:
<?php
function calculateCircleArea($radius) {$pi = 3.14159;return $pi * pow($radius, 2);
}$radius = 5;
$area = calculateCircleArea($radius);
echo "半径为 " . $radius . " 的圆的面积是: " . $area; // 输出: 半径为 5 的圆的面积是: 78.53975
?>
函数的高级用法
PHP函数不仅限于基本的定义和调用,还支持一些高级用法,如回调函数、闭包、箭头函数等。
回调函数
回调函数是指作为参数传递给另一个函数的函数。当某个事件发生时,回调函数会被调用。
示例
<?php
function applyOperation($a, $b, $operation) {return $operation($a, $b);
}$add = function($x, $y) {return $x + $y;
};$subtract = function($x, $y) {return $x - $y;
};echo "5 + 3 = " . applyOperation(5, 3, $add) . "\n"; // 输出: 5 + 3 = 8
echo "5 - 3 = " . applyOperation(5, 3, $subtract) . "\n"; // 输出: 5 - 3 = 2
?>
箭头函数
箭头函数是PHP 7.4引入的一种简洁的匿名函数写法。它们使用=>
符号来表示函数体。
示例
<?php
$double = fn($x) => $x * 2;echo "Double of 5 is " . $double(5); // 输出: Double of 5 is 10
?>
错误处理
在函数中处理错误是非常重要的。PHP提供了多种错误处理机制,如try...catch
、throw
、finally
等。
示例
下面我们定义一个可能抛出异常的函数,并使用try...catch
进行错误处理:
<?php
function divide($a, $b) {if ($b == 0) {throw new Exception("除数不能为零");}return $a / $b;
}try {echo "10 / 2 = " . divide(10, 2) . "\n"; // 输出: 10 / 2 = 5echo "10 / 0 = " . divide(10, 0) . "\n"; // 抛出异常
} catch (Exception $e) {echo "错误: " . $e->getMessage() . "\n"; // 输出: 错误: 除数不能为零
} finally {echo "无论是否发生异常,都会执行此代码\n";
}
?>
综合案例
为了更好地理解PHP函数的定义和使用,下面给出一个综合案例,展示了如何在一个实际场景中应用不同的函数特性。
场景描述
假设我们正在开发一个学生管理系统,需要实现以下功能:
- 添加学生信息
- 查找学生信息
- 删除学生信息
- 修改学生信息
- 显示所有学生信息
我们将使用函数来实现这些功能,并通过用户输入来交互。
代码示例
<?php
// 存储学生信息的数组
$students = [];// 添加学生信息
function addStudent($id, $name, $age) {global $students;$students[$id] = ['name' => $name,'age' => $age];echo "学生信息已添加\n";
}// 查找学生信息
function findStudent($id) {global $students;if (isset($students[$id])) {return $students[$id];} else {return null;}
}// 删除学生信息
function deleteStudent($id) {global $students;if (isset($students[$id])) {unset($students[$id]);echo "学生信息已删除\n";} else {echo "找不到该学生信息\n";}
}// 修改学生信息
function updateStudent($id, $name, $age) {global $students;if (isset($students[$id])) {$students[$id]['name'] = $name;$students[$id]['age'] = $age;echo "学生信息已更新\n";} else {echo "找不到该学生信息\n";}
}// 显示所有学生信息
function showAllStudents() {global $students;if (empty($students)) {echo "没有学生信息\n";} else {foreach ($students as $id => $student) {echo "ID: " . $id . ", Name: " . $student['name'] . ", Age: " . $student['age'] . "\n";}}
}// 用户交互
while (true) {echo "请选择操作: \n";echo "1. 添加学生信息\n";echo "2. 查找学生信息\n";echo "3. 删除学生信息\n";echo "4. 修改学生信息\n";echo "5. 显示所有学生信息\n";echo "6. 退出\n";$choice = readline("请输入选项: ");switch ($choice) {case '1':$id = readline("请输入学生ID: ");$name = readline("请输入学生姓名: ");$age = readline("请输入学生年龄: ");addStudent($id, $name, $age);break;case '2':$id = readline("请输入学生ID: ");$student = findStudent($id);if ($student) {echo "ID: " . $id . ", Name: " . $student['name'] . ", Age: " . $student['age'] . "\n";} else {echo "找不到该学生信息\n";}break;case '3':$id = readline("请输入学生ID: ");deleteStudent($id);break;case '4':$id = readline("请输入学生ID: ");$name = readline("请输入新的学生姓名: ");$age = readline("请输入新的学生年龄: ");updateStudent($id, $name, $age);break;case '5':showAllStudents();break;case '6':echo "再见!\n";exit;default:echo "无效选项,请重新选择\n";}
}
?>
总结
本文详细介绍了PHP中函数的定义和使用,包括函数的基本概念、参数传递、返回值、变量作用域、匿名函数、递归函数、内置函数、用户自定义函数、函数的高级用法以及错误处理。通过对每个知识点的解释和示例演示,希望你能更加熟练地运用这些工具,写出更加高效和清晰的代码。此外,通过综合案例展示了如何在实际项目中应用所学知识。
参考资料
- PHP官方文档 - 函数
- PHP: 函数参考手册
- W3Schools PHP 函数教程
- PHP中文网 - PHP函数详解
- 菜鸟教程 - PHP函数
欢迎在评论区互动,彼此交流相互学习! 😊
相关文章:
深入浅出:PHP函数的定义与使用
文章目录 前言什么是函数定义函数语法示例 调用函数示例 参数传递按值传递示例按引用传递示例默认参数示例可变数量的参数示例 返回值示例 变量作用域全局作用域示例局部作用域示例静态作用域示例 匿名函数示例闭包示例 递归函数示例 内置函数常见内置函数示例 用户自定义函数示…...
前端调试实践
作者:效能研发部 黄泽平 前言 在日常调试问题中,相信我们很多人都是用console去排查相关的问题,虽然问题也可以排查出来,但是有时它的效率并不高。这篇文章主要讲解关于断点和一些日常调试技巧的内容,方便你在日后调…...
芯科科技突破性超低功耗Wi-Fi 6和低功耗蓝牙5.4模块加速设备部署
致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,今日宣布推出SiWx917Y超低功耗Wi-Fi 6和低功耗蓝牙(Bluetooth LE)5.4模块。 作为成功的第二代无线开发平台的新产品&…...
Matlab自学笔记四十三:使用函数拆分日期时间型数据的子信息:年、月、日、时、分、秒
使用函数拆分日期时间型数据的子信息:年、月、日、时、分、秒,函数包括年year,季度quarter,月month,周week,日day,时hour,分minute,秒second,年月日ymd&#…...
【NLP高频面题 - LLM架构篇】大模型使用SwiGLU相对于ReLU有什么好处?
【NLP高频面题 - LLM架构篇】大模型使用SwiGLU相对于ReLU有什么好处? 重要性:★★★ 💯 NLP Github 项目: NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化…...
【Python爬虫实战】轻量级爬虫利器:DrissionPage之SessionPage与WebPage模块详解
🌈个人主页:易辰君-CSDN博客 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、SessionPage (一)SessionPage 模块的基本功能 (二)基本使…...
python查找大文件
完整代码,不仅会捕获错误,还会输出大于 1MB 文件的大小(以 MB 为单位),并跳过访问受限或已删除的文件。 代码 import os# 查找当前目录及子目录下大于 1MB 的文件,并输出文件大小 for root, dirs, files in os.walk(.):for name in files:...
秒懂:使用js验证hash, content hash , chunk hash的区别
一、使用js验证hash, content hash , chunk hash的区别 1、计算一般的 Hash(以简单字符串为例) 使用crypto-js库来进行哈希计算,需提前引入npm install crypto-js库。 crypto-js: 是一个JavaScript加密算法库,用于实…...
RabbitMQ消息可靠性保证机制6--可靠性分析
在使用消息中间件的过程中,难免会出现消息错误或者消息丢失等异常情况。这个时候就需要有一个良好的机制来跟踪记录消息的过程(轨迹溯源),帮助我们排查问题。 在RabbitMQ中可以使用Firehose实现消息的跟踪,Firehose可…...
【NoSQL数据库】MongoDB数据库——集合和文档的基本操作(创建、删除、更新、查询)
目录 一、MongoDB数据库原理 二、MongoDB数据库和集合基本操作(增删改查) 三、MongoDB数据库的文档基本操作(增删改) 四、学习笔记 往期文章:【NoSQL数据库】MongoDB数据库的安装与卸载-CSDN博客 一、MongoDB数据…...
IDL学习笔记(二)IDL处理卫星数据
IDL处理卫星数据 HDF文件数据集属性通用属性 常用HDF4操作函数常用的HDF5操作函数读取HDF文件的一般步骤 HDF4文件读取-----数据信息查询HDF4文件读取示例-----目标数据TIFF输出提取modis产品中数据,与某一点经纬度最接近的点有效结果,并按每行内容为日期…...
用点云信息来进行监督目标检测
🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 概述问题分析Making Lift-splat work well is hard深度不准确深度过拟合不准确的BEV语义 模型总体框架显性深度监督 深度细化模块演示效果核心…...
Python编写api接口读取电商商品详情数据示例
以下是一个使用 Python 的 Flask 框架来编写一个简单的 API 接口,用于读取模拟的电商商品详情数据的示例代码。这里假设商品详情数据是存储在一个简单的字典中模拟数据库存储,实际应用中你需要连接真正的数据库(如 MySQL、MongoDB 等…...
用纯 CSS 实现网格背景
是不是在日常开发中经常遇到实现网格的需求,网格通常对网页中展示的元素能起到很好的定位和对齐作用。 这里介绍如何只通过 CSS 来实现这个需求? 使用背景图 这里我们的背景图使用 SVG 来创建,首先,创建绘出一个正方形ÿ…...
CNN+LSTM+AM研究方向初尝试
CNNLSTMAM研究方向初尝试 简单介绍 CNN CNN 的基本结构 卷积层(Convolutional Layer): 该层通过卷积操作提取输入数据的特征。卷积操作使用多个卷积核(滤波器)对输入图像进行局部感知,从而识别出边缘、纹…...
对比 LiveData 和 Flow 的实现方式
前一段忙完了鸿蒙,现在又开始 Android 开发了。由于之前公司都是都是偏传统开发方式,基本都是 Java 开发 Android 那一套。现在开始学习现代 Android 开发了。 对比 LiveData 和 Flow 的实现方式 在 Android 开发中,LiveData 和 Flow 都可以用来管理异步数据流和实现 UI 的…...
React.memo 和useMemo 的区别
React.memo 和 useMemo 都是 React 中的性能优化工具,但它们的用途和工作原理不同。以下是它们的主要区别: 1. React.memo React.memo 是一个高阶组件(HOC),用于优化组件的渲染,防止不必要的重新渲染。当组…...
视频码率到底是什么?详细说明
视频码率(Video Bitrate)是指在单位时间内(通常是每秒)传输或处理的视频数据量,用比特(bit)表示。它通常用来衡量视频文件的压缩程度和质量,码率越高,视频质量越好&#…...
CentOS7停更后,如何配置国内Yum源、镜像源
CentOS7停更后,如何配置国内Yum源、镜像源 yum介绍步骤1. 备份原有的yum源文件2. 下载国内Yum源文件3. 清除缓存并更新Yum源4. 使用国内Yum源 yum介绍 Yum(Yellowdog Updater Modified)是一个在CentOS和Red Hat Enterprise Linux(…...
黑石云|Linux-基础口令
在Linux系统中,设置和管理口令(密码)是确保系统安全性的重要环节。以下是一些关于Linux基础口令的详细解释和操作指南: 一、口令设置命令 passwd命令 功能:用于更改当前用户的密码。 使用方法:在终端中输…...
如何配置Github并在本地提交代码
前提: 可以流畅访问github, 需要一些上网技巧, 这就自行处理了 申请一个github账号 Github官网地址 首先就是邮箱注册啦, github没有对邮箱的限制, 只要是能收邮件的就ok, qq邮箱, 163等都可以使用. 然后和普通注册账号一样, 一路填写需要的信息, 验证邮箱即可. 如何新增代…...
UiPath API接口说明
Swagger网址 私有云网址(企业版) https://企业/swagger/index.html 公有云网址(社区版) https://cloud.uipath.com/linan/LinanZhang/orchestrator_/swagger/index.html#/ 常见问题 Swagger页面测试请求时报错“You are not a…...
Ubuntu22.04上kdump和crash的使用
0.前言 1.引用: 解决Linux内核问题实用技巧之 - Crash工具结合/dev/mem任意修改内存-腾讯云开发者社区-腾讯云 解决Linux内核问题实用技巧之-dev/mem的新玩法-腾讯云开发者社区-腾讯云 ubuntu内核转储分析——kdump和crash的下载和使用_ubuntu kdump-CSDN博客 U…...
【2025最新计算机毕业设计】基于SSM+Vue中华传统文化吟诵知识学习系统
作者简介:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流。✌ 主要内容:🌟Java项目、Python项目、前端项目、PHP、ASP.NET、人工智能…...
智能社区服务小程序+ssm(lw+演示+源码+运行)
摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了智能社区服务小程序的开发全过程。通过分析智能社区服务小程序管理的不足,创建了一个计算机管理智能社区服务小程序的方案。文章介绍了智能社区服务…...
windows10电脑缺少dll文件的解决方案,系统缺少dll修复指南
在使用Windows 10操作系统时,有时会遇到由于缺少某些动态链接库(Dynamic Link Library, 简称DLL)文件而导致程序无法正常运行的问题。本指南将介绍几种解决此类问题的方法。 什么是DLL文件? DLL文件是Windows系统中的一种特殊类型…...
【设计模式系列】工厂方法模式(二十一)
一、什么是工厂方法模式 工厂方法模式(Factory Method Pattern)是一种创建型设计模式,其核心目的是定义一个创建对象的接口,但让实现这个接口的子类来决定实例化哪一个类。工厂方法模式让类的实例化推迟到子类中进行,…...
etcd资源超额
集群内apiserver一直重启,重启kubelet服务后查看日志发现一下报错: Error from server: etcdserver: mvcc: database space exceeded 报错原因: etcd服务未设置自动压缩参数(auto-compact) etcd 默认不会自动 compa…...
数据结构与算法学习笔记----DFS
数据结构与算法学习笔记----DFS author: 明月清了个风 first publish time: 2024.12.4 revised: 2024.12.5 - 加了Acwing 843. n-皇后问题 。 ps⛹感觉DFS的题基本的思想就是递归,但是每题都有不一样的地方,每一题的思路和模拟过程都单独写在每一题里…...
力扣54.螺旋矩阵
题目描述 题目链接54. 螺旋矩阵 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]示例 2:…...
【原生js案例】webApp实现一个分享到的功能
这种分享到的效果很常见,在我们的网站上。鼠标滑入展示,滑出就隐藏。现在我们使用定时器功能来实现这种滑动效果。 感兴趣的可以关注下我的系列课程【webApp之h5端实战】,里面有大量的css3动画效果制作原生知识分析,讲解…...
iPhone手机清理软件:相册清理大师推荐
随着智能手机成为我们日常生活的必需品,手机中的数据日益膨胀,尤其是照片和视频这类容易积累的文件。对于iPhone用户来说,管理这些文件,特别是清理相册变得尤为重要。本文将介绍一款备受推崇的iPhone手机清理软件——CleanMyPhone…...
Javaweb梳理21——Servlet
Javaweb梳理21——Servlet 21 Servlet21.1 简介21.3 执行流程21.4 生命周期4.5 方法介绍21.6 体系结构21.7 urlPattern配置21.8 XML配置 21 Servlet 21.1 简介 Servlet是JavaWeb最为核心的内容,它是Java提供的一门动态web资源开发技术。使用Servlet就可以实现&…...
Serverless 时代
前端的边界探索,从客户端展开,以跨端为目标,用一套 JavaScript 代码生成多端平台,以此来实现大前端的统一。虽然在这条路上还不算尽善尽美,但各家公司的跨端方案已基本趋于成熟,并且已经运用到生产环境中。…...
docker安装clickhouse副本集群
docker安装clickhouse副本集群 1、clickhouse副本集群搭建1.1、docker安装zookeeper集群1.1.1、zookeeper第一个节点安装1.1.2、zookeeper第二个节点安装1.1.3、zookeeper第三个节点安装1.1.4、zookeeper客户端命令 2、Clickhouse副本集群搭建2.1、clickhouse搭建2.2、验证集群…...
详解AI网关助力配电房实现智能化管控应用
对于一些建设年份久远的老旧配电房,由于配套降温散热设施设备不完善、线路设备老化等因素,极易出现因环境过热而影响设备正常稳定运行,进而导致电气故障甚至火灾等事故产生。 基于AI网关的配电房智能监控及管理 针对配电房的实时安全监测及…...
uniapp调用腾讯定位api
1、注册腾讯地址api接口,创建应用获取key WebService API | 腾讯位置服务 2、配置获取方法getCity // 定位服务getCity(latitude, longitude) {const key XXXX-XXXX-XXXX-XXXX-XXXX; // 替换为你的腾讯位置服务密钥const url /apis.map.qq.com/ws/geocoder/v1/…...
映射vim键位,基本功能键位表(未更完)
键位映射:建议使用jj代替esc,毕竟esc离手那么远 linux下修改方法是:vim /etc/vim/vimrc 在该文件尾添加inoremap jj <Esc>该方法可以同样可以用到其他键位映射上 i:表示这个映射是在插入模式(insert mode)下有效…...
【Python】爬虫实战03:自动化抢票脚本【某麦网】
1. 脚本介绍 1.1 背景介绍 在这个数字化时代,演唱会、体育赛事和各种活动的门票销售往往在线上进行。由于热门活动的高需求和门票的有限供应,抢票成为了一场激烈的竞争。许多粉丝和爱好者经常因为手速不够快或网络延迟而错失购票机会。为了提高抢票的成…...
AspNet WebAPI 模型绑定问题
继承System.Web.Http.ApiController的Action的Model如果被[Serializable]定义,会导致Model的字段无法绑定。 Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll [Serializable] public class Model {public string id { get; set; } }public MyA…...
ISAAC SIM踩坑记录--添加第三方3D场景
ISAAC SIM仿真首先就是要有合适的3D场景,官方提供了一些场景,如果不能满足要求,那就只能自己建。 对于我这种不会3D建模的菜鸟,只能到网上下载了,sketchfab就是一个不错的平台,有不少免费资源可以下载。 …...
Linux中Crontab(定时任务)命令详解
文章目录 Linux中Crontab(定时任务)命令详解一、引言二、Crontab的基本使用1、Crontab命令格式2、Crontab常用操作 三、Crontab的配置与服务管理1、配置Crontab2、服务管理 四、使用示例1、每天凌晨2点备份网站数据2、每周一凌晨3点清理临时文件3、每月的…...
在Ubuntu中运行和管理AppImage
文章目录 什么是AppImage?如何在Ubuntu中运行AppImage?如何管理AppImage?安装AppImageLauncher如何添加AppImage到系统?如何从系统中移除AppImage? 总结 什么是AppImage? AppImage是一种将应用程序打包为单…...
2024年12月大语言模型最新对比:GPT-4、Claude 3、文心一言等详细评测
前言 随着人工智能技术的快速发展,大语言模型(LLM)已经成为了技术领域最热门的话题。本文将详细对比目前主流的大语言模型,帮助大家选择最适合的工具。 一、OpenAI GPT系列 1. GPT-4 核心优势: 多模态理解能力强 逻辑推理能力出色 创造…...
上下位关系自动检测方法
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
Linux入门攻坚——40、Linux集群系统入门-lvs(1)
Cluster,集群,为了解决某个特定问题将多台计算机组合起来形成的单个系统。 这个单个集群系统可以扩展,系统扩展的方式:scale up,向上扩展,更换更好的主机;scale out,向外扩展&…...
结构篇| 浅析LLaMA网络架构
01 前言 LLaMA(Large Language Model Meta AI)是由Meta AI 发布的一个开放且高效的大型基础语言模型。为什么突然讲这个模型,主要LLaMA 已经成为了最受欢迎的开源大语言模型之一,LLaMA 系列模型在学术界和工业界引起了广泛的 关注,对于推动大语言模型技术的开源发展做出了…...
CTF-PWN: 全保护下格式化字符串利用 [第一届“吾杯”网络安全技能大赛 如果能重来] 赛后学习(不会)
通过网盘分享的文件:如果能重来.zip 链接: https://pan.baidu.com/s/1XKIJx32nWVcSpKiWFQGpYA?pwd1111 提取码: 1111 --来自百度网盘超级会员v2的分享漏洞分析 格式化字符串漏洞,在printf(format); __int64 sub_13D7() {char format[56]; // [rsp10h] [rbp-40h]…...
openEuler卸载 rpm安装的 redis
停止 Redis 服务 sudo systemctl stop redis禁用 Redis 服务 sudo systemctl disable redis 卸载 Redis 软件包 sudo yum remove redis查找并删除 Redis 的残留文件 find / -name red*删除 Redis 配置文件 删除 Redis 数据文件 sudo rm -rf /var/lib/redis检查 Redis 是否…...
xxl-job分布式任务调度
XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。 GitHub:https://github.com/xuxueli/xxl-job 码云:https://gitee.com/xuxue…...