10分钟让你彻底了解Loadrunner性能测试工具

news2024/11/26 21:46:27

目录

Loadrunner简介

Loadrunner原理

Loadrunner工具组件

1、VUGen(虚拟用户生成器)

2、Controller(控制器)

3、Load Generator(负载生成器)

4、Analysis分析器


性能测试工具,从广义上讲,在性能测试过程中使用到的所有工具都可以称其为性能测试工具。从狭义上来讲,我们可以把性能测试工具分为服务器端性能测试工具与前端性能测试工具。

服务器端性能测试工具也我们测试人员通常所认为的性能测试工具。LoadRunner、JMeter、SilkPerformance、服务器端压力性能工具需要支持产生压力和负载,录制和生成脚本,设置和部署场景,产生并发用户和向系统施加持续的压力。

前端性能测试工具应用比较广泛,开发人员,前端开发人员、测试人员都会经常用到。Firebug 、fildder2、Yslow、HttpWatch,前端性能测试工具只需要关于心浏览器等客户端工具对具体需要展现的页面的处理过程。

  Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628

 

 

Loadrunner简介

LoadRunne是一种预测系统行为和性能的工业级负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。通过使用 LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。

LoadRunner能够完成:1)轻松创建虚拟用户;2)创建真实的负载;3)定位性能问题;4) 分析结果以精确定位问题所在;5)重复测试保证系统发布的高性能。

Loadrunner原理

根据LoadRunner的总体架构图,包括各个组件VUGen, ControllerLoad Generator(s)Analysis之间的关系,从而分析LoadRuuner工具原理如下:代理(Proxy)是客户端和服务器端之间的中介人,LoadRunner就是通过代理方式截获客户端和服务器之间交互的数据流。

1、LoadRunner的总体架构图:

2、LoadRunner的工作原理图:

 

3、下面为Loadrunner内部流程图,图示LoadRunner内部各个组件之间如何进行交互,数据流和文件流之间如何进行:

Loadrunner工具组件

1、VUGen(虚拟用户生成器)

该组件主要用于录制或手动编写脚本模拟用户在被测应用下的一系列活动,以便后面通过对该虚拟用户进行大量复制进行负载测试。该部分主要包括三个部分:脚本的录制、录制选项设置、运行时设置

1)协议支持

Loadrunner是一个基于协议的性能测试工具,则测试的对象都需要使用通信协议。该工具支持的协议见下面列表:

协议分类

具体支持协议

应用程序部署解决方案

Citrix ICA

客户端/服务器

DB2 CLI、DNS、Informmix、MS SQL Server、ODBC、Oracle(2层)、Sybase Ctlib、Sybase Dblib和Windows Sockets协议。

自定义

C模版、Visual Basic模版、Java模版、Javascript和VBScript类型的脚本。

分布式组件

适用于COM/DCOM、Corba-Java和Rmi-Java协议。

电子商务

FTP、LDAP、Palm、PeopleSoft 8 mulit-lingual、SOAP、Web(HTTP/HTML)和双Web/WinSocket协议。

Enterprise Java Bean

EJB测试和Rmi-Java协议。

ERP/CRM

Baan、Oracle NCA、Peoplesoft-Tuxedo、SAP-Web、SAPGUI、Siebel-DB2 CLI、Siebel-MSSQL、Siebel-Web和Siebel-Oracle协议。

传统

终端仿真(RTE)

邮件服务

Internet邮件访问协议(IMAP)、MS Exchange(MAPI)、POP3和SMTP。

中间件

Jacada和Tuxedo(6、7)协议。

流数据

Media Player(MMS)和Real协议。

无线

i-Mode、VoiceXML和WAP协议。

Loadrunner提供三种选择协议的方式:1)单协议脚本;2)多协议脚本;3)最近新建脚本类型使用过的协议。

2)脚本编写和录制

Loadrunner支持手动编写录制两种方式生成脚本。

手动编写支持常见的编程语言,如C++、Java、Visual Basic等。该工具按支持的编程语言,以及应用分类封装了一些常用方法,当手动编写脚本时,可以查阅函数库说明文档进行使用。

脚本录制时,VuGen模拟数据库客户终端并追踪所有用户发出的请求与用户从服务器接收的请求

