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

洞察 Linux 进程管理

一、进程和线程的概念

1.进程

 (1)概念

进程是程序在操作系统中的一次执行过程,是系统进行资源分配和调度的基本单位。进程是程序的执行实例,拥有独立的资源(如内存、文件描述符等)。每个进程在创建时会被分配唯一的进程ID,即为PID,也叫进程编号。

(2)特点

资源隔离:进程拥有独立的虚拟地址空间。

独立性:进程崩溃通常不会直接影响其他进程,代表了其高隔离性的特点。

通信成本高:进程间通信(IPC)需通过管道、共享内存、信号、消息队列等机制。

创建开销大:fork()系统调用会复制父进程的上下文。

2.线程

(1)概念

线程是进程中的一个执行单元,是 CPU 调度和分派的基本单位,是进程内的执行单元,共享进程的资源(如内存、文件句柄),但拥有独立的栈和寄存器上下文。

(2)特点

资源共享:线程直接共享进程的内存、全局变量等,通信更高效。

轻量级:线程创建和切换的开销远小于进程。

同步需求:共享资源需通过互斥锁(mutex)、信号量(semaphore) 等机制避免竞态条件。

高风险:一个线程崩溃可能导致整个进程终止(共享地址空间)。

3.进程的状态

运行态(Running)进程正在 CPU 上执行,系统中处于运行态的进程在某一时刻只有一个(单核 CPU),多核 CPU 环境下可以有多个。
就绪态(Ready)进程已经准备好运行,只等待 CPU 资源分配。
阻塞态(Blocked)进程因等待某一事件(如 I/O 操作完成、信号量获取等)而暂时无法继续执行。
停止态(Stopped)进程被暂停执行,通常是收到了特定信号(如 SIGSTOP)。
僵死态(Zombie)进程已经终止,但父进程尚未回收其资源(如进程描述符等)。

4.进程和线程之间的联系与对比

(1)联系:

线程隶属于进程,且同一进程内的线程共享同一个进程ID(PID),但每个线程有唯一的线程ID(TID)

(2)对比:

进程线程
资源分配拥有独立内存空间与系统资源,如文件描述符、打开文件等,进程间资源隔离,一个进程崩溃不影响其他进程,像办公软件进程崩溃不影响浏览器进程。共享所属进程资源,无独立系统资源,但有独立执行栈与程序计数器记录执行状态。

调度

是系统资源分配和调度基本单位,调度时需保存和恢复内存映射、寄存器状态等大量上下文信息,开销大。是 CPU 调度和分派基本单位,因共享进程资源,调度时仅保存和恢复执行栈、程序计数器等少量信息,开销小。

创建、销毁和切换开销

创建要分配独立内存与系统资源,销毁需释放,创建、销毁及切换时保存和恢复大量上下文信息,开销均大。创建和销毁仅分配、释放少量资源,切换时保存和恢复少量上下文信息,开销小且速度快。

通信机制

进程间通信(IPC)依靠管道、消息队列等专门机制,较复杂,要额外同步、互斥操作保证数据安全一致。可直接访问共享内存变量来通信,方式简单高效,但多线程同时访问共享资源易出现数据竞争,需锁等同步机制保障线程安全。

健壮性

进程间资源隔离,健壮性较高,一个进程崩溃通常不影响其他进程。同一进程内线程共享资源,一个线程崩溃可能致使整个进程崩溃,健壮性较低。

二、查看进程状态的相关命令

查看进程状态的命令有(常用):ps、ps ax、ps aux、pgrep、pidof、top

