一篇文章认识【性能测试】

一、 性能测试术语解释 

1. 响应时间 

响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间。响应时间按软件的特点再可以细分,如对于一个 C/S 软件的响应时间可以细分为网络传输时间、应用服务器处理时间、数据库服务器处理时间。另外客户端自身也存在着解析时间、界面绘制呈现时间等。 

这里写图片描述 
响应时间主要站在客户端角度来看的一个性能指标,它是用户最关心、并且容易感知到的一个性能指标。 

2. 吞吐率 

吞吐率指单位时间内系统处理用户的请求数,从业务角度看,吞吐率可以用每秒请求数、每秒事务数、每秒页面数、每秒查询数等单位来衡量。从网络角度看,吞吐率也可以用每秒字节数来衡量。 
吞吐率主要站在服务端的角度来看的一个性能指标,它可以衡量整个系统的处理能力。对于集群或者云平台来说,吞吐率指标反映的是服务器集群对外整体能够承受的压力,该指标比用户数更容易对比。 
备注:吞吐量 = 吞吐率 * 单位时间 

3. 用户数 

对于服务器集群或者云平台,几乎都是多用户系统,系统能提供给多少用户正常使用,也是一个非常重要的度量指标。我们把这些用户按照使用系统的时机不同,做如下区分。 
系统用户数(System Users):指系统能够存储的用户量。 
在线用户数(Online Users):指用户通过身份确认后,处于能正常使用状态的用户个数。 
并发用户数(Concurrent users):指在某个时间范围内,同时正在使用系统的用户个数。 
严格并发用户数(Strictly the number of concurrent users):指同一时刻都操作某个业务的用户数。 
在性能测试过程中,我们要去模拟实际用户来发请求。但是为了吐服务器产生更大的压力,我们模拟的用户操作和实际的用户操作存在一定的差异(比如模拟的用户请求比实际用户的请求更频繁),而且返种模拟的用户数和实际的用户数也难以相互换算。所以在度量服务器集群能力时,吞吐率指标比用户数指标更实用。 

二、 性能测试方法及目标 

1. 性能测试方法 

