Yang Blog

「心有所向,日复一日,必有精进」

@Configuration#proxyBeanMethods分析

"@Configuration#proxyBeanMethods分析"

看源码的时候发现Spring 一些配置类上面经常有@Configuration(proxyBeanMethods=false),出于好奇瞅了瞅,记录一下。 @Configuration注释 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 @Target(ElementTyp...

Geo-fencing

"地理围栏算法笔记"

最近项目遇到了一个需求,判断一个水质监测点是否在某个集水区(不规则多边形)内,对此进行了很多学习和研究,发现其实很多功能都跟这个类似,比如外卖、快递的服务区域,共享单车的停放区域等。这种需求的核心问题就是判断某个点是否在某个多边形的内部(point-in-polygon),根据wiki定义就是地理围栏(Geo-fencing)。 如何判断点在多边形内 射线法 从给定点开始,沿某一方向做...

Spring Cloud loadbalancer 源码速读

"Spring Cloud loadbalancer 源码速读"

Spring Cloud loadbalancer Spring Cloud 2020版本以后默认移除了对Netflix的依赖,使用Spring Cloud Commons提供抽象和公共类,用于不同的Spring Cloud实现。而对于负载均衡来说使用Spring Cloud loadbalancer 替代了Ribbon。 主要的类 ReactiveLoadBalancer、Rea...

Spring Cloud Open Feign 源码速读

"Spring Cloud Open Feign 源码速读"

Spring Cloud Open Feign 源码速读 整体流程图 Feign BeanDefinition注入 @EnableFeignClients 进行一些配置,通过@Import注入FeignClientsRegistrar FeignClientsRegistrar 注入BeanDefinition,包括@EnableFeignClients配置的全局FeignC...

TLS v1.2 抓包分析

"TLS v1.2 抓包分析"

Chrome + Wireshark 抓 SSL/TLS包 添加环境变量SSLKEYLOGFILE = yourpath/key.log,使Chrome保存每次https会话的key 在Wireshark·Preferences·Protocols·TLS中配置key.log的位置 TLS v1.2 握手协商流程 抓包分析TLS v1.2(并不全面,也不深入,因为好奇,所以...

Spring Cloud Gateway workflow

"Spring Cloud Gateway 工作流程"

Spring Gateway 重要概念 Route:路由,包含了路由uri,Predicate,Filter等属性,在执行时会匹配Predicate判断是否能通过,并结合Filter将请求路由到后续的服务中去 Predicate:通过ServerWebExchange对象匹配请求是否符合路由 Filter:这个Filter是Gateway中的Filter,而不是webFlux中的,但是...

AopContext使用问题分析

"AopContext使用问题分析"

version:Spring Framework 5.3.x 在使用Spring开发时,偶尔会遇到在本类方法中调用自身被AOP增强的方法,这时候直接调用并不会达到预期的效果,大致的原因是在Spring生成的代理对象中调用自身方法并不会调用被增强的方法,而是会直接调用被代理类原本的方法(具体可通过Spring JDK动态代理和CGLIB代理生成的字节码去看)。 那具体有什么方法能...

@Async原理分析

"@Async 注解原理分析"

@Async 注解原理分析 @EnableAsync @EnableAsync除了一些配置外,最重要的就是通过@Import引入了AsyncConfigurationSelector 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36...

Spring AOP 代理方法执行

"Spring AOP 代理方法执行"

Spring AOP 方法执行过程 JdkDynamicAopProxy 在Spring AOP中使用JdkDynamicAopProxy作为JDK代理的实现,它继承了InvocationHandler,所以在实际执行方法时会调用invoke方法。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25...

Spring AOP 代理对象创建

"Spring AOP 代理对象创建"

Spring AOP 代理对象创建分析 ProxyFactory API创建代理 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 public class ApiCreateMain { public st...