自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 从0了解线程池,教你讲哭面试官。

从0了解线程池,教你讲哭面试官。线程池作用线程池结构线程池核心参数核心方法一、executeworkerCountOfaddWorkerrunWorker线程池作用很多同学在工作中使用线程池的场景并不多,所以对线程池的了解也不多。但在面试中,线程池的面试比重还是挺大的。在这里我给大家讲下我对线程池的理解。1.线程池可以复用线程,减少重复创建线程的消耗。大家应该知道线程的创建和销毁,在任务耗时不大的时候, 会大量占用CPU和消耗性能。如果这时候使用线程池的话,能有效的复用线程,减少不必要的损耗。

2022-04-07 16:19:16 137

原创 HashMap源码攻克

构造函数 public HashMap(int initialCapacity //容量, float loadFactor//加载因子) { if (initialCapacity < 0) throw new IllegalArgumentException("Illegal initial capacity: " + initialCapacity);

2021-08-05 18:55:14 85

原创 从零开始学并发四.CountDownLatch

CountDownLatchCountDownLatchCountDownLatch(int count)await()acquireSharedInterruptibly(int arg)tryAcquireShared(int acquires)doAcquireSharedInterruptibly(arg)countDown()releaseShared(int arg)tryReleaseShared(arg)doReleaseShared()CountDownLatch CountDownL

2021-08-04 19:48:51 158

原创 从零开始学并发三.ReentrantLock

ReentrantLockReentrantLock的结构Nodelock()acquire(int arg)tryAcquire(int acquires)acquireQueued(final Node node, int arg)addWaiter(Node mode)enq(final Node node)shouldParkAfterFailedAcquire(p, node)parkAndCheckInterrupt()cancelAcquire(Node node)unparkSuccesso

2021-08-03 17:12:50 115

原创 从零开始学并发二.synchronized

synchronizedsynchronized作用synchronized 的优化1.锁升级策略2.锁消除synchronized 底层原理synchronized作用修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;synchronized(this){}修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法 的对象;public synchronized void method

2021-07-19 17:48:25 65

原创 从零开始学并发一.计算机基础

计算机基础冯诺依曼计算机模型计算机五大核心CPU组成三级缓存总结冯诺依曼计算机模型现代计算模型是基于冯诺依曼计算机模型的,计算机在运行时,先从内存中取出第一条指令,通过控制器的译码,按指令的要求,从存储器中取出数据进行指定的运算和逻辑操作等加工。然后按地址把结果放回内存中。计算机五大核心控制器:是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度程序、数据、地址、协调计算机各部分工作及内存与外设的访问等运算器:主要是对数据进行各种的逻辑运算和算术运算存储器:存

2021-07-19 16:51:34 89

原创 spring启动流程探索八、refresh()(7)

spring探索第八节initMessageSource()initApplicationEventMulticaster()onRefreshregisterListenersinitMessageSource()这个方法其实是就是为了初始化MessageSource,如果在此上下文中未定义,则使用父项。protected void initMessageSource() { ConfigurableListableBeanFactory beanFactory = getBeanFactor

2021-05-12 10:56:42 76

原创 spring启动流程探索七、refresh()(6)registerBeanPostProcessors(ConfigurableListableBeanFactory beanFactory)

spring探索第六节一级目录一级目录

2021-04-29 10:03:48 144

原创 spring启动流程探索六、refresh()(5)invokeBeanFactoryPostProcessors

spring探索第六节invokeBeanFactoryPostProcessorsinvokeBeanFactoryPostProcessors这个也是影响spring容器生命周期非常重要的方法,他第一次执行和后面的执行也是后面的执行是不同的。因为他第一次会去调用ConfigurationClassPostProcessor的实现。我们开始上代码把/** * Prepare the Configuration classes for servicing bean requests at runt

2021-04-28 10:42:08 67

原创 spring启动流程探索五、refresh()(4)invokeBeanDefinitionRegistryPostProcessors

spring探索第五节invokeBeanDefinitionRegistryPostProcessors第一次调用invokeBeanDefinitionRegistryPostProcessorsprocessConfigBeanDefinitions(registry)invokeBeanDefinitionRegistryPostProcessors这个方法里面做的工作是很多,他首先会去刷新beanDefinitionNames,而且有很多加载逻辑。他在bean容器的生命周期有很重要的工作。我

2021-04-22 17:19:34 366

原创 spring启动流程探索四、refresh()(3)getBeanNamesForType-isTypeMatch

spring探索第四节getBeanNamesForTypeisTypeMatch(beanName, type, allowFactoryBeanInit)getBeanNamesForType这个方法其实讲起来还挺复杂的,因为他里面调用很多的其他方法,而那些其他的方法内容也很繁琐,所以我先大家定个主题,我们在这只探讨和上个章节展开一致的内容,是沿着我们refresh的流程往下走的,所以如果大家在看的时候要明确。上代码:beanFactory.getBeanNamesForType(BeanFact

2021-04-21 14:35:42 631

原创 spring启动流程探索三、refresh()(2)invokeBeanFactoryPostProcessors

spring源码探索三invokeBeanFactoryPostProcessorsPostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessorsinvokeBeanFactoryPostProcessors protected void invokeBeanFactoryPostProcessors(ConfigurableListableBeanFactory beanFactory) { // 核心方法 PostProces

2021-04-21 11:14:01 104

原创 spring启动流程探索二、refresh()(1)

spring探索第二节refresh()prepareRefresh()obtainFreshBeanFactoryrefreshBeanFactoryprepareBeanFactory(beanFactory)registerSingleton(String beanName, Object singletonObject)updateManualSingletonNames()super.registerSingleton(beanName, singletonObject);addSingleton

2021-04-20 16:43:15 252

原创 spring启动流程探索一、register(componentClasses);

spring探索第一节spring启动流程开始AnnotationConfigApplicationContext(Class<?>... componentClasses)register(componentClasses);AnnotatedGenericBeanDefinition(beanClass);resolveScopeMetadataapplyScopedProxyModespring启动流程spring用了很多年了,也会偶尔去看下,或者说去研究下spring源码,看spri

2021-04-20 15:29:39 722

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除