自定义博客皮肤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)
  • 收藏
  • 关注

原创 KMP算法代码详解

学习了kmp算法,思想其实很好理解,但是代码的实现一直看得很迷糊。看了很多博客,特别是对匹配信息的next数组有很多不同,比如数组有首位有-1的也有0的等。我自己也疏离了一遍,记录一下,方便之后以后回忆。首先KMP算法主要是用来解决字符串(也叫主串)中的模式串定位问题,比如,有一个主串"abaabaabbabaaabaabbabaab",要找出主串中是否存在子串"abaabbabaab",并返回匹配到的具体位置。如果是普通的暴力匹配,应该是将主串和模式串从左到右一个个匹配,如果这个过程中有某个字符不.

2020-09-03 02:00:57 3523

原创 zookeeper源码学习(二)——选举

首先,来回顾一下之前说FastLeaderElection 执行start方法,其实就是启动两个线程WorkerSender、WorkerReceiver这两分别用于向其他所有节点发送自己的投票信息、接收并处理其他节点发送给自己的投票信息的线程。我们来具体看看这两个线程的run方法具体做了什么吧。WorkerSender首先看WorkerSender#runpublic void run() { while (!stop) { t

2020-08-31 22:51:11 275

原创 zookeeper源码学习(一)——启动流程

开始启动——定时清理任务话不多说,找到我们的启动类org.apache.zookeeper.server.quorum.QuorumPeerMain,查看他的main方法public static void main(String[] args) { QuorumPeerMain main = new QuorumPeerMain(); try { main.initializeAndRun(args); }

2020-08-31 22:50:18 283

原创 zuul源码学习

平常使用zuul网关,主要就是用来做路由请求,和通过过滤器做相应的增强限制处理。其实,zuul就是一组过滤器,有pre,routing,post,error不同类型的过滤器。执行的时机也不一样。而路由功能也是通过过滤器来实现的。我们来看下源码,大概了解下他是如何做的吧。首先,老规矩还是找到spring.factories,找到自动配置的类ZuulProxyAutoConfiguration和父类ZuulServerAutoConfigurationpublic class ZuulProxyAutoCo

2020-08-07 02:25:38 226

原创 Feign源码学习

跟进@EnableFeignClients注解@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients {...}可以看到这里导入了FeignClientsRegistrar类,我们来看看这个类class FeignClientsRegistrar impl

2020-07-29 22:12:59 282

原创 ribbon源码学习

在spring cloud微服务体系中,可以用ribbon来做客户端的负载均衡。而这,只要在RestTemplate实例上添加了⼀个@LoadBalanced注解就能实现了,接下来让我们分析下这背后的过程吧。首先,老规矩,通过spring.factories文件,找到RibbonAutoConfiguration类,发现RibbonAutoConfiguration类装配后,会去装配LoadBalancerAutoConfiguration类,我们先看LoadBalancerAutoConfigurati

2020-07-22 00:29:29 154

原创 Eureka源码学习(二)——Eureka-Server

在spring.factories文件中看到,服务启动会去加载EurekaServerAutoConfiguration配置类的。大概看一下配置类的@Configuration(proxyBeanMethods = false)@Import(EurekaServerInitializerConfiguration.class)@ConditionalOnBean(EurekaServerMarkerConfiguration.Marker.class)@EnableConfigurationPro

2020-07-16 23:14:33 301

原创 Eureka源码学习(一)——Eureka-Client

关于Eureka的学习,先了解client,client会做些什么呢?通过源码简单的了解一下,client是如何向发起注册、续约、抓取注册列表刷新本地缓存、变动通知、下线这些操作的。我们建个工程,maven导入spring-cloud-starter-netflix-eureka-client包2.2.3,找到其中spring.factories,EurekaClientAutoConfiguration自动配置类会生效,并且会注入一个EurekaClient @Bean(destroyMethod

2020-07-15 02:19:05 483

原创 springmvc源码学习

1.1 web.xml配置WebApplicationContext加载spring web项目中,在web.xml文件里往往需要配置ContextLoaderListener,用来加载容器。public class ContextLoaderListener extends ContextLoader implements ServletContextListener { public ContextLoaderListener() { } public ContextLoaderListene

2020-07-11 06:37:11 170

原创 spring源码学习(四)——aop

1.3 AOP说完了ioc的初始化过程,再来了解下aop吧。aop就是面向切面编程,可以无侵入的将代码切入到执行位置,实现增强。下面,我们来看看spring是怎么实现aop的吧。还是拿配置文件方式来举例,开启aop功能往往需要配置aop:aspectj-autoproxy/。这个标签会找到AopNamespaceHandler来处理。public class AopNamespaceHandler extends NamespaceHandlerSupport { /** * Register

2020-06-23 23:11:41 238

原创 spring源码学习(三)——初始化bean

1.2.3 初始化bean执行完beanFactoryPostProcessors之后,会找到所有BeanPostProcessor(Bean的后置处理器),注册到beanFactory中。然后注册各种组件后,来到finishBeanFactoryInitialization(beanFactory)方法,初始化剩下所有非懒加载的单例bean。protected void finishBeanFactoryInitialization(ConfigurableListableBeanFactory be

2020-06-21 20:02:38 366

原创 spring源码学习(二)——ConfigurationClassPostProcessor(BeanFactory后置处理器的执行)

1.2.2 ConfigurationClassPostProcessor(BeanFactory后置处理器的执行)在获取到BeanFactory后,就会执行invokeBeanFactoryPostProcessors(beanFactory)方法,执行BeanFactoryPostProcessor相应的方法。BeanFactoryPostProcessor中有一个非常重要的实现就是ConfigurationClassPostProcessor。它的主要功能是参与BeanFactory的建造,在这个类

2020-06-21 02:51:10 411

原创 spring源码学习(一)——ioc初始化

spring两个重要的概念ioc和aop,整个框架是非常复杂的。下面主要了解一下,他们大致的一个流程。1.1 BeanFactory和ApplicationContextBeanFactory是spring 的顶层容器,他定义了所有ioc容器必须遵从的原则,拥有实例化对象和获取对象的功能。而ApplicationContext是他的子类,增加了很多额外的功能。不同的实现也增加了不一样的功能,Spring IoC 容器继承体系⾮常聪明,需要使⽤哪个层次⽤哪个层次即可,不必使⽤功能⼤⽽全。1.2 初始化i

2020-06-21 02:09:48 225

原创 mybatis源码学习(自用)

mybatis源码学习(自用)       一直以来没有记录笔记的习惯,每次学习完一些技术,过段时间就忘记了。所以非常想养成学习过后记录笔记总结的习惯。这篇就当作我笔记的开始吧。以后看情况会对一些技术框架做一个总结。       MyBatis 是一款优秀的基于ORM的半自动轻量级持久层框架,在使用上应该是非常熟练了,下面一起来简单的看看mybatis的大致流程实现。       使

2020-06-03 01:11:47 341

空空如也

空空如也

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

TA关注的人

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