自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java SE题目1

1、下面程序的输出结果为( B )public class Demo { public static String sRet = ""; public static void func(int i) { try { if (i%2==0) { throw new Exception(); //抛出异常进入catch,不抛不进 } } catch (Exception e) { sRet += "0"; retur

2021-06-29 21:51:32 443 1

原创 Java 内部类

​内部类:内部类:定义在另一个类里面或一个方法里的类叫做内部类。一般包含四种内部类:静态内部类、匿名内部类、成员内部类、局部内部类。静态内部类 public class Test { static class B{ }}和静态变量、静态方法类似,静态内部类也是和当前类(Test)绑定。使用时,也是通过Test类来调用。public class Test { static class B{ } public static void m

2021-06-28 10:32:45 165

原创 LoadRunner插入事务、集合点、检查点、参数化、运行时设置

LoadRunner插入事务、集合点、检查点、参数化、运行时设置一、插入事务​ 性能测试中,除了要衡量整个脚本的性能外,还需要脚本中某一段或几段操作的性能,以便更详细的知道具体是用户哪些动作对系统性能的影响比较大。LoadRunner采用在脚本中定义事务来达到这一要求。事务:局部操作的汇总。在脚本中定义的某段操作,即一段脚本语句。插入事务:对局部代码的性能分析。事务函数事务开始标记:lr_start_transaction("open_webTours");参数为事务名称事务结束

2021-06-26 16:20:35 2639

原创 性能测试工具LoadRunner的基本使用

性能测试工具LoadRunner的基本使用一、LoadRunner的基本概念功能LoadRunner是一种适用于许多软件体系架构的自动化负载测试工具,从用户关注的响应时间、吞吐量、并发用户和性能计数器等方面来衡量系统的性能表现,辅助用户进行系统性能的优化。组成LoadRunner主要包括三个前台功能组件:VuGen(Virtual User Generator 虚拟用户脚本生成器)------用于录制和编写脚本。记录客户端和服务器之间的数据交互,模拟并记录用户行为,生成测试脚本。Co

2021-06-23 16:51:35 2762

原创 性能测试基本概念及分类

性能测试基本概念一、进行性能测试的原因应用程序是否能够很快的响应用户的要求?应用程序是否能处理预期的用户负载并有盈余能力?应用程序是否能处理业务所需要的事务数量?在预期和非预期的用户负载下,应用程序是否稳定?是否能确保用户在真正使用软件时获得舒服的体验?产生问题的根源:在多种平台上的数百个服务器异构系统、多种应用数千个工作站局域网、广域网和其他分类型的分布式网络体系结构交错的故障点二、性能测试应关注内容并发用户数/吞吐量平均响应时间服务器资源占用

2021-06-23 15:04:17 186

原创 自动化测试-selenium-3(unittest单元测试框架)

unittest单元测试框架一、unittest单元测试框架1、unittest 是python 的单元测试框架,unittest 单元测试提供了创建测试用例,测试套件以及批量执行的方案, unittest 在安装pyhton 以后就直接自带了,直接import unittest 就可以使用。2、利用单元测试框架,创建一个类,该类继承unittest的TestCase,将每个case看成是一个最小的单元, 由测试容器组织起来,之后直接执行,同时引入测试报告。3、unittest 各组件的关系:

2021-06-20 19:53:13 320 3

原创 自动化测试selenium--webdriver常用API

自动化测试selenium(2)–webdriver常用API简单脚本的构成1、在脚本头部导入需要的包;2、获取浏览器的驱动;3、使用浏览器驱动对需要测试的文本系统进行操作;4、测试完毕后关闭浏览器。webdriver常用的API:1、元素的定位:对象的定位是自动化测试的核心,操作一个对象的前提首先应识别此对象。webdriver提供了一系列的对象定位方法。(不管使用哪种方式,必须保证页面上该属性的唯一性)id :全局唯一,一定可以唯一定位到一个元素name:不一定全局唯一,有可能定位

2021-06-19 10:11:35 321 3

原创 自动化测试基本理论及selenium、webdriver原理

自动化测试-selenium(一)1、自动化测试定义​ 按照设定好的条件或步骤让机器/电脑运行。2、自动化测试工具​ QTP(Quick Test Professional ) :收费、安装包大​ Rational Robot:收费​ jmeter : 免费开源工具,可用于性能测试、接口测试,但不能进行UI测试​ appium / macaca Monkey : 手机APP自动化测试工具​ selenium : UI自动化测试、免费、支持多语言(Java、C#、ruby、Python、Jav

2021-06-19 10:06:55 274

原创 软件测试分类

软件测试分类1、按开发阶段划分:​ (1)单元测试​ 测试阶段:编码前(TDD,Test-Driven-Develop测试驱动开发)、编码后。​ 测试人员:开发工程师、白盒测试工程师​ 测试依据:详细设计文档+代码和注释​ 测试方法:白盒测试​ 测试内容:单元接口测试(按照接口设计文档,参数,输出)​ 局部数据结构测试(局部变量)​ 边界测试​ 路径测试​ 错误处理测试​ 单元测试框架 Junit:①在

2021-06-19 09:59:27 456

原创 软件测试基本理论概述

软件测试基本理论1、软件测试:软件测试:验证软件是否满足用户的需求。IEEE定义:在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的某些方面做出评价。分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性。2、软件测试和软件开发的区别:软件测试和软件开发中的调试的区别目的:软件测试的目的:测试人员根据需求去判断软件是否满足用户的需求。调试的目的:软件开发人员为了验证程序是否可以让程序实现的功能。角色:调试:开发人员测试:测试人

2021-06-19 09:54:15 255

原创 [编程题]有假币

有假币链接:https://www.nowcoder.com/questionTerminal/1d18c0841e64454cbc3afaea05e2f63c来源:牛客网题目描述:居然有假币! 现在猪肉涨了,但是农民的工资却不见涨啊,没钱怎么买猪肉啊。nowcoder这就去买猪肉,结果找来的零钱中有假币!!!可惜nowcoder 一不小心把它混进了一堆真币里面去了。只知道假币的重量比真币的质量要轻,给你一个天平(天平两端能容纳无限个硬币),请用最快的时间把那个可恶的假币找出来。解题思路:将硬币

2021-06-11 12:08:32 240 1

原创 奇数位上都是奇数或者偶数位上都是偶数

奇数位上都是奇数或者偶数位上都是偶数链接:https://www.nowcoder.com/questionTerminal/b89b14a3b5a94e438b518311c5156366来源:牛客网题目描述:给定一个长度不小于2的数组arr。 写一个函数调整arr,使arr中要么所有的偶数位上都是偶数,要么所有的奇数位上都是奇数上。 要求:如果数组长度为N,时间复杂度请达到O(N),额外空间复杂度请达到O(1),下标0,2,4,6…算作偶数位,下标1,3,5,7…算作奇数位,例如[1,2,3,4

2021-06-10 17:22:04 117

原创 最长公共子串

最长公共子串需用动态规划求解,MCS[i][j]记录短字符串s1前i个字符和长字符串s2前j个字符的最长子串的长度,初始化所有值为0。当s1[i-1] = s2[j-1]时,MCS[i][j] = MCS[i - 1][j - 1] +1,这里使用一个额外的值start来记录最长子串在短字符串s1中出现的起始位置,maxlen记录当前最长子串的长度,当MCS[i][j]<maxlen时,maxlen = MCS[i][j],则start = i - maxlen;当s1[i-1] !=s2

2021-05-26 17:30:21 93

原创 Java中成员变量、局部变量和静态变量的区别

成员变量、局部变量和静态变量的区别一、成员变量(/ 实例变量)成员变量随对象的建立而建立,随对象的消失而消失,存在于对象所在的堆内存中;成员变量定义在类中,在整个类中都可以被访问;成员变量具有默认初始化值。二、局部变量局部变量定义在局部范围内,只在所属局部范围内有效。如函数内、语句内;局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放;局部变量没有默认的初始化值;三、静态变量静态变量定义在类中,方法外;静态变量有默认的初始化值;静态变量可被对象或类名调用;静态变量

2021-05-07 10:22:03 389

原创 JVM 内存区域划分

JVM 内存区域划分JVM 的内存被划分成了几个区域, 如图所示:1. 程序计数器 (PC Register): 只是一个很小的空间, 保存下一条执行的指令的地址。2. 虚拟机栈(JVM Stack): 重点是存储局部变量表(也有其他信息)。3. 本地方法栈(Native Method Stack): 本地方法栈与虚拟机栈的作用类似. 只不过保存的内容是Native方法的局部变量. 在有些版本的 JVM 实现中(例如HotSpot), 本地方法栈和虚拟机栈是一起的。4. 堆(Heap): JVM

2021-04-24 17:27:37 86

原创 Java变量、数据类型与运算符

Java变量、数据类型与运算符提示:此篇Java变量、数据类型与运算符内容并不完整,仅记录了自己需注意的点。文章目录Java变量、数据类型与运算符1.字节2.字符3.boolean类型4.常量5.类型转换6.数值提升7.int 和 String 之间的相互转换8.自增/自减运算符(++、- -)9.短路求值10.位运算符(& 、|、 ~、 ^)11.移位运算(<<、 >>、 >>>)12.关键字1.字节在 Java 中, 一个 int 变量占

2021-04-23 12:23:43 124

原创 Java数据结构之 Map 和 Set

Map 和 Set目录Map 和 Set一、Map二、Set三、Map与Set区别四、图解关系一、Map1. Map是什么?Map是一个接口类,该类没有继承自Collection,该类中存储的是<K,V>结构的键值对,并且K一定是唯一的,不能重复。Map是一个接口,不能直接实例化对象,如果要实例化对象只能实例化其实现类TreeMap或者HashMap 。例如:Map<String,String> map = new HashMap<>();2、Map

2021-04-22 11:48:06 321

原创 java实现简单哈希表和二叉搜索树

哈希表和搜索树一、哈希表哈希表(hash table):哈希表是基于数组取下标的方式来快速进行增删改查的一种数据结构。哈希函数:将 key 映射成数组下标的函数。哈希冲突:不同的 key ,映射到相同的下标上。处理哈希冲突的方法:①闭散列;②开散列。闭散列:1)若出现哈希冲突,则继续往后找下一个空闲位置。(可将int类型的数组换为对象数组);2) 若数组上元素较多,比较拥挤,此时算法性能严重下降,就需频繁对数组进行扩容,使得数组上保持稀疏。开散列(哈希桶):1)

2021-03-29 21:28:29 284

原创 前 k 个高频单词

题目描述:给一非空的单词列表,返回前 k 个出现次数最多的单词。返回的答案应该按单词出现频率由高到低排序。如果不同的单词有相同出现频率,按字母顺序排序。示例 1:输入: [“i”, “love”, “leetcode”, “i”, “love”, “coding”], k = 2输出: [“i”, “love”]解析: “i” 和 “love” 为出现次数最多的两个单词,均为2次。注意,按字母顺序 “i” 在 “love” 之前。链接:https://leetcode-cn.com/probl

2021-03-28 19:10:01 153

原创 旧键盘输出坏键

题目描述:链接:https://www.nowcoder.com/questionTerminal/f88dafac00c8431fa363cd85a37c2d5e输入描述:输入在2行中分别给出应该输入的文字、以及实际被输入的文字。每段文字是不超过80个字符的串,由字母A-Z(包括大、小写)、数字0-9、以及下划线“_”(代表空格)组成。题目保证2个字符串均非空。输出描述:按照发现顺序,在一行中输出坏掉的键。其中英文字母只输出大写,每个坏键只输出一次。题目保证至少有1个坏键。示例:输入:

2021-03-28 19:02:18 107

原创 复制带随机指针的链表

题目描述:给一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。构造这个链表的 深拷贝。 深拷贝应该正好由 n 个 全新 节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的 next 指针和 random 指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点 。例如,如果原链表中有 X 和 Y 两个节点,其中 X.random --> Y 。那么

2021-03-28 18:50:12 59

原创 七种排序算法

七种排序算法的实现:一、插入排序将整个区间划分为已排序区间和待排序区间,每次选择待排序区间的第一个元素,在已排序区间内选择合适位置插入。代码实现: public static void insertSort(int[] arr){ //将整个数组区间分为已排序区间和待排序区间。初始已排序区间可为第一个元素 //已排序区间 [0,1) //待排序区间 [1,arr.length) int bound = 1; //外层

2021-03-27 18:35:38 101 1

原创 从先序 / 后序和中序遍历序列构造二叉树

题目描述:根据一棵树的前序遍历与中序遍历构造二叉树。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode

2021-03-22 19:34:34 303

原创 二叉树转双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。二叉搜索树的特点:对于树上的任意节点,左子树节点小于根节点,右子树节点大于根节点。二叉搜索树中序遍历可以得到一个有序的序列。求解思路:通过中序遍历来转换递归将左子树转换成双向链表;将根节点尾插到左子树链表的末尾;递归将右子树转成链表;将根节点头插到右子树链表前面。代码实现:/**public class TreeNode { int val = 0;

2021-03-20 13:53:37 1147

原创 二叉树的最近公共祖先

题目描述:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q

2021-03-20 12:44:44 61

原创 二叉树的层序遍历

题目描述:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal求解思路:采用层序遍历,同时在递归方法的参数中加上当前节点的层数;在递归方法内部,根据层数信息,决定将此节点加入到哪个数组中。代码实现:/** * Definition for a binary tree node. * public class T

2021-03-20 10:48:55 48

原创 用队列实现二叉树的层序遍历

二叉树的层序遍历:设二叉树的根节点所在层数为1,层序遍历就是从所在二叉树的根节点出发,首先访问第一层的树根节点,然后从左到右访问第2层上的节点,接着是第三层的节点,以此类推,自上而下,自左至右逐层访问树的结点的过程就是层序遍历。层序遍历结果:ABCDEFGHI实现思路:借助队列实现将根节点入队列;进行出队列操作,同时访问此节点;分别将左右子树入队列;回到步骤2,循环继续执行。(队列为空时循环结束)代码实现:import java.util.LinkedList;import jav

2021-03-20 10:31:59 2630

原创 二叉树创建

题目描述:编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。输入描述:输入包括1行字符串,长度不超过100。输出描述:可能有多组测试数据,对于每组数据,输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。每个输出结果占一行。示例:输入:abc##de#g##f###输出:c

2021-03-20 09:48:25 408

原创 括号匹配

问题描述:给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。链接:https://leetcode-cn.com/problems/valid-parentheses有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = “()”输出:true示例 2:输入:s = “()[]{}”输出:true示例 3:输入:s = “(]”输出:false示例 4:输入:s = “([)]”

2021-03-12 09:35:22 102

原创 java 图书管理系统

java实现基于管理员和普通用户的图书管理系统1、项目分析管理员:①查阅某本图书的信息;②增加书籍;③删除书籍;④查看所有书籍列表;⑤退出程序。普通用户:①查阅某本图书的信息;②借阅书籍;③归还书籍;④退出程序。1、书籍类(Book类)2、书籍列表(BookList类)3、用户(User类)4、管理员(Admin类)5、普通用户(NormalUser类)6、用户所支持的操作(IOperation接口)①增加书籍(AddOperation类)②删除书籍(Del

2021-03-09 17:59:37 628 3

原创 实现栈和队列

用顺序表和链表分别实现栈和队列一、栈的实现(入栈、出栈、取栈顶元素)顺序表实现栈操作:入栈——>顺序表尾插实现出栈——>顺序表尾删实现取栈顶元素——>根据下标获取元素代码实现:public class MyStack { //用顺序表实现栈 private int[] data = new int[100]; private int size = 0; //1.入栈 public void push(int val){

2021-03-09 17:57:42 95

原创 相交链表

题目描述:编写一个程序,找到两个单链表相交的起始节点。链接:https://leetcode-cn.com/problems/intersection-of-two-linked-lists示例:求解思路:创建两个引用,分别指向两个链表的头节点cur1、cur2;比较两链表长度,若 l1 > l2,让 cur1 先走 l1 - l2 步;若 l2 > l1,让 cur2 先走 l2 - l1 步。使得两者处在同一起点位置处。时cur1和cur2同时以同速度往后走,判断是否相遇,相

2021-03-07 11:33:59 53

原创 链表的回文结构

题目描述:对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。给定一个链表的头指针A,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。测试样例:1->2->2->1返回:true求解思路:空间复杂度O(N):逆置对比。将链表A复制一份给链表B,将链表B逆置,对比两链表是否相同。空间复杂度O(1):找到链表A的中间节点,将链表后半部分逆置,对比前后两个半链表是否相同。代码实现:1.空间复杂度为O(N)p

2021-03-07 11:11:42 96

原创 删除链表中重复的节点

题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5。求解思路:循环遍历链表,若当前节点是重复节点,则跳过,寻找下一个不重复节点(重复节点可能不只重复一次,需嵌套循环寻找不重复的节点);若当前节点不是重复节点,则将此节点插入到新链表的尾部。代码实现:public class Solution { public Lis

2021-03-07 10:31:58 208

原创 链表分割

题目描述:现有一链表头指针 ListNode * pHead ,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。求解思路:遍历链表,判断每个节点值与x的大小关系,将小于x的节点插入到新链表smallList尾部,将大于x的节点插入到新链表largeList尾部,最后将链表smallList和链表largeList首尾相连。代码实现:public class Partition { public ListNode partit

2021-03-07 09:53:12 127

原创 环形链表II

题目描述:给定一个链表,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。链接:https://leetcode-cn.com/problems/linked-list-cycle-ii示例1:输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表节点解释:链表中有一个环,其尾部连接到第二个节点。示例2:输入:head = [1,2], pos = 0输出:返回索引为 0 的链表节点解释:链表中有一个环,其尾部连接到第一个节点。示例3:

2021-03-06 15:38:54 74

原创 环形链表

题目描述:给定一个链表,判断链表中是否有环。使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。链接:https://leetcode-cn.com/problems/linked-list-cycle示例 1:输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。示例 2:输入:head = [1

2021-03-06 15:28:14 60

原创 合并两个有序链表

题目描述:将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例1:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]示例2:输入:l1 = [], l2 = []输出:[]示例3:输入:l1 = [], l2 = [0]输出:[0]求解思路:创建两个引用分别指向两个链表的第一个节点,比较其两个值的大小,将较小的尾插到新链表;循环以上循环和尾插过程,直到其中某一链表到达null时,再将另一链表剩余

2021-03-05 20:43:46 78

原创 链表中倒数第k个节点

题目描述:输入一个链表,输出该链表中倒数第k个结点。示例:求解思路:倒数第k个即为第 length - k 个,创建一个引用让其从头开始走 length - k 步即可。代码实现:public class Solution { //求链表长度 public int getLength(ListNode head){ int length = 0; ListNode cur = head; while(cur != null){

2021-03-05 19:29:40 60

原创 链表的中间节点

问题描述:给定一个头结点为 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。链接:此题链接示例 1:输入:[1,2,3,4,5]输出:此列表中的结点 3 (序列化形式:[3,4,5])返回的结点值为 3 。示例 2:输入:[1,2,3,4,5,6]输出:此列表中的结点 4 (序列化形式:[4,5,6]) 由于该列表有两个中间结点,值分别为 3 和 4,我们返回第二个结点。求解思路:求出链表的长度length;length / 2,得到引用

2021-03-05 15:17:38 62

空空如也

空空如也

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

TA关注的人

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