自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(549)
  • 资源 (11)
  • 收藏
  • 关注

原创 AQS

AQS

2020-08-02 12:19:59 407

原创 CAS

CAS简介CAS全称Compare-And-Swap,中文含义“比较并交换”,它是一种思想,一种算法。在多线程的情况下,为了保证并发的安全性,我们可以使用互斥锁,而CAS的特点是避免使用互斥锁,当多个线程同时使用CAS更新同一个变量时,只有其中一个线程能够操作成功,而其他线程都会更新失败。不过和同步互斥锁不同的是,CAS不会让失败的线程阻塞,而是被告知这次由于竞争而导致的操作失败,但还可以再次尝试。CAS广泛用在并发编程领域中,以实现那些不会被打断的数据交换操作,从而实现无锁的安全。CAS思

2020-07-26 22:39:52 162

原创 java内存模型总结

在说java内存模型之前,先澄清下JVM内存结构与Java内存模型Java作为一种面向对象的语言

2020-07-25 22:33:12 173

原创 ThreadLocal

1111

2020-07-25 22:30:02 109

原创 java中的锁类型

一、偏向锁

2020-06-27 16:45:29 525

原创 数据驱动模式UI自动化框架

本次给大家分享一个pc端的UI自动化框架,这个框架是数据驱动形式的,采用的思想是把测试数据和代码分离开,我们的测试数据都放到excel里,然后读取里面的值来获取。这样避免的测试数据和代码混合到一起,看着混乱。同时采用PO模式,一个页面作为一个对象,把页面里的元素封装到一起。同时使用testNG进行对测试用例的调度,并且监听测试结果,生成报告。组装用例放到了xml里,同时可以把这个xml配置到jenkins上,做到定时持续集成。下面说下简单使用吧。...

2020-06-20 11:27:55 1469

原创 java内存模型JMM

Java内存模型(Java Memory Model,简称JMM),即Java虚拟机定义的一种用来屏蔽各种硬件和操作系统的内存访问差异,以实现让java程序在各种平台下都能够达到一致的内存访问效果的内存模型。本篇文章大致涉及到五个要点:1、Java内存模型的基础,主要介绍JMM抽象结构;2、Java内存模型中内存屏障;3、Java内存模型中的重排序;4、happens-before原则;JMM相关的三个同步原语(synchronized,volatile,final)。1.Java内存模型的抽象结构

2020-06-14 11:14:35 233

原创 volatile特性及实现原理

一个volatile变量自身具有以下三个特性:1、可见性:即当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的。而普通变量是不能做到这一点的,普通变量的值在线程间传递需要通过主内存来完成。2、有序性:volatile变量的所谓有序性也就是被声明为volatile的变量的临界区代码的执行是有顺序的,即禁止指令重排序。3、受限原子性:这里volatile变量的原子性与synchronized的原子性是不同的,synchronized的原子性是指只要声明为sy

2020-06-14 11:03:46 1919

原创 java线程

并发与并行3.1创建和运行线程多线程创建方式一、二、使用lambda表达式写法更精简Thread 与Runnable关系,看下源码,Runable里走的也是走的run方法方法:把线程和任务合并起来了,方法二,把线程和任务分开来了。Runable更容易与线程池等高级api配合使用。今日完成,多线程两种写法 和使用lambda表达式写法,分析源码Thread 和Runnable关系。序列化和反序列化,对象转化为string,string转化为bean,Integer.valu

2020-06-07 09:52:21 142

原创 minicap工具的使用

1.minicap将这两个文件push到我手机的/data/local/tmp目录下:这里看到minicap可执行文件没有执行权限,adb shell进入到目录下chmod 777 minicapminicap有可执行权限了,接下来测试一下minicap是否可用,其中-P后面跟的参数为你屏幕的尺寸 (我这里是魅族Note6,设置-关于手机-分辨率可以看到1080x1920)adb shell LD_LIBRARY_PATH=/data/local/tmp /data/local/tmp.

2020-05-23 10:04:42 1095

原创 源码包安装RabbitMQ3.6

先安装erlang 依赖,也是门编程语言,下载源码包地址 :https://www.erlang.org/downloads/20.1首先先安装个依赖yum install ncurses-develtar xf otp_src_20.1.tar.gzcd otp_src_20.1./configure --prefix=/usr/local/erlang20 --without-javacmakemake installerl验证cd /usr/local/erlang./e

2020-05-17 09:32:09 592

原创 centos7安装redis5.0.3

修改配置文件 redis.conf绑定改为 0.0.0.0 任意机器都可以访问requiredpass 设置密码将daemonize属性改为yes(表明需要在后台运行)启动redis命令 ./redis-server ../redis.conf./redis-cliauth 密码systemctlstop redis_6379systemctl start...

