- 博客(32)
- 收藏
- 关注
原创 HashMap源码解析(jdk1.8)
java.util.HashMap实现了java.util.Map接口,是存储key、value的一种数据结构。key 和value都可以为null,但是key不可以重复,若是重复则会覆盖。jdk1.7中,HashMap是数组+链表实现的;jdk1.8中,HashMap是数组+链表+红黑树实现的。下面主要介绍jdk1.8的Hash源码。
2024-08-12 19:56:51
971
原创 Spring MVC源码详解
Handler是controller中带请求路径的方法,最常用的是Controller中@RequestMapping注解标注的方法。如下面getProduct方法是Handler,loginPage方法不是Handler。@Slf4j@Autowiredlog.error("你妹的");model.addAttribute("name","登科");Spring中共四种Handler加RequestMapping注解的方法(常用的)
2024-08-10 17:21:57
802
原创 Spring中Bean的生命周期及源码详解
org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#initializeBean(java.lang.String, java.lang.Object, org.springframework.beans.factory.support.RootBeanDefinition)是初始化bean的方法,里面主要包含初始化前、初始化、初始化后三个步骤。依赖注入就是属性填充。
2024-08-06 12:09:40
1178
原创 Spring 三级缓存解决循环依赖源码分析
上面代码的链路已经了解,做下总结。1.1 首先获取ServiceA的实例AbstractBeanFactory.getBean(String name),name是"serviceA"1.2.1 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton,从三级缓存中获取serviceA实例,未获取到。如果取到了直接返回。
2024-08-05 19:17:50
721
1
原创 Redis学习笔记
synchronize、Lock接口等都是单机锁,分布式系统中的分布式锁应该独立于我们的业务服务,如用redis中间件实现。只能有一个线程访问互斥资源其他线程要么等待要么报错把数据分配到不同节点,如果某些节点数据异常,其他节点可以正常工作。类似于微服务的思想。
2024-06-17 10:27:29
876
原创 设计模式之责任链模式
责任链模式是将链中的每一个节点看成是一个对象,每个节点处理的请求不同,且内部自动维护一个下一个节点对象。当一个请求从链的首端发出时,会沿着链的路径依次传递给每一个节点对象,直至有对象处理这个请求。属于行为型设计模式。
2024-06-17 10:25:10
295
原创 设计模式之模板方法模式
模板方法模式,又叫模板模式,指定义一个操作中算法的框架,而将一些算法步骤的实现延迟到子类中。使子类可以不改变算法结构,只改变算法的特定步骤。属于行为设计模式。
2024-06-13 19:16:03
340
原创 设计模式之工厂模式
工厂模式分为简单工厂、工厂方法、抽象工厂,属于创建型设计模式。工厂模式的特点是将创建产品对象的过程通过工厂包装起来,客户端只需要调用,不需要关系产品创建的细节。
2024-06-01 14:54:06
405
原创 java 类加载器
本文简单介绍jvm的三种类加载器,并介绍类加载机制,双亲委派模式。结合代码,验证理论。最后介绍了如何自定义类加载器,并附上代码及测试结果及测试结果的分析。
2022-01-05 23:13:39
495
原创 ArrayList源码分析
ArrayList概述本文讲述的是jdk1.8的ArrayList。ArrayList位于jdk的rt.jar中,java.util.ArrayList。ArrayList的继承、实现关系首先看ArrayList的继承、实现关系。public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializ
2021-10-10 20:30:49
109
原创 变量、方法的访问权限
类成员的访问权限总体介绍java有三个访问权限修饰词,public、protected、private,如果不加以上的修饰词,则是默认的friendly(包访问权限)。public:公共权限,无论是谁,无论在哪,都可以访问该成员。protected:继承访问权限(受保护的),同一个包的类、及其子类可以访问该成员。private:私有权限,只允许本类内部可以访问该成员。friendly 友好(默认的):只允许同一个包内的类访问该成员分析难点public和private比较好理解,不做过多解
2021-09-19 16:28:44
209
原创 ArrayList源码之6260652 bug号
ArrayList源码之6260652 bug号List的toArray()方法有多个实现,主要关注两个。原因是分析ArrayList源码时,解决构造方法中的“c.toArray might (incorrectly) not return Object[] (see 6260652)”注释。ArrayList的构造方法源码public ArrayList(Collection<? extends E> c) { elementData = c.toArray();
2021-09-02 22:02:40
238
原创 Java 1.8 RandomAccess接口
Java 1.8 RandomAccess接口简介RandomAccess接口从jdk1.4开始提供,接口中没有定义任何方法,是标志接口,说明实现该接口的List支持快速随机访问功能。标志接口标志接口是没有任何方法和属性的空接口,仅仅表明它的类属于某种特定类型,用法如下:if(obj instanceof Cloneable) {………} 常用的标志接口示例:java.io.Serializable:序列号接口。未实现此接口的类将无法使其任何状态序列化或反序列化.为保证 serialVer
2021-09-02 20:18:38
172
原创 Java集合简介
Java集合框架集合与数组的区别集合长度可变,数组长度不可变 集合中存储的为引用对象,数组中可以存储引用对象,也可以存储基本类型集合中存储的内容可以不是同一类型,数组中存储的内容必须是同一类型List接口List的特点是元素可重复,有序(数据add的顺序)ArrayList底层实现为动态数组,线程不安全;获取数据时(get方法)快,直接根据索引找到数据;插入删除数据慢,因为需要挪动数组中的元素;List长度可变,是通过数组扩容实现的,数组的扩容是通过数组拷贝实现的,因此初始化l
2021-09-01 21:08:20
51
空空如也
Redission 实现的分布式锁
2024-08-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人