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

Linux:进程:进程控制

进程创建

在Linux中我们使用fork函数创建新进程:

fork函数

fork函数是Linux中的一个系统调用,用于创建一个新的进程,创建的新进程是原来进程的子进程

返回值:如果子进程创建失败,返回值是-1。如果子进程创建成功,对于父进程而言,fork的返回值是子进程的pid(子进程的进程号);对于子进程而言,fork的返回值是0。

让父子进程分别打印fork函数的返回值和自己的PID:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>int main()
{pid_t pid;      //parent_idpid_t cid;      //child_pidprintf("Before fork Process id: %d\n", getpid());cid = fork();printf("After fork, Process id: %d\n", getpid());printf("fork_function return: %d\n", cid);sleep(5);return 0;
}

实验结果:

调用fork后,内核中的fork代码会执行:

• 分配新的内存块和内核数据结构给⼦进程

• 将⽗进程部分数据结构内容拷⻉⾄⼦进程

• 将⼦进程添加到系统进程列表当中

• fork返回,调度器开始调度

子进程被创建好后,父子进程会并发执行后续代码

父子进程内存空间独立

上文说到,fork函数会把父进程的代码和数据拷贝给子进程,以此来保证进程之间的独立性,但实际上,为了节省内存空间和提高运行效率,只有当子进程的代码和数据发生变化时,才会为子进程开辟一块内存空间,并将父进程的代码和数据拷贝给子进程,这被称为写时拷贝

而在写时拷贝之前,父子进程的虚拟地址相同,并且通过页表映射后指向同一处物理地址

而在写时拷贝之后,父子进程的虚拟地址仍然相同,只是会映射到不同的物理地址

进程终止

进程终⽌的本质是释放进程申请的相关内核数据结构和对应的数据和代码。

进程退出的三种情况:

1.代码运⾏完毕,结果正确

2.代码运⾏完毕,结果不正确

3. 代码异常终⽌

为了判断进程终止是哪种情况,进程在结束时会将退出码和退出信号返回给父进程,其中,退出信号用于判断进程是否异常,退出码用于判断进程运行结果是否正确

如何获取退出码和退出信号,我们在进程等待部分再做介绍,这里先介绍常见的退出码:

可以使⽤strerror函数来获取退出码对应的描述。

返回不同的退出码:

1.使用 return n

2.使用void exit(int status)或void _exit(int status),二者区别如下:

return n和exit(n)等效

进程等待

进程等待的目的:

1.检查子进程的任务执行

2.避免产生僵尸进程

进程等待的方法

wait函数

#include<sys/types.h>
#include<sys/wait.h>
pid_t wait(int* status);

返回值:

成功返回被等待进程 pid ,失败返回-1 。

参数:

status:输出型参数,获取⼦进程退出码 , 不关⼼则可以设置成为 NULL

一个父进程可能有多个子进程,而wait函数等待的是任意子进程

因此,推荐使用waitpid函数:

 pid_ t waitpid(pid_t pid, int *status, int options);

返回值:

当正常返回的时候 waitpid 返回收集到的⼦进程的进程 ID ;

如果设置了选项 WNOHANG, ⽽调⽤中 waitpid 发现没有已退出的⼦进程可收集 , 则返回 0 ;

如果调⽤中出错 , 则返回-1, 这时 errno 会被设置成相应的值以指⽰错误所在;

参数:

pid :

Pid=-1, 等待任⼀个⼦进程。与 wait 等效。

Pid>0. 等待其进程 ID 与 pid 相等的⼦进程。

status: 输出型参数,为了便于调用,可以使用以下两个宏:

WIFEXITED(status): 若为正常终⽌⼦进程返回的状态,则为真。(查看进程是否是正常退出) WEXITSTATUS(status): 若 WIFEXITED ⾮零,提取⼦进程退出码。(查看进程的退出码)

options:

默认为 0 ,表⽰阻塞等待

