自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

转载 Spring Security 解析(一)

https://www.cnblogs.com/bug9/p/11383485.html

2022-02-17 10:16:10 115

转载 spring好用的工具类

spring好用的工具类

2022-02-08 14:48:13 183

转载 数据结构与算法

算法

2022-01-21 10:57:50 144

转载 Kafka

Kafka

2022-01-20 15:08:30 82

转载 SpringMVC源码分析

SpringMVC源码分析(一)SpringMVC源码分析(二)SpringMVC源码分析(三)

2022-01-18 17:39:00 45

转载 Mybatis源码深度解析

Mybatis源码深度解析

2022-01-18 17:23:38 69

转载 classs类结构

classs类结构

2022-01-07 11:06:56 132

转载 dubboSPI

dubboSPI

2022-01-04 09:53:11 88

原创 Phaser 使用介绍

本文将介绍 java.util.concurrent.Phaser,一个常常被大家忽略的并发工具。它和 CyclicBarrier 以及 CountDownLatch 很像,但是使用上更加的灵活,本文会进行一些对比介绍。和之前的文章不同,本文不写源码分析了,就只是从各个角度介绍下它是怎么用的。本文比较简单,我觉得对于初学者大概需要 20 分钟左右吧。其实我对这个需要多少时间很没概念,有没有读者愿意记录下所花费的时间,在评论区反馈一下。使用示例我们来实现一个小需求,启动 10 个线程执行任务,由于

2021-12-28 09:39:18 1622

原创 Java 读写锁 ReentrantReadWriteLock 源码分析

本文内容:读写锁 ReentrantReadWriteLock 的源码分析,基于 Java7/Java8。阅读建议:虽然我这里会介绍一些 AQS 的知识,不过如果你完全不了解 AQS,看本文就有点吃力了。目录使用示例下面这个例子非常实用,我是 javadoc 的搬运工:// 这是一个关于缓存操作的故事class CachedData { Object data; volatile boolean cacheValid; // 读写锁实例 final Reentr

2021-12-28 09:38:33 132

原创 Java 并发基础之内存模型

很久没更新文章了,对隔三差五过来刷更新的读者说声抱歉。关于 Java 并发也算是写了好几篇文章了,本文将介绍一些比较基础的内容,注意,阅读本文需要一定的并发基础。本文的主要目的是让大家对于并发程序中的重排序、内存可见性以及原子性有一定的了解,同时要能准确理解 synchronized、volatile、final 几个关键字的作用。另外,本文还对双重检查形式的单例模式为什么需要使用 volatile 做了深入的解释。并发三问题这节将介绍重排序、内存可见性以及原子性相关的知识,这些也是并发程序为什

2021-12-28 09:37:35 98

原创 Java7/8 中的 HashMap 和 ConcurrentHashMap 全解析

今天发一篇"水文",可能很多读者都会表示不理解,不过我想把它作为并发序列文章中不可缺少的一块来介绍。本来以为花不了多少时间的,不过最终还是投入了挺多时间来完成这篇文章的。网上关于 HashMap 和 ConcurrentHashMap 的文章确实不少,不过缺斤少两的文章比较多,所以才想自己也写一篇,把细节说清楚说透,尤其像 Java8 中的 ConcurrentHashMap,大部分文章都说不清楚。终归是希望能降低大家学习的成本,不希望大家到处找各种不是很靠谱的文章,看完一篇又一篇,可是还是模模糊糊。阅

2021-12-28 09:36:45 210

原创 深度解读 java 线程池设计思想及源码实现

我相信大家都看过很多的关于线程池的文章,基本上也是面试的时候必问的,如果你在看过很多文章以后,还是一知半解的,那希望这篇文章能让你真正的掌握好 Java 线程池。本文一大重点是源码解析,同时会有少量篇幅介绍线程池设计思想以及作者 Doug Lea 实现过程中的一些巧妙用法。本文还是会一行行关键代码进行分析,目的是为了让那些自己看源码不是很理解的同学可以得到参考。线程池是非常重要的工具,如果你要成为一个好的工程师,还是得比较好地掌握这个知识,很多线上问题都是因为没有用好线程池导致的。即使你为了谋生,也要知

2021-12-28 09:35:46 233

原创 深入分析 java 8 编程语言规范:Threads and Locks

2018-02-27评论区的 xupeng.zhang 提出了一个我之前没碰到过的情况,推翻了我之前的一个错误理解,修改了相应的内容。2017-11-28更新了 17.1、17.2、17.3,更正一些不合理的描述,修改一些话术,使读者理解起来更容易,这遍更新下来,这三节应该说已经很严谨了,读者如果还有不懂,请在评论区留言。2017-11-29更新 17.4 内存模型一节,修改了一些容易引起歧义的描述2017-12-11更新 17.5 及其后面的内容,对于 final 的语义介绍还是不够精彩,.

