2024年3月6日
在 Mybatis 的基础支持层主要看一下支撑 ORM 实现 的底层代码。 1 反射工具包 1.1Reflector Reflector 类 主要实现了对 JavaBean 的元数据属性的封装,比如:可读属性列表,可写属性列表;及反射操作的封装,如:属性对应的 setter 方法,getter 方法 的反射调用。源码实现如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32……
阅读全文
2024年3月6日
作为一名初入职场的开发者,最开始是在逛 B 站刷视频时看到的一个 Spring 源码阅读解析,当时作为一个只知道 SSH 和 CRUD 的 boy,看完后心里就两个词儿“卧槽!牛 B 啊!”而且在去年秋招面试阿里时几乎每次都会被面试官问道“有阅读过什么开源框架吗?”每次我都只能一脸便秘的“嗯…,呃…,啊…,木得…”。这在……
阅读全文
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() 释放许可时,未对释放许可数做限制,所以可以通过该方法增加总的许可数量。 获取许可 支持公平和非公平模式,默认非公平模式。公平模式无论是否有许可,都会先判断是否有线程在……
阅读全文