在并发编程中,synchronized 关键字非常常见,在 JDK 源码中也有很多,典型基础的类有 StringBuffer,我们知道 StringBuilder 是非线程安全的,StringBuffer 是线程安全的,就是因为 StringBuffer 源码的一些方法上使用了synchronized 关键字来保证同步。
synchronized关键字原理synchronized 代码块同步...
是前面分析了 HashMap 源码,今天分析下 LinkedHashMap,废话不多说直接开始。
LinkedHashMap众所周知,HashMap 里的元素是无序的。如果想按照一定的顺序,比如插入顺序来访问元素,就需要 LinkedHashMap 这个集合来实现了,LinkedHashMap 相较于 HashMap 最大的特点就是元素有序。
LinkedHashMap 的构造方法是基于 H...
在复习完 HashMap 后,今天学习 HashSet,在日常开发中我们常用它来存储不重复元素, HashSet 是基于 HashMap 的,它巧妙地利用了 HashMap 的 key 不可重复的特性,我们在向 HashSet 中添加元素时,实际上是把添加的元素当做 HashMap 的 key ,当有重复的元素进来时,表示 HashMap 中存在相同的 key,新的value 会覆盖原来的v...
HashMap 也是一个非常重要的key-value 映射集合,在开发中经常用到,底层是数组+单向链表的数据结构。在jdk1.7 和 1.8中实现略有不同,jdk8引入红黑树,提升了查询性能,并在扩容算法上做了优化,省去重新计算hash 的时间。
HashMap 数据结构图jdk1.7:
jdk1.8:
HashMap 源码(1.8)核心属性12345678910111213141516...
前面写了点 ArrayList 一些源码的分析,今天分析下 LinkedList 集合常用 API 的源码。
LinkedList 和 ArrayList 都是 List接口的实现类,都是线程不安全、允许元素为 null 的。这俩集合经常被拿来进行比较,面试问的也比较多。这里先给出这俩在一般情况下的区别:
ArrayList 底层是数组结构,增删慢(涉及数组的复制和元素移动),改查快(实现...
java集合框架图:
Collection 接口下的 Queue接口,打算以后放到多线程那块分析,今天来分析下 ArrayList类
ArrayListArrayList集合是 java.util 包下最常用的集合类,它的继承结构如下:
12public class ArrayList<E> extends AbstractList<E> implem...
背景今天搭建公司SpringBoot基础框架时,在设计自定义异常阶段,参考其他框架优秀源码发现都是继承了 RuntimeException,为何不直接继承 Exception 呢?特此记录一下这样做的好处。
Exception我们知道异常分为两类:检查异常CheckedException 和运行时异常RuntimeException。
CheckedException
Java认为Check...
前言在微服务系统里,随着业务的发展,服务拆分成越来越多的微服务时,服务之间的调用关系也越来越复杂,经常一个业务流程要调用 N 个微服务才能完成,当一个业务流程请求变慢或者卡死时,我们需要知道到底是哪里调用出现了问题,所以需要服务链路追踪功能,帮助我们解决问题,Spring CLoud Sleuth应运而生。
Spring CLoud SleuthSpring CLoud Sleuth是一个服...
本文转自 http://www.spring4all.com/article/602
在项目迭代的过程中,不可避免需要”上线“。上线对应着部署,或者重新部署;部署对应着修改;修改则意味着风险。
目前有很多用于部署的技术,有的简单,有的复杂;有的得停机,有的不需要停机即可完成部署。本文的目的就是将目前常用的布署方案做一个总结。
一、蓝绿布署
Blue/Green Deploy...
前面学习了 Zuul 的一些特性和基本使用,包括请求转发,负载均衡等,前面也提到 Zuul 还可以用来做过滤权限、记录API日志等功能,其实这些都是基于 ZuulFilter 过滤器来实现的,今天对学习 ZuulFilter 做一个总结。
如何利用 ZuulFilter 实现权限控制?
Zuul 过滤器首先看下官方的 Zuul 执行流程图
结合官方文档和流程图,得出Filter 是 Zuu...