2021-12-28 09:34:51 315

原创 解读 java 并发队列 BlockingQueue

最近得空,想写篇文章好好说说 java 线程池问题,我相信很多人都一知半解的,包括我自己在仔仔细细看源码之前,也有许多的不解,甚至有些地方我一直都没有理解到位。说到线程池实现,那么就不得不涉及到各种 BlockingQueue 的实现,那么我想就 BlockingQueue 的问题和大家分享分享我了解的一些知识。本文没有像之前分析 AQS 那样一行一行源码分析了,不过还是把其中最重要和最难理解的代码说了一遍,所以不免篇幅略长。本文涉及到比较多的 Doug Lea 对 BlockingQueue 的设计思

2021-12-28 09:33:41 253

原创 一行一行源码分析清楚 AbstractQueuedSynchronizer (三)

这篇文章是 AQS 系列的最后一篇,第一篇,我们通过 ReentrantLock 公平锁分析了 AQS 的核心,第二篇的重点是把 Condition 说明白,同时也说清楚了对于线程中断的使用。这篇,我们的关注点是 AQS 最后的部分,AQS 共享模式的使用。有前两篇文章的铺垫,剩下的源码分析将会简单很多。本文先用 CountDownLatch 将共享模式说清楚,然后顺着把其他 AQS 相关的类 CyclicBarrier、Semaphore 的源码一起过一下。相对来说,如果读者有前面两篇文章的基础,这

2021-12-28 09:32:46 117

原创 一行一行源码分析清楚 AbstractQueuedSynchronizer (二)

文章比较长,信息量比较大,建议在 pc 上阅读。文章标题是为了呼应前文,其实可以单独成文的,主要是希望读者看文章能系统看。本文关注以下几点内容:深入理解 ReentrantLock 公平锁和非公平锁的区别深入分析 AbstractQueuedSynchronizer 中的 ConditionObject深入理解 Java 线程中断和 InterruptedException 异常基本上本文把以上几点都说清楚了,我假设读者看过上一篇文章中对 AbstractQueuedSynchronizer

2021-12-28 09:31:45 91

原创 一行一行源码分析清楚AbstractQueuedSynchronizer

在分析 Java 并发包 java.util.concurrent 源码的时候,少不了需要了解 AbstractQueuedSynchronizer(以下简写AQS)这个抽象类,因为它是 Java 并发包的基础工具类,是实现 ReentrantLock、CountDownLatch、Semaphore、FutureTask 等类的基础。Google 一下 AbstractQueuedSynchronizer,我们可以找到很多关于 AQS 的介绍,但是很多都没有介绍清楚,因为大部分文章没有把其中的一些关键的

2021-12-28 09:30:38 116

原创 Spring 中无处不在的 Properties

对 Spring 里面的 Properties 不理解的开发者可能会觉得有点乱,主要是因为配置方式很多种,使用方式也很多种。本文不是原理分析、源码分析文章,只是希望可以帮助读者更好地理解和使用 Spring Properties。Properties 的使用本文的读者都是使用过 Spring 的,先来看看 Properties 是怎么使用的,Spring 中常用的有以下几种使用方式:1. 在 xml 配置文件中使用即自动替换 ${} 里面的值。<bean id="xxx" class="

2021-12-27 16:48:04 118

原创 单机环境下优雅地使用事件驱动进行代码解耦

文章目录Step 0:添加 Guava 依赖Step 1:定义一个注解用于标记 listenerStep 2:定义注册中心Step 3:定义各种事件Step 4:定义事件监听器Step 5:发送事件总结附录:SpringContextUtils附录:同步事件的异常处理虽然现在的各种应用都是集群部署,单机部署的应用越来越少了,但是不可否认的是,市场上还是存在许多单机应用的。本文要介绍的是 Guava 中的 EventBus 的使用。EventBus 处理的事情类似观察者模式,基于事件驱动,观察者们监听自己

2021-12-27 16:47:03 78

原创 设计模式也可以这么简单

一直想写一篇介绍设计模式的文章,让读者可以很快看完,而且一看就懂,看懂就会用,同时不会将各个模式搞混。自认为本文还是写得不错的????????????,花了不少心思来写这文章和做图,力求让读者真的能看着简单同时有所收获。设计模式是对大家实际工作中写的各种代码进行高层次抽象的总结,其中最出名的当属 Gang of Four (GoF) 的分类了,他们将设计模式分类为 23 种经典的模式,根据用途我们又可以分为三大类,分别为创建型模式、结构型模式和行为型模式。有一些重要的设计原则在开篇和大家分享下,这些原则