1、ps相关命令(ps、ps ax、ps aux

ps命令的常用参数表

参数说明示例
基础选项
a显示所有用户的进程(包括其他用户)。ps a
x显示无控制终端的进程(如守护进程)。ps x
ax组合使用:显示所有进程(包括无终端的进程)。ps ax
信息控制
-o <字段>自定义输出字段(支持 piduser%cpucommttystat 等)。ps axo pid,user,comm,%cpu
u显示详细资源占用(用户、CPU、内存等,类似 ps aux)。ps aux
-e显示所有进程(等效于 ax,但属于Unix风格参数)。ps -e
筛选过滤
-p <PID>显示指定PID的进程。ps ax -p 1234
-U <用户>显示指定用户的进程。ps ax -U root
-C <命令>按进程名过滤(支持部分匹配)。ps ax -C nginx
--ppid <PID>显示父进程为指定PID的子进程。ps ax --ppid 1
格式化输出
--sort按字段排序(+%cpu 升序,-%mem 降序)。ps ax --sort=-%cpu
-H显示进程层级关系(树形结构)。ps axH
-f显示完整格式(包括命令行参数)。ps axf
线程查看
-L显示线程(LWP列)。ps axL
-T显示线程(SPID列)。ps axT

ps ax的默认输出列

列名说明示例
PID进程的唯一标识符(Process ID)。1234
TTY进程关联的终端设备:
?:无控制终端(如守护进程)。
pts/0:虚拟终端或SSH会话。
? 或 pts/0
STAT进程状态(由多个字符组成,见下方详细说明)。SsR+D
TIME进程累计占用CPU的时间(格式为分钟:秒)。00:0110:23
COMMAND启动进程的命令名称或命令行参数:
[] 表示内核线程。
/usr/bin/nginx[kworker]

 ps aux的默认输出列

列名说明示例
USER进程的所有者(用户账号)。rootnginx
PID进程的唯一标识符(Process ID)。1234
%CPU进程占用CPU的百分比(单位:%),基于最近一次刷新周期内的使用情况。0.599.0
%MEM进程占用物理内存的百分比(单位:%)。2.315.8
VSZ虚拟内存大小(Virtual Memory Size,单位:KB),即进程申请的虚拟内存总量。123456(约123MB)
RSS实际使用的物理内存(Resident Set Size,单位:KB),即进程当前占用的非交换内存。65432(约65MB)
TTY进程关联的终端设备:
?:无控制终端(如守护进程)。
pts/0:虚拟终端或SSH会话。
? 或 pts/0
STAT进程状态(由多个字符组成,见下方详细说明)。SsR+Dl
START进程启动时间(格式为小时:分钟或日期,取决于运行时长)。10:00Jan01
TIME进程累计占用CPU的时间(格式为分钟:秒)。00:01120:45
COMMAND启动进程的命令名称或命令行参数:
[] 表示内核线程。
/usr/bin/nginx[kworker]

2、pgrep

作用:

pgrep 用于根据 进程名、用户、组等条件快速查找进程PID,默认仅输出匹配的进程ID(PID)。
ps/grep组合相比,pgrep更高效且语法简洁。 

pgrep常用参数表

参数说明输出新增内容示例
基础过滤
-u <用户>按用户过滤进程(用户名或UID)。仅PIDpgrep -u root
-G <组>按组过滤进程(组名或GID)。仅PIDpgrep -G www-data
-x精确匹配进程名(需全名匹配)。仅PIDpgrep -x sshd
输出控制
-l显示进程名(与PID一同输出)。进程名1234: nginx
-a显示完整命令行(需结合-l)。完整命令1234: nginx: worker process
-c输出匹配进程的数量(计数)。数字3
-d <分隔符>自定义PID分隔符(默认为换行)。无,格式变化pgrep -d ',' nginx → 1234,5678
信号与状态
-f匹配完整命令行(而非仅进程名)。无,过滤条件变化pgrep -f "nginx -g"
-n仅显示最新(最近启动)的进程PID。仅PIDpgrep -n nginx
-o仅显示最旧(最早启动)的进程PID。仅PIDpgrep -o nginx

 

3、pidof

命令:

pidof 进程名称示例
pidof nginx      # 输出:1234 5678 (多个nginx进程的PID)
pidof sshd       # 输出:8910       (sshd守护进程的PID)

显示单个PID(-s):

pidof -s <进程名>  # 仅返回一个PID(通常是最新的进程)示例
pidof -s python3  # 输出:9999 (最近启动的Python3进程PID)

pidof常用参数表 

参数说明
-s仅返回一个PID(单实例进程适用)。
-c仅返回与当前运行环境相同根目录(chroot)下的进程PID。
-x同时匹配执行该脚本的Shell进程PID(用于脚本文件)。
-o <PID>排除指定PID的进程(可多次使用,如 -o 1234 -o 5678)。
-d <分隔符>自定义PID分隔符(默认是空格)。

4、top

概念:

top 是 Linux 系统中用于 实时监控系统资源使用情况和进程状态 的核心命令行工具。它能动态显示 CPU、内存、交换分区、进程负载等关键指标,帮助用户快速定位性能瓶颈。

(1)top 的核心功能
① 实时刷新:

默认每 3 秒更新一次数据(可配置)。

② 多维度展示:
系统资源概览:

CPU、内存、负载、运行时间等。

进程列表:

按资源占用排序的进程详情(PID、用户、CPU、内存等)。

③ 交互式操作:

支持动态排序、筛选、终止进程等操作。

(2)top内容详解(实例演示)

第一行:系统时间、运行时长、登录用户数、平均负载。

第二行:进程总数及状态统计(运行、睡眠、停止、僵尸)。

第三行:CPU 使用率(用户态 us、内核态 sy、空闲 id、等待I/O wa 等)。

第四行:物理内存使用情况(总量、空闲、已用、缓存)。

第五行:交换分区使用情况。

关键字眼:

PID:进程ID。

USER:进程所有者。

%CPU:CPU 占用百分比。

%MEM:物理内存占用百分比。

VIRT:虚拟内存总量(KB)。

RES:实际物理内存占用(KB)。

SHR:共享内存大小(KB)。

S:进程状态(R=运行, S=睡眠, Z=僵尸等)。

TIME+:累计 CPU 占用时间。

三、进程的前/后台调用

<ctrl>+<z>

在终端中,当一个进程正在前台运行并占用着 shell 时,按下 Ctrl + Z 组合键可以将该进程暂停并打入后台挂起。此时,进程处于停止状态,但并未终止,它会释放对终端的控制权,让用户可以在 shell 中继续输入其他命令。

bg

用于将后台挂起的进程在后台运行起来。

fg

用于把后台进程调回前台。

命令 &

在命令后面加上 &,可以让该命令对应的进程在后台运行。

jobs

命令用于查看当前 shell 中在后台的所有工作,即显示所有后台进程的信息,包括进程的编号、状态以及对应的命令等。

四、进程的优先级

1、概念

在 Linux 系统中,进程优先级决定了进程获取 CPU 时间的顺序。优先级高的进程会更频繁地被调度执行,这对系统性能调优和资源管理至关重要。

2、优先级种类

(1)概念

进程也分为“可控的”和“不可控的”,“可控”,说明进程可以被用户或管理员进行修改或手动设置,这种即为静态优先级,而“不可控”,即不能被用户或管理员进行修改等操作,由系统内核根据进程的运行状态来调整(如等待时间、CPU 使用率),优化调度公平性,避免低优先级进程长期饥饿,这种即为动态优先级。

(2)静态优先级的调节

用户通过 nice 或 renice 设置,范围 -20(最高)到 19(最低),能直接影响普通进程的初始调度权重。

nice值
        nice值用来调整控制进程优先级的,nice值越低(越负),优先级就越高;Nice 值范围:-20(最高优先级)到 19(最低优先级),默认值为 0

命令格式:

nice -n <调整值> <命令>   # 调整值为目标 Nice 值与默认值(0)的差值

示例  :

解释:用指定权限-5来打开cat命令 

renice值

 renice命令可以修改进程的nice值,如renice -5 3595,其中 -5 为你想要修改的nice值为多少,后面的编号3595即为进程编号

Tips:查看进程编号可以用监视(watch)来监控进程的pid,即可看到进程编号,也可以用vim &来查看

命令格式:

renice -5(想要修改的nice值) 16410(进程编号)

(3)进程状态字符解释

字符说明
R进程正在运行或在就绪队列中等待 CPU 分配。
S可中断睡眠:等待事件完成(如 I/O 操作、信号)。
D不可中断睡眠:通常等待硬件操作(如磁盘 I/O),不能被信号中断。
Z僵尸进程:进程已终止,但其退出状态未被父进程回收。
T进程被作业控制信号(如 SIGSTOPSIGTSTP)暂停。
t进程被调试器暂停(如通过 ptrace 跟踪)。
X进程完全终止(极少见,通常瞬间消失)。
<高优先级:进程的 Nice 值为负(优先级高于默认)。
N低优先级:进程的 Nice 值为正(优先级低于默认)。
s会话领导者:进程是会话(Session)的首进程(如 Shell 进程)。
l多线程:进程是多线程的(有多个轻量级进程 LWP)。
+前台进程组:进程属于终端的前台进程组(可接收输入)。
L锁定内存:进程将部分内存锁定(如通过 mlock 避免换出)。
I空闲进程:内核线程处于空闲状态(某些系统显示为 I)。

五、进程信号

1.概念:

进程信号是操作系统用于在进程之间传递事件通知的一种机制,它可以让操作系统、其他进程或进程自身向某个进程发送信号,以通知该进程发生了特定的事件,进程接收到信号后会根据信号的类型和自身的状态做出相应的反应。

2.用户可控制的进程信号(表格)

信号名称信号值默认行为典型用途可否捕获/忽略
SIGHUP1终止进程通知进程重新加载配置(如 nginx -s reload)。
SIGINT2终止进程用户按下 Ctrl+C 中断前台进程。
SIGQUIT3终止进程并生成核心转储用户按下 Ctrl+\ 强制终止并调试(生成 core dump)。
SIGKILL9强制终止进程无条件终止进程(无法被捕获或忽略)。
SIGTERM15终止进程请求进程正常退出(允许清理资源),默认的 kill 信号。
SIGSTOP17,19,23暂停进程暂停进程(不可被捕获或忽略),用户按下 Ctrl+Z(实际发送 SIGTSTP)。
SIGCONT18,25,26继续运行恢复被暂停的进程(如 bg/fg 命令)。
SIGTSTP20暂停进程用户按下 Ctrl+Z 暂停前台进程(可捕获处理)。
SIGUSR110终止进程用户自定义用途(如通知进程切换日志文件)。
SIGUSR212终止进程用户自定义用途(如通知进程更新配置)。

3、控制进程信号的命令

(1)killall命令

该命令可以向内核询问一个进程存不存在,如:

killall -<信号名或值> <进程名>     # 向所有同名进程发送信号如
killall -0(信号编号) gedit(进程的名字或编号)

其中的 -0 位为信号编号,且有许多其他数字代表,但用户可以控制的常用信号只有代码这些(上面的表有详细的介绍):-1  -2  -3  -15  -9  -18  -19  -20

(2)kill命令

kill可以精准的将一个进程杀死(结束)如:

kill -<信号名或值> <PID>          # 向指定 PID 发送信号如
kill -9(信号编号) 16410(进程的名字或编号)

(3)pkill命令

pkill -<信号名或值> <模式>         # 按模式匹配进程并发送信号

pkill可以终止一个用户

我们先创建一个用户test来测试pkill命令,并登录上此test用户

另起一个终端命令行,输入pkill命令

六、systemd守护进程

1.概念

守护进程(Daemon)是一种在后台持续运行的特殊进程,它不与终端直接交互,通常在系统启动 时自动启动,并在系统关闭时才停止。

2.作用

守护进程的设计目的是为系统提供各种服务,例如网络服务(如 HTTP 服务器、FTP 服务器)、日 志服务、定时任务服务等。它们默默地在后台运行,为其他进程和用户提供支持,确保系统的正常 运行。

3.特性(核心)

特性说明
无控制终端脱离终端运行(TTY 显示为 ?),不接收用户直接输入。
后台运行默默执行任务,不占用用户交互界面。
独立会话创建新会话(Session)并成为会话领导者(Session Leader)。
脱离父进程通过两次 fork() 脱离原进程,由 init(PID=1)接管。
固定工作目录通常将工作目录设置为根目录(/)或特定目录(如 /var/run)。
日志输出将标准输入/输出重定向到文件(如 /var/log)或 syslog

4.常用命令表

命令作用示例
systemctl start <服务名>启动服务sudo systemctl start nginx
systemctl stop <服务名>停止服务sudo systemctl stop sshd
systemctl restart <服务名>重启服务sudo systemctl restart mysql
systemctl reload <服务名>重新加载配置(不重启服务)sudo systemctl reload nginx
systemctl status <服务名>查看服务状态systemctl status docker
systemctl enable <服务名>启用开机自启sudo systemctl enable httpd
systemctl disable <服务名>禁用开机自启sudo systemctl disable postfix
systemctl is-enabled <服务名>检查服务是否开机自启systemctl is-enabled cron
systemctl mask <服务名>禁用服务(阻止手动或自动启动)sudo systemctl mask apache2
systemctl unmask <服务名>解除禁用sudo systemctl unmask apache2

相关文章:

洞察 Linux 进程管理

一、进程和线程的概念 1.进程 &#xff08;1&#xff09;概念 进程是程序在操作系统中的一次执行过程&#xff0c;是系统进行资源分配和调度的基本单位。进程是程序的执行实例&#xff0c;拥有独立的资源&#xff08;如内存、文件描述符等&#xff09;。每个进程在创建时会被…...

http协议版本的区别 -- 2和3

目录 http2和http3的区别 传输层协议 QUIC协议 介绍 连接建立与握手 建立安全连接的过程 RTT 建连为什么需要两个过程 原因 解决 QUIC协议的1-RTT 建连 必要性 连接过程 第一次握手(Client Hello) 版本号 key_share 其他 第二次握手 介绍 Server Hello 身…...

Vue2-实现elementUI的select全选功能

文章目录 使用 Element UI 的全选功能自定义选项来模拟全选 在使用 Element UI 的 el-select组件时&#xff0c;实现“全选”功能&#xff0c;通常有两种方式&#xff1a;一种是使用内置的全选功能&#xff0c;另一种是通过自定义选项来模拟全选。 使用 Element UI 的全选功能…...

Spring Boot 与 TDengine 的深度集成实践(四)

优化与扩展 批量插入数据 在实际应用中&#xff0c;当需要插入大量数据时&#xff0c;逐条插入会导致性能低下&#xff0c;因为每次插入都需要建立数据库连接、解析 SQL 语句等操作&#xff0c;这些操作会带来额外的开销 。为了提高数据插入效率&#xff0c;我们可以采用批量…...

2025年【山东省安全员C证】考试题及山东省安全员C证考试内容

在当今建筑行业蓬勃发展的背景下&#xff0c;安全生产已成为企业生存与发展的基石。安全员作为施工现场安全管理的直接责任人&#xff0c;其专业能力和资质认证显得尤为重要。山东省安全员C证作为衡量安全员专业水平的重要标准&#xff0c;不仅关乎个人职业发展&#xff0c;更直…...

提升Spring Boot开发效率的Idea插件:Spring Boot Helper

一、Spring Boot Helper插件介绍 Spring Boot Helper是一款专为Spring Boot开发者设计的IntelliJ IDEA插件&#xff0c;它提供了丰富的功能来简化和加速Spring Boot应用程序的开发过程。 该插件能够智能识别Spring Boot项目结构&#xff0c;提供专属的代码生成、配置辅助和运…...

【USTC 计算机网络】第三章:传输层 - 面向连接的传输:TCP

本文介绍了面向连接的传输协议&#xff1a;TCP&#xff0c;首先介绍 TCP 报文段的结构以及如何设置超时定时器&#xff0c;接着介绍 TCP 如何实现可靠数据传输以及流量控制&#xff0c;最后介绍 TCP 中最重要的三次握手与四次挥手的连接建立与关闭过程。 1. TCP 概述与段结构 …...

Linux主要开发工具之gcc、gdb与make

此系列还有两篇&#xff0c;大家想完整掌握可以阅读另外两篇 Linux文本编辑与shell程序设计-CSDN博客 Linux基础知识详解与命令大全&#xff08;超详细&#xff09;-CSDN博客 1.gcc编译系统 1.1 文件名后缀 文件名后缀 文 件 类 型 文件名后缀 文 件 类 型 .c C源…...

23种设计模式-行为型模式-观察者

文章目录 简介问题解决代码关键实现说明 总结 简介 观察者是一种行为设计模式&#xff0c; 允许你定义一种订阅通知机制&#xff0c; 可在事件发生时通知多个“观察/订阅”该对象的其他对象。 问题 假如你有两种类型的对象: 顾客和商店。顾客对某个新品非常感兴趣&#xff0…...

去中心化预测市场

去中心化预测市场 核心概念 预测市场类型&#xff1a; 类别型市场&#xff1a;二元结果&#xff08;YES/NO&#xff09;&#xff0c;例如“BTC在2024年突破10万美元&#xff1f;” 多选型市场&#xff1a;多个选项&#xff08;如总统候选人&#xff09;&#xff0c;赔付基于…...

springboot-ai接入DeepSeek

1、引入pom依赖 <dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId> </dependency><dependencyManagement><dependencies><dependency><groupId>o…...

【C语言】数据在内存中的储存(整形)

目录 前言&#xff1a; 预备知识 整数在内存中的储存 原码 反码 补码 总结&#xff1a; 前言&#xff1a; 在上两章中讲解了五大内存函数&#xff0c;其中memchr函数&#xff0c;这个函数考察到数据内存的存储。 接下来为大家讲解整数在内存中的储存。 预备知识 认识…...

PCL 树木树干粗提取(地基数据,TLS)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 主要的思路如下: 1、首先,使用之前的CSF算法提取点云的地面点,在提取的过程中我们可以得到一个布料结构(地面模型)。 2、在得到这个布料结构之后,我们也就可以得到整个地面模型的高度了,之后我们只需要遍历每…...

Spring 中的 IOC

&#x1f331; 一、什么是 IOC&#xff1f; &#x1f4d6; 定义&#xff08;通俗理解&#xff09;&#xff1a; IOC&#xff08;Inversion of Control&#xff0c;控制反转&#xff09; 是一种设计思想&#xff1a;对象不再由你自己创建和管理&#xff0c;而是交给 Spring 容器…...

尚硅谷2019版Java集合和泛型

第十一章 Java集合框架 集合框架全景图 mindmaproot((Java集合))Collection单列List有序可重复ArrayListLinkedListVectorSet无序唯一HashSetLinkedHashSetTreeSetMap双列HashMapLinkedHashMapTreeMapHashtablePropertiesToolsCollectionsArrays三大核心接口对比 特性ListSe…...

车载诊断架构 --- 整车重启先后顺序带来的思考

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...

华为eNSP:实验 配置单区域集成ISIS

单区域集成ISIS是一种基于中间系统到中间系统&#xff08;IS-IS&#xff09;协议的网络架构优化方案&#xff0c;主要用于简化网络设计并提升数据传输效率。其核心特点包括&#xff1a; ‌单一区域部署‌ ISIS协议在单一逻辑区域内运行&#xff0c;消除多区域间的分层复杂性&am…...

常见框架漏洞(五)----中间件IIS6

一、【PUT漏洞】 漏洞描述&#xff1a;IIS Server 在 Web 服务扩展中开启了 WebDAV &#xff0c;配置了可以写⼊的权限&#xff0c;造成任意⽂件上传。 版本&#xff1a;IIS 6.0 1. 环境 fofa搜素环境&#xff1a;"IIS-6.0" 或者环境搭建&#xff1a;本地搭建2003…...

leetcode221.最大正方形

class Solution {public int maximalSquare(char[][] matrix) {int result 0; // 记录正方形边长int m matrix.length, n matrix[0].length;int[][] dp new int[m 1][n 1];// 动态规划for (int i 1; i < m; i) {for (int j 1; j < n; j) {if (matrix[i - 1][j - …...

C++实现AVL树

一 AVL树的概念 上上节我们学习了二叉搜索树&#xff0c;他的理想查找的时间复杂度是o(log n)&#xff0c;但是如果是下面这种情况&#xff0c;那么它的时间复杂度就会变成o(n). 这种情况就是出现一边高的那种&#xff0c;它的个数和它的高度相差不大。 那么这样就会把二叉搜索…...

Linux系统安全及应用

目录 一.账号安全措施 1.1系统账号清理 1.1.1将非登录用户的shell设为无法登录 1.1.2删除无用用户 userdel 1.1.3锁定账号文件 1.1.4锁定长期不使用的账号 1.2密码安全控制 1.2.1 对新建用户 1.2.2对已有用户 1.3命令历史限制 1.3.1临时清除历史命令 1.3.2限制命令…...

JAVA反序列化深入学习(十三):Spring2

让我们回到Spring Spring2 在 Spring1 的触发链上有所变换&#xff1a; 替换了 spring-beans 的 ObjectFactoryDelegatingInvocationHandler使用了 spring-aop 的 JdkDynamicAopProxy &#xff0c;并完成了后续触发 TemplatesImpl 的流程 简而言之&#xff0c;换了一个chain&am…...

迭代器运算详解(四十二)

1. 迭代器的随机访问运算 对于 vector 和 string 这样的容器&#xff0c;它们的迭代器支持以下随机访问运算符&#xff1a; 运算符说明iter n返回一个新的迭代器&#xff0c;该迭代器比原来的迭代器 iter 向前移动了 n 个位置&#xff08;即指向后面的第 n 个元素&#xff0…...

Linux中Squid服务常用操作

在 Linux 中 Squid 服务常用操作介绍 1. Squid 基础操作 启动 Squid # 前台启动&#xff08;调试用&#xff09; squid -N -d 1# 后台启动&#xff08;-s 表示将日志输出到 syslog&#xff09; squid -s停止 Squid # 安全停止&#xff08;需配置 pid_file&#xff09; squid…...

Linux操作系统--进程的概念

目录 1.了解进程前的前景知识 冯诺依曼体系结构 操作系统(OS) 2.进程 2.1进程的概念 2.2描述进程-PCB 2.2.1task_struct 2.3查看进程 2.4通过系统调用获取进程的标识符 2.5认识fork()--创建进程 该专栏会持续更新 更新时间一周一更。下周更新内容进程状态 1.了解进程前…...

C++假期练习

思维导图 牛客练习...

HTML零基础入门笔记:狂神版

前言 本笔记是学习狂神的java教程&#xff0c;建议配合视频&#xff0c;学习体验更佳。 【狂神说Java】HTML5完整教学通俗易懂_哔哩哔哩_bilibili 第1-2章&#xff1a;Java零基础入门笔记&#xff1a;(1-2)入门&#xff08;简介、基础知识&#xff09;-CSDN博客 第3章&…...

算法竞赛备赛——【图论】链式前向星

图论 图的存储方式&#xff1a; 通用的三种&#xff1a;邻接矩阵、邻接表、边集数组 有向图&#xff1a;十字链表 无向图&#xff1a;多重邻接表 刷题常用&#xff1a;邻接矩阵、链式前向星&#xff08;邻接表变形&#xff09; 链式前向星 算法题常用: 邻接矩阵、二维vector模…...

JAVA_类和对象

目录 1.面向对象的初步认知 1.1.什么是面向对象 1.2.面向对象与面向过程 2.类的定义和使用 2.1.简单认识类 2.2类的定义格式 2.3.练习 学生类 动物类&#xff08;可爱猫猫&#x1f431;&#xff09; 3.类的实例化 3.1.什么是实例化 3.2.类和对象的说明 4.this引用…...

高频面试题(含笔试高频算法整理)基本总结回顾65

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…...

数据库系统-数据库控制

并发控制 事务的ACID特性&#xff1a; 原子性&#xff08;Atomicity&#xff09;&#xff1a;事务包含的所有操作要么全部成功&#xff08;commit提交&#xff09;&#xff0c;要么全部失败&#xff08;rollback回滚&#xff09;一致性&#xff08;Consistency&#xff09;&a…...

Python Cookbook-5.3 根据对象的属性将对象列表排序

任务 需要根据各个对象的某个属性来完成对整个对象列表的排序。 解决方案 DSU方法仍然一如既往地有效: def sort_by_attr(sed,attr):intermed [ (getattr(x,attr),i,x) for i,x in enumerate(seg)]intermed.sort()return [ x[-1] for x in intermed def sort_by_attr_inpl…...

Java MCP SDK 开发笔记(一)

MCP 简介 AI 大模型诞生之初&#xff0c;其高度模拟人的对话之能力惊为天人。但我们肯定不希望止步于此—— 工具化就是我们希望 AI 能够完成的目标&#xff0c;由此可以从单纯的对话发展为代替繁复人力的“干活”。这条道路上毋庸置疑 AI 大模型任重道远。而 MCP(Model Contr…...

AF3 OpenFoldDataLoader类_prep_batch_properties_probs方法解读

AlphaFold3 data_modules 模块的 OpenFoldDataLoader 类的 _prep_batch_properties_probs 方法是为每个批次数据准备 recycling 维度 的概率分布。它将根据配置文件中的设定为每个批次数据生成 recycling 轮次的概率分布,并存储到 prop_probs_tensor 中,用于后续抽样选择特定…...

寻找字符串数组中的最长共同前缀字符串

问题描述&#xff1a;给定一个字符串数组 strs&#xff0c;编写一个函数来找到这些字符串的最长公共前缀字符串&#xff0c;如果没有则返回空字符串"" 算法思路 横向扫描法&#xff1a; 从数组的第一个字符串开始&#xff0c;逐个和后面的字符串比较&#xff0c;逐…...

leetcode_数组 56. 合并区间

56. 合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&#xff1a;int…...

Jenkins学习(B站教程)

文章目录 1.持续集成CI2.持续交付CD3.持续部署4.持续集成的操作流程5.jenkins简介6.后续安装部署&#xff0c;见视频 bilibili视频 Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具&#xff0c;起源于Hudson&#xff08;Hudson是商用的&#xff09;&#xff0c;主要用…...

学习笔记—C++—类和对象(一)

目录 类和对象 类的定义 类定义格式 访问限定符 类域 实例化 实例化概念 对象的大小 this指针 C和C语言实现Stack对比 类和对象 类的定义 类定义格式 ● class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后…...

PyTorch 深度学习 || 6. Transformer | Ch6.3 Transformer 简单案例

1. 简单案例 这个代码是一个简单的 Transformer 模型的实现,这个例子展示了一个基本的序列到序列(seq2seq)任务,比如将一个数字序列转换为另一个数字序列。可以用于学习和理解 Transformer 的基本结构和工作原理。 import torch import torch.nn as nn import math# 位置…...

体育风暴篮球足球体育球员综合资讯网站模板

源码名称&#xff1a;篮球足球体育球员综合资讯网站模板 开发环境&#xff1a;帝国cms7.5 空间支持&#xff1a;phpmysql 带软件采集&#xff0c;可以挂着自动采集发布&#xff0c;无需人工操作&#xff01; 演示地址&#xff1a;https://www.52muban.com/shop/184016.html …...

Visual Studio Code SSH 连接超时对策( keep SSH alive)

文章目录 问题解决方法一&#xff1a;配置服务端关于ClientAliveInterval和ClientAliveCountMax1、打开终端&#xff0c;打开SSH配置文件&#xff1a;输入以下命令&#xff1a;2、打开配置文件后&#xff0c;添加以下内容&#xff1a;3、添加后&#xff0c;Esc按 <Enter>…...

Docker容器中的ubuntu apt update报错 解决办法

问题现象 # apt update Get:1 http://archive.ubuntu.com/ubuntu noble InRelease [256 kB] Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB] Err:2 http://security.ubuntu.com/ubuntu noble-security InRelease At least one invalid signa…...

CV - 目标检测

物体检测 目标检测和图片分类的区别&#xff1a; 图像分类&#xff08;Image Classification&#xff09; 目的&#xff1a;图像分类的目的是识别出图像中主要物体的类别。它试图回答“图像是什么&#xff1f;”的问题。 输出&#xff1a;通常输出是一个标签或一组概率值&am…...

linux提权 corn 提权

corn提权 corn的基本使用方法 corn的作用就是可以定时的完成一下任务&#xff08;如备份一下log 或者清除一下日志文件 这些就是运维人员用的&#xff09; 先找一下定时任务的工作表 cat /bin/corntab 这个是普通用户 我们直接看都看不了 说明什么说明这个 是root高权限执…...

1Panel安装失败 国内docker安装失败

本文仅针对学习交流&#xff0c;只为了帮助计算机相关专业大学生个人技能实操而记录 非学习目的严禁学习&#xff01;&#xff01;&#xff01;否则后果自负 1、离线安装1Panel&#xff08;不需要手动安装docker&#xff0c;离线安装包里包括了docker&#xff09; 离线包下载地…...

Excel + VBA 实现“准实时“数据的方法

Excel 本身是静态数据处理工具,但结合 VBA(Visual Basic for Applications) 可以实现 准实时数据更新,不过严格意义上的 实时数据(如毫秒级刷新)仍然受限。以下是详细分析: 1. Excel + VBA 实现“准实时”数据的方法 (1) 定时刷新(Timer 或 Application.OnTime) Appl…...

请问你怎么看待测试,指导哪些测试的类型,有用过哪些测试方法?

作为深耕测试领域多年的博主,我始终认为测试是软件质量的守护者,更是推动研发流程优化的催化剂。以下从测试认知、分类体系到实战方法论,结合具体案例为你系统拆解: 一、测试的本质认知 测试≠找 Bug,而是通过系统性验证回答三个核心问题: 软件是否符合用户需求?系统在…...

详解 Redis repl_backlog_buffer(如何判断增量同步)

一、repl_backlog_buffer 复制积压缓冲区&#xff08;Replication Backlog Buffer&#xff09; 是一个环形内存区域&#xff08;Ring Buffer&#xff09;&#xff0c;用于临时保存主节点最近写入的写命令&#xff0c;以支持从节点断线重连后的增量同步。 1.1 三个复制偏移量 …...

工业操作系统国产化替代的战略路径与挑战分析

一、政策背景与战略意义 工信部提出的 2027 年替换 80 万套工业操作系统计划&#xff0c;是中国制造业向智能化转型的核心举措。该政策旨在通过国产化替代&#xff0c;解决工业领域 “缺芯少魂” 的问题&#xff0c;构建自主可控的工业软件生态体系。当前&#xff0c;中国工业操…...

JMeter接口性能测试从入门到精通

前言&#xff1a; 本文主要介绍了如何利用jmter进行接口的性能测试 1.在测试计划中添加线程组 1.1.线程组界面中元素含义 如果点击循环次数为永远&#xff1a; 2.添加HTTP取样器 2.1.填写登录接口的各个参数 2.2.在线程组下面增加查看结果树 请求成功的情况&#xff1a; 请求…...