停止录制时,所有客户端和服务器交互协议会被放在Generation Log内。VuGen根据Generation log进行协议交互分析,最终生成脚本。

回放期间, Vuser scripts通过调用服务器API直接与服务进行交流。因为不需要客户端界面,所以可以允许大量用户运行或使用更少的机器进行测试,同时在客户端未开发的时候执行测试。

①录制过程控制

在录制过程中,用户可以进行控制。包括开始录制、暂停录制、继续录制、插入集合点、插入开始和结束事务以及插入注释等功能。

②脚本参数化

在脚本录制完成后,可以对其中的可变数据进行参数化,以便获取真实的用户取值。

  1. 参数化提取数据行支持以下方式:
  • Sequential:顺序,所有虚拟用户按照顺序读取数据表;
  • Random:随机,所有虚拟用户随机形式读取数据表 ;
  • Unique:唯一,所有虚拟用户每次各取一值(不重复)。
  1. 参数的获取方式支持:
  • Each iteration:每次迭代以后;
  • Each occurrence:每次出现参数;
  • Once:每出现一个虚拟用户。

③脚本回放

脚本可以进行回放,可选“回放过程页面展现”的方式。回放过程中以日志呈现,如果出现错误将说明原因并标红处理,执行完后进行日志保存。用户可以在运行日志中查看到相应的执行信息。

并且回放完后,以页面统计方式呈现执行结果。包括回放的总体结果(成功/失败),失败的事务(步骤)数,以及以目录树的结构呈现每步骤的运行情况,如果出错的需要显示具体的错误信息。最后结果可以以HTML的形式导出。

3)录制选项设置

该部分主要包括对编写录制脚本所选语言、通信协议的选择、录制模式、录制结果处理、录制时错误处理、字符集支持、关联属性等的设置。

HTML-baseURL-base两种方式:

HTML-base方式:是对每个页面录制形成一条语句,在该模式下,访问一个页面,首先会与服务器之间建立一个连接获取页面的内容,然后从页面中分解得到其他的元素(component),然后建立几个连接分别获取相应的元素。

URL-base方式:是将每条客户端发出的请求录制成一条语句,对在该模式下,一条语句只建立一个到服务器的连接,并将通讯过程中的很多隐藏的信息都录制出来(如session、cookie)。

4)运行时设置

该部分主要包括对脚本迭代过程、用户操作的思考时间、运行错误处理方式、虚拟用户以线程或进程来处理的选择、用户网络模拟、浏览器效仿、检查点等设置。

5)强大的函数库

该工具按支持的编程语言,以及应用分类封装了一些常用函数,包括通用函数和特定协议的函数。

通用函数包括:信息相关的函数,如输出、打印错误信息;事务函数,如插入事务;运行时函数,如思考时间设置;参数相关函数,如字符转换,获取变量等。

特定协议的函数跟录制的协议类型有关系。主要方便用户在该协议下使用提供的特定函数进行过程通信的模拟。

6)系统及浏览器的支持

  1. 系统支持
  • Windows Vista SP2 32-bit
  • Windows XP Professional SP3 32-bit
  • Windows Server 2003 Standard Edition/Enterprise Edition SP2 32-bit
  • Windows Server 2008 Standard Edition/Enterprise Edition SP2 32-bit and 64- bit
  • Windows 7
  1. 浏览器支持
  • Microsoft Internet Explorer 6.0 SP1 or SP2
  • Microsoft Internet Explorer 7.0
  • Microsoft Internet Explorer 8.0

  Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628

 

2、Controller(控制器)

     Controller根据实际负载场景分析进行性能测试场景的模拟配置,并配置相应的性能计数器,然后以脚本为组分配到相应的压力生成器进行用户模拟完成负载测试。

该部分主要包括场景类型选择、场景设计、场景执行及场景监视。

1)场景类型选择

场景类型包括:手动测试场景面向目标测试场景

①手动测试场景

根据实际负载场景分析进行性能测试场景的模拟配置。

②面向目标测试场景

面向目标场景是一个闭环回馈关系,在这种场景模式下,首先定义要达到的目标,然后LoadRunner会自动基于这些目标创建场景,运行过程中,会不断的将结果与目标相比较,以决定下一步怎么走。

2)场景设计

手动场景配置

