08 2020 档案

摘要:读取excel需要先写一个监听器继承 AnalysisEventListener //使用无映射读取数据 @Test public void noModel() throws FileNotFoundException { FileInputStream in=new FileInputStream 阅读全文
posted @ 2020-08-24 15:39 hjy1995 阅读(242) 评论(0) 推荐(0) 编辑
摘要:<dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>1.1.2-beat1</version> </dependency> 代码 public class WriteExcel 阅读全文
posted @ 2020-08-24 14:38 hjy1995 阅读(205) 评论(0) 推荐(0) 编辑
摘要:LR运行结果有两种: 原始结果,LR result files analysis处理之后的结果,analysis session files analysis会生成简单的概要报告和模板,提供了分析选项做测试数据的分析: summary report,概要报告,包含大量测试数据 SLA分析工具,自己设 阅读全文
posted @ 2020-08-16 22:47 hjy1995 阅读(161) 评论(0) 推荐(0) 编辑
摘要:联机负载 又叫分布式负载,是为了解决单台负载机的资源有限的限制问题。 LR分布式负载的实现: 前提: 控制机和负载机、负载机和被测服务器的网络是连通的。 负载机上安装了LR或者Load Generator组件。 操作:在负载机上,启动Loadrunner Agent的服务,方式有两种: Loadru 阅读全文
posted @ 2020-08-16 22:45 hjy1995 阅读(398) 评论(0) 推荐(0) 编辑
摘要:场景Scenairo 在LR中,场景是通过Controller组件来创建、设置、执行的。 脚本是模拟的单个用户的行为,而场景模拟的是多个用户的行为,是多个用户执行 相同/不同 的脚本的情形。 在性能测试过程中,一般来说,场景分为两种类型: 单一场景:只会运行一种业务请求脚本。 目的在于测试极端的场景 阅读全文
posted @ 2020-08-16 22:44 hjy1995 阅读(364) 评论(0) 推荐(0) 编辑
摘要:思考时间 思考时间是用来模拟用户请求之间的延迟的。 LR中,是通过思考时间函数+设置来实现的:lr_think_time() 思考时间本身是不会影响脚本的功能实现。 思考时间的意义在于:当虚拟用户数保持不变的情况下,调节对服务器的压力。 一般来说,对于模拟在线用户负载的情况,建议添加思考时间,这样对 阅读全文
posted @ 2020-08-16 22:41 hjy1995 阅读(320) 评论(0) 推荐(0) 编辑
摘要:事务 事务的引入是用来度量业务请求的响应时间以及对应的tps的。 在LR中,要实现事务,只需要掌握两个事务函数即可: lr_start_transaction(); 开始计时。 lr_end_transaction(); 结束计时。 右键->insert->start transaction/end 阅读全文
posted @ 2020-08-16 22:40 hjy1995 阅读(280) 评论(0) 推荐(0) 编辑
摘要:关联 header、body在generation log中,所有数据都是按时间的先后,分块排列的。块是以**开头,以$$$$$$结尾的 方法一 在LR中,视图模式切换到tree模式。 tree模式下,切换到recording snaphost和http view模式下。 找到需要设置关联的url、 阅读全文
posted @ 2020-08-16 22:38 hjy1995 阅读(265) 评论(0) 推荐(0) 编辑
摘要:脚本增强的总结 1、脚本采用录制还是抓包手写没有本质的区别。 ​ 2、脚本增强技术,一般事务和检查点是属于必加的。 ​ 3、从理论上来说,参数化和关联是要根据实际情况灵活使用的。 ​4、要根据需要,灵活的选择使用思考时间和集合点技术。 参数化 三种方式: 选中需要参数化的值,右键-->replace 阅读全文
posted @ 2020-08-16 22:36 hjy1995 阅读(292) 评论(0) 推荐(0) 编辑
摘要:Vugen 录制的基本步骤 new 选择协议 选择录制选项 开始录制 Tools-->Regenerate script 该选项是用来根据录制信息,按照当前的录制选项来重新生成脚本的。 常用用途: 脚本恢复。 更改录制选项之后重新生成脚本。 Vugen的三个选项 Recording options: 阅读全文
posted @ 2020-08-16 22:35 hjy1995 阅读(316) 评论(0) 推荐(0) 编辑
摘要:安装 https://blog.csdn.net/qq_37674858/article/details/79746605?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonec 阅读全文
posted @ 2020-08-16 22:32 hjy1995 阅读(982) 评论(0) 推荐(0) 编辑
摘要:理发师模型 从队列论的角度来解释和描述负载测试过程中,系统是如何处理请求的。 理发师模型:核心原则就是队列论,即任何事情都需要排队等待。 计算机从最底层就是按照队列思想来设计的,比如说CPU时间片轮转机制。 理发师模型就是形象具体的来演示系统处理请求的过程。 负载模型 从负载用户、TPS和响应时间的 阅读全文
posted @ 2020-08-16 22:31 hjy1995 阅读(551) 评论(0) 推荐(0) 编辑
摘要:性能测试分析的原则: 性能测试分析建立在足够充分、正确的测试数据基础上,有以下要求 有独立的测试环境:软硬件和网络环境 正确适用的性能测试脚本 合理的性能测试场景 监控系统资源 性能测试分析、定位建立在对被测系统的充分了解 了解操作系统的基本知识 了解被测系统的架构设计 了解被测系统的具体实现:操作 阅读全文
posted @ 2020-08-16 22:29 hjy1995 阅读(679) 评论(0) 推荐(0) 编辑
摘要:性能测试文档主要是指性能测试计划&方案、性能测试报告的编写。 性能测试计划&方案:性能测试计划和方案放在一个文档编写。 通常包含以下要点: 概述:简单的描述一下本次测试相关的信息、比如说为什么做测试?测试的目的、文档的受众等。 项目背景:直接从项目计划文档中复制即可。但是建议加上本次测试的原因 测试 阅读全文
posted @ 2020-08-16 22:28 hjy1995 阅读(947) 评论(0) 推荐(0) 编辑
摘要:性能测试技术可以分为三块: 用户行为模拟:通过性能测试技术去创建虚拟用户模拟用户行为,用户行为模拟分为两块: 脚本:需要关注一下几种重要的处理机制: 不同户的不同请求,即逻辑相同,数据不同(参数化) 处理请求之间的依赖关系(关联) 模拟用户的延迟和并发(思考时间和集合点) 场景:脚本是根据场景的需求 阅读全文
posted @ 2020-08-16 22:26 hjy1995 阅读(443) 评论(0) 推荐(0) 编辑
摘要:一个完成的性能测试流程包含以下步骤: 前期分析、测试计划、测试方案、测试环境搭建、测试数据准备、测试脚本开发、场景的设计、实现和执行、性能监控、分析结果、定位瓶颈、性能调优、回归测试和性能测试报告 前期分析 前期分析包括:系统分析、业务分析、需求分析 系统分析 要从系统的层面对被测系统进行分析工作, 阅读全文
posted @ 2020-08-16 22:25 hjy1995 阅读(270) 评论(0) 推荐(0) 编辑
摘要:一、下载安装 下载地址:jmeter-plugins.org 安装:下载后文件为plugins-manager.jar格式,将其放入jmeter安装目录下的lib/ext目录,然后重启jmeter,即可。 启动jemter,点击 选项 --> Plugins Manager 下载插件,下载好之后重启 阅读全文
posted @ 2020-08-16 22:23 hjy1995 阅读(156) 评论(0) 推荐(0) 编辑
摘要:Java同步工具类 CountDownLatch(闭锁) CyclicBarrier(栅栏) Semaphore(信号量) 为了能够更好控制线程之间的通讯问题 CountDownLatch CountDownLatch是一个同步的辅助类,允许一个或多个线程一直等待,直到其它线程完成它们的操作 它常用 阅读全文
posted @ 2020-08-16 22:17 hjy1995 阅读(147) 评论(0) 推荐(0) 编辑
摘要:线程池简介 如果没有使用线程池,会为每个请求都开一个新的线程,虽然理论上是可以的,但是会有缺点: 线程生命周期的开销非常高。每个线程都有自己的生命周期,创建和销毁线程所花费的时间和资源可能比处理客户端的任务花费的时间和资源更多,并且还会有某些空闲线程也会占用资源。 程序的稳定性和健壮性会下降,每个请 阅读全文
posted @ 2020-08-16 22:15 hjy1995 阅读(227) 评论(0) 推荐(0) 编辑
摘要:造成死锁的原因可以概括成三句话: 当前线程拥有其他线程需要的资源 当前线程等待其他线程已拥有的资源 都不放弃自己拥有的资源 避免死锁可以概括成三种方法: 固定加锁的顺序(针对锁顺序死锁) 开放调用(针对对象之间协作造成的死锁) 使用定时锁-->tryLock() 如果等待获取锁时间超时,则抛出异常而 阅读全文
posted @ 2020-08-16 22:09 hjy1995 阅读(70) 评论(0) 推荐(0) 编辑
摘要:Lock显式锁是一个接口 Lock方式来获取锁支持中断、超时不获取、是非阻塞的 提高了语义化,哪里加锁,哪里解锁都得写出来 Lock显式锁可以给我们带来很好的灵活性,但同时我们必须手动释放锁 支持Condition条件对象 允许多个读线程同时访问共享资源 Synchronized锁经过优化之后,现在 阅读全文
posted @ 2020-08-16 22:08 hjy1995 阅读(119) 评论(0) 推荐(0) 编辑
摘要:synchronized是一种互斥锁 一次只能允许一个线程进入被锁住的代码块 synchronized是一种内置锁/监视器锁 Java中每个对象都有一个内置锁(监视器,也可以理解成锁标记),而synchronized就是使用对象的内置锁(监视器)来将代码块(方法)锁定的 synchronized锁作 阅读全文
posted @ 2020-08-16 22:06 hjy1995 阅读(165) 评论(0) 推荐(0) 编辑
摘要:线程安全 多线程主要是为了提高我们应用程序的使用率。但同时,这会给我们带来很多安全问题 因为在多线程的环境下,线程是交替执行的,一般他们会使用多个线程执行相同的代码。如果在此相同的代码里边有着共享的变量,或者一些组合操作,我们想要的正确结果就很容易出现了问题 性能问题 使用多线程我们的目的就是为了提 阅读全文
posted @ 2020-08-16 22:04 hjy1995 阅读(145) 评论(0) 推荐(0) 编辑
摘要:sleep() 调用sleep方法会进入计时等待状态,等时间到了,进入的是就绪状态,不是运行状态 yield() 调用yield方法会先让别的线程执行,但是不确保真正让出 意思是:我有空,可以的话,让你们先执行 join() 调用join方法,会等待该线程执行完毕后才执行别的线程 interrupt 阅读全文
posted @ 2020-08-16 22:03 hjy1995 阅读(150) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal提供了线程的局部变量,每个线程都可以通过set()和get()来对这个局部变量进行操作,但不会和其他线程的局部变量进行冲突,实现了线程的数据隔离~。 简要言之:往ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。 管理connection 数据库连接 阅读全文
posted @ 2020-08-16 22:02 hjy1995 阅读(109) 评论(0) 推荐(0) 编辑
摘要:进程和线程 进程作为资源分配的基本单位 线程作为资源调度的基本单位,是程序的执行单元,执行路径(单线程:一条执行路径,多线程:多条执行路径)。是程序使用CPU的最基本单位 线程有3个基本状态: 执行、就绪、阻塞 线程有5种基本操作: 派生、阻塞、激活、 调度、 结束 并行和并发 并行: 并行性是指同 阅读全文
posted @ 2020-08-16 22:00 hjy1995 阅读(171) 评论(0) 推荐(0) 编辑
摘要:List ArrayList底层是数组,LinkedList底层是链表。数组遍历速度快,LinkedList增删元素快。 在工作中一般就用ArrayList,而不用LinkedList,原因也很简单: 在工作中,遍历的需求比增删多,即便是增加元素往往也只是从尾部插入元素,而ArrayList在尾部插 阅读全文
posted @ 2020-08-16 21:58 hjy1995 阅读(78) 评论(0) 推荐(0) 编辑
摘要:IO按操作对象分类 缓冲操作:BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter 文件操作:FileInputStream、FileOutputStream、FileReader、FileWriter 管道操作 阅读全文
posted @ 2020-08-16 21:56 hjy1995 阅读(138) 评论(0) 推荐(0) 编辑
摘要:equals() 和 hashCode() 特性: 重写equals()方法,就必须重写hashCode()的方法 equals()方法默认是比较对象的地址,使用的是==等值运算符 hashCode()方法对底层是散列表的对象有提升性能的功能 同一个对象(如果该对象没有被修改):那么重复调用hash 阅读全文
posted @ 2020-08-16 21:55 hjy1995 阅读(139) 评论(0) 推荐(0) 编辑
摘要:泛型 Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常 泛型是提供给javac编译器使用的,它用于限定集合的输入类型,让编译器在源代码级别上,即挡住向集合中插入非法数据。但编译器编译完带有泛形的java程序后,生成的class文件中将不 阅读全文
posted @ 2020-08-16 21:51 hjy1995 阅读(145) 评论(0) 推荐(0) 编辑
摘要:HTTP 1.网站通信粗略过程 我们知道HTTP是在应用层中的,显然,我们在Web通信的过程中,不仅仅是需要HTTP协议的,还会涉及到其他的协议的。 DNS:负责解析域名 我们访问一个网页的时候,往往是通过域名来访问的www.zhongfucheng.site,而计算机通信只认的是我们的主机地址(1 阅读全文
posted @ 2020-08-16 21:48 hjy1995 阅读(162) 评论(0) 推荐(0) 编辑
摘要:6.应用层 1.DNS域名系统 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。 域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。 域名只是个逻辑概念,并不代表计算机所在的物理地点。 DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。一个服务 阅读全文
posted @ 2020-08-16 21:41 hjy1995 阅读(237) 评论(0) 推荐(0) 编辑
摘要:5.运输层 (1)运输层的基本概念 运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能 在一台主机中经常有多个应用进程同时分别和另一台主机中的多个应用进程通 阅读全文
posted @ 2020-08-16 21:38 hjy1995 阅读(474) 评论(0) 推荐(0) 编辑
摘要:计算机网络 1.OSI模型 OSI七层协议TCP/IP四层协议五层协议体系 应用层 应用层(各种应用层协议,如DNS, HTTP, SMTP等) 应用层 表示层 应用层(各种应用层协议,如DNS, HTTP, SMTP等) 应用层 会话层 应用层(各种应用层协议,如DNS, HTTP, SMTP等) 阅读全文
posted @ 2020-08-16 21:32 hjy1995 阅读(237) 评论(0) 推荐(0) 编辑
摘要:存储器 首先,一般的存储器我们就会认为它包含着三部分: 寄存器 速度最快,但是造价高 主存储器 速度次之,被通俗称为内存 外存 速度最慢,用于存储文件数据,因为上边两种一旦断电,数据就会丢失。这个用来做持久化存储的。 因此,我们的存储器往往是使用三层结构的 (1)缓冲管理 在设备管理部分,存在的主要 阅读全文
posted @ 2020-08-16 21:26 hjy1995 阅读(280) 评论(0) 推荐(0) 编辑
摘要:1.进程 程序不能独立运行,作为资源分配和独立运行的单位是进程。操作系统所具有的四大特征也都是基于进程而形成的。 (1)属性 进程的基本属性: 进程是一个可拥有资源的独立单位, 进程同时又是一个可独立调度和分派的基本单位 2.线程 引入线程主要是为了提高系统的执行效率,减少处理机的空转时间和调度切换 阅读全文
posted @ 2020-08-16 21:23 hjy1995 阅读(141) 评论(0) 推荐(0) 编辑
摘要:存储原理 数组+链表+红黑树 数组:查询快,插入慢 链表:查询慢,插入快;上一个--> x --> 下一个 map以数组存储,存储的值有 key, value ,hash , next,数组Index由hash进行计算后(散列算法)决定, 如果两个key的hash进行散列计算后的index相同,冲突 阅读全文
posted @ 2020-08-15 00:01 hjy1995 阅读(93) 评论(0) 推荐(0) 编辑
摘要:1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap)— 是一个可动态申请的内存空间(其记录空闲内存空间的链表由操作系统维护),在java中,所有使用new xxx()构造出来的对象都在堆中存储一般由程序员分配释放, 阅读全文
posted @ 2020-08-14 23:59 hjy1995 阅读(129) 评论(0) 推荐(0) 编辑
摘要:数组:查询快,插入慢,查找复杂度 O(N) 链表:查询慢,插入快,查找复杂度 O(N) 哈希表:查询复杂度 O(1) 二叉树:查找复杂度 O(logN) 树是一种非线性的数据结构,相对于线性的数据结构(链表、数组)而言,树的平均运行时间更短(往往与树相关的排序时间复杂度都不会高) 数据库索引是B+树 阅读全文
posted @ 2020-08-14 23:58 hjy1995 阅读(86) 评论(0) 推荐(0) 编辑
摘要:冒泡排序 思路:俩俩交换,大的放在后面,第一次排序后最大值已在数组末尾。因为俩俩交换,需要n-1趟排序(比如10个数,需要9趟排序) 代码实现要点:两个for循环,外层循环控制排序的趟数,内层循环控制比较的次数。每趟过后,比较的次数都应该要减1 public void maoPao(){ int[] 阅读全文
posted @ 2020-08-14 23:52 hjy1995 阅读(122) 评论(0) 推荐(0) 编辑
摘要:从锁的粒度,我们可以分成两大类: 表锁 开销小,加锁快;不会出现死锁;锁定力度大,发生锁冲突概率高,并发度最低 行锁 开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率低,并发度高 表锁 表锁下又分为两种模式: 表读锁(Table Read Lock) 表写锁(Table Write Lock 阅读全文
posted @ 2020-08-14 23:45 hjy1995 阅读(97) 评论(0) 推荐(0) 编辑
摘要:在书写SQL语句的时候,其实书写的顺序、策略会影响到SQL的性能,虽然实现的功能是一样的,但是它们的性能会有些许差别。 在书写SQL的时候,怎么写比较好。 ①选择最有效率的表名顺序 数据库的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表将被最先处理 在FROM子句中包含 阅读全文
posted @ 2020-08-14 23:43 hjy1995 阅读(140) 评论(0) 推荐(0) 编辑
摘要:case when Case具有两种格式。简单Case函数和Case搜索函数 第一种 格式 : 简单Case函数 # 选项1,2...作为条件值1,2...的新值case 列名when 条件值1 then 选项1when 条件值2 then 选项2.......else 默认选项 end as 新列 阅读全文
posted @ 2020-08-14 23:37 hjy1995 阅读(69) 评论(0) 推荐(0) 编辑
摘要:缓存雪崩 缓存雪崩: Redis挂掉了,请求全部走数据库。 对缓存数据设置相同的过期时间,导致某段时间内缓存失效,请求全部走数据库。 缓存雪崩如果发生了,很可能就把我们的数据库搞垮,导致整个服务瘫痪 解决方法: 1.Redis挂掉 事发前:实现Redis的高可用(主从架构+Sentinel 或者Re 阅读全文
posted @ 2020-08-14 23:33 hjy1995 阅读(103) 评论(0) 推荐(0) 编辑
摘要:主从模式(单主服务器) 主服务器负责接收写请求 从服务器负责接收读请求 从服务器的数据由主服务器复制过去。主从服务器的数据是一致的 配置方式 假设我有三个redis实例,地址分别如下: 192.168.248.128:6379 192.168.248.128:6380 192.168.248.128 阅读全文
posted @ 2020-08-14 23:31 hjy1995 阅读(412) 评论(0) 推荐(0) 编辑
摘要:Redis提供了两种不同的持久化方法来讲数据存储到硬盘里边: RDB(基于快照),将某一时刻的所有数据保存到一个RDB文件中。 AOF(append-only-file),当Redis服务器执行写命令的时候,将执行的写命令保存到AOF文件中。 RDB 命令 SAVE会阻塞Redis服务器进程,服务器 阅读全文
posted @ 2020-08-14 23:29 hjy1995 阅读(107) 评论(0) 推荐(0) 编辑
摘要:centos7网络配置 https://blog.csdn.net/loveyou388i/article/details/80797629 安装JDK https://blog.csdn.net/Z_Z_W_/article/details/104560586 安装Tomcat https://w 阅读全文
posted @ 2020-08-14 23:16 hjy1995 阅读(141) 评论(0) 推荐(0) 编辑
摘要:1.openresty OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,OpenResty 是一个强大的 Web 应用服务器, Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方 阅读全文
posted @ 2020-08-14 23:13 hjy1995 阅读(377) 评论(0) 推荐(0) 编辑
摘要:虽然正向代理服务器和反向代理服务器所处的位置都是客户端和真实服务器之间,所做的事情也都是把客户端的请求转发给服务器,再把服务器的响应转发给客户端,但是二者之间还是有一定的差异的。1、正向代理其实是客户端的代理,帮助客户端访问其无法访问的服务器资源,如VPN。反向代理则是服务器的代理,帮助服务器做负载 阅读全文
posted @ 2020-08-14 23:09 hjy1995 阅读(92) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/yaoze2018/p/10909335.html 阅读全文
posted @ 2020-08-04 11:18 hjy1995 阅读(167) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示