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

性能测试瓶颈:CPU 问题的深度分析和调优

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

我们做性能测试的时候,除了使用工具编写脚本并执行之外,最核心的工作就是做性能测试结果分析和问题调优。然后在做性能测试的时候,非常常见的一类问题就是CPU的问题。所以,要专业做性能测试就免不了要深入学习一下CPU的原理和常见的分析和监控的命令。

CPU的介绍

概念:CPU(中央处理器:Central Processing Unit)),是一块超大规模的集成电路,是计算机的运算核心【拿到数据后先计算】和控制核心【然后再根据计算结果去控制】。

图片

功能:主要是解释计算机指令以及处理计算机软件中的数据。电脑中所有操作都由CPU负责读取指令,对指令译码并执行指令的核心部件。

计算机程序编译后 0101二进制代码,CPU接受到这个指令,解释指令拿到数据,处理数据。

CPU由3个模块组成,三个部分由内部总线连接起来:

控制单元:根据计算结果去控制数据的流向,把内存的指令、数据读入寄存器,控制计算机

运算单元:拿到数据先计算数据

存储单元:临时的数据存储在存储单元,比磁和-内存更小,速度更快。

CPU的信息查看命令

我们搭建好性能测试环境后,进行性能测试之前,最好能先去看一下服务器CPU的基本信息和参数。所以,我们先来学习几个CPU查看的命令。

1、查看物理CPU的个数:cat /proc/cpuinfo

图片

通过上图:这个虚拟机的物理cpu2个,每个物理cpu的逻辑CPU个数为1个,所以逻辑CPU的个数就是2个。

2、也可以直接用命令:cat /proc/cpuinfo| grep “processor”| wc -l 查看逻辑CPU的个数。

wc -l: wc 是一个命令,用于计算文件中的字节数、字数和行数。-l 选项告诉 wc 只计算行数。

图片

3、通过lscpu命令查看:显示CPU制造商、架构、CPU数量、型号、主频以及缓存等信息。

Sockets=物理cpu

Cores per Socket=一个插槽上CPU核数

Threads per core=每个核上超线程数

CPUs=逻辑cpu

图片

CPU关注性能指标

我们真正需要重点学习的是CPU在性能测试的时候,我们分析应该关注哪些指标。这个是性能分析的关键。如下图所示:

图片

关注指标1:CPU使用率

CPU使用率是我们最直观能看到的指标,所以会优先去关注。CPU利用率行业内标准是一般不要超过75%,如果超过了就需要分析原因,并找到问题和调优了。

CPU使用率=非空闲时间占总CPU时间的百分比, 越高说明CPU越繁忙,就可能需要进行性能问题分析和调优。

图片

我们需要关注的是CPU非空闲部分,具体可以细分如下,加粗部分是重点:

%us:用户 CPU,比如java程序,应用程序等:用户态使用CPU的百分比(user)。用户CPU使用率高,通常说明有应用程序比较繁忙。

%sy:系统CPU:表示CPU在内核态运行的时间百分比。系统CPU 使用率高,说明内核比较繁忙。

%iowait:等待I/O:表示等待I/O的时间百分比。iowait高,说明系统与硬件设备的I/O 交互时间比较长,比如跟键盘、网卡、显示器等交互。

ni【软/硬中断】:分别表示内核调用软中断处理程序、硬中断处理程序的时间百分比。它们的使用率高,通常说明系统发生了大量的中断。

• 当CPU的时间分片正在处理某个任务还没完成时钟时间的时候,突然收到硬中断或软中断指令,CPU被打断需要去响应,才能继续执行任务;

• 如果ni参数很高,说明中断的数量很多,说明CPU不停的被打扰,需要分析是什么中断。一般ni比较高的情况比较少,不过ni高也会导致sy【内核占比】比较高,是环环相扣的,要能分析。