1.1基准测试(Benchmark Testing) 
基准测试是基于一定规模的数据量上进行单业务或按实际用户操作同比例组合业务的测试,目的在于量化响应时间、吞吐率的指标,便于后续比对。 
方法是做多组不同场景的测试,观察结果,抽取出几个关键数据做好记彔,用于以后进行性能对比和评价。 
1.2 性能测试(Performance Testing) 
通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。 
特点: 
(1) 主要目的是验证系统是否具有系统宣称的能力。 
(2) 需要事先了解被测系统的典型场景,并具有确定的性能目标。 
(3) 要求在已确定的环境下运行。 
1.3 负载测试(Load Testing) 
通过在被测系统上不断增加压力,直到性能指标,例如“响应时间”超过预定指标或者某种资源使用已经达到饱和状态。 
特点: 
(1) 主要目的是找到系统处理能力的极限。 
(2) 需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景,使得测试结果具有业务上的意义。 
(3) 一般用来了解系统的性能容量,或是配合性能调优使用。 
1.4 压力测试(Stress Testing) 
测试系统在一定饱和状态下,例如CPU、内存等在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误。 
特点: 
(1) 主要目的是检查系统处于压力情况下是应用的表现。 
(2) 一般通过模拟负载等方法,使得系统的资源使用达到较高水平。 
(3) 一般用于测试系统的稳定性。 
1.5 配置测试(Configuration Testing) 
通过对被测系统的软/硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而找到系统各项资源的最优分配原则。 
特点: 
(1) 主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行得调优操作。 
(2) 一般在对系统性能状况有初步了解后进行。 
(3) 一般用于性能调优和规划能力。 
1.6 并发测试(Concurrency Testing) 
通过模拟用户的并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题。 
特点: 
(1) 主要目的是发现系统中可能隐藏的并发访问时的问题。 
(2) 主要关注系统可能存在的并发问题,例如系统中的内存泄露、线程锁和资源争用方面的问题。 
(3) 可在在开发的各个阶段使用,需要相关的测试工具的配合和支持。 
1.7 可靠性测试(Reliability Testing) 
通过给系统加载一定的业务压力(例如资源在70%~90%的使用率)的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能稳定运行。 
特点: 
(1) 主要目的是验证系统是否支持长期稳定的运行。 
(2) 需要在压力下持续一段时间的运行。 
(3) 需要关注系统的运行状况。 
1.8 失效恢复测试(Failover Testing) 
针对有冗余备份和负载均衡的系统设计的,可以用来检验如果系统局部发生故障,用户是否能够继续使用系统;以及如果这种情况发生,用户将受到多大程度的影响。 
特点: 
(1) 主要目的是验证在局部故障情况下,系统能否继续使用。 
(2) 还需要指出,当问题发生时“能支持多少用户访问”的结论和“采取何种应急措施”的方案。 
(3) 一般来说,只有对系统持续运行指标有明确要求的系统才需要进行这种类型的测试。 
2. 性能测试目标 
概况来说,可分为4个方面: 
2.1 能力验证 
在系统测试或验收测试时,我们需要评估系统的能力,衡量系统的性能指标。系统的能力可以是容纳的并发用户数,也可能是系统的吞吐率;系统的性能指标可以是响应时间,也可以选择 CPU、内存、磁盘、网络的使用情况。 
特点: 
(1) 要求在已确定的环境下进行。 
(2) 需要根据典型场景设计测试方案和用例。 
一般采用的方法是:性能测试、压力测试、可靠性测试、失效恢复测试。 
2.2 能力规划 
评估某系统能否支持未来一段时间内的用户增长或是应该如何调整系统配置,使得系统能够满足增长的用户数的需要。 
特点: 
(1) 属于一种探索性的测试 
(2) 可被用来了解系统的性能以及获得扩展性能的方法,例如系统扩容规划。系统容量可以是用户容量,也可能是数据容量,或者是系统的吞吐量(系统的处理能力)。对于集群服务我们更多的是用吞吐率作为容量。 
方法是①先对各子系统、组件进行性能测试,找出它们之间的最优配比;②然后再通过各环节的水平扩展,计算出整体的扩容机器配比。 
一般采用的方法是:负载测试、压力测试、配置测试。 
2.3 性能调优 
为了更好的发挥系统的潜能,定位系统的瓶颈,有针对性的进行系统优化。 
方法是在进行系统调优时,我们需要做好基准测试,用以对比性能数据的变化,并反复调整系统软硬件的设置,以使系统发挥最优性能。当然在进行系统优化时,我们会选取关键的指标进行优化,返时可能要牺牲其他的性能指标。如目标是优化响应时间,我们可能选取的策略是以空间换时间,以牺牲内存或扩大缓存为代价,还需要我们在各个性能指标中找到平衡点。 
一般对系统的调整包括以下3个方面: 
(1) 硬件环境的调整 
(2) 系统设置的调整 
(3) 应用级别的调整 
一般采用的方法是:基准测试、负载测试、压力测试、配置测试和失效恢复测试。 
2.4 发现缺陷 
和其他测试一样,性能测试也可以发现缺陷。特别是严格并发访问时是否存在资源争夺导致的响应时间过慢,或大量用户访问时是否导致程序崩溃。 
方法是设置集合点,实现严格并发用户访问;或者设置超大规模用户突发访问等这样的性能测试用例进行测试。

一般采用的方法是:并发测试。 

三、 性能需求分析 

1. 性能需求获取 

1.1 功能规格说明书 
1.2 系统设计文档 
1.3 运营计划 
1.4 用户行为分析记录 
2. 性能关键点选取 
主要从以下4个维度进行选取: 
2.1 业务分析 
确定被测接口是否属于关键业务接口或先分析出关键业务以间接获取该业务所访问的接口。 
2.2 统计分析 
若接口系统访问行为存在日志分析记录,则直接获取日访问量高的接口;否则根据接口发布类型,选择第3方日志分析工具间接获取。 
(1) IIS日志分析工具:Log Parser 2.2 + Log Parser Lizard GUI 
下载地址:Log Parser GUI. Analyze log files with SQL 
(2) Tomcat日志分析工具:AWStats v7.3 
下载地址:http://www.awstats.org 
(3) Nginx日志分析工具:GoAccess v0.9 
若IIS或Tomcat等接口应用服务器使用Nginx进行负载,则日志访问量要以负载为准,因避免接口在Nginx设置缓存(即未进行透传)而导致统计不正确。 
下载地址:http://www.goaccess.io

