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

CPU平均负载高问题定位分析

一、Linux操作系统CPU平均负载

1.1什么是CPU平均负载

1.2 怎么查看平均负载数值

二、Linux操作系统CPU使用率和平均负载区别

CPU使用率和平均负载区别

三、阿里云Linux操作系统CPU压测环境准备

3.1 核心命令+应用场景

3.2 模拟生产环境出现的多种问题环境准备

分析工具安装:sysstat

两大模拟问题工具介绍+安装

四、Linux性能优化诊断之pidstat+mpstat 命令说明(一)

sysstat 工具包的命令 mpstat+pidstat

五、CPU密集型应用Demo性能指标分析

压测工具 stress 

 Demo 模拟CPU密集型应用,系统是2核

六、CPU密集型应用-内核态Demo性能指标分析

 压测工具 stress 

 Demo 模拟CPU密集型应用,系统是2核

七、IO密集型应用Demo性能指标分析

 压测工具工具 stress 

 Demo 模拟IO密集型应用,系统是2核

八、多进程调度Demo性能指标分析

Demo 大量等待CPU的进程调度 导致平均负载升高,CPU使用率也会比较高,系统是2核 

九、Linux性能优化诊断pidstat+mpstat(二)

十、Linux性能监控命令vmstat

十一、CPU上下文切换Demo性能指标分析

cpu上下文切换知识点:

sysbench

命令总结


一、Linux操作系统CPU平均负载

1.1什么是CPU平均负载

单位时间内 系统处于【可运行状态】【不可中断状态】的平均进程数,就是平均活跃进程数

【可运行状态】 
    正在使用 CPU 或者正在等待 CPU 的进程
    用 ps aux命令看到的,处于 R 状态(Running 或 Runnable)的进程

【不可中断状态】
    正处于内核态关键流程中的进程,且流程不可打断的,
    比如 等待硬件设备的 I/O 响应,为了保证数据的一致性,进程向磁盘读写数据时,在得到磁盘响应前是不能被其他进程或者中断打断的
    ps  aux命令中 D 状态 的进程  Uninterruptible Sleep

 

 1.2 怎么查看平均负载数值

load average:后的3个数字就分别代表着1分钟,5分钟,15分钟的CPU平均负载
查看服务器总的逻辑cpu个数【cat /proc/cpuinfo| grep "processor"| wc -l】

如果平均负载数字是2,那么在2个CPU核数时候,刚刚好利用,那么在4个CPU核数的时候,则有50%空闲

分析:
1,5,15分钟的数值相差不大,说明负载很平稳
如果 1 分钟的值远小于 15 分钟的值,说明系统最近 1 分钟的负载在降低,而过去 15 分钟内却有很大的负载
如果 1 分钟的值远大于 15 分钟的值,最近 1 分钟的负载在增加,平均负载接近或超过了 CPU 的个数,意味着系统正在 发生过载的问题,持续的长时间则说明出现了问题需要优化

举例:在一个单核CPU 系统平均负载为 1.80,0.90,5.48
在过去 1 分钟内,系统有 80% 的超载,而在 15 分钟内,有 448% 的超载,从整体趋势来看,系统的负载在降低

二、Linux操作系统CPU使用率和平均负载区别

CPU使用率
    CPU 非空闲态运行的时间占比,反映 CPU 的繁忙程度,和平均负载不一定完全一致
举例:
开发一个网站前期有2个前端,2个后端 也就是4核,
前期都很忙,4个人都有任务,这时候平均负载高,利用率也高
但是后期项目进入测试阶段了,前后端人员都在等待测试结果
这个时候cpu利用率就低了,但是负载依然是高的 因为4个人都在等

生产系统的 CPU 总使用率不要超过 70~80%
比如:
单核 CPU 1s 内非空闲态运行时间为 0.8s,那么它的 CPU 使用率就是 80%
双核 CPU 1s 内非空闲态运行时间分别为 0.4s 和 0.6s,总体 CPU 使用率就是 (0.4s + 0.6s) / (1s * 2) = 50%

Linux的 top 命令查看 CPU 使用率:

CPU使用率和平均负载区别

