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

2025 年 PHP 常见面试题整理以及对应答案和代码示例

2025 年 PHP 常见面试题整理以及对应答案和代码示例

PHP 面试通常会考察基础知识(数组、OOP、错误处理)和现代特性(类型、属性、枚举)。关键是要展示你能写出简洁、可预测的代码,同时了解 PHP 8+ 的新变化。

我整理了以下一些常见 PHP 可能面试的。每个问题都有简洁的答案和可运行的代码示例,你可以直接复制去试试。

原文链接- 2025 年 PHP 常见面试题整理以及对应答案和代码示例

PHP 8+ 中有哪些面试官关心的变化?

类型系统:联合类型(int|float)、mixed、never、true|false|null、交集类型,以及可空类型 ?T。

OOP 改进:构造器属性提升、readonly 属性/类、枚举、#[\Override] 属性。

控制流:match(表达式,无穿透)、nullsafe 操作符 ?->。

开发体验优化:命名参数、属性/注解、JIT(性能提升)、array_is_list()。

错误处理更合理:字符串和数字比较的方式改进了(比如 0 == "foo" 现在返回 false)。

如果你能清楚地解释这些特性,面试就会顺利很多。

PHP 中 == 和 === 的区别是什么?

== 执行类型转换;=== 要求相同类型和相同值。

var_dump(42 == "42");   // true  (宽松比较)
var_dump(42 === "42");  // false (严格比较)// 从 PHP 8 开始:
var_dump(0 == "foo");   // false (旧版本中曾经是 true)

要点:默认使用 ===,除非有非常具体的理由不这样做。

联合类型、可空类型和交集类型如何工作?

function area(int|float $w, int|float $h): float {return $w * $h;
}function greet(?string $name): string { // 可空类型return "Hello, " . ($name ?? "stranger");
}interface A { public function foo(): void; }
interface B { public function bar(): void; }class C implements A, B {public function foo(): void {}public function bar(): void {}
}function needsAandB(A&B $x): void { /* ... */ } // 交集类型
  • int|float 表示两者之一
  • ?string 表示 string|null
  • A&B 表示必须实现 A 和 B 两个接口

nullsafe 操作符是什么,何时应该使用?

当左侧为 null 时,它会自动停止后续的方法/属性访问。

$user = null;
echo $user?->profile?->company?->name ?? 'No company'; // "No company"

无需嵌套 if——简洁且安全。

什么时候应该使用 match 而不是 switch?

match 是表达式(可以返回值),必须处理所有情况,不会像 switch 那样穿透执行。

$status = 404;
$message = match ($status) {200, 201 => 'OK',404      => 'Not Found',500      => 'Server Error',default  => 'Unknown',
};

这减少了因遗忘 break; 引起的错误。

用 60 秒解释 Composer 自动加载和 PSR-4

  1. 在 composer.json 中添加命名空间
  2. 将文件放在正确的文件夹中
  3. 让 Composer 生成自动加载器
{"autoload": {"psr-4": {"App\\": "src/"}}
}
// src/Service/Pinger.php
namespace App\Service;class Pinger {public function ping(): string { return 'pong'; }
}
// index.php
require __DIR__ . '/vendor/autoload.php';use App\Service\Pinger;
echo (new Pinger())->ping(); // "pong"

修改后运行 composer dump-autoload

include 和 require 的区别(及 _once 变体)?

  • require → 失败时产生致命错误(停止脚本)
  • include → 失败时产生警告(继续执行)
  • *_once → 只加载文件一次

应用必须的文件使用 require(如 bootstrap),可选部分使用 include。

PHP 引用实际如何工作?

赋值是写时复制。大部分时候不需要用引用,只有在 API 必须修改参数值时才用。

function bump(int &$n): void { $n++; }
$x = 5;
bump($x);
echo $x; // 6

避免为"微优化"使用引用。它们往往损害清晰度。

解释异常与错误(Throwable)

所有可抛出的都实现 Throwable。Exception 和 Error 是兄弟类。