2.3 技术分析 
(1) 逻辑实现复杂度高的接口(如判断分支过多或涉及CPU/IO密集型运算等) 
(2) 对系统(内存、CPU、磁盘IO)及网络IO等硬件资源耗用高的接口 
备注:若接口因逻辑修改而重构,则需重新分析。 
2.4 运营分析 
由于运营推广活动导致日访问突增高的接口。 
备注:若运营计划调整,则需重新分析。 
3. 性能指标描述 
3.1 响应时间 
在一般情况下,弱交互类接口平均响应时间不超过1秒,强交互类接口平均响应时间不超过200毫秒。 
3.2 成功率 
在一般情况下,接口响应成功率需达到99.99%以上。 
3.3 系统资源 
若为最佳负载,则系统CPU及内存使用率建议区间[50%,80%],否则建议不超过50%。 
3.4 处理能力 
立项申请书明确要求:在XX压力下(并发数)TPS需达到XX或 接口系统可支撑XX万实时在线访问。 
3.5 稳定性 
在实际系统运行压力情况下,可稳定运行N*24(一般 N >= 7 )小时。 在高于实际系统运行压力1倍的情况下,可稳定运行12小时。 
3.6 特性指标 
例:Java类应用 FullGC 次数 <= 1次/天

四、 性能测试范围 

1. 业务范围 
关键业务功能点描述。 
2. 设计范围 
网络接入层、接口层、中间件、存储层等被测组件及拓扑结构描述。 

五、 并发数计算方法 

做过一些性能测试的童鞋刚开始比较纠结某个或某一类接口的并发数如何计算,其实并发数可以从用户业务和服务器的2个角度来看。 

1. 80/X原则 
适用范围:无限制 
以一项目为案例,母亲节当天接口服务器访问量分布如下所示,如何计算当天平均并发数和高峰并发数? 
这里写图片描述

 通过百度统计平台 百度统计——一站式智能数据分析与应用平台 查看母亲节当天UV曲线分布 与 请求量呈线性关系,如下所示: 
这里写图片描述

 采用微积分的思想,将每个时间点视为一个矩形,可以通过求和的方式求出整个分布图的面积,如下所示: 
这里写图片描述 
其实每个矩形的长度均为1(1小时),故求面积时只需考虑宽度,即考虑每小时请求量即可。 根据80/X原则,找出占据总体面积80%的时间,选择尽可能大的点计算出占据总体面积80%的时间,发现点的个数是7,意味着此时间长度占总时间长度30%,则80/X原则转换成80/30原则,如下所示: 
这里写图片描述

故,平均并发数(每秒平均请求数)= 80% * 日请求量 / 1天 * 30% 
进而计算出最高峰值与平均并发数的倍数 = 2.25 
故,高峰并发数(每秒高峰请求数)= 2.25 * 平均并发数 = 
2.25 * 80% * 日请求量 / 1天 * 30% = 6 * 日请求量 / 1天 
因UV与请求量曲线分布呈线性关系,日请求量 = 9.25 * 日UV 
故,高峰并发数 = 6 * 9.25 * 日UV / 1天 = 55.5 * 日UV / 1天 
2. 公式法 
适用范围:Web类访问 
公式(1)计算平均并发用户数:C = n * L / T 
C是平均的并发用户数;n是login session的数量;L是login session的平均长度;T指考察的时间段长度。

公式(2)计算并发用户数峰值: C’≈ C+3根号C

C’指并发用户数的峰值,C就是公式(1)中得到的平均的并发用户数。该公式的得出是假设用户的login session产生符合泊松分布而估算得到的。

这里写图片描述

