自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 JAVA 基于HttpClient-4.4传递json字符串作为参数发送POST请求 详细封装说明

场景:POST请求,基于json格式,请求报文中部分字段在自动化测试中,是唯一的,所以需要参数化。将参数化后的json报文作为该POST请求的参数,发送并检查是否请求成功。以下是详细说明一、测试类:PushClaimTest.java定义方法 test(),调用 工具类 Helper.pushClaim()的方法这里有两种方式:1、创建Map集合,将所有需要参数化的json字符串的...

2019-09-11 17:32:32 1450 2

原创 JAVA 基数排序算法(详细实现过程介绍)

基数排序 是将整数按位数切割成不同的数字,然后按每个位数分别比较从而得到有序的序列。本文以数组中元素均为正整数来演示。给定一个数组 arr = [ 53, 3, 542, 748, 14, 214 ];准备十个桶:0~9第一轮按照元素的个位数排序0~9的各个桶内分别存放数组中各元素的个位数,按照数组元素的顺序依次存放53个位数为 3 ->放入第3个桶(桶下标为3)3个位数为 3 ->放入第3个桶(桶下标为3)542个位数为 2 ->放入第2个桶(桶下标为2)748个位

2020-11-04 10:10:26 523 2

原创 JAVA 归并排序算法(详细实现过程介绍)

概念:归并排序Merge Sort 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的典型应用。 它指的是将两个已经排序的序列合并成一个序列的操作。归并排序算法依赖归并操作。归并排序有多路归并排序、两路归并排序 , 可用于内排序,也可以用于外排序。这里仅对内排序的两路归并方法进行讨论。原理:把 n 个记录看成 n 个长度为 l 的有序子表 进行两两归并使记录关键字有序,得到 n/2 个长度为 2 的有序子表 重复第 2 步直到所有记录归并成一个长度为 n 的有序表为止。 图

2020-10-14 15:00:00 335

原创 JAVA 快速排序算法(详细实现过程介绍)

https://blog.csdn.net/jianyuerensheng/article/details/51258374?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.c

2020-09-30 16:57:19 557

原创 JAVA 希尔排序-移位法 算法(详细实现过程介绍)

希尔排序-移位法第一轮,第1次8,9,1,7,2,3,5,4,6,0gap=5preIndex=0insertVal=arr[5]arr[preIndex]=arr[0]如果当前数字小于前一个数字,即arr[5]<arr[0],则while循环,条件为,preIndex>=0且arr[5]<arr[0]满足,则把下标为preIndex的元素的下一个元素,即下标为preIndex+5对应元素的值赋值为下标为preIndex的元素对应的值,arr[5]=arr[0],即ar

2020-09-29 17:54:24 302

原创 JAVA 插入排序算法(详细实现过程介绍)

场景:对数组int []arr={ 101, 34, 119, 1},使用插入排序方式实现从小到大排序。思路分析:4个数,外层循环需要排序三轮,即:循环从1开始,循环次数为 数组的长度1、第一轮排序的结果为:34,101,119, 11)设定下标为0的第一个数不动,下标为1的数为要插入的数 insertVal,该数的前一个数的下标preIndex为0即: 1-12)使用while循环,循环条件为:preIndex>=0 && insertVal<insertVal

2020-09-18 18:15:37 334

原创 JAVA 选择排序算法(详细实现过程介绍)

场景:对数组int []arr={ 101, 34, 119, 1},实现从小到大选择排序。思路分析:4个数,外层循环次数为3即:数组长度-1第一轮循环1、设定最小数的值和下标先设定数组中的下标为0的元素为最小的数int min = arr[0]设定最小数的下标为0int minIndex = 0使用for循环,从下标为1的数开始,循环次数为数组的长度 3i=1min=101,minIndex = 0,arr[1]=34min>arr[1],则设置min=arr[1],

2020-09-15 18:30:33 503

原创 JAVA 冒泡排序算法(详细实现过程介绍)