首先了解:
CPU密集型应用 也叫计算密集型,表示该任务需要大量的运算,没有阻塞CPU一直全速运行
     比如对视频进行高清解码、机器学习和深度学习的模型训练等
IO密集型应用  程序需要大量I/O操作,大部分的时间是CPU在等IO (硬盘/内存) 的读写操作
    CPU使用率低,但等待IO 也会导致平均负载升高
    比如:数据库交互,文件上传下载,网络数据传输
    当线程进行 I/O 操作 CPU 空闲时,启用其他线程继续使用 CPU,提高 CPU 的使用率
    就跟你上班的时候没干太多活,光在5个项目中来回启动服务切换,导致压力大,但是对公司来说[利用率低]没产出

区别具体说明:
CPU 密集型进程,使用大量 CPU运算 会导致平均负载升高,这个场景这两者是一致的;
I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高
    CPU 的效率要远高于磁盘,磁盘读写请求过多就会导致大量 I/O 等待
    进程在 CPU 上访问磁盘文件,CPU 会向内核发起调用文件的请求,让内核去磁盘取文件,这个时候CPU会切换到其他进程或者空闲
    而此时任务会转换为 不可中断睡眠状态,当这种读写请求过多会导致不可中断睡眠状态的进程过多,导致CPU负载高,利用率低的情况
大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高

三、阿里云Linux操作系统CPU压测环境准备

问题定位大致思路:先看全局,找系统哪个资源问题,是CPU还是IO还是什么瓶颈,然后再看具体哪个进程导致的这个资源有问题

3.1 核心命令+应用场景

sysstat 工具包的命令 mpstat+pidstat
命令:mpstat(全局)多核 CPU 性能分析程序,实时查看每个 CPU 的性能指标和全部 CPU 的平均性能指标
命令:pidstat  (局部) 实时查看进程的 CPU、内存、I/O 、上下文切换等指标
命令:vmstat (全局)实时查看系统的上下文切换(跨进程间,同个进程里多个子线程)、系统中断次数


3.2 模拟生产环境出现的多种问题环境准备

安装环境:阿里云Linux CentOS7.X   

分析工具安装:sysstat


下载地址:https://github.com/sysstat/sysstat         版本12.7.2   sysstat-master.zip

 安装步骤:

yum install gcc -y

yum install unzip -y

cd /usr/local/software/arch
unzip sysstat-master.zip

cd sysstat-master

./configure
make

sudo make install

通过 pidstat -V 查看版本

两大模拟问题工具介绍+安装

stress 多进程工具 ,模拟IO密集型应用、CPU密集型应用、多进程等待CPU调度场景,  对CPU,内存,IO等情况进行压测

yum install -y epel-release
yum install stress -y

sysbench 多线程基准测试工具,模拟上下文切换过多场景等

yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel openssl-devel
yum -y install postgresql-devel


unzip sysbench-master.zip
cd sysbench-master
./autogen.sh
./configure --without-mysql
make && make install


sysbench --version

       

四、Linux性能优化诊断之pidstat+mpstat 命令说明(一)

sysstat 工具包的命令 mpstat+pidstat

【全局命令】mpstat
 全称 Multiprocessor Statistics,多核 CPU 性能分析程序,        
 场景:当系统变慢,CPU平均负载增大时,判断是CPU的使用率增大,还是IO压力增大的情况导 致
格式mpstat [-P {|ALL}] [ <时间间隔> ] [ <次数> ] 比如  mpstat  -P ALL 2 3 每隔2秒出一个报告数据,共出具3次

显示信息 : 

每列含义: 

【局部命令】pidstat  
实时查看进程的 CPU、内存、I/O 、上下文切换等指标
格式 pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]   比如 pidstat -u 2 3每隔2秒出一个报告数据,一共出具3次
输出排序 pidstat -u | sort -k 9 -r,其中 sort是排序 指定排序用哪一列,下面的例子中是第9列:%CPU -r是倒序

 显示信息:

 每列含义:

五、CPU密集型应用Demo性能指标分析

压测工具 stress 

多进程工具 ,模拟IO密集型应用、CPU密集型应用、多进程等待CPU调度场景,  对CPU,内存,IO等情况进行压测