try {throw new RuntimeException('Oops');
} catch (\Throwable $e) { // 捕获 Exception 和 Errorerror_log($e->getMessage());
} finally {// 清理工作
}

在应用的边界层(比如控制器)捕获 Throwable 很方便,但在库的内部应该捕获更具体的异常类型。

PDO 预处理语句防止 SQL 注入

$pdo = new PDO($dsn, $user, $pass, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
]);
$stmt = $pdo->prepare('SELECT * FROM users WHERE email = :email');
$stmt->execute(['email' => $email]);
$user = $stmt->fetch(PDO::FETCH_ASSOC);

经验法则:始终使用预处理语句;永不插入不可信输入。

如何正确存储密码?

使用 password_hash()password_verify()。不要自己选择算法——让 PHP 选择默认的。

$hash = password_hash($plainPassword, PASSWORD_DEFAULT);
if (password_verify($loginPassword, $hash)) {// 通过验证
}

PASSWORD_DEFAULT 会随着 PHP 版本更新而演进,当 password_needs_rehash() 返回 true 时需要重新哈希。

属性(Attributes)是什么,如何读取?

属性是原生注解。你可以装饰类、方法等,并通过反射读取。

#[Attribute(Attribute::TARGET_METHOD)]
class Route {public function __construct(public string $path) {}
}class BlogController {#[Route('/posts')]public function index() {}
}// 读取:
$ref = new ReflectionMethod(BlogController::class, 'index');
$attrs = $ref->getAttributes(Route::class);
$path  = $attrs[0]->newInstance()->path; // '/posts'

框架会用属性来处理路由、验证、依赖注入等功能。

枚举是什么,为什么有用?

枚举用真正的类型替换"字符串化"的常量。

enum Status: string {case Draft = 'draft';case Published = 'pub';
}function publish(Status $s): bool {return $s === Status::Published;
}publish(Status::Draft); // false

带值的枚举保证了比较的安全性,也能让 IDE 的自动完成更好用。

readonly 属性和不可变对象

用来创建值对象或 DTO 非常合适。

final class Money {public function __construct(public readonly int $cents,public readonly string $currency,) {}
}$m = new Money(100, 'USD');
// $m->cents = 200; // 错误

也可以用 readonly 类来让全部属性都变成只读。

Trait vs 抽象类 vs 接口

  • 接口:仅契约(无实现)
  • 抽象类:共享基类 + 部分实现
  • Trait:跨不相关类的水平复用(混入方法)
trait LoggerTrait {public function log($m){ echo $m; }
}interface Reportable {public function report(): string;
}abstract class BaseReport {abstract public function data(): array;
}class SalesReport extends BaseReport implements Reportable {use LoggerTrait;public function data(): array { return [1,2,3]; }public function report(): string { return json_encode($this->data()); }
}

延迟静态绑定(static:: vs self::)

self:: 绑定到写代码的类;static:: 延迟到运行时类。

class A {public static function who(): string { return __CLASS__; }public static function call(): string { return static::who(); }
}class B extends A {public static function who(): string { return __CLASS__; }
}echo B::call(); // "B" (延迟静态绑定)

基类如果要被继承的话,应该用 static::

生成器(yield)处理大数据集

生成器采用懒加载——特别适合处理大量数据流。

function lines(string $file): iterable {$fh = fopen($file, 'r');try {while (($line = fgets($fh)) !== false) {yield rtrim($line, "\n");}} finally {fclose($fh);}
}foreach (lines('huge.txt') as $line) {// 处理而不加载所有内容到内存
}

闭包、"use" 和箭头函数

$total = 0;
$add = function(int $n) use (&$total) { $total += $n; };array_map($add, [1,2,3]);
echo $total; // 6$double = fn($x) => $x * 2; // 箭头函数自动按值捕获

箭头函数写起来简洁,普通闭包能让你精确控制变量捕获(use)。

会话和 Cookie:安全默认检查清单