%st/gu:steal/guest:在虚拟化环境中会用到的窃取CPU使用率(steal)和客户CPU使用率(guest),分别表示被其他虚拟机占用的CPU时间百分比,和运行客户虚拟机的CPU时间百分比。

• 这两个一般比较低,不会成为cpu的瓶颈 不太需要关注

%id:空闲 CPU百分比,CPU使用率 = (100-id)%

• 比较简单的算法:100% - id% = CPU使用率

关注指标2:平均负载

平均负载指系统的平均活跃进程数,一个时间段内平均有多少进程数在活跃,跟cpu核数做比较,算出繁忙情况;这是服务器性能的重点关注值,一般CPU的使用率高的话,平均负载也是高的。

主要包括三个数值,过去1、5、15钟的平均负载。可以通过这三个值看到负载整体的趋势。

图片

逐步降低,是CPU后来越来越空闲;逐步增加,CPU越来越繁忙;或者持平,就是CPU稳定。

理想情况下,平均负载=逻辑 CPU个数,这表示每个CPU都恰好被充分利用;如果大于逻辑 CPU 个数,就表示负载较重;如果平均负载的值高于CPU的3- 5倍 ,那么很有可能CPU存在瓶颈,就需要分析和调优。

关注指标3:上下文的切换cs

系统内核和应用存储共用CPU的内核,就会需要不停的争抢资源,就会出现上下文切换。

上下文切换多了不是好事儿,过多的上下文切换,会将原本运行进程的CPU时间,消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,很少有时间真正计算和处理数据,减少和缩短了进程真正运行的时间,通常会导致CPU内核【sy】消耗资源比较高,会成为性能瓶颈,需要优化。

性能的基本Linux命令

了解CPU需要关注的性能指标,那么在性能测试执行的时候,如何去监控这些指标呢?我们就需要通过一些常用的监控命令了。

1、top命令:常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况

图片

上图就是top命令的结果显示,我们来一一分析:

第一行数据:

当前系统时间,启动运行了多长时间。

2 users, 有多少个终端用户连接, 不代表多少个账户 【同一个账户 多个终端也算】

load average:服务器性能的重点关注值,系统过去1分钟的平均负载、 过去5分钟的平均负载、 过去15分钟的平均负载

• 前面我们讲到过,如果平均负载大于CPU数量,甚至达到3- 5倍cpu数量,说明系统负载非常大了。这个时候才会需要去观察下面的详细数据分析原因。

第二行数据:默认是进程数,可以切换为线程数

总进程数,正在运行的进程数,休眠的进程数 。

按下H, 切换为 Threads 当前总线程数 。

第三行数据:CPU的使用情况,这个是重点。

%CPU(s):是CPU使用率的平均值,合并cpu的统计数据,是所有数量cpu的总情况。

us, CPU的用户态使用时间占比 【应用程度和代码逻辑在用户态计算】,如果这个高,很可能代码逻辑复杂

sy, cpu的系统态使用时间占比 【系统内核】

ni, 中断占用cpu的情况,如果发生中断,优先级更高的中断了当前的事情

id, idle 空闲【 不会超过100】

wa, IOwait等待IO操作的操作状态的时间占比 ,当我们io繁忙时,这个数值一般会非常明显。

hi, hard interrupt 硬中断 ,保存和打开数据占用cpu时间

si, soft interrupt 软中断,保存和打开数据占用cpu时间

• hi + si = ni的值

st:steal,其他的虚拟机占用CPU的时间 ,这个基本不用关注。

总结:这行数据会优先看id数据,如果id很大,不用分析;id小,再去看us 和sy:

• 如果us 很高,一般要分析代码逻辑

• 如果sy很高,要看看ni的值,ni很高的话,就要进一步分析hi si的值 看哪个中断高。

第四行数据:内存的使用情况,后面我们分析内存性能问题的时候再详细讲。

总的内存,空闲内存,使用的内存,buff和cache内存

