- 博客(70)
- 资源 (2)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Spring源码-0-基础概念导读
Spring源码-0-基础概念导读简介用于介绍 Spring 中常见类的说明,及特殊类的重要字段说明。类介绍ClassPathXmlApplicationContextAbstractXmlApplicationContextAbstractRefreshableConfigApplicationContextAbstractRefreshableApplicationContextAbstractApplicationContextConfigurableApplicationCon
2022-03-15 14:01:30
469
原创 RocketMQ一条消息从生产者到消费者的流程
生产者 producer生产、创造消息,会把消息发送到 broker 中消息代理服务 broker负责消息代理中转,消息并非直接从生产者发送到消费者,而是要经过 broker 的处理、存储、中转最终到达消费者消费者 consumer负责消费消息,消费者会从 broker 拉取消息,并把消息提供给应用程序主题 topic表示一类消息的集合,每个主题包含若干条消息,每条消息只能属于一个主题,是RocketMQ进行消息订阅的基本单位。nameserver。
2023-06-17 16:49:50
613
原创 Spring源码-DefaultListableBeanFactory-源码解读
/** * Spring's default implementation of the {@link ConfigurableListableBeanFactory} Spring 对 ConfigurableListableBeanFactory 和 BeanDefinitionRegistry * and {@link BeanDefinitionRegistry} interfaces: a full-fledged bean factory 的默认实现:一个基于 bean definiti.
2022-03-19 18:24:56
426
原创 Spring源码-AbstractAutowireCapableBeanFactory-源码解读
/** * Abstract bean factory superclass that implements default bean creation, 默认实现了超类 Abstract bean 的创造 bean * with the full capabilities specified by the {@link RootBeanDefinition} class. 伴随着 RootBeanDefinition class 去创造完整的 bean * Implements the {@
2022-03-19 17:01:16
498
原创 Spring源码-ConfigurableListableBeanFactory-源码解读
/** * Configuration interface to be implemented by most listable bean factories. 配置接口将由大多数 listable bean factories 实现 * In addition to {@link ConfigurableBeanFactory}, it provides facilities to 除了 ConfigurableBeanFactory,它提供功能去 * analyze and modify bean
2022-03-19 15:56:28
424
原创 Spring源码-AutowireCapableBeanFactory-源码解读
/** * Extension of the {@link org.springframework.beans.factory.BeanFactory} 扩展自 BeanFactory 的街口,实现了能够凭借 bean 工厂去自动注入 bean 实现 * interface to be implemented by bean factories that are capable of 前提是他们希望为现有的 bean 实例公开此功能 * autowiring, provided that the
2022-03-19 15:12:11
550
原创 Spring源码-AbstractBeanFactory-源码解读
/** * Abstract base class for {@link org.springframework.beans.factory.BeanFactory} BeanFactory 接口的抽象类实现 * implementations, providing the full capabilities of the 提供了 ConfigurableBeanFactory 的 spi * {@link org.springframework.beans.factory.co.
2022-03-18 20:42:27
305
原创 Spring源码-ConfigurableBeanFactory-源码解读
/** * Configuration interface to be implemented by most bean factories. Provides 大多数 bean 工厂所实现的配置接口 * facilities to configure a bean factory, in addition to the bean factory 除了接口 facilities 的方法以外,还提供配置一个 bean factory 的工具, * client methods in the {@lin
2022-03-18 19:57:11
460
原创 Spring源码-ClassPathXmlApplicationContext-源码解读
/** * Standalone XML application context, taking the context definition files 独立的 XML application context,从 class path 拿取 definition files * from the class path, interpreting plain paths as class path resource names 解释绝对路径,将普通路径解释为包含包路径的类资源路径名,例如(my
2022-03-16 20:35:46
790
原创 Spring源码-AbstractXmlApplicationContext-源码解读
/** * Convenient base class for {@link org.springframework.context.ApplicationContext} 实用 ApplicationContext 实现 * implementations, drawing configuration from XML documents containing bean definitions 凭借 XmlBeanDefinitionReader 从包含 bean definitions 的 x.
2022-03-16 20:13:16
851
原创 Spring源码-AbstractRefreshableConfigApplicationContext-源码解读
/** * {@link AbstractRefreshableApplicationContext} subclass that adds common handling |AbstractRefreshableApplicationContext 的子类 * of specified config locations. Serves as base class for XML-based application 添加了对指定配置位置的公共处理。 * context implementations
2022-03-16 19:42:09
328
原创 Spring源码-AbstractRefreshableApplicationContext-源码解读
/** * Base class for {@link org.springframework.context.ApplicationContext} 基础类 ApplicationContext * implementations which are supposed to support multiple calls to {@link #refresh()}, 这个实现支持多次调用 refresh() * creating a new internal bean factory instance
2022-03-16 00:15:00
355
原创 Spring源码-AbstractApplicationContext-源码解读
/** * Abstract implementation of the {@link org.springframework.context.ApplicationContext} ApplicationContext 接口的抽象实现 * interface. Doesn't mandate the type of storage used for configuration; simply 不强制要求配置的存储类型 * implements common context functionali
2022-03-15 20:59:24
372
原创 Spring源码-ConfigurableApplicationContext-源码解读
/** * SPI interface to be implemented by most if not all application contexts. spi 接口将由大多数 application contexts 所实现 * Provides facilities to configure an application context in addition 除了 ApplicationContext 所提供的 application context 客户端方法外, * to the ap
2022-03-15 19:54:33
916
原创 Spring源码-ApplicationContext-源码解读
/** * Central interface to provide configuration for an application. 主要的接口提供配置给一个 application * This is read-only while the application is running, but may be 当 application 运行时,它是仅读的,但是 * reloaded if the implementation supports this. 实现支持,可能实现重新加载
2022-03-15 13:28:29
260
原创 Spring源码-HierarchicalBeanFactory-源码解读
/** * Sub-interface implemented by bean factories that can be part 由 bean factory 实现的子接口,等级制度的一部分 * of a hierarchy. * * <p>The corresponding {@code setParentBeanFactory} method for bean可以在 ConfigurableBeanFactory 接口中 * factories that allow sett
2022-03-14 21:17:58
536
原创 Spring源码-ListableBeanFactory-解读
/** * Extension of the {@link BeanFactory} interface to be implemented by bean factories 扩展自 BeanFactory 接口,可以枚举通过 bean 工厂实现的所有 bean 实例 * that can enumerate all their bean instances, rather than attempting bean lookup 而不是尝试按照客户的请求通过 name 一个个的查找 * by na
2022-03-14 21:01:09
603
原创 Spring源码-BeanFactory-解读
/** * The root interface for accessing a Spring bean container. 用于访问 Spring bean 容器的根接口 * This is the basic client view of a bean container; 这是一个 bean 容器的基本客户端视图 * further interfaces such as {@link ListableBeanFactory} and 更进一步的接口例如 ListableBeanFactor
2022-03-14 20:13:44
345
原创 从零写一个基于 AQS 实现的 Lock(一)
AQSgitee 地址https://gitee.com/haohaos/aqs首先考虑 AQS 解决了什么?也就是它能用来做什么?java.util.concurrent 包下存在很多的并发工具类都是基于 AQS 实现的,例如 ReentrantLock,CountDownLatch。在并发场景下锁的应用是最多的。但是 synchronized 在一些场景下显的太重了。所以可以考虑使用 Lock 的实现类,例如 ReentrantLock 来实现锁机制。下面以一个 Lock 的视角来学习 AQ
2021-09-14 15:55:54
136
原创 git 入门到入土
git 入门到入土常用命令(本地)命令建议粗略过一遍配合概念食用add将文件添加到暂存区commit -m <提交描述信息>提交文件到 git 仓库对于一个 git 仓库中的文件按照存在位置,主要分为三个工作区:开发者实际操作的文件夹暂存区:从工作区提交到 git 仓库中间过程,文件暂时存放的地方,对应 .git 文件夹下的 index 文件git 仓库:git 实际进行版本控制的地方,对应 .git 文件夹下的 objects 文件夹,只有提交后对应文件才归
2021-06-22 13:54:52
183
1
原创 设计模式-工厂模式(工厂方法+抽象工厂)
工厂将创建对象实例交给工厂,以创建不同的对象,减小系统耦合度。实例假设要生产不同的上衣,短袖/棉袄,我们应该怎么做?// 上衣抽象类public abstract class TopClothes { public abstract void show();}// 短袖public class ShortSleeve extends TopClothes{ @Override public void show() { System.out.println("我是短袖适合夏天穿"
2021-04-10 14:23:55
122
原创 设计模式-模板方法
模板方法父类中定义一个算法的框架,这个框架的一些步骤由子类实现,可以在子类不修改算法结构的前提下自定义某些步骤。代码网络连接都需要遵循 TCP 四层协议,依次是 应用层,链路层,网络层,网络接口层。对应的顺序是固定不变的,但是其中四层里面具体怎么做可以由自己决定。public abstract class Web{ void request(){ // 调用应用层 applicationLayer(); // 链路层 linkL
2021-03-26 21:55:36
113
2
原创 设计模式-原型模式
原型模式简介复制已有对象,生成一个与属性完全相同复制品。首先你必须遍历所有变量,但是有些对象的变量并不是相对于所有类可见的。我们可以把克隆过程委派给被克隆的实际对象。类图代码public interface Prototype { Prototype copy();}public class PrototypeA implements Prototype { private String name; private int age; public PrototypeA(Stri
2021-03-21 18:12:55
132
1
翻译 堆,方法区,永久代,元空间 之间的关系
堆,方法区,永久代,元空间 之间的关系方法区和永久代的关系方法区是 《Java虚拟机规范 》中的规范,在 HotSpot 虚拟机中,JDK 6.0 及以前由永久代实现,就如同 Java 中的接口和实现一样。永久代并不是很好的方法区实现,《Java虚拟机规范》中方法区不需要连续的内存并且可以选择固定大小或可扩展,而永久代有 -XX:MaxPermSize 上限,即使不设置也有默认大小,很容易造成内存溢出。堆和方法区的关系《Java虚拟机规范》把方法区描述为堆的逻辑部分,但它却有一个名字 No
2021-03-06 16:23:34
1289
1
原创 设计模式-桥接模式
桥接模式简介将一些关系紧密的类拆分为抽象和实现两个独立的层次结构。例子例如空调和电视机,它们都有自己的遥控器,现在让你设计类该如何设计?分别设立空调,电视机,及它们的遥控器类问题:各个类之间耦合度过高,每一个设备都依赖于自己的遥控器,不利于扩展更改。解决:为设备和遥控器抽象处理,建立设备父类及对应的子类空调,电视机等—遥控器父类及对应的遥控器子类类图代码// 设备父类class Device{}// 空调class AirConditioner extends Devi
2021-02-28 17:55:13
70
1
原创 设计模式-组合模式
组合模式简介允许将对象组合成树状结构来表现,能够使客户以一致的方式处理个别方式以及对象组合。即将对象组装成树状结构,有的对象是叶子节点(没有子节点),有的对象是非叶子节点(有子节点)。实例电商平台中经常会对商品进行分类,例如一级分类:手机,生活用品等,手机之下又有二级分类:智能机,老年机等。智能机下有三级分类oppo,vivo,小米等。也有可能有四级分类,或二级即为具体商品。一个大盒子里面可能装有小盒子或物品,小盒子里也有可能装有更小的盒子或物品。类图引用设计模式之禅Head F
2021-01-29 00:16:07
137
原创 设计模式-适配器模式
适配器模式简介介于不兼容的接口之间使其可以相互工作。实例手机的电源适配器,可以将 220V 电压转化为你手机所需要的电压java.util.Arrays#asList()将一组数据转化为 List 集合后端数据处理中有些数据是 xml 格式,有些是 json 格式,提供之间转化的工具类。类图也可用作两种格式间的相互转换引用https://refactoringguru.cn/design-patterns/adapter/java/example马士兵-设计模式.
2021-01-27 01:21:13
129
原创 设计模式-状态模式
状态模式简介相同的操作对于不同状态产生不同的作用。类图代码设计一个手机类假设按下音量减小键,此时手机有三个状态会产生不同的反应 open(打开状态此时处于亮屏按下向下键音量减小),close(此时处于关闭状态,按下手机亮屏),document(此时处于阅读文档状态按下向下翻页)public class Phone { String state; public void downKey() { if(state.equals("close")) { System.out.p
2021-01-23 23:53:00
125
原创 设计模式-外观模式
外观模式简介又称门面模式,如果你的程序使用非常多的类库整合,但是仅提供比较少的功能可以用到外观模式,将繁杂的细节封装起来。应用例如 web 开发中上传一件商品,需要调用 用户模块,购物车模块,商品模块,支付模块 等等非常繁杂的模块,可以把这些模块的复杂调用封装起来。仅暴露给外部一个简单的接口即可。类图...
2021-01-21 23:10:38
92
原创 设计模式-享元模式
享元模式简介是池技术的重要实现方式,用于共享对象。应用Java 八大基本类型的包装类和 String例如开发一个射击类游戏,但是过多子弹对于内存的消耗极大,如果子弹不能及时回收可能会造成内存溢出,使用享元模式可以使子弹重复利用。类图代码// 伪代码// 享元类class Flyweight{};// 享元工厂class FlyweightFactory{ Flyweight flyweights[]; Flyweight getFlyweight()
2021-01-19 00:04:34
132
1
原创 不同创建 String 的方式的区别:String s1 = “abc“; String s2 = new String(“abc“);
简介JVM 初始化时会维护9个对象池,会维护8个基本类型的包装类对象和String对象,新建时会先去对象池查看有没有对象,有取出没有新建。查看区别 String s1 = "abc"; String s2 = new String("abc"); String s3 = "abc"; String s4 = new String("abc"); // char value[] System.out.println(s1 == s2); // false,引用不同,一个是单独
2021-01-18 23:42:58
562
原创 设计模式-观察者模式
观察者模式简介定义对象中一种一对多的依赖关系,使得每一个对象改变状态,所有依赖于它的对象都会得到通知并自动更新。类图trator\AppData\Roaming\Typora\typora-user-images\image-20201220181107763.png)]应用java.util.Observer/ java.util.Observable (极少在真实世界中使用)java.util.EventListener的所有实现 (几乎广泛存在于 Swing 组件中)坦克大战,子弹
2021-01-18 00:21:07
95
原创 设计模式-装饰器模式
装饰器模式简介将对象放入特殊的装饰对象中从而使其获得新的行为应用java.io.InputStream、 OutputStream、 Reader 和 Writer 的所有代码都有以自身类型的对象作为参数的构造函数。java.util.Collections; checkedXXX()、 synchronizedXXX() 和 unmodifiableXXX() 方法。javax.servlet.http.HttpServletRequestWrapper 和 HttpServlet
2021-01-17 00:16:45
295
2
原创 设计模式-策略模式
策略模式简介封装好一个可以重复利用的算法族,以做到哪里需要哪里用。避免有多个相同或相似的算法需要使用大量的 if else实际应用JAVA AWT 中的 LayoutManager,可以使用多种布局方式,即为不同的策略坦克大战中如果需要发射不同的炮弹,可以指定不同的策略进行替换类图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SVy6yoJu-1610723318733)(C:\Users\Administrator\AppData\Roaming\Typ
2021-01-15 23:10:12
129
原创 设计模式-单例模式
单例模式简介保证某一个类在内存中仅有一个实例应用Spring 中的 bean 全部是单例,一些常见的工厂类或管理类都是单例代码饿汉式,静态域初始化,在 JVM 加载的时候直接放到内存里,注意私有化构造方法使实例仅类本身可以创建public class Example01 { private static final Example01 INSTANCE = new Example01(); private Example01() {} public static Exampl
2021-01-14 23:22:27
153
2
原创 mysql 隔离级别及对应的并发问题
并发问题脏读:一个事务开启,修改数据但是并没有提交,此时另一个事务进来读取到并没有提交的数据,读取到了脏数据。不可重复读:一个事务开启,读取一条数据值,另一个事务开启改变这条数据的值提交,第一个事务再次读取这条数据发现与第一次读取的值不一样。幻读:一个事务开启修改了一片数据(例如整张表),另一个事务开启插入一条数据,第一个事务读取数据发现有一条数据没有被自己修改过,以为发生了幻觉。事务隔离级别事务相关操作开启事务:begin;提交事务:commit;隔离级别相关操作查看隔离级别
2020-12-12 20:45:44
181
原创 Java 位运算符
简介将数值进行二进制层面上的比较再转换成十进制种类^(and) 转换成二进制,对应两个位置一样变为0,不一样变为1|(or) 转换成二进制,只要有一个是1,就变成1&(xor) 转换成二进制,两个位都是1,才变成1,否则变成0~(not) 转换成二进制,原先是0的变成1,原先是1的变成0>> 转换成二进制,向右移动两位,移除的位省去<< 转换成二进制,向左移动两位即后面填充两个零<<< 转换成二进制,向左移动两位,同时用 0 填充高位,
2020-12-06 15:53:33
86
原创 蓝桥杯国赛10-JavaB-8-大胖子走迷宫
package b10;import java.util.HashMap;import java.util.HashSet;import java.util.Scanner;import java.util.Set;/* * 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1 × 1 的面积,小明要占用 5 × 5 的面积。由于小明太胖了,所以他行动起来很不方便。当玩一些游戏时,小明相比小伙伴就吃亏很多。小明的朋友们制定了一个计划,帮助小明减肥。计划的主要内容是带小明玩一些游
2020-11-11 14:05:04
546
2
原创 蓝桥杯国赛8-JavaA-2-瓷砖样式
import java.util.HashMap;/* * 小明家的一面装饰墙原来是 3*10 的小方格。现在手头有一批刚好能盖住2个小方格的长方形瓷砖。瓷砖只有两种颜色:黄色和橙色。小明想知道,对于这么简陋的原料,可以贴出多少种不同的花样来。小明有个小小的强迫症:忍受不了任何2*2的小格子是同一种颜色。(瓷砖不能切割,不能重叠,也不能只铺一部分。另外,只考虑组合图案,请忽略瓷砖的拼缝)显然,对于 2*3 个小格子来说,口算都可以知道:一共10种贴法,如【p1.png所示】但对于
2020-11-10 15:24:59
261
原创 蓝桥杯-java-b9-4-整理玩具
package b9;import java.util.ArrayList;import java.util.HashMap;import java.util.Scanner;/* * 小明有一套玩具,一共包含NxM个部件。这些部件摆放在一个包含NxM个小格子的玩具盒中,每个小格子中恰好摆放一个部件。 每一个部件上标记有一个0~9的整数,有可能有多个部件标记相同的整数。 小明对玩具的摆放有特殊的要求:标记相同整数的部件必须摆在一起,组成一个矩形形状。如以下摆放是满足要求的:
2020-11-06 16:49:39
184
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人