- 博客(7)
- 收藏
- 关注
原创 AQS源码分析
一、前言 问题引入 @Controller public class TradeController { @Autowired private TradeService tradeService; @RequestMapping("/order") public String order() { tradeService.decStock(); return "success"; } } @Service public class
2022-04-04 20:54:24 434
原创 HashMap源码分析
1.方法 1.1 put() 1.1.1 首先看方法注释。需要注意的是,put的键已经存在映射时,会覆盖旧值,并返回旧值。这点之后再拓展说明。 public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } 1.1.2 哈希 /** * 计算key.hashCode()并将散列的(XOR)较高的位散布到较低的位。 * 因为该表使用2的幂次掩码,所以仅在当前掩码上方的位中发生
2021-05-10 21:06:59 79
原创 Spring源码--解决循环依赖
前言 在了解循环依赖前,需要对bean的创建流程十分熟悉,如果没有看过相关源码,可以参考:Spring源码–bean的创建流程 一、什么是循环依赖 简单来说,就是A依赖B,B依赖C,C依赖A。 循环依赖的情况下,对象创建时,所依赖的对象并不存在,导致创建出现问题。 循环依赖有两种情况: 1、构造器循环依赖 public class D { public D(C c) { ... } } public class C { public C(D d) { ...
2021-05-04 22:03:59 103 1
原创 Spring源码--bean的创建流程
一、核心方法reflesh() public void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // 准备工作,初始化Spring状态,并确认配置正确 prepareRefresh(); // 获取bean工厂 ConfigurableListableBeanFactory beanFactory = obtain
2021-05-04 17:38:01 116
原创 List源码分析--ArrayList
1.扩容机制 1.1.源码分析 List<Integer> list = new ArrayList<>(); for (int i = 0;i < 15;i++){ list.add(i); } 初始化: // 默认初始化一个空的object数组 public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEM
2021-04-24 11:04:20 68 1
原创 自定义@Autowired注解
前言介绍 @Autowired 可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作 手动实现 1. 新建一个普通Java工程 2.Autowired注解类 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) @Inherited @Documented public @interface Autowired { } 3.UserController类 public class UserCo
2021-04-18 08:58:34 546 1
原创 RabbitMQ 使用总结
Docker中RabbitMQ 的使用总结1.WEB界面1.1无法打开WEB界面2.2 后台页面信息显示不全 1.WEB界面 1.1无法打开WEB界面 运行容器时确保端口开启状态 docker run -di --name=mycloud_rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 仍无法访问 http://localhost:15672 默认不会开启管理后台页面,
2021-04-17 22:16:10 110 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人