自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 面试-sleep()和wait()的区别

其实理论上 wait 和 sleep 完全是没有可比性的,因为一个是用于线程之间的通信的,一个是让线程阻塞一段时间,唯一的相同点就是都可以让线程放弃执行一段时间。用生活中的例子说的话就是婚礼时会吃糖,和家里自己吃糖之间有差别。说白了放弃线程执行只是 wait 的一小段现象。当然为了面试的目的,我们还是总结下:1、wait 之前需要请求锁,而wait执行时会先释放锁,等被唤醒时再重新请求锁。这个...

2020-03-25 10:40:39 246

原创 JAVA多线程之阻塞队列

什么是阻塞队列?多线程环境中,通过队列可以很容易实现数据共享,比如经典的“生产者”和“消费者”模型中,通过队列可以很便利地实现两者之间的数据共享。阻塞队列相当于一个缓冲区,生产者和消费者可以经过它来通信。那到底是怎样进行阻塞的?阻塞添加:当队列满的时候,队列会阻塞插入元素的线程,直至队列不满阻塞移除:在队列为空时,队列会阻塞移除元素的线程,直至队列不满队列的常用方法抛出异常:Add:...

2020-03-25 10:23:21 324

原创 多线程保证安全机制volatile

先来了解一下原子性long a=10lint 是按32位处理,long是按64位,高32位为0,低32位为10被volatile修饰的变量具备可见性:意思就是说,在多线程环境下,某个共享变量如果被其中一个线程给修改了,其他线程能够立即知道这个共享变量已经被修改了,当其他线程要读取这个变量的时候,最终会去内存中读取,而不是从自己的工作空间中读取。volatile long a;a=10L/...

2020-03-24 19:58:23 218

原创 多线程保证安全的机制Synchronized

Synchronized是java的内置锁,每个JAVA对象都可以用作一个实现同步的锁,线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁加锁:实现两个线程之间互斥1、作为方法的修饰符,可以写在定义的方法之前:这个方法在同一时刻只能被一个线程访问,从而保证了多线程访问的安全性。然而,当一个方法体规模非常大时,把该方法声明为synchronized会大大影响程序的执...

2020-03-24 19:38:14 168

原创 你想知道关于引用都在这儿了(分类以及解引用)

数据类型分为基本数据类型和引用数据类型变量有3种形态1、局部变量/形参:存放在栈帧中(栈)2、属性:存放在对象中(堆)3、静态属性:存放在类(方法区)引用分类:接口类型, 类类型、数组类型类类型的引用(三种)1、类类型的引用=null–>类类型的引用=new 类();2、类类型的引用=该类的对象–>类类型的引用=new 类();3、类类型的引用=该类子类的对象...

2020-03-24 19:16:58 214

原创 面试重点之线程安全(概念和因素)

概念:多线程程序的运行结果可以保证100%正确性,才算安全1、多线程之间有共享资源2、多线程之间有针对共享资源的修改变量有两种类型,一种是基本数据类型,一种是引用数据类型(变量的类型无法决定该变量是否是线程之间共享的)变量的形态:形态才是决定变量存放位置以及是否是线程共享的主要因素形参和局部变量存放在栈帧里,它们是线程之间私有的属性存放在对象里,对象存放在堆中,所以是线程之间共享的静...

2020-03-23 18:38:09 227

原创 线程的常用方法