参数说明:

 Demo 模拟CPU密集型应用,系统是2核

终端一    模拟两个CPU核的使用率 100%,对2个cpu 进行压力测试 持续600s  stress --cpu 2 --timeout 600
终端二   -d 参数表示高亮显示变化的区域  watch -d uptime   
终端三    mpstat 查看 CPU 使用率情况,  每5秒监控所有 CPU情况   mpstat -P ALL 5
终端四   查看运行中的进程和任务,每5秒刷新一次 pidstat -u 5

 分析思路:

全局
uptime :运行1分钟后,2个核的CPU负载是2,高负荷可以到4,5+
mpstat :
实际应用场景:当系统变慢,CPU平均负载增大时,可判断是CPU的使用率增大,还是IO压力增大的情况导致
CPU的两个核在用户态使用率是99%,总的CPU使用率是100%,% iowait 为0,不存在io瓶颈

因为sqrt()函数的 CPU进程是在用户态,所以是%usr升高,而%sys没啥变化

局部
pidstat:  对进程和任务的使用情况进行,发现stress进程对2块cpu使用率过高,导致CPU平均负载增加
举一反三:如果不是stress,其他进程造成这类影响的,靠这个思路也能排查出是哪个进程,包括压测4个核
CPU使用率高,CPU平均负载也高;  CPU平均负载高,CPU使用率不一定高

六、CPU密集型应用-内核态Demo性能指标分析

压测工具 stress 

多进程工具 ,模拟IO密集型应用、CPU密集型应用、多进程等待CPU调度场景,  对CPU,内存,IO等情况进行压测

参数说明:

 Demo 模拟CPU密集型应用,系统是2核

终端一    模拟四个IO进程, 持续600s  stress --io 2 --timeout 600s
终端二   -d 参数表示高亮显示变化的区域  watch -d uptime   
终端三    mpstat 查看 CPU 使用率情况,  每5秒监控所有 CPU情况   mpstat -P ALL 5
终端四   查看运行中的进程和任务,每5秒刷新一次 pidstat -u 5

 分析思路:

全局
uptime :运行1分钟后,2个核的CPU负载是比较高的
mpstat :
应用场景:当系统变慢,CPU平均负载增大时,判断是CPU的使用率增大,还是IO压力增大的情况导致
多次调用mpstat,持续观察,  平均负载升高,内核态CPU使用率%sys 比较高,iowait也有一定数值


局部
pidstat:  对进程和任务的使用情况进行,发现stress进程对cpu使用率比较高,导致CPU平均负载增加
%wait有一定数值,但是不高,使用 pidstat -d 查看 没太多磁盘读写,但是有iodelay

七、IO密集型应用Demo性能指标分析

压测工具工具 stress 

多进程工具 ,模拟IO密集型应用、CPU密集型应用、多进程等待CPU调度场景,  对CPU,内存,IO等情况进行压测

 pidstat 查看进程IO使用情况,显示各活动进程的IO使用统计

每列含义:

 Demo 模拟IO密集型应用,系统是2核

终端一    模拟两个磁盘IO进程,  持续600s  stress --hdd 2 --hdd-bytes 6G --timeout 600s
终端二   -d 参数表示高亮显示变化的区域  watch -d uptime   
终端三    mpstat 查看 CPU 使用率情况,  每5秒监控所有 CPU情况   mpstat -P ALL 2 3 每隔2秒出一个报告数据,一共出具3次
终端四   查看运行中的进程和任务,每5秒刷新一次 pidstat -u 2 3  每隔2秒出一个报告数据,一共出具3次 或者 pidstat -d 2 2 

分析思路:

全局
uptime :运行1分钟后,2个核的CPU负载是比较高
mpstat :
应用场景:当系统变慢,CPU平均负载增大时,判断是CPU的使用率增大,还是IO压力增大的情况导致
多次调用mpstat,持续观察,  平均负载升高,但是CPU使用率没啥变化,iowait大于50%值比较高
一直在等待IO处理,说明进程是IO密集型,进程频繁进行IO操作,导致系统平均负载很高,而CPU使用率不高