• buff 【缓冲区:磁盘虚拟出来 加快磁盘读取数据速度】

• cache 【缓存:虚拟的 加快内存数据交换速度的】

• swap:交换区

• avali:可用于下一次的物理内存总量

进程列表详细数据:默认都是进程

pid 进程id

USER 进程的归属者, 这个进程启动用户

PR 进程优先级,数字越大优先级高的话可以优先使用资源 ----性能不太关注 影响不大

NI 进程优先级切换,跟PR共同决定了进程的优先级 —性能不太关注 影响不大

VIRT:这个进程分配的虚拟内存

RES:实际物理内存

SHR :共享内存会详细讲

S: status,进程的状态,可以是R S 等

%CPU 这个进程占用了多少的cpu使用率 -----这个数值,在CPU为多核时候,是可以超过100

• 进程列表中,默认排序规则,是根据 %CPU 数值从高到低的排序

• 如果某个进程占用CPU高于75% 需要单独拎出来分析

%MEM 这个进程占用内存率,后面讲解。

TIME+:这个进程占用CPU的总的时间,如果这个进程经常需要CPU进行计算和处理,这个时间就会很大。

COMAND: 这个进程通过哪个命令启动的。

2、mpstat:进程相关的统计报告信息,跟top命令里信息类似。

这个命令Linux系统不自带,需要安装,安装命令 :yum install -y sysstat

1)mpstat 1 10 :1s刷新一次数据,实时监控工具,主要报告与cpu相关统计信息,这个CPU是所有CPU的平均整合情况;总共打印10次。

图片

结果里显示的信息跟top命令里基本一样,就不详细赘述介绍了。

3、pidstat:监控全部或指定进程的某个进程查看cpu、内存、线程、设备io等资源占用情况和上下文切换信息。重点在于上下文切换。

同样不是系统自带的命令,需要额外安装:yum install sysstat -y

监控全部或指定进程的cpu、内存、线程、设备io等资源占用情况和上下文切换信息,用来实时查看进程的CPU、内存、I/O以及上下文切换等指标信息

一般会加一些参数来使用pidstat命令:pidstat -u -w -p pid ,过滤指定的进程的信息显示。

-u: CPU的信息,-w【switch】,-p 【指定进程id】

这个命令里我们会重点看上下文切换信息,上下文切换包括资源上下文切换和非资源切换:

• cswch/s :自愿上下文切换 :,资源不够资源切换

• nvcswch/s:非自愿上下文切换 ,时钟周期+中断等被迫切换

如果这个上下文切换高,那么CPU的sy一般会比较高, 就需要去定位原因了。

图片

4、vmstat :虚拟内存统计的缩写,很强大的命令,基本涵盖了所有监控的信息,可对虚拟内存、进程、cpu活动进行监控。

vmstat 1 5 : 间隔1秒钟刷新一次,总共收集5次 就结束,显示结果如下:

图片

procs: r 显示多少进程在等待,b 显示多少进程在不可中断的休眠

memory: swpd 显示多少块被换出磁盘,free显示剩下的空闲块,buff正在被用作缓冲区的块,cache正在被用作操作系统的缓存

swap: 现在交换活动, si 每秒有多少块正在被换入内存 so正在被换出到磁盘

io: 显示了多少块从块设备读取(bi)和写出(bo),通常反映了硬盘I/O的繁忙程度

system: 显示每秒中断(in)和上下文切换(cs)的数量

cpu:显示所有的cpu时间花费在各类操作的百分比,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待IO

5、iostat 显示设备,分区和网络文件系统的CPU统计信息和输入/输出统计信息 [需要额外安装]

图片

重点的参数:

-c 显示CPU使用率报告

-d 显示设备【磁盘】使用率报告

-k 以每秒千字节显示统计报告

-m 以每秒兆字节显示统计报告

-x 显示扩展统计信息

结果显示:

Device: 磁盘信息

rrqm/s :读磁盘队列数量

