自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

常威打来福

你打我啊

  • 博客(59)
  • 收藏
  • 关注

原创 为什么说java的SPI破坏了双亲委派模型

public static <S> ServiceLoader<S> load(Class<S> service) { // 获取线程上下文类加载器 ClassLoader cl = Thread.currentThread().getContextClassLoader(); return ServiceLoader.load(service, cl);} public static <S> ServiceLoader<S

2021-09-23 17:50:20 203

原创 spring源码-Springboot解析配置类时,解析配置类的@Import注解

系列文章目录1、spring源码-Springboot加载配置类beanDefinition2、spring源码-Springboot解析配置类时,解析配置类的内部类3、spring源码-Springboot解析配置类时,解析配置类的@Import注解4、spring源码-springboot中各种Conditional注解之ConditionalOnJava分析5、Spring源码-springboot中注入filter6、Spring源码-Springboot使用内置tomcat配置Dis

2021-09-21 19:47:33 211

原创 spring源码-Springboot解析配置类时,解析配置类的内部类

系列文章目录spring源码-Springboot加载配置类beanDefinitionspring源码-Springboot解析配置类时,解析配置类的内部类spring源码-springboot中各种Conditional注解之ConditionalOnJava分析Spring源码-springboot中注入filterSpring源码-Springboot使用内置tomcat配置DispatcherServletSpring源码-Springboot不使用默认的tomcat,使用外部tom

2021-09-21 18:37:00 575

原创 源码-Spring中对bean的@Order注解的处理过程

目录前言DefaultListableBeanFactoryOrderComparator前言基于Spring-5.2.15.RELEASE版本分析是使用AnnotationAwareOrderComparator这个比较器类用来给bean排序,在autowired一个数组或者list的时候会对数组或list排序DefaultListableBeanFactoryprivate Object resolveMultipleBeans(DependencyDescriptor descriptor,

2021-09-15 11:05:47 904

原创 源码-springmvc初始化对Controller的处理

目录前言1、分析controller中的方法调用的过程DispatcherServletAbstractHandlerMethodAdapterRequestMappingHandlerAdapterServletInvocableHandlerMethod2、分析下应用启动过程中处理url和controller中method的映射RequestMappingHandlerMappingAbstractHandlerMethodMappingMappingRegistry3、分析下获取handler的过程A

2021-09-14 23:40:13 298

原创 源码-mybatis中为什么mapper的方法不能重载(方法名相同)

目录前言XMLMapperBuilder类XMLStatementBuilder类Configuration类前言基于mybatis 3.4.1版本,mybatis从XMLMapperBuilder开始解析,当解析到我们的select、insert等标签时,获取标签的id属性值,以 (mapper接口全路径 + 标签对应的id属性值)为key,MappedStatement为value,放入Configuration的属性mappedStatements中,而mappedStatements是Stric

2021-09-12 19:33:16 1467

原创 spring源码-springboot中各种Conditional注解之ConditionalOnJava分析

目录前言1、ConfigurationClassParser类解析我们的主启动类的所有注解2、ConditionalOnJava注解属性的Condition接口实现类OnJavaCondition3、SpringBootCondition类为Condition的直接实现类前言基于springboot2.3.12.RELEASR版本分析所有的ConditionalOnXXX注解上方都有一个Conditional注解,这个注解的属性是Condition类的实现类。1、ConfigurationCla

2021-08-30 14:04:30 379

原创 Spring源码-springboot中注入filter

我们要将一个Filter加入到tomcat中,写一个如下的配置@Configurationpublic class WebConfiguration { @Bean public FilterRegistrationBean testFilterRegistrationBean() { FilterRegistrationBean registrationBean = new FilterRegistrationBean(); registrationBe

2021-08-11 16:14:59 573

原创 源码-ScheduledThreadPoolExecutor

目录ScheduledFutureTaskDelayedWorkQueueFutureTask// 初始化周期线程池public ScheduledThreadPoolExecutor(int corePoolSize) { super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new DelayedWorkQueue());}// 关键方法,周期执行任务public ScheduledFuture<?&gt

2021-08-11 15:30:40 106

原创 Spring源码-注解@Autowired原理

目录1、发生阶段AbstractAutowireCapableBeanFactory.populateBeanAbstractAutowireCapableBeanFactory.applyPropertyValues如果我们autowired的属性是FactoryBean类型的,如果factoryBean的getObjectType返回类型并不是autowired属性的类型,那么不会注入,会报错,NoSuchBean在spring中遍历所有的beanName,然后获取对应的beanDefinition

2021-08-11 15:23:59 117

原创 源码-mybatis-spring:2.0.4

目录1、mybatis接入spring1、mybatis接入spring主要是MapperScannerConfigurer类,这是一个后置处理器,用于后置处理beanDefinition,这个类在bean开始创建之前将扫描到的mapper的beanDefinition的beanClass属性替换为MapperFactoryBean类,beanName还是mapper的name。spring创建类是根据beanDefinition定义的beanClass属性来反射创建对象的。然后以(beanName:根

2021-08-11 15:14:45 144

原创 源码-ConcurrentHashMap

文章目录initTable方法addCount方法transfer方法搬运过程(并没有改变原有链表之间的指向)其他线程帮忙搬运过程initTable方法// sizeCtl变量在第一次初始化数组方法中设置为数组长度的4分之3private final Node<K,V>[] initTable() { Node<K,V>[] tab; int sc; while ((tab = table) == null || tab.length == 0)

2021-08-10 09:59:27 68

原创 面试题和问题总结-问题总结

1、线程池线程池几种状态(状态的前3位是状态计算,后29位为线程数量计算)private static final int RUNNING = -1 << 29; 二进制表示1110.0000共29个0private static final int SHUTDOWN = 0 << 29; 二进制表示0000.0000共32个0private static final int STOP = 1 << 29; 二进制表示0010.0000共

2021-06-30 22:28:59 349

原创 面试题和问题总结-面试题

简历重点放在专业技能和项目经验两块1.你的简历就是你给面试官提供的考点,简历上的东西必须自己Hold住,万一自己写的东西被问住了,会很尴尬,给面试官留下的印象也不好,所以就是会啥写啥2.技术栈最好不要写精通,你敢写面试官就敢问,被问倒了很尴尬的,写熟悉,了解就行怎么投简历我这里强烈建议找人内推,这样简历通过的概率大些,如果找不到,可以试试脉脉,我就是从脉脉投的简历,把状态改成寻找机会就行,会有很多人找你的推荐一个简历制作模版,我一直用的,https://www.polebrief.com/ind

2021-06-30 22:26:44 713

原创 Spring源码-SpringAop执行过程详解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、AnnotationAwareAspectJAutoProxyCreator后置处理器的创建二、在AnnotationAwareAspectJAutoProxyCreator后置处理器方法中创建代理(jdk或cglib)三、springAop后置处理器查找advisor过程总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍

2021-06-14 23:21:33 196

原创 Spring源码-Springboot使用内置tomcat配置DispatcherServlet

文章目录前言一、ServletWebServerApplicationContext.onfresh二、RegistrationBean三、DynamicRegistrationBean四、ServletRegistrationBean前言springboot使用主启动类启动,DispatcherServlet怎么配置到内置tomcat的?将DispatcherServlet设置到ServletContext里,并设置loadOnStartup和urlMapping属性在什么阶段设置的?spri

2021-05-31 23:06:31 406

原创 Spring源码-Springboot不使用默认的tomcat,使用外部tomcat原理

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、tomcat启动过程二、SpringServletContainerInitializer类三、启动类继承SpringBootServletInitializer四、ServletWebServerApplicationContext一、tomcat启动过程在web容器启动时为提供给第三方组件机会做一些初始化的工作,例如注册servlet或者filtes等,servlet规范中通过ServletContainerInit

2021-05-31 14:35:54 496

原创 Spring源码-Springmvc解析application配置文件

文章目录前言一、springmvc解析application配置文件时序图总结前言1、发生在AbstractApplicationContext的获取初始化beanFactory阶段,先初始化一个DefaultListableBeanFactory,然后开始加载配置文件解析beanDefinition一、springmvc解析application配置文件时序图总结1、将所有META-INF目录下spring.handlers文件中配置的 命名空间=自定义NameSpaceHandl..

2021-05-22 23:02:19 288

原创 Spring源码-Springmvc初始化handlerMapping

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、springmvc初始化handlerMapping时序图总结前言1、创建XmlWebApplicationContext2、调用refresh()方法3、bean都创建完成后发布上下文刷新事件,开始初始化handlerMapping一、springmvc初始化handlerMapping时序图总结1、如果不配置handlerMapping实现类,那么会从DispatcherServlet.prope

2021-05-22 22:12:55 249

原创 Spring源码-Springboot加载配置类beanDefinition

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、加载beanDefinition时序图总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、加载beanDefinition时序图总结提示:这里对文章进行总结:例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas

2021-05-20 17:28:50 607

原创 算法-红黑树的左旋右旋

1、左旋 private void leftRotate(RBTreeNode node) { RBTreeNode right = node.right; RBTreeNode parent = node.parent; if (parent == null) { root = right; right.parent = (null); }

2021-04-20 17:47:52 180

原创 算法-AC状态机算法

AC自动机算法文章目录AC自动机算法前言1、构建字典树2、构建fail指针3、开始查询4、测试5、输出结果总结前言AC自动机算法(构建模式串,类似KMP的模式串(短的字符串作为模式串),用于字符串匹配1、构建字典树static class AcNode { //孩子节点用HashMap存储,能够在O(1)的时间内查找到,效率高 Map<Character, AcNode> children = new HashMap<>(); AcNode f

2021-04-20 17:10:12 489

原创 分布式框架-ELK

es 启动异常1、Unable to establish loopback connection解决方法:关闭防火墙1、启动es、2、kabana、3、启动logstash创建对应要导入数据的config文件(logstash**.conf,注意文件里要严格对应花括号,不能有多余空格)1、logstash -f 目录(包含多个conf文件,logstash会一起导入))2、logstash -f 目录/conf文件input { # 我们创建了两个微服务demo 所以建立两个不同的输

2021-04-17 13:39:18 109

原创 算法-我的算法总结

1、while(i < length && s.charAt(i) == ’ ') i++; // 找到不是空格的字符2、判断两个字符串是否一致if(s.length() != t.length()){ return false;}int[] bucket = new int[26];for (int i = 0; i < s.length(); i++) { bucket[s.charAt(i) - 'a']++;}for (int i = 0;

2021-04-17 13:36:42 267

原创 源码-ConditionObject

线程之间交互例子Lock lock = new ReentrantLock();Condition condition = lock.newCondition();Thread t1 = new Thread("t1") { @Override public void run() { try { lock.lock(); condition.await(); System.out.println(T

2021-04-17 13:10:03 67

原创 源码-RentrantLock

构造函数/** * Creates an instance of {@code ReentrantLock} with the * given fairness policy. * * @param fair {@code true} if this lock should use a fair ordering policy */public ReentrantLock(boolean fair) { sync = fair ? new FairSync() : new Nonfai

2021-04-17 12:54:41 71

转载 Docker-下载后安装失败:This computer doesn’t have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory.

1、使用git的bash窗口运行命令 即可docker-machine create default --virtualbox-no-vtx-check2、若停留在 waiting for an ip,可能是路由器的网段和 docker-machine create 时默认使用的网段重叠了,我的docker-machine默认创建的是192.168.99.101,192.168.99已经被另一个虚拟网卡使用了。使用git的bash窗口运行命令docker-machine create -d

2020-11-02 22:44:31 440

原创 设计模式-UML图

1、适配器2、工厂3、策略4、装饰者

2020-10-24 20:33:50 49

转载 面试题和问题总结-面试题2

文章目录一、Java 基础1.JDK 和 JRE 有什么区别?2. == 和 equals 的区别是什么?3.两个对象的 ha...

2020-08-18 20:09:15 264

转载 面试题和问题总结-java面试题

2012年毕业,2016年转行,没有一个体面的工作,机缘巧合之下,来到了大连,Java培训,一个全新的领域,迷茫、困惑、漫无目的的努力,转行真的被歧视,真的不行吗?我命由我不由天,我觉得我行!相信我,只要你足够努力,总有成为架构师,独挡一面的一天。最近参加了一些面试,效果不是很理想,项目介绍只有大...

2020-08-16 21:35:16 118

原创 并发-线程池4种拒绝策略源代码

public static class DiscardPolicy implements RejectedExecutionHandler { public DiscardPolicy() { } public void rejectedExecution(Runnable r, ThreadPoolExecutor e) { } } public static class DiscardOldestPolicy implement.

2020-08-15 23:28:01 84

原创 分布式框架-设置jenkins自动化构建重启项目

jenkinsdocker run -d --name jenkins -p 8080:8080 -v /home/jenkins:/home/jenkins jenkins/jenkins:lts安装jdk(docker内jenkins容器内自带jdk,echo $JAVA_HOME),安装maven插件管理里面,安装maven插件 maven Integration,安装成功后下图会出现maven project选项设置项目代码位置(git)添加git账号密码设置maven编

2020-08-15 14:45:27 252 1

原创 项目环境搭建-logback.xml常用配置

<?xml version="1.0" encoding="UTF-8"?><configuration debug="false"> <!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径--> <property name="LOG_HOME" value="/test/log" /> <!-- 控制台输出 --> <appender name="STDOUT" class="ch.q

2020-08-15 12:10:18 118

原创 面试题和问题总结-ArrayList遍历修改报错

private class Itr implements Iterator<E> { int cursor; // index of next element to return int lastRet = -1; // index of last element returned; -1 if no such // 将modCount赋值给expectedModCount,如果用迭代器修改, // 删除后会重新赋值,这样checkForComodif

2020-08-02 22:21:18 92

转载 算法-LRU

利用双向链表实现LRU算法package lru;import java.util.HashMap;/** * 模拟redis淘汰策略 * @author mac * @param <K> * @param <V> */public class LRU<K,V> { LRU(int size){ this.capacity = size; cache = new HashMap<K,Node<K,V>>(size);

2020-08-01 19:29:15 48

原创 Docker-默认docker-machine(default) 配置加速器

然后修改/var/lib/boot2docker/profile文件,将--registry-mirror=<your accelerate address>添加到EXTRA_ARGS中最后重启Docker就可以了。

2020-07-19 16:12:56 254

原创 Spring源码-Spring解决循环依赖

1、spring配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="

2020-07-15 17:11:27 103

原创 Spring源码-Spring初始化单例bean步骤

1、AbstractApplicationContext.refresh()2、AbstractApplicationContext.finishBeanFactoryInitialization(beanFactory)3、DefaultListableBeanFactory.preInstantiateSingletons();4、AbstractBeanFactory.doGetBean() 1、AbstractBeanFactory.getSingleton(beanName);第一

2020-07-13 23:27:01 100

原创 前端-vue总结

# 全局安装 vue-cli$ cnpm install --global vue-cli# 创建一个基于 webpack 模板的新项目$ vue init webpack my-projectnpm init -f,生成package.jsonpackage.json文件中缺少 "dev": "webpack-dev-server --inline --progress --config build/webpack.dev.conf.js"// 添加上面的参数报错解决,cmd运行下面"D:

2020-07-13 22:05:23 81

原创 JDK动态代理

public class Car implements Vehicle{ public void testProxy() { ...... }}// 生成的class文件在下面byte[] cars = ProxyGenerator.generateProxyClass("$car", car.getClass().getInterfaces());FileOutputStream fo = null;try { fo = new FileOutputStrea

2020-07-13 21:58:58 41

空空如也

空空如也

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

TA关注的人

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