局部
ps aux 里面stat字段D的状态一般是I/O出现了问题,说明进程在等待I/O,比如 磁盘I/O,网络I/O或者其他
pidstat :  对进程和任务的使用情况进行,发现stress进程对cpu使用率不高,但CPU平均负载高
pidstat -u 
pidstat -d
举一反三:如果不是stress,其他进程造成这类影响的,靠这个思路也能排查出是哪个进程
CPU使用率高,CPU平均负载也高;  CPU平均负载高,CPU使用率不一定高,则可能IO瓶颈

ps  aux

八、多进程调度Demo性能指标分析

前言:

CPU密集型进程,使用大量CPU会导致平均负载高,此时cpu使用率也高
I/O密集型进程, 等待I/O导致负载升高,但CPU使用率不一定高
大量进程等待CPU调度也会导致平均负载升高,CPU使用率也会比较高

Demo 大量等待CPU的进程调度 导致平均负载升高,CPU使用率也会比较高,系统是2核 

终端一    模拟4个进程,也可以更多,  持续600s  stress --cpu 4 --timeout 600s
终端二   -d 参数表示高亮显示变化的区域  watch -d uptime   
终端三    mpstat 查看 CPU 使用率情况,  每5秒监控所有 CPU情况   mpstat -P ALL 2 3 每隔2秒出一个报告数据,一共出具3次
终端四   查看运行中的进程和任务,每5秒刷新一次 pidstat -u 2 3  每隔2秒出一个报告数据,一共出具3次

 分析思路:

全局
uptime :运行1分钟后,2个核的CPU负载是比较高
mpstat :
应用场景:当系统变慢,CPU平均负载增大时,判断是CPU的使用率增大,还是IO压力增大的情况导致
多次调用mpstat,持续观察,  平均负载升高,每个cpu利用率都高,使用率接近100%,iowait很低接近0,IO不是瓶颈
再进一步分析,CPU利用率高,主要是哪部分操作占据了CPU

局部
pidstat :  对进程和任务的使用情况进行,发现%wait高,说明cpu不够用在等待cpu调度上花费了不少时间
结论:4个进程在竞争2个cpu,每个进程等待cpu的时间达到50%(%wait),超出cpu计算能力的进程,导致了负载变高
pidstat -u  CPU情况,默认
pidstat -d  磁盘IO情况 , 基本很低
举一反三:如果不是stress,其他进程造成这类影响的,靠这个思路也能排查出是哪个进程

九、Linux性能优化诊断pidstat+mpstat(二)

pidstat(局部)
    pidstat -w 进程上下文切换情况,显示各活动进程的上下文切换情况统计
    cswch/s  每秒自愿上下文切换(voluntary context switches)的次数
        进程获取不了所需要的资源导致的上下文切换
        比如  出现 I/O问题瓶颈、内存等系统资源不足,会发生自愿上下文切换
    nvcswch/s  每秒非自愿上下文切换(non voluntary context switches)的次数
        进程由于调度算法,时间片已到等原因,被系统【强制调度】发生上下文切换
        比如 大量进程再抢夺CPU资源时,会发生非自愿上下文切换,CPU出现了瓶颈

 pidstat -t -p pid  显示进程里面的线程的统计信息

 每列含义:

 

 pidstat -wt 1 组合命令 ,看具体进程里面的线程上下文切换情况

十、Linux性能监控命令vmstat

vmstat (全局)

全称是 Virtual Meomory Statistics(虚拟内存统计)的缩写,是对系统整体的情况进行统计,不细化到某个进程,是宏观命令
格式:vmstat [选项] [时间间隔[次数]]   (参数很多,记住常用的即可)
vmstat n  每隔n秒后输出一行信息, 一般会加个 -w 进行加宽显示,比如 vmstat -w 1
vmstat -SM 指定单位显示,默认KB,M表示是MB
vmstat -t 带上时间戳信息
更多参数信息  vmstat -h 或 man vmstat
vmstat -w -SM -t 1

十一、CPU上下文切换Demo性能指标分析

cpu上下文切换知识点:

cpu寄存器和程序计数器是cpu在运行任务前依赖的环境,也叫cpu上下文
cpu的上下文切换先把前一个任务的cpu上下文保存起来【下次才知道任务从哪里加载+运行】
再加载新任务的上下文到寄存器和程序计数器进行运行任务,每次切换 在【保存和恢复】上下文耗时几十纳秒 或 微秒 
1μs【微秒】 = 1000ns【纳秒】

sysbench

一款开源的多线程性能测试工具,模拟线程上下文切换过多场景等,可以执行CPU/内存/线程/IO/数据库等方面的性能测试

Demo 大量线程进行上下文切换,导致平均负载升高,CPU使用率也会比较高,系统是2核

终端一 模拟32个线程进行压测,  持续300s  sysbench --threads=32 --time=300 threads run
终端二 -d 参数表示高亮显示变化的区域  watch -d uptime   
终端三 vmstat -w 1  查看系统CPU的队列情况、内存、块I/O、上下文切换情况、系统中断次数、cpu使用率等
和mpstat命令有交集,都是可以看出cpu使用率,在内核态、用户态等

终端四  pidstat -w 查看运行中的进程和任务上下文切换情况统计,显示各活动进程的上下文切换情况统计

pidstat -u 2 2
pidstat -t -p pid  显示进程里面的线程的统计信息
pidstat -wt 1 组合命令,查看进程里面具体线程的上下文切换情况

 可以看到是sysbench 服务导致大量CPU被占用

分析思路:

uptime(全局) :运行1分钟后,2个核的CPU负载是比较高

mpstat:
应用场景:当系统变慢,CPU平均负载增大时,判断是CPU的使用率增大,还是IO压力增大的情况导致
多次调用mpstat -P ALL 2 2,持续观察,  每个cpu利用率都高,使用率接近100%,iowait很低接近0,IO不是瓶颈

 
再进一步分析,CPU利用率高,主要是哪部分操作占据了CPU?

vmstat(全局):系统总的上下文切换情况,就绪队列里面的线程数,不可中断睡眠状态的进程数等

vmstat -wt 1   发现:上下文切换次数和中断次数数值比较高  in:中断次数  cs:上下文切换次数

 pidstat -u 2 2:  对进程和任务的使用情况进行,发现CPU使用率接近100%,前面知道是大量上下文切换导致

pidstat -wt 2 2 查看哪个进程大量占据上下文切换,到进程里面的具体线程,大量上下文切换,导致了负载变高

pidstat -u  CPU情况
pidstat -d  磁盘IO情况
pidstat -t   显示进程里面的线程的统计信息
pidstat -w  进程上下文切换情况,查看是哪种上下文切换占比高
    如果没加 -t则是进程上下文切换,和vmstat的数据不一样,所以推断出是进程内部的大量线程切换导致
    加 -t 发现 nvcswch 高,大量线程抢夺CPU资源导致

 pidstat -w 不加-t表示进程上下文 

cswch/s  每秒自愿上下文切换(voluntary context switches)的次数
    进程获取不了所需要的资源导致的上下文切换
    比如  出现 I/O问题瓶颈、内存等系统资源不足,会发生自愿上下文切换

nvcswch/s  每秒非自愿上下文切换(non voluntary context switches)的次数
    进程由于调度算法,时间片已到等原因,被系统【强制调度】发生上下文切换
    比如 大量进程再抢夺CPU资源时,会发生非自愿上下文切换,CPU出现了瓶颈 

命令总结:

watch -d uptime 查看平均负载
top 查看CPU 内核态、用户态 使用率等指标
mpstat -P ALL 实时查看每个 CPU 的性能指标和全部   CPU 的平均性能指标
pidstat -u 实时查看进程的 CPU、内存、I/O 、上下文切换等指标
pidstat -d 查看运行中的进程和任务,显示各个进程的IO使用情况
pidstat -w 进程上下文切换情况,显示各活动进程的上下文切换情况统计
pidstat -wt 1 查看进程里面具体线程的上下文切换情况

相关文章:

CPU平均负载高问题定位分析