wrqm/s 写磁盘队列数量

r/s w/s 每秒的读\写的请求次数

rMB/s wMB/s 每秒读\写磁盘的大小

avgrq-sz 平均请求磁盘扇区数

avgqu-sz 等待队列的大小

await r_await w_await 等待

svctm 请求用的时间

%util 至少有一个活跃的 读写操作的时间占比

6、dstat 是一个用来替换vmstat、iostat等命令的工具,功能比较全,有彩色的界面

安装:yum install dstat -y

参数:

-c:cpu监控

-m: 内存

-d:disk 磁盘

-n:net 网络

-l:load 系统负载

-y:system ,系统

-r: io

-t: 加上时间显示

图片

7、sar:几乎可以统计服务器的所有信息

-B 分页状况

-b I/O 和传输速率信息

-d 块设备状况

-I 中断信息状况

-n 网络统计信息

-q 系统负载压力统计

-r 内存利用率信息

-u CPU利用率信息

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

​这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

相关文章:

性能测试瓶颈:CPU 问题的深度分析和调优

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快 我们做性能测试的时候,除了使用工具编写脚本并执行之外,最核心的工作就是做性能测试结果分析和问题调优。然后在做性能测试的时候&#xf…...

云手机与Temu矩阵:跨境电商运营新引擎

云手机与 Temu 矩阵结合的基础 云手机技术原理 云手机基于先进的 ARM 虚拟化技术,在服务器端运行 APP。通过在服务器上利用容器虚拟化软件技术,能够虚拟出多个独立的手机操作系统实例,每个实例等同于一部单独的手机,可独立运行各…...

Oracle考试多少分算通过?

OCP和OCM认证的考试及格分数并不是固定的,而是根据考试的难度和考生的整体表现来确定。对于OCP认证,考生需要全面掌握考试要求的知识和技能,并在考试中表现出色才有可能通过。而对于OCM认证,考生则需要在每个模块中都达到一定的水…...

【UE5.3.2】安装metahuman插件

Unable to find plugin ‘MetaHuman’报错 Unable to find plugin MetaHuman (referenced via RPect_5_3.uproject). Install it and try again, or remove it from the required plugin list. 10>Microsoft.MakeFile.Targets(44,5): Error MSB3073 :...

python lambda函数用法

在Python中,lambda函数是一种用于创建匿名函数的简便方式。它允许你快速定义一个简单的函数,而不需要使用传统的def语句。lambda函数通常用于一次性的操作或作为参数传递给其他函数。 lambda函数的语法: lambda 参数1, 参数2, ... : 表达式l…...

acitvemq AMQP:因为消息映射策略配置导致的MQTT接收JMS消息乱码问题 x-opt-jms-dest x-opt-jms-msg-type

使用ActiveMQ(5.14.5)作消息系统服务的场景下, 当我用Apache Qpid Proton发送消息(使用AMQP协议)发送JMS消息,用Paho MQTT接收消息的时候, 收到的消息前面总是有一串乱码,大概就是这样: 4Sp?AS…...

ida的使用

一.ida的基本设置 在IDA的安装根目录下有许多文件夹,各个文件夹存储不同的内容 1.目录结构 cfg:包含各种配置文件,基本IDA配置文件ida.cfg,GUI配置文件idagui.cfg,文本模式用户界面配置文件idatui.cfg, idc:包含…...

archery docker安装

#下载Archery-1.11.3.tar.gz https://codeload.github.com/hhyo/Archery/tar.gz/refs/tags/v1.11.3 cd /root tar -zxvf Archery-1.11.3.tar.gz cd /root/Archery-1.11.3/src/docker-compose #启动 docker compose -f docker-compose.yml up -d#表结构初始化 docker exec -ti a…...

【zookeeper核心源码解析】第四课:客户端与服务端读写的io核心流程

