- 博客(8)
- 资源 (7)
- 收藏
- 关注
原创 JVM垃圾收集策略
JVM垃圾收集器有很多种,但常用垃圾算法就那么几种,作为一名java程序员,理解常用垃圾收集算法还是非常有必要的。1.JVM如何判断一个对象是否可以回收?引用计数算法 jvm没有采用这种算法,后面分析下为什么jvm不采用引用计数算法。对于引用计数算法来说,会给对象添加一个引用计数器,初始值为0。每当有一个地方引用它时,计数器加1,当引用失效时,计数器减1。当计数器为0时,就表示此对象没有被引用,即
2017-10-11 19:38:31 328
原创 JAVA面试题05-ConcurrentHashMap的实现
1.HashMap是线程安全的么?并发环境下有什么替代方案?1.1 HashMap不是线程安全。 1.2 并发环境下替代方案有HashTable(所有方法加synchronized), ConcurrentHashMap(用分段锁实现线程安全)。2.ConcurrentHashMap是如何实现线程安全的?2.1 JDK1.7中是用Segment(extends Reentra
2017-03-22 21:31:23 3288 1
原创 JAVA面试题06-Mysql索引
1.什么场景下适合创建索引,什么场景下不适合创建索引。? 1.1 where,order by,group by中频繁出现,且数据分布比较离散的列适合创建索引。比如有个用户表,用户名,手机号经常会作为查询条件,且不同用户用户名,手机号都不同(数据较离散),因此适合创建索引。但是用户的性别,虽然也会经常作为查询条件,但是因为性别只有男,女,未知等几种,数据不够离散,因此不适合创建索引。为什么要离散?
2017-03-19 22:36:35 5447 1
原创 JAVA面试题04-HashMap的实现
1.HashMap基于什么样的数据结构实现的? 答:从结构实现来讲,HashMap是数组+链表+红黑树(JDK1.8增加了红黑树部分)实现的,如下如所示。 2.HashMap put一个元素的过程。 2.1.根据key计算hashcode 2.2.根据hashcode找到数组下标,如果数组该位置空,则创建一个链表,链表中只有一个元素。 2.3 如果数组该位置已存在链表,且链表头元素k
2017-03-18 11:31:40 454
原创 JAVA面试题02-String和StringBuffer的区别
1.String是final的,不能被继承。 2.String是不可变的,对String的任何拼接,截断操作并不会改变原有String对象,而是重新生成了一些String对象。因此代码中绝对不能在循环中使用字符串拼接操作,这样会导致内存中创建多个String对象。public final class String``` * Strings are constant; their
2017-03-18 10:47:39 682
原创 JAVA面试题01-大纲
又到招聘季,最近一波面试了不少JAVA开发人员,感觉人与人之间的差距真的很大。好了,先概括一下我面试过程中经常问到的一些问题吧。基础篇 1.String和StringBuffer的区别。 2.ArrayList和LinkedList的区别。 3.栈和队列的区别。 4.HashMap基于什么样的数据结构实现的(居然有60%+的人不知道)。
2017-03-18 10:27:47 399
转载 有状态 无状态对象
基本概念: 有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象 .不能保存数据,是不变类,是线程安全的。代码更好理解:Java代码 p
2014-09-13 10:20:08 482
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人