自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

curePony

一匹小马农

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

原创 数据结构和算法学习(2)- 链表

文章目录链表链表的常用操作查找元素插入元素删除元素找中间节点反转判断链表是否有环判断两个链表是否相交合并两个升序链表测试单链表程序实战例题回文链表合并K个升序链表环形链表 IILRU 缓存的实现LFU 缓存实现跳表跳表的特点:跳表的原理跳表的简单实现参考资料链表由于数组中的数据在内存中是连续存放的,如果要在数组的任意位置插入或者删除元素,时间复杂度为 O(N)。因此在一些写多读少的场景下,人们往往会选择另外一种线性数据结构 - 链表。链表和数组的比较:\添加删除查询修改数

2021-03-02 23:27:39 245

原创 数据结构和算法学习(3)- 递归、回溯

文章目录递归是什么?计算 n 递归的简单例子递归的思维要点递归代码模板Java 代码模板回溯什么是回溯与动态规划的区别全排序递归是什么?递归就是循坏,通过函数来进行循环,类比盗梦空间:向下进入不同的梦境中,向上又回到原来一层(递归只能一层层向下/向上,不能跳过其中某一层)通过声音同步回到上一层(函数不同层之间传递变量)每一层环境和周围的人都是一份拷贝,主角等几个人穿越不同层的梦境(参数和携带变化)计算 n 递归的简单例子!n = 1*2*3…*npublic int factorial(

2021-02-22 12:35:40 399

原创 数据结构和算法学习(1)- 数组、队列和栈

文章目录数组数组是什么?数组的时间复杂度稀疏数组队列队列是什么?队列的时间复杂度队列Queue的java api如何利用数组来简单地模拟队列如何实现循环队列栈栈是什么栈的经典应用场景栈的应用例子-深度优先遍历栈应用例子-波兰表达式中缀表达式后缀波兰表达式数组数组是什么?在计算机科学中,数组数据结构(英语:array data structure),简称数组(英语:Array),是由相同类型的元素(element)的集合所组成的数据结构,分配一块连续的内存来存储。利用元素的索引(index)可以计算出该

2021-02-20 11:02:55 398

原创 Soul网关源码学习(20)- WebFlux 核心组件的装配 和 请求流程

文章目录前言WebFlux 核心组件的装配WebFlux 请求流程DispatcherHandler前言WebFlux 核心组件的装配WebFlux :我从哪里来?我是谁?我在干什么?Spring boot 的自动装载的外部化配置文件是 /resources/META-INF/spring.factories,所以我们第一时间想到的就是去依赖包 spring-boot-starter-webflux 下看一下这个文件,但是很遗憾,当我们在 idea 下展开依赖包的时候,发现只有一个 mainife

2021-02-07 08:50:23 690 1

原创 Soul网关源码学习(19)- 认证:SignPlugin

文章目录前言Ak/SK鉴权技术简介SignPlugin 的使用SignPlugin 源码分析总结前言在上一篇文章《Soul网关源码学习(18)- 防火墙:WafPlugin》中,我们学习了 WafPlugin 的使用,并且分析了其实现原理。那这一篇我们再来学习如何使用 suol 网关来进行签名认证。Ak/SK鉴权技术简介在介绍 SignPlugin 之前,有必要先简单介绍一下Ak/SK鉴权技术方案。在我们对接一些 PASS 平台和支付平台时,会要求我们预先生成一个 access key(AK) 和

2021-02-05 23:27:48 458

原创 Soul网关源码学习(18)- 防火墙:WafPlugin

文章目录前言WafPlugin 的使用WafPlugin 源码分析总结前言在上一篇文章《Soul网关源码学习(17)- 限流:RateLimiterPlugin》中,我们学习了 RateLimiterPlugin 的使用,并且分析了其实现原理。那这一篇我们再来学习另外一个插件:防火墙插件 WafPlugin。WafPlugin 的使用waf插件,是网关的用来对流量实现防火墙功能的核心实现,现在我们就先来看一下它到底是怎么使用的。和其他插件一样,先引入依赖:<dependency>

2021-02-04 23:09:27 232 1

原创 Soul网关源码学习(17)- 限流:RateLimiterPlugin

文章目录前言RateLimiterPlugin 的使用RateLimiterPlugin 的实现原理总结前言在上一篇文章[《Soul网关源码学习(16)- Resilience4JPlugin分析》中,我们学习了 Soul 是如何集成 Resilience4J 框架的,本来最后还剩 Sentinel 的集成原理没有分析,但是后来我发现 Sentinal 的集成代码非常的简单,有了前面两篇的参考之后,我相信小伙伴们自己去看难道也不大,所以这部分就不过多分析了。接下来,我们再来学习一个新的插件 RateLi

2021-02-04 01:33:27 451

原创 Soul网关源码学习(16)- Resilience4JPlugin分析

文章目录前言Resilience4JResilience4JPlugin总结前言在上一篇文章《Soul网关源码学习(15)- HystrixPlugin 分析》中,我们分析了 soul 集成 hystrix的原理,这一章我们再来分析一下 Resilience4J 到底是如果通过 Resilience4JPlugin 集成到 soul 里面的。Resilience4JResilience4j是受到Netflix Hystrix的启发,为Java8和函数式编程所设计的轻量级容错框架。整个框架只是使用了V

2021-02-02 01:39:11 227 1

原创 Soul网关源码学习(15)- HystrixPlugin 分析

文章目录前言HystrixHystrixPlugin 的实现隔离策略 - 基于信号量:HystrixCommand隔离策略 - 基于线程:HystrixCommandOnThread总结前言在上一篇文章《Soul网关源码学习(14)- hystrix,resilienc4j,sentinel 插件的使用和对比》中,我们学习了 hystrix,resilienc4j,sentinel 插件的使用,从这一章节起,我们将从 HystrixPlugin 开始逐个分析它们源码上的实现。Hystrix什么是H

2021-01-31 05:44:42 306

原创 Soul网关源码学习(14)- hystrix,resilienc4j,sentinel 插件的使用和对比

文章目录前言hystrix 使用resilienc4j 使用sentinel 使用对比总结前言在前面第6~13章中,我们分析了 Soul 网关核心功能“代理转发”的设计,并且以 Http 和 Dubbo 为切入点分析了其关键节点的底层实现。本来还剩下 Sofa 和 tars 代理的相关插件需要分析的,但是我发现它们在实现上和 Dubbo 代理的非常相似,因此这两个协议的代理就准备留给有兴趣的小伙伴自己去分析了。不知道小伙伴还记得第六章、第七章所画的哪些图中,有一些粉红色的插件,这些插件不是代理转发所

2021-01-30 07:19:51 654 1

原创 Soul网关源码学习(13)- Apache Dubbo 代理转发流程细解

文章目录前言BodyParamPluginApacheDubboPluginDubboResponsePlugin总结前言在前面第 8 ~ 12章中,我们深入分析了 Soul 关于 Http 的代理转发的底层实现,本篇我们开始分析 Apache Dubbo 的代理转发的是如何实现的。由于在前面的文章,我们已经分析了一些公有插件的实现,这里就不重复了,这里只针对 Apache Dubbo 代理的相关插件的实现进行分析。如果有小伙伴不明白不同协议代理之间一些流程上的共性,可以回去参考第6章和第7章。Bod

2021-01-29 01:50:27 393

原创 Soul网关源码学习(12)- 对下游 Http 服务的请求和响应处理

文章目录前言WebClientPluginWebClientResponsePlugin总结前言在上一篇文章《Soul网关源码学习(11)- Http代理的负载均衡:DividePlugin 和 SpringCloudPlugin》 中,我们分析了 Soul 对于负载均的实现,下一步就是发起对目标服务的请求了,那么本篇文章,我们就来分析 Http 代理转发的最后两站 WebClientPlugin 和 WebClientResponsePlugin。WebClientPluginWebClientP

2021-01-28 00:22:35 809

原创 Soul网关源码学习(11)- Http代理的负载均衡:DividePlugin 和 SpringCloudPlugin

文章目录前言DevidePlugin负载均衡策略 - 加权随机负载均衡策略 - 一致性 Hash负载均衡策略 - 加权轮询SpringCloudPlugin总结参考资料前言在上一篇文章《Soul网关源码学习(10)- 插件模板 AbstractSoulPlugin》 中,我们分析了插件的模板抽象类 AbstractSoulPlugin,AbstractSoulPlugin #executor 方法主要抽象了 PluginData、SelectorData、Rule 的获取和筛选流程,并将它们作为参数传递

2021-01-27 07:34:31 386

原创 Soul网关源码学习(10)- 插件模板 AbstractSoulPlugin

文章目录前言AbstractSoulPluginpluginDataSelectorDataRuledoExecute总结前言在前一篇文章《Soul网关源码学习(9)- 请求解析 GlobalPlugin》 中,我们学习请求流入的第一个插件 GlobalPlugin 的源码,GlobalPlugin 处理完之后,请求就有可能因为协议的不同而流向不同的插件路线,而后面这些插件的实现有很大一部分都有着一个共同的抽象模板 AbstractSoulPlugin,所以在学习后面这些插件的源码之前,有必要先来了解一

2021-01-25 21:39:48 1046

原创 Soul网关源码学习(9)- 请求解析 GlobalPlugin

前言在前一篇文章《Soul网关源码学习(8)- 代理转发入口 SoulWebHandler》 中,我们详细分析了网关的入口 SoulWebHandler,并且就代码中使用的几个技术进行了扩展延申学习。如果小伙伴看过前面两篇关于 soul 代理转发流程的介绍文章,都应该知道请求进入 SoulWebHandler 之后,下一站就是天后了!噗!开玩笑的!是 GlobalPlugin !。GlobalPluginGlobalPlugin 到底是干什么的?请求解析!这是我对 GlobalPlugin 功能

2021-01-24 04:06:17 298

原创 Soul网关源码学习(8)- 代理转发入口 SoulWebHandler

前言在前一篇文章《Soul网关源码学习(7)- 代理转发流程概览2》 中,我们理清楚了不同协议的代理转发流程,知道了每种协议处理的步骤和关键节点在哪里。那么现在就开始对这些节点逐个进入详细的分析,而 SoulWebHandler 作为 Request 的第一站自然就是我们首先要攻克的对象。WebHandler 简介在分析 SoulWebHandler 之前,我们需要先了解一下 WebHandler,因为 SoulWebHandler 是 WebHandler 的自定义实现。那 WebHandler

2021-01-23 07:39:42 404

原创 Soul网关源码学习(7)- 代理转发流程概览2

文章目录前言对比不同协议的代理转发流程dobbusofaspring cloud不同协议的代理转发流程总结总结前言在前一篇文章《Soul网关源码学习(6)- 代理转发流程概览》中,我们学习了:Soul 插件链在整个网关中扮演着至关重要的角色。学习了插件链的实现方式,即是如何传递执行。还了解了插件如何跳过执行。一种是“显式” Skip,通过调用插件的 skip 方法判断,这种类型插件一般是协议相关的插件,通过在 skip 方法中匹配协议是否符合。一种是“隐式” skip,这种是模板方法 Ab

2021-01-22 07:47:47 486 1

原创 Soul网关源码学习(6)- 代理转发流程概览

文章目录前言责任链Http 代理跟踪总结前言在前面几篇文章中,我们学习了如何使用 Soul 网关去代理 Http、Dubbo、Sofa 和 Spring Cloud 服务,并且对其进行了一些简单的测试。在这里,也说明一下本系列文章我们学习的一个大致的流程,我们会以主干向枝叶扩散的方式,对 Soul 进行一个全面的学习和分析,每一部分都是先学习如何使用,再对其进行源码分析。所以即使 Soul 给我们提供了很多非常好用的功能插件,这里我们也不会一上来就对 Soul 各个功能组件一顿分析,正所谓“擒贼先擒王

2021-01-21 07:36:10 723 1

原创 Http协议报文

文章目录报文流报文的组成起始行版本号:方法:状态码:原因短语:首部通用首部请求首部响应首部实体首部扩展首部参考资料报文流Http报文是在Http应用程序之间发送的数据块,这些数据块以一些文本形式的元信息(meta-information)开头,这些信息描述了报文的内容以及含义,后面跟着可选的数据部分。这些报文在客户端、服务器和代理之间流动。术语“流入”(inbound)、“流出”(outbound)、上游以及下游都是用来描述报文方向的。报文的组成报文有三部分组成:对报文进行描述的起始行(start

2021-01-16 17:30:42 384

原创 ShenYu 网关源码学习(1)- 简单介绍、编译和测试

文章目录前言GitHub下载编译启动网关启动Soul-bootstrap启动Soul-admin结语前言在开始学习Soul之前,我们先来了解一下Soul到底是什么?Soul是一个异步的,高性能的,跨语言的,响应式的API网关。Soul是站在巨人的肩膀上诞生的,它参考了Kong,Spring-Cloud-Gateway等优秀的网关,并在此基础上添加了一系列微服务领域的企业级功能:支持各种语言(http协议),支持dubbo和springcloud协议。插件化设计思想,插件热插拔,易扩展。灵活的流量

2021-01-14 18:06:49 9804

原创 OkHttp源码分析(3)- Dispatcher - 线程资源管理和分配

系列文章目录一、OkHttp源码分析(1)- 总体框架介绍二、OkHttp源码分析(2)- OkHttpClient - OkHttp的“ApplicationContext”三、OkHttp源码分析(3)- Dispatcher - 线程资源管理和分配四、OkHttp源码分析(4)- Call - 一次完整的用户请求封装五、OkHttp源码分析(5)- Interceptor调用链 - Http协议通信流程的实现和扩展六、OkHttp源码分析(6)- Transmitter - OkHttp的

2021-01-12 22:34:07 723 1

原创 OkHttp源码分析(2)- OkHttpClient - OkHttp的“ApplicationContext”

系列文章目录一、OkHttp源码分析(1)- 总体框架介绍二、OkHttp源码分析(2)- OkHttpClient - OkHttp的“ApplicationContext”三、OkHttp源码分析(3)- Dispatcher - 线程资源管理和分配四、OkHttp源码分析(4)- Call - 一次完整的用户请求封装五、OkHttp源码分析(5)- Interceptor调用链 - Http协议通信流程的实现和扩展六、OkHttp源码分析(6)- Transmitter - OkHttp的

2021-01-11 01:21:07 282

原创 OkHttp源码分析(1)- 总体框架介绍

系列文章目录一、OkHttp源码分析(1)- 总体框架介绍二、OkHttp源码分析(2)- OkHttpClient - OkHttp的“ApplicationContext”三、OkHttp源码分析(3)- Dispatcher - 线程资源管理和分配四、OkHttp源码分析(4)- Call - 一次完整的用户请求封装五、OkHttp源码分析(5)- Interceptor调用链 - Http协议通信流程的实现和扩展六、OkHttp源码分析(6)- Transmitter - OkHttp的

2021-01-05 23:59:04 443

原创 VMware Player版本使用小心得

系列文章目录一、VMware安装CentOs 7二、CentOs 7常用配置和工具安装三、VMware Player版本使用小心得文章目录系列文章目录前言拷贝系统总结前言在上一篇文章《CentOs 7常用配置和工具安装》中,我们在新的CentOS系统上安装了一些常用的工具。这篇文章我将会持续地记录我使用Vmware和CentOs的一些小心得,一开始可能没多少值得记录的东西,但是我会持续更新,一个是作为自己的使用笔记,同时也可以跟大家分享。拷贝系统VMware Player版本相对Pro版本来

2021-01-04 17:20:02 1501 2

原创 CentOs 7常用配置和工具安装

系列文章目录一、VMware安装CentOs 7二、CentOs 7常用配置和工具安装三、VMware Player版本使用小心得文章目录系列文章目录设置yum源安装常用工具安装JDK使用压缩包安装使用yum安装参考资料在上一篇文章《VMware安装CentOs 7》中,我们成功在虚拟机上安装了一个CentOS 7系统并且配置好了网络,接下来我们继续给它安装一些常用的工具。设置yum源CentOS 7默认的yum源是国外的,如果不是防骑的话,下载有时候会不稳定,因此我们需要把其换成国内的镜像源

2021-01-03 16:50:27 402

原创 CentOs 7下的Docker安装

CentOs 7 下Docket的安装和使用

2021-01-03 10:51:22 70

原创 VMware安装CentOs 7

VMware安装CentOs 7安装VMware Player安装CentOs 7安装VMware Player我这里安装的是免费的社区版:Workstation 16.0 Player for Windows安装流程非常Easily:安装CentOs 7

2021-01-02 21:16:39 294

原创 从BIO到Netty(1)- Linux网络模型简介

从BIO到Netty(1)- Linux网络模型简介前言Linux网络模型简介阻塞I/O非阻塞I/OI/O复用模型信号驱动I/O异步I/O总结参考资料前言其实我一直以来都有做笔记的习惯,但是呢却很少写博客。一方面我之前觉得,如果一篇博客文章仅仅只是从其他书籍或者资料中摘录一通然后拼接而成,而不添加一些自己的内容的话,好像意义不大。另一方面,如果我添加了自己的内容,但是内容不完善甚至是错误的理解怎么办,那不是坑别人了么?而且还很容易被人喷。因此我对写博文这事情一直畏畏缩缩的,当然懒也是重要原因。但是最近

2020-12-27 21:53:38 187

原创 Mysql-Explain(八):输出列-extra

Mysql-Explain(八):输出列-extra简介演示在上一篇《Mysql-Explain(七):输出列-ref、rows》文章中,我们通过具体的sql实例介绍了ref、rows在不同值下所代表的意义,接下来我们开始介绍最后一字段extra。简介 extra 包含其explain字段不适合显示但又十分重要的额外信息 using filesort ...

2020-03-01 21:51:31 517

原创 Mysql-Explain(七):输出列-ref、rows

Mysql-Explain(七):输出列-ref、rows简介演示在上一篇《Mysql-Explain(六):输出列-possiable_keys、key、key_len》文章中,我们通过具体的sql实例介绍了possiable_keys、key、key_len在不同值下所代表的意义,接下来我们开始介绍另外两个输出列:ef、rows。简介 ref 哪些列或者常量被用做...

2020-03-01 21:51:18 1916

原创 Mysql-Explain(六):输出列-possiable_keys、key、key_len

Mysql-Explain(六):输出列-possiable_keys、key、key_len简介演示在上一篇《Mysql-Explain(五):输出列-type》文章中,我们通过具体的sql实例介绍了explain输出列-type在不同值下所代表的意义,接下来我们开始介绍explain的另外三个输出列:possiable_keys、key、key_len。简介 possiab...

2020-03-01 21:51:07 755

原创 Mysql-Explain(五):输出列-type

Mysql-Explain(五):输出列-type简介演示在上一篇《Mysql-Explain(四):输出列-select_type》文章中,我们通过具体的sql实例介绍了explain输出列-select_type在不同值下所代表的意义,接下来我们开始介绍explain的第三个输出列:type。简介 type 访问类型排序,显示查询使用了何种类型,从最好到最差依次是:...

2020-03-01 21:50:56 529

原创 Mysql-Explain(四):输出列-select_type

Mysql-Explain(三):输出列-select_type简介演示在上一篇《Mysql-Explain(三):输出列-id》文章中,我们通过具体的sql实例介绍了explain输出列-id在不同值下所代表的意义,接下来我们开始介绍explain的第二个输出列:select_type。简介 select_type 查询的类型,主要用来区别普通查询,联合查询,子查询...

2020-03-01 21:50:44 486

原创 Mysql-Explain(三):输出列-id

Mysql-Explain(三):输出列-id简介演示简介在上一篇《Mysql-Explain(二):explain实验数据准备》文章中,我们准备好了演示的表和数据,下面就来开始介绍第一个explain结果列:id. 字段 字段说明 字段值描述 id select查询序列号,包含一组数字,表示查询中执行select子句或...

2020-03-01 21:50:32 390

原创 Mysql-Explain(二):explain实验数据准备

explain实验数据准备上一篇博客:Mysql-Explain(一):explain简介和输出列解释,简单介绍了explain的作用,并且通过表格罗列出了explain所有的输出列的相关信息,但是如果仅仅看文字可能还是难以理解其中的含义,更何况本人文笔羞涩,可能会存在言不达意的情况,所以还是通过实验来一一解读较好。首先准备三张表:student、school、major,表结构如下stu...

2020-03-01 21:50:19 244

原创 Mysql-Explain(一):explain简介和输出列解释

Mysql-Explain(一):explain简介和输出列解释explain简介explain输出列解释explain简介explain和SQL语句一起使用的时候,MySQL将显示来自优化器的相关语句执行计划的信息,包括表的读取顺序、数据读取操作的操作类型、那些索引可以被使用、那些索引会被实际使用、表之间的引用、每张表大概需要读取多少行记录等等。通过这些我们能分析SQL语句的结构和性能瓶颈,...

2020-03-01 21:49:58 813 1

原创 kubernetes的学习日志3-kubernetes的集群部署

kubernetes的集群部署kubeadm部署工具集群的运行模式准备用于实践操作的集群环境准备四个虚拟主机初始化Master修改bridge-nf-call-iptables安装docker-ce,kubelet,kubeadm,kubectl初始化kuberneteskubernetes系统可以运行在多种平台之上,包括虚拟机、裸服务器或PC等,例如本地主机或者托管的云端虚拟机。这里使用虚拟机...

2019-11-03 21:26:56 254

原创 zookeeper客户端命令详解-create

创建节点命令:create [-s] [-e] path data acl这条命令包含znode四种模式的创建持久(persistent)命令:create path dataznode被创建后,创建其的client连接断开或者zookeeper服务重启,该节点都会依然存在。临时(ephemeral)命令:create -e path data当创建改znode的client...

2019-11-03 21:26:30 4087

原创 zookeeper单机模式安装和基本操作

zookeeper单机模式安装和基本使用安装环境:centos 7,JDK 1.8下载Zookeeper,完成后直接解压到本地目录修改配置文件cp conf/zoo_sample.cfg conf/zoo.cfgvim conf/zoo.cfgticktime:心跳间隔时间,同时也可以控制心跳直接最大会话时间,最大会话时间是心跳间隔的两倍initLimit:集群中的follower...

2019-11-03 21:25:54 286

原创 nginx-目录结构和命令选项

nginx目录结构ll /usr/local/nginxconf:配置文件目录html:测试网页目录logs:日志目录sbin:程序目录nginx命令选项命令选项说明-h查看帮助选项-V查看版本信息和配置选项-t测试nginx配置文件语法-c指定配置选项文件路径-ssignal发送信号给master进程,signal:stop,q...

2019-11-03 21:25:32 460

空空如也

空空如也

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

TA关注的人

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