冒泡排序3, 9, -1, 10, -24个数,外层循环需要排序三轮,即:循环从1开始,循环次数为 数组的长度-1第一轮排序结果为:获得最大元素在最右侧3, 9, -1, 10, -23, -1, 9, 10, -23, -1, 9, 10, -23, -1, 9, -2, 10第一轮的内部第1次排序,下标为0的元素与下标为1的元素相比,arr[0]<arr[1],则不需要交换,第1次排序结果为:3, 9, -1, 10, -2for(int j=0;j<4;j++){.

2020-09-14 18:39:04 302

原创 JAVA 实现数独

一、数独是什么?数独是源自18世纪瑞士的一种数学游戏。是一种运用纸、笔进行演算的逻辑游戏。玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫(3*3)内的数字均含1-9,且不重复。数独盘面是个九宫,每一宫又分为九个小格。在这八十一格中给出一定的已知数字和解题条件,利用逻辑和推理,在其他的空格上填入1-9的数字。使1-9每个数字在每一行、每一列和每一宫中都只出现一次,所以又称“九宫格”。水平方向有九横行,垂直方向有九纵列的矩形,画分八十一个小正方形

2020-09-11 10:10:27 4442

原创 JAVA 输入任何奇数 完成九宫格填数

1、最小值永远在最上行的中间格,最大值永远在最下行的中间格。2、最上行碰壁,下一个数填入右列最下格。3、最右列碰壁,下一个数填入上一行最左格。4、右上格有空就一直填下一个数;右上格有数,就将下一个数字填入上一个数的下一格。5、右上角的下一个数,必定在其下一格;左下角的上一个数,必定在其上一格。https://blog.csdn.net/weixin_44485261/article/details/88912889?utm_medium=distribute.pc_relevant...

2020-09-07 18:30:57 826

原创 JAVA 使用栈实现后缀表达式的计算

JAVA 使用栈实现中缀表达式转换后缀表达式一文中详细说明了如何将中缀表达式转换成后缀表达式。那么如何计算后缀表达式的结果呢?后缀表达式的求值思路:1、从左到右扫描后缀表达式2、如果遇到操作数,将其压入栈中。3、如果遇到操作符,则从栈中弹出两个操作数,计算结果,然后把结果入栈。4、遍历完后缀表达式,则计算完成,此时的栈顶元素即为计算结果。例如:后缀表达式"3 4 + 5 × 6 - "(1) 初始化栈,栈顶指针为空,从左至右扫描;(2) 遇到操作数3,入栈;(3)..

2020-09-01 20:01:59 853

原创 JAVA 使用栈实现中缀表达式转换后缀表达式

二、中缀表达式转换成后缀表达式此方法需要遵循几个规则:(1)如果读入操作数,则直接放入输出字符串;(2)如果读入一般运算符如+-*/,则放入堆栈,但是放入堆栈之前必须要检查栈顶,并确定栈顶运算符的优先级比放入的运算符的优先级低;如果放入的优先级较低,则需要将栈顶的运算符放入输出字符串;(3)如果读入(,因为左括号优先级最高,因此放入栈中,但是注意,当左括号放入栈中后,则优先级最低;(4)如果读入),则将栈中运算符取出放入输出字符串,直到取出(为止,注意:()不输出到输出字符串;.

2020-09-01 19:23:16 962

原创 JAVA 使用数组模拟栈的方式实现中缀表达式的计算

package com.sc.stack;public class Calculator { public static void main(String[] args) { String infixExpression ="1-5+50-1*2"; //44 char[] charArray = infixExpression.toCharArray(); ArrayStack numStack = new ArrayStack(20); .

2020-08-28 13:34:04 158

原创 JAVA 数组简单模拟栈的相关实现(入栈、出栈、遍历)详细实例验证

使用数组模拟栈的操作思路:使用数组来模拟栈步骤分析:1. 定义一个变量top表示栈顶,并初始化为 -13. 入栈操作,当有数据加入到栈时, top++; stack[top] = data;4. 出栈操作,先将栈顶的元素保存到一个变量中,然后再移动top变量,则int value = stack[top]; top--; return value;代码实现:1、创建数组对象ArrayStack.class1)构造方法,传入栈的最大容量 private i...

2020-08-19 17:25:09 913

原创 JAVA 实现双向链表根据节点大小按顺序新增、修改、删除操作

单向链表查找的方向只能是一个方向,而双向链表可以向前或者向后查找。结合JAVA 实现带头结点的链表根据节点大小按顺序新增、修改、删除节点单向链表的操作。在单向链表的基础上进行双向链表的增删改就比较简单了。根据上图,分析双向链表的新增,修改、删除操作思路:1) 遍历 方和 单链表一样,只是可以向前,也可以向后查找2) 添加 (默认添加到双向链表的最后)(1) 先找到双向链表的最后这个节点(2)temp.next=newHeroNode(3)newHeroNode.pre=t..

2020-08-18 20:19:22 1159 7

原创 JAVA 使用栈从尾到头打印单向链表

思路1. 上面的题的要求就是逆序打印单链表.2. 方式1: 先将单链表进行反转操作,然后再遍历即可,这样的做的问题是会破坏原来的单链表的结构,不建议3. 方式2:可以利用栈这个数据结构,将各个节点压入到栈中,然后利用栈的先进后出的特点,就实现了逆序打印的效果.举例演示栈的使用 Stack //逆向打印链表 public void reversePrintSinglelist(HeroNode2 head2){ //如果当前链表为空,或者只有一个节点,无需反转,直

2020-08-14 18:28:24 198

原创 JAVA 查找单向链表中倒数第K个节点的代码实现

思路1. 编写一个方法,接收 head 节点,同时接收一个 index2.index 表示是倒数第 index 个节点3. 先把链表从头到尾遍历,得到链表的总的长度 getLength4. 得到 size 后,我们从链表的第一个开始遍历 (size-index)个,就可以得到5. 如果找到了,则返回该节点,否则返回 nulll //获取倒数第K个节点 public HeroNode2 getLastIndexNode(HeroNode2 head2,int index..

2020-08-07 18:32:54 602 2

原创 JAVA 实现单向链表的反转

JAVA 实现带头结点的链表根据节点大小按顺序新增、修改、删除节点该文章已实现单向链表的创建及遍历等操作。那么在此基础上,如何实现单向链表的反转呢?实现思路:1. 先定义一个节点 reverseHead = new HeroNode();2. 从头到尾遍历原来的链表,每遍历一个节点,就将其取出,并放在新的链表reverseHead 的最前端.3. 原来的链表的head.next = reverseHead.next代码实现上代码:在SingleLinkedList2.cl..

2020-08-06 18:48:25 528

原创 JAVA 获取单向链表中有效节点的个数

JAVA 实现带头结点的链表根据节点大小按顺序新增、修改、删除节点 该文章已实现单向链表的创建及遍历等操作。那么在此基础上,如何获取到单链表的节点的个数(如果是带头结点的链表,不需要统计头节点)呢?实现思路:1、先判断链表是否为空,为空则return。2、创建临时节点temp指向链表的头部,用于后续循环。3、创建变量size,用于存储有效节点个数。4、使用while循环,当temp的下一个节点为空时,则循环结束break; 否则,size++,同时将temp后移。5...

2020-08-06 13:01:49 913

原创 JAVA 使用单向环形链表解决约瑟夫问题

约瑟夫问题:设编号为1,2,… n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m 的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推,直到所有人出列为止,由此产生一个出队编号的序列。nums = 10 , 即有10个人 start = 2, 从第二个人开始报数count = 3, 数3下1、创建一个小孩节点对象 class Child{ private int no; private Chil

2020-08-06 12:48:58 189

原创 JAVA 实现带头结点的链表根据节点大小按顺序新增、修改、删除节点

思路:需要按照编号的顺序添加1. 首先找到新添加的节点的位置, 是通过辅助变量(指针), 通过遍历来搞定2. 新的节点.next = temp.next3. 将temp.next = 新的节点

2020-08-04 18:36:26 410

原创 JAVA 将两个有序链表合并为一个有序链表

将两个有序链表合并为一个有序链表思路:1.必须保证两个链表为有序链表2.在两个链表都不为空的条件下,设一个 last=null;(1)如果链表1的值小于等于链表2的值,进行循环,先放链表1的值到新链表result,如果result为空,视为头插,如果不为空,视为尾插,其中要保证last永远为最后一个结点,最后让循环走起来(2)如果链表2的值小于链表1的值,与(1)中方法相同,只是链表1全换为链表2即可3.如果链表2为空了,链表1不为空时,把链表1接在last的下一个,之后,可以.

2020-08-04 13:03:53 2259

原创 JAVA 实现带头结点的链表按添加顺序新增节点并遍历

链表是有序的列表,但是它在内存中是存储如下从上述图中可以看出:1) 链表是以节点的方式来存储,是链式存储2) 每个节点包含 data 域:存储节点的具体信息, next 域:指向下一个节点.3) 链表的各个节点不一定是连续存储.4) 链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定单链表(带头结点) 逻辑结构示意图如下单链表的应用实例:使用带 head 头的单向链表实现 –向链表中增加、删除、修改最后遍历的操作。1、先创建一个LinkedNode对象,代表链表中的

