spring cloud gateway源码(一)请求时少一层的路径的源码分析

  r有时我们用springcloudgateway做网关的时候,会发现调用的url少了一层,这个是什么做到的呢,我们就根据源码分析一下。 一、初始化 在GatewayDiscoveryClientAutoConfiguration类中创建了bean:DiscoveryLocatorProperties @Bean public DiscoveryLocatorProperties ...
分类: 其他 发布时间: 08-15 23:21 阅读次数: 0

spring cloud gateway源码(三)Filter的加载

在SpringCloud Gateway网关中,必不可少的就是filter了,网关中的filter是分两层走的,先走一层是bean的filter,再走一层普通的filter。具体什么意思,下面我们一起来看下。 一、带bean的filter。 刚开始初始化的时候,会加载HttpHandlerAutoConfiguration类中的bean,HttpHandler,如下: @Bean ...
分类: 其他 发布时间: 08-15 23:21 阅读次数: 0

springboot源码解析(六)@ConditionalOnClass

在springboot中,有@ConditionalOnClass,@ConditionalOnBean,@ConditionalOnMissingClass,@ConditionalOnMissingBean等注解,这些注解的含义是有某个类或者没有某个bean才会加载,那么源码是在什么地方处理的呢,下面我们一起看下。 一、举例 我们以类EncryptionBootstrapConfigura...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

SpringBoot源码解析(七)@Primary

在SpringBoot中有许多类使用到了@Primary注解,关于用法,请看这篇博客:在spring中常被忽视的注解 @Primary。 这次我们不说用法,从源码层面来看下: 一、入口 在创建bean的时候,我们会获取bean的依赖bean,这个方法就是DefaultListableBeanFactory的doResolveDependency方法,如果匹配的bean大于1,会执行如下方法:...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

【数据结构与算法分析】第四章 树(二)

【数据结构与算法分析】第四章 树(二) 3.二叉树 二叉树是一棵树,其中每个节点都不能有多于两个的儿子。 4.表达式树 表达式树的树叶是操作数,如常量或变量,其他节点为操作符。其计算过程为中序遍历(左子树,节点,右子树)。 如图为一个表达式树: 左子树的值为a+(b*c),右子树的值是((d * e)+f)*g,整个树为(a+(b * c))+(((d * e)+f)*g),也称为...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

Spring源码之请求路径匹配路由

在spring中,当一个请求过来的时候会做路径匹配,下面我们就从源码层面分析一下路径匹配。 示例: @RequestMapping(value = "/user/{aid}/online/**", method = RequestMethod.GET) 我们一起看看这个方法是如何寻找的,和一些相应的工具类 1、入口 我的项目使用的是自动配置的RequestMappingHandlerM...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

数据结构| |希尔排序

