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 查看进程里面具体线程的上下文切换情况

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/42.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

我,30岁程序员被裁了,千万别干全栈

大家好&#xff0c;这里是程序员晚枫&#xff0c;今天是读者投稿。下面开始我们的正文。&#x1f447; 关注博主&#x1f449;程序员晚枫 很久了&#xff0c;今天给大家分享一下我从事程序员后&#xff0c;30岁被裁的经历&#xff0c;希望帮到有需要的人。 1、我被裁了 大家好…

某小公司面试记录

记录一次面试过程&#xff0c;还有一些笔试题&#xff0c;挺简单的&#xff0c;排序&#xff0c;去重&#xff0c;this指向&#xff0c;深浅拷贝&#xff0c;微任务的执行顺序&#xff0c;变量提升等。 ES6数组新增的方法 Array.from&#xff1a; 将两类对象转为真正的数组&am…

2月编程语言排行榜新鲜出炉,谁又摘得桂冠?

近日&#xff0c;TIOBE公布了2023年2月编程语言排行榜&#xff0c;本月各个语言表现如何&#xff1f;谁又摘得桂冠&#xff1f;一起来看看吧&#xff01; TIOBE 2月Top15编程语言&#xff1a; 详细榜单查看TIOBE官网 https://www.tiobe.com/tiobe-index/ 关注IT行业的小伙伴…

【Linux】冯.诺依曼体系结构与操作系统

环境&#xff1a;centos7.6&#xff0c;腾讯云服务器Linux文章都放在了专栏&#xff1a;【Linux】欢迎支持订阅&#x1f339;冯.诺依曼体系结构什么是冯诺依曼体系结构&#xff1f;我们如今的计算机比如笔记本&#xff0c;或者是服务器&#xff0c;基本上都遵循冯诺依曼体系结构…

基于HTML实现浪漫情人节表白代码(附源代码)

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

Java每日一练(20230312)

目录 1. 两数之和 II ★ 2. 反转链表 ★★ 3. 二叉树的层序遍历 II ★★★ &#x1f31f; 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 Java 每日一练 专栏 1. 两数之和 II 给定一个已按照 非递减顺序排列 的整数数组 numbers &#xff0c;请你从数…

YOLOv7、YOLOv5改进之打印热力图可视化:适用于自定义模型,丰富实验数据

💡该教程为改进YOLO高阶指南,属于《芒果书》📚系列,包含大量的原创改进方式🚀 💡更多改进内容📚可以点击查看:YOLOv5改进、YOLOv7改进、YOLOv8改进、YOLOX改进原创目录 | 唐宇迪老师联袂推荐🏆 💡🚀🚀🚀内含改进源代码 按步骤操作运行改进后的代码即可�…

Python每日一练(20230309)

目录 1. 删除有序数组中的重复项 ★ 2. 二叉树的最小深度 ★★ 3. 只出现一次的数字 II ★★ &#x1f31f; 每日一练刷题专栏 C/C 每日一练 ​专栏 Python 每日一练 专栏 1. 删除有序数组中的重复项 给你一个有序数组 nums &#xff0c;请你原地删除重复出现的元素…

裸辞两个月还能不能找到工作?亲身经历告诉你结果·····

这是我在某论坛看到的一名网友的吐槽&#xff1a; 软件测试四年&#xff0c;主要是手动测试&#xff08;部分自动化测试和性能测试&#xff0c;但是用的是公司内部自动化工具&#xff0c;而且我自动化方面是弱项。&#xff09;现在裸辞两个月了&#xff0c;面试机会少而且面试…

总结:电容在电路35个基本常识

1 电压源正负端接了一个电容&#xff0c;与电路并联&#xff0c;用于整流电路时&#xff0c;具有很好的滤波作用&#xff0c;当电压交变时&#xff0c;由于电容的充电作用&#xff0c;两端的电压不能突变&#xff0c;就保证了电压的平稳。 当用于电池电源时&#xff0c;具有交流…

自学前端,你必须要掌握的3种定时任务