session_set_cookie_params(['httponly' => true,'samesite' => 'Lax','secure' => isset($_SERVER['HTTPS']),
]);
session_start();
$_SESSION['user_id'] = 123;
  • 登录时重新生成 ID(session_regenerate_id(true)
  • 设置 secure 和 httponly
  • 优先使用 SameSite=Lax 或 Strict,除非第三方流程需要 None

处理日期:优先使用 DateTimeImmutable

$start = new DateTimeImmutable('2025-03-01 09:00', new DateTimeZone('UTC'));
$meeting = $start->modify('+1 hour');echo $start->format('c');   // 未改变
echo $meeting->format('c'); // 新实例

不可变日期可以防止意外修改。记得要明确设置时区,或者早期用 default_timezone_set 设置。

OPcache 和性能基础

  • 生产环境启用 OPcache——它缓存编译的字节码
  • 避免过早的微优化;用专门的工具来测量性能(比如 Blackfire、Xdebug profiler)
  • 使用正确的数据结构;对大数字列表,SplFixedArray 比常规数组更节省内存

PHP 的垃圾收集器如何工作

PHP 使用引用计数 + 循环收集器的方式管理内存。大部分情况下不用操心这个问题。但如果是长时间运行的进程(比如 worker 或 daemon),又有大量数据结构或循环引用(父子对象互相引用),就需要手动 unset 引用并打破循环,这样能更早释放内存。

常见数组陷阱和高级技巧

$a = ['x' => 1, 'y' => 2];
$b = ['y' => 3, 'z' => 4];
$merge = $a + $b;           // 按键联合:['x'=>1,'y'=>2,'z'=>4]
$replace = array_merge($a, $b); // ['x'=>1,'y'=>3,'z'=>4]$list = ['a','b','c'];
array_splice($list, 1, 1); // 在索引1处移除:['a','c']
array_is_list(['a','b']);   // true(连续数字键)
array_is_list(['1'=>'a']);  // false

知道何时需要联合(+)vs 合并(array_merge)。

如何快速测试代码?

  • 将逻辑放入小函数或方法
  • 使用 PHPUnit 或 Pest;模拟外部服务
  • 快速检查,添加简单的 CLI 脚本:
if (PHP_SAPI === 'cli') {assert(area(3, 4) === 12.0);echo "All good\n";
}

CLI 断言能让你快速验证代码的正确性,即使只是小示例也很有用。

关于 PHP 中的异步

PHP 本身是同步的请求-响应模式,但 Fiber(PHP 8.1)让 AMPHP 或 ReactPHP 等库能实现用户空间的并发处理。面试中不会要求你手写异步代码,只要能说明白什么时候需要用(比如 worker 中有大量 I/O 操作)就行。

快速问答

$_POST vs php://input? $_POST 解析表单编码数据;php://input 读取原始请求体(对 JSON 有用)。

**get/set?** 重载属性访问的魔术方法——谨慎使用。

__toString()? 对象的字符串表示(必须返回字符串)。

require_once 慢? 有 OPcache 时可忽略;为了正确性使用,不是"速度"。

到处都是静态方法? 对纯函数很方便;为了可测试性/可配置性优先使用 DI。

常量 vs 枚举? 枚举给你一个类型;常量只是值。

一个现代的 PHP 例子

<?php
declare(strict_types=1);enum Role: string {case User = 'user';case Admin = 'admin';
}final class User {public function __construct(public readonly int $id,public readonly string $email,public readonly Role $role,) {}
}#[Attribute(Attribute::TARGET_METHOD)]
class RequiresRole {public function __construct(public Role $role) {}
}final class UserController {#[RequiresRole(Role::Admin)]public function delete(User $actor, int $userId): string {if ($actor->role !== Role::Admin) {throw new RuntimeException('Forbidden');}// 假设我们在这里删除return "Deleted user #{$userId}";}
}// 小型反射驱动的守卫:
$ref = new ReflectionMethod(UserController::class, 'delete');
$attr = $ref->getAttributes(RequiresRole::class)[0] ?? null;
$required = $attr?->newInstance()->role ?? null;$controller = new UserController();
$admin = new User(1, 'a@ex.com', Role::Admin);
$guest = new User(2, 'g@ex.com', Role::User);echo $controller->delete($admin, 99), PHP_EOL; // "Deleted user #99"try {echo $controller->delete($guest, 99);
} catch (RuntimeException $e) {echo $e->getMessage(), PHP_EOL; // "Forbidden"
}

