自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 资源 (4)
  • 收藏
  • 关注

原创 优化 spring cloud gateway+nacos时服务恢复调用太慢问题

在使用 spring cloud gateway + nacos 做服务发现时,会发现当下游的服务器恢复了,但是还有经过一段时间 gateway 才成功转发请求到刚恢复的下游服务上。于是我就深入源码进行企图通过修改相关配置的方式优化gateway服务发现的恢复时间。

2023-01-05 10:45:08 3276

原创 如何将两个数合并成一个数又能恢复回原来两个数

前言如何将两个数合并成一个数又能恢复回原来两个数?这个问题在某次撸代码地时候忽然产生,当时没有想到如何时间,但最近忽然想到了思路,然后趁着这个五一假期实现一下。原理这个问题,可不能使用普通的加减乘除解决,因为即使合并得到新数,也无法恢复成之前合并前的那两个数,如 1+3=4,但是4可以有 2+2…很多种方式。我们可以采用二进制的方式解决这个问题。合并假设有两个数 1,3,在计算机语言里,默认是用 int 类型存放数值,一个 int 类型 有32 个位,将 1,3分别转成二进制可得到:000000

2021-05-03 17:40:54 1690

原创 Redis6.0 热门面试题及答案整理

Redis底层ZSet跳表是如何设计与实现的跳表【skipList】其实就是有层级的列表。比如我们想查找19,首先和6比较,大于6之后,在和9进行比较,然后在和12进行比较…最后比较到21的时候,发现21大于19,说明查找的点在17和21之间,从这个过程中,我们可以看出,查找的时候跳过了3、7、12等点。参考博客:https://blog.csdn.net/ict2014/article/details/17394259Redis底层ZSet实现压缩列表和跳表如何选择压缩列表:https://.

2021-01-26 08:57:25 1176 1

原创 Mybatis+Spring 时事务时交给谁处理的呢?

Mybatis+Spring 时事务时交给谁处理的呢?如果业务方法加上 @Transactional 时,是交给 Spring 处理。默认情况下,还是mybatis自己处理事务。源码证明在我们调用从 mybatis 代理出来的 mapper 接口时,其实调用 mybatis 的 MapperFactoryBean 对象,该对象是JVM代理对象,其InvocationHandler实现在SqlSessionTemplate中。public class SqlSessionTemplate implem

2021-01-06 11:21:38 832 3

原创 spring-security FilterSecurityInterceptor 源码分析

FilterSecurityInterceptor这个过滤器决定了访问特定路径应该具备的权限,访问的用户的角色,权限是什么?访问的路径需要什么样的角色和权限?这些判断和处理都是由该类进行的FilterSecurityInterceptorpublic class FilterSecurityInterceptor extends AbstractSecurityInterceptor implements Filter { //默认实现类:ExpressionBasedFilterInvocati

2020-12-25 13:55:31 485 2

原创 Spring 如何解决循环依赖

核心成员变量DefaultSingletonBeanRegistry:/** * Cache of singleton objects: bean name to bean instance. * <p>单例对象的高速缓存:beam名称-bean实例,所有bean对象最终都会放到对象中</p> * */private final Map<String, Object> singletonObjects = new ConcurrentHashMap<&g

2020-11-17 15:01:37 115

原创 超大文本处理框架

超大文本处理框架简介关于查找读取用法maven 配置用例开源地址简介这个一个针对超大文本文件的处理框架,适合那些超过100M的文本文件,如日志文件。该文件是按指定容器字符数来处理文本内容,所以最大程度避免了操作这些大文本文件时的OOM问题。这种按指定容器字符数读取到内容我统一位段。关于查找读取在读取文本的时候,会推断读取的文本的尾部有没有 要查找的字符串 的开头部分, 有就需要将 要查找的字符串剩余的字符读取到该段文字里为了尽可能保证读取不会因为读取策略导致OOM的问题,合适的段长度应该为

2020-11-17 14:17:14 627

原创 Spring 中 Mybatis 的 Mapper 层的实例是怎么来的?

@MapperScan在 @MapperScan 注解中,引入了一个 MapperScannerRegistrar 注册器@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(MapperScannerRegistrar.class)@Repeatable(MapperScans.class)public @interface MapperScan { ...}MapperScann

2020-09-16 12:58:41 930

原创 Spring 5 PostProcessor 在ApplicationContext # refresh() 各阶段的作用

说明下面所有PostProcessor是按照执行方法顺序列出,所以有重复类名的情况所有的PostProcessor都支持 PriorityOrdered,OrderedBeanDefinitionRegistryPostProcessor方法void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry)用途添加更多的bean定义,调用方法AbstartApplicationContext #

2020-09-15 17:46:15 454

原创 不需要重启服务的热修复框架