WNOHANG: 非阻塞等待,若 pid 指定的⼦进程没有结束,则 waitpid() 函数返回 0 ,不予等待。若正常结束,则返回该⼦进程的 ID 。

status

status用于记录子进程的退出信号和退出码:

前7位为退出信号,第8位为core dump标志(不关心),9~16位为退出码

若退出信号非0,表明进程异常

若退出信号为0,表明进程正常运行

若退出码非0,表明运行结果错误

若退出码非0,表明运行结果正常

阻塞等待与非阻塞轮询等待对比

阻塞等待:

int main(){pid_t pid;pid = fork();if(pid < 0){printf("%s fork error\n",__FUNCTION__);return 1;} else if( pid == 0 ){ //childprintf("child is run, pid is : %d\n",getpid());sleep(5);exit(257);} else{int status = 0;pd_t ret = waitpid(-1, &status, 0);//阻塞式等待,等待5S printf("this is test for wait\n");if( WIFEXITED(status) && ret == pid ){printf("wait child 5s success, child return code is:%d.\n",WEXITSTATUS(status));}else{printf("wait child failed, return.\n");return 1;}}return 0;}

父进程阻塞等待成功

虽然返回的是257,但由于退出码只取8位,所以返回1:

非阻塞轮询等待:

void handler() {printf("临时任务\n");sleep(1);}int main() {pid_t pid;pid = fork();if (pid < 0) {printf("%s fork error\n", __FUNCTION__);return 1;} else if (pid == 0) {  // childprintf("child is run, pid is : %d\n", getpid());sleep(5);exit(1);} else {int status = 0;pid_t ret = 0;do {ret = waitpid(-1, &status, WNOHANG);  //⾮阻塞式等待if (ret == 0) {printf("child is running\n");}handler();} while (ret == 0);if (WIFEXITED(status) && ret == pid) {printf("wait child 5s success, child return code is :%d.\n",WEXITSTATUS(status));} else {printf("wait child failed, return.\n");return 1;}}return 0;}

可以看到父进程一边执行自己的“临时任务”,一边询问子进程是否结束,直到子进程结束,等待结束:

进程替换

我们之前虽然用fork创建了子进程,但是子进程和父进程执行的还是同样的代码,很多时候我们创建子进程就是为了去专门执行某一任务,这就需要用到进程替换,进程替换是通过特定的接⼝,把磁盘上另外的⼀个程序的代码和数据加载到调⽤原先进程的地址空间中。

替换原理

⽤fork创建⼦进程后执⾏的是和⽗进程相同的程序(但有可能执⾏不同的代码分⽀),⼦进程往往要调⽤⼀种exec函数以执⾏另⼀个程序。当进程调⽤⼀种exec函数时,该进程的⽤⼾空间代码和数据完全被新程序替换,从新程序的启动例程开始执⾏。调⽤exec并不创建新进程,所以调⽤exec前后该进程的id并未改变。

替换函数

#include <unistd.h>
int execl(const char *path, const char *arg, ...);
int execlp(const char *file, const char *arg, ...);
int execle(const char *path, const char *arg, ...,char *const envp[]);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execve(const char *path, char *const argv[], char *const envp[]);

这些函数如果调⽤成功则加载新的程序从启动代码开始执⾏,不再返回;如果调⽤出错则返回-1 

这里把子进程替换为一个能够读入并执行命令的程序:

#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/wait.h> 
int main(int argc, char* argv[])
{pid_t id=fork();if(id==0){     char**  myargv=&argv[1];                                                                                                                                                    execvp(myargv[0],myargv);}waitpid(id,NULL,0);return 0;
}

可以看到子进程可以收集并执行命令

相关文章:

Linux:进程:进程控制

进程创建 在Linux中我们使用fork函数创建新进程&#xff1a; fork函数 fork函数是Linux中的一个系统调用&#xff0c;用于创建一个新的进程&#xff0c;创建的新进程是原来进程的子进程 返回值&#xff1a;如果子进程创建失败&#xff0c;返回值是-1。如果子进程创建成功&a…...

量子计算在金融领域的应用与展望

在当今数字化时代&#xff0c;金融行业正面临着前所未有的技术变革。量子计算作为前沿科技领域的明珠&#xff0c;正在逐渐从实验室走向实际应用&#xff0c;为金融行业带来新的机遇和挑战。本文将探讨量子计算在金融领域的应用现状、优势以及未来的发展展望。 一、量子计算简介…...

StarRocks:一款开源的高性能分析型数据仓库

StarRocks 是一款高性能分析型数据仓库&#xff0c;使用向量化、MPP 架构、CBO&#xff08;基于成本优化&#xff09;、智能物化视图、可实时更新的列式存储引擎等技术实现多维、实时、高并发的数据分析。 StarRocks 是一个 Linux 基金会开源项目&#xff0c;采用 Apache 2.0 许…...

NLP高频面试题(四十九)大模型RAG常见面试题解析

为什么要构建RAG系统? RAG系统通过结合信息检索和生成模型,解决了LLM在知识更新、幻觉和上下文限制等方面的挑战。它允许模型在生成响应前引用外部知识库,提高答案的准确性和相关性。 RAG与大模型微调的区别? 项目RAG系统大模型微调知识更新通过更新外部知识库实现需要重…...

【NLP 68、R-BERT】

为什么划掉你的名字&#xff0c;为什么不敢与你对视 —— 25.4.21 一、R-BERT&#xff1a;基于BERT的关系抽取模型 R-BERT&#xff08;Relation BERT&#xff09;是一种用于关系抽取&#xff08;Relation Extraction&#xff09;任务的模型&#xff0c;它结合了预训练语言模型…...

Java:多线程

多线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中&#xff0c;是进程中的实际运作单位。 并发和并行 并发&#xff1a;在同一时刻&#xff0c;有多个指令在单个CPU上交替执行 并行&#xff1a;在同一时刻&#xff0c;有多个指令在多个CPU上同时执行 …...

第一章:自然语言处理

目录 1.1 自然语言处理发展史 1.2 统计语言模型发展史 统计语言模型 NNLM 模型 Word2Vec 模型 ELMo 模型 BERT 模型 大语言模型 1.3 小结 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是一门借助计算机技术研究人类语言的科学。虽…...

Git 大文件使用 Git-LFS 管理,推送失败

配置了.gitattributes文件后&#xff0c; *.jar filterlfs difflfs mergelfs -text *.so filterlfs difflfs mergelfs -text *.aar filterlfs difflfs mergelfs -text *.bin filterlfs difflfs mergelfs -text *.a filterlfs difflfs mergelfs -text 仍然推送失败 POST git-…...

[c语言日寄]免费文档生成器——Doxygen在c语言程序中的使用

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…...

RK3588上编译opencv 及基于c++实现图像的读入

参考博文&#xff1a; https://blog.csdn.net/qq_47432746/article/details/147203889 一、安装依赖包 sudo apt install build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpe…...

C++ GPU并行计算开发实战:利用CUDA/OpenCL加速粒子系统与流体模拟

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家、CSDN平台优质创作者&#xff0c;高级开发工程师&#xff0c;数学专业&#xff0c;10年以上C/C, C#, Java等多种编程语言开发经验&#xff0c;拥有高级工程师证书&#xff1b;擅长C/C、C#等开发语言&#xff0c;熟悉Java常用开…...

Java 设计模式心法之第3篇 - 总纲:三大流派与导航地图

前两章&#xff0c;我们修炼了 SOLID 这套强大的“内功心法”&#xff0c;为构建高质量软件打下了坚实根基。现在&#xff0c;是时候鸟瞰整个设计模式的“武林”了&#xff01;本文将为您展开一幅由 GoF 四人帮精心绘制的 23 种经典设计模式的“全景导航地图”。我们将探索这些…...

高级java每日一道面试题-2025年4月19日-微服务篇[Nacos篇]-Nacos未来的发展方向和规划有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: Nacos未来的发展方向和规划有哪些&#xff1f; 我回答: Nacos 作为阿里巴巴开源的服务发现、配置管理和服务治理平台&#xff0c;其未来的发展方向和规划主要体现在以下几个关键领域&#xff1a; 1. 安全性与标准化 API分类精细化…...

跳过reCAPTCHA验证的技术解析与优化实践

Google的reCAPTCHA验证系统已成为保护网站安全的核心工具之一。然而&#xff0c;频繁的验证弹窗可能降低用户体验&#xff0c;甚至导致用户流失。如何在遵守平台规则的前提下&#xff0c;通过技术优化与用户行为管理减少验证触发率&#xff0c;成为我们亟需解决的难题。 但需要…...

idea使用docker插件一键部署项目

一、首先保证我们电脑上已经安装了docker docker -v查看docker版本&#xff0c;如果不能识别&#xff0c;需要先下载docker destop&#xff0c;在官网下载正常安装即可。 安装成功就可以使用docker 命令了 二、idea下载docker插件并配置docker参数 我是通过tcp连接docker服务…...

强化学习笔记(三)——表格型方法(蒙特卡洛、时序差分)

强化学习笔记&#xff08;三&#xff09;——表格型方法&#xff08;蒙特卡洛、时序差分&#xff09; 一、马尔可夫决策过程二、Q表格三、免模型预测1. 蒙特卡洛策略评估1) 动态规划方法和蒙特卡洛方法的差异 2. 时序差分2.1 时序差分误差2.2 时序差分方法的推广 3. 自举与采样…...

[SpringMVC]请求响应参数传递

controller前置url解决业务重名 在项目中&#xff0c;常常会碰到不同的业务之间的某个方法同名的情况。例如在一个文档管理系统&#xff08;有着文档和发布者两个实体&#xff09;中&#xff0c;两个实体都有着 "add" 业务。如果两个实体相关的业务url都用 "/ad…...

在C++业务类和QML之间创建一个数据桥梁

工作中经常会遇到两种业务直接按无法直接沟通&#xff0c;此时需要建立一个桥梁将两者进行联系起来&#xff0c;假设一个C业务类&#xff0c;有一个QML UI&#xff0c; 如果将BridgeClass 类通过qmlRegisterType 注册到QML中&#xff0c;在C中如何能够调用到BridgeClass 对象吗…...

超详细mac上用nvm安装node环境,配置npm

一、安装NVM 打开终端&#xff0c;运行以下命令来安装NVM&#xff1a; curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash 然后就会出现如下代码&#xff1a; > Profile not found. Tried ~/.bashrc, ~/.bash_profile, ~/.zprofile, ~/.…...

MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用

CoreMark 1.0 介绍 CoreMark 是由 EEMBC&#xff08;Embedded Microprocessor Benchmark Consortium&#xff09;组织于 2009 年推出的一款用于衡量嵌入式系统 CPU 或 MCU 性能的标准基准测试工具。它旨在替代陈旧的 Dhrystone 标准&#xff08;Dhrystone 容易受到各种libc不同…...

YOLO11改进 | 特征融合Neck篇之Lowlevel Feature Alignment机制:多尺度检测的革新性突破

## 为什么需要重新设计特征融合机制? 在目标检测领域,YOLO系列模型因其高效的实时性成为工业界和学术界的标杆。然而,随着应用场景的复杂化(如自动驾驶中的多尺度目标、无人机图像中的小物体检测),传统特征融合策略的局限性逐渐暴露:**特征对齐不足导致语义信息错位、多…...

解决方案:远程shell连不上Ubuntu服务器

服务器是可以通过VNC登录&#xff0c;排除了是服务器本身故障 检查服务是否在全网卡监听 sudo ss -tlnp | grep sshd确保有一行类似 LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid...,fd3))返回无结果&#xff0c;表明系统里并没有任…...

Flutter路由模块化管理方案

总结记录一下Flutter路由模块管理&#xff1a; 1、创建路由基类 abstract class BaseRouteConfig {Map<String, WidgetBuilder> get routes; } 2、创建不同模块的路由配置类 // 认证模块路由 class AuthRoutes extends BaseRouteConfig {overrideMap<String, Widg…...

Java BIO、NIO、AIO、Netty面试题(已整理全套PDF版本)

什么是IO Java中的I/O&#xff08;输入/输出&#xff09;机制基于流&#xff08;Stream&#xff09;的概念实现数据的传输。流将数据序列化&#xff0c;即按照特定顺序逐次进行读写操作。简而言之&#xff0c;Java程序通过I/O流与外部设备进行数据交换。 Java类库中的I/O功能十…...

TapData × 梦加速计划 | 与 AI 共舞,TapData 携 AI Ready 实时数据平台亮相加速营,企业数据基础设施现代化

在实时跃动的数据节拍中&#xff0c;TapData 与 AI 共舞&#xff0c;踏出智能未来的新一步。 4月10日&#xff0c;由前海产业发展集团、深圳市前海梦工场、斑马星球科创加速平台等联合发起的「梦加速计划下一位独角兽营」正式启航。 本次加速营以“打造下一位独角兽企业”为目…...

一键部署k8s之EFK日志收集系统

一、部署es 1.下载安装 #下载安装 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.13.2-linux-x86_64.tar.gz #解压 [rootes software]# tar xf elasticsearch-8.13.2-linux-x86_64.tar.gz #创建运行elasticsearch服务用户并修改权限 [rootes softw…...

Python常用的第三方模块【openpyxl库】读写Excel文件

openpyxl库模块是用于处理Microsoft Excel文件的第三方库&#xff0c;可以对Excel文件中的数据进行写入和读取。 weather.pyimport reimport requests#定义函数 def get_html():urlhttps://www.weather.com.cn/weather1d/101210101.shtml #爬虫打开浏览器上的网页resprequests.…...

加油站小程序实战教程12显示会员信息

目录 1 布局搭建1.1 搭建头像1.2 显示会员等级1.3 余额显示 最终效果 我们上一篇介绍了会员注册的功能&#xff0c;会员注册后再次进入页面的时候就可以根据openid加载会员信息&#xff0c;本篇我们介绍一下显示会员的余额 1 布局搭建 我们现在在我的页面显示的是会员未开通…...

iOS中使用AWS上传zip文件到Minio上的oss平台上

1. 集成AWS相关库&#xff08;千万不要用最新的版本&#xff0c;否则会出现风格化虚拟路径&#xff0c;找不到主机名&#xff09; pod AWSS3, ~> 2.10.0 pod AWSCore, ~> 2.10.0 2. 编写集成的相关代码 - (void)uploadFileToMinIO {NSString *endPoint "http://…...

PaginationInnerInterceptor使用(Mybatis-plus分页)

引言 最近在编写SQL语句时总是想着偷懒&#xff0c;于是在前不久学习黑马点评时学到可以使用PaginationInnerInterceptor&#xff0c;于是现在我也在自己的项目中进行使用了&#xff0c;但是使用也遇到一些问题&#xff0c;如果你和我的问题一样&#xff0c;希望我的解决办法能…...

极狐GitLab CEO 柳钢受邀出席 2025 全球机器学习技术大会

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;关于中文参考文档和资料有&#xff1a; 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 2025 年 4 月 18 日至 19 日&#xff0c;2025 全球机器学习技术大会&#xff08;ML-Summit 2025&#xff09;在上海隆重举行。…...

数据仓库 vs 数据湖:架构、应用场景与技术差异全解析

目录 一、概念对比&#xff1a;结构化 vs 全类型数据 二、技术架构对比 1. 数据仓库架构特点 2. 数据湖架构特点 三、典型应用场景 数据仓库适合&#xff1a; 数据湖适合&#xff1a; 四、数据湖仓一体&#xff1a;趋势还是折中&#xff1f; 五、总结&#xff1a;如何…...

【25软考网工笔记】第三章 局域网(1)CSMA/CD、二进制指数退避算法、最小帧长计算

目录 一、CSMA/CD 1. 局域网架构概述 2. 局域网的拓扑结构 3. CSMA 1&#xff09;CSMA的三种监听算法 1、1-坚持型监听算法&#xff08;继续监听&#xff0c;不等待&#xff09; 2、非坚持型监听算法&#xff08;后退随机事件&#xff09; 3、P-坚持型监听算法 2&#…...

Harbor对接非AWS对象存储

背景说明 项目的应用完全运行在一个离线环境中&#xff0c;同时通过K8S的方式进行容器编排。需要自建一个harbor的镜像仓库。并且通过私有云提供的S3服务进行容器镜像的持久化存储。我踩的其中的一个坑就是S3的region名字非AWS的标准名称。运行时抱错如下&#xff1a; 2025-04…...

实训Day-1 漏洞攻击实战

目录 实训任务1 漏洞攻击实战一 实训任务2 漏洞攻击实战二 实训任务3 白云新闻搜索 实训任务4 手速要快 实训任务5 包罗万象 总结 今天的实训目的是为了&#xff1a;了解漏洞攻击的一般步骤&#xff1b;掌握SQL注入的基本原理&#xff1b;掌握XSS攻击的基本原理&#xff…...

Linux-网络基础

一.网络背景 网络的起源与20世纪中期的冷战背景密切相关。美苏争霸期间&#xff0c;美国国防部担心传统集中式通信系统&#xff08;如电话网络&#xff09;在核战争中容易被摧毁&#xff0c;因此急需一种去中心化、高容错的通信方式。1969年&#xff0c;美国国防部高级研究计划…...

算法 | 鲸鱼优化算法(WOA)原理,公式,应用,算法改进研究综述,完整matlab代码

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 鲸鱼优化算法 一、原理与公式二、应用领域三、算法改进研究四、完整MAT…...

[BJDCTF2020]EzPHP

这一道题里面的知识点实在是太多了&#xff0c;即使这道题是我最喜欢的RCE也有点大脑停转了&#xff0c;所以还是做个笔记&#xff0c;以后方便回忆 直接跳过打点&#xff0c;来到源码 <?php highlight_file(__FILE__); error_reporting(0); $file "1nD3x.php"…...

企业微信-自建应用

1. 创建自建应用 2. 配置小程序/H5入口 3. 准备 &#xff1a; CorpId&#xff08;企业id&#xff09;、 AgentID&#xff08;应用id&#xff09;、 CorpsecretID&#xff08;应用Secret&#xff09; 4. 配置企业可信IP 5. 如H5需要授权登录&#xff0c;那么需要配置网页授…...

[FPGA基础] 时钟篇

Xilinx FPGA 时钟管理详细文档 本文档详细介绍 Xilinx FPGA 中的时钟管理&#xff0c;包括时钟资源、时钟管理模块、设计注意事项以及最佳实践。适用于使用 Xilinx 7 系列、UltraScale 和 UltraScale 系列 FPGA 的开发者。 1. 时钟资源概述 Xilinx FPGA 提供丰富的时钟资源&a…...

高德火星坐标(GCJ-02)转WGS84坐标

高德火星坐标(GCJ-02)转WGS84坐标 1 转换算法 import mathdef gcj02_to_wgs84(lon, lat):"""高德火星坐标(GCJ-02)转WGS84坐标"""a 6378245.0 # 长半轴ee 0.00669342162296594323 # 扁率def transform_lon(x, y):ret 300.0 x 2.0 * y …...

基于opencv和PaddleOCR识别身份证信息

1、安装组件 pip install --upgrade paddlepaddle paddleocr 2、完整code import cv2 import numpy as np from paddleocr import PaddleOCR# 初始化 PaddleOCR use_angle_clsTrue, lang"ch", det_db_thresh0.1, det_db_box_thresh0.5)def preprocess_image(image…...

Day-1 漏洞攻击实战

实训任务1 漏洞攻击实战一 使用 御剑 得到网站后台地址 数据库登录与日志配置​​ 使用默认密码 root:root 登录phpMyAdmin&#xff0c;执行 SHOW VARIABLES LIKE general% 查看日志状态。 开启日志功能&#xff1a;set global general_log "ON";&#xff08;配图&…...

穿透数据迷雾:PR 曲线与 ROC 曲线的深度剖析+面试常见问题及解析

一、混淆矩阵与评价指标基础 混淆矩阵核心构成&#xff1a;混淆矩阵是分类模型性能评估的基石&#xff0c;以 22 矩阵形式呈现分类结果。其中&#xff0c;真正例&#xff08;TP&#xff09;表示实际为正类且被正确预测的样本&#xff1b;假正例&#xff08;FP&#xff09;是实…...

【Linux篇】轻松搭建命名管道通信:客户端与服务器的互动无缝连接

从零开始&#xff1a;基于命名管道实现客户端与服务器的实时通信 一. 命名管道1.1 基本概念1.2 创建命名管道1.2.1 创建方法1.2.2 示例代码&#xff1a;1.2.3 注意事项&#xff1a;1.3 与匿名管道区别 1.4 打开原则1.4.1 管道打开顺序1.4.2 阻塞行为1.4.3 管道的关闭1.4.4 关闭…...

快充协议芯片XSP04D支持使用一个Type-C与电脑传输数据和快充取电功能

快充是由充电器端的充电协议和设备端的取电协议进行握手通讯进行协议识别来完成的&#xff0c;当充电器端的充电协议和设备端的取电协议握手成功后&#xff0c;设备会向充电器发送电压请求&#xff0c;充电器会根据设备的需求发送合适的电压给设备快速供电。 设备如何选择快充…...

MySQL的窗口函数(Window Functions)

一、窗口函数核心概念 ​​窗口&#xff08;Window&#xff09;​​ 窗口是数据行的集合&#xff0c;由OVER()子句定义。它决定了函数计算的“数据范围”&#xff0c;可以是一个分区的全部行、当前行前后的行&#xff0c;或动态变化的子集。 ​​语法结构​​ SELECT window_f…...

一个很简单的机器学习任务

一个很简单的机器学习任务 前言 基于线上colab做的一个简单的案例&#xff0c;应用了线性回归算法&#xff0c;预测了大概加州3000多地区的房价中位数 过程 先导入了Pandas&#xff0c;这是一个常见的Python数据处理函数库 用Pandas的read_csv函数把网上一个共享数据集&…...

ORION:通过视觉-语言指令动作生成的一个整体端到端自动驾驶框架

25年3月来自华中科技和小米电动汽车的论文“ORION: A Holistic End-to-End Autonomous Driving Framework by Vision-Language Instructed Action Generation”。 由于因果推理能力有限&#xff0c;端到端 (E2E) 自动驾驶方法仍然难以在交互式闭环评估中做出正确决策。当前的方…...

python全栈-flask

python全栈-flask 文章目录 入门上手hello worldflask运行方式测试路由with app.test_request_context():debug模式配置flask参数动态路由数据类型自定义转换器to_pythonPostMan&#xff08;API测试查询参数的获取请求体参数上传文件其它参数url_for 函数重定向响应内容自定义响…...