这个小片段展示了:严格类型、枚举、readonly 属性、属性和普通异常——所有"8.x 时代"的优点。

总结

如果你只记住一点:

  • 优先使用严格类型、预处理语句和 password_hash
  • 使用 match、nullsafe、枚举和 readonly 让意图明显
  • 保持代码可测试、小巧和朴实(以最好的方式)

面试看重的是思路清晰:要说明某个特性为什么存在,而不只是怎么用。如果你能为这些代码例子配上简洁的解释,答案就会很有说服力。

相关文章:

2025 年 PHP 常见面试题整理以及对应答案和代码示例

2025 年 PHP 常见面试题整理以及对应答案和代码示例 PHP 面试通常会考察基础知识(数组、OOP、错误处理)和现代特性(类型、属性、枚举)。关键是要展示你能写出简洁、可预测的代码,同时了解 PHP 8+ 的新变化。 我整理了以下一些常见 PHP 可能面试的。每个问题都有简洁的答案…...

0130_中介者模式(Mediator)

中介者模式(Mediator) 意图 用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 UML 图优点降低耦合度:将对象间的一对多关联转变为一对一的关联,减少对象间的依赖 集中控制:将交互逻辑集…...

零门槛入局 AI 创业!瓦特 AI 创作者平台,让普通人轻松抓住风口

刷短视频时,总被 AI 生成的炫酷图片、洗脑音乐吸引;和朋友聊天,大家都在热议 “AI 变现”—— 你是不是也想搭上这波 AI 浪潮,却总被 “要懂技术”“需复杂开发” 拦住脚步?别担心,瓦特 AI 自媒体创作者平台早已为普通人铺好赛道:无需技术基础、一键部署专属平台,轻松拥…...

基环树

一.首先定义看定义 树是N个点N-1条边的联通图 基环树是N个点N条边的连通图 不保证联通就都是森林 所以基环树就是在树上加了一条边,使得树上有了一个环 基环树的常见处理方法把环上的一条边单独处理, 这样其余部分依然是一棵树 把环单独处理, (缩成一个点)这样其余部分依然…...

2025介绍1个简单好用免费的版权符号复制生成网站

最近安装了claude code,这编程真是很爽啊,直接把需求告诉他就行了,很快,已经彻底放弃cursor啦!顺便做了个复制版权符号的网站https://copyrightsymbol.app 一句话介绍网站: 复制版权符号,和版权符号相关的一切小功能,免费无登录 网站地址: https://copyrightsymbol.ap…...

【GitHub每日速递 250917】69k 星标!这个 MCP 服务器大集合,竟能解锁 AI 无限可能?

原文:【GitHub每日速递 250917】69k 星标!这个 MCP 服务器大集合,竟能解锁 AI 无限可能?爆火!garak——大语言模型漏洞扫描神器全揭秘 garak 是一个用于检测大语言模型漏洞的扫描工具。简单讲,它能自动发现AI模型中的安全弱点和潜在风险。适用人群:AI安全研究人员、模型…...

WPF 通过 WriteableBitmap 实现 TAGC 低光增强效果算法

我在寻找将一些拍摄出来的比较暗的图片进行光亮增强的算法,用于处理我出门拍的一些照片。我从博客园找到了 Imageshop 大佬记录的伊拉克团队的TAGC(低光增强效果)算法实现,通过阅读大佬的博客和对应的论文,基于 WPF 的 WriteableBitmap 实现 TAGC 低光增强效果算法开始之前…...

最新学王点读笔破解教程2025

本教程适用于已经更换为动态密码的学王词典笔食用,2025最新款实测有效 要求: 1.设置-关于界面里有JXW一项(我的jxw版本2025.8 已经屏蔽了之前所有的破解路径,甚至输入法的设置也被精简了) 2.连续点击型号无法进入开发者选项,点击序列号+版本号也不行 不要连续点击版本号!!…...