2021-12-27 16:23:50 437

原创 阿里 Sentinel 源码解析

本文介绍阿里开源的 Sentinel 源码,GitHub: alibaba/Sentinel,基于当前(2019-12)最新的 release 版本 1.7.0。总体来说,Sentinel 的源码比较简单,复杂的部分在于它的模型对于初学者来说不好理解。虽然本文不是很长,最后两节还和主流程无关,但是,本文对于源码分析已经非常细致了。阅读建议:在阅读本文前,你应该至少了解过 Sentinel 是什么,如果使用过 Sentinel 或已经阅读过部分源码那就更好了。另外,本文不涉及到集群流控。由于很多读者也

2021-12-27 16:22:15 541

原创 AspectJ 使用介绍

文章目录AspectJ 使用介绍Compile-Time WeavingPost-Compile WeavingLoad-Time Weaving小结上一篇文章,我们介绍了 Spring AOP 的各种用法,包括随着 Spring 的演进而发展出来的几种配置方式。但是我们始终没有使用到 AspectJ,即使是在基于注解的 @AspectJ 的配置方式中,Spring 也仅仅是使用了 AspectJ 包中的一些注解而已,并没有依赖于 AspectJ 实现具体的功能。本文将介绍使用 AspectJ,介绍

2021-12-27 16:21:10 1974

原创 Spring AOP 源码解析

文章目录前言本文使用的调试代码IOC 容器管理 AOP 实例ProxyFactory 详解基于注解的 Spring AOP 源码分析闲聊 InstantiationAwareBeanPostProcessor小结之前写过 IOC 的源码分析,那篇文章真的有点长,看完需要点耐心。很多读者希望能写一写 Spring AOP 的源码分析文章,这样读者看完 IOC + AOP 也就对 Spring 会有比较深的理解了。今天终于成文了,可能很多读者早就不再等待了,不过主要为了后来者吧。本文不会像 IOC 源码分析

2021-12-27 16:18:18 96

原创 Spring AOP 使用介绍,从前世到今生

前面写过 Spring IOC 的源码分析,很多读者希望可以出一个 Spring AOP 的源码分析,不过 Spring AOP 的源码还是比较多的,写出来不免篇幅会大些。本文不介绍源码分析,而是介绍 Spring AOP 中的一些概念,以及它的各种配置方法,涵盖了 Spring AOP 发展到现在出现的全部 3 种配置方式。由于 Spring 强大的向后兼容性,实际代码中往往会出现很多配置混杂的情况,而且居然还能工作,本文希望帮助大家理清楚这些知识。本文使用的测试源码已上传到 Github: hon

2021-12-27 16:16:45 83

原创 Spring IOC 容器源码分析

Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。本文采用的源码版本是 4.3.11.RELEASE,算是 5.0.x 前比较新的版本了。为了降低难度,本文所说的所有的内容都是基于 xml 的配置的方式,实际使用已经很少人

2021-12-27 16:13:39 155

原创 Spring AOP 源码解析

原作之前写过 IOC 的源码分析,那篇文章真的有点长,看完需要点耐心。很多读者希望能写一写 Spring AOP 的源码分析文章,这样读者看完 IOC + AOP 也就对 Spring 会有比较深的理解了。今天终于成文了,可能很多读者早就不再等待了,不过主要为了后来者吧。本文不会像 IOC 源码分析那篇文章一样,很具体地分析每一行 Spring AOP 的源码,目标读者是已经知道 Spring IOC 源码是怎么回事的读者,因为 Spring AOP 终归是依赖于 IOC 容器来管理的。阅读建议:1、

2021-12-27 16:07:35 58

转载 spring 事务源码分析

我们之前的数十篇文章分析了 Spring 和 Mybatis 的原理,基本上从源码层面都了解了他们的基本原理,那么。在我们日常使用这些框架的时候,还有哪些疑问呢?就楼主而言,楼主已经明白了 IOC ,AOP 的原理,也明白了 Mybatis 的原理,也明白了 Spring 和 Mybatis 是如何整合的。但是,我们漏掉了 JavaEE 中一个非常重要的特性:事务。事务是 Java 程序员开发程序时不可避免的问题。我们就不讨论 ACID 的事务特性,楼主这里假定大家都已经了了解了事务的原理。如果还不了解,可

2021-12-27 15:43:43 403

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除