一、Linux操作系统CPU平均负载 1.1什么是CPU平均负载 1.2 怎么查看平均负载数值 二、Linux操作系统CPU使用率和平均负载区别 CPU使用率和平均负载区别 三、阿里云Linux操作系统CPU压测环境准备 3.1 核心命令应用场景 3.2 模拟生产环境出现的多种问题环境准备 分析工具安…...

Python蓝桥杯训练:基本数据结构 [二叉树] 中

Python蓝桥杯训练&#xff1a;基本数据结构 [二叉树] 中 文章目录Python蓝桥杯训练&#xff1a;基本数据结构 [二叉树] 中一、[翻转二叉树](https://leetcode.cn/problems/invert-binary-tree/)二、[对称二叉树](https://leetcode.cn/problems/symmetric-tree/)三、[二叉树的最…...

读取 DTC 信息服务 (0x19) – UDS 协议

总目录链接>> AutoSAR入门和实战系列总目录 0x19读取 DTC 信息服务概述 读取 DTC 信息服务在 UDS 协议中用于从车辆或特定 ECU 或节点读取 DTC。UDS 协议的主要任务之一是故障诊断。每当车辆发生任何故障时&#xff0c;与该故障相对应的诊断故障代码&#xff08;DTC&a…...

Hive 分区表新增字段 cascade

背景 在以前上线的分区表中新加一个字段&#xff0c;并且要求添加到指定的位置列。 模拟测试 加 cascade 操作 创建测试表 create table if not exists sqltest.table_add_column_test(org_col1 string comment 原始数据1,org_col2 string comment 原始数据2 ) comment 增…...

【Java版oj】day08两种排序方法、最小公倍数

目录 一、两种排序方法 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 二、最小公倍数 &#xff08;1&#xff09;原题再现 &#xff08;2&#xff09;问题分析 &#xff08;3&#xff09;完整代码 一、两种…...

FinOps,从概念到落地 | UGeek大咖说第一期直播回顾(上)

2023年2月28日&#xff0c;由优维科技联合FinOps产业推进方阵举办了第1期「UGeek大咖说-极致用云共济FinOps」线上直播活动&#xff0c;来自中国信通院及美图公司技术专家共同带来了一场精彩的技术视听盛宴。 直 播 背 景 目前&#xff0c;许多以“上云”为数字化转型路径的企…...

k8s java程序实现kubernetes Controller Operator 使用CRD 学习总结

k8s java程序实现kubernetes Controller & Operator 使用CRD 学习总结 大纲 原理Controller 与 Operator自定义资源定义 CRD ( CustomResourceDefinition)kubernetes-client使用java fabric8io/kubernetes-client操作k8s 原生资源使用java abric8io/kubernetes-clientt操…...

Unity笔记:修改代码执行的默认打开方式

使用 External Tools 偏好设置可设置用于编写脚本、处理图像和进行源代码控制的外部应用程序。 External Script Editor&#xff1a;选择 Unity 应使用哪个应用程序来打开脚本文件。Unity 会自动将正确的参数传递给内置支持的脚本编辑器。Unity 内置支持 Visual Studio Commun…...

Linux IPC:匿名管道 与 命名管道

目录一、管道的理解二、匿名管道三、命名管道四、管道的通信流程五、管道的特性进程间通信方式有多种&#xff0c;本文介绍的是管道&#xff0c;管道分为匿名管道和命名管道。 一、管道的理解 生活中的管道用来传输资源&#xff0c;例如水、石油之类的资源。而进程间通信的管道…...

阿里研发工程师JAVA暑期实习一面

文章目录先说一下我自己的情况面试过程总结先说一下我自己的情况 我就读于湖南大学&#xff0c;软件工程专业&#xff0c;现在大三下 很巧的是&#xff0c;我在大二的时候就在相同的时间面过相同的部门和相同的岗位&#xff0c;所以我没有做笔试就直接让我去面试了。我当时还纳…...

第十四届蓝桥杯三月真题刷题训练——第 11 天

目录 第 1 题&#xff1a;卡片 题目描述 运行限制 第 2 题&#xff1a;路径_dpgcd 运行限制 第 3 题&#xff1a;字符统计 问题描述 输入格式 输出格式 样例输入 样例输出 评测用例规模与约定 运行限制 第 4 题&#xff1a;费用报销 第 1 题&#xff1a;卡片 题…...