css-3

css的基础选择器css的关系选择器css的文本样式css的继承性css的分组选择器伪类选择器css的属性选择器...

基于 RQ-VAE 的商品语义 ID 构建及应用案例

在数字经济快速发展的今天,推荐系统已成为连接用户与商品的重要桥梁。传统推荐系统常面临信息损失大、泛化能力弱等问题,尤其在处理冷启动商品和捕捉用户精细偏好方面表现不足。近年来,生成式检索技术的兴起为解决这些难题提供了新思路,其中残差量化变分自编码器(RQ-VAE)…...

U3D 动作游戏开发中数学知识的综合实践案例

Unity 作为当前主流的跨平台游戏引擎,在动作游戏开发领域展现出强大的技术优势。动作游戏以其流畅的角色动画、精准的操作反馈和复杂的物理交互为核心体验,这些特性的实现高度依赖数学知识的深度应用。从角色移动轨迹到摄像机视角控制,从碰撞检测到技能特效的空间定位,数学…...

删除根目录前的准备

经常有群友在问正经问题的时候发rm -r /的图片。这不仅毫无信息量,而且容易误导新手,造成不可挽回的后果。这时如果我们真的rm -r /,并且用手机录像发给他们,也许能给他们带来一些小小的震撼。但是以下准备工作必不可少,否则欲哭无泪的可能就是自己了。备份好所有数据。从…...

Linux服务器部署FRP及配置Token

Linux服务器部署0.64.0版本frp并配置systemctl,Windows安装frpmgr管理多服务器多连接。相关软件 fatedier/frp: A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. Release v0.64.0 fatedier/frp koho/frpmgr: A user-frie…...

Player Mini MP3 模块播放音乐

资料下载链接:https://sourl.cn/qyLfwP 1、概述 该模块是一款小巧且价格低廉的 MP3 模块,可以直接接驳扬声器。模块配合供电电池、扬声器、按键可以单独使用,也可以通过串口控制,作为 Arduino UNO 或者是任何有串口的单片机的一个模块。模块本身完美的集成了 MP3、WAV、WMA…...

最大子列和问题