系列文章目录 【zookeeper核心源码解析】第一课:zk启动类核心流程序列图 【zookeeper核心源码解析】第二课:俯瞰QuorumPeer启动核心流程,实现选举关键流程 【zookeeper核心源码解析】第三课:leader与follower何时开始同步&#…...

影刀进阶指令 | Kimi (对标ChatGPT)

文章目录 影刀进阶指令 | Kimi (对标ChatGPT)一. 需求二. 流程三. 实现3.1 流程概览3.2 流程步骤讲解1\. 确定问题2\. 填写问题并发送3\. 检测答案是否出完 四. 运维 影刀进阶指令 | Kimi (对标ChatGPT) 简单讲讲RPA调用kimi实现…...

Linux第99步_Linux之点亮LCD

主要学习如何在Linux开发板点亮屏,以及modetest命令的实现。 很多人踩坑,我也是一样。关键是踩坑后还是实现不了,这样的人确实很多,从群里可以知道。也许其他人没有遇到这个问题,我想是他运气好。 1、修改设备树 1)、…...

【C++决策和状态管理】从状态模式,有限状态机,行为树到决策树(三):基于BT行为树实现复杂敌人BOSS-AI

前言 (题外话)nav2系列教材,yolov11部署,系统迁移教程我会放到年后一起更新,最近年末手头事情多,还请大家多多谅解。回顾我们整个学习历程,我们已经学习了很多C的代码特性,也学习了很多ROS2的跨…...

SpringCloudAlibaba技术栈-Higress

1、什么是Higress? 云原生网关,干啥的?用通俗易懂的话来说,微服务架构下Higress 就像是一个智能的“交通警察”,它站在你的网络世界里,负责指挥和调度所有进出的“车辆”(也就是数据流量)。它的…...

《信息传播:人工智能助力驱散虚假信息阴霾》

在信息爆炸的时代,虚假信息和谣言如同脱缰野马,肆意传播,对社会秩序和公众生活造成了严重影响。人工智能作为一种强大的技术工具,正逐渐成为信息传播的有力助手,为防止虚假信息和谣言扩散提供了新的途径。 虚假信息和…...

玩客云v1.0 刷机时无法识别USB

v1.0刷机时公对公插头掉了,刷机失败,再次刷机,一直提示无法识别的USB设备,此时LED一直不亮,就像是刷成砖了一样,查了好多文章最后发现正面还有一个地方需要短接。 背面的短接点 【免费】玩客云刷机包s805-…...

STM32F103RCT6学习之五:ADC

1.ADC基础 ADC(Analog-Digital Converter)模拟-数字转换器ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字变量,建立模拟电路到数字电路的桥梁12位逐次逼近型ADC,1us转换时间 输入电压范围:0~3.3V&#xff…...

通过Cephadm工具搭建Ceph分布式存储以及通过文件系统形式进行挂载的步骤

1、什么是Ceph Ceph是一种开源、分布式存储系统,旨在提供卓越的性能、可靠性和可伸缩性。它是为了解决大规模数据存储问题而设计的,使得用户可以在无需特定硬件支持的前提下,通过普通的硬件设备来部署和管理存储解决方案。Ceph的灵活性和设计…...

flink+kafka实现流数据处理学习

在应用系统的建设过程中,通常都会遇到需要实时处理数据的场景,处理实时数据的框架有很多,本文将以一个示例来介绍flinkkafka在流数据处理中的应用。 1、概念介绍 flink:是一个分布式、高可用、高可靠的大数据处理引擎&#xff0c…...

SpringBoot使用外置的Servlet容器(详细步骤)

嵌入式Servlet容器:应用打成可执行的jar 优点:简单、便携; 缺点:默认不支持JSP、优化定制比较复杂.; 外置的Servlet容器:外面安装Tomcat---应用war包的方式打包; 操作步骤: 方式一&…...

C# 中的委托与事件:实现灵活的回调机制