例1: 
假设有一个OA系统,该系统有3000个用户,平均每天大约有400个用户要访问该系统,对一个典型用户来说,一天之内用户从登录到退出该系统的平均时间为4小时,在一天的时间内,用户只在8小时内使用该系统。 
C = 400 * 4 / 8 = 200 
C’≈ 200 + 3 * 根号200 = 242 
为了更好地理解上述公式,将其转换为如下公式: 
公式(3)并发用户数 = 吞吐率 * 场景业务时间 / 单位时间段 
例2: 
一个OA系统,1小时内有8000用户登录系统。用户每次登录系统,需启动登录页面,然后输入用户名和密码,进入首页。一般情况下,用户在上述操作过程中需耗时5秒,且要求从点击登录按钮到首页完全展现,需控制在5秒内。 
分析: 
吞吐率 = 8000 * 2(整个业务操作需加载2次页面才能完成) 
场景业务时间 = 5 + 5 = 10 秒 
单位时间段 = 1小时 = 3600 秒 
并发用户数(登录场景) = (8000 * 2)* 10 / 3600 = 45 
通过以上方法得到业务并发数后,我们可以进一步分析业务访问了哪些接口,我们只要模拟这些接口调用方式和调用时序就行了。 
有时我们需要计算某一个或某一类接口的并发数,我们可以按如下步骤进行分析计算: 
(1) 梳理出被测接口被访问的业务场景和每个业务场景访问的次数 
(2) 通过上述方法计算出业务场景的并发用户数 
接口并发数 = 场景1 并发用户数 * 业务场景接口调用次数1 + 场景2并发用户数 * 接口调用次数2 + …

假如一个系统需支撑10万在线用户数访问,如何通过性能需求分析来计算并发用户数?大家可以通过以上内容学习,独立思考下?

六、 性能测试用例与场景

  1. 脚本模板 
    这里写图片描述       
  1. 场景模板 
    这里写图片描述 

七、 性能测试工具选择 

 1. 数据建模工具 
DataFactory是一种强大的数据产生器,它允许开发人员和QA很容易产生百万行有意义的正确的测试数据库,该工具支持DB2、Oracle、 Sybase、SQL Server数据库,支持ODBC连接方式,无法直接使用MySQL数据库,可间接支持。 
2. 脚本开发工具 
(1) 若考虑脚本运行效率,则可考虑底层开发语言C或支持异步通信的语言JS,我们可以分别选择:Loadrunner 或 Node.js 的IDE环境进行开发。 
(2) 若考虑脚本开发效率,则可考虑代码复用性,可以选择面向对象语言C#或Java,为此我们可以分别选择:VS2008及以上版本 + 对应LR.NET控件 或者 Eclipse4.0及以上版本 + JDK1.7及以上版本。 
HTTP、Socket等协议接口性能测试脚本开发过程,请详见附件: 
HTTP接口性能测试之脚本开发与性能问题分析.pdf 
利用LR.Net控件完成性能测试脚本编写方法.pdf 
Node.js学习入门手册.pdf 
3. 压力模拟工具 
(1) 若为Java类接口且单机并发数控制在500内,则可选择Jmeter或者 Loadrunner。 
(2) 若为WebService类接口且单机并发数控制在500内,则可选择SoapUI或者Loadrunner。 
(3) 若单机并发数超过500且控制在5000内,则可选择Loadrunner。 
(4) 若单机并发数超过5000,则建议采用负载集群,即采用“中控(Control Center)+ 多机部署(Load Generator)”方案。 
4. 性能监控工具 
4.1 监控工具 
无论Windows或Linux平台,一般存在的是一个或一组进程实例,我们可以选择Loadrunner 或 Nmon 来监控。有时为了获取被测应用的一些特性指标,可以选择被测组件自带的性能工具集或监控系统。常见应用服务器监控工具推荐如下: 

这里写图片描述 
4.2 监控平台

 监控机器主要对被测集群服务器的服务或资源使用情况进行监控,比如各种开源的监控工具,MRTG:流量监控;CACTI:流量预警,性能报告Smokeping:IDC 质量监控;综合监控:Nagios、Zenoss、Ganglia 、Zabbix、Sitescope、Hyperic HQ 等,如下所示: 

这里写图片描述

4.3 第三方监控云服务(APM) 
APM提供端到端应用性能管理软件及应用性能监控软件解决方案,包含移动,浏览器,应用,基础设施,网络,数据库性能管理等,支持Java、.NET、PHP、Ruby、Python、Node.js、iOS、Android、HTML5等应用性能监控管理,主流云服务包括听云、OneAPM等,如下所示: 

这里写图片描述

八、 性能测试结果分析 

1. 指标分析 
性能测试的指标可分为产品指标和资源指标两类。对测试人员而言,性能测试的需求来自于用户、开发、运维的三方面。用户和开发关注的是与业务需求相关的产品指标,运维人员关注的是与硬件消耗相关的资源指标。 
这里写图片描述

