自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 Sonarqube源码解析

Sonarqube一、简介SonarQube 是一种自动代码审查工具,用于检测代码中的错误、漏洞和代码异味。它可以与您现有的工作流程集成,以实现跨项目分支和拉取请求的持续代码检查二、组成Sonar主要由sonar-scanner、sonar-server两个部分组成sonar-scanner作用主要是负责代码扫描sonar-server作用是负责sonar web展示工作、数据库交互工作、扫描计算工作、规则存储工作、第三方插件打通等Sonar-scanner源码一、地址GitHub:

2022-05-24 10:04:55 5126 4

原创 JMeter取样器中的Java请求底层实现

一、前言JMeter作为一款主流的性能框架,可以执行主流的:http压测、jdbc压测、tcp压测、dubbo协议压测,关于它支持的压测类型都是基于取样器去实现的,本文我们着重介绍java request取样器的底层实现二、Java Request介绍取样器:java request ,本质是通过用户自定义的jar打入到JMeter /lib下的一个扩展jar,表面是使用JMeter引擎来执行压测,但是压测的内容是通过你自定义jar来实现的FAQ:为何执行http请求用java request

2022-01-04 18:00:29 1486

原创 SpringBoot整合sigar实现服务端监控

sigar简介Sigar全名是System Information Gatherer And Reporter,中文名是系统信息收集和报表的开源工具,它用来从许多平台收集系统和处理信息sigar可以运行的平台:Linux,Windows,Mac OSXhttps://github.com/hyperic/sigar/依赖汇编文件下载地址:https://sourceforge.net/projects/sigar/files/sigar/1.6/由于sigar采集的信息时通过底层C语言来执行

2022-01-04 15:17:41 2363

原创 解决document.cookie无法获取到cookie问题

一、前言在进行前后端联调的时候,由于想实现一个登出操作,前端自动删除浏览器存储的cookie,想通过document.cookie来获取进而进行删除操作,但是发现浏览器有cookie;但是无法获取到情况遂记录二、场景复现首先登录后,浏览器中是有记录cookie的,如图然后我代码层执行documen.cookie发现获取不到,浏览器控制台也同样后面去研究了一下application中存放的cookies的属性内容,发现有个属性HttpOnly是选中状态,这个状态是由于后端设置cookie的时候

2021-04-27 09:02:06 15833 4

原创 JMeter压测JDBC底层原理实现

一、简介大家应该都知道JMeter的玩法其实多种多样,不光能压测主流的HTTP协议,同时也是支持JDBC的压测,但是JDBC压测如何配置?底层又是如何实现的估计大多数测试同学可能还是一头雾水;毕竟大多数测试同学还是对HTTP压测比较熟悉,那么接下来我将一步一步由浅入深的给大家讲解它具体是如何实现的二、参数介绍根据JMeter官方文档给出若要实现JDBC压测,首先要建立基础的连接配置,需要添加JDBC Connection ConfigurationVariable Name for crea

2021-04-20 16:17:07 3184

原创 深度分析JMeter生成的HTML报告存在的Bug