场景配置可以按照场景计划和用户组计划。

  1. 按场景计划,用户平均分配给虚拟用户组(一个测试脚本为一个虚拟用户组),然后统一进行计划配置,包括Initialize、Strart Vusers、Duration和Stop Vusers的设置。

     Initialize:初始化脚本,即提前为虚拟用户分配好所需的资源,设置初始化脚本的方式包括:

  • 在每个虚拟用户运行时初始化;
  • 每隔一段时间初始化一定的虚拟用户;
  • 在运行前完成虚拟用户的初始化。

     Strart Vusers:设置虚拟用户加载数量和方式,方式包括:

  • 同时加载所有用户;
  • 每隔一段时间加载一定的虚拟用户。
  • 设置场景的持续运行情况,包括:
  • 按照设置运行,即每个虚拟用户按照所指定的迭代次数运行,直到运行结束。
  • 按指定的时间运行,脚本迭代次数被忽略。

     Stop Vusers:停止虚拟用户及释放资源,停止虚拟用户使用方式包括:、

  • 持续运行结束后,同时停止所有的虚拟用户;
  • 每个一段时间停止一定量的虚拟用户。
  1. 按用户组计划,以组为单位进行计划,每个组都要设置自己的Strart Group、Initialize、Strart Vusers、Duration和Stop Vusers。

        Strart Group:设置每个组的运行方式,包括:

  • 当点击运行场景后,所有虚拟用户组立即执行。
  • 当点击运行场景后,隔一段时间后执行所有虚拟用户组。
  • 在某个特定的用户组运行结束后才开始,通俗的讲就是在某个脚本运行结束后才开始运行。
  1. 在手动场景中同时支持以百分比把虚拟用户分配到各用户组(脚本)中。

②面向目标场景配置

    在面向目标场景中,先定义测试达到的目标,然后再自动根据这些目标创建场景。

  1. 场景设置,包括:
  • Run Time:设置一个时间,当目标达到后该场景还会持续运行设置时间后结束。
  • If target cannot be reached:设置如果目标达不到,该如何处理场景,包括:停止场景并保存结果;继续运行场景直到达到目标。
  1. 加载行为设置,包括:
  • 自动加载用户;
  • 设定一个时间后达到目标;
  • 设置每隔一段时间增加一定的目标量。
  1. 目标类型设置,包括:
  • 虚拟用户数目标类型,主要用来测试服务器对并发用户的处理能力。
  • HPS(Hit per Second)目标类型,该目标是点击数/秒。设置HPS目标,同时设置最小虚拟用户数和最大虚拟用户数:当场景执行时,会优先使用最小的虚拟用户数来达到定义的目标;如果最小的用户达不到目标,则自动增加虚拟用户数,知道定义的最大虚拟用户数。
  • TPS(Transaciton per Second)目标类型,该目标是每秒处理的事务数。指定脚本中的目标事务,设置TPS目标,同时设置最小虚拟用户数和最大虚拟用户数。
  • 事务响应时间(Transaction Response Time)目标类型。指定脚本中的目标事务,设置该事务响应时间目标,同时设置最小虚拟用户数和最大虚拟用户数。
  • 每分钟处理的页面数(Pages per Minute)目标类型。设置目标,同时设置最小虚拟用户数和最大虚拟用户数。

③配置View Script

在场景设计,脚本加载后,可以通过View Script窗口列表对脚本修改,修改后需要重新加载脚本,确保修改有效。

④配置Load Generator(负载生成器)

负载生成器在控制器发出指令时,负责和其它的负载机建立联系并强制负载机执行。在View Script窗口中,虚拟用户组(脚本)对应一个负载生成器。

3)场景执行

  1. 场景控制,包括“开始场景”、“停止场景”、“重置/复位”、“虚拟用户组”、场景结束等功能。
  • 开始场景:开始运行;
  • 停止场景:场景运行停止;
  • 重置/复位:将所有的虚拟用户组重置为运行前的“关闭”状态,准备下一次场景执行。
  • 虚拟用户组:查看虚拟用户组每个虚拟用户的详细状态,如运行状态、脚本、负载生成器和所用时间。
  • 场景结束:结束运行,包括三种结束方式:等当前迭代运行结束后,再停止运行场景;等当前的Action运行结束后,再停止运行场景;不等待,立即停止运行场景。
  1. 虚拟用户组的控制,即可以针对每一个虚拟用户组进行相关的操作,包括暂停、重置、初始化、编号重新定义、对虚拟用户排序、查看用户组的脚本日志等。