这个一个基于Spring的热修复框架,该框架不需要重启服务,是一个针对特殊生产环境的热修复框架。与dev-tool不一样,该框架不需要刷新Spring容器,也不监听class文件的变化,也不需要覆盖原有的class文件。原理本框架都建立在破坏双亲委派机制czb.framework.hotfix.core.classloader.HotFixClassLoader去加载热修复class文件。基本原则由于 JAVA 的安全机制认为 不同的ClassLoader之间就算加载了同一个类,也不可以认为这个类

2020-09-15 16:27:35 456

原创 Spring 5 ApplicationContext#refresh() -- obtainFreshBeanFactory()源码解析

本文分析 AbstractApplicationContext 的 obtainFreshBeanFactory()/** * <p> * 获取新的Bean工厂: * <ol> * <li>调用供子类实现refreshBeanFactory()方法执行实际的配置加载</li> * <li>调用供子类实现的getBeanFactory()方法获取子类提供的Bean工厂</li

2020-09-09 10:11:47 232

原创 Spring 5 PostProcessorRegistrationDelegate 源码解析

/** * Delegate for AbstractApplicationContext's post-processor handling. * <p>委托AbstractApplicationContext进行后置处理器处理</p> * @author Juergen Hoeller * @since 4.0 */final class PostProcessorRegistrationDelegate { private PostProcessorRegist

2020-09-09 10:11:29 303

原创 Spring 5 UiApplicationContextUtils 源码分析

UiApplicationContextUtils:用于UI应用程序上下文实现的实用程序类。提供对名为’themeSource’ 的特殊Bean的支持,该Bean类型为 themeSource/** * Utility class for UI application context implementations. * Provides support for a special bean named "themeSource", * of type {@link org.springframew

2020-09-09 10:11:08 203

原创 Spring 5 SimpleApplicationEventMulticaster 源码分析

SimpleApplicationEventMulticasterSimpleApplicationEventMulticaster 是 AbstractApplicationContext 的默认事件多播器/** * Simple implementation of the {@link ApplicationEventMulticaster} interface. * <p>简单实现的 ApplicationEventMulticaster 接口</p> * <p

2020-09-09 10:10:49 1310

原创 Spring 5 ApplicationContext#refresh() -- 深入源码解析(一)

在Spring的众多 ApplicationContext 实现类最终的 refresh(),还是 AbstractApplicationContext 实现主体代码,附加功能基本都是在onRefresh() 上附加。所以我直接围绕 AbstractApplicationContext 的 refresh() 进行解析。AbstractApplocationContext.refresh@Override public void refresh() throws BeansException, Il

2020-09-09 10:10:30 225

原创 Spring 5 DefaultLifecycleProcessor 源码分析

DefaultLifecycleProcessor 是 AbstractApplicationContext 的 LifecycleProcessor 策略的默认实现,主要自动启动/停止BeanFactory中的所有实现 Lifecycle 的单例Bean对象LifecycleProcessor/** * Strategy interface for processing Lifecycle beans within the ApplicationContext. * <p>在 App

2020-09-09 10:10:08 1246

原创 Spring 5 ApplicationContext#refresh() --finishRefresh 源码解析

finishRefresh()/** * <p>完成刷新 * Finish the refresh of this context, invoking the LifecycleProcessor's * onRefresh() method and publishing the * {@link org.springframework.context.event.ContextRefreshedEvent}. * <p>调用 LifecycleProcesso

2020-09-09 10:09:48 137

原创 Spring 5 ApplicationContext#refresh() -- 深入源码解析(二)

Spring 5 ApplicationContext#refresh() – 深入源码解析(一)initApplicationEventMulticaster()/** * Initialize the ApplicationEventMulticaster. * <p>初始化ApplicationEventMulticaster</p> * Uses SimpleApplicationEventMulticaster if none defined in th.

2020-09-09 10:09:28 127

原创 Spring 5 AbstractBeanFactory -- getObjectFromFactoryBean 源码解析

AbstractBeanFactory 继承了 FactoryBeanRegistrySupport ,引用其实现方法 getObjectFromFactoryBean。FactoryBeanRegistrySupport # getObjectFromFactoryBean从BeanFactory对象中获取管理的对象.可根据shouldPostProcess对其对象进行该工厂的后置处理:如果factory管理的对象是单例 且 beanName已经在该BeanFactory的单例对象的高速缓存Map

2020-09-09 10:08:54 425

原创 Spring 5 AbstractBeanFactory -- getObjectForBeanInstance 源码解析

getObjectForBeanInstance(sharedInstance, name, beanName, null);从 beanInstannce 中获取公开的Bean对象,主要处理beanInstance是FactoryBean对象的情况,如果不是FactoryBean会直接 返回beanInstance实例/** * Get the object for the given bean instance, either the bean * instance itself or it

2020-09-09 10:08:12 278

原创 Spring 5 DefaultSingletonBeanRegistry -- getSingleton(String,ObjectFactory) 源码解析

getSingleton(String,ObjectFactory)返回以beanName的(原始)单例对象,如果尚未注册,则使用singletonFactory创建并注册一个对象如果beanName为null,抛出异常使用单例对象的高速缓存Map作为锁,保证线程同步从单例对象的高速缓存Map中获取beanName对应的单例对象【变量 singletonObject】,获取成功就直接返回singletonObject如果singletonObject获取不到如果当前在destorySingl

2020-09-07 17:48:18 602

原创 Spring 5 ContextTypeMatchClassLoader 源码分析

ContextTypeMatchClassLoader :覆盖ClassLoader的特殊变体,用于AbstractApplicationContext中的临时类型匹配。 为每个loadClass调用从缓存的字节数组中重新定义类,以便在父类ClassLoader中拾取 最近加载的类型。ContextTypeMatchClassLoader/** * Special variant of an overriding ClassLoader, used for temporary type * matc

2020-09-07 17:47:59 440

原创 Spring 5 AbstractBeanFactory -- resolveBeanClass源码解析

AbstractBeanFactory#resolveBeanClass为mdb解析出对应的bean class:如果mbd指定了bean class,就直接返回该bean class调用doResolveBeanClass(mbd, typesToMatch)来解析获取对应的bean Class对象然后返回出去。如果成功获取到 系统的安全管理器,使用特权的方式调用。捕捉PrivilegedActionException,ClassNotFoundException异常和LinkageError错

2020-09-07 17:47:25 1155

原创 Spring 5 AbstractBeanFactory -- getMergedLocalBeanDefinition 源码解析

getMergedLocalBeanDefinition获取beanName合并后的本地RootBeanDefintiond优先从合并BeanDefinitionMap缓存【mergedBeanDefinitions】中获取,获取到的 RootBeanDefinition对象只要没有标记为重新合并定义的,都会返回出去获取beanName在该工厂所指的BeanDefinition对象,传入getMergedBeanDefinition(beanName,BeanDefinition) 方法,将该方法的

2020-09-07 17:47:01 669

原创 Spring 5 AbstractBeanFactory-- getType源码解析

getType(factoryBeanName);确定具有给定名称的bean类型(为了确定其对象类型,默认让FactoryBean以初始化)。由 AbstractBeanFactory 实现 。/** * 确定具有给定名称的bean类型(为了确定其对象类型,默认让FactoryBean以初始化)。 * * @param name the name of the bean to query -- 要查询的bean名 * @return Bean的类型;如果不确定,则为null * @

2020-09-07 17:46:41 568

原创 Spring 5 ReflectionUtils 源码注释

/** * Simple utility class for working with the reflection API and handling * reflection exceptions. * 简单的实用程序,用于实用反射API和处理反射异常 * <p>Only intended for internal use. 仅供内部使用 * <p>参考博客:https://blog.csdn.net/qq_29229567/article/details/8077397

2020-09-07 17:46:20 387

原创 Spring 5 ParameterNameDiscoverer 源码注释

ParameterNameDiscoverer这个 Spring 用于寻找现方法和构造函数的参数名的发现器。/** * Interface to discover parameter names for methods and constructors. * <p>用于发现方法和构造函数的参数名的接口</p> * <p>Parameter name discovery is not always possible, but various strategies

2020-09-07 17:45:40 642

原创 Spring 5 ClassUtils 源码注释

/** * Miscellaneous {@code java.lang.Class} utility methods. * Mainly for internal use within the framework. * <p> * 其他的{@code java.lang.Class}使用方法。 * 主要供框架内部使用 * </p> * @author Juergen Hoeller * @author Keith Donald * @author

2020-09-07 17:45:18 240

原创 Spring 5 ResolvableType 源码注释

/** * <p>可以看作是封装JavaType的元信息类</p> * Encapsulates a Java {@link java.lang.reflect.Type}, providing access to * {@link #getSuperType() supertypes}, {@link #getInterfaces() interfaces}, and * {@link #getGeneric(int...) generic parameters} alon

2020-09-07 17:44:45 883

原创 Spring 5 AbstractAutowireCapableBeanFactory-- getTypeForFactoryMethod源码解析

AbstractAutowireCapableBeanFactory # resolveBeanClass从工厂方法确定给定bean定义的目标类型,仅在尚未为目标bean注册单例实例时调用:获取mbd的工厂方法返回类型【RootBeanDefinition#factoryMethodReturnType】,获取成功就返回出去定一个通用返回类型【变量commonType】,用于存储 经过比较 AutowireUtils#resolveReturnTypeForFactoryMethod方法的返回结果

2020-09-07 17:43:51 330

原创 Spring 5 ConstructorResolver 源码注释

/** * Delegate for resolving constructors and factory methods. * <p>代表解析构造函数和工厂方法</p> * <p>Performs constructor resolution through argument matching. * <p>通过参数匹配执行构造函数解析</p> * * @author Juergen Hoeller * @author Rob Har

2020-09-05 15:13:45 656

原创 Spring 5 AbstractAutowireCapableBeanFactory-- createBeanInstance 源码解析

createBeanInstance(beanName, mbd, args);使用适当的实例化策略为指定的Bean创建一个新实例:工厂方法,构造函数自动装配或简单实例化。使用工厂方法(多个工厂方法时,会找到最匹配的那个构造函数),优先使用 args的参数值来实例化对象, 没有就使用mdb所定义的参数值使用构造函数:从SmartInstantiationAwareBeanPostProcessor中获取给定bean的候选构造函数 || mdb的解析自动注入模式为 按构造器自动装配 || mbd有

2020-09-05 15:13:22 181

原创 Spring 5 MethodParameter 源码注释

/** * Helper class that encapsulates the specification of a method parameter, i.e. a {@link Method} * or {@link Constructor} plus a parameter index and a nested type index for a declared generic * type. Useful as a specification object to pass along. *

2020-09-05 15:12:55 8616

原创 Spring 5 ConstructorResolver源码注释

/** * Delegate for resolving constructors and factory methods. * <p>代表解析构造函数和工厂方法</p> * <p>Performs constructor resolution through argument matching. * <p>通过参数匹配执行构造函数解析</p> * * @author Juergen Hoeller * @author Rob Har

2020-09-05 15:12:30 353

原创 Spring 5 AutowireCandidateResolver源码注释

UMLAutowireCandidateResolver** * Strategy interface for determining whether a specific bean definition * qualifies as an autowire candidate for a specific dependency. * <p>用于确定特定beanDefinition是否有资格作为特定依赖项的自动装配候选的策略接口</p> * @author Juerge

2020-09-05 15:12:07 226

原创 Spring 5 SimpleTypeConverter 源码注释

SimpleTypeConverter/** * <p>不在特定目标对象上运行的TypeConverter接口的简单实现。这是使用完整的BeanWrapperImpl实例来实现 * 任意类型转换需求的替代方法,同时使用相同的转换算法(包括委托给PropertyEditor和ConversionService)。</p> * Simple implementation of the {@link TypeConverter} interface that does not op

2020-09-05 15:11:42 354

原创 Spring 5 DefaultListableBeanFactory-- isAutowireCandidate源码分析

isAutowireCandidate(String , DependencyDescriptor )确定指定的bean定义是否可以自动注入:获取此BeanFactory的自动装配候选解析器交由isAutowireCandidate(String, DependencyDescriptor, AutowireCandidateResolver) 处理并将结果返回出去/** * 确定指定的bean定义是否可以自动注入 * @param beanName the name of the be

2020-09-05 15:11:15 285

原创 Spring 5 OrderComparator 源码注释

UMLOrderComparator/** * {@link Comparator} implementation for {@link Ordered} objects, sorting * by order value ascending, respectively by priority descending. * <p>有序对象的比较实现,按顺序值升序或优先级降序排序.</p> * <h3>{@code PriorityOrdered} Object

2020-09-05 15:10:52 426

原创 Spring 5 DefaultListableBeanFactory-- adaptOrderComparator源码分析

adaptOrderComparator(Map<String, ?> )构建排序比较器,用于对matchingBean的所有bean对象进行优先级排序:获取该工厂的依赖关系比较器【变量 dependencyComparator】,SpringBoot默认 使用【org.springframework.core.annotation.AnnotationAwareOrderComparator】如果dependencyComparator是OrderComparator的实例,就让com

2020-09-05 15:10:15 224

原创 Spring 5 AutowireCapableBeanFactory -- resolveDependency源码分析(二)

Spring 5 AutowireCapableBeanFactory – resolveDependency源码分析(一)resolveMultipleBeans(descriptor, beanName, autowiredBeanNames, typeConverter);针对desciptor所包装的对象类型是[stream,数组,Collection类型且对象类型是接口,Map]的情况,进行解析与依赖类型匹配的 候选Bean对象,并将其封装成相应的依赖类型对象:获取包装的参数/字段的声.

2020-09-05 15:09:46 387 1

轻量级接口API网页生成框架

轻量级接口API网页生成框架,直接放进项目就能使用,希望大家喜欢,我也想免费下载。但是平台不给。。

2018-06-16

高大上的ViewPager的PageTransformer

高大上的ViewPager的PageTransformer,ViewPager切换页面效果,希望您喜欢~~

2016-12-19

DropSwitchView

DropSwitchView

2016-12-09

AndroidMVC,MVP,MVVM架构实现

Android MVC,MVP,MVVM架构实现,第一次上传资源,请各位大神多多指教~~

2016-12-05

空空如也

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

TA关注的人

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