一、介绍最近在给公司压测前端灰度这个案例发现了对于HTTP重定向请求,JMeter原生生成HTML报告结果统计与聚合报告结果对不上,细看JMeter这块源码发现对于重定向请求,JMeter生成HTML报告的确存在BUG,话不多说我们一步一步往下分析吧二、分析案例摸底清楚302请求,为什么客户端发起两次请求,聚合报告只有一次首先我们先模拟出故障进行比对一下,线程组配置:线程数1、循环次数1 ,理论上该配置jmeter客户端只会发出一次请求如果上述HTTP请求配置对应的是重定向(302

2021-04-09 16:07:58 4502

原创 spring项目操作docker

前言看到标题可能有些人会问,spring操作容器有什么用途?那么请问容器有什么用途?1.容器可以用来部署启动服务,一般服务相关都是运维通过脚本来操作的,而非用springboot2.所以springboot可以操作容器,就形成了接口调用的形式来对容器进行相关操作,岂不是很方便那些场景需要用到spring操作容器?例如:容器化的分布式压测平台,如果可以通过spring服务远程接口调用形式操作容器,那就可以对容器资源进行“即插即用”这样资源可以得到最大效率的可控性例如:有些大公司都有自己的发布

2021-03-19 11:20:31 4863

原创 springboot项目组引入JMeter

一、前言看到标题的小伙伴肯定很好奇,springboot项目中用JMeter能干什么,那么我先反问你JMeter能用来作什么?压测;接口自动化?,如果你能猜到这两点那你对JMeter肯定是有了一定的认知,同样你也猜对了,用它来做接口自动化但是可能会有小伙伴会有疑问为什么不拿他来做压测,当然可能拿来做压测但是不建议在springboot项目中整合压测功能,毕竟压测本来就是一种多线程的形式而且极其消耗内存,spring项目本来就很重,所以得不偿失。当然对于压测我又另一种方案,就是容器化的分布式压测,这

2021-03-10 15:18:59 13264 18

原创 JMeter中的后端监听器

一、JMeter后端监听器介绍说到JMeter后端监听器,必须要从源头BackendListener开始说,最后延伸到我们需要的BackendListenerClient,下面我们一一展开BackendListener是啥?源码简单介绍BackendListener是一种异步监听并获取到测试结果的实现类,也就是说测试(例如发出的HTTP请求的响应结果,及请求数据)都会被封装在SampleResult对象中并被其监听接收/** * Async Listener that delegates Sa

2021-03-10 11:03:55 17838 4

原创 一文搞懂JMeter engine中的HashTree配置

一、前言之前介绍了JMeter engine启动原理,但是里面涉及到HashTree这个类结构没有给大家详细介绍,这边文章就详细介绍JMeter engine里面的HashTree结构具体用来做什么大家看到下面是JMeter控制台配置截图,是一个标准的菜单形式;菜单形式其实就类似于“树型”的数据结构,而HashTree其实就是一个树型数据结构我们在JMeter控制台导出的jmx文件,是一个xml结构的数据,他其实就是由HashTree生成的,后面我们会讲到二、HashTree的用法首先通

2021-03-09 21:25:43 11683 3

原创 OPSTIONS请求引发的跨域问题

一、 前言在写分布式压测平台前端部分定义了一个接口:/api/pressure/addPressssureConfig ,由于该接口的特殊性,我的前端部分采用axios框架,自己设置了请求头当我开始前后端联调的时候框架发出了OPSTIONS请求,而非我预期的正常POST请求,而OPSTIONS请求是不会携带Cookie的,所以OPSTIONS请求在后端拦截器处理必然失败,导致浏览器报跨域问题二、解决方案分析后面查了相关文章,axios框架如果自己设置请求头,框架会先发出OPSTIONS

2021-03-04 10:38:00 8464 2

原创 JMeter engine启动原理

一、简介本文主要介绍jmeter在控制台在点击执行之后底层所做的一些主要事情及内容,由于便于断点调试采用GUI方式进行操作二、配置简介为了调试方便,采用单线程,方式访问百度(若多线程可能断点会看晕,后面会讲到)三、开始原理讲解首先GUI下点击执行,在ActionRouter该类下执行performAction()方法,该类为执行后续流程的入口ActionRouter是一个监听器,用于监听GUI事件流变化进行相应的操作2. 进入Start类中doAction方法,会调用startE

2021-02-05 17:32:06 19325

原创 spring data es高级特性基本用法

一、获取ES客户端根据spring官方介绍,推荐使用RestHighLevelClient、ElasticsearchRestTemplate进行ES的CRUD包括聚合操作spring data ES官方:https://docs.spring.io/spring-data/elasticsearch/docs/4.1.2/reference/html/#elasticsearch.clients.rest@Data@Configuration@ConfigurationProperties(

2021-01-04 11:39:08 16337

原创 Java DOM操作xml文件

基本介绍本文章操作xml文件,选用是org.w3c.dom ,JDK自带的依赖包首先理解xml文件的结构,含有“标签”(tag);“属性”(attribute);“文本内容(text)” 组成,这就有点类似HTML结构(这点理解很重要)通常对XML文件进行解析,无非就是获取XML内容做增删改查操作XML增删改查常用方法一 、初始化先获取document对象ByteArrayInputStream inputStream = new ByteArrayInputStream(bytes); /

2020-12-12 09:33:03 17322 1

原创 你不知道的Docker

一、前言docker是一种容器技术,k8s是一种容器编排技术,当然docker也支持容器编排,但是由于名声干不过k8s所以业界在容器编排大多用的就是k8s(简单比较下)二、docker基础知识docker基本组成镜像从某种角度可以理解为软件安装包,就好比没有jar,war包如何启动spring服务?容器通过docker run + 镜像ID 启动的服务称之为容器,容器与容器之间互相不影响,相互隔离仓库同比maven镜像公共仓库,此仓库有丰富的资源镜像供大家下载:https://

2020-08-30 09:08:25 18607

原创 搭建jmeter压测监控之grafana

一、前言在此之前公司测试团队用jmeter做性能压测,压测出来的报告都是用jmeter原生自带的HTML测试报告,虽然对于压测分析来说其实已经足够了,在学过极客时间“性能压测30讲”之后,才接触到jmeter扩展支持的监控体系的强大,所以本文章采用jmeter+influxdb+grafana方式来搭建jmeter性能压测的监控二、原生report VS grafana report原生report:jmeter原生report是由压测机(客户机)生成的,所以在压测过程中监听数据并生成HTML报告

2020-08-26 11:18:20 25479 8

原创 几步操作解决IDEA每次打开新项目都需重新配置maven,java编译版本等问题

前言对于很多刚使用idea的小白,或者一些不关注idea工具使用的老兵都可能会遇到每次打开一个新的项目,你的idea setting都要重新设置一下,这。。。。就很烦,所以针对我经常要设置的两步给大家做个示范操作步骤首先file -> other settings -> settings for new projectsjava编译版本改为java8,maven配置也配置个人实际路径配置完成后,你可以打开一个新的项目,或者对现有已配置好的项目删除本地的.idea目录重新打开即可

2020-08-12 16:24:04 30331 2

原创 几步操作快速入门swagger

一、前言swagger最大的好处就是生成接口文档,并且结合springboot可以通过注解方式快速生成,极大的简化了开发时间,同样也方便前后端联调swagger包括三部分: Swagger Editor(基于浏览器的编辑器),Swagger UI(可以让我们通过浏览器来查看并操作Rest API,Swagger Codegen二、Swagger接口相关注解说明@Api:可设置对控制器的描述@ApiOperation:: 可设置对接口的描述@ApiIgnore: Swagger 文

2020-07-18 10:52:38 9980

原创 分布式压测机在自动化平台中的应用

一、前言      不知道大家有没有这种痛点,我们公司的服务都是云化的(阿里云、华为云);所以在有些业务场景必须应用到压测技术,所以按照公司惯用流程需要申请虚拟机作为压测机使用,而且还不是一台,可能5台、10台;甚至以上。用完了在让运维回收,领导曰:节约公司成本,虚拟机贵,what fuck?      如果是这种情况的话,大家可能考虑到一个问题,那就是有压测需求要申请机器,申请完后需

2020-07-16 09:58:28 11365 5

原创 MongoDB环境搭建及SpringBoot整合调用

一、MongoDB的介绍及特性MongoDB是由C++编写的一个介于关系型和非关系型之间的数据库MongoDB是一个文档形式存储的数据库,等同于ES,每个文档(document)表示一行记录MongoDB中collections(集合)表示一个表MongoDB中多个集合(collections)组合起来就是一个数据库二、MongoDB的优缺点优点:弱一致性,更能保证用户的访问速度json形式的数据存储,结构清晰,简洁性能优越,对于海量数据进行读写操作效率更高效缺点:不支持事务

2020-07-13 09:55:17 10622

原创 Elasticsearch环境安装及整合springboot

一、前言进行SpringBoot整合Spring Data ES的时候遇到了一些坑,基本都是版本控制导致,同样在搭建ES Linux环境的时候也遇到了一些坑,还是总结一下,避免新人遇到跟我一样的情况二、ES 在Linux下的环境搭建因为搭建其实是比较基础,且简单的,我这边只会指出容易出错的地方,避免大家遇到类似问题首先去官方下载最新的依赖包,我这边选用的是ES 5.5.0版本,为了跟spring data ES整合使用,后面会讲到https://www.elastic.co/cn/dow

2020-07-04 09:28:35 6854

原创 搭建jmeter分布式压测机

一、前言        最近收到一个任务,需要压测某个后端服务接口,量级分别3W、6W、10W持续增量,然后就根据这个需求搭建了一个jmeter分布式负载机,其中也遇到不少坑,遂进行总结二、搭建分布式负载机集群本文采用A、B、C三台机器作为样式,A操控BC(集群)A为操控机,IP 192.168.1.1B为远程负载机,IP 192.168.1.2C为远程负载机,IP 192.168.1.3jmeter版

2020-06-30 09:56:12 10222

原创 JavaMail结合Freemarker生成邮件HTML模板

一、前言在HTML模板方面,当时在考虑Thymeleaf和Freemarker选用两个组件之一,最后还是选用freemarker;并不是说thymeleaf差,而是就个人而言觉得freemarker上手还是比较快,而且官方文档资料齐全;同样也考虑可能模板后续的灵活变动,才选用freemarker本次分享针对springboot下结合email和HTML模板实现二、实现步骤首先在spr...

2020-04-15 10:26:14 9287

原创 set-cookie无法存入到浏览器cookie问题汇总

一、前言最近在做一个前后端分离的自动化平台,由于环境部分还没搭建所以在本地启动前后端服务,开始接口联调,发现一个很有意思的问题,问了三个前端开发也没有解决;最后问题竟然出在一个小细节手中,还是要记录一下前端地址:http://localhost:8080后端地址:http://localhost:9090二、后端基本代码配置后端拦截器部分,不用多说做开发都应该知道public ...

2020-04-02 11:42:00 33395 23

原创 搭建STF远程真机操控环境

一、简介       由于公司研发体系人员众多而且业务方面又涉及C/S端的产品,因此频繁互借测试手机是一个问题,测试手机资源有限,借了由于工作忙而忘了归还,为此引入开源框架STF来解决这一问题,将有限的资源达到最大化的输出。二、介绍STFSTF是一款开源的远程真机管理平台,GitHub地址:https://github....

2019-11-12 21:14:00 12712

原创 Vue生命周期及钩子

一、前言Vue是一个专注于视图层的一个响应式的前端框架,而且使用起来特别简单、灵活以及横向扩展性极高,跨平台,目前也广受前端开发人员以及企业的喜爱,从某种程度上能够达到高效率开发生产二、Vue中的MVVM的框架模式我们所说的MVVM框架其实就是数据(model)、视图(view)、数据处理(vm),这三者之间的关系也就组成了MVVM框架,而且各层负责各自的功能,实现分离效果,层次分工化更...

2019-10-19 14:15:32 3764

原创 搭建个人博客网站

一、简介        最近简单入门了前端html、css、js、jQuery后心血来潮的想搭建个个人博客,现在博客雏形基本搞定,就差购买服务器跟域名等一系列陌生的操作了,索性记录一下作为一些前车之鉴。        首先购买服务器的话...

2019-10-10 11:12:33 393

原创 SSM三层架构之间整合

一、前言之前学习ssm框架的时候都是每个框架独立分散的系统性学习,对于框架的整体,总结效果不太好,后来看了黑马视频教程有个老师的思路给了我比较大的启发,以spring为中心,去整合springmvc、mybatis,无论是搭建环境,还是理解整体ssm思路都是比较不错的选择二、SSM整合步骤介绍(本文通过注解+配置实现)首先进行整合的前提是确保各自独立都能够正常运行,然后在互相整合横向扩展...

2019-08-02 16:47:57 1378 1

原创 springMVC环境搭建及原理解析

一、前言很多公司通过表现层、业务层、持久层三层思想作为整体架构体系的开发,而目前市面主流的ssm框架就是这种思想衍生出来的产物,由之前的springmvc、spring、mybatis到现在用的较多的springmvc、spring boot/cloud、mybatis/mybatisPlus,所以学习springmvc是一件很必要的事情本文主要讲解IDEA下搭建springmvc的简单环境...

2019-07-29 17:13:31 300

原创 java动态代理

一、前言1、学习动态代理是一件很必要的事情,因为目前主流框架spring中的AOP底层其实就是通过“动态代理”而实现的,IOC是通过反射机制来获取到工厂对象这也是spring框架的核心两大块,当然IOC不在本文内容范畴2、了解动态代理首先要明白它的作用、在哪使用,怎么用我觉得是很值得去想的一件事情,然后根据这种拆分我们一一的深入了解它二、实战部分1.首先定义一个Programmer接口类...

2019-07-26 16:36:20 109

原创 dubbo原理实现及环境搭建

一、分布式的基础理论1.分布式系统是由多个独立的计算机组成,用户去访问一个内容(网站)时感觉就是访问一个系统一样,而这样一个系统其实是由分布式组成2.分布式下的多个独立服务会互相调用,链路复杂,而dubbo可以对独立的服务进行治理,从而保证我们整个系统有条不紊的运行二、dubbo特性dubbo早期是由阿里巴巴创建的,后期交给Apache并且开源1.支持RPC接口协议调用2.负载均衡3...

2019-07-06 19:58:47 137

原创 RPC底层原理实现

一、RPC基础介绍RPC是实现跨服务之间的远程调用的过程,通过客户端发出请求访问服务端,服务端接收到请求返回给客户端的整个过程实现称为RPC,这一整个过程是通过RPC协议来实现的RPC是基于socket协议进行数据通讯的协议框架http协议是基于应用层的协议,而RPC是基于tcp/ip下三层的协议,所以RPC协议的传输会快于http协议的传输二、RPC底层实现步骤服务端:1.首先...

2019-06-29 15:12:37 3310

原创 sonarqube实现CI

一、前言之前介绍过sonarqube环境的搭建,但是sonar运用是非常灵活的,可以实现CI所以本章着重讲解如何实现CI,以及在实现过程中遇到的问题本章以Jenkins+Git+sonarqube+sonar-scanner来进行讲解二、实现步骤首先Jenkins环境必须要有,如果不知道的入门小白可参考搭建Jenkins环境的入门文章https://blog.csdn.net/...

2019-06-08 12:09:04 583

原创 sonarqube环境搭建采坑详解

一、初识sonarqubesonarqube是一个代码质量管理平台,可通过安装不同的插件sonar可以集成测试工具、代码质量分析工具、持续集成等多种功能sonarqube架构主要由:sonarqube服务器、sonar数据库、插件、sonarqube scanners四部分组成sonarqube支持语言多达十几种具体参考官方文档:https://www.sonarqube.org/二、...

2019-05-14 15:57:15 18062 6

原创 谈谈为公司研发设计的git钩子定制规范

一、需求背景就目前公司,拆分四条业务线,每条业务线涉及服务达到十多个,开发版本迭代迅速,但是开发使用git的规范确是有点惨不忍睹,所以根据git框架提供的钩子定制了一套规范研发整体成员的约束规则。下面讲解下如何将需求进行拆分的二、分析步骤了解,调研研发成员使用git进行代码管理的习惯,根据习惯择其优势,去其糟粕深入了解git提供的钩子的原理,选择符合自己公司发展的钩子进行使用定制方案,...

2019-04-24 14:51:49 2667 1

原创 谈谈自己搭建接口自动化踩得坑

一、前言这搭建这套框架的时候使用到了testhome上一位大神GitHub上写的一个封装Excel表的工具类,通过testNG框架提供的@Dataprovider去获取Excel表的内容,实现Excel表充当测试用例跑接口脚本,当时我实在Windows环境下进行脚本开发,所以当时进行调试全部正常,但是当我通过Jenkins进行持续集成的时候会绕过测试用例的执行,编译无报错。根本找不到问题来源,只...

2019-04-12 14:45:22 3566

原创 全站搭建接口自动化之CI(五)

一、前言其实到这里就是做一些收尾工作了,如何让自己写的接口测试用例实现持续集成的效果,现在话不多说直接开始吧二、Jenkins配置创建任务,并命名 配置基础环境(在搭建Jenkins时候已经安装好jdk、maven环境变量)对了,Jenkins要记得配置自己的ssh key哦,不然可能会出现git代码无法拉取的情况触发shell脚本运行三、脚本源码#!/bin/b...

2019-03-24 13:25:51 2736

原创 谈谈自己为公司设计的jmeter自动化部署框架

一、前言3/14号收到领导的要求搭建出一套性能自动化部署框架给其它业务线进行使用,接到这个通知当时头也挺大的,去年公司服务上云之前还用过pts那一套产品所以对于性能测试这块还是有些自己的见解,但是呢pts那块的确是贵了点所幸用了目前比较受各中小型企业欢迎的jmeter来作为公司的性能自动化框架。在说搭建之前我先废话两句谈谈自己对于性能自动化的理解看法对于公司的前后端框架、服务、中间件,DB...

2019-03-24 12:52:06 3076 1

原创 全栈搭建接口自动化之接口开发(四)

一、前言前面我们把Jenkins环境、开发环境都搭建好了,现在是不是开始可以写代码了,of course,lets do it!二、实战开始看到网上的教学都喜欢拿登录、注册做demo,这次小弟就不走寻常路,来个交易接口作为这次的demo,那么问题来了,交易的前提肯账号必须登录的情况下呀对不对,哼对于咱们开发来说就是一个token/cookie的问题,如果不知道cookie/token是啥的...

2019-03-05 16:46:20 2428

原创 全栈搭建接口自动化之接口开发环境部署(三)

一、前言接口开发其实是代码层次要考虑的问题,但是写代码之前还是先要把准备工作做好,正所谓磨刀不误砍柴工嘛,好了废话不多说步入正题二、基础环境配置首先登陆GitHub官网,登陆自己的账号创建项目:https://github.com/login我们公司用的是gitlab因为企业级的免费嘛,但是都一样,不知道git的emmmmm…自己百度去啦网上很多讲解,这里就不废话了既然登陆成功...

2019-03-05 14:18:44 2332

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除