C#中的委托(Delegate)和事件(Event)。委托和事件是C#中非常重要的特性,它们允许你实现回调机制和发布-订阅模式,从而提高代码的灵活性和解耦程度。通过使用委托和事件,你可以编写更加模块化和可…...

大模型辅助测试的正确打开方式?

测试的基本目的之一,是对被测对象进行质量评估。换言之,是要提供关于被测对象质量的“确定性”。因此,我们很忌讳在测试设计中引入“不确定性”,比如采用不可靠的测试工具、自动化测试代码逻辑复杂易错、测试选择假设过于主观等等…...

设计模式之代理模式

代理模式代码示例:https://blog.csdn.net/weixin_39865508/article/details/141924680 代理模式的左右,一定程度上不暴露被代课对象的内容,更安全,也减少系统的耦合性 静态代理 代理对象和被代理对象都继承同一个接口 在代理对象…...

win11中win加方向键失效的原因

1、可能是你把win键锁了: 解决办法:先按Fn键,再按win键 2、可能是可能是 贴靠窗口设置 中将贴靠窗口关闭了,只需要将其打开就好了...

Html——11. 页面跳转

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>页面跳转</title><meta http-equiv"refresh" content"5; urlhttps://www.51zxw.net"/><!--<meta http-equiv"refresh" co…...

要查询 `user` 表中 `we_chat_open_id` 列不为空的用户数量

要查询 user 表中 we_chat_open_id 列不为空的用户数量&#xff0c;你可以使用以下 SQL 查询语句&#xff1a; SELECT COUNT(*) FROM user WHERE we_chat_open_id IS NOT NULL AND we_chat_open_id ! ;解释&#xff1a; SELECT COUNT(*): 表示要计算符合条件的行数。FROM us…...

docker-compos mysql5.7主从配置

docker-compos mysql5.7主从配置 docker-compose目录结构 配置文件 master/my.cnf [client] port 3306 socket /var/run/mysqld/mysqld.sock[mysqld_safe] pid-file /var/run/mysqld/mysqld.pid socket /var/run/mysqld/mysqld.sock nice 0…...

关于无线AP信道调整的优化(锐捷)

目录 一、信道优化的基本原则二、2.4G频段信道优化三、5G频段信道优化四、信道优化代码具体示例五、其他优化措施 一、信道优化的基本原则 信道优化旨在减少信道间的干扰&#xff0c;提高网络覆盖范围和信号质量。基本原则包括&#xff1a; 1. 选择合适的信道&#xff1a;根据…...

Flask入门一(介绍、Flask安装、Flask运行方式及使用、虚拟环境、调试模式、配置文件、路由系统)

文章目录 一、Flask介绍二、Flask创建和运行 1.安装2.快速使用3.Flask小知识4.flask的运行方式 三、Werkzeug介绍四、Jinja2介绍五、Click CLI 介绍六、Flask安装 介绍watchdog使用python–dotenv使用&#xff08;操作环境变量&#xff09; 七、虚拟环境 介绍Mac/linux创建虚拟…...

解决Docker国内网络问题

6月后以来&#xff0c;大量Docker镜像网站停服&#xff0c;Docker无法下载安装 本仓库致力于解决国内网络原因无法使用Docker的问题。 特点&#xff1a; 使用Github Action将官网的安装脚本/安装包定时下载到本项目Release&#xff0c;供国内使用官方安装包&#xff0c;安全可…...

Anaconda 安装与虚拟环境创建完整指南

Anaconda 安装与虚拟环境创建完整指南 Anaconda 是目前最流行的 Python 和数据科学工具集之一&#xff0c;它不仅可以轻松管理 Python 包&#xff0c;还能提供强大的虚拟环境功能&#xff0c;避免项目之间的依赖冲突。如果你是机器学习、数据科学或计算机视觉的开发者&#xf…...

【Java数据结构】LinkedList与链表

