每天一道面试题
一生所Ai
时间是一位伟大的作者,他会给每个人写出完美的结局来。
展开
-
string stringbuffer stringbuilder 区别
这三个类之间的区别主要是在两个方面,即运行速度和线程安全这两方面。首先说运行速度,或者说是执行速度,在这方面运行速度快慢为:StringBuilder > StringBuffer > String String最慢的原因: String为字符串常量,而StringBuilder和StringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,...原创 2019-01-04 10:55:41 · 128 阅读 · 0 评论 -
什么是数据库连接池(数据库相关十二)
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个;释放空闲时间超过最大空闲时间的数据库连接来避免因为没有释放数据库连接而引起的数据库连接遗漏。这项技术能明显提高对数据库操作的性能。背景数据库连接是一种关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性...转载 2018-08-06 07:57:43 · 201 阅读 · 0 评论 -
索引以及索引的实现(B+树介绍、和B树、R树区别(数据库相关十一)
索引索引是提高数据库表访问速度的方法。分为聚集索引和非聚集索引。聚集索引:对正文内容按照一定规则排序的目录。非聚集索引:目录按照一定的顺序排列,正文按照另一种顺序排列,目录与正文之间保持一种映射关系。把数据库索引比作字典查询索引,聚集索引就是按照拼音查找,拼音栏中字的顺序就是查找得到的字的顺序。非聚集索引就像按照偏旁部首查找,同是单人旁查到的字所在的页码可能是杂乱的,没...转载 2018-08-06 07:57:16 · 1621 阅读 · 0 评论 -
Statement和PreparedStatement之间的区别(数据库相关十)
一、Statement接口1.由Connection接口的createStatement()方法创建。2.常用方法有: close(); executeUpdate(String sql); executeQuery(String sql);-----语法------statement = con.createStatement();statement.exe...原创 2018-08-06 07:56:53 · 873 阅读 · 0 评论 -
内连接,左连接,右连接作用及区别(数据库相关九)
我们来看个例子:内连接就是普通的查询,例如1.加inner join的:SELECT S.SName,C.CourseID,C.GradeFrom Sc AS CINNER JOIN Students AS SON C.StudentID = S.SNo2.不加inner join的SELECT Students...原创 2018-08-06 07:56:33 · 47704 阅读 · 1 评论 -
从一张大表读取数据,如何解决性能问题(数据库相关八)
1.项目背景当数据库单表数据量达到一定程度时,数据查询变得很慢很慢,建立索引已经无法提高查询速度时,该如何对查询速度进行优化呢?以单表的数据量达到八千万数据,由于之前的架构设计,数据库设计的原因,直接导致数据库服务器负载过高,cpu 使用率接近百分百,后端迟迟无法返回数据给前端或返回数据时间高达20-30s,前端不停的请求数据,进一步导致数据库负载增高,差点死亡。 2.临时...转载 2018-08-06 07:56:18 · 4429 阅读 · 0 评论 -
MYSQL语句优化(数据库相关七)
使用索引的原则:1.最左前缀匹配原则。mysql会一直向右匹配直到遇到范围查询(>、<、between、like)就停止匹配。所以要尽量把“=”条件放在前面,把这些条件放在最后。不会用到b的索引:where a=1 and c>0 and b=2会用到b的索引:where a=1 and b=2 and c>02.尽量选择区分度高的列作为索引,区...转载 2018-08-06 07:56:00 · 232 阅读 · 0 评论 -
Mysql引擎(数据库相关六)
在Mysql数据库中,常用的引擎主要就是2个:Innodb和MyIASM。这篇文章将主要介绍这两个引擎,以及该如何去选择引擎,最后在提一下这2种引擎所使用的数据结构是什么。首先介绍一下Innodb引擎。Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的...转载 2018-08-06 07:55:37 · 143 阅读 · 0 评论 -
分页如何实现(Oracle,MySql)(数据库相关五)
mysql:mysql的分页sql格式是:select * from table limit (start-1)*limit,limit; 其中start是页码,limit是每页显示的条数。例:select * from test limit 3,5;--查询test从3开始,5条数据 oracle:select rownum,rowid,tt.* from t_user5 ...转载 2018-08-06 07:54:54 · 625 阅读 · 0 评论 -
乐观锁,悲观锁的概念及实现方式(数据库相关四)
一、乐观锁 总是认为不会产生并发问题,每次去取数据的时候总认为不会有其他线程对数据进行修改,因此不会上锁,但是在更新时会判断其他线程在这之前有没有对数据进行修改,一般会使用版本号机制或CAS操作实现。 version方式:一般是在数据表中加上一个数据版本号version字段,表示数据被修改的次数,当数据被修改时,version值会加一。当线程A要更新数据值时,在读取数据的同时也会读取ver...转载 2018-08-06 07:55:17 · 256 阅读 · 0 评论 -
注解
注解语法因为平常开发少见,相信有不少的人员会认为注解的地位不高。其实同 classs 和 interface 一样,注解也属于一种类型。它是在 Java SE 5.0 版本中开始引入的概念。注解的定义注解通过 @interface 关键字进行定义。public @interface TestAnnotation {}它的形式跟接口很类似,不过前面多了一个 @ 符号。上面的代...转载 2018-08-11 17:34:14 · 285 阅读 · 0 评论 -
经典三层模型制作学校论坛系统(BBS)
一、工具STS,和MySQL数据库二、系统分析:需求概述论坛即BBS,全称为Bulletin Board System。它是互联网上常见的一种交互性强、内容丰富的信息服务系统,每个用户都可以在上面浏览和发布信息。早期的BBS与一般街头和校园内的公告板性质相同,只不过是用来传播或获得消息而已。普及之后,BBS的功能得到了很大的扩充。目前,通过BBS我们可以随时获取各种最新的信息,...原创 2018-08-11 22:13:26 · 6318 阅读 · 12 评论 -
html动手做做一个简单的注册页面
1.创建一个html文件2.根据案例图片进行设计3.写相应的html代码<!DOCTYPE html><html><head><META http-equiv="Content-Type" content="text/html; charset=gb2312"><title >注册</tit原创 2018-08-07 12:58:25 · 12149 阅读 · 3 评论 -
开发中如何生成足够大的随机数,几十年不重复
在开发中我们往往需要生成随机数,但是如何保证自己生成的随机数重复率尽可能小呢?那就需要我们生成的随机数足够大:java开发中就可以用这个:UUID uuid=UUID.randomUUID();String prefix=uuid.toString();prefix=prefix.replace("-", "");生成16进制的32个数字组成的字符串prefix。这个数...原创 2018-09-07 21:23:01 · 1022 阅读 · 0 评论 -
会话跟踪技术
1. 什么是会话会话是指一个终端用户(服务器)与交互系统(客户端)进行通讯的过程。2. 什么是会话跟踪对同一个用户对服务器的连续的请求和接受响应的监视。(将用户与同一用户发出的不同请求之间关联,为了数据共享)3. 为什么需要会话跟踪浏览器与服务器之间的通信是通过HTTP协议进行通信的,而HTTP协议是”无状态”的协议,它不能保存客户的信息,即一次响应完成之后连接就断开了,下一次...原创 2018-08-23 21:16:50 · 226 阅读 · 0 评论 -
Servlet生命周期(JavaWeb相关)
Servlet在一个生命周期中只有一个实例,属于单实例,多线程。我们通过一个例子来直观的看一下:首先写一个Servletpackage com.xintouyun.jweb.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.Htt...原创 2018-08-26 21:10:26 · 182 阅读 · 0 评论 -
数据库导入导出操作(数据库相关十七)
在MySQL Qurey Brower中直接导入*.sql脚本,是不能一次执行多条sql命令的,在mysql中执行sql文件的命令:mysql> source d:/myprogram/database/db.sql;导出sql脚本mysqldump -u 用户名 -p 数据库名 > 存放位置mysqldump -u root -p test > c:/a...原创 2018-08-26 20:48:06 · 546 阅读 · 0 评论 -
事务边界(数据库相关十五)
事务边界问题 我们先回顾一下我们现在写的代码: 可以看到我们现在写的代码是Dao层中每一个方法都有一个事务包围着. 我们现在以银行同行转帐为例 因为Dao层只涉及到与数据库的交互,所以转帐这个方法应该是在服务层,那么这个时候我们在服务层有一个转帐的方法供我们调用. 可以看到程序结构的情况如下: Dao层: Service层: 我们可以看到现在在服务层中的转帐方法需要调用Dao...转载 2018-08-08 19:37:30 · 1116 阅读 · 0 评论 -
数据库分类(数据库相关十六)
纯文本数据库: 纯文本数据库是只用空格符、制表符和换行符来分割信息的文本文件。适用于小型应用,对于大中型应用来说它存在诸多限制:只能顺序访问,不能进行随机访问。查找数据和数据关系或多用户同时访问进行写操作时非常困难。关系数据库: 由于纯文本数据库存在诸多局限,所以人们开始研究数据模型,设计各种类型的使用方便的数据库。在数据库的发展史上,最具影响的数据库模型有:层次模...原创 2018-08-13 08:16:27 · 341 阅读 · 0 评论 -
E-R图(数据库相关十四)
E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。用“矩形框”表示实体型,矩形框内写明实体名称;用“椭圆图框”表示实体的属性,并用“实心线段”将其与相应关系的“实体型”连接起来;用”菱形框“表示实体型之间的联系成因,在菱形...转载 2018-08-08 11:07:28 · 4543 阅读 · 0 评论 -
用力图设计(数据库相关十三)
一.元素:1.角色、用例(功能描述)、关系(泛化、依赖、关联、实现)2.元素含义: Actor 1. 可以是人、事、物 2. 分析角色考虑的因素:直接使用系统的人、维护人员、外设(人、打印机)、相连的系统 3. 参与用例的实现过程 3. 图符: 用例 1. 名称:要体现系...原创 2018-08-08 10:42:23 · 315 阅读 · 0 评论 -
java中实现多态的机制是什么,动态多态和静态多态的区别?(java基础一)
多态总结: 指向子类的父类引用由于向上转型了,它只能访问父类中拥有的方法和属性,而对于子类中存在而父类中不存在的方法,该引用是不能使用的,尽管是重载该方法。若子类重写了父类中的某些方法,在调用该些方法的时候,必定是使用子类中定义的这些方法(动态连接、动态调用)。一、多态的实现Java实现多态有三个必要条件:继承、重写、向上转型。继承:在多态中必须存在有继承关系的子类和父类。 重写:子类...原创 2018-08-03 13:41:45 · 8149 阅读 · 4 评论 -
为什么需要锁,锁定分类,锁粒度(数据库相关三)
(1)概念: 数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据...转载 2018-08-06 07:54:16 · 1685 阅读 · 0 评论 -
数据库事务和隔离级别(数据库相关二)
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一...转载 2018-08-05 13:45:39 · 143 阅读 · 0 评论 -
范式(数据库相关一)
范式(数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低要求的范式是第一范...转载 2018-08-05 13:27:59 · 175 阅读 · 0 评论 -
成员变量和静态变量的区别(面向对象相关一)
1.生命周期不同成员变量伴随着对象的创建而存在,随着对象的回收而释放。静态变量随着类的加载而存在随着类的消失而消失。2.调用方式不同:成员变量只能被对象调用静态变量可以被对象调用也可以被类名调用3.别名不同成员变量也叫实例变量静态变量也成为类变量4.数据存储位置不同成员变量存储在堆内存的对象中,所以也叫对象的特有数据静态变量数据存储在方法区(的静态区),...原创 2018-08-09 08:45:24 · 321 阅读 · 0 评论 -
List、Set、Map是否都继承自Collection接口?存储特点分别是什么?(集合相关二)
List和Set继承自Collection,Map不是。存储特点:List及实现类是可变大小的列表 ,适用于按数值索引访问元素 Set集合存储顺序无序,不可以保存重复元素。 Map中以键-值对形式存储数据...原创 2018-08-04 20:36:15 · 3710 阅读 · 0 评论 -
列举几个Java中Collection类库中的常用类(集合相关一)
Java中的集合框架是指一系列存储数据的接口和类,这些类和接口都位于java.util包中 使用集合框架可以解决复杂的数据存储问题,Java中内置了丰富的集合框架 List接口、类关系图 ArrayList用法类似于数组,且其容量可按需要动态调整,亦被称为动态数组LinkedList表示链表的操作类,它同时实现了List和Queue接口。它的优点在于向集合中插入、删...原创 2018-08-04 20:31:23 · 6859 阅读 · 1 评论 -
public,protected,private的区别(java基础八)
访问权限修饰符类前面可以加public,类成员前面加private,protected,default,public private是访问修饰符的一种,除了private之外,还有default、protected、public原创 2018-08-04 19:49:38 · 292 阅读 · 0 评论 -
构造器是否可被override?(java基础七)
构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。Constructor不能被继承,所以Constructor也就不能被override。每一个类必须有自己的构造函数,负责构造自己这部分的构造。子类不会覆盖父类的构造函数,相反必须负责在一开始调用父类的构造函数。一、构造器是干什么用的?(what) 构造器是用来生成一个类的实例是...转载 2018-08-04 19:46:24 · 458 阅读 · 0 评论 -
重载和重写的区别。(java基础六)
方法重载(overloading):重载是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同,方法体也不相同,最常见的重载的例子就是类的构造函数,可以参考API帮助文档看看类的构造方法方法重写(overriding): 1、也叫子类的方法覆盖父类的方法,要求返回值、方法名和参数都相同。 2、子类抛出的异常不能超过父类相应方法抛出的异常。(子类异常不能超出父类...原创 2018-08-04 19:37:00 · 117 阅读 · 0 评论 -
是否可以继承String类(java基础五)
答案: 不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。public final class String implements java.io.Serializable, Comparable<String>, CharSequence 详细解析:1. 关于final修饰符参考文章:浅析Java中的fin...转载 2018-08-04 19:32:48 · 267 阅读 · 0 评论 -
Static Nested Class和 Inner Class的不同(java基础四)
Inner Class(内部类)定义在类中的类。 Nested Class(嵌套类)是静态(static)内部类。1. 要创建嵌套类的对象,并不需要其外围类的对象。 2. 不能从嵌套类的对象中访问非静态的外围类对象。Anonymous Inner Class (匿名内部类)匿名的内部类是没有名字的内部类。 匿名的内部类不能extends(继承)其它类,但一个内部类可以作为一...转载 2018-08-04 19:18:24 · 366 阅读 · 0 评论 -
java能不能多继承,可不可以多实现(java基础三)
java中的接口之间可以实现多继承,也可以实现多实现。但是java中的类只能实现单继承类不能实现多继承的原因是: 如果类之间实现了多继承,将可能造成程序的紊乱,因为类与类之前可能存在相同的方法,程序在运行子类的对象或者子类调用某一方法,若父类中含有相同的方法,比如父类中都含有show()的方法,子类调用时系统将不知调用哪个父类的方法,从而程序报错,所以java的类与类之间是不能实现多继承的,只...原创 2018-08-04 08:14:01 · 5965 阅读 · 0 评论 -
单例设计模式(面向对象相关二)
单例设计模式:必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。如何保证对象唯一性呢?1.不允许其它程序用new来创建对象2.在该类创建一个本类对象3.对外提供一个方法让其它程序可以获取该对象步奏:1.私有化该类构造函数2.通过new在本类中创建一个本类对象3.定义一个公有的方法将创建的对象返回经典的单例设计模式有两种:1.饿汉式pu...原创 2018-08-09 09:09:06 · 125 阅读 · 0 评论 -
静态什么时候用(面向对象相关三)
1.静态变量当分析对象中所具备的成员变量的值都是相同的时候,这个时候可以用静态修饰只要数据在对象中都是不同的,就是对象中的特有数据,必须存储在对象中,是非静态的如果是相同的数据,对象不需要做修改,只需要用即可,不需要存储在对象中,定义成静态的2.静态函数函数是否用静态的就参考一点,就是该函数的功能能否访问到对象的特有数据。简单点说从源码看该功能是否要访问非静态的成员变量,如果需...原创 2018-08-09 09:21:38 · 288 阅读 · 0 评论 -
ArrayList、LinkedList和Vector之间的区别与联系(集合相关三)
ArrayList用法类似于数组,且其容量可按需要动态调整,亦被称为动态数组LinkedList表示链表的操作类,它同时实现了List和Queue接口。它的优点在于向集合中插入、删除元素时效率比较高,特别是可以直接对集合的首部和尾部元素进行插入和删除操作,LinkedList提供了专门针对首尾元素的方法。如果涉及到堆栈,队列等操作,应该考虑用List,对于需要快速插入,删除元素,应该使用...原创 2018-08-04 20:48:51 · 1016 阅读 · 2 评论 -
Java中的异常处理机制的简单原理和应用(异常相关六)
Java中的异常处理机制的简单原理和应用 : java中Throwable这个类可以被作为异常抛出的类,继承它的分为异常Exception和错误Error.Exception表示程序需要捕捉和处理的的异常;Error表示系统级别的错误和程序无需处理的。 我们所需要关心的是Exception. Execption可以分为java标准定义的异常和程序员自定义异常2种. ...原创 2018-08-05 10:27:26 · 1778 阅读 · 0 评论 -
列举3个以上的RuntimeException(异常相关五)
RuntimeException是java中所有运行时异常的父类,实际运行时出现的都是它的子类,看看RuntimeException的Java doc就可以随便列出几个:1,Object x = new Integer(0);System.out.println((String)x);当试图将对象强制转换为不是实例的子类时,抛出该异常(ClassCastException)2,int...原创 2018-08-05 10:19:39 · 7460 阅读 · 0 评论 -
try-catch-finally中,如果在catch中return了,finally中的代码还会执行么,原理是什么?(异常相关四)
答案:会执行,在return 前执行/* * java面试题20--如果catch里面有return语句,finally里面的代码还会执行吗? */public class FinallyDemo2 { public static void main(String[] args) { System.out.println(getInt()); } ...转载 2018-08-05 10:10:28 · 10553 阅读 · 4 评论