希尔排序思想:又称“缩小增量排序”,先将整个待排记录序列分割成为若干个子序列,对每个子序列分别直接插入排序,待整个序列记录“基本有序”时,再对全体记录进行一次直接插入排序。代码如下:void shell_sort(int arr[], int sz) { //自己定义一个增量数组 int add[MAX] = { 0 }; int sz_d = 0; int ret = sz; whil...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

spring cloud gateway源码(四)路由定位器

在SpringCloud Gateway中,路由定位器是查找请求连接的作用,我们通过源码看下,在SpringCloud Gateway中,路由定位器是如何工作的。 一、RouteLocator SpringCloud gateway的路由定位器,包括CachingRouteLocator,CompositeRouteLocator,RouteDefinitionRouteLocator,他们的...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

数据结构| |冒泡排序

冒泡排序:也叫作起泡排序对于n个数据,进行n-1次冒泡,每一次冒泡将最大的或者最小的放到序列的第n个,然后在进行下一次冒泡,下次冒泡将前n-1个数据的最小的,放到n-1的位置上,一次冒泡,知道n-1结束,那么该序列也就有有序了。代码如下:1.基础版(没有进行任何优化)void bubble_sort(int arr[], int sz) { int i = 0; int j = 0; for...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

spring cloud gateway源码(五)请求流程

spring Cloud gateway的请求流程图如下: 一、Predicate 在Spring Cloud Gateway中,在走完自定义的Filter后,会找到对应的handler方法,而在Spring Cloud Gateway中,对应的Handler就是根据Route去寻找的,   @Override public Mono<Object> getHandler(S...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

数据结构| |快速排序

代码如下:void quick_sort(int arr[], int left, int right) { //保存枢轴 int head = left; int tail = right; int pivotkey = arr[left]; if (left < right) { while (left != right) { while (left < ...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

spring cloud gateway源码(六)Predicate

在Spring Cloud Gateway中,默认添加的predicate是:PathRoutePredicateFactory。在Spring Cloud Gateway中有许多的Predicate,他们的功能各异。下面我们一起分析一下。 一、获取predicate 在RouteDefinitionRouteLocator类的getRoutes()方法中: @Override pub...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

spring cloud gateway源码(七)GatewayFilterFactory

在spring cloud gateway中,有两种形式的gatewayFilter,一种是直接实现Global接口的bean,还有一种就是GatewayFilterFactory。这些类在spring-cloud-gateway的core包中的org.springframework.cloud.gateway.filter.factory路径下。 一,初始化 在创建DiscoveryLoca...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

c语言| |交换两个数的n种方法

交换两个数的n种办法代码如下:#include <stdio.h> ​ //采用辅助空间的方法 void SwapTmp(int* a, int* b) { int tmp = *a; *a = *b; *b = tmp; } ​ //没有采用辅助空间,运用异或计算 void SwapNotTmp(int* a, int* b) { *a = (*a) ...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

Linux内存分页管理

在网上阅读了一篇关于内存分页管理的文章,这是原文链接 本人画的解析图如下: 注:1、地址总线
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

springboot项目中dubbo启动的源码分析

现在本人开始使用起来了微服务,spring boot是微服务必备的框架,那么今天就说下,springboot中是怎么整合dubbo的(源码层面) 我们直接从AbstractApplicationContext类的refresh方法开始说起,首先springboot项目的Application上面的注解是配置扫描的路径的,如下: @SpringBootApplication @MapperSc...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

内存溢出分析工具MAT实战(一)JVM启动参数分析

在工作的过程中,有时我们会遇到内存溢出的问题,这时候就需要我们有足够的知识积累去解决内存溢出相关问题。 本文章是建立在读者了解java的内存结构的基础上。 关于内存分析工具,mat是非常实用的一款内存分析工具,下面我们针对实际情况对其进行介绍。 一、获取分析文件 一般我们分析内存的时候都是针对dump文件进行分析,关于dump文件的获取,有两种方式,一种是在jvm参数中添加,当内存溢出时生...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

c语言| |求最大公约数

1-暴力求解法思想:两个数的最大公约数一定小于或者等于两者中较小的数,那么就从1开始一直除,除到较小值,得出最大公约数2-辗转相除法思想:用两者中任意一个数,除以另外一个数,得到余数,在用刚才的除数除以余数,一直这样除下去,如果哪一次余数为0,那么该次中的除数就是最大公约数。//求两个数的最大公约数 ​ #include <stdio.h> ​ ​ //暴力求解法 int GetCo...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

SpringBoot源码解析(九)Actuator

一、引入Actuator 当我们在项目中引入spring-boot-starter-actuator的时候,我们可以通过如下方式调用,查看服务的信息: localhost:8006/actuator/info 默认actuator只开启了info和health,如果想要使用其他功能,需要在配置中类似如下方式添加: management.endpoints.web.exposure.i...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0

python中字符串的基本常识。

  字符串是 Python 中最常用的数据类型。我们可以使用引号('或")来创建字符串。 创建字符串很简单,只要为变量分配一个值即可。例如:   info = '今天是星期四 Hello World'     Python不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。 Python访问子字符串,可以使用方括号来截取字符串。 # 值1:开始位置 (包括该位置)...
分类: 其他 发布时间: 08-15 23:20 阅读次数: 0