认识LinkedList LinkedList就是一个链表&#xff0c;它也是实现List接口的一个类。LinkedList就是通过next引用将所有的结点链接起来&#xff0c;所以不需要数组。LinkedList也是以泛型的方法实现的&#xff0c;所以使用这个类都需要实例化对象。 链表分为很多种&#xff0c;比…...

Linux 搭建 nginx+keepalived 高可用 | Nginx反向代理

注意&#xff1a;本文为 “Linux 搭建 nginxkeepalived (主备双主模式) 高可用 | Nginx反向代理” 相关文章合辑。 KeepalivedNginx实现高可用&#xff08;HA&#xff09; xyang0917 于 2016-09-17 00:24:15 发布 keepalived 的 HA 分为抢占模式和非抢占模式&#xff0c;抢占…...

17_HTML5 Web 存储 --[HTML5 API 学习之旅]

HTML5 Web 存储&#xff08;Web Storage&#xff09;是 HTML5 引入的一种在用户浏览器中存储数据的机制。它提供了比传统的 cookies 更加方便和强大的功能&#xff0c;包括更大的存储空间、更好的性能以及更简单的 API。Web 存储主要分为两种类型&#xff1a;localStorage 和 s…...

uni-app(优医咨询)项目实战 - 第7天

学习目标&#xff1a; 能够基于 WebSocket 完成问诊全流程 能够使用 uniCloud 云存储上传文件 能够完成查看电子处方的功能 能够完成医生评价的功能 一、问诊室 以对话聊天的方式向医生介绍病情并获取诊断方案&#xff0c;聊天的内容支持文字和图片两种形式。 首先新建一…...

今日总结 2024-12-28

今天全身心投入到鸿蒙系统下 TCPSocket 的学习中。从最基础的 TCP 协议三次握手、四次挥手原理重新梳理&#xff0c;深刻理解其可靠连接建立与断开机制&#xff0c;这是后续运用 TCPSocket 无误通信的根基。在深入鸿蒙体系时&#xff0c;仔细研读了其为 TCPSocket 封装的 API&a…...

ip归属地怎么判定?如何查看自己ip属地

在当今数字化时代&#xff0c;IP地址作为互联网通信的基础&#xff0c;扮演着至关重要的角色。而IP归属地的判定与查看&#xff0c;不仅关乎网络安全、隐私保护&#xff0c;还直接影响到社交平台的信任机制与信息传播的真实性。本文将深入探讨IP归属地的判定原理以及如何查看自…...

4.采用锁操作并支持等待功能的线程安全队列

分析 书接上文 修改push()似乎并不困难:在函数末尾加上对data_cond.notify_one()的调用即可&#xff0c;与代码清单1(第一篇文章)一样。事情其实没那么简单&#xff0c;我们之所以采用精细粒度的锁&#xff0c;目的是尽可能提高并发操作的数量。如果在notify_one()调用期间&a…...

螺杆支撑座在运用中会出现哪些问题?

螺杆支撑座是一种用于支撑滚珠螺杆的零件&#xff0c;通常用于机床、数控机床、自动化生产线等高精度机械设备中。在运用中可能会出现多种问题&#xff0c;这些问题源于多个方面&#xff0c;以下是对可能出现的问题简单了解下&#xff1a; 1、安装不当&#xff1a;安装过程中没…...

OSI 七层模型 | TCP/IP 四层模型

注&#xff1a;本文为 “OSI 七层模型 | TCP/IP 四层模型” 相关文章合辑。 未整理去重。 OSI 参考模型&#xff08;七层模型&#xff09; BeretSEC 于 2020-04-02 15:54:37 发布 OSI 的概念 七层模型&#xff0c;亦称 OSI&#xff08;Open System Interconnection&#xf…...

秒鲨后端之MyBatis【2】默认的类型别名、MyBatis的增删改查、idea中设置文件的配置模板、MyBatis获取参数值的两种方式、特殊SQL的执行