2020-05-17 09:31:54 168

原创 三大类算法:递归、排序、二分查找

一、递归”递“+”归“。 这两个意思,正是递归思想的精华所在,去的过程叫做递,回来的过程叫做归,在编程语言中对递归可以简单理解为:方法自己调用自己,只不过每次调用时参数不同而已。满足递归的条件:1、递归表达是(规律)如果一个问题的解能够拆分成多个子问题的解,拆分之后,子问题和该问题在求解上除了数据规模不一样之外,求解的思路和该问题的求解思路完全相同,也就是说能够找到一种规律,这种规...

2020-05-17 09:25:10 2094

原创 JDK1.8中HashMap的源码分析

关键的属性分析public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { //Node类型的数组,我们常说的bucket数组,其中每个元素为链表或者树形结构 transient Node<...

2020-04-19 22:45:03 149

原创 散列表(Hash表)

散列表的概述散列结构,散列表(Hash Table)又名哈希表/Hash表是根据键(key)直接访问在内存存储位置的数据结构,利用了数组支持按照下标进行随机访问数据的特性。由数组演变而来的,存的时候,我们这有键key,通过一定散列函数的计算方式,我们把它映射到数组中的某一个位置上进行存储,这样一种关系。取的时候,同一个key根据hash进行运算的结果也是一样的,这样就可以快速找到数组中存储的位...

2020-04-19 22:44:54 731

原创 SpringBoot启动原理之核心注解和run()方法-源码分析

微信公众号:测试加油站关注可了解更多的测试开发技术。问题或建议,请公众号留言;如果你觉得文章对你有帮助,欢迎转发[^1]随着微服务的兴起,SpringBoot框架越来越火,相信大部分公司已经开始转向使用这个框架,我们开发测试平台的时候,也是会使用这个框架。但是这个框架的原理不知道大家是否了解,上一篇文章说了一下它的使用,所以本次说一下SpringBoot的启动原理,每次启动我们都会用到这...

2020-04-16 22:07:08 988

原创 时间复杂度,空间复杂度

算法的复杂度分析主要包含两个方面:时间复杂度分析空间复杂度分析为什么要进行复杂度分析?1:和性能测试相比,复杂度分析有不依赖执行环境、成本低、效率高、易操作、指导性强的特点。2:掌握复杂度分析,将能编写出性能更优的代码,有利于降低系统开发和维护成本。1:时间复杂度表示法算法的执行效率,粗略地讲,就是算法代码执行的时间,那如何在不直接运行代码的前提下粗略的计算执行时间呢?...

2020-04-04 10:48:34 229

原创 Stack源码分析

Stack源码分析Stack底层是数组实现是顺序栈,底层也支持扩容首先写一段入栈和出栈的程序public class JdkStack { public static void main(String[] args) { //创建栈对象 Stack stack = new Stack(); //数据入栈 stac...

2020-04-04 10:48:15 152

原创 LinkedList源码分析

LinkedList源码分析

2020-04-04 10:47:44 90

原创 ArrayList源码分析

public class ArrayList{ public static void main(String[] args){ List list = new ArrayList(); list.add("a"); list.add("b"); list.add("c"); list.add...

2020-04-04 10:47:26 207

原创 数组、链表、栈、队列

1、理解什么是线性表2、掌握数组数据结构,读懂ArrayList的部分源码3、掌握链表数据结构,读懂LinkedList的部分源码4、掌握栈这种数据结构,读懂stack的部分源码5、掌握队列这种数据结构...

2020-04-04 10:46:29 471

原创 Dubbo SPI 、服务暴露、服务引入源码解析

Dubbo的SPISPI什么是SPI,SPI全称为Service Provider Interface,是一种服务发现机制,SPI的本质是将接口实现类的全限定名配置到文件中,并由服务器加载读取配置文件,加载实现类,这样可以在运行时,动态为接口替换实现类,正因此特性,我们可以很容易的通过SPI机制为我们的程序提供扩展功能,SPI机制在第三方框架中也有所应用,比如 Dubbo 就是通过 SPI 机...

2020-04-04 10:43:16 151

原创 Dubbo简述

Apache Dubbo是一款高性能的RPC框架,Dubbo提供三个核心能力:面向接口的远程方法调用,只智能容错和负载均衡,以及服务自动注册和发现。什么是RPCRPC全称remote procedure call ,即远程过程调用。例如服务A ,和服务B,分别部署在两台机器上,服务A想要调用服务B 里的一个接口,因为不在同一台机器上,是在两台机器上,不同的内存空间,所以这个时候就需要远程调...

2020-04-04 10:42:16 264

原创 Zookeeper详解

zookeeper是一个开源的分布式协调服务,提供分布式数据一致性解决方案,分布式应用程序可以实现数据发布订阅、负载均衡个、命名服务、集群管理分布式锁、分布式队列等功能zookeeper提供了分布式数据一致性解决方案,...

2020-04-03 21:40:04 368 1

原创 Redis-企业级解决方案

一、缓存预热:总结,缓存预热就是系统启动前,提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候,先查询数据库,然后再将数据缓存,用户直接查询事先被预热的缓存数据。二、缓存雪崩:缓存雪崩就是瞬间过期的key数据量过大,导致redis没有命中,从而导致对数据库服务器造成压力,如果能有效避免过期时间集中,可以有效解决雪崩现象的出现(约40%),配合其他策略一起使用,并监控服务器的运...

2020-03-14 17:39:57 342

原创 Redis集群

一、主从复制主从复制简介主从复制的作用:读写分离:master写、slave读,提高服务器的读写负载能力负载均衡:基于主从结构,配合读写分离,由slave分担master负载,并根据需求的变化,改变slave的数量,通过多个从节点分数据读取负载,大大提高Redis服务器并发量与数据吞吐量故障恢复:当master出现问题时,由slave提供服务,实现快速的故障恢复数据冗余:实现数...

2020-03-14 17:39:09 94

原创 Redis-高级

Redis在linux下安装持久化事务删除策略redis.conf高级数据类型

2020-03-14 17:38:15 122

原创 Redis-基础

罪魁祸首——关系型数据库 性能瓶颈:磁盘IO性能低下(CPU数据交换是和高速缓存cache,cache的数据交换和谁做,和内存。内存的数据交换和谁做,和磁盘做,这些基础数据存在硬盘上,一层层往上传递。数据库是保存在磁盘上的) 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群解决思路 降低磁盘IO次数,越低越好 ------内存存储 这样就出现NoSQL 内存型数据库...

2020-03-14 17:37:20 228

原创 移动端专项测试

adb命令稳定性monkey内存使用情况cpu使用情况电量消耗流畅度流量消耗弱网测试弱网延迟测试开源工具 SoloPi 阿里开源 GT腾讯开源已经不更新了各个指标 横向对比、纵向对比ADB ,Android调试桥(Android Debug Bridge)是一种功能多样的命令行工具,可让您与设备进行通信。ADB 分为三部分:PC上的a...

2020-02-11 21:14:57 1354

原创 Spring-Bean的生命周期

自动装配的含义是,javaBean之间的依赖关系,用Autowire 代表的是byName类型,进行装配。而依赖注入是指对这个bean里面的属性赋值,以是一个Bean的生命周期。1、实例化bean对象(通过构造方法或者工厂方法)2、设置对象属性(setter等)(依赖注入)3、如果Bean实现了BeanNameAware接口,工厂调用Bean的setBeanName()方法传递Bean的I...

2020-01-10 19:41:09 157

原创 Spring-IOC原理简述

今天的这个IOC,不打算分析源码了,一方面觉的Spring的源码很庞大,一步步跟的话容易陷入很深的某一个分支里,而且容易遗忘。所以打算简单的说下原理,大家可以先记下来简单的原理,然后再看看大佬们的博客,然后再一步步debug源码,这样估计也就差不多了。那么接下来就先简单说下IOC的原理吧。IOC的从广义范围来说,意思是控制反转,什么是控制反转呢,大家肯定都知道,以前我们要使用一个类里的方法或者...

2020-01-10 19:24:47 642

原创 Mybatis-原生Mybatis原理源码分析篇

Mybatis框架概述Mybatis是持久层的框架,它内部封装了jdbc,使开发的时候只需要关注sql语句本身,不需要话费精力去处理加载驱动、创建连接、创建statement等。下面我们也是通过一个实例来对它进行分析。首先编写一个SqlMapConfig.xml​<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE c...

2020-01-02 21:19:25 175

原创 总结2019,展望2020

时间过得如此之快,转眼又到了年底,今天是2019年的最后一天,写下这篇文章,要为这一年的忙碌总结下。最近也经常会看到很多大佬,对测试行业发展的一个展望。例如Facebook去QA化,敏捷测试、DevOps,还有某些大厂已经借助AI技术,进行了测试,还有大数据的测试。 整个行业发展的如此之快,作为测试人员我们都要不断的去学习,无论做测试的左移,还是为了增加更多的测...

2019-12-31 18:54:58 700

原创 性能测试之类加载(五)

一、类的加载虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。二、类的生命周期类的加载、连接和初始化过程都是在程序运行期间完成的。这个时候类加载的全过程,包括加载、验证、准备、解析和初始化、使用和卸载7个结算,其中验证、准备、解析3个部分统称为连接。“加载”是“类加载”过...

2019-12-31 02:20:09 161

原创 设计模式-建造者设计模式

建造者模式(Builder Pattern),又叫做生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容可构建它,用户不需要知道内部的具体构建细节。建造者模式的四个角色:Product(产品角色),一个具体的产品对象Build...

2019-12-30 23:31:30 110

原创 设计模式-代理设计模式

代理模式(Proxy)代理模式的基本介绍1、代理模式:为一个对象提供一个替身,以控制对这个对象的访问。即通过代理对象访问目标对象,这样做的好处是,可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。2、代理模式有不同的形式,主要有三种,静态代理、jdk代理(也叫接口代理)、cglib代理(可以在内存中动态的创建对象,而不需要实现接口)。静态代理静态代理在使用时...

2019-12-30 23:31:21 247

原创 java基础-反射

反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容。而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员。简单说:反射技术可以对一个类进行解剖。反射的好处:大大的增强了程序的扩展性。反射的基本步骤:1、获得Class对象,就是获取到指定的名称的字节码文件对象。2、实例化对象,获得类的属性、方法或构造函数。3、访问属性、调用方法...

2019-12-29 16:06:23 114

原创 设计模式-单例设计模式

单例设计模式是指,单例对象的类,只允许实例一个对象,这样,在jvm堆内存中,就只开辟了一块空间来存储这个对象,这种设计的优点是避免了内存中空间的浪费,避免频繁的创建销毁对象,为整个系统提供一个全局的访问的。打比方,windows桌面,我们已经点开了一个回收站,当我们再点击一次回收站的时候,不会再弹出一个回收站的弹窗。饿汉式class Singleton{ //私有化构造函数,让外部不能...

2019-12-26 21:10:25 100

原创 设计模式-简单工厂设计模式

什么是工厂设计模式?工厂设计模式,顾名思义,就是用来生产对象的,在java中,万物皆对象,这些对象都需要创建,如果创建的时候直接new该对象,就会对该对象耦合严重,假如我们要更换对象,所有new对象的地方都需要修改一遍,这显然违背了软件设计的开闭原则,如果我们使用工厂来生产对象,我们就只和工厂打交道就可以了,彻底和对象解耦,如果要更换对象,直接在工厂里更换该对象即可,达到了与对象解耦的目的;所...

2019-12-24 21:11:29 118

原创 博客目录

因目前博客文章数量较大,大家搜索或者查看不是很方便,所以打算建立本目录,同时也是对测试开发技术栈的一个梳理。对博客的定位是对于日常用到技术的一个整理。对于公众号内容是对某一点深入的分析,欢迎大家关注,一起学习进步。一、测试方面:1、单元测试:2、接口自动化总结(1): 接口自动化(2):3、UI自动化测试:appium移动端自动化PC端自动化4、性能测...

2019-12-23 13:00:22 201

Linux学习笔记资料

包含Linux、Shell、Puppet等内容

2023-02-27

Java最全知识点及答案

Java最全知识点及答案

2023-02-27

java开发工具箱,拿来即用

java开发工具箱,拿来即用

2022-09-20

Django REST Framework

Django REST Framework

2022-03-10

MAT使用手册无加密.pdf

MAT,分析堆dump文件的一个工具,结合Eclipse使用,因为工具使用都是英文,不方便操作,此pdf详细介绍功能使用,

2020-04-19

beeTest.zip

SpringBoot搭建的接口测试平台注册及登录模块,可以做为一个脚手架,继续编写使用,已经集成了Mybatis,可以直接使用。

2020-03-22

后端开发框架已整合ssm脚手架.zip

整合spring+springmvc+mybatis,可以直接开发在上面继续开发,并且备注了详细的讲解

2019-12-17

startbootstrap-sb-admin-gh-pages

startbootstrap-sb-admin-gh-pages 免费模板 ,可以根据模板搭建自己的页面

2019-03-16

ExtentTestNGIReporterListener.java

ExtentTestNGIReporterListener.java

2018-08-25

JVM体系结构与GC调优

JVM体系结构和GC调优

2018-08-21

jpeg-turbo.zip

编译好的jpeg-turbo,编译好的jpeg-turbo,编译好的jpeg-turbo

2018-08-15

chromedriver.exe V2.3

chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动 chromedriver V2.3 驱动

2017-09-11

订单系统项目代码

订单系统项目代码

2017-06-01

深入理解java虚拟机

2017-03-31

空空如也

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

TA关注的人

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