- 博客(113)
- 收藏
- 关注
原创 Vue: el-select选项中如何显示label之外的其他信息
如下:添加span来显示,且可以为不同的span定义不同的style,以实现文字灰度上的差异。实现如下效果:在选项旁边显示额外的信息,比如人员所属部门,或者产品的价格信息等。
2025-04-24 14:09:37
97
原创 [AI问答整理]Python 中的数据类dataclasses及类变量ClassVar
直接写discount = 0.1 和使用discount: ClassVar[float] = 0.1的异同但是,后续修改时,便会有不同的行为:使用discount = 0.1时1、如果修改 某个实例 的discount,不影响其他实例2、如果修改 类的默认值,仅影响新实例,不影响已存在的实例无法保证全局一致性:如果业务要求所有产品的折扣必须同步变更(例如某品类统一调价),这种写法需要手动修改每个实例,容易出错。
2025-04-20 09:30:00
628
原创 playwright中的页面加载和等待策略
在 Playwright 中,是自动化测试稳定性的核心。不同的等待策略适用于不同的场景(如静态页面、动态 SPA、AJAX 请求等)。
2025-04-19 09:30:00
1062
原创 pytest中的fixture及conftest对测试用例管理的作用
先看AI给出的解释:在pytest中,fixture是一种用于管理测试用例执行过程中共享资源的工具。通过fixture,可以在测试用例执行前后进行一些初始化和清理操作,以确保测试用例能够在一个可控的环境中运行。fixture可以用来模拟测试环境、准备测试数据、管理依赖关系等。通过在测试用例函数参数中使用装饰器来定义fixture,并将其传递给需要使用该fixture的测试用例函数。pytest将会在执行测试用例前自动调用fixture函数,并将其返回值传递给测试用例函数。
2025-04-18 09:30:00
1930
原创 pytest导入类包出错:NameError: name ‘XXX‘ is not defined
先说结果:循环引用导致出错,找到出现循环引用的包,处理即可。以下是排查步骤。
2025-04-17 09:00:00
131
原创 jenkins+jmeter容器化部署
FROM jenkins/jenkins:2.361.2-jdk11 //镜像USER root //使用root用户Copy apache-jmeter-5.5.tar.gz /usr/local //将当前目录下的Jmeter拷贝至/usr/local中。
2025-04-16 09:30:00
465
原创 性能瓶颈定位思路和常用优化措施
1、首先排除压力机自身的问题,如CPU、内存,网络,脚本编写等2、监控中间件的访问日志,观察响应时间,大体确定耗时处于哪一段3、排查网络问题,监控压力机到后端服务器的网络,以及各服务器间的网络,是否达到网络上限4、监控服务端所有机器的操作系统负载,如CPU、内存、磁盘、网络是否达到瓶颈5、监控应用服务器的日志,查看是否存在ERROR日志,比如TimeOut或其他类型报错6、监控各中间件的连接数,如nginx、tomcat、mysql等,是否达到上限。
2025-04-15 09:30:00
793
原创 性能测试监控与分析-响应时间过长
1、网络问题,尤其是走公网2、硬件资源:CPU、内存、磁盘3、数据库,慢SQL4、线程阻塞5、数据库6、程序问题7、第三方系统接口比较慢8、连接数问题逐项排查。
2025-04-14 09:30:00
740
原创 性能测试-tomcat连接数
Tomcat 处理请求时,是需要 Connector 进行调度和控制的,Connector是Tomcat 处理请求的主干。Connector 中有一个 accepf队列,当客户端向服务器发送http请求时,如果客户端与操作系统完成三次握手建立了连接,就将该连接放入accept队列,poller从队列中获取到链接后,从链接中获取请求,生成一个java request,然后从 tomcat 内部的线程池中找到空闲的线程去执行对应请求。
2025-04-13 09:30:00
1104
原创 性能测试方案核心 - 需求分析、性能指标到测试模型
在性能测试过程中,需求分析以及性能指标的确定,是性能测试方案中的重要部分。通过分析系统,抽取测试场景,分析业务性能指标,最终确定测试模型。通常,系统核心业务/模块,产品或需求人员都能比较清晰地梳理出来,但是,每个场景的性能指标,不一定是清晰的。那么,如何确定所抽取场景的性能指标呢?
2025-04-12 11:30:00
840
原创 性能测试理论基础-数据库连接数&连接池
数据库连接是应用程序与数据库之间的通信通道,通常指TCP连接。操作系统是通过个四元组来标识一个 TCP 链接:{本地ip,本地 port,远程 ip,远程 port},这四个要素唯一确定一个 TCP 链接,任意一个要素不相同,就认为是一个不同的链接。在 Linux 系统中,一切皆文件,每一个TCP 链接都要占用一个文件句柄,系统允许创建的链接数取决于句柄数的上限。超过这个值再创建链接就会报这样的错误'Can't open so many files'
2025-04-12 10:00:00
1083
原创 性能测试监控-CPU消耗过高
压测过程中,发现应用服务器的CPU使用率比较高(>80%),有两种情况1、接口的性能非常好,比如响应时间<10ms,tps很高,此时CPU使用率高是正常的,不需要优化2、接口性能不好,比如响应时间>200ms,tps很低,此时需要考虑优化。
2025-04-11 10:00:00
972
原创 性能测试监控-prometheus监控Oracle死锁
二、具体实施步骤1. 部署Oracle Exporter推荐使用以下两种Exporter之一:选项B:prometheus-oracle-exporter2. 配置Prometheus抓取在prometheus.yml中添加配置:3. 关键监控指标以下是与死锁相关的重要指标:推荐使用以下两种仪表板之一:导入方法:自定义死锁监控面板示例:5. 告警规则配置在Prometheus中添加告警规则:三、高级监控方案1. 自定义SQL监控通过orac
2025-04-10 10:00:00
687
原创 性能测试监控-线程死锁
线程死锁是指 在执行过程中,因争夺共享资源而陷入无限等待的状态,导致所有相关线程都无法继续执行。有两个线程,一个线程锁住了资源A,又想去锁定资源B,另外一个线程锁定了资源B又想去锁定资源A,两个线程都想去得到对方的资源,而又不愿释放自己的资源从而造成一种互相等待,无法执行的情况。
2025-04-09 10:00:00
647
原创 性能测试监控-Java线程监控线程阻塞案例
新建:new运行:runnable等待:waitting(无限期等待),timed waitting(限期等待)阻塞:blocked结束:terminated。
2025-04-07 09:00:00
1048
原创 性能分析调优-JVM基础:堆、栈、元空间
因为堆占用内存空间最大,堆也是Java垃圾回收的主要区域(重点对象),因此也称作“GC堆”(Garbage Collected Heap)1.各线程共享,主方法区要存放类信息、常量、静态变量(static),如:public static int a=10。:堆内存中存在大量对象,且都在被引用,无法被清理,导致堆内存不足,无法分配新对象。栈区比较小,所以只是存放对象的地址,对象的真正的的数据存放在堆区中。垃圾收集器是内存回收算法的具体实现,没有完美的收集器。(如未关闭的集合、缓存)。
2025-04-05 08:45:00
659
原创 性能测试监控-Tomcat监控
是一个开源的(Web 服务器 + Servlet/JSP 引擎),主要用于部署和运行(如基于 Spring、Struts、JSP 等的应用)。:作为 Web 服务器,接收并响应 HTTP(S) 请求。:解析并运行 Java Servlet 和 JSP 页面。:通过线程池处理并发请求,提高性能。:支持 HTTP Session 管理(如用户登录状态)。:如 NIO、APR 等模式,优化网络 I/O 性能。
2025-04-04 10:00:00
772
原创 性能测试监控-操作系统级别的监控
Cpu(id)的计算基准:所有核心的平均空闲时间。进程%CPU的计算基准:所有核心的总占用时间。多核系统中,进程的%CPU可超过总体使用率的平均值,因为前者是总和,后者是平均。这是正常现象,不表示统计错误。内存CPU使用率:<80%内存使用率:<80%磁盘繁忙度:<90%网络流量:<网络上限。
2025-04-03 12:00:00
787
原创 性能测试理论基础-Redis基础及缓存穿透、击穿、雪崩
缓存穿透是指在使用redis时,数据在redis和数据库中都不存在,导致每次查询都要访问数据库,但是又不能把数据缓存到redis,从而后续每次请求都要查数据库,造成数据库压力过大,系统性能降低,甚至可能引起数据库宕机。一个热门的、经常被访问的数据过期或失效后,后续大量并发请求同时请求失效的数据直接访问数据库,导致数据库负载剧增,造成系统性能下降甚至崩溃的情况。2、空结果缓存:如果查询的数据不存在,也将结果缓存到缓存中,但设置一个较短的过期时间,避免频繁查询不存在的数据。
2025-04-02 08:30:00
586
原创 性能测试理论基础-web和APP性能测试
web系统通常包含客户端(浏览器)和服务端。:用户在浏览器地址栏中输入网址或点击链接,浏览器向服务器发送请求,请求页面的HTML、CSS、JavaScript、图片等静态资源。服务器接收到请求后,会将所需的资源文件发送给浏览器,浏览器开始下载资源文件。:浏览器收到HTML文件后,开始解析HTML代码,构建DOM树(文档对象模型)。:浏览器解析HTML时,会遇到链接的CSS和JavaScript文件,在解析过程中加载并执行这些文件,同时构建CSSOM树。
2025-04-01 17:30:00
676
原创 性能测试理论基础-性能测试的目的及系统性能的衡量标准
1、测试系统最大处理能力寻找系统最大的TPS,判断TPS和对应的响应时间是否满足预期。估算对业务量的处理能力。2、测试系统支持最高并发寻找系统最高能支持多少并发,当系统出现宕机、进程崩溃、报错率持续上升、响应时间超过可忍受范围(高频接口:<100ms,低频接口:<200ms)、程序无响应等情况,即可认为系统达到了可支持的最高并发。
2025-03-31 17:30:00
416
原创 Jmeter中的身份认证:cookie和token
浏览器与服务器间通过HTTP协议进行信息交互。但是HTTP协议是一种无状态协议,这意味着每个HTTP请求之间都是相互独立的,服务器在处理每个请求时不会保存前一个请求的状态信息。这样导致在一些诸如加入购物车、提交订单这样需要状态保持的业务场景中,无法确认用户的身份信息。于是,需要引入一种机制来维护会话状态。cookie或者token机制便可以在应用层实现一定程度的状态保持,进而实现这一需求。
2025-03-30 09:00:00
369
原创 性能测试理论基础-集合点与定时器
集合点是为了增加瞬间并发压力的一种机制,在脚本中增加一个标记,所有虚拟用户执行到标记处会进行等待,等所有用户都到达后,再同时继续执行下一步操作。主要目的是**模拟瞬时高并发场景**,验证系统在突发流量下的处理能力。: 对服务器来说,会产生一种瞬间高并发: 对服务器来说,平均压力会降低。
2025-03-29 09:00:00
785
原创 性能测试理论基础-测试流程及方案设计要点
如果包含混合场景,需要确定各接口/场景的业务比例示例:其中,TPS和响应时间都是指系统性能(吞吐量/TPS)到达拐点时的TPS和响应时间。业务占比:要保证做不同事务的用户满足比例关系。
2025-03-28 20:45:00
826
原创 性能测试理论基础-性能指标及jmeter中的指标
将所有请求的响应时间先从大到小进行排序,计算指定比例的请求都是小于某个时间。该指标统计的是大多数请求的耗时。
2025-03-27 20:00:00
1261
原创 性能调优之数据库调优-查询结果量级对响应时间的影响
即服务器处理请求所花费的时间,通常以毫秒(ms)为单位。较低的响应时间意味着服务器响应速度更快。:指单位时间内服务器处理的请求数量,通常以每秒请求数(Requests per Second,RPS)来衡量。高吞吐量表示服务器可以处理更多的请求。:指同时连接到服务器的用户数量。较高的并发用户数意味着服务器需要同时处理多个请求,并能承受更大的负载。:显示服务器的 CPU 使用情况,通常以百分比表示。高 CPU 使用率可能表示服务器过载或存在性能瓶颈。:显示服务器内存的使用情况,通常以百分比表示。
2025-03-27 12:18:52
916
原创 性能调优之数据库调优-数据库的慢查询
使用数据库的 Exporter 采集慢查询指标。配置 Prometheus 采集 Exporter 数据。定义慢查询的阈值并设置告警规则。在 Grafana 中可视化慢查询指标。结合日志分析具体的慢查询语句。通过以上方法,可以全面监控和分析数据库的慢查询,及时发现和解决性能问题。3、定位慢查询的原因根据分析结果,定位慢查询的根本原因。缺少索引:查询条件中的列没有索引,导致全表扫描。低效的查询逻辑:如复杂的 JOIN、子查询或 GROUP BY。锁争用:查询因等待锁而变慢。
2025-03-20 17:00:00
604
原创 性能调优之数据库调优-数据库的锁机制
MySQL:使用和INNODB_TRX表。PostgreSQL:使用pg_locks和视图。SQL Server:使用和动态管理视图。Oracle:使用v$session视图。MongoDB:使用命令。Redis:使用INFO命令。
2025-03-19 10:24:03
649
原创 vue2:el-table列中文字前面加icon图标的两种方式
如果是只读的,使用input,且添加锁标记,否则使用下拉框。2、input里面加icon。1、文字前面加icon。
2025-03-14 19:15:00
296
原创 数据库使用tips记录
执行update显示执行成功,查询时发现字段内容已经被正确修改了,然而这时候想要去修改表结构(执行alter语句),比如修改字段长度,总是提示“错误号: -6407,错误消息: 锁超时”。此时执行了一下commit,提示“影响了0条记录”然而此时再去修改表结构,成功。。所以,谜一样的commit。
2025-03-13 15:02:23
231
原创 vue2:表单的动态校验和静态校验
通常情况下,我们会在不同的状态下复用同一个表单,比如查看详情页和编辑页面,而不同状态下,校验规则可能有细微不同,这样,我们就需要在执行校验的时候先检查状态,不同的状态下,采用不同的规则,这就要用到动态校验。
2025-03-11 19:45:00
190
原创 vue2:在异步响应式中确保正确响应的神器 - $nextTick
所以,猜测可能是因为第一步删除之后Dom没有执行更新,紧接着又执行了数据的插入,等DOM更新的时候,没有检测到这一行子节点的数据变化(可能是因为值更新了其中的编号,而层级太深?),所以,就没有刷新这个子节点。但是目前看没有消失,所以猜测是删除操作未生效,于是,先把插入到新位置的第二行代码注释掉,仅执行第一步删除原节点的操作。方法修改数组),Vue并不会立即更新DOM,而是将这些更新操作放入一个队列中,在下一个事件循环中统一处理。在Vue中,数据的变化会触发视图的更新,但这个更新过程是异步的。
2025-02-08 17:30:00
46
原创 Vue2:通过inject在子组件中使用父组件通过mixin引入的公用方法
在Vue 2中,mixins和inject都是用于实现组件间代码复用的机制,但它们的使用场景和方式有所不同。
2025-02-07 20:15:00
255
原创 vue2:如何动态控制el-form-item之间的行间距或label的位置
某页面有查看和编辑两种状态:编辑:查看:可以看到,查看时,行间距太大导致页面不紧凑,所以希望缩小查看是的行间距。行间距通常是通过 CSS 的 或 属性来控制的。在 Element UI 的样式表中, 的下边距()通常被设置为 ,这可以视为一种“行间距”。所以要缩小行间距,就要改变这个值,但是又不希望改变编辑状态的默认值,所以,使用动态class,如下:2、动态加载class:class="formEditable?'':'el-form-item-view'" :编辑状态下,不指定
2025-02-06 20:00:00
713
原创 JavaScript使用toFixed保留一位小数的踩坑记录:TypeError: xxx.toFixed is not a function
这就导致执行第一次后,child.order的类型变成了String,这样第二次执行toFixed的时候出错。JavaScript的toFixed函数是用于将一个数字格式化为指定的小数位数的字符串。toFixed()的返回值是String,不是Number。参数是一个可选参数,默认值为0,表示不保留小数位。然而第一次执行正确,第二次执行时,提示。是需要格式化的数字,
2025-01-26 17:30:00
173
原创 Vue2:父子组件间参数传递 - 单项传递和双向绑定
在之前的经验中,数据通常都是从父组件通过prop单项传递给子组件,供子组件使用,但是并不修改。
2025-01-24 18:00:00
209
原创 Vue2:使用sortablejs实现el-table中行拖拽调整顺序
如图,实现拖拽表格中的行来调整行顺序,但是其中的编号仍然是1、2、3、4的顺序,不跟着变化。
2025-01-23 20:30:00
813
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人