当你看到这篇博客的时候&#xff0c;一定会和狗哥结下不解之缘&#xff0c;因为狗哥的博客里不仅仅有代码&#xff0c;还有很多代码之外的东西&#xff0c;如果你可以看到最底部&#xff0c;看到投票环节&#xff0c;我相信你一定感觉到了&#xff0c;狗哥的真诚&#xff0c;狗…

数据结构——第4章 数组与广义表(2)

矩阵1.特殊矩阵的压缩存储1.1对称矩阵1.2.三角矩阵1.2.1.下三角矩阵1.2.2. 上三角矩阵1.3 带状矩阵2.稀疏矩阵2.1. 稀疏矩阵的三元组表存储2.1.1. 稀疏矩阵的转置1.特殊矩阵的压缩存储 矩阵与二维数组具有很好的对应关系&#xff0c;因此在进行科学计算时&#xff0c;常常用二…

两年外包生涯做完,感觉自己废了一半....

先说一下自己的情况。大专生&#xff0c;17年通过校招进入湖南某软件公司&#xff0c;干了接近2年的点点点&#xff0c;今年年上旬&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01;而我已经在一个企业干了五年的功能测试…

Leetcode. 88合并两个有序数组

合并两个有序数组 文章目录归并思路二归并 核心思路&#xff1a; 依次比较&#xff0c;取较小值放入新数组中 i 遍历nums1 &#xff0c; j 遍历nums2 &#xff0c;取较小值放入nums3中 那如果nums[i] 和nums[j]中相等&#xff0c;随便放一个到nums3 那如果nums[i] 和nums[j]中相…

Form Generator扩展 文本 组件

一、form-generator是什么?✨ ⭐️ 🌟 form-generator的作者是这样介绍的:Element UI表单设计及代码生成器,可将生成的代码直接运行在基于Element的vue项目中;也可导出JSON表单,使用配套的解析器将JSON解析成真实的表单。 但目前它提供的组件并不能满足我们在项目中的…

2023年再不会Redis,就要被淘汰了

目录专栏导读一、同样是缓存&#xff0c;用map不行吗&#xff1f;二、Redis为什么是单线程的&#xff1f;三、Redis真的是单线程的吗&#xff1f;四、Redis优缺点1、优点2、缺点五、Redis常见业务场景六、Redis常见数据类型1、String2、List3、Hash4、Set5、Zset6、BitMap7、Bi…

英雄算法学习路线

文章目录零、自我介绍一、关于拜师二、关于编程语言三、算法学习路线1、算法集训1&#xff09;九日集训2&#xff09;每月算法集训2、算法专栏3、算法总包四、英雄算法联盟1、英雄算法联盟是什么&#xff1f;2、如何加入英雄算法联盟&#xff1f;3、为何会有英雄算法联盟&#…

【Linux修炼】16.共享内存

每一个不曾起舞的日子&#xff0c;都是对生命的辜负。 共享内存一.共享内存的原理二.共享内存你的概念2.1 接口认识2.2演示生成key的唯一性2.3 再谈key三.共享资源的查看3.1 如何查看IPC资源3.2 IPC资源的特征3.3 进程之间通过共享内存进行关联四.共享内存的特点五.共享内存的内…

10个最频繁用于解释机器学习模型的 Python 库

文章目录什么是XAI&#xff1f;可解释性实践的步骤技术交流1、SHAP2、LIME3、Eli54、Shapash5、Anchors6、BreakDown7、Interpret-Text8、aix360 (AI Explainability 360)9、OmniXAI10、XAI (eXplainable AI)XAI的目标是为模型的行为和决定提供有意义的解释&#xff0c;本文整理…

C++基础算法①——高精度加减法计算

高精度算法1.导论2.高精度低精度3.高精度高精度4.高精度减法1.导论 当我们利用计算机进行数值计算&#xff0c;有时候会遇到这样的问题&#xff1a; n&#xff01;的精确结果是多少&#xff1f; 当n小于30的时候&#xff0c;我们当然可以通过电脑自带的计算器计算出来。但是当…