• ReentrantLock那些事儿(一)

    ReentrantLock那些事儿(一)

    ReentrantLock 是 Lock 的一个子类,和 synchronize 一样称之为可重入锁,它有着和 synchronize 同样的内存语义,但功能比 synchronize 功能更多,使用起来更为灵活。 可重入锁:能够支持对资源的重复加锁,一个典型例子就是同一个类的 synchironized 方法内可以调用本类其他的 synchronize 方法。 使用 Reentrant...
  • Lock And AQS

    Lock And AQS

    锁是用来控制多线程访问共享资源的一种方式,一般情况下,锁可以防止多个线同时访问共享资源,但有些锁可以允许多个线程并发地访问共享资源,如读写锁中的读锁。 Lock 接口一般情况下,我们常用 synchronized 关键字来实现锁的功能,前面提到 synchronize 关键字是利用对象监视器来实现同步,synchronize获取锁和释放锁很固定,就是先获取再释放,虽然简便了同步化管理,但是不...
  • synchronized关键字总结

    synchronized关键字总结

    在并发编程中,synchronized 关键字非常常见,在 JDK 源码中也有很多,典型基础的类有 StringBuffer,我们知道 StringBuilder 是非线程安全的,StringBuffer 是线程安全的,就是因为 StringBuffer 源码的一些方法上使用了synchronized 关键字来保证同步。 synchronized关键字原理synchronized 代码块同步...
  • LinkedHashMap那点事儿

    LinkedHashMap那点事儿

    是前面分析了 HashMap 源码,今天分析下 LinkedHashMap,废话不多说直接开始。 LinkedHashMap众所周知,HashMap 里的元素是无序的。如果想按照一定的顺序,比如插入顺序来访问元素,就需要 LinkedHashMap 这个集合来实现了,LinkedHashMap 相较于 HashMap 最大的特点就是元素有序。 LinkedHashMap 的构造方法是基于 H...
  • HashSet那点事儿

    HashSet那点事儿

    在复习完 HashMap 后,今天学习 HashSet,在日常开发中我们常用它来存储不重复元素, HashSet 是基于 HashMap 的,它巧妙地利用了 HashMap 的 key 不可重复的特性,我们在向 HashSet 中添加元素时,实际上是把添加的元素当做 HashMap 的 key ,当有重复的元素进来时,表示 HashMap 中存在相同的 key,新的value 会覆盖原来的v...
  • HashMap那点事儿

    HashMap那点事儿

    HashMap 也是一个非常重要的key-value 映射集合,在开发中经常用到,底层是数组+单向链表的数据结构。在jdk1.7 和 1.8中实现略有不同,jdk8引入红黑树,提升了查询性能,并在扩容算法上做了优化,省去重新计算hash 的时间。 HashMap 数据结构图jdk1.7: jdk1.8: HashMap 源码(1.8)核心属性12345678910111213141516...
  • LinkedList那点事儿

    LinkedList那点事儿

    前面写了点 ArrayList 一些源码的分析,今天分析下 LinkedList 集合常用 API 的源码。 LinkedList 和 ArrayList 都是 List接口的实现类,都是线程不安全、允许元素为 null 的。这俩集合经常被拿来进行比较,面试问的也比较多。这里先给出这俩在一般情况下的区别: ArrayList 底层是数组结构,增删慢(涉及数组的复制和元素移动),改查快(实现...
  • ArrayList那点事儿

    ArrayList那点事儿

    java集合框架图: Collection 接口下的 Queue接口,打算以后放到多线程那块分析,今天来分析下 ArrayList类 ArrayListArrayList集合是 java.util 包下最常用的集合类,它的继承结构如下: 12public class ArrayList<E> extends AbstractList<E> implem...
  • Spring事务默认回滚规则

    Spring事务默认回滚规则

    背景今天搭建公司SpringBoot基础框架时,在设计自定义异常阶段,参考其他框架优秀源码发现都是继承了 RuntimeException,为何不直接继承 Exception 呢?特此记录一下这样做的好处。 Exception我们知道异常分为两类:检查异常CheckedException 和运行时异常RuntimeException。 CheckedException Java认为Check...
  • Spring Cloud F 版整合 Sleuth服务链路追踪 Zipkin 组件

    Spring Cloud F 版整合 Sleuth服务链路追踪 Zipkin 组件

    前言在微服务系统里,随着业务的发展,服务拆分成越来越多的微服务时,服务之间的调用关系也越来越复杂,经常一个业务流程要调用 N 个微服务才能完成,当一个业务流程请求变慢或者卡死时,我们需要知道到底是哪里调用出现了问题,所以需要服务链路追踪功能,帮助我们解决问题,Spring CLoud Sleuth应运而生。 Spring CLoud SleuthSpring CLoud Sleuth是一个服...
13456711