Tonny's Blog

莫等闲, 白了少年头, 空悲切


  • 首页

  • 标签

  • 分类

  • 归档

Spring启动过程分析

发表于 2018-03-01 | 更新于 2021-02-25 | 分类于 SourceCode , Spring

AbstractApplicationContext#refresh

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
public void refresh() throws BeansException, IllegalStateException {
synchronized (this.startupShutdownMonitor) {
prepareRefresh();

ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
prepareBeanFactory(beanFactory);

try {
postProcessBeanFactory(beanFactory);
invokeBeanFactoryPostProcessors(beanFactory);
registerBeanPostProcessors(beanFactory);
initMessageSource();
initApplicationEventMulticaster();
onRefresh();
registerListeners();
finishBeanFactoryInitialization(beanFactory);
finishRefresh();
}
catch (BeansException ex) {
destroyBeans();
cancelRefresh(ex);
throw ex;
}
}
}
阅读全文 »

Spring零碎知识点

发表于 2018-03-01 | 更新于 2021-06-29 | 分类于 SourceCode , Spring
  • Environment对象初始化时间点
    容器初始化时, 设置配置文件路径AbstractRefreshableConfigApplicationContext#setConfigLocations, 内部调用了resolvePath(), 该方法首先通过AbstractApplicationContext#getEnvironment()获取ConfigurableEnvironment对象, 因为是第一次获取, 所以会首先createEnvironment()
    阅读全文 »

Spring中有用的工具类

发表于 2018-03-01 | 更新于 2021-02-25 | 分类于 SourceCode , Spring
  • StringUtils

  • ObjectUtils

  • BeanUtils

  • ClassUtils

  • ReflectionUtils

阅读全文 »

Java源码 - TheadLocal

发表于 2018-02-28 | 更新于 2021-02-25 | 分类于 SourceCode , JDK

源码基于JDK1.8

通常的用法:

1
2
3
4
5
6
7
8
9
10
private static ThreadLocal<Map> localContext = new ThreadLocal<Map>();

public static void putLocalContext(Object key, Object value) {
Map<Object, Object> context = localContext.get();
if (context == null) {
context = new HashMap<Object, Object>();
localContext.set(context);
}
context.put(key, value);
}
阅读全文 »

Linux之hostname那些事

发表于 2018-02-28 | 更新于 2021-02-25 | 分类于 Linux , Hostname

查看当前hostname

1
2
3
4
hostname
uname -n
cat /proc/sys/kernel/hostname
sysctl kernel.hostname
阅读全文 »

Java源码 - Collection - LinkedList

发表于 2016-09-12 | 更新于 2021-02-25 | 分类于 SourceCode , JDK

源码基于JDK1.7

LinkedList不仅实现了List接口, 同时还实现了Deque接口, 所以还可以当双端队列去用.

阅读全文 »

Linux系统及硬件信息查看

发表于 2016-09-02 | 更新于 2021-08-06 | 分类于 linux , Hardware

物理服务器型号: Dell R720

服务器

命令

  • dmidecode | grep "Product Name": 查看服务器型号(使用root执行)

    1
    2
    3
    [root@cluster143 mcc]# dmidecode | grep "Product Name"
    Product Name: PowerEdge R720
    Product Name: 068CDY
    阅读全文 »

Java源码 - Collection - ArrayList

发表于 2016-08-26 | 更新于 2021-02-25 | 分类于 SourceCode , JDK

源码基于JDK1.7

hierarchy

成员变量

  • private static final int DEFAULT_CAPACITY: 默认容量, 值为10
  • private transient Object[] elementData: 实际存储元素的数组
  • private static final Object[] EMPTY_ELEMENTDATA = {};: 空数组, 默认使用该数组存储元素
  • private int size: 保存的元素的个数, 并不是数组的长度, 加入移除元素, 该值需要减1, 而数组长度, 即lenght属性是不变的.
  • private static final int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8: 数组最大长度, 按注释说的, 减8是因为某些虚拟机会保留部分header words, 超过Integer.MAX_VALUE - 8可能会导致OutOfMemoryError.
    阅读全文 »

Markdown语法

发表于 2016-08-18 | 更新于 2021-02-25 | 分类于 Tools , Writting

Markdown简介

Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— 维基百科

区块元素

段落和换行

一个 Markdown 段落是由一个或多个连续的文本行组成, 它的前后要有一个以上的空行(若某一行只包含空格和tab, 则该行也会被视为空行). 普通段落不该用空格或制表符来缩进. 段落内允许强迫换行(插入换行符).
如果想强制新起一行则需要先输入2个以上的空格, 然后回车(好像不同编辑器效果不同).

阅读全文 »

1…45
Tonny Yi

Tonny Yi

Coding, Life, Zen

49 日志
42 分类
59 标签
GitHub E-Mail
Creative Commons
© 2021 Tonny Yi
由 Hexo 强力驱动
|
主题 — NexT.Mist