- 博客(9)
- 收藏
- 关注
原创 Kafka环境搭建
1、JDK的安装与配置。下载安装包:jdk-8u144-linux-x64.tar.gz解压:tar -zxvf jdk-8u144-linux-x64.tar.gzpwd获取当前解压的文件路径:/root/software/jdk1.8.0_144配置JDK的环境变量。修改/etc/profile文件并向其中添加如下配置:export JAVA_HOME=/root/software/jdk1.8.0_144export PATH=$PATH:$JAVA_HOME/binexport
2021-04-09 16:49:01
90
原创 分布式锁的实现的区别
对于 Redis 的分布式锁而言,它有以下缺点:它获取锁的方式简单粗暴,获取不到锁直接不断尝试获取锁,比较消耗性能。另外来说的话,Redis 的设计定位决定了它的数据并不是强一致性的,在某些极端情况下,可能会出现问题。锁的模型不够健壮。即便使用 Redlock 算法来实现,在某些复杂场景下,也无法保证其实现 100% 没有问题,关于 Redlock 的讨论可以看 How to do distributed locking。Redis 分布式锁,其实需要自己不断去尝试获取锁,比较消耗性能。但是另一方
2021-03-10 20:41:36
106
原创 快慢指针判断单链表是否有环证明问题。
1.判断单链表是否有环:使用快慢指针fast和slow,fast每次走两步,slow每次走一步,如果有环,肯定会相遇,如果没有,则指针fast遇到NULL退出。追及相遇问题。2.求有环单链表的环长在环上相遇后,记录第一次相遇点为Pos,之后指针slow继续每次走1步,fast每次走2步。在下次相遇的时候fast比slow正好又多走了一圈,也就是多走的距离等于环长。设从第一次相遇到第二次相遇,设slow走了len步,则fast走了2*len步,相遇时多走了一圈:环长=2*len-len3.求有
2021-03-08 16:40:28
423
原创 SpringIOC的启动流程
因为现在都是注解驱动,当我们使用**AnnotationConfigApplicationContext(**Class<?>… annotatedClasses)创建一个spring容器的时候,①他首先会去调用自己的无参构造方法,先调用父类的无参构造方法生成一个IOC容器,然后在自己的无参构造方法中创建了一个读取注解的bean定义(beanDefinition)读取器,创建一个扫描器,可以用来扫描包或者类,继而转化为beanDefinition。这里的扫描器(这里的scanner仅仅是为了程
2020-12-19 10:11:49
377
原创 AOP实现逻辑1
①在aop注解中@EnableAspectJAutoProxy,会通过@import向spring容器注册一个配置类,在配置类中想容器注入了一个AspectJAnnotationAutoProxyCreator这个类,这个是aop的核心,这个类实现了实现了BeanPostProcessor后置处理器,还实现了InstantiationAwareBeanPostProcessor,在Bean初始化完成前后做事情。还实现了BeanFactoryAware接口,做了两件事:1.把Beanfactory保存到Ann
2020-12-18 21:33:14
106
1
原创 AOP的实现逻辑
①在aop注解中@EnableAspectJAutoProxy,会通过@import向spring容器注册一个配置类,在配置类中想容器注入了一个AspectJAnnotationAutoProxyCreator这个类,这个是aop的核心,这个类实现了实现了BeanPostProcessor后置处理器,在Bean初始化完成前后做事情。还实现了BeanFactoryAware接口,做了两件事:1.把Beanfactory保存到AnnotationAwareAspectJAutoProxyCreator 组件上.
2020-12-18 17:31:46
223
2
原创 AOP一次请求调用全流程
①在aop注解中@EnableAspectJAutoProxy,会通过@import向spring容器注册一个配置类,在配置类中想容器注入了一个AspectJAnnotationAutoProxyCreator这个类,这个是aop的核心,这个类实现了实现了BeanPostProcessor后置处理器,在Bean初始化完成前后做事情。还实现了BeanFactoryAware接口,做了两件事:1.把Beanfactory保存到AnnotationAwareAspectJAutoProxyCreator 组件上
2020-12-18 16:25:48
229
1
原创 populateBean()属性注入逻辑
1.InstantiationAwareBeanPostProcessors处理器的postProcessAfterInstantiation函数的应用,此函数可以控制程序是否继续进行属性填充2.根据注入类型,提取依赖的bean,有两种注入方式,根据类型注入,根据Name注入,并统一存入PropertyValues中。3.应用InstantiationAwareBeanPostProcessors处理器的postProcessPropertyValues方法,对属性获取完毕填充前对属性的再次处理4.将
2020-12-18 15:16:28
302
原创 getBean()的执行逻辑
在getBean中调用doGetBean(),在doGetBean中首先通过name获取beanName,因为name 可能会以 & 字符开头,表明调用者想获取 FactoryBean 本身在 BeanFactory 中,FactoryBean 的实现类和其他的 bean 存储方式是一致的,即 beanName 中是没有 & 这个字符的。所以我们需要将 name 的首字符 & 移除,这样才能从缓存里取到 FactoryBean 实例,然后调用**getSingleton(beanN
2020-12-17 19:44:19
268
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人