面试
文章平均质量分 51
Chris-Green
这个作者很懒,什么都没留下…
展开
-
sleep和wait的区别
① 这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。② 锁: 最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。slee转载 2017-12-29 17:41:55 · 177 阅读 · 0 评论 -
spring事务总结
一、Spring事务管理 1、事务的基本原理 Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:1) 获取连接:Connectioncon = DriverManager.getConnection();2) 开启事务:con.setAu转载 2017-12-29 18:14:38 · 258 阅读 · 0 评论 -
不可重复读和幻读&悲观锁和乐观锁
不同的隔离级别设置会对系统的并发性以及数据一致性造成不同的影响,总的来说,隔离级别与系统并发性成反比,与数据一致性成正比。 也就是说,事务隔离度越高,系统并发性越差,进而造成系统性能就越差,不过,隔离度的增高,却可以更好地保证数据的一致性。####不可重复读和幻读的区别####很多人容易搞混不可重复读和幻读,确实这两者有些相似。但不可重复读重点在于update和delete,而幻读的重转载 2017-12-29 18:31:56 · 867 阅读 · 0 评论 -
Java中的深拷贝和浅拷贝
1.浅拷贝与深拷贝概念(1)浅拷贝(浅克隆) 浅拷贝又叫浅复制,将对象中的所有字段复制到新的对象(副本)中。其中,值类型字段(java中8中原始类型)的值被复制到副本中后,在副本中的修改不会影响到源对象对应的值。而引用类型的字段被复制到副本中的还是引用类型的引用,而不是引用的对象,在副本中对引用类型的字段值做修改会影响到源对象本身。浅拷贝简单归纳就是只复制一个对象,对象内部转载 2018-01-29 11:07:16 · 117 阅读 · 0 评论 -
static、final、static final的区别
说明:不一定准确,但是最快理解。final:final可以修饰:属性,方法,类,局部变量(方法中的变量)final修饰的属性的初始化可以在编译期,也可以在运行期,初始化后不能被改变。final修饰的属性跟具体对象有关,在运行期初始化的final属性,不同对象可以有不同的值。final修饰的属性表明是一个常数(创建后不能被修改)。final修饰的方法表示该方法在子类中不能被重写,final修饰的类表...转载 2018-03-16 13:50:38 · 260 阅读 · 0 评论 -
Set是如何实现元素不重复的&重写equals()方法之后也必须重写hashCode()方法
参考:http://www.cnblogs.com/szlbm/p/5504623.html http://lelglin.iteye.com/blog/1826152 一、HashCode 1、HashCode的存在主要是为了查找的快捷性,HashCode是用来在散列存储结构中确定对象的存储地址的 2、如果两个对象equals相...转载 2018-02-25 09:46:34 · 218 阅读 · 0 评论 -
volatile与synchronized的区别
转载自:https://www.cnblogs.com/tf-Y/p/5266710.html1、锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)。 互斥即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。 可见性要更加复杂一些,它必须确保释放锁之...转载 2018-11-06 17:14:58 · 446 阅读 · 0 评论 -
多线程之volatile、ThreadLocal、synchronized关键字区别
转载自:https://blog.csdn.net/paincupid/article/details/473464231.volatilevolatile主要是用来在多线程中同步变量。 在一般情况下,为了提升性能,每个线程在运行时都会将主内存中的变量保存一份在自己的内存中作为变量副本,但是这样就很容易出现多个线程中保存的副本变量不一致,或与主内存的中的变量值不一致的情况。而当...转载 2018-11-06 17:23:43 · 418 阅读 · 0 评论 -
Collections.synchronizedList & CopyOnWriteArrayList
ArrayList是非线性安全,即在一方在便利列表,而另一方在修改列表时,会报ConcurrentModificationException错误。而这不是唯一的并发时容易发生的错误,在多线程进行插入操作时,由于没有进行同步操作,容易丢失数据。 Vector是一个线程安全的列表,采用数组实现。其线程安全的实现方式是对所有操作都加上了synchronized关键字,这种转载 2018-01-12 15:12:14 · 637 阅读 · 0 评论 -
Collections.synchronizedList & CopyOnWriteArrayList
ArrayList是非线性安全,即在一方在便利列表,而另一方在修改列表时,会报ConcurrentModificationException错误。而这不是唯一的并发时容易发生的错误,在多线程进行插入操作时,由于没有进行同步操作,容易丢失数据。Vector是一个线程安全的列表,采用数组实现。其线程安全的实现方式是对所有操作都加上了synchronized关键字,这种方式严重影响效率,因此,不转载 2017-12-01 09:46:58 · 269 阅读 · 0 评论 -
Java NIO:IO与NIO的区别
一、概念 NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。二、NIO和IO的主要区别下表总结了Java IO和NIO之间的主要区别:IO转载 2017-11-21 14:58:23 · 218 阅读 · 0 评论 -
冒泡排序
冒泡排序 冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序的示例: 冒泡排序的算法实现如下:【排序后,数组从小到大排列】 /**转载 2017-12-26 16:08:27 · 155 阅读 · 0 评论 -
选择排序
一、选择排序 1、基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换;然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止。 2、实例 3、算法实现 /** * 选择排序算法 * 在未排序序列中找到最小元素,存放到排序序列的起始位置转载 2017-12-26 16:51:14 · 148 阅读 · 0 评论 -
插入排序
二、插入排序 1、基本思想:每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置(从后向前找到合适位置后),直到全部插入排序完为止。 2、实例 3、算法实现 /** * 插入排序 * * 从第一个元素开始,该元素可以认为已经被排序 * 取出下一个元素,在已经排序的元素序转载 2017-12-26 17:09:39 · 150 阅读 · 0 评论 -
Java中创建对象的几种方式
作为java开发者,我们每天创建很多对象,但是我们通常使用依赖注入的方式管理系统,比如:Spring去创建对象,然而这里有很多创建对象的方法:使用New关键字、使用Class类的newInstance方法、使用Constructor类的newInstance方法、使用Clone方法、使用反序列化。使用new关键字:这是我们最常见的也是最简单的创建对象的方式,通过这种方式我们还可以调用任意的转载 2017-12-26 17:43:56 · 167 阅读 · 0 评论 -
switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?
在switch(expr1)中,expr1 只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是 int 基本类型或 Integer 包装类型,由于,byte,short,char 都可以隐含转换为 int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long 和 String 类型都不符合 switch 的语法规定,并且不能被隐式转换成 int 类型,所以,它们不能作用于转载 2018-01-12 10:16:16 · 335 阅读 · 0 评论 -
"=="和 equals 方法究竟有什么区别?
==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相等,只能用==操作符。 如果一个变量指向的数据是对象类型的,那么,这时候涉及了两块内存,对象本身占用一块内存(堆内存),变量也占用一块内存,例如 Objet obj = new Object();变量 obj 是一个内存,new Object转载 2018-01-12 10:29:37 · 158 阅读 · 0 评论 -
序列化接口的 id 有什么用?
对象经常要通过 IO 进行传送,让你写程序传递对象,你会怎么做?把对象的状态数据用某种格式写入到硬盘,Person->“zxx,male,28,30000”Person,既然大家都要这么干,并且没有个统一的干法,于是,sun 公司就提出一种统一的解决方案,它会把对象变成某个格式进行输入和输出,这种格式对程序员来说是透明(transparent)的,但是,我们的某个类要想能被 sun 的这种方转载 2018-01-12 10:39:56 · 671 阅读 · 0 评论 -
hashCode 方法的作用?
首先,想要明白 hashCode 的作用,你必须要先知道 Java 中的集合。 总的来说,Java 中的集合(Collection)有两类,一类是 List,再有一类是 Set。你知道它们的区别吗?前者集合内的元素是有序的,元素可以重复;后者元素无序,但元素不可重复。 那么这里就有一个比较严重的问题了:要想保证元素不重复,可两个元素是否重复应该依据什么来判断呢?这就是转载 2018-01-12 10:46:21 · 287 阅读 · 0 评论 -
heap 和 stack 有什么区别
java 的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用 new创建的对象都放在堆里,所以,它不会随方法的结束而消失。方法中的局部变量使用 final转载 2018-01-12 11:19:44 · 311 阅读 · 0 评论 -
HashMap和HashTable有何不同?
(1)HashMap允许key和value为null,而HashTable不允许。(2)HashTable是同步的,而HashMap不是。所以HashMap适合单线程环境,HashTable适合多线程环境。(3)在Java1.4中引入了LinkedHashMap,HashMap的一个子类,假如你想要遍历顺序,你很容易从HashMap转向LinkedHashMap,但是HashTable转载 2018-01-12 15:05:11 · 245 阅读 · 0 评论 -
truncate 、delete与drop区别
相同点:1.truncate和不带where子句的delete、以及drop都会删除表内的数据。 2.drop、truncate都是DDL语句(数据定义语言),执行后会自动提交。 不同点:1. truncate 和 delete 只删除数据不删除表的结构(定义)drop 语句将删除表的结构被依赖的约束(constrain)、触发器(trigger转载 2017-10-31 16:29:56 · 284 阅读 · 0 评论