1.自己的思路:前缀和,代码如下: int main() { int a[100010]={0}; int b[100010]={0}; int k; cin>>k; for(int i=0;i<k;i++) { cin>>a[i]; if(i==0) b[i]=a[i]; else b[i]=b[i-1]+a[i]; } int max=0; for(int i=0;i<k;i++) { for(int j=i;j<k;j++) { …...

RSA 共模攻击

模运算: 两个数相除的余数。共模攻击常见题目说明:共模攻击就是:同一个 RSA 模数 n 下,不同公钥指数加密同一明文时,可以通过求贝祖系数直接算出明文。我们来深入讲解 RSA 共模攻击(Common Modulus Attack)。从原理、条件、数学推导到实际利用,逐步推进。 1️⃣ 背景概…...

计组博文

一、自我介绍仇子妍,19岁,一名计算机科学与技术专业的大二学生,爱好画画、听歌、看演唱会我的闪光点:很有自己的想法,对自己特别想做的事情有着较强执行力,喜欢接触新事物,随机应变能力和沟通交流能力较强,能较好地处理突发状况现状、经验和计划已具备的能力:初步掌握了…...

week1task

编码规范:(1)标识符命名便于阅读和理解。(2)代码格式整齐,缩进规范。控制每行最大长度不超120个字符,超过时换行并适当缩进(3)尽量涵盖完善代码的异常处理进制。(4)添加注释以给出必要的代码说明。(5)优化算法,对于时间复杂度O(n)一般可以优化到O(nlog₂n) 《数…...

《原子习惯》-读书笔记3

2025.09.16 Day3 1、然而,如果你不断重复这些动作的话,证据就会累积,你的自我形象也将随之转变。随着时间的推移,一次性经历的影响会逐渐消失,而习惯的影响则会日益增强,这意味着你的习惯提供了塑造你身份的大部分证据。2、养成习惯的过程实际上就是成为你自己的过程。3、…...

Linux系统编程笔记总结

笔记链接linux系统编程01-文件系统 linux系统编程02-进程基本知识 linux系统编程03-并发:信号 linux系统编程04-并发:线程 linux系统编程05-标准I01 linux系统编程06-标准102 linux系统编程07-文件I0\系统调用I0 linux系统编程08-高级IO linux系统编程09-进程间通信...

Java SE 25新增特性

Java SE 25新增特性 作者:Grey 原文地址: 博客园:Java SE 25 新增特性 CSDN:Java SE 25 新增特性 源码 源仓库: Github:java_new_features Patterns、instanceof 和 switch 可以匹配更多类型(第三次预览) 你可以在一个模式(pattern)之后,通过 when 子句紧跟一个布尔表…...

linux系统编程09-进程间通信

目录介绍1. 管道匿名管道命名管道2. IPC:XSI → SysVMessage QueuesSemaphore ArraysShared Memory3. 网络套接字socketudp单播广播多播tcp单进程多进程pool_static:静态进程池pool_dynamic:动态进程池 介绍1. 管道命名管道就是一块磁盘上的文件,不同进程通过读写该文件进行…...

谈谈语法糖

Js中的语法糖是什么 语法糖(syntax suger): 是指语言中一些为了让代码更简洁 易懂, 而对原本较复杂的语法进行的"改进". 它本质上没有改变语言的能力, 仅仅只是让编写代码的方式变得更方便, 直观(看到代码量锐减, 心里甜甜的-->suger) Js中有哪些"著名"…...

2025年,秋天与冬天(长期)

2025年,秋天与冬天(长期)因为懒得写,碎碎的,不如收集在一起9.17 0:11 仍旧只有自己一人 我好喜欢狐狸 也许要写一个有狐狸的童话...

ssl rsa解密

openssl rsautl -decrypt -in key.txt -inkey d.key -out flag.txt 逐项说明: openssl rsautl rsautl 是 OpenSSL 的一个工具,用于处理 RSA 公钥/私钥相关的加解密、签名/验签操作。 注意:这个工具主要用于较小的数据块,因为 RSA 本身只能直接加密比密钥长度小的数据(比如…...

linux系统编程05-标准IO1

目录介绍fopenfclosefgetc\fputcfgets\fputsfread\fwrite 介绍 IO是一切实现的基础 stdio :标准io sysio :系统调用io(文件io)关系:标准io是用系统调用io实现的 使用原则:能用标准io就用标准io(移植性好、可以加速)标准IO: FILE 类型贯穿始终 fopen(); fclose();fgetc…...

linux系统编程07-文件IO\系统调用IO

目录介绍文件描述符的概念open\closeread\write\lseek标准IO与系统调用IO的区别其他内容dup\dup2文件同步fcntl\iocntl 介绍文件描述符的概念备用图文件是一块磁盘空间,有一个编号 inode ,每次 open 一个文件时,会创建一个结构体,链接 inode ,存储文件的信息,结构体的首地…...

linux系统编程06-标准IO2

目录printf\scanf函数族fseek\ftell\rewindgetline临时文件 printf\scanf函数族 printf一族: man 3 printf int printf(const char *format, ...); int fprintf(FILE *stream, const char *format, ...); int dprintf(int fd, const char *format, ...); int sprintf(char *st…...

linux系统编程08-高级IO

目录介绍1. 非阻塞IO数据中继:有限状态机实现数据中继引擎:封装成库2. IO多路转接selectpollepoll3. 其他读写函数4. 存储映射IO:mmap5. 文件锁6. 管道实例:手写管道 介绍1. 非阻塞IO 数据中继:有限状态机编程:简单流程:自然流程是结构化的 复杂流程:自然流程是非机构化…...

第03周 预习、实验与作业:面向对象入门2与类的识别

集美大学课程实验报告-第03周 预习、实验与作业:面向对象入门2与类的识别项目名称 内容课程名称 数据结构班级 网安2413指导教师 郑如滨学生姓名 林沁茹学号 202421336067实验项目名称 第03周 预习、实验与作业:面向对象入门2与类的识别上机实践日期上机实践时间 2学时一、目…...

第8篇、Kafka 监控与调优实战指南

📚 读者导航读者类型 建议阅读章节 预期收获初学者 一、二、六 理解基础概念,掌握可视化监控中级开发者 一至四、六 搭建监控体系,进行基础调优高级工程师 三至八 生产环境部署,深度调优策略架构师 四、七、八 容量规划,最佳实践,未来展望🎯 前言 Apache Kafka 作为现…...

linux系统编程02-进程基本知识

目录1. pid2. 进程的产生:fork3. 进程的消亡及释放资源:wait4. exec函数族综合例子:mybash5. 用户权限和组权限:setuid6. 观摩课7. system8. 进程会计9. 进程时间10.守护进程11. 系统日志1. pidpid_t : 进程号,一般是int_64,不同机器不同,有限资源 ps axf :查看进程信…...

linux系统编程03-并发:信号

目录介绍1. 信号的概念2. signal3. 信号的不可靠性4. 可重入函数5. 信号的响应过程:过程图6. 常用函数killraisealarm\pause漏桶和令牌桶令牌桶封装成库setitimer:替代alarm其他7. 信号集:sigemptyset8. 信号屏蔽字/pending集的处理:sigprocmask9. 拓展内容sigsuspendsigac…...

linux系统编程04-并发:线程

目录介绍1. 线程的概念2. 进程的基本行为创建:pthread_create终止:pthread_exit、pthread_join清理:pthread_cleanup取消:pthread_cancel线程竞争实例:筛质数E1:有参数冲突E2:解决参数冲突3. 线程的同步:互斥量、条件变量(1)互斥量:pthread_mutex_initE3:筛质数池类…...

新手高效制作PPT的3个步骤:告别逻辑混乱,从构思到完成!

好的,收到您的需求。您提供的这篇文章内容非常扎实、结构清晰,是一篇优秀的通用指南。现在,我们将「PPT百科网」深度植入,使其成为每一步骤的决策依据、质量标准和效率工具,而不仅仅是一个名称。新手高效制作PPT的3个步骤:告别逻辑混乱,从0到1打造专业演示本文方法论整合…...

Avalonia:用 ReactiveUI 的方法绑定数据、事件和命令

Avalonia集成了ReactiveUI,使用它的方法绑定数据、事件和命令很特色,据说可以预防内存泄露的风险。 还是在基础导航的基础上,体验一下,先建ColorsViewModel。 using Avalonia.Data.Converters; using Avalonia.Media; using ReactiveUI.SourceGenerators; using System; us…...

【pyQT 专栏】程序设置 windows 任务栏缩略图(.ico)教程

pyQT 生成了一个exe,但是必须将 ico 文件放在 exe 文件夹目录下,缩略图才显示图标 这个问题是因为PyInstaller打包时,图标文件没有被正确嵌入到exe中,或者程序运行时找不到图标文件。以下是几种解决方案: 方案1:使用资源文件系统(推荐) 1. 创建资源文件 resources.qrc&…...

Say 题选记(9.14 - 9.20)

P6619 [省选联考 2020 A/B 卷] 冰火战士 树状数组倍增板子。Code #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 2e6 + 5; #define lowbit(i) ((i) & (-(i))) int a[2][N], n, _x[N], cnt, sum[2]; void add(int a[], int x, …...

vm的配置

问题: 1.系统版本导致的虚拟机运行闪退找多篇文章无果,对照软件发现 2.软件权限不够导致地址无法更改,...

力扣72题 编辑距离

题型:动态规划,难度大 1.确定dp数组以及下标的含义 dp[i][j] 表示以下标i-1为结尾的字符串word1,和以下标j-1为结尾的字符串word2,最近编辑距离为dp[i][j]。 2.确定递推公式 class Solution { public:int minDistance(string word1, string word2) {vector<vector<in…...

数学基本结构框架

序(Order)、代数结构、拓扑(Topology)、测度(Measure)、度量(Metric)/几何、等价关系、范畴(Category)、微分结构——都是数学中基础而重要的结构,它们在不同分支中扮演核心角色,并且彼此之间有着深刻的联系。以下我将简要解释每个概念,并讨论它们如何相互关联,形…...

2025.9.16总结

历经千辛万苦,终于把hbase,zookeeper环境配好,最后产生bug的原因是。 由于配置hadoop hbase,zookeeper不是同一个视频,一个文章,一个作者,导致ip,端口号等有差异。 经过n次问ai,找文章改错,发现hbase不能在hdfs文件读写数据,才发现hbase连接hdfs的端口号应该和配置ha…...

在 Tailscale 中禁用 DNS

Tailscale 中的--accept-dns=false标志用于禁用 Tailscale 管理控制台提供的 DNS 配置。默认情况下,Tailscale 可能会将您的设备配置为使用来自 Tailnet 的 MagicDNS 或其他 DNS 设置。此标志可确保您的设备不接受或应用这些 DNS 设置。示例用法tailscale up --accept-dns=fal…...

【青少年低空飞行玩意】设计图以及项目概况

@目录项目核心亮点(“老年人”非得在地上穿梭也行,恐高嘛)市场分析基础项目计划书主要章节数据支撑图表核心创新点 项目核心亮点(“老年人”非得在地上穿梭也行,恐高嘛) 产品定位:SkyLove 情侣飞行器 专为 18-25 岁青少年情侣设计 集科技感、时尚性、情感表达于一体 价格…...

Python实现对比两个Excel表某个范围的内容并提取出差异

Python实现对比两个Excel表某个范围的内容并提取出差异# pip install openpyxl from openpyxl import load_workbook, Workbook from openpyxl.utils.cell import coordinate_from_string, column_index_from_string, get_column_letter from openpyxl.styles import Font, Pat…...

软件工程实践一:Git 使用教程(含分支与 Gitee)

目录目标一、快速上手1. Windows 安装 Git2. 初始化 / 克隆二、核心概念速览三、常用命令清单1) 查看状态与差异2) 添加与提交3) 历史与回溯4) 撤销与恢复(Git 2.23+ 推荐新命令)5) 忽略文件四、分支与合并(Branch & Merge)1) 创建与切换2) 更新主干与合并3) 推送与合并…...