4)场景监视

①关于联机监控

Loadrunner提供了一些列监视器,用户只需要做简单的设置即可完成对服务器监控相关信息的监控和统计。

具体包括下列监视器:

  • “运行时”监视器:显示参与场景的虚拟用户数和状态,已经虚拟用户数生成的错误数和类型。
  • “Web资源”监视器:监视场景运行时期间Web服务器上的信息,主要包括Web连接数、吞吐量、HTTP响应数、服务器重试次数和下载到服务器的页面数信息。
  • “系统资源”监控器:主要是监控场景运行期间Windows、UNIX、Tuxedo、SNMP、Antara FlameThrower和SiteScope资源使用情况 。
  • “网络延迟”监控器:显示关于系统网络延迟的信息 。
  • “防火墙”监控器:用来度量场景执行期间防火墙服务器信息统计的情况。
  • “Web服务器资源”监控器:用来度量场景运行期间Apache、Microsoft IIS、iPlanet (SNMP) 和iPlanet/Netscape Web 服务器的统计信息。
  • “Web应用程序服务器资源”监控器:度量场景运行期间应用程序服务器Ariba、ATG Dynamo、BroadVision、ColdFusion、Fujitsu INTERSTAGE、iPlanet (NAS)、Microsoft ASP、Oracle9iAS HTTP、SilverStream、WebLogic (SNMP)、WebLogic (JMX) 和 WebSphere统计信息的情况 。
  • “数据库服务器资源”监控器:用于度量场景运行期间数据库DB2、Oracle、SQL 服务器和Sybase统计信息的情况 。
  • “流媒体”监控器:用来度量场景运行期间RealPlayer和Media Player客户端以及Windows Media服务器和 RealPlayer 音频/ 视频服务器的统计信息 。
  • “ERP/CRM服务器资源”监控器:用来度量场景执行期间SAP R/3 系统、SAP Portal、Siebel Server Manager、Siebel Web 服务器和 PeopleSoft (Tuxedo) 服务器的统计信息 。
  • “Java性能”监控器:用于度量J2EE对象及J2EE和EJB服务器对象的统计信息 。
  • “应用程序组件“监控器:用来度量场景执行期间 Microsoft COM+和 Microsoft .NET CLR 服务器的统计信息。
  • “应用程序部署解决方案”监控器:用来度量场景执行期间 Citrix MetaFrame XP 和 1.8 服务器的统计信息。
  • “中间件性能”监控器:度量场景执行期间 Tuxedo 和 IBM WebSphere MQ 服务器的统计信息 。
  • “基础结构资源”监控器:用于度量场景执行期间网络客户端数据点的统计信息。

②监控器与度量

在控制器(Controller)中,可以选择配置监视器,添加相应的性能因子(如CPU使用情况、内存使用情况)进行监控。并且支持对监控的时间频率(如每次/5s)进行设置。当场景运行后,Controller会把监控中的数据以MS Access方式保存,以便后面分析器进行处理。

3、Load Generator(负载生成器)

根据控制器场景中的调度指令,然后根据脚本内容产生实际的负载,扮演“产生负载”的角色。即根据用户的设置,进行自我复制来生成多个客户端向服务器发送请求。每复制出来的一份就是一个进程或线程。一台压力测试机运行的虚拟用户数根据测试机的配置而定。多台测试机可以合作,来模拟更多的虚拟用户向服务器发请求。

   

4、Analysis分析器

场景运行后,可以根据保存的结果通过Analysis进行报告和图表方式呈现,以方便用户进行性能结构的分析。

1)测试结果信息

包括运行场景摘要信息、数据汇总、事务运行情况汇总及HTTP响应情况汇总信息。

  • 场景摘要包括:运行场景所在路径,结果所在路径,场景运行时间等信息。
  • 数据汇总信息包括:场景中最大运行虚拟用户数,总网络吞吐量,每秒钟的平均网络吞吐量,总点击数,每秒的平均点击数等。
  • 事务运行情况汇总,包括场景涉及所有事务的:最小响应时间、平均响应时间、最大响应时间、标准偏差、成功执行次数、失败次数等。
  • HTTP响应情况汇总,所有HTTP主要列出各响应状态(如HTTP200、404、400等)的总数,以及平均每秒响应的数目。