别忘了请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01;! ! ! 下篇更新&#xff1a; 秒鲨后端之MyBatis【3】自定义映射resultMap、动态SQL、MyBatis的缓存、MyBatis的逆向工程、分页插件。 默认的类型别名 MyBatis的增删改查 添加 <!--int insertUs…...

快云服务器小助手getdetail存在任意文件文件读取漏洞

免责声明: 本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在…...

尚硅谷Vue3入门到实战 —— 02 编写 App 组件

根目录下的 index.html 是项目的入口文件&#xff0c;默认的具体内容如下&#xff1a; src 文件夹分析 <!DOCTYPE html> <html lang""><head><meta charset"UTF-8"><link rel"icon" href"/favicon.ico"&…...

Java - 日志体系_Simple Logging Facade for Java (SLF4J)日志门面_SLF4J实现原理分析

文章目录 官网SLF4J 简单使用案例分析SLF4J 获取 Logger 的原理获取 ILoggerFactory 的过程获取 Logger 的过程SLF4J 与底层日志框架的集成 小结 官网 https://slf4j.org/ Simple Logging Facade for Java &#xff08;SLF4J&#xff09; 用作各种日志记录框架&#xff08;e.g…...

Flutter 调试环境下浏览器网络请求跨域问题解决方案

本篇文章主要讲解&#xff0c;Flutter调试环境情况下&#xff0c;浏览器调试报错跨域问题的解决方法&#xff0c;通过本篇文章你可以快速掌握Flutter调试环境情况下的跨域问题。 日期&#xff1a;2024年12月28日 作者&#xff1a;任聪聪 报错现象&#xff1a; 报文信息&#xf…...

python编译为可执行文件

1.用py2exe生成可执行文件 目前&#xff0c;在py2exe 0.9.2版本已经支持python3.x&#xff0c;它可以将python程序打包为windows下独立的可执行文件。 要使用py2exe&#xff0c;首先要编写一个编译程序(例如编写一个名为setup.py的程序)&#xff0c;然后在python中运行…...

【机器学习(九)】分类和回归任务-多层感知机(Multilayer Perceptron,MLP)算法-Sentosa_DSML社区版 (1)111

文章目录 一、算法概念111二、算法原理&#xff08;一&#xff09;感知机&#xff08;二&#xff09;多层感知机1、隐藏层2、激活函数sigma函数tanh函数ReLU函数 3、反向传播算法 三、算法优缺点&#xff08;一&#xff09;优点&#xff08;二&#xff09;缺点 四、MLP分类任务…...

spring cloud微服务-OpenFeign的使用

OpenFeign的使用 openFeign的作用是服务间的远程调用 &#xff0c;比如通过OpenFeign可以实现调用远程服务。 已经有了LoadBalancer为什么还要用openFeign? 在微服务架构中&#xff0c;LoadBalancer和OpenFeign虽然都提供了服务间调用的能力&#xff0c;但它们的设计目的和…...

欢迪迈手机商城设计与实现基于(代码+数据库+LW)

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本欢迪迈手机商城就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…...

GCP Cloud Architect exam - PASS

备考指南 推荐视频课程 https://www.udemy.com/course/google-cloud-architect-certifications/?couponCodeKEEPLEARNING 推荐题库 https://www.udemy.com/course/gcp-professional-cloud-architect-exam-practice-tests-2024​/?couponCodeKEEPLEARNING 错题集 http…...

通过 `@Configuration` 和 `WebMvcConfigurer` 配置 Spring MVC 中的静态资源映射

通过 Configuration 和 WebMvcConfigurer 配置 Spring MVC 中的静态资源映射 一、前言1. 了解静态资源的默认配置2. 使用 Configuration 和 WebMvcConfigurer 自定义资源映射示例&#xff1a;将 /upload/ 和 /img/ 映射到不同的文件系统目录解释&#xff1a;为什么使用 classpa…...