2020-07-29 18:45:34 751

原创 JAVA 数组模拟环形队列

在上一篇JAVA 数组模拟队列的文章中存在问题:当队列中的元素全部取出后,输出队列元素为空。再次向队列中添加元素时,提示队列已满,无法添加。因为队列中数组只能使用一次,没有达到复用的效果。本文将使用环形队列解决这个问题。数组模拟环形队列思路分析:1.基于之前的front 变量,在环形队列中,front调整为指向队列的第一个元素,即arr[front]。front 的初始值为0。2.基于之前的 rear 变量,在环形队列中,rear 调整为指向队列的最后一个元素的...

2020-07-28 18:37:28 171

原创 JAVA 使用数组模拟队列

一、队列的概念1、队列是一个有序列表,可以用数组或是链表来实现。2、遵循先入先出的原则(例如:银行叫号排队)。即:先存入队列的数据,要先取出。后存入的要后取出二、数组模拟队列队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图。其中 maxSize 是该队列的最大容量。因为队列的输出、输入是分别从前后端来处理,因此需要两个变量 front 及 rear 分别记录队列前后端的下标, front 会随着数据输出而改变,而 rear 则是随着数据输入而改变。..

2020-07-24 13:00:09 159

原创 JAVA 将二维数组转化为稀疏数组保存到文件,再读取文件转化为二维数组