(1) 从用户角度关注的指标 
用户关注的是单次业务相关的体验效果,譬如一次操作的响应快慢、一次请求是否成功、一次连接是否失败等,反映单次业务相关的指标包括: 
a.成功率b.失败率c.响应时间 
(2) 从开发角度关注的指标 
开发人员更关注的是系统层面的指标。 
a.容量:系统能够承载的最大用户访问量是多少?系统最大的业务处理量是多少? 
b.稳定性:系统是否支持7*24小时(一周)的业务访问。 
(3) 从运维角度关注的指标 
运维人员更关注的是硬件资源的消耗情况。 

这里写图片描述 
以上说明了测试人员在选择指标时需站在用户角度去思考,另外为了后续能够更好地分析问题,更需掌握与被测组件特性或运行原理相关的性能指标。

举例来说,通常接口系统均会直接或间接地访问数据库层介质(如Mysql、Oracle、SQLServer等),此时我们需考虑由接口系统产生压力下存储介质的性能情况,通常我们会选择分析指标如下: 
(1) 连接数(Connections) 
(2) 每秒查询数/每秒事务数(QPS/TPS) 
(3) 每秒磁盘IO数(IOPS) 
(4) 缓存命中率(Buffer Hits) 
(5) 每秒发生的死锁数(Dead Locks/sec) 
(6) 每秒读/写字节数(Read/Write Bytes/sec) 
对于Windows或Linux平台具体指标监控及分析方法,请详见附件: 
《Windows操作系统性能监控工具和指标分析V1.0》.pdf 
《Linux操作系统性能监控分析手册V1.0》.docx 
2. 建模分析 
2.1 理发店模型 

这里写图片描述

图中展示的是1个标准的软件性能模型。在图中有三条曲线,分别表示资源的利用情况(Utilization,包括硬件资源和软件资源)、吞吐量(Throughput,这里是指每秒事务数)以及响应时间(Response Time)。图中坐标轴的横轴从左到右表现了并发用户数(Number of Concurrent Users)的不断增长。 
在这张图中我们可以看到,最开始,随着并发用户数的增长,资源占用率和吞吐量会相应的增长,但是响应时间的变化不大;不过当并发用户数增长到一定程度后,资源占用达到饱和,吞吐量增长明显放缓甚至停止增长,而响应时间却进一步延长。如果并发用户数继续增长,你会发现软硬件资源占用继续维持在饱和状态,但是吞吐量开始下降,响应时间明显的超出了用户可接受的范围,并且最终导致用户放弃了这次请求甚至离开。 
根据这种性能表现,图中划分了三个区域,分别是Light Load(较轻的压力)、Heavy Load(较重的压力)和Buckle Zone(用户无法忍受并放弃请求)。在Light Load和Heavy Load 两个区域交界处的并发用户数,我们称为“最佳并发用户数(The Optimum Number of Concurrent Users)”,而Heavy Load和Buckle Zone两个区域交界处的并发用户数则称为“最大并发用户数(The Maximum Number of Concurrent Users)”。 
当系统的负载等于最佳并发用户数时,系统的整体效率最高,没有资源被浪费,用户也不需要等待;当系统负载处于最佳并发用户数和最大并发用户数之间时,系统可以继续工作,但是用户的等待时间延长,满意度开始降低,并且如果负载一直持续,将最终会导致有些用户无法忍受而放弃;而当系统负载大于最大并发用户数时,将注定会导致某些用户无法忍受超长的响应时间而放弃。所以我们应该保证最佳并发用户数要大于系统的平均负载。 
2.2 压力变化模型 

这里写图片描述 
随着单位时间流量的不断增长,被测系统的压力不断增大,服务器资源会不断被消耗,TPS 值会因为这些因素而发生变化,而且符合一定的规律。 

图中: 
a 点:性能期望值 
b 点:高于期望,系统资源处于临界点 
c 点:高于期望,拐点 
d 点:超过负载,系统崩溃 
2.3 容量计算模型这里写图片描述 
以一网站性能测试为案例:  

1. 通过分析运营数据,可以知道当前系统每小时处理的PV数 
2. 通过负载测试,可以知道系统每小时最大处理的PV数

即整理得

系统每小时PV处理剩余量 = 系统每小时最大处理的PV数 — 系统每小时处理的PV数

假设该网站用户负载基本呈线性增长,现有系统用户数为70万,根据运营推广计划,1年内该网站发展用户将达到1000万,即增长了14倍。即整理得:

系统每小时PV处理增加量 = 当前系统每小时处理的PV数 * 14 — 当前系统每小时处理的PV数

每天系统负载增加率 = 100% / 365 = 2.74 % (备注:此处将未来系统用户数达到1000万的负载定义为 100% )

系统每天PV处理增加量 = 系统每小时PV处理增加量 * 每天系统负载增加率 * 24

所以,我们可以知道在正常负载条件下:

系统可支持正常运行天数 = 系统每小时PV处理剩余量 * 24 / 系统每天PV处理增加量

假设该网站后续部署升级天数已知,这样我们可以知道提前升级的天数:

系统可支持正常运行天数 — 部署升级天数。 

九、 性能测试通过标准 

1. 所有计划的测试已经完成。 
2. 所有计划收集的性能数据已经获得。 
3. 所有性能瓶颈得到改善并达到设计要求。 

 

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

  1. 文档获取方式:

  2. 加入我的软件测试交流群:680748947免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

这份文档,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

以上均可以分享,只需要你搜索vx公众号:程序员雨果,即可免费领取

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

layuiAdmin-通用型后台模板框架【广泛用于各类管理平台】

1. 主页 1.1 控制台 2. 组件 3. 页面 3.1 个人主页 3.2 通讯录 3.3 客户列表 3.4 商品列表 3.5 留言板 3.6 搜索结果 3.7 注册 3.8 登入 3.9 忘记密码 4. 应用 4.1 内容系统 4.1.1 文章列表 4.1.2 分类管理 4.1.3 评论管理 4.2 社区系统 4.2.1 帖子列表 4.2.2 回…

支小蜜AI校园防欺凌系统可以使用在宿舍吗?

随着人工智能技术的快速发展&#xff0c;AI校园防欺凌系统已成为维护校园安全的重要手段。然而&#xff0c;关于这一系统是否适用于宿舍环境&#xff0c;仍存在一些争议和讨论。本文将探讨AI校园防欺凌系统在宿舍中的适用性&#xff0c;分析其潜在的优势与挑战&#xff0c;并提…

解析Perl爬虫代码:使用WWW__Mechanize__PhantomJS库爬取stackoverflow.com的详细步骤

在这篇文章中&#xff0c;我们将探讨如何使用Perl语言和WWW::Mechanize::PhantomJS库来爬取网站数据。我们的目标是爬取stackoverflow.com的内容&#xff0c;同时使用爬虫代理来和多线程技术以提高爬取效率&#xff0c;并将数据存储到本地。 Perl爬虫代码解析 首先&#xff0…

微信小程序开发学习笔记《21》uni-app框架-楼层图片跳转

微信小程序开发学习笔记《21》uni-app框架-楼层图片跳转 博主正在学习微信小程序开发&#xff0c;希望记录自己学习过程同时与广大网友共同学习讨论。建议仔细阅读uni-app对应官方文档 一、创建新的分包goods_list 二、将请求到的楼层数据url调整为本地的 可以看到上图是请求…

矢量图片转换软件Vector Magic mac中文版功能特色

Vector Magic mac中文版是一款非常流行的矢量图片转换软件&#xff0c;它的功能特色主要体现在以下几个方面&#xff1a; 首先&#xff0c;Vector Magic mac中文版拥有出色的矢量转换能力。它采用世界上最好的全彩色自动描摹器&#xff0c;能够将JPG、PNG、BMP和GIF等位图图像…

【C++ 】list 类

1. 标准库中的list类 list 类 的介绍&#xff1a; 1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器&#xff0c;并且该容器可以前后双向迭代 2. list与forward_list非常相似&#xff1a;最主要的不同在于forward_list是单链表 3. 与其他的序列式容器相比(a…

三星计划将其NAND闪存芯片价格上调最高20%

韩国媒体一份报告显示&#xff0c;三星电子的内存业务成功挺过了去年的市场低迷时期。最近&#xff0c;其减产策略终于见效&#xff0c;芯片价格随之上升。 据报导&#xff0c;今年第一季度&#xff0c;三星计划将其NAND闪存芯片价格上调最高20%&#xff0c;目标是恢复其内存芯…

渗透测试实战思路分析

免责声明&#xff1a;文章来源真实渗透测试&#xff0c;已获得授权&#xff0c;且关键信息已经打码处理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人…

王道机试C++第 5 章 数据结构二:队列queue和21年蓝桥杯省赛选择题Day32

