自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java线程池详解(为什么要有线程池、线程池的继承关系、线程池的底层原理、手工创建线程池、JDK内置的4大线程池)

文章目录1.为什么有线程池的出现?2. 线程池的继承关系3. 线程池的底层原理4.线程池的创建与使用4.1 手工创建线程池4.2 向线程池提交任务4.2.1 execute()方法4.2.2 submit()方法5.JDK内置的4大线程池5.1 普通调度池5.1.1 无大小限制的线程池5.1.2 固定大小的线程池5.1.3 单线线程5.2 定时调度池5.2.1 Executors.new...

2019-03-02 12:42:42 2555

原创 Java中继承的定义与使用

文章目录继承1.1 继承的实现1.2 继承的限制1.2.1 子类对象在进行实例化前首先调用父类构造方法,产生父类对象后再调用子类构造方法实例化子类对象。1.2.2 Java只允许单继承不允许多继承(一个子类继承一个父类)1.2.3 在继承时,子类会继承父类的所有结构。阿里java校招笔试题继承  继承的主要作用在于,在已有基础上继续进行功能的扩充。定义两个类(学生、人):class Per...

2018-10-21 12:00:25 42803 11

原创 Java Scanner类

Java Scanner类作用: 获取控制台的输入语法:Scanner sc = new Scanner(System.in);控制台会一直等待输入,直到敲回车键;如果想要获取输入的内容,可以调用Scanner的next()或者nextLine()方法;在读取之前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据;next()方法import java.util.Scanner;public class test { public static

2021-01-10 18:42:02 272

原创 测试工程师题库

为什么要做软件测试 ?兴趣 “兴趣是最好的老师”,学自己感兴趣的东西,往往会更加积极,测试人员往往以客户为出发点考虑一些事情,所以一个好的产品,受到用户的喜爱,离不开测试人员的努力。性格 善于与人交流,负责任。软件测试这个职业需要耐心和认真的工作态度 ,一个产品需要上市,必须经过测试人员的评估,所以测试对产品的上线非常重要,必须要有很负责的态度,不能草草了事。坚持精神 当遇到开发人员...

2019-08-25 12:40:35 1385 3

转载 【软件测试】软件测试的生命周期、测试流程

文章目录一、软件的生命周期二、软件生命周期的阶段三、软件模型四、软件测试的基本流程五、软件开发流程、测试流程梳理六、C/S与B/S架构七、常见笔试面试题一、软件的生命周期定义 : 软件生命周期是指软件的产生直到报废的生命周期。二、软件生命周期的阶段问题的定义及规划开发方和需求方共同讨论,主要是确定软件的开发目的及可行性。制定开发计划需求分析对软件需要实现的各个功能进行详细分析...

2019-08-17 09:39:50 1646

原创 搜索工具测试报告

测试测试测试

2019-08-13 10:22:07 391

原创 【软件测试】软件测试的四个阶段(单元测试、集成测试、系统测试、验收测试)

软件测试一般分为4个阶段:单元测试、集成测试、系统测试、验收测试1.单元测试单元测试是对软件中的最小验证单元进行检查和验证。比如Java中类和方法的测试此阶段一般由软件的开发人员来实施,用以检验功能是否符合自己的设计要求。单元测试的好处:尽早的发现缺陷简化集成单元测试的不足:不可能覆盖所有的执行路径,所有不可能保证捕捉到所有路径的错误单元测试的内容?模块接口测试、局部数...

2019-08-12 14:55:17 6576

原创 Java多线程复习

文章目录1. 进程与线程的区别 ?2.线程的创建方式3. 线程池工作原理?4.JDK内置的四大线程池 ?1. 进程与线程的区别 ?进程: 操作系统中程序的一次执行周期(比如登录QQ到退出QQ就伴随着一个进程的创建与销毁)是资源分配的最小单位线程:线程是进程的一个子任务,是任务分配的最小单位区别:创建一个进程的开销比创建一个线程的开销大得多进程之间通信比线程之间通信复杂的多2.线程...

2019-08-08 17:01:46 328

原创 Java类集复习

文章目录1.ArrayList、Vector、LinkedList的关系与区别?2.什么是fail-fast机制?什么是fail-safe?3.Set接口与Map接口的关系?4.hashcode与equals的关系?5.Java中一个类的两个对象比较大小的方式?6.HashMap、TreeMap、Hashtable的关系与区别?7. HashMap的源码解读?8.JDK1.7和JDK1.8中Con...

2019-08-06 15:36:26 208 1

原创 二叉搜索树、AVL树、红黑树、B树、B+树

二叉搜索树概念二叉搜索树又称二叉排序树规则:若它的左子树不为空,则左子树上的所有节点的值都小于根节点的值若它的右子树不为空,则右子树上的所有节点的值都大于根节点的值它的左右子树也是二叉搜索树插入插入是根据二叉搜索树的特性,左边的子树都比根小右边的子树都比根大删除综上所述,删除规则为:左为空,父亲指向我的右右为空,父亲指向我的左左右均不为空,替换法删除...

2019-08-05 17:02:16 531

原创 二叉树的前序遍历、中序遍历、后序遍历(递归、非递归)

文章目录1.前序遍历1.1 递归1.2 非递归2.中序遍历2.1 递归2.2 非递归3.后序遍历3.1 递归3.2 非递归1.前序遍历前序遍历的规则:访问根节点前序遍历左子树前序遍历右子树LeetCode144 二叉树的前序遍历1.1 递归class Solution { public List<Integer> preorderTraversal(Tre...

2019-08-05 15:49:44 195

原创 探诗(爬虫项目)

项目意义项目背景项目功能数据采集、清洗、存储数据分析、可视化展示项目技术Stream流式处理多线程文本分析和解析(ansj中文分词算法)网页解析工具(htmlunit)数据库JDBC编程可视化(HTML/CSS/JavaScriot)DIY 构建对象管理工程...

2019-08-02 23:17:18 528

原创 【动态规划】Fibonacci、跳台阶、变态跳台阶、矩形覆盖、最大连续子数组的和、不同路径、最小路径和、triangle

文章目录动态规划Fibonacci跳台阶动态规划动态规划通俗的来讲就是大事化小、小事化了在将大问题化解为小问题的分治过程中,保存这些小问题的结果,供后面处理更大规模问题时使用。动态规划问题的特点:可以将原来的问题分解成几个相似的子问题所以的子问题都只需要解决一次存储子问题的解动态规划问题一般从四个方面解决:状态定义状态间的转移方程定义状态的初始化返回结果动态规划的本...

2019-07-27 14:30:04 270

原创 Java运算符的优先级

运算符优先级的问题经常会导致程序出现很多不容易发现的问题我又记不住这些关系,所以今天把它整理出来优先级运算符1.  ()   []2+(正)  -(负)  ++  –  ~  !3*  /  %4+(加)  -(减)5<<   >>(无符号右移)   >>>(有符号右移)6<  ...

2019-06-05 21:01:42 6842 2

原创 【牛客网算法】另类加法、饥饿的小易

另类加法算法链接请编写一个函数,将两个数字相加。不得使用+或其他算数运算符。给定两个int A和B。请返回A+B的值解题思路:使用位运算来代替加法异或(相异为1,相同为0) A与B做异或假设A的二进制位为0011,B的二进制位为0101那么A^B = 0110 即相当于A+B不算进位的和。与(有0位0) A与B做与运算假设A的二进制位为0011,B的二进制位为01...

2019-06-05 19:18:50 331

原创 值传递与引用传递有哪些区别?

  方法调用是编程语言中非常重要的一个特性,在方法调用时,通常需要传递一些参数来完成特定的功能。Java语言提供了两种参数传递的方式:值传递和引用传递值传递  在方法调用中,实参会把它的值传递给形参,形参只是用实参的值初始化一个临时的存储单元。因此形参与实参虽然有着响应的值,但是却有着不同的存储单元,因此对形参的改变不会影响实参的值。引用传递  在方法调用中,传递的是是对象(也可以看作是对...

2019-06-04 19:53:46 2379

原创 【异常】运行时异常和普通异常有什么区别?

Java提供了两种错误的异常类,分别为Error和Exception,且它们拥有共同的父类ThrowableError表示在运行期间出现了很严重的错误,并且该错误是不可恢复的,由于这属于JVM层次的严重错误,因此这种错误是会导致程序终止执行的。此外,编译器不会检查Error是否被处理,因此在程序中不推荐去捕获Error类型的异常,主要原因是运行时异常多是由于逻辑错误导致的,属于应该解决的问题,也...

2019-06-04 18:15:28 2758

原创 【软件测试】V模型和W模型

V模型在V模型中,测试过程被加在开发过程的后半部分,单元测试检查代码的开发是否符号详细设计的要求。集成测试检验以前测过的各组件部分是否能很好的结合在一起,系统检测检测已经集成在一起的产品是否符合系统规格说明书的要求,验收测试检验产品是否符合最终用户的要求。V模型的缺陷在于仅仅把测试过程作为在编码后的一个阶段,忽略了测试对需求分析、系统设计的验证,因此需求阶段的缺陷很可能一直到后期的验收测试才被...

2019-06-03 21:17:06 3164

原创 volatile有什么作用?

在Java语言编写的程序中,有时为了提高程序的运行效率,编译器会自动对其进行优化,把经常被访问的变量缓存起来,程序在读取这个变量时有可能会直接从缓存(例如寄存器)中来读取这个值,而不是去内存中读取。这样做的一个好处是提高了程序的运行效率,但当遇到多线程编程时,变量的值可能因为别的线程而改变了,而缓存中的值不会改变,从而造成应用程序读取的值和实际的值不一致。例如,在本次线程内,当读取一个变量时,为...

2019-06-03 15:11:30 1141

原创 牛客网算法之洗牌详解

牛客网洗牌连接文章目录1.题目概述2.题目分析3.解决思路3.1 暴力法解决3.2 非暴力法解决4. 具体代码1.题目概述洗牌在生活中十分常见,现在需要写一个程序模拟洗牌的过程。 现在需要洗2n张牌,从上到下依次是第1张,第2张,第3张一直到第2n张。首先,我们把这2n张牌分成两堆,左手拿着第1张到第n张(上半堆),右手拿着第n+1张到第2n张(下半堆)。接着就开始洗牌的过程,先放下右手的...

2019-05-30 22:25:07 1681 2

原创 【GC】垃圾回收过程

在Java中,程序员不需要去关心内存动态分配和垃圾回收的问题,这一切都交由JVM来处理。垃圾回收顾明思义,就是释放垃圾占用的空间,那么问题来了,在Java中,什么样的对象会被认定为"垃圾"?当一些对象被认定为垃圾之后,怎么样回收呢?一、如何确定某个对象是垃圾?第一种方法是引用计数法 给对象增加一个引用计数器,每当有一个地方引用它时,计数器就加1;当引用失效时,计数器就减1,任何时刻计数器为...

2019-05-30 22:24:06 3803

原创 【数据库】JDBC编程

文章目录1.什么是JDBC?2.JDBC工作原理?3.JDBC使用步骤3.1 JDBC使用流程图4.JDBC常用接口和类4.1 JDBC API1.什么是JDBC?  现在的应用系统大多都离不开数据库,Java程序访问数据库的基本方式是通过JDBC(Java DataBase Connectivity,Java数据库连接),JDBC是一种用于执行SQL语句的Java API,它由一组用Java...

2019-05-30 11:18:13 237

原创 【线程】什么是守护线程?

Java提供了两种线程:守护线程和用户线程守护线程,是指程序运行时在后台提供的一种通用服务的线程,这种线程并不属于程序中不可或缺的部分。通俗点讲,任何一个守护线程都是整个JVM中所有非守护线程的"保姆"。用户线程和守护线程几乎一样,唯一的不通过之处在于如果用户线程已经全部退出运行,只剩下守护线程存在了,JVM也就退出了。因为当所有非守护线程结束时,没有了被守护者,守护线程也就没有工作可做,当然...

2019-05-29 08:33:50 3437

原创 【线程】sleep()方法和await()方法有什么区别?sleep()和yield()方法有什么区别?

sleep()是使线程暂停执行一段时间的方法。await()也是一种使线程暂停执行的方法。当线程交互时,如果线程对一个同步对象x发出wait()调用请求,那么该线程会暂停执行,被调对象进入等待状态,直到被唤醒或者等待超时。具体来说sleep()方法和await()方法的区别主要表现在以下几个方面?原理不同sleep()方法是Thread类的静态方法,是线程用来控制自身流程的,它会使线程...

2019-05-28 16:02:39 3035 1

原创 【线程】run()方法与start()方法有什么区别?

run()方法与start()方法有什么区别?  通常,系统通过调用线程类的start()方法来启动一个线程、此时该线程处于就绪状态,等待调度,即就是这个线程可以被JVM来调度执行。在调度过程中,JVM底层通过调用线程类的run()方法来完成实际的操作,当run()方法结束后,此线程就会终止。  如果直接调用线程类的run()方法,此时run()方法仅仅被当做一个普通的函数调用,程序中仍然只有...

2019-05-28 09:50:56 2413 1

原创 【数据库】视图

文章目录视图基本使用创建视图删除视图视图规则和限制视图视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据基本使用创建视图create view 视图名 as select 语句;视图的数据变化会影响到基表,基表的数据变化也会影响到视图。删除视图drop view 视图名;视图规则和限制与表一样,必须唯一命名(不能出现同名视图或表名)...

2019-05-27 18:46:04 1840

原创 [数据库]表的内连和外连接以及内连接和外连接的区别

表的连接分为内连接和外连接内连接内连接实际上就是利用where子句对两种表形成的笛卡尔积进行筛选语法:select 字段 from 表1 inner join 表2 on 连接条件 and 其他条件;显示SMITH的名字和部门名称用标准的内连接写法外连接外连接分为左外连接和右外连接左外连接 左侧的表完全显示语法:select 字段名 from 表名1 left join...

2019-05-27 15:53:35 3786 1

原创 [软件测试]黑盒测试与白盒测试

黑盒测试黑盒测试也称功能测试或数据驱动测试,它是 已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(数据库或文件)的完整性。黑盒法着眼于程序外部结构...

2019-05-27 14:30:39 2559

原创 搜索工具

文章目录1.项目简介2.项目意义3.项目使用技术4.项目功能5.实现5.1为什么用H2数据库?5.2索引5.3文件监听6.项目使用6.1 参数配置6.2 命令6.3 运行7.项目亮点8.源代码1.项目简介仿照Everything桌面搜索工具,基于Java语言开发的命令行文件搜索工具2.项目意义解决Windows命令行下文件搜索问题(Windows下的文件搜索有盘符限制)可以跨平台使用,...

2019-05-24 16:44:47 410 4

原创 [软件测试]QQ表情收藏测试用例

2019-05-24 09:43:18 626

原创 在浏览器中输入url,发生了什么?

文章目录第一步、DNS域名解析(应用层协议)第二步、建立TCP连接(传输层)第三步、发起HTTP请求 (应用层)第四步:接收响应结果第五步、浏览器解析html第六步、浏览器布局渲染第一步、DNS域名解析(应用层协议)在浏览器自身的DNS缓存上搜索在操作系统的DNS缓存上搜索读取系统hosts文件,查找是否有对应IP向本地配置的首选DNS解析器发起域名解析请求此步骤完后,你想访问的目...

2019-05-08 22:48:00 235

原创 Java版本的堆排序(原理及代码)

堆排序原理: 堆排序指的是将大堆(小堆)堆顶(即下标为0)元素与堆的最后一个元素(下标为size)交换,将其余的元素再次调整成大堆(小堆),再次将堆顶(即下标为0)元素与堆的最后一个(下标为size-1)元素交换,将其余的元素再次调整成大堆(小堆)…………重复上述步骤,直至size = 0关于升序或者降序应该建立什么堆???若想排升序即最大值应该在最后面,根据堆排序原理,应该建大堆,这样将堆...

2019-05-08 16:43:08 308

原创 Lock锁详解(AQS,独占锁,可中断式获取锁,超时获取锁,理解ReentrantLock、ReentrantReadWriteLock,Condition的await、signal)

文章目录1.Lock与AbstractQueuedSynchronizer1.1 Lock简介1.2 Lock接口中的API1.3 AQS同步器AQS使用模板设计模式自己实现一个简易的Lock锁2. 独占锁2.1 独占锁的获取1.Lock与AbstractQueuedSynchronizer1.1 Lock简介锁 能够防止多个线程同时访问共享资源在Lock接口出现之前,Java程序主要是靠...

2019-05-07 18:27:43 1652

原创 一个整形数组里除了一个数字外,其余数字都出现了2次,那么如何找出这个数? 以及 一个整形数组里除了一个数字外,其余数字都出现了3次,那么如何找出这个数?

文章目录1.一个整形数组里除了一个数字外,其余数字都出现了2次,如何找出这个数?1.1 双重循环法1.2 先排序后遍历1.3 异或2.一个整形数组里除了一个数字外,其余数字都出现了3次,如何找出这个数?2.1 双重循环法2.2 先排序后遍历2.3 最佳算法1.一个整形数组里除了一个数字外,其余数字都出现了2次,如何找出这个数?1.1 双重循环法顾名思义,我们可以使用双重循环,找出那个唯一出现...

2019-05-06 15:14:59 507

原创 以太网帧格式、ARP协议、DNS、ICMP协议

文章目录1.以太网帧的格式2. ARP协议2.1 ARP协议的作用2.2 ARP数据报的格式1.以太网帧的格式源地址和目的地址是指网卡的硬件地址(也叫MAC地址),用来识别数据链路层中相应的结点,长度是48位即6个字节,是在网卡出厂时固定的帧协议类型字段有三种值,分别对应IP,ARP,RARP帧末尾是CRC校验码2. ARP协议2.1 ARP协议的作用ARP协议建立了主机IP地...

2019-05-05 18:04:31 3391

原创 IP协议(IP协议报头、MTU、网段划分、NAT技术、路由的工作过程)

文章目录1.IP协议1.1 IP协议报头IP如何将报头和有效载荷分离?IP如何有效载荷交给上层的谁?MTU对IP协议的影响1.2 网段划分为什么要划分网段?为什么要先找到目标网络?1.IP协议  我们在对网络分层的了解上知道IP实际上是为路由找方向属于网络层协议,比如说唐僧去西天取经IP地址就是西天,MAC地址则是下一个目的地的地址,比如说唐僧到了女儿国,国王说你下一站应该去火焰山,女儿国国王...

2019-04-28 21:00:19 3427

原创 String、StringBuffer、StringBuilder的区别?

  String是不可变类,也就是说String对象一旦被创建,其值将不能被改变,而StringBuffer是可变类,当对象被创建后仍然可以对其值进行修改。由于String是不可变类,因此适合在需要被共享的场合中使用,而当一个字符串需要经常被修改时,最好使用StringBuffer来实现。如果用String来保存一个经常被修改的字符串时,在字符串修改时会比StringBuffer多很多附加的条件,...

2019-04-28 15:38:52 138

原创 关键字之final、finally、finalize

文章目录1.final2.finally3.finalize1.finalfinal关键字详解final用于声明属性,表示属性不可变final用于声明方法,表示方法不可覆写final用于声明类,表示类不可被继承final属性:表示属性不可变。但是不可变有两重含义:一是引用不可变;二是对象不可变那么final到底指的是哪种含义呢?public class Test{ publ...

2019-04-28 14:12:24 236

原创 网络版聊天室(畅聊项目)

文章目录1.关于网络编程1.1 ServerSocket1.2 Socket1.关于网络编程套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信两方的一种约定,用套接字中的相关函数来完成通信过程Socket通信先建立连接,知道目标服务器的IP地址与端口号获取本连接中的输入、输出流通过IO进行数据的读取与写入关闭流服...

2019-04-25 17:34:56 1014

原创 什么是事务?事务的基本操作、事务的隔离性问题、事务的ACID特性

文章目录1.什么是事务?2.事务的基本操作2.事务操作的注意事项3.事务的隔离级别3.1 无隔离性的问题3.1.1 脏读3.1.2 不可重复读3.1.3 幻读3.2 事务的隔离级别3.2.1 设置事务的隔离级别3.2.2 查看当前的隔离级别4.事务的特性4.1 原子性4.2 一致性4.3 隔离性4.4 持久性1.什么是事务?  事务是数据库中一个单独的执行单行(Unit),它通常由高级数据库操...

2019-04-19 13:22:09 6623 1

空空如也

空空如也

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

TA关注的人

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