- 博客(70)
- 收藏
- 关注
原创 我的云相册
一.引言此项目核心就是一个HTTP服务器,可以完成对图片的增删改查能力,同时搭配简单的页面辅助完成图片上传和展示。二.项目功能图片的上传,查询,删除,以及展示操作三.技术选型1.数据库存储图片属性信息——MySql2.使用JDBC操作数据库3.前后端交互——Ajax异步提交4.文件上传------使用了第三方库commons-fileupload5.磁盘的存储优...
2020-05-04 23:04:43 3165
原创 白盒测试的几种覆盖方法
白盒测试中常见的覆盖有六种:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。下面我们就分别看看这几种不同的覆盖都分别指什么。一、语句覆盖(Statement Coverage)语句覆盖,顾名思义就是针对代码语句的嘛。它的含义是我们设计出来的测试用例要保证程序中的每一个语句至少被执行一次。通常语句覆盖被认为是“最弱的覆盖”,原因是它仅仅考虑对代码中的执行语句进行覆盖而没有考虑各种条件和分支,因此在实际运用中语句覆盖很难发现代码中的问题。举个非常简单的例子:public int f
2020-09-21 21:14:04 2924
原创 QQ登录测试用例
今日总结:1)loadrunner的使用流程:①指定测试计划 ②创建测试脚本 ③创建场景 ④运行场景 ⑤ 监控测试场景 ⑥分析测试结果2)功能测试和性能测试:功能测试也叫黑盒测试或数据驱动测试,只考虑需要测试的各个功能,不需要考虑整个代码的内部结构和代码,一般从产品的界面,架构出发, 按照需求编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测。即根据产品的需求验证系统的功能。性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统个各项性能指标进行测试。...
2020-09-16 21:22:05 2628 1
原创 剑指offer—二叉树的后续遍历序列
**题目描述:**输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。**解题思路:**首先,要明白题目中所给的条件,“二叉搜索树”,“后序遍历”。二叉搜索树具有下列性质:若左子树不为空,则左子树的上的所有节点的值均小于根节点的值;若右子树不为空,则右子树上的所有节点的值均大于它的根节点 的值。后序遍历即先访问左子树再访问右子树再访问跟,因此二叉搜索树后序序列的合法序列是,对于一个元素x(也就是根节点),如果去掉最后一个
2020-07-25 15:42:53 236
原创 剑指offer—二叉树的层序遍历
题目描述:从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思想:解决此问题需要借助一个队列来完成前置条件:先将root入队列①出一个节点②访问该节点,将该节点的节点值添加到顺序表中③将当前节点的左子树入队列,再将右子树入队列(注意判空)代码如下:public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<In
2020-07-24 15:17:00 193
原创 剑指offer—栈的压入、弹出序列
题目描述:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思想:要判定第二个序列是否可能是该栈的弹出序列,就要使用指定的入栈顺序模拟出来对应的弹栈序列,我们设入栈顺序序列式pushv, 出栈序列popv。则popv的第一个元素,一定是最后入栈,最先弹
2020-07-24 15:02:04 139
原创 剑指offer—旋转数组的最小数字
题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目解析:方法一:理论上这道题遍历一遍即可,但是我们要有效利用到题目中所给的条件从而达到高效。按照要求,因为是非递减的数组(即已经排好序的,后面的值大于等于前面的值),所以最小值要么在最开始(旋转前后数组没有发生变化,即旋
2020-07-23 09:42:55 129
原创 面试直击之JavaSE高级复习
1…Java中的反射1)说说你对Java反射的理解2.Java中的设计模式常见的设计模式有单例模式,代理模式,工厂模式,1)单例设计模式:单例设计模式有两种,分为懒汉式和饿汉式:1. public class Singleton {2. // 直接创建对象3. public static Singleton instance = new Singleton();4.5. // 私有化构造函数6. private Singleton() {7. }8.9. // 返回对象实例10.
2020-07-07 21:47:37 206
原创 详述java的hashCode()方法和equals()方法
概述在Java中存在两个比较方法,分别是:hashCode()方法和equals()方法。这两个方法都属于Object类的方法。//源码1public boolean equals(Object obj) { return (this == obj); }//源码2public native int hashCode();关于这两个方法经常会在面试中被问到,接下来我们来看看常见的关于它们两个的面试题:面试题1:你知道hashCode()方法和equals()方法吗?
2020-07-03 21:19:28 234
原创 面试直击之Linux复习
1.常见的Linux命令1)列出文件列表:ls【参数 -a il】2)创建目录和移除目录:mkdir rmdir3)显示当前所在目录:pwd4)创建空文件:touch5)查看文件内容①查看test.txt文件的前两行:head -2 test.txt②查看test.txt文件的末尾两行:tail -2 test.txt③查看文件的第i行到第j行:sed -n ‘5,10p’ test.txt④查看小文件的内容:cat test.txt⑤查看小文件内容并显示行号:cat -n test.t
2020-07-03 18:05:08 176
原创 面试直击之javaSE复习——IO
1.Java中有几种类型的流?按照流的方向:输入流(inputStream)和输出流(outputStream)。按照实现功能分:节点流(可以从或向一个特定的地方(Jiedian)读写数据,负FileReader)和处理流(是对一个已存在的流的连接和封装),通过所封装的流的功能调用实现数据读写,如Bufferedreader。处理流的构造方法总是要带一个其他的流对象做参数,一个流对象经过其他流的多此包装,成为流的连接)。按照处理数据的单位:字节流和字符流。字节流继承于inputStream和Ou
2020-07-01 22:03:55 206
原创 面试直击之JavaSE复习day5——Java异常处理
1.java中异常分为哪些种类1)按照异常需要处理的时机分为编译时异常(CheckedException)和运行时异常(RuntimeException)。只有Java语言提供了Checked异常,Java认为Checked异常都是可以被处理的异常,所以Java程序必须显示的处理Checked异常。如果程序员没有处理Checked异常,该程序在编译时就会发生错误无法编译。这体现了java的设计哲学:没有完善错误处理的代码根本没有机会被执行。对Checked异常处理方法有两种:①当前方法知道如何让处理
2020-06-30 23:45:14 222
原创 面试直击之javaWeb基础复习
http的长连接和短连接Http协议有HTTP/1.0版本和HTTP/1.1版本。HTTP1.1默认保持长连接,数据传输完了保持TCP连接不断开(不发RST包,不四次握手),等待在同域名下继续使用这个通道传输数据,相反的就是短连接。在HTTP/1.0中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,任务结束后就终端连接。从HTTP/1.1起,默认使用的就是长连接,用以保持连接特性。http get和post请求的区别GET和POST请求都是http的.
2020-06-30 14:05:34 217
原创 面试直击之javaSE复习day4——你不知道的HashMap
概述:我们都知道,要查找一个元素,如果是顺序查找,那么时间复杂度就会达到O(n),比如:顺序表,也有可能达到O(logn),如:平衡树。那么要想更快,我们就可以考虑另一种数据结构,它可以达到实践复杂度为O(1),如:HashMap。我们在面试过程中HashMap出现的次数也非常多,接下来,来看一下HashMap的一些考点。1. 什么是HashMap?HashMap是一种key-value模型,具有映射关系,通过key值可以找到 value值,并允许使用null值和null键,HashMap不保证映射
2020-06-29 12:07:51 148
原创 面试直击之JavaSE复习day3
关于多线程1.线程的几种创建方式①继承Thread类②试过实现Runnable接口继承方式扩展性不强,因为Java只支持单继承,如果一个类继承了Thread就不能继承其他的类了2.启动的方式Thread t=new Thread(继承了Thread的对象/实现了Runnable的对象);t.start();启动线程用start()方法,启动之后执行的是run方法3.怎么区分线程?‘在一个系统中有很多线程,每个线程都会打印日志,我们想区分是哪个线程打印的怎么办?可以使用
2020-06-26 23:30:43 226
原创 面试直击之javaSE复习day2
简述一下java的跨平台原理 由于个操作系统支持的指令集不是完全一致的,就会让我们的程序在不同的操作系统上要执行不同的代码,Java开发了适用于不同操作系统及位数的Java虚拟机来屏蔽不同系统之间的差异,提供统一的接口。对于Java开发者而言,只需要在不同的系统上安装对应的不同Java虚拟机,这时我们的Java程序只要遵循Java规范,就可以在所有的操作系统上面运行Java程序了。总结:Java通过不同系统,不同版本,不同位数的Java虚拟机(JVM)来屏蔽不同系统指令集差异而对外提供统一...
2020-06-25 16:04:20 207
原创 面试直击之javaSE复习day1
类初始化过程①一个类要创建实例需要先加载并初始化该类main方法所在的类先加载和初始化②一个子类初始化需要先初始化父类③一个类 初始化就是执行<clinit>()方法<clinit>()方法由静态类变量显示赋值代码和静态代码块组成 类变量分类专栏显示赋值代码和静态代码块从上到下顺序执行 <clinit>()方法只执行一次实例初始化过程①实例初始化就是执行<init>()方法<init>()方法可...
2020-06-23 20:54:31 381
原创 虚拟机类加载机制
简述java类加载机制?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,解析和初始化,最终形成可以被虚拟机直接使用的java类型。描述一下JVM加载Class文件的原理机制Java中的所有类,都需要由类加载器装载到JVM中才能运行。类加载器本身也是一个类,而它的工作就是把class文件从硬盘读取到内存中。在写程序的时候,我们几乎不需要关心类的加载,因为这些都是隐式装载的,除非我们有特殊的用法,像是反射,就需要显式的加载所需要的类。类装载方式,有两种:1.隐式装载,程序在运..
2020-06-22 00:01:58 160
原创 对象的回收
怎么判断对象是否可以被回收?垃圾收集器在做垃圾回收的时候,首先需要判定的就是哪些内存是需要被回收的,哪些对象是「存活」的,是不可以被回收的;哪些对象已经「死掉」了,需要被回收。一般有两种方法来判断:引用计数器法:为每个对象创建一个引用计数,有对象引用时计数器+1,引用被释放时计数-1,当计数器为0时就可以被回收。它有一个缺点不能解决循环引用的问题;可达性分析算法:从GCRoots开始向下搜索,搜索所走过的路径称为引用链。当一个对象到GCRoots没有任何引用链相连时,则证明此对象...
2020-06-21 23:38:01 271
原创 七大排序算法之插入排序
常见的排序算法有:插入排序,希尔排序,冒泡排序,选择排序,快速排序,归并排序,堆排序。此篇主要讲述插入排序,算法步骤:1)将待排序序列第一个元素看做是一个有序序列,把第二个元素到最后一个元素当成未排序系列2)从头到尾依次扫描未排序序列,将扫描到的每一个元素插入到有序序列的适当位置(如果待插入的元素与有序序列中的某个元素相等,则将代插入元素插入到相等元素的后面)代码如下:public class InsertSort { public static void sort (
2020-06-09 23:27:42 214
原创 JVM的垃圾回收算法
首先我们来了解一下JVM有哪些垃圾回收算法?标记-清除算法:标记无用对象,然后进行清除回收。缺点:效率不高,无法清除垃圾碎片。 复制算法:按照容量划分二个大小相等的内存区域,当一块用完的时候将活着的对象复制到另一块上,然后再把已使用的内存空间一次清理掉。缺点:内存使用率不高,只有原来的一半。 标记-整理算法:标记无用对象,让所有存活的对象都向一端移动,然后直接清除掉端边界以外的内存。 分代算法:根据对象存活周期的不同将内存划分为几块,一般是新生代和老年代,新生代基本采用复制算法,老年代采用标记整.
2020-05-29 23:14:32 193
原创 JVM的主要组成部分及其作用
1.JVM包含两个子系统和两个组件,两个子系统为Classloader(类装载)、Executionengine(执行引擎);两个组件为Runtimedataarea(运行时数据区)、NativeInterface(本地接口)。Classloader(类装载):根据给定的全限定名类名(如:java.lang.Object)来装载class文件到Runtimedataarea中的methodarea。Executionengine(执行引擎):执行classes中的指令。...
2020-05-29 22:57:45 2594
原创 Java垃圾回收机制(GC)
简述java垃圾回收机制 在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没有被任何引用的对象,并将它们添加到要回收的集合中,进行回收。GC是什么?为什么要有GC? GC是垃圾收集的意思(GabageCollection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统...
2020-05-25 23:51:53 348
原创 Java自定义类型的比较(Comparable和Comparator)
在实际开发过程中,我们不仅需要对基本数据类型之间进行比较,有时还需要比较自定义类型,那么我们怎样实现自定义类型之间的比较呢?在java中,自定义类型之间不可以通过大于,小于,等于进行比较。一般情况下,我们会通过下面两种方式实现自定义类型的比较,①实现Comparable接口 ②实现Comparator接口1.Comparable接口:下面我写一个自定义类并实现Comparable接口来演示自定义类的比较class Student implements Comparable<Stu...
2020-05-19 16:21:38 1473
原创 什么是spring?
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。轻量——从大小与开销两方面而言Spring都是轻量的。完整的Spring框架可以在一个大小只有1MB多的JAR文件里发布。并且Spring所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring应用中的对象不依赖于Spring的特定类。 控制反转——Spring通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查
2020-05-12 16:53:42 343
原创 数据库连接池
数据库连接池 数据库连接池负责分配,管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是重新建立一个。为什么要使用数据库连接池呢?数据库连接池是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出。一个数据库连接对象均对应一个数据库连接,每次操作都打开一个物理连接,使用完逗得关闭连接,这样子造成系统的性能低下。数据库连接池的解决方案是在应用...
2020-05-05 20:52:10 443
原创 mysql有哪些数据类型?
1、整数类型,包括TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT,分别表示1字节、2字节、3字节、4字节、8字节整数。任何整数类型都可以加上UNSIGNED属性,表示数据是无符号的,即非负整数。长度:整数类型可以被指定长度,例如:INT(11)表示长度为11的INT类型。长度在大多数场景是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数,而且需要和UNSI...
2020-05-03 23:05:01 323
原创 NOSQL——非关系型数据库(与关系型数据库的区别)
1.什么是NOSQL? NOSQL(NOSQL=NOT ONLT SQL),即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。 随着互联网web2.0网站的兴起。传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的的SNS类型的web2.0纯动态网站已经显得力不从心,暴漏了很多难以克服的问题,而非关系型的数据库则是由于其本身的特点得到了非常...
2020-04-28 18:56:45 984
原创 集合容器相关面试题总结
阐述ArrayList、Vector、LinkedList的存储性能和特性答: ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector中的方法由于添加了synchronized修饰,因此Vector是线程安全的容器,但性能上较...
2020-04-27 20:02:27 131
原创 Java基础面试题总结
JVM、JRE和JDK的关系JVMJava Virtual Machine是Java虚拟机,Java程序需要运行在虚拟机上,不同的平台有自己的虚拟机,因此Java语言可以实现跨平台。JREJava Runtime Environment包括Java虚拟机和Java程序所需的核心类库等。核心类库主要是java.lang包:包含了运行Java程序必不可少的系统类,如基本数据类型、基本数学函...
2020-04-27 00:03:51 203
原创 HashMap常见面试题
HashTable和HashMap的区别:1、HashMap 线程不安全,可以放空key(只能放一个)2、HashTable 线程安全,不可以放空key存放空Key的hash值放在数组的哪个位置上:存放在下标为0的位置上,也就是第一个链表的位置HashMap1.7和HashMap1.8有什么区别:1.7 底层用的是数组+链表实现的1.8 底层用的是数组+链表+转换红黑树...
2020-04-26 23:54:43 249
原创 GC是什么?为什么要有GC?
GC是什么?为什么要有GC? GC是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。Java程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面...
2020-04-22 22:42:06 347
原创 Filter(java过滤器)
1.过滤器简介web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。 过滤器的作用:一般用于完成通用的操作。如:登陆验证,统一编码处理,敏感字符过滤…… 工作原理:只要在web.xml文件配置好要拦截的客户端请求,它就会帮你拦截到请求,此时就可以对请求或响应统一设置编码,简化操作;同时还可以进行逻辑判断,如用户是否已经登录,有没有权限访问该页面等工作。它是随...
2020-04-21 17:33:55 244
原创 java异常常见面试题总结
1.Error和Exception有什么区别? 答:Error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。2.运行时异常与受检异常有何异同? ...
2020-04-18 23:30:39 227
原创 会话技术(Cookie和Session)
1.会话技术1)会话:浏览器第一次给服务器资源发送请求时,会话建立,直到有一方断开为止。一次会话中包含多次请求和响应。2)功能:在一次会话的范围内的多次请求之间共享数据。3)方式:①客户端会话技术:Cookie②服务器端会话技术:Session2.Cookie1)概念:客户端技术,将数据保存到客户端。2)原理图3)基本方法①创建Cookie对象,绑定数据...
2020-04-11 00:26:20 201
原创 Servlet的生命周期方法
1.被创建:执行init方法,只执行一次1)Servlet什么时候被创建? ①默认情况下,第一次被访问时,Servlet被创建 ②可以配置执行Servlet的创建时机 在web.xml的<Servlet>标签下配置: 如果设置在第一次被访问时创建,即设置<load-o...
2020-04-07 10:36:21 191
原创 html结合css实现一个简单的注册页面
用html结合css设计一个简单的注册页面,依据图片如下:代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>注册页面</title> <style> *{ ...
2020-04-02 19:18:37 858
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人