2)监控器信息图分析

自动根据监控器信息的类型以扇形图、曲线图、直方图等方式进行绘图呈现,并配以相应的信息统计表。反应计数器随时间变化关系的用曲线图进行呈现(如响应时间、吞吐量),对分类统计的用扇形图呈现(如错误统计),对对比统计的用直方图呈现(如事务成功、失败次数统计)。

可以对图进行操作,包括:设置图中统计数据的粒度、合并多图分析、在图中增加注释、对生成图的数据进行筛选(如事务名、事务响应时间为特定范围)后重绘等。

可以对信息统计表进行操作,包括:对表字段展现信息进行筛选(包括比例、度量、最小值、最大值、平均值、标准偏差、数量等),字段呈现图形的颜色、指定呈现筛选字段的图形,结果数据复制和导出等。

3)整合分析报告并导出报表

工具提供一套以上的默认的报告模版,并可以对模版中的标题、logo、页眉、页脚、显示的内容进行设置和增删形成正式的报告模版(模版可以保存,以便下次再次使用),然后工具根据测试结果信息和监控器分析图表生成性能测试报告。最后报告可以以WORD文档、HTML页面、水晶报表的方式导出。

  Python自动化测试学习交流群:全套自动化测试面试简历学习资料获取点击链接加入群聊【python自动化测试交流】:http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=DhOSZDNS-qzT5QKbFQMsfJ7DsrFfKpOF&authKey=eBt%2BF%2FBK81lVLcsLKaFqnvDAVA8IdNsGC7J0YV73w8V%2FJpdbby66r7vJ1rsPIifg&noverify=0&group_code=198408628

总结:

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

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Shell脚本攻略:Linux防火墙

目录 一、理论 1.安全技术 2.防火墙 3.通信五元素和四元素 二、实验 1.iptables基本操作 2.扩展匹配 一、理论 1.安全技术 (1)安全技术 ①入侵检测系统(Intrusion Detection Systems):特点是不阻断任何网络访…

游戏外包开发技术难点分析

游戏开发涉及多个领域的技术,因此在开发过程中可能会遇到很多技术难点。今天和大家分享一些常见的游戏开发技术难点,希望对大家开发游戏有一定帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。 1. 图形渲染…

「料见」vol25.回顾 | PKU-Beaver开源项目团队:一起来聊首个可复现的RLHF基准

为了解决复现RLHF技术和基于RLHF技术的大预言模型的不安全问题,北京大学团队开源了名为PKU-Beaver(海狸)开源项目。 第25期料见闭门分享会,我“门”非常开心邀请到PKU-Beaver开源项目团队成员——北京大学人工智能研究院助理教授…

欧美同学会第三届“双创”大赛——空天装备产业赛区(浙江诸暨)正式启动,开启报名通道

6月8日,欧美同学会第三届“双创”大赛——空天装备产业赛区(浙江诸暨)启动仪式暨北京推介会圆满举行。活动由欧美同学会(中国留学人员联谊会)主办,中共浙江省委统战部支持,浙江省欧美同学会、中…

国内比较火的报表工具测评——Smartbi电子表格软件和Finereport

最近在学习BI软件,因为最近工作中需要开发报表,因此选用了国内市场比较热门的报表工具——Finereport和Spreadsheet进行学习。 BI软件经常会定期发布新的版本,增加新的功能模块,或者对现有功能进行增强,提升运行效率。…

解决pip install -r requirements.txt 超时

解决方案: pip install -r requirements.txt -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com测试验证

让你的AndroidUI更亮眼:Jetpack Compose中的可视状态

让你的Android UI更亮眼:Jetpack Compose中的可视状态 任何设计系统的重要责任是清晰地表明哪些组件可以与之交互,哪些不行,并让用户知道交互已发生。本博客文章将解释如何监听Jetpack Compose中的用户交互,并创建可重用的视觉指…

关于接口的安全性测试,这几点你必须掌握!