run()和start()这是多线程最常用的方法了,把需要并行处理的代码放在run()中,run方法必须是public权限,返回值为void。start()方法启动线程自动调用run()方法public class Case3 { private static class A extends Thread{ @Override public void r...

2020-03-22 21:07:37 187

原创 初识多线程 (创建,属性)先扫个盲

先来两句经典语录进程是资源分配的最小单位线程是资源调度的最小单位什么意思呢?比如说银行来了很多顾客,忙不过来了,这时行长张三叫来了李四王五,这时李四王五张三就是线程,人是张三叫的,他就是主线程,来的那一个个顾客就是一个个进程。进程和线程的最大区别就是线程间是数据共享的。什么时候用线程?1、有可能提升速度的时候(原理:多一个调度单位,就多一个机会抢到cpu)2、线程有极限,如果操作系统中...

2020-03-22 20:18:20 192

原创 JDBC连接数据库的过程

一、首先要准备参数(用户、密码、url)二、加载JDBC驱动三、创建数据库的连接四、创建一个preparedStatement要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3 种类型:1、执行静态SQL语句。通常通过Statement实例实现。2、执行动态SQL语句。通常通过PreparedStatement实例实现。3、执行...

2020-03-14 21:35:09 582

原创 linux中查看进程和端口号

PS命令①、ps -a:查看所有②、ps -u:以用户的格式显示③、ps -x:显示后台进程运行参数④、ps -d:创建人、创建时间、进程号

2020-03-14 20:47:10 874 1

原创 maven的优点及常用命令

优点:对项目中jar包依赖的统一管理,如果不使用maven,项目中用到的jar包需要自己下载,然后放到项目的lib目录,使用maven构建项目,项目中就会有一个pom文件作用:对项目中的所有jar包依赖进行统一管理,(具体生成war包还是jar包,在pom中指定)maven常用指令1、maven clean对项目进行清理,清理的过程中会删除target目录下编译的内容。2、mave...

2020-03-14 20:20:54 146

原创 【测试用例练习】三、登录测试

功能测试1、什么都不输入,点击提交按钮,看提示信息。2、输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。3、输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。4、登录成功后能否能否跳转到正确的页面5、用户名和密码,如果太短或者太长,应该怎么处理6、用户名和密码,中有特殊字符(比如空格),和其他非英文的情况7、是否会自动保存用户名8、登陆失败后,不能记录密...

2020-03-12 18:18:50 2299 1

原创 【测试用例练习】二、手机app测试点

功能测试1.app安装完成后试着运行,能否正常打开软件2、打开后有没有加载状态的进度提示3、页面间的切换是否流程,4、按需求文档测试,功能是否都完全实现5、app使用过程中有电话打进来在切回去页面是否丢失6、是否支持离线浏览7、没有网络时能否打开8、锁屏在解锁还能否正常浏览9、提示有更新时能否正常更新10、能否正常的安装卸载兼容性测试1、android / ios 版本的兼...

2020-03-12 18:02:47 999

原创 【测试用例】一、两部电梯测试用例(单部也可用,都差不多)

测试项目——电梯一、需求测试:查看电梯使用说明书,安全说明书等。二、 功能测试:1、按钮测试:上升键和下降键,电梯的楼层按钮是否正常;2、 开关键是否正常,报警装置是否安装,报警电话是否可用;3、通风状况如何,是否有手机信号;4、电梯内的灯光是否亮着5、在电梯上升过程中的测试,比如电梯在1楼,有人按了10楼,在上升到5楼的时候,有人按了8楼,电梯会不会停;6、在电梯下降过程中的测...

2020-03-11 23:51:26 1978 4

原创 测试报告应该包括哪些内容?

1、测试背景说明2、测试范围说明3、测试环境说明4、测试方法说明5、测试结果与缺陷分析,主要从功能性能方面来分析6、测试结论与建议7、质量或风险评估...

2020-03-11 23:38:17 10830

原创 输入URL会发生什么

一、DNS解析浏览器能访问的资源都是通过IP访问的,但是为了方便我们记忆和使用网站都是使用的域名,所以当我们输入一个域名的时候就需要浏览器进行域名解析。浏览器解析域名的流程是a、先从浏览器缓存中查找是否有该域名(浏览器缓存),b、浏览器缓存中没有则从系统缓存中查找(系统缓存),c、系统缓存中没有则从路由缓存中查找,(路由器缓存)d、路由缓存没有则从本地DNS服务器中查找,(ISP DNS...

2020-03-10 23:53:12 472

原创 ==和equals的区别?哈哈 是不是好像会又好像不会呢

1、==操作符既可以用于比较基本的数据类型,也可以用于比较对象, 如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等;如果作用于引用类型的变量,则比较的是所指向的对象的地址。而equals只可以用于对象之间的比较2、对于equals方法,注意:equals方法不能作用于基本数据类型的变量,equals继承Object类,比较的是是否是同一个对象。如果没有对equals方法进行重写,...

2020-03-10 14:14:05 105

原创 左连接和右连接

SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。比如下面这两张表LEFT JOIN(左连接) :返回包括左表中的所有记录和右表中联结字段相等的记录。即使右表中没有匹配,也从左表返回所有的行。RIGHT JOIN(右连接):返回包括右表中的所有记录和左表中联结字段相等的记录。即使左表中没有匹配,也从右表返回所有的行。内连接:显示左边右边共有的...

2020-03-10 10:51:29 7105

原创 带你认识抽象类和接口的区别

1、抽象类要被子类继承,接口要被类实现,一个类只能继承一个抽象类,但可以实现多个接口2、接口只能做方法声明,抽象类可以做方法声明,也可以做方法实现3、接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。4、修饰符不同,抽象方法可以有public,protected,default,j接口默认public5、实现抽象类的方法时, 如果方法是抽象的,子类必须重写抽象的方法. 如果...

2020-03-09 22:55:11 273

原创 【数组和指针】以及【指针和引用】的区别

1、概念不同数组:数组是用于储存多个相同类型数据的集合。指针:指针相当于一个变量,但是它和不同变量不一样,它存放的是其它变量在内存中的地址。2、空间分配:数组是静态分配,且分配的空间是连续的;指针是动态分配,分配的空间不一定是连续的。3、大小不同(求sizeof)数组:数组所占存储空间的内存:sizeof(数组名)数组的大小:sizeof(数组名)/sizeof(数据类型)指针:在...

2020-03-09 22:43:11 375 3

原创 简单的SQL语句

基本建库建表等语句一、库的操作(创建、使用、删除)创建create database database-name;例子:创建年级数据库 create database grade;使用use database-name;例子:用上面建好的数据库 use grade;删除drop database dbname;例子:删除上面建好的库 drop database gr...

2020-03-05 13:55:58 169

原创 事务的四大特性

什么是事务?事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务。原子性事务中的全部操作在数据库中是不可分割的;对于其数据修改,要么全都执行,要么全都不执行。一致性事务在完成时,必须使所有的数据都保持一致状态。比如两个杯子倒水,A往B里倒一点,B往A里倒一点,到最后,A杯跟B杯加起来的水是没...

2020-03-04 23:00:10 326

原创 【Java关键字总结】(四)用于定义建立实例及引用实例,判断实例的关键字

new程序员没女朋友了,new一个?哈哈哈,其实就是创建一个Person p=new Person(“bite”,2,4);通过类来生产一个对象。语法格式类名称 对象名称 =new 类名称();这条语句一共做了三个工作a、通过new计算对象需要的内存大小,开辟空间初始化为0b、Person(“bite”,2,4)是调用构造方法,对属性初始化c、Person p:构造方法调用结束,返...

2020-03-04 20:50:52 513

原创 【Java关键字总结】(三)描述类与类之间的关系entends & implements

extends1、extends是继承父类(final修饰的和抽象类除外),2、Java中不支持多重继承,但是可以用接口来实现,所以引出了implements。3、java不允许多继承,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了比如class A extends B implements C,D,Eimplementsimplements是一个类实现...

2020-03-04 20:13:35 374

原创 【Java关键字总结】(二)用于定义类、函数、变量修饰符的函数

abstract修饰类:用abstract修饰的类表示抽象类,抽象类不能被实例化,但可以有构造方法,构造方法可以被子类构造函数调用,需要子类继承并覆盖其中的抽象方法,一个子类只能继承一个抽象类。修饰方法:用abstract修饰的方法表示抽象方法,抽象方法没有方法体,只声明,不实现。子类继承抽象类的话,必须覆写抽象类的所有抽象方法,否则他还是抽象类。抽象关键字不能private,static,f...

2020-03-04 19:47:36 245

原创 【Java关键字总结】(一)用于定义访问权限修饰符的关键字

private(私有的)private:是访问权限最低的访问限制符,被它修饰的变量只能访问本类的对象,即除class自身外,其他都不得使用。可以修饰成员变量,成员方法,构造方法,被private修饰的成员只能在其修饰的本类中访问,在其他类中不能调用,但是被private修饰的成员可以通过set和get方法向外界提供访问方式default(默认的)defalut:即不写任何关键字,它可以修饰...

2020-03-04 18:42:58 530

原创 从浅入深看透——索引

什么是索引?为什么要有索引?简单来说,比如你想在图书馆借一本莫言的小说,一楼存的数学类,二楼医学类,三楼文学类。在三楼一排存的徐志摩的,二排存的莫言的,三排存的林徽因的。索引就相当于引导,有人告诉你三楼二排存的莫言的,你就不用从一楼一本一本的去往上找,这就大大增加了查找速度。来官方一点:索引能快速找出在某一列中有一特定值的行。不使用索引,mysql必须从第一条记录开始查找,直到找到相关的行。如...

2020-03-04 15:13:39 198

原创 【剑指offer】 数组中只出现一次的数字

思路:用set集合的方法去掉重复元素,把不同的两个用add方法加到set里面,再用ArrayList的get方法取得import java.util.HashSet;import java.util.Set;import java.util.ArrayList;public class Solution { public void FindNumsAppearOnce(int []...

2020-03-03 23:46:35 93

原创 黑盒 白盒?有啥区别呢?

先来看概念定义白盒测试:指结构性测试,是指实际运行被测程序,通过程序的源代码进行测试而不使用用户界面。黑盒测试:又称功能测试、在黑盒测试中主要关注被测软件的功能实现,而不关注内部逻辑。再来看区别区别一:测试对像不一样黑盒的测试对象主要是功能,而白盒测试的目的是通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致,而不顾它的功能。区别二:测试方法不一样黑盒:等价类划分、边...

2020-03-02 22:52:48 9809

原创 数据库删除语句drop和delete和truncate

一、 删除内容的不同:drop:用于删除数据库(drop database 数据库名称)、删除数据表( use 数据库名称 drop table 数据表1名称,数据表2名)或删除数据表字段(use 数据库名称 alter table 数据表名称 drop column 字段名(列名称))。delete:删除数据表中的行(某一行或所有行)二、语句类型的不同:delete:是dml(数据库操作...

2020-03-02 21:30:31 4736

原创 java三大集合List Set Map

List集合一、Arraylist:实现了基于动态数组的数据结构,因为地址连续,一旦数据存储好了,查询操作效率会比较高,但因为地址连续, ArrayList要移动数据,所以插入和删除操作效率比较低。它是线程不安全的二、LinkedList:基于链表的数据结构,地址是任意的,插入和删除速度快,访问速度慢。适用于要头尾操作或插入指定位置的场景。也是线程不安全的。三、Vector:与ArrayLi...

2020-03-02 18:03:44 132

原创 【剑指pffer】栈的压入弹出序列

思路:新创建一个栈,把第一个数组压栈,如果第二个数组的元素和栈内的元素相等就弹出,遍历完之后,如果栈内为空,则说明是它弹出的一个序列import java.util.ArrayList;import java.util.Stack;public class Solution { public boolean IsPopOrder(int [] pushA,int [] popA) {...

2020-03-02 13:37:46 159

原创 【剑指offer】:两个栈实现队列

栈:先进后出 队列:先进先出先将元素压入stack1,再反序到stack2中,在·一一弹出,就实现了队列import java.util.Stack;public class Solution { Stack<Integer> stack1 = new Stack<Integer>(); Stack<Integer> stack2 =...

2020-03-01 22:23:02 74

原创 【剑指offer】实现包含min函数的栈

思路:定义两个栈来实现,比如放第一个数字3,stack1正常添加,stack2为空,此时也正常添加,添加第二个数字2,stack1添加,stack2不添加,添加第三个数字1,stack1正常添加,由于(node < stack2.peek()),stack2也添加,最终pop出来的stack2.peek()就是最小的import java.util.Stack;public class ...

2020-03-01 18:27:48 111

原创 【牛客网】反转链表

public class Solution { public ListNode ReverseList(ListNode head) { ListNode result=null; ListNode cur=head; while(cur!=null)//一直给新链表做头插 { ListNode nex...

2020-03-01 17:53:37 177

原创 输出链表的倒数第k个节点

public class Solution { public ListNode FindKthToTail(ListNode head,int k) { if(head==null||k<0){ //条件不符合直接返回空 return null; } ListNode cur=head; int ...

2020-03-01 17:48:20 128

原创 你了解敏捷开发吗?

不敏捷的模型——>瀑布模型分为5个阶段:需求分析、设计、编码、测试和维护。①:需求分析阶段通常定义系统需求;②:设计阶段通常确定系统使用什么数据库,系统模块的划分,各个模块的功能;③:编码阶段用编程语言实现设计阶段的功能;④:测试阶段主要测试功能是否实现;⑤:维护阶段是根据用户新的需求重新修改系统,使系统运行正常,更加稳定优点: A强调开发的阶段性; B强调早期计划及需求调查;...

2020-03-01 16:44:19 973

原创 【项目:图片服务器】——》(2)项目的测试用例编写及具体测试

测试用例的编写功能性测试上传图片(1)上传图片是否支持中文名称(2)图片尺寸大于最大允许值,上传时应该显示适当的错误消息(3)上传成功之后数据库是否将图片属性正常存储(4)符合要求的格式如PNG中间带有空格能否正常上传(5)重复名称的图片能否正常上传(6)检查上传的图片文件类型外的其它文件时(例如txt、doc、pdf、exe等等),应该显示适当的错误消息(7)上传情况是否受网络...

2020-03-01 13:38:05 445

原创 【项目:图片服务器】——》(1)项目简介及功能实现部分

项目描述项目背景在很多场合我们需要上传和发送图片,比如写博客时,所以我们可以构建一个HTTP服务器来完成这个功能,通过这个服务器为连接服务器的数据库上的每个图片生成一个特定的URL,通过这个URL我们就可以完成图片的发送,就可以解决很多需要图片而不支持发送图片的场景。项目描述本项目的结构分为两部分,数据存储部分和服务器模块,使用MySQL存储图片的属性,将图片内容保存到本地磁盘,服务器向外...

2020-03-01 11:32:43 305

原创 Servlet知识大全

什么是servlet概念:Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。定位:Java Servlet用Java编写的服务器端程序(web application)。作用:其主要功能在于交互式地浏览和修改数据,生成动态Web内容。理解:狭义的Servle...

2020-03-01 09:29:39 202

空空如也

空空如也

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

TA关注的人

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