机器学习入门——线性回归

线性回归什么是线性回归&#xff1f;回归分析&#xff1a;线性回归&#xff1a;回归问题求解单因子线性回归简单实例评估模型表现可视化模型展示多因子线性回归什么是线性回归&#xff1f; 回归分析&#xff1a; 根据数据&#xff0c;确定两种或两种以上变量间相互依赖的定量…...

Microsoft Word 远程代码执行漏洞(CVE-2023-21716)

本文转载于&#xff1a; https://mp.weixin.qq.com/s?__bizMzI5NTUzNzY3Ng&mid2247485476&idx1&sneee5c7fd1c4855be6441b8933b10051e&chksmec535547db24dc516d013d3d76097e985aaad7f10f82f15b4e355a97af75fd333acdab6232af&mpshare1&scene23&srci…...

Android kotlin 系列讲解(数据篇)SharedPreferences存储及测试

文章目录 一、什么是SharedPreferences1、将数据存储到SharedPreferences中2、从SharedPreferences中读取数据二、登录使用SharedPreferences一、什么是SharedPreferences SharedPreferences是使用键值对的方式来存储数据的。也就是说,当保存一条数据的时候,需要给这条数据提…...

一文了解Web Worker

一、概述 众所周知&#xff0c;JavaScript最初设计是运行在浏览器中的&#xff0c;为了防止多个线程同时操作DOM带来的渲染冲突问题&#xff0c;所以JavaScript执行器被设计成单线程。但是随着前端技术的发展&#xff0c;JavaScript要处理的工作也越来越复杂&#xff0c;当我们…...

接口文档包含哪些内容?怎么才能写好接口文档?十年测试老司机来告诉你

目录 接口文档结构 参数说明 示例 错误码说明 语言基调通俗易懂 及时更新与维护 总结 那么我们该如何写好一份优秀的接口文档呢&#xff1f; 接口文档结构 首先我们要知道文档结构是什么样子的。接口文档应该有清晰明确的结构&#xff0c;以便开发人员能快速定位自己需…...

java面试八股文之------Java并发夺命23问

java面试八股文之------Java并发夺命23问&#x1f468;‍&#x1f393;1.java中线程的真正实现方式&#x1f468;‍&#x1f393;2.java中线程的真正状态&#x1f468;‍&#x1f393;3.如何正确停止线程&#x1f468;‍&#x1f393;4.java中sleep和wait的区别&#x1f468;‍…...

CANoe中使用CAPL刷写流程详解(Trace图解)(CAN总线)

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…...

【MySQL】002 -- 日志系统:一条SQL更新语句是如何执行的

此文章为《MySQL 实战 45 讲》的学习笔记&#xff0c;其课程链接可参见&#xff1a;MySQL实战45讲_MySQL_数据库-极客时间 目录 一、日志系统 1、重做日志&#xff1a;redo log&#xff08;引擎层&#xff09; 2、归档日记&#xff1a;binlog&#xff08;Server层&#xff09; …...

C++---背包模型---数字组合(每日一道算法2023.3.14)

注意事项&#xff1a; 本题是"动态规划—01背包"的扩展题&#xff0c;优化思路不多赘述&#xff0c;dp思路会稍有不同&#xff0c;下面详细讲解。 题目&#xff1a; 给定 N个正整数 A1,A2,…,AN&#xff0c;从中选出若干个数&#xff0c;使它们的和为 M&#xff0c;…...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

稳定币的深度剖析与展望

一、引言 在当今数字化浪潮席卷全球的时代&#xff0c;加密货币作为一种新兴的金融现象&#xff0c;正以前所未有的速度改变着我们对传统货币和金融体系的认知。然而&#xff0c;加密货币市场的高度波动性却成为了其广泛应用和普及的一大障碍。在这样的背景下&#xff0c;稳定…...

Android第十三次面试总结(四大 组件基础)

Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成&#xff0c;用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机&#xff1a; ​onCreate()​​ ​调用时机​&#xff1a;Activity 首次创建时调用。​…...