
java
panda_1994
这个作者很懒,什么都没留下…
展开
-
队列完整功能实现(链表实现)(java版本)
实现了完整的队列功能,包括添加元素,删除元素,查找元素,插入元素,删除特定元素之后的所有元素,查询队列是否为空,查询队列的大小,迭代器等功能。欢迎大家指正!import java.util.Iterator;public class Queue<T> implements Iterable<T> { /** * 定义了节点的嵌套类 */ ...原创 2018-05-13 11:31:42 · 1189 阅读 · 0 评论 -
HashMap相关面试问题
HashMap原理hashMap内部包含了一个Entry类型的数组tabletransient Entry[] table;table数组中每个索引位置(可以将每个索引位置看成是一个桶bucket)存储着一条链表或者一棵红黑树。hashMap通过哈希算法计算出key对应的索引位置,不同的key计算出来的索引位置有可能出现冲突,拉链法和线性探测法可以解决位置冲突问题,hashMap采用的是拉链...原创 2019-03-07 09:58:23 · 558 阅读 · 0 评论 -
Java并发编程常见面试题夺命追问
1. 守护线程(Daemon)与用户线程(User)的区别守护线程时程序运行时在后台提供服务的线程,当所有非守护线程结束后,也即程序终止时,所有守护线程都将一起被杀死。main()是用户线程,JVM的垃圾回收线程就是一个守护线程通过Thread类中的setDaemon(boolean on)方法,true则把该线程设置为守护线程,反之为用户线程。Thread.setDaemon()必须在T...原创 2019-02-24 20:54:25 · 328 阅读 · 0 评论 -
Java 并发编程(四)JVM中锁的优化
偏向锁、轻量级锁、重量级锁三者各自的应用场景偏向锁:只有一个线程进入临界区轻量级锁:多个线程交替进入临界区重量级锁:多个线程同时进入临界区偏向锁、轻量级锁都是JVM引入的锁优化手段,目的是降低线程同步的开销。比如以下的同步代码块:synchronized (lockObject) { // do something}上述同步代码块中存在一个临界区,假设当前存在Thread#1...原创 2019-02-22 16:06:55 · 297 阅读 · 1 评论 -
图论算法(二)最小生成树
图论算法之最小生成树最小生成树定义原理Prim算法延时实现Prim算法jishi实现Kruskalsuanfa原创 2019-02-17 11:33:44 · 605 阅读 · 0 评论 -
Java 并发编程(五)原子操作类
Java 并发编程之原子操作类Java从JDK1.5开始提供了Java.u体力.concurrent.atomic包,这个包中的原子操作类提供了一种用法简单,性能高效,线程安全地更新一个变量的方式.接下来以AtomicInteger类为例进行分析.Atomic包中的类基本都是使用Unsafe类来实现的,所以我们首先先来了解一下Unsafe类.Unsafe部分源码分析public fina...原创 2018-11-28 15:19:05 · 209 阅读 · 0 评论 -
Java 并发编程(一)Volatile原理剖析及使用
Java 并发编程之Volatile原理剖析及使用在开始介绍Volatile之前,回顾一下在并发中极其重要的三个概念:原子性,可见行和有序性原子性: 是指一个操作不可以被中断.比如赋值操作a=1和返回操作return a,这样的操作在JVM中只需要一步就可以完成,因此具有原子性,而想自增操作a++这样的操作就不具备原子性,a++在JVM中要一般经历三个步骤:从内存中取出a.计算a+1....原创 2018-11-28 12:28:50 · 222 阅读 · 0 评论 -
Java 并发编程(三)Synchronized底层优化(偏向锁与轻量级锁)
Synchronized低效的原因在Java SE 1.6发布前,使用Synchronized关键字实现同步功能是比较低效的,很多人称其为重量级锁.究其原理,是因为Synchronized是通过对象内部的一个叫做监视器锁(monitor)来实现的,而监视器锁本质又是依赖于底层的操作系统的Mutex Lock来实现的。操作系统实现线程之间的切换需要从用户态转换到核心态,这个成本非常高,状态之间的转...原创 2018-11-27 21:12:27 · 262 阅读 · 0 评论 -
Java 并发编程(二)Synchronized原理剖析及使用
Java 并发编程之Synchronized原理剖析及使用在开始介绍Synchronize之前,先了解一下在并发中极其重要的三个概念:原子性,可见行和有序性原子性: 是指一个操作不可以被中断.比如赋值操作a=1和返回操作return a,这样的操作在JVM中只需要一步就可以完成,因此具有原子性,而想自增操作a++这样的操作就不具备原子性,a++在JVM中要一般经历三个步骤:从内存中取出a...原创 2018-11-27 17:43:27 · 428 阅读 · 0 评论 -
LRU缓存(java实现)
import java.util.HashMap;import java.util.Iterator;public class LRU<K,V> implements Iterable { private Node head; private Node tail; private HashMap<K,Node> map; priva...原创 2018-10-23 09:54:21 · 530 阅读 · 0 评论 -
环形队列(链表实现)(java版本)
import java.util.Iterator;public class CircleQueue<T> implements Iterable<T> { private Node first;//链表头节点 private Node last;//链表尾节点 private int N;//链表大小 /** * 迭代器实现...原创 2018-05-13 17:10:00 · 1433 阅读 · 0 评论 -
面试中如何回答JVM垃圾回收机制
JVM中的垃圾回收了解吗首先是如何标记存活对象,主要有两个算法,分别是引用计数法和可达性分析算法。引用计数法:给一个对象添加一个引用计数器,当一个地方引用它时,计算器+1,不引用的时候-1,当引用计数器为0时说明该对象可回收。但是一旦出现互相引用的情况,就会出现无法回收的现象。所以JVM采用的是可达性分析算法。可达性分析算法:首先会标记所有GC root能够直接关联的对象。GC ro...原创 2019-04-17 09:36:48 · 3124 阅读 · 0 评论