自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 测试分类

研发阶段:单元测试,集成测试,系统测试,验收测试(重要)实施组织:α 与 β(概念,三个区别,不一定要掌握)按是否执行:静态测试 和 动态测试(静态测试里面包含文档测试和代码测试)按是否手工:手工测试 和自动化测试是否查看代码: 黑盒,白盒,灰盒按地域:本地化测试,国际化测试按测试对象划分一. 金字塔(越到下层越难)UI界面层功能验证测试兼容性与用户测试(验收测试)...

2019-08-26 21:17:44 316

原创 Mysql—事务的特性

(一)事务具有ACID特性。分别为:原子性Atomicity一致性Consistency隔离性Isolation持久性Durability原子性原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。一致性一致性是指事务必须使数据库从一个一致性状...

2019-08-25 17:45:58 262

原创 TCP的三次握手,四次挥手

TCP协议段格式有6位标志位:URG:紧急指针是否有效。ACK:确认号是否有效。PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走。RST:对方要求重新建立连—复位报文段。SYN:请求建立连接—同步报文段。FIN:通知对方,本端要关闭了—结束报文段。三次握手首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端...

2019-08-22 21:48:14 310

原创 传输层—UDP/TCP的区别

(一)传输层的作用传输层关注的是点对点之间的传输。只需要关注发送者和接收者就可以,中间的过程一概不管。(二)UDP协议——用户数据报协议(全双工)UDP是一个比较简单的协议——全双工(双向通信)。UDP的特点:(1)无连接:只需要知道对端的IP和端口号就开始传输,不需要建立连接。(2)不可靠传输:没有确认机制,没有重传机制。一旦发生故障无法传输到对方,UDP协议层也不会给应用...

2019-08-22 19:53:17 272

原创 应用层(HTTP协议)

应用层应用层和应用程序直接想换,这是和程序员打交道最多的地方。自定制协议(不重要)(1)约定好客户端请求(Request)包含什么信息,服务器响应(Response)包含什么信息(2)约定好数据按照什么格式来组织,本质上互联网传输的都是(二进制)字符串(序列化/反序列化)。已有协议(重要)HTTP/HTTPS:当前使用最广泛 的应用层协议(没有之一)URL:用来描述唯一资源的一个标...

2019-08-15 22:46:07 390

原创 网络协议和协议分层

什么是网络协议网络协议是为计算机网络中进行数据交换而建立的规则,标准,或约定的集合。可以理解为使计算机不再独立工作,约定一种固定的格式,让多台计算机进行数据交互。网络协议的分层(1)OSI七层模型(2)TCP/IP四层模型以下是OSI七层模型和TCP/IP四层模型的对比。TCP/IP模型为五层的时候有物理层,为四层的时候没有物理层。相比较而言,OSI七层模型比较繁琐并且实用性不...

2019-08-15 17:28:09 691

原创 双向链表的实现

双向链表:既能指向前一个节点,也能指向后一个节点。双向链表的图示双向链表的方法实现

2019-08-10 15:58:43 765

原创 常见排序的时间复杂度,空间复杂度,稳定性总结

2019-08-09 16:19:03 1172 1

原创 7--归并排序

思想:将待排序序列分为两个子序列,再将两个子序列递归的继续分下去,直到序列有序,即序列中只有一个元素,再把所有有序子序列逐层合并为一个整体有序序列。(每次合并是将两个有序表合并成一个有序表)。图示:具体实现:把待排序序列分为两个子序列,然后让子序列继续分子序列。把由同一个序列分出来的两个子序列合并。申请内存空间,空间大小是两个已排序序列的和,用来暂时存放合并后的序列;设置两个...

2019-08-09 15:36:22 244

原创 6--快速排序(基准值法)

思想:选择一个基准值(选择区间最右边的数作为基准值)遍历整个区间,每个数都和基准值作比较,并且发生一定交换遍历结束后,使得比基准值小的数(包括等于)都在基准值的左边比基准值大的数(包括等于)都在基准值的右边分治算法分别对左右两个小区间进行同样的方式处理直到:小区间的size == 0 或者 size == 1(有序)图示:具体实现:代码实现:package www.so...

2019-08-08 22:23:54 3515

原创 5--冒泡排序

思想:有一个数值数组,每次从下标为0的元素开始,与后一个元素进行比较,把值较大的元素交换到后面,然后再与下一个元素比较,交换…直到与当前数组的最后一个元素比较完。所以一趟排序是把当前数组中的最大值交换到最后。图示理解:具体实现:我们称数组中为排序的部分为无序数组,排好序的部分为有序数组。定义变量i表示有序数组的长度,定义变量j表示无序数组的长度,则j=array.length-i。...