目录 5.2 队列 1&#xff0e;STL-queue 课上演示&#xff1a; 基本代码展示&#xff1a; 2. 队列的应用 例:约瑟夫问题 No. 2 题目描述&#xff1a; 思路提示&#xff1a; 代码展示&#xff1a; 例&#xff1a;猫狗收容所 题目描述&#xff1a; 代码表示&#xff1…

javaweb学习(day09-Web开发会话技术)

一、会话 1 基本介绍 1.1 什么是会话&#xff1f; 会话可简单理解为&#xff1a;用户开一个浏览器&#xff0c;点击多个超链接&#xff0c;访问服务器多个 web 资源&#xff0c;然 后关闭浏览器&#xff0c;整个过程称之为一个会话。 1.2 会话过程中要解决的一些问题&#…

solana 入门 1

solana-co-learn Solana 开发学习笔记(一)——从 Hello World 出发 安装开发环境 windows下环境配置 wsl First start with installing WSL on your system. wsl --install wsl安装Ubuntu 列出可用的分发版 wsl.exe --list --online显示&#xff1a; 以下是可安装的有效…

【C语言】五种方法实现C语言中大小写字母的转化

文章目录 &#x1f4dd;tolower/toupper函数&#x1f309;tolower&#x1f320; toupper &#x1f320; ASCII码关系&#x1f309;位操作&#x1f309;宏定义 &#x1f320;小巧第五位&#x1f6a9;总结 &#x1f4dd;tolower/toupper函数 &#x1f309;tolower tolower函数是…

Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库

Windows中在C#中使用Dapper和Mysql.Data库连接MySQL数据库 在Windows中使用C#连接Mysql数据库比较简单&#xff0c;可以直接使用MySql.Data库&#xff0c;目前最新版本为&#xff1a;8.3.0。 当然也可以结合MySql.Data和Dapper库一起使用&#xff0c;目前Dapper的最新版本为&a…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Progress)

进度条组件&#xff0c;用于显示内容加载或操作处理等进度。 说明&#xff1a; 该组件从API version 7开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Progress(options: ProgressOptions<Type>) 创建进度组件&a…

Python Web应用程序构建的最佳实践:代码实例与深度解析【第122篇—装饰器详解】

Python Web应用程序构建的最佳实践&#xff1a;代码实例与深度解析 在当今数字时代&#xff0c;构建高效、可扩展的Web应用程序是开发者们的一项重要任务。Python&#xff0c;作为一种简洁、强大的编程语言&#xff0c;为Web开发提供了丰富的工具和框架。在本篇文章中&#xff…

用户案例|向量引擎在携程酒店搜索中的应用场景和探索

Zilliz AI 初创计划是面向 AI 初创企业推出的一项扶持计划&#xff0c;预计提供总计 1000 万元的 Zilliz Cloud 抵扣金&#xff0c;致力于帮助 AI 开发者构建高效的非结构化数据管理系统&#xff0c;助力打造高质量 AI 服务与运用&#xff0c;加速产业落地。访问https://zilliz…

【机器学习300问】38、什么是K-means算法?

在实际工作中&#xff0c;我们经常会遇到这样一类问题&#xff1a;给机器输入大量的特征数据&#xff0c;并期望机器通过学习找出数据存在的某种共性特征、结构或关联。这类问题被称为“非监督学习”问题。这篇文章我就来聚焦非监督学习中的其中一个任务——聚类 例如在数字营销…

OpenHarmony教程指南—ArkTS时钟

简单时钟 介绍 本示例通过使用ohos.display 接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 使用说明 1.界面通过setInterval实现周期性实时刷新时间&#xff0c;使用Canvas绘制时钟&#xff0c;指针旋转角度通过计算得出。 例如&#xff1a;"2 * Math.PI /…

leetcode 3.11

leetcode hot 100 二分查找1.寻找旋转排序数组中的最小值 矩阵1.搜索二维矩阵 II知识点&#xff1a;upper_bound, lower_bound知识点&#xff1a;二分查找 2.搜索二维矩阵 链表1.合并两个有序链表2.两数相加3. 删除链表的倒数第 N 个结点 二分查找 1.寻找旋转排序数组中的最小…

【C#】.net core 6.0 使用第三方日志插件Log4net,日志输出到控制台或者文本文档

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》系列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…