无锁的同步策略——CAS操作详解 目录 1. 从乐观锁和悲观锁谈起 2. CAS详解 2.1 CAS指令 2.3 Java中的CAS指令 2.4 CAS结合失败重试机制进行并发控制 3. CAS操作的优势和劣势 3.1 CAS相比独占锁的优势 ...
轻量级的同步机制——volatile语义详解(可见性保证+禁止指令重排) 目录 1.关于volatile 2.语义一:内存可见性 2.1 一个例子 2.2 java的内存模型(JMM) 2.3 happens-before规则 2.4 volatile解决内存可见性问题的原理 3. 语义二:禁止...
简单的互斥同步方式——synchronized关键字详解 目录 1. 关于synchronized关键字 2. synchronized的原理和实现细节 2.1 synchronized可以用在那些地方 2.2 synchronized是如何实现线程互斥访问的 2.3 对象锁的monitor信息存储在哪 2.4 ...
控制对对象的访问——代理模式详解(静态代理和动态代理的区别以及联系) 目录 1. 前言 2. 代理模式详解 2.1 定义 2.2 普通代理模式类结构 2.3 普通代理模式的实现(静态代理) 3. JDK动态代理详解 3.1 JDK动态代理实现 3.2 方法调用流程图 ...
原创不如山寨——原型模式详解 目录 1. 前言 2. 原型模式详解 2.1 原型模式定义 2.2 原型模式类结构 2.3 原型模式的代码实现 3. 关于对象拷贝的深拷贝和浅拷贝问题 3.1 什么是深拷贝和浅拷贝 3.2 Java的Clo...
创建和使用解耦——工厂模式详解(简单工厂+工厂方法+抽象工厂) 目录 1.前言 2. 工厂方法模式 2.1工厂方法模式的定义 2.2 工厂方法的类结构 2.3工厂方法模式实现 3. 简单工厂模式 4. 抽象工厂模式 4.1 抽象工厂模式的定义 4.2 抽...
优雅的实现接口转换——适配器模式详解 目录 1. 前言 2. 适配器模式详解 2.1 适配器模式的定义 2.2 适配器模式的类结构 2.3 适配器模式的实现 2.4 适配器模式的使用场景 2.5 类适配器 3. 总结 ...
最简单的设计模式——单例模式 目录 1. 前言 2. 单例模式详解 2.1 单例模式定义 2.2 单例模式类结构 2.3 单例模式实现 1. 前言单例模式可以说是最简单也是最常见的设计模式了,有些语言比如scala甚至在语言层面对其进行了支持。单例是指...
封装不变,扩展可变——模版方法模式 1. 前言在平时的项目开发中,我们常会碰到这样的需求。整个业务流程可以由若干操作完成,其中某些操作对所有客户都一样,是不变的,而有些操作确需要由客户端决定,是经常会改变的。比如事务操作,流程可以定义为:1.开启事务2.对数据库进行操作3.成功则提交事务否则回滚在这个事务操作流程中,1和3是不变的,而2需要由客户端决定,对数据库进行什么样的操作。又比如常见的jdbc操作,流程可以...
关于设计模式 1. 什么是设计模式首先,设计模式是针对软件开发过程中可能存在的问题的一系列解决方案,常见的有23种。它是开发人员经过无数工程实践总结出来的一套模版,是特定情境下针对特定问题的最佳实践。其次,设计模式也代表了一种设计思想,它构建了系统中不同角色的交互模型,便于我们直观把握和分析系统的主要矛盾。2. 我需要学习设计模式吗对于设计模式,相信不少人曾今和我一样有困惑:这么多...
Spring IOC容器启动流程源码解析(四)——初始化单实例bean阶段 目录 1. 引言 2. 初始化bean的入口 3 尝试从当前容器及其父容器的缓存中获取bean 3.1 获取真正的beanName 3.2 尝试从当前容器的缓存中获取bean 3.3 从父容器中查找bean 3.4 解析bean的依赖 ...
SpringBoot中使用LoadTimeWeaving技术实现AOP功能 目录 1. 关于LoadTimeWeaving 1.1 LTW与不同的切面织入时机 1.2 JDK实现LTW的原理 1.3 如何在Spring中实现LTW 2. Springboot中使用LTW实现AOP的例子 3. 参考资料 ...
分布式系统(微服务架构)的一致性和幂等性问题相关概念解析 目录 前言 1. 分布式系统的数据一致性 1.1 分布式存储系统中的一致性问题 1.2 微服务应用的分布式一致性问题 1.3 对于一致性的正确理解 2.分布式一致性模型 3. 追求强一致性的约束——CAP定理 ...
gRPC初探——概念介绍以及如何构建一个简单的gRPC服务 目录 引言 1. gRPC简介 2. 使用Protocol Buffers进行服务定义 2.1 定义消息 2.2 定义服务接口 3.构建简单的gRPC服务 3.1 编写proto文件,定义消息和接口 3.2...
数据库事务的概念及其实现原理 目录 前言 1. 认识事务 1.1 为什么需要数据库事务 1.2 什么是数据库事务 1.3 事务如何解决问题 1.4 事务的ACID特性以及实现原理概述 2.并发异常与并发控制技术 2.1 常见的并发异常...
深入理解Spring的容器内事件发布监听机制 目录 1. 什么是事件监听机制 2. JDK中对事件监听机制的支持 2.1 基于JDK实现对任务执行结果的监听 3.Spring容器对事件监听机制的支持 3.1 基于Spring实现对任务执行结果的监听 4.Spring...
设计模式中的多态——策略模式详解 目录 1. 关于策略模式 2. 策略模式详解 2.1 策略模式定义 2.2 策略模式的UML类图 3.策略模式的优点 3.1 一个使用策略模式的例子 3.2 与其他实现方式的对比 3.3 使用策略模式的优点...
解耦关联对象——观察者模式详解 1. 观察者模式简介在软件开发中,观察者模式是使用频率最高的设计模式之一,如果你做过web开发,对它应该更不会陌生,因为典型的MVC架构就是对观察者模式的一种延伸。在软件开发中经常会碰到这种困境:系统由若干个相互协作的类构成,类之间常有一对多的依赖关系,当被依赖对象的状态变化时,其他所有依赖对象都要发生改变。以MVC为例,模型(Model)对象封装了数据,视图(View)对象对数据进行...
并发包下常见的同步工具类详解(CountDownLatch,CyclicBarrier,Semaphore) 目录 1. 前言 2. 闭锁CountDownLatch 2.1 CountDownLatch功能简介 2.2 使用CountDownLatch 2.3 CountDownLatch原理浅析 3.循环屏障CyclicBarrier ...
Spring IOC容器启动流程源码解析(一)——容器概念详解及源码初探 目录 1. 前言 1.1 IOC容器到底是什么 1.2 BeanFactory和ApplicationContext的联系以及区别 1.3 解读IOC容器启动流程的意义 1.4 如何有效的阅读源码 2. 初探IOC容器启动源码 ...