Spring源码分析——Spring事务管理 发表于 2018-03-13 | 分类于 spring 核心接口Spring事务管理的实现有许多细节,如果对整个接口框架有个大体了解会非常有利于我们理解事务,下面通过讲解Spring的事务接口来了解Spring实现事务的具体策略。Spring事务管理涉及的接口的联系如下: 事务管理器Spring并不直接管理事务,而是提供了多种事务管理器,他们将事务管理 ... 阅读全文 »
JDK源码分析——synchronized实现原理 发表于 2018-03-07 | 分类于 java Synchronized的基本使用Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共 ... 阅读全文 »
JDK源码分析——ReentrantLock类 发表于 2018-03-03 | 分类于 java 在分析了AbstractQueuedSynchronier源码后,接着分析ReentrantLock源码。ReentrantLock的底层是借助AbstractQueuedSynchronizer实现,所以其数据结构依附于AbstractQueuedSynchronizer的数据结构,关于AQS的数 ... 阅读全文 »
JDK源码分析——Lock类 发表于 2018-03-02 | 分类于 java 我们已经知道,synchronized 是java的关键字,是Java的内置特性,在JVM层面实现了对临界资源的同步互斥访问,但 synchronized 粒度有些大,在处理实际问题时存在诸多局限性,比如响应中断等。Lock 提供了比 synchronized更广泛的锁操作,它能以更优雅的方式处理线 ... 阅读全文 »
JDK源码分析——ConCurrentHashMap类 发表于 2018-02-28 | 分类于 java ConcurrentHashMap是conccurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架Spring的底层数据结构就是使用ConcurrentHashMap实现的。与同是线程安全的老大哥HashTable相比,它已经更胜一筹,因此它的锁更加细化,而不是像 ... 阅读全文 »
Java工程师面试知识点总结 发表于 2018-01-21 | 分类于 all Java 面向对象的三大特征:举例说明封装、继承、多态。多态的实现原理? object类源码分析:比如Hashcode相等,两个类一定相等吗?equals呢?相反呢? 介绍一下集合框架?泛型了解吗? map相关原理、源码,比如:hashmap、hashtable、treemap?线程安全的concu ... 阅读全文 »
String面试题 发表于 2018-01-21 | 分类于 java 对于字符串,其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。 面试题12345678910111213141516171819202 ... 阅读全文 »
JDK源码分析——HashMap类 发表于 2018-01-21 | 分类于 java 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached、redis)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一般。本文将深入源码,分析HashMap实现原理。源码基于 ... 阅读全文 »
JDK源码分析——AbstractQueuedSynchronizer类 发表于 2018-01-21 | 分类于 java AbstractQueudSynchronizer是Doug Lea Java并发编程的基础,简称AQS。内部主要包括Node和ConditionObject两个内部类,基于Node节点构建了一个FIFO(先进先出)队列,用来存储等待锁的线程的队列。基于ConditionObject节点也构造了一个 ... 阅读全文 »
JDK源码分析———Integer类 发表于 2018-01-21 | 分类于 java Integer是开发中最常用的类之一,下面深入源码分析一下Integer的设计和实现。 jdk版本:1.8 继承结构 Integer是一个不变类,实现了Comparable接口。父类Number是个抽象类,是所有数字类型相关的类的父类,例如Double、Float、Integer、Long和Shor ... 阅读全文 »