场景:将五子棋盘(二维数组)中,有效的数据保存到稀疏数组中并将稀疏数组保存到本地文件。然后将读取文件中的数据,并将数据转换成二维数组。因为五子棋该二维数组中有很多值是默认值 0, 因此记录了很多没有意义的数据.所以这里使用到稀疏数组,保存有效数据。解题思路:二维数组 转 稀疏数组并存入本地文件:1. 遍历原始的二维数组,得到有效数据的个数 sum2. 根据sum 就可以创建 稀疏数组 sparseArr int[sum + 1] [3]3. 将二维数组的有效数据数...

2020-07-23 17:48:37 578

原创 面试题 & 快速找出数组中两个数字,相加等于某特定值的 四种实现方式

JAVA基础面试题:快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值。假设数组中的都是各不相等的整数。这道题看起来很简单,但往往在面试中许多人一下子答不出来。下面四种实现方式使用相对巧妙的方法来实现上述算法,供参考 。方法一1、拿目标值减去循环中的某个数组的元素值。2、如果元素符合条件,就将下标放入到Map集合中。public static Map<Integer,Integer> method1(int[] nums, int sum){...

2020-07-21 11:53:54 4153

原创 MySQL 子查询、内联结、外联结

子查询MySQL 子查询版本要求:MySQL4.1引入了对子查询的支持。子查询:嵌套在其他查询语句中的查询。示例: 利用子查询进行过滤假如需要查询出成绩表分数最高的学生的姓名及编号select st.s_no,st.s_name from student st where st.s_no in (select s1.s_no from score s1 where s1.sc_degree in (select max(sc.sc_degree)from score sc));从上..

2020-06-28 18:22:39 281

原创 MySQL 数据汇总&分组顺序

聚合函数聚合函数在查询时可用于检索数据,以便分析和报表生成,提高工作效率。常见的聚合函数使用场景1.确定表中的行数(或者满足某个条件或者包含某个特定值的行数)2.获取表中行组的和。3.找出表列的最大值、最小值、平均值。聚集函数定义:运行在行组上,计算和返回单个值的函数常用的五个聚集函数1. AVG() ,求某列的平均值获取多个列的平均值,必须使用多个AVG()函数。该函数忽略值为NULL的行。2. COUNT(),计数3. MAX(),求最大值,忽略列值为NULL的行4. MIN

2020-06-28 18:18:47 342

原创 MySQL 数据处理函数的使用

计算字段Concat()函数Concat(),拼接串,即把多个串连接起来形成一个较长的串。需要一个或多个指定的串,各个串之间用逗号分隔。select CONCAT(s_name,'[',s_sex,']') as newstr from student order by s_name;去除空格Trim()函数Trim函数,去掉串左右两边的空格select CONCAT(trim(s.coursesname),'[',s.coursesid,']') as newcol fr...

2020-06-19 18:25:51 155

原创 MySQL 使用正则表达式查询(实例验证)

正则表达式用来匹配文本的特殊的串(字符集合)。正则表达式用正则表达式语言来建立,正则表达式语言是用来完成匹配特殊的串的一种特殊语言。Regexp关键字告诉MySQL后面所跟的东西作为正则表达式处理。以下使用student、courses、classes表查询student表![image.png](https://upload-images.jianshu.io/upload_images/1955673-a3a478feb410b78a.png?imageMogr2/auto-orient/st

2020-06-19 18:04:37 577

原创 使用TestNg 测试框架时自动化测试失败重试解决方案

自动化测试时,有时会因为网络不稳定,或者测试环境、第三方环境正在重启而造成用例运行结果不稳定,导致时而能测试通过时而又不通过的测试用例。这些难以重现的环境因素造成的用例失败,经常会耗费排查时间,然而又没有太多改善的空间。针对这种情况,可以基于TestNG的重试器和监听器实现失败结果的重试和监听,一旦监听到失败的测试用例,启动定制的重试方法和处理方法来实现重新运行。IRetryAnalyzer实...

2019-12-27 17:16:50 1257

原创 JAVA中HashMap 与HashTable的区别

HashMap与Hashtable的区别是面试中经常遇到的一个问题。这个问题看似简单,但如果深究进去,也能了解到不少知识。本文对两者从来源,特性,算法等多个方面进行对比总结。力争从多角度,全方位的展示二者的不同。1、产生时间Hashtable是java一开始发布时就提供的键值映射的数据结构,而HashMap产生于JDK1.2。虽然Hashtable比HashMap出现的早一些,但是现在Has...

2019-12-20 17:37:59 344

原创 Maven工程,单元测试时引用reportng包生成测试报告

自动化测试时,Maven工程中单元测试生成测试报告,使用TestNg单元测试框架时,测试报告默认生成在target\surefire-reports目录下。例如,pom.xml文件中部分配置:<dependencies> <dependency> <groupId>org.testng</groupId> ...

2019-12-19 10:18:44 442

原创 使用reportng包生成测试报告产生乱码的解决方案

解决方案如下:1.下载reportng源码 https://github.com/dwdyer/reportng.git2.修改AbstractReporter.java并保存,记得一定要导入OutputStream类。 OutputStream out = new FileOutputStream(file); Writer writer = new BufferedWrit...

2019-12-19 10:18:20 464

原创 单元测试框架 TestNG 和 Junit4的区别

在自动化测试时,经常会用到TestNg 或 Junit 测试框架。那么它们之间有什么联系和区别,如何使用呢?在面试过程中也会经常被问到,结合网上一的些文章,做了以下总结。TestNg主要用于单元测试和集成测试,它涵盖了 JUnit4 的全部功能,并且在参数化测试、依赖测试以及套件测试(组)方面功能上更加强大。那么TestNg与Junit4具体有哪些区别呢?下面表中概括了JUnit 4和Te...

2019-12-17 19:58:38 718

原创 Java 中Collection与Collections的区别(实例)

1、java.util.Collection 是一个集合接口(集合类的一个顶级接口)。它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set(不包含Map)。Java集合框架图可知其具体子接口及各实现类。Collection...

2019-12-05 14:12:59 147

原创 JAVA基础 & hashCode与equals详解

在了解hashCode与equals方法之前,需要知道:1、JAVA八种基本数据类型的变量没有equals和hashcode方法,只能应用==进行比较;2、变量1==变量2,比较的是对象在堆内存中的地址,如果要比较其中的内容的话,就要用equals方法(前提是在自己定义的对象中重写了equals方法,如果没有重写equals方法使用equals比较和==的意义是相同的,都是比较对象存放的地...

2019-12-05 10:54:20 203

转载 DRUID连接池的实用 配置详解

DRUID介绍DRUID是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP、PROXOOL等DB池的优点,同时加入了日志监控,可以很好的监控DB池连接和SQL的执行情况。正式版本下载maven中央仓库:http://central.maven.org/maven2/com/alibaba/druid/获取Druid的源码Druid是一个开源项目,源码托管...

2019-11-04 14:34:45 1350

原创 Java synchronized 同步锁与ReenTrantLock可重入锁的区别

一、ReenTrantLock可重入锁与synchronized 同步锁的区别锁的实现synchronized是Java中的关键字,是依赖于JVM实现的,Java 虚拟机团队在 JDK1.6 为 synchronized 关键字进行了很多的优化,但这些优化都是在虚拟机层面实现的,并没有直接暴露给我们。而ReenTrantLock是JDK API 实现的,有直接的源码可供阅读。ReenTra...

2019-11-04 12:44:43 1209

selenium2.0

selenium2.0

2014-11-21

空空如也

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

TA关注的人

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