01、接口防刷 1.为什么会有人要刷接口? 牟利:黄牛在 12306 网上抢票再倒卖。 恶意攻击竞争对手:如短信接口被请求一次,会触发几分钱的运营商费用,当量级大了也很可观。 压测:用apache bench 做压力测试。…

高性能计算与AI融合成为刚需|什么是高性能计算?应用领域有哪些?与人工智能的关系梳理

本文一部分转载自杨净 整理自 MEET2023量子位 算力的需求,远比以往来得更为猛烈。甚至有人直呼:得算力者得未来。 元宇宙、AIGC、AI for Science的涌现,又给高性能计算(HPC)平添了好几把火。 在诸多挑战与机遇共存交…

大数据治理入门系列:数据管理

在如今的大数据时代,每天都会产生大量的新数据,已有数据可能也会频繁更新或转换。因此,需要对数据进行治理和管理,以便高效地开展数据分析、获取数据洞见、挖掘数据价值。否则,杂乱无章的数据只会白白浪费存储空间&…

python基础----10-----python操作mysql

一 前言 对于SQL章节前言->SQL_DQL_排序分页的课程,这里不做记录,因为都是讲MYSQL本身的内容,与python无关。 当然,接下来的课需要用到mysql,所以大家需要自行下载,这并不难。 二 python操作MYSQL基础…

当BPM遇上低代码 “自定义”提升业务管理效率

业务流程管理(BPM)的历史可以追溯到科学管理和质量管理的发展,并逐步演变为一个更加系统化和综合的管理方法。它在现代组织中起到了优化业务流程、提高效率和质量、增强灵活性和创新能力的重要作用。 从20世纪初的科学管理理论中&#xff0c…

【Linux】什么是进程(process)?

目录 进程与程序概念描述进程-PCBWindows进程与Linux进程Linux进程操作子进程父进程创建进程(初识-fork) 进程与程序概念 在Linux系统中,触发任何一个事件时,系统都会将它定义成为一个进程,并且给予这个进程一个ID,成为PID&#x…

Apikit 自学日记:如何安装 Apikit

Apikit 有三种客户端,你可以依据自己的情况选择。三种客户端的数据是共用的,因此你可以随时切换不同的客户端。 肯定会有和我一样的小白,第一次听说 Apikit这个工具,那么我今天和大家一起学习下这个工具如何安装。 我们推荐使用新…

校招失败后,在小公司熬了 2 年终于进了华为,这次真是竭尽全力了····

其实两年前校招的时候就往华为投了一次简历,结果很明显凉了,随后这个理想就被暂时放下了,但是这个种子一直埋在心里这两年除了工作以外,也会坚持写博客,也因此结识了很多优秀的小伙伴,从他们身上学到了特别…

Angular实现用ng-class和ng-style控制数组最后一个数据为红色

首先我们来看class方案实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title>…

Python模块的安装

1.用pip命令安装模块 pip是python官方的编程环境提供的一个命令&#xff0c;主要功能就是安装和卸载第三方模块。 用pip命令安装模块的方法最简单也最常用&#xff0c;这种默认将模块安装在python安装目录中的“site-packages"文件下。 1.1 pip命令安装模块的具体方法 …

MySQL的索引为什么要下推?

文章目录 一、回表操作 二、主键索引 三、非主键索引 四、低版本操作 五、高版本操作 六、总结 一、回表操作 对于数据库来说&#xff0c;只要涉及到索引&#xff0c;必然绕不过去回表操作。当然这也是我们今天所讲的内容的前提基础。说到回表&#xff0c;我们需要从索引…

HarmonyOS学习路之开发篇—Java UI框架(DirectionalLayout)

DirectionalLayout DirectionalLayout是Java UI中的一种重要组件布局&#xff0c;用于将一组组件(Component)按照水平或者垂直方向排布&#xff0c;能够方便地对齐布局内的组件。该布局和其他布局的组合&#xff0c;可以实现更加丰富的布局方式。 DirectionalLayout示意图 支持…

微信小程序实现瀑布流布局效果

一、效果 二、内容 1、xml代码 <!-- 列表 --><view class"list_title">推荐</view><view class"waterfall"><block wx:for"{{list}}" wx:key"index" wx:for-index"id" wx:for-item"itemNam…