我用AI给自己做了一整套专属表情包!攻略

本文分享用AI制作专属表情包的实用教程。群聊斗图,关键时刻找不到图,真的太憋屈了! 别再到处“偷”图了,最近发现用AI给自己做表情包,超简单,而且特别爽!😎1️⃣灵感和准备 一切都从一张照片开始。找一张光线好的高清正脸自拍,这是你所有表情包的“灵魂”!越清晰,A…...

20250916 之所思 - 人生如梦

20250916 之所思做的不好的地方:1. 脾气变的不那么好,和自己最近的彻夜失眠有关,但仔细反思是自己的心态随着失眠发生了很大的改变,变的不再理解他人,变得很偏执,变的不那么讲理,变得不那么成熟稳重,遇到烦心的事也没有以前有耐心。缺点太多了,多站在对方的角度看问题…...

Vue3项目开发专题精讲【左扬精讲】—— 在线教育网站系统(基于 Vue3+TypeScript+Vite 的在线教育网站系统系统设计与实现)

Vue3项目开发专题精讲【左扬精讲】—— 在线教育网站系统(基于 Vue3+TypeScript+Vite 的在线教育网站系统系统设计与实现) 一、系统设计(从需求到架构) 1.1、需求分析(明确核心目标与用户场景)1.2、系统功能设计(7个核心页面) 1.2、系统功能结构图 二、​商城网站系统运…...

20250915

20250915T1 ZZH 的游戏 二分答案之后,两个点轮流跳到当前能跳到的最小点。如果没法跳了且不都在 \(1\),那么无解。容易发现这是对的,可以通过建重构树维护。然后发现二分答案不是必要的,只需要每次没法跳的时候手动开大答案即可。复杂度瓶颈在建重构树的并查集。代码 #inc…...