2019-08-08 16:59:55 230

原创 覆写Object类中的equals()与hashCode()方法实现HashSet的重复元素判断

TreeSet的重复元素判断怎么实现TreeSet类可以实现Comparable接口并覆写compareTo()放啊完成重复元素判断与排序。但是HashMap与Comparable接口没有任何关系,因此可以覆写Object类中的equals()与hashCode()方法实现HashSet的重复元素判断。equals()与hashCode()方法hash码: public native in...

2019-08-08 09:37:31 282

原创 Comparable接口中的compareTo()方法实现TreeSet的重复元素判断与元素排序

TreeSet的重复元素判断依靠Comparable接口直接完成。TreeSet能够进行排序,实际上是对对象数组的排序,如果要对对象数组排序,对象所在的类需要继承Comparable接口并且覆写CompareTo()方法。如果使用Comparable接口进行大小关系匹配,所有属性必须全部进行操作。...

2019-08-08 09:06:03 454

原创 文件与目录的操作

File:文件操作类File是一个类,可直接实例化对象;File有两个构造方法:构造方法public File(String pathName)设置文件路径(常用)public File(String parent,String child))设置父路径和子路径文件中的方法方法作用boolean creatNewFile(...

2019-08-06 22:47:17 153

原创 文件拷贝

目的:把源文件中的内容拷贝一份至目标文件。思想:定义一个类完成所有的前提条件,和文件拷贝的具体内容;因为要把源文件的内容拷贝到目标文件,操作的是文件的内容,所以需要使用输入输出流,字节流使用范围比较广泛,此处使用字节流;字节输入流InputStream,字节输出流OutputStream;前提1:先从源文件中读取内容,此时要保证的是源文件必须存在,只有源文件存在才能从中读取内容...

2019-08-06 22:14:50 270

原创 java—生产者与消费者模型

生产者与消费者模型生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队 列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从 阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。 这个阻塞队列就是用来给生产者和消费者解耦的。纵观大多数设计模式,都会找一个...

2019-08-04 21:37:35 160

原创 java—ThreadLocal

(一)ThreadLocal的介绍与使用ThreadLocal介绍:(1)ThreadLocal用于提供线程局部变量。在多线程环境可以保证各个线程里的变量独立于其它线程里的变量。(2)ThreadLocal的作用和同步机制的作用相反,同步机制是为了保持数据的统一性(共享性),而ThreadLocal是为了保持每个线程里数据的独立性。(3)可以理解为ThreadLocal类型的变量,其在...

2019-08-02 15:51:20 156

原创 java—线程同步处理(synchronized,ReentrantLock处理同步问题)

(一)同步问题不同步操作:当有多个线程启动时,所有的代码是依次进入到run()方法中的。真正进入到方法的对象可能是多个,也可能是一个。进入代码的顺序可能有差异,但是总体的执行是并发执行。线程不安全。同步操作所有的线程不是一起进入到方法中执行,而是按照顺序一个一个进来。线程安全。(二)synchronized处理同步问题同步代码块同步代码块在方法里面使用,也就是说依然可能有多...

2019-08-01 22:44:44 189

原创 java—多线程的常用方法(线程命名与获取,线程睡眠,线程让步,join()方法,线程停止,线程优先级)

1. 线程命名与获取2. 线程睡眠(sleep()方法)3. 线程让步(yield()方法4. join()方法5. 线程停止6. 线程优先级

2019-08-01 18:51:20 440

原创 java—多线程实现的三种方式

继承Thread实现多线程(1)直接继承Thread类,覆写run()方法。(2)覆写run()方法之后,不能使用实例化对象直接调用。应该调用Thread类中的start()方法启动线程。public synchronized void start()此方法会自动调用线程的run()方法。(3)注意:每一个线程只能启动一次,若重复启动,会产生异常,但是是一个RuntimeExceptio...

2019-08-01 15:33:23 139

原创 java—进程与线程的区别

进程:操作系统内一个程序的执行周期。单进程:在一个时间段只有一个程序执行。多进程:在一个时间段有多个程序执行。线程:一个程序中有多个任务,每一个任务就是一个线程。线程的应用:一个服务器接收多个并发请求。高并发:访问的线程量非常非常高。高并发带来的问题:服务器内存不够用,无法处理新的请求。进程与线程的联系:没有进程就没有线程,进程一旦终止,其内的线程也将不复存在。多进程与多线程区别...

2019-08-01 14:39:22 107

原创 java—使用反射对类进行操作(Class对象获取类名,包名,父类,接口,构造方法,普通方法,属性)

(一)Class对象获取类名,包名,父类,接口前提条件:有两个接口IMessage,SystemEdition一个父类Father一个子类Son继承父类,实现两个接口IMessage,SystemEditionpackage www.fanfaninterface IMessage{}interface SystemEdition{}class Father{}...

2019-07-31 19:31:43 5156 1

原创 java—反射之Class对象的三种获取方式,通过反射创建类的实例化对象

(一)对反射的认识反射:对对象的反向处理,通过对象获取对象的来源信息(即可以知道这个对象是通过什么类型实例化出来的)。通过对象获取创建对象的类型信息。对类型(类)的一个抽象,就是JDK中的Class类;Class也是一个类,用来描述其他类的信息。(二)Class对象的三种获取方式序号方式1通过对象的getClass()方法获取Class对象。2通过类名...

2019-07-31 12:47:52 3962

原创 数据结构—栈和队列的实现

(一)栈栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。栈一般使用数组实现。压栈:栈的插入操作,在栈顶进行。出栈:栈的删除操作,也在栈顶进行。图示:自己实现栈中的一些方法:方法作用isEmpty()判断栈是...

2019-07-30 17:05:41 173

原创 java中Lambda表达式的使用

Lambda是JDK1.8推出的重要新特性。Lambda的使用格式:(1)方法中具有单行语句:(参数) ->单行语句;(2)方法中具有多行语句:(参数) ->{}使用Lambda时的要求:(1)在实现接口时使用;(2)接口必须只有一个方法,如果有两个方法,则无法使用函数式编程。(3)如果现在某 个接口就是为了函数式编程而生的,最好在定义时就让其只能够定义一个方法,所...

2019-07-29 12:32:59 118

原创 java—注解(Annatation)

(一)注解的介绍注解:(也被称为元数据),为我们在代码中添加信息提供了一种形式化的方法,使我们可以在稍后某个时刻非常方便的使用这些数据。注解在一定程度上是把元数据与源代码文件结合在一起,而不是保存在外部文档中。它们可以提供用来完整描述程序所需要的信息,而这些信息是无法用Java来表示的。注解是我们能够以将编译器来测试和验证的格式,存储有关程序的额外信息。注解的优点:更加干净易读的代码以...

2019-07-29 09:44:39 656

原创 java—枚举的使用(enum)

(一)枚举的介绍与使用在JDK1.5中添加了一个新特性,即 enum 关键字。使用enum关键字可以创建枚举类。枚举类型的实例是常量,按照命名规则使用大写字母。使用enum关键字定义的枚举类本质上就相当于一个Class定义的类,继承了java.lang.Enum父类。所有的枚举类默认继承于Enum类.创建enum时,系统会自动创建toString()方法,用来直接显示enum实例的名...

2019-07-28 23:25:36 351

原创 java—泛型

(一)泛型的基本概念泛型指的就是在类定义的时候并不会设置类中的属性或方法中的参数的具体类型,而是在类使用时再进行定义。如果要想进行这种泛型的操作,就必须做一个类型标记的声明。泛型只能接受类,所有的基本数据类型必须使用包装类(二)泛型类泛型类的基本语法:class MyClass< T > {T value1;}注意事项:(1)尖括号 <> 中的...

2019-07-27 19:28:32 132

原创 java—可变参数和foreach循环

(一)可变参数可变参数存在的意义:处理在方法中使用任意多个参数的问题。当有多个同类型的参数的时候,我们最常见的是使用数组,但是数组长度固定,具有一定的限制,现在在JDK1.5之后,出现了一种新的特性:可变参数。可变参数的使用像数组一样,但是没有参数个数的限制。可变参数的格式:public [static] [final] 返回值 方法名称([参数类型 … 参数名称]){}可变参数中使...

2019-07-27 18:38:51 1426

原创 java—栈和队列

(一)Stack栈栈 通常是指“后进先出”(LIFO)的容器栈 中常用的一些方法方法作用push(E e)压栈peek()返回栈顶元素pop()出栈举例1:package www.fanfan.com;import java.util.Stack;public class StackDemo { public static v...

2019-07-26 20:49:08 206

原创 数据结构—树与二叉树的概念

树的概念:(1)数据结构中的树形结构是一种非线性的数据结构,它是一棵倒挂着的数,即根朝上,叶子朝下。(2)每个节点有0或多个子节点;(3)没有父节点的节点称为根节点;(4)每个子节点有且仅有一个父节点;(5)没有子节点的节点称为叶子节点。节点的度:一个节点的子树的个数;叶节点:度为0的节点;非叶子节点:度不为0的节点;父节点:若一个节点含有子节点,则这个节点称为其子节点的父...

2019-07-26 16:33:00 654

原创 java—迭代器(Iterator,ListIterator及其使用)

(一)迭代器的介绍迭代器存在的意义:使用容器,必须对容器的确切类型进行编程。若遇到这种情况:原本是对List进行编码的,但是后来发现能够把相同的代码应用于Set,将会非常方便。此时问题就是如何不重写代码就可以应用于不同类型的容器。—使用迭代器就可以达到这个目的。迭代器是一个对象,它的原理是工作并选择序列中的对象,而客户端程序员不必知道或关心该序列底层的结构。迭代器通常被称为轻量级对象,创...

2019-07-26 10:13:49 1469 1

原创 java—List接口

(一)List的简单介绍List接口实现了Collection接口,在Collection的基础上添加了大量的方法,使得可以在List的中间插入和移除元素。有两种类型的List(1)ArrayList:在List的插入和移除元素时较慢(2)LinkedList:通过较低的代价在List中间进行插入与删除操作,提供了优化的顺序访问。但是随机访问方面比较慢。特性集较ArrayList更大。...

2019-07-25 21:44:03 128

原创 java容器的简单分类图

对简单容器进行分类:由图可以看到,实际上只有四种容器:Map,List,Set,Queueueue;常用的容器用红色粗线表示;点线框表示接口;实线框表示普通的类(具体的类);带有空心箭头的虚线表示一个特定的类实现了一个接口;带有实心箭头的许仙表示某个类可以生成箭头所指方向类的对象。...

2019-07-25 17:50:29 648

原创 java—Collection接口

(一)基本概念Collection:Collection是一个独立元素的序列(一种存放一组对象的方式)。这些元素都服从一条或多条规则。(1)List:必须按照插入的顺序保存元素;(2)Set:不能有重复元素;(3)Queue:按照排队规则来确定产生对象的顺序(通常与其被插入的顺序相同)。Collection接口是抽象的(所有的接口都是抽象类),不能直接实例化,只能利用其子类进行实例化。...

2019-07-25 17:02:33 145

原创 java—容器(1)

(一)容器的概念创建命名的引用每次只能持有一个对象。但是在编程中,我们需要在任意时刻和任意位置创建任意数量的对象。为了解决这一问题,我们首先可以想到对象数组,对象数组可以保存多个对象,但是对象数组有固定的尺寸,而我们在写成程序时并不知道需要多少个对象,因此使用数组就会受限。为此,java实用类库中提供了一套相当完整的容器类来解决问题。其中基本类型是List,Set,Queue,Map。这些对...

2019-07-25 15:52:26 109

原创 java—异常处理

(一)异常的概念异常情形:异常情形是阻止当前方法或者作用域继续执行的问题。异常情形与普通错误的区分抛出异常后发生的事情:(1)首先,同java中其他对象的创建一样,将用new在堆上创建异常对象;(2)然后,当前执行路径被终止(不能继续执行下去了),并且从当前环境中弹出对异常对象的引用;(3)此时,异常处理机制管理程序,并且寻找一个恰当的地方来继续执行程序。(这个恰当的地方...

2019-07-25 09:51:47 150

原创 'mysql' 不是内部或外部命令,也不是可运行的程序或批处理文件。

mysql已经安装好,环境变量也已经配置完成,mysql在服务器中也已经开始运行,但是当执行 windows+r 输入 cmd 执行 mysql -u root -p 的时候,却无法进入mysql命令行。出现如下报错:’mysql’ 不是内部或外部命令,也不是可运行的程序或批处理文件。处理方法如下:此时不能执行 windows+r 输入 cmd 执行 mysql -u root -p ;...

2019-07-23 22:50:11 2434 2

原创 对象在不同位置的初始化

我们知道类中局部变量必须初始化,成员变量可以自动初始化,对象引用可以被自动初始化为null,但是此时引用不能调用任何其他方法。因此要想使用引用的时候就必须进行初始化。可以在以下四个位置进行初始化:在定义对象的时候(即定义对象引用的时候),它们总是在构造方法被调用之前使用。在类的构造方法中实例化。使用实例初始化。惰性初始化。(在使用这些对象之前初始化)在生成对象不值得或不必要...

2019-07-22 22:14:43 162

原创 MySQL数据库—视图

(一)视图的概念视图是一个虚拟表。是由查询产生的。把查询语句的结果当作一个视图。视图的数据变化会影响到基表,基表的数据变化也会影响视图。(一般不去修改视图——可赋予视图权限)(二)视图的应用什么时候会使用视图呢?当别人要获取数据库中的某些信息,可以根据他想要的信息创建一个视图,而不是把整个数据表给他,这样存在很高的风险。视图的使用和表一样,除了试图的创建要基于表的查询之上。(...

2019-07-22 11:59:29 173

空空如也

空空如也

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

TA关注的人

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