- 博客(7)
- 收藏
- 关注
原创 AQS源码分析
一、前言问题引入@Controllerpublic class TradeController { @Autowired private TradeService tradeService; @RequestMapping("/order") public String order() { tradeService.decStock(); return "success"; }}@Servicepublic class
2022-04-04 20:54:24
503
原创 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
139
原创 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
164
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
198
原创 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
134
1
原创 自定义@Autowired注解
前言介绍@Autowired 可以对类成员变量、方法及构造函数进行标注,让 spring 完成 bean 自动装配的工作手动实现1. 新建一个普通Java工程2.Autowired注解类@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)@Inherited@Documentedpublic @interface Autowired {}3.UserController类public class UserCo
2021-04-18 08:58:34
640
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
212
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