2024年3月6日
本文用于总结《阿里 Java 开发手册》、《用友技术 review 手册》及个人 Java 开发工作经验,并结合这半年来的源码阅读经验进行编写。回顾那些写过的和读过的代码,回顾自己。 第一章 基础编码规范 1.1 命名规范 代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。 tips:JDK 动态代理生成的代……
阅读全文
2024年3月6日
从框架源码中学习设计模式是一种非常有效的学习方式,可以帮助我们更好地理解设计模式的应用场景和实现方式。以 Spring 框架为例,它是一个非常成熟的 Java 框架,里面广泛应用了各种设计模式。在学习 Spring 框架源码的过程中,我们可以得到以下一些感悟: 单例模式是 Spring 框架中最常用的设计模式之一。Spring 框架中……
阅读全文
2024年3月6日
设计模式是解决问题的方案,从大神的代码中学习对设计模式的使用,可以有效提升个人编码及设计代码的能力。本系列博文用于总结阅读过的框架源码(Spring 系列、Mybatis)及 JDK 源码中 所使用过的设计模式,并结合个人工作经验,重新理解设计模式。 本篇博文主要看一下行为型的几个设计模式,即……
阅读全文
2024年3月6日
设计模式是解决问题的方案,从大神的代码中学习对设计模式的使用,可以有效提升个人编码及设计代码的能力。本系列博文用于总结阅读过的框架源码(Spring 系列、Mybatis)及 JDK 源码中 所使用过的设计模式,并结合个人工作经验,重新理解设计模式。 本篇博文主要看一下结构型的几个设计模式,即……
阅读全文
2024年3月6日
设计模式是解决问题的方案,从大神的代码中学习对设计模式的使用,可以有效提升个人编码及设计代码的能力。本系列博文用于总结阅读过的框架源码(Spring 系列、Mybatis)及 JDK 源码中 所使用过的设计模式,并结合个人工作经验,重新理解设计模式。 本篇博文主要看一下创建型的几个设计模式,即……
阅读全文
2024年3月6日
Spring、Netty、Mybatis 等框架的代码中大量运用了 Java 多线程编程技巧。并发编程处理的恰当与否,将直接影响架构的性能。本章通过对 这些框架源码 的分析,结合并发编程的常用技巧,来讲解多线程编程在这些主流框架中的应用。 Java 内存模型 JVM 规范 定义了 Java 内存模型 来屏蔽掉各种操作系统、虚拟……
阅读全文
2024年3月6日
简介 AbstractQueuedSynchronizer 是 Doug Lea 大师创作的用来构建锁或者其他同步组件的基础框架类。J.U.C 中许多锁和并发工具类的核心实现都依赖于 AQS,如:ReentrantLock、ReentrantReadWriteLock、Semaphore、CountDownLatch 等。 AQS 的源码中 方法很多,但主要做了三……
阅读全文
2024年3月6日
Semaphore 信号量,可用于控制一定时间内,并发执行的线程数,基于 AQS 实现。可应用于网关限流、资源限制 (如 最大可发起连接数)。由于 release() 释放许可时,未对释放许可数做限制,所以可以通过该方法增加总的许可数量。 获取许可 支持公平和非公平模式,默认非公平模式。公平模式无论是否有许可,都会先判断是否有线程在……
阅读全文
2024年3月6日
类图结构 J.U.C 的锁组件中 类相对较少,从 JDK 相应的包中也能看出来,下图标记了其中最主要的几个接口和类,也是本文要分析的重点。 下图 将这几个接口和类 以类图的方式展现出来,其中包含了它们所声明的主要方法。 Lock 组件 Lock 组件的结构很简单,只有一个接口和一个实现类,源码如下。 1 2 3 4 5 6 7 8 9 10 11 12 13 14……
阅读全文
2024年3月6日
利用 IDEA 整理类图还是蛮不错的,虽然这个功能 BUG 很多。下图是 J.U.C 并发包中所有类组成的类图,源码看多了 再去整理这个图,感觉还是很爽的。 根据功能,主要划分了六个部分,其中比较重要的是:线程池及其相关类、并发容器、AQS 与锁与同步工具类、原子类。图可能整理的不够细致,但看着这些类,回想一下其中……
阅读全文