Java高级开发精进
文章平均质量分 60
开发进阶
Java程序员廖志伟
《Java项目实战—深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)作者、(CSDN、51CTO、阿里云)博主专家,研究过Spring、SpringBoot、Spring MVC、SpringCloud、Mybatis、Dubbo、Zookeeper、RabbitMQ、RocketMQ、Kafka、Redis、MySQL、 ElasticSearch、MongoDB、ShardingSphere、DDD、Kubernetes等技术,不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。
展开
-
java池化技术研究
🌟我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文专业写手、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。🌎跑过十五公里、🚀徒步爬过衡山、🔥有过三个月减肥20斤的经历、是个喜欢躺平的狠人。原创 2023-12-18 11:02:26 · 1145 阅读 · 0 评论 -
【数据存储】【Redis】第七章:Redis缓存Zset类型的使用
package com.sky.testmodule.controller;import com.sky.testmodule.constant.TestConstant;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.DefaultTypedTuple;import org.springframework.data.redis.core原创 2021-09-22 17:10:33 · 783 阅读 · 18 评论 -
Tomcat:第五章:Tomcat 部署脚本编写
我们平时启动Tomcat过程是怎么样的? 复制WAR包至Tomcat webapp 目录。 执行starut.bat 脚本启动。 启动过程中war 包会被自动解压装载。 但是我们在Eclipse 或idea 中启动WEB项目的时候 也是把War包复杂至webapps目录解压吗?显然不是,其真正做法是在Tomcat程序文件之外创建了一个部署目录,在一般生产环境中也是这么做的 即:Tomcat 程序目录和部署目录分开。我们只需要在启动时指定CATALINA_HOME与CATALINA_BASE参数即原创 2020-12-22 19:30:25 · 11670 阅读 · 11 评论 -
架构:第九章:架构设计(为什么要这么设计,解决了什么问题)
原创 2021-06-10 14:59:33 · 2455 阅读 · 65 评论 -
Tomcat:第一章:Web应用与HTTP请求和Cookie以及Session之间的关系
web发展历史:早期的Web应用主要用于浏览新闻等静态页面,HTTP服务器(比如Apache、Nginx)向浏览器返回静态HTML,浏览器负责解析HTML,将结果呈现给用户。 通过一些交互操作,来获取动态结果,因此也就需要一些扩展机制能够让HTTP服务器调用服务端程序,Sun公司推出了Servlet技术。 Servlet是运行在服务端的Java小程序,但是Servlet没有main方法,不能独立运行,因此必须把它部署到Servlet容器中,由容器来实例化并调用Servlet。 Tomcat就是一个原创 2020-09-18 17:10:49 · 6280 阅读 · 82 评论 -
【数据存储】【Redis】第五章:Redis缓存String类型的使用场景
package com.sky.testmodule.controller;import com.alibaba.fastjson.JSON;import com.sky.testmodule.constant.TestConstant;import com.sky.testmodule.entity.TestEntity;import com.sky.testmodule.util.HttpRequestUtil;import org.redisson.Redisson;import org原创 2021-08-11 09:19:54 · 468 阅读 · 15 评论 -
Tomcat:第四章:Tomcat IO模型
知识点: Tomcat支持的IO模型说明 BIO 与NIO的区别 1、Tomcat支持的IO模型说明 描述 BIO 阻塞式IO,即Tomcat使用传统的java.io进行操作。该模式下每个请求都会创建一个线程,对性能开销大,不适合高并发场景。优点是稳定,适合连接数目小且固定架构。 NIO 非阻塞式IO,jdk1.4 之后实现的新IO。该模式基于多路复用选择器监测连接状态在通知线程处理,从而达到非阻塞的目的。比传统BIO能更好的支持并发性能。Tomcat 8.原创 2020-10-24 11:55:12 · 6616 阅读 · 100 评论 -
【数据存储】【Redis】第八章:Redis缓存Set类型的使用
package com.sky.testmodule.controller;import com.sky.testmodule.constant.TestConstant;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.Cursor;import org.springframework.data.redis.core.RedisTempl原创 2021-09-22 17:10:24 · 738 阅读 · 9 评论 -
【数据存储】【Redis】第二章:底层数据结构
简单字符串先简单了解一下C语言是怎么处理字符串的:在C语言中,字符串结束的标识是空字符,也就是’’,这会有一个问题,就是字符串的内容可能包括空字符串,这个时候是不是就没办法正确存取字符串的内容了,它有可能中途读取一半就完了。除此之外,它还不记录字符串的长度,这也会有一系列问题,如果需要获取字符串的长度通过遍历计数来获取的,这会导致它的时间复杂度会比较高。如果需要修改字符串,就要重新分配内存,不重新分配的话,字符串长度增大,超出给定的长度,这个时候会造成内存缓冲区溢出,字符串长度减小还会造成内原创 2021-08-03 20:59:47 · 1491 阅读 · 4 评论 -
【数据存储】【Redis】第七章:Redis缓存List类型的使用
package com.sky.testmodule.controller;import com.sky.testmodule.constant.TestConstant;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.web.bind.annotation原创 2021-09-22 17:07:07 · 1158 阅读 · 17 评论 -
【数据存储】【Redis】第一章:快速集成Redis应用到项目中
准备工作:搭建项目提供Redis模块给其他项目集成应用我们创建一个项目:第一步:父类的pom.xml文件:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://m原创 2021-08-07 13:15:31 · 431 阅读 · 9 评论 -
Tomcat:第三章:Tomcat各组件
tomcat组件:Servershutdown:关闭命令。基于telent 执行SHUTDOWN 命令即可关闭(必须大写) telnet 127.0.0.1 8005 SHUTDOWNServiceConnector接受客户端链接并接受消息报文,消息报文经由它解析后送往容器中处理关于Connector的几个重要点:监听的IP和Port; 处理请求的最大线程数;如果所有线程都忙,则会丢弃新的请求; 所有的Connector接收到请求后,转换成统一的模式...原创 2020-10-24 11:54:48 · 11220 阅读 · 95 评论 -
【数据存储】【Redis】第六章:Redis缓存Hash类型的使用
package com.sky.testmodule.controller;import com.sky.testmodule.constant.TestConstant;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.Cursor;import org.springframework.data.redis.core.RedisTempl原创 2021-09-17 14:23:36 · 618 阅读 · 9 评论 -
Docker:第六章:Docker部署项目
1.idea安装docker插件2.配置服务器docker地址端口 如:tcp://18.156.84.63:9004,tcp://18.157.163.236:90043.配置docker file,选中dockerfile位置,配置docker镜像和容器名称,应用端口4.配置打包环境5.运行dockerfile生成应用镜像6.选中要发布的容器,右键stop container ,delete contrainer7.选中刚才生成的镜像,右键create contrainer 配置原创 2021-06-10 11:46:28 · 345 阅读 · 12 评论 -
【数据存储】【Redis】第三章: Redis五大数据类型实现原理
由于C语言跟贴近操作系统,直接跟操作系统交互,命令执行响应比较快,所以Redis选择C语言进行编写可以提高性能,但是C 语言不具备自动回收内存功能,于是乎Redis自己构建了一个内存回收机制。原创 2021-07-31 12:01:48 · 4626 阅读 · 11 评论 -
Tomcat:第二章:Tomcat日志文件分析
Tomcat下载地址:https://tomcat.apache.org/download-80.cgitomcat源码下载:tomcat目录结构:打开 Tomcat 的日志目录,也就是 Tomcat 安装目录下的 logs 目录。Tomcat 的日志信息分为两类 :一是运行日志,它主要记录运行过程中的一些信息,尤其是一些异常错误日志信息 ; 二是访问日志,它记录访问的时间、IP 地址、访 问的路径等相关信息。 日志文件类型分析:catalina.***.log :主原创 2020-10-24 11:54:21 · 15898 阅读 · 106 评论 -
【数据存储】【Redis】第四章:高并发下实现分布式锁
直接上代码:大部分互联网公司实现分布式锁原理 /** * 分布式锁底层实现原理 * @return */ @GetMapping("distributedLock") public Object distributedLock(){ String lockKey = "distributedLockKey"; //给每个线程都设置一个唯一标识,避免出现程序执行的时间超过设置的过期时间,导致其他线程删除了自己的锁原创 2021-08-08 21:38:15 · 2385 阅读 · 37 评论 -
【JavaP6大纲】分布式事务篇:最大努力通知
最大努力通知?最大努力通知其实我觉得本地消息表也可以算最大努力,事务消息也可以算最大努力。就本地消息表来说会有后台任务定时去查看未完成的消息,然后去调用对应的服务,当一个消息多次调用都失败的时候可以记录下然后引入人工,或者直接舍弃。这其实算是最大努力了。事务消息也是一样,当半消息被commit了之后确实就是普通消息了,如果订阅者一直不消费或者消费不了则会一直重试,到最后进入死信队列。其实这也算最大努力。所以最大努力通知其实只是表明了一种柔性事务的思想:我已经尽力我最大的努力想达成事务的最终一致了。原创 2021-04-07 11:09:00 · 267 阅读 · 0 评论 -
【JavaP6大纲】Zookeeper篇:分布式锁
Zookeeper分布式锁?客户端A要获取分布式锁的时候首先到locker下创建一个临时顺序节点(node_n),然后立即获取locker下的所有(一级)子节点。此时因为会有多个客户端同一时间争取锁,因此locker下的子节点数量就会大于1。对于顺序节点,特点是节点名称后面自动有一个数字编号,先创建的节点数字编号小于后创建的,因此可以将子节点按照节点名称后缀的数字顺序从小到大排序,这样排在第一位的就是最先创建的顺序节点,此时它就代表了最先争取到锁的客户端!此时判断最小的这个节点是否为客户端A之前创建出来的原创 2021-04-07 16:55:23 · 2219 阅读 · 21 评论 -
【高级开发进阶】1.1.3 双亲委派模型及如何打破
首先得知道什么是双亲委派模型?为什么要打破它?打破它用途是什么?双亲委派模型要求除了顶层的启动类加载器外,其余的类加载器都应当有自己的父类加载器。上面所介绍的这几种类加载器的层次关系,称为类加载器的双亲委派模型。类随着它的类加载器一起具备了一种带有优先级的层次关系。例如类java.lang.Object,它由启动类加载器加载。双亲委派模型保证任何类加载器收到的对java.lang.Object的加载请求,最终都是委派给处于模型最顶端的启动类加载器进行加载,因此Object类在程序的各种类原创 2021-02-03 20:44:54 · 3410 阅读 · 80 评论 -
【高级开发进阶】6.1 现代计算机模型基础
学完本章中,读者需要回答:1.计算机的硬件结构有哪些?2. 计算机是如何运行指令的?本节首先介绍现代计算机模型的基本概念,理解这些概念是学习使用JMM内存模型的基础。冯·诺伊曼模型是由美籍匈牙利数学家冯.诺依曼于1945年提出来的,故称为冯.诺依曼计算机模型。它是由运算器、存储bai器、控制器、输入du和输出设备五大基本部分组成的部件。内部应采用二进制(把不同宽度高、低电平组成的波形输入给计算机的CPU,它就可以识别为成由“1”和“0”组成的数据,而逻辑电路的基础单元就是二进制的1和0(器.原创 2021-01-25 20:58:28 · 1770 阅读 · 27 评论 -
【高级开发进阶】17.1.1 Redis核心数据结构剖析
keys:全量遍历键,用来列出所有满足特定正则字符串规则的key,当redis数据量比较大时,性能比较差,要避免使用scan:渐进式遍历键SCAN cursor [MATCH pattern] [COUNT count]scan 参数提供了三个参数,第一个是 cursor 整数值(hash桶的索引值),第二个是 key 的正则模式,第三个是一次遍历的key的数量(参考值,底层遍历的数量不一定),并不是符合条件的结果数量。第一次遍历时,cursor 值为 0,然后将返回结果中第一个整数..原创 2021-02-23 09:49:56 · 3728 阅读 · 127 评论 -
【JavaP6大纲】MySQL篇:分库分表之后,id 主键如何处理?
分库分表之后,id 主键如何处理?基于数据库的实现方案数据库自增 id:这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。适合的场景:你分库分表就俩原因,要不就是单库并发太高,要不就是单库数据量太大;除非是你并发不高,但是数据量太大导致的分库分表扩容,你可以用这个方案,因为可能每秒最高并发最多就几百,那么就走单独的一个库和表生成自增主键即可。设置数据库 sequence 或者原创 2021-04-12 17:30:32 · 815 阅读 · 0 评论 -
【JavaP6大纲】多线程篇:线程池七个核心参数
底层在创建线程池的时候有七个参数:核心线程数,同时执行的最大线程数,多余线程存活时间,单位时间秒,任务队列,默认线程工厂,拒绝策略corePoolSize:核心线程数maximumPoolsize:同时执行的最大线程数keepAliveTime:多余线程存活时间,当前线程池数量超过核心线程数时,当前空闲时间达到多余线程存活时间的值的时候,多余空闲线程会被销毁到只剩核心线程数为止。unit:多余线程存活时间的单位workQueue:任务队列,被提交但尚未被执行的任务 threadFactory:生原创 2021-04-06 19:57:53 · 383 阅读 · 0 评论 -
【JavaP6大纲】MySQL篇:传播行为
传播行为?Spring支持7中事务传播行为一个场景:假设外层方法里面包含二个新增用户和新增角色的方法,二个方法后面还会抛一个异常。propagation_required(需要传播):当前没有事务则新建事务,有则加入当前事务。外围方法未开启事务,插入用户表和用户角色表的方法在自己的事务中独立运行,外围方法异常不影响内部插入,所以两条记录都新增成功。外围方法开启事务,内部方法加入外围方法事务,外围方法回滚,内部方法也要回滚,所以两个记录都插入失败。propagation_supports(支持传播原创 2021-04-08 10:46:54 · 284 阅读 · 1 评论 -
AQS的原理及应用
Semaphore 顾名思义为信号量,它可以控制对共享资源的访问线程数目,通过 acquire() 方法来阻塞获取资源线程,release() 方法来释放共享资源,来实现对资源的同步控制。AQS 机制的核心就是通过一个 FIFO 的队列来对等待获取资源的线程进行排序,每次资源的释放都会导致头节点的唤醒,而唤醒后的线程将会尝试再次抢占资源。否则,会尝试获取支付锁。同时,由于网络条件的不稳定,支付操作可能会失败,需要进行多次重试,直到支付成功。同时,如果支付失败,还需要记录该次支付的操作,以便后续进行重试。原创 2023-08-18 12:15:00 · 162 阅读 · 0 评论 -
【高级开发进阶】总篇
第一篇性能调优专题第1章Jvm1.1 JVM类加载机制1.1.1 启动类、扩展类、应用程序类加载器1.1.2 手写自定义类加载器1.1.3 双亲委派模型及如何打破1.2 JVM内存模型1.2.1 堆内存分代机制及对象生命周期1.2.2 线程栈及栈帧内部结构1.2.3 方法区(元空间)及常量池1.2.4 程序计数器1.2.5 本地方法栈1.3 四种引用类型1.3.1 强引用Reference1.3.2 软引用SoftRe...原创 2021-01-25 14:06:44 · 21187 阅读 · 996 评论 -
【JavaP6大纲】分布式事务篇:两阶段提交(2PC)
两阶段提交(2PC)?两阶段提交(2PC)第一阶段:协调者询问参与者事务是否执行成功,参与者发回事务执行结果。这一阶段的协调者有超时机制,假设因为网络原因没有收到某参与者的响应或某参与者挂了,那么超时后就会判断事务失败,向所有参与者发送回滚命令。第二阶段:如果事务在每个参与者上都执行成功,事务协调者才发送通知让参与者提交事务;否则,协调者发送通知让参与者回滚事务。这一阶段的协调者的没法超时,只能不断重试。协调者是一个单点,存在单点故障问题。假设协调者在发送准备命令之前挂了,还行等于事务还没开始。原创 2021-04-07 10:56:05 · 1190 阅读 · 23 评论 -
【高级开发进阶】17.1 扩展篇:redis安装
下载地址:http://redis.io/download安装步骤:# 安装gcc yum install gcc# 把下载好的redis-5.0.3.tar.gz放在/usr/local文件夹下,并解压 wget http://download.redis.io/releases/redis-5.0.3.tar.gz tar xzf redis-5.0.3.tar.gz cd redis-5.0.3# 进入到解压好的redis-5.0.3目录下,进行编译与安装 make# 修改配置 d原创 2021-02-23 09:46:51 · 3100 阅读 · 13 评论 -
【JavaP6大纲】Redis篇:如何保证 Redis 高并发、高可用?Redis 的主从复制原理能介绍一下么?Redis 的哨兵原理能介绍一下么?主从架构下的数据部分复制?
如何保证 Redis 高并发、高可用?Redis 的主从复制原理能介绍一下么?Redis 的哨兵原理能介绍一下么?主从架构下的数据部分复制?考虑如何用 redis 来加多台机器,保证 redis 是高并发的,如何让 redis 保证自己不是挂掉以后就直接死掉了,即 redis 高可用?高并发单机的 Redis,能够承载的 QPS 大概就在上万到几万不等。对于缓存来说,一般都是用来支撑读高并发的。因此架构做成主从(master-slave)架构,一主多从,主负责写,并且将数据复制到其它的 slave 节原创 2021-04-06 19:46:09 · 283 阅读 · 10 评论 -
【JavaP6大纲】Dubbo篇:Dubbo 用到哪些设计模式?
Dubbo 用到哪些设计模式?Dubbo 框架在初始化和通信过程中使用了多种设计模式,可灵活控制类加载、权限控制等功能。工厂模式Provider 在 export 服务时,会调用 ServiceConfig 的 export 方法。ServiceConfig中有个字段:private static final Protocol protocol = ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();D原创 2021-04-11 16:15:44 · 401 阅读 · 0 评论 -
【JavaP6大纲】功能设计篇:单点登录
用户访问系统1的受保护资源,系统1发现用户未登录,跳转至sso认证中心,并将自己的地址作为参数sso认证中心发现用户未登录,将用户引导至登录页面用户输入用户名密码提交登录申请sso认证中心校验用户信息,创建用户与sso认证中心之间的会话,称为全局会话,同时创建授权令牌sso认证中心带着令牌跳转会最初的请求地址(系统1)系统1拿到令牌,去sso认证中心校验令牌是否有效sso认证中心校验令牌,返回有效,注册系统1系统1使用该令牌创建与用户的会话,称为局部会话,返回受保护资源用户访问系统2的受保护原创 2021-04-07 10:29:49 · 267 阅读 · 0 评论 -
【JavaP6大纲】分布式事务篇:BASE理论
BASE理论?BASE 理论是对 CAP 理论的延伸,核心思想是即使无法做到强一致性,但应用可以采用适合的方式达到最终一致性。基本可用: 基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。软状态: 软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。MyS原创 2021-04-07 10:52:27 · 634 阅读 · 20 评论 -
【JavaP6大纲】Java基础篇:HashMap扩容机制
HashMap扩容机制将(k1,v1)直接放入Node类型的数组中,这个数组初始化容量是16,默认的加载因子是0.75,也就是当元素加到12的时候,底层会进行扩容,扩容为原来的2倍。可能引发的问题:HashMap实际使用过程中会出现一些线程安全问题,在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况,开多个线程不断进行put操作,rehash的时候,旧链表迁移新链表的时候,如果在新表的数组索引位置相同,则链表元素会倒置(就是因为头插) 所以最后的结果打乱了插入的顺序,就可能发生环形链和原创 2021-04-08 10:18:34 · 291 阅读 · 3 评论 -
【JavaP6大纲】Dubbo篇:Dubbo 的工作原理?注册中心挂了可以继续通信吗?
Dubbo 的工作原理?注册中心挂了可以继续通信吗?第一步:provider 向注册中心去注册第二步:consumer 从注册中心订阅服务,注册中心会通知 consumer 注册好的服务第三步:consumer 调用 provider第四步:consumer 和 provider 都异步通知监控中心服务注册与发现1、Provider(提供者)绑定指定端口并启动服务2、供者连接注册中心,并发本机 IP、端口、应用信息和提供服务信息发送至注册中心存储3、Consumer(消费者),连接注册中心原创 2021-04-08 10:44:53 · 1278 阅读 · 11 评论 -
JVM CPU Profiler
JVM CPU Profiler 是一个非常重要的性能分析工具,可以帮助 Java 开发者准确地找出程序中的性能瓶颈,并给出相应的优化建议。在实际开发中,我们应该时刻关注程序的性能问题,并及时使用 JVM CPU Profiler 工具来分析性能瓶颈,提高程序的运行效率。原创 2023-08-16 12:15:00 · 883 阅读 · 0 评论 -
【JavaP6大纲】Zookeeper篇:Zookeeper假死问题
Zookeeper假死问题?假死:心跳出现超时可能是master挂了,但是也可能是master,zookeeper之间网络出现了问题,也同样可能导致。这种情况就是假死,master并未死掉,但是与ZooKeeper之间的网络出现问题导致Zookeeper认为其挂掉了然后通知其他节点进行切换,这样slaver中就有一个成为了master,但是原本的master并未死掉,这时候client也获得master切换的消息,但是仍然会有一些延时,zookeeper需要通讯需要一个一个通知,这时候整个系统就很混乱可能原创 2021-04-07 16:54:42 · 566 阅读 · 17 评论 -
【JavaP6大纲】MySQL篇:如何设计可以动态扩容缩容的分库分表方案?
如何设计可以动态扩容缩容的分库分表方案?对于分库分表来说,主要是面对以下问题:选择一个数据库中间件,调研、学习、测试;设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,比如 3 个库,每个库 4 个表;基于选择好的数据库中间件,以及在测试环境建立好的分库分表的环境,然后测试一下能否正常进行分库分表的读写;完成单库单表到分库分表的迁移,双写方案;线上系统开始基于分库分表对外提供服务;扩容了,扩容成 6 个库,每个库需要 12 个表,你怎么来增加更多库和表呢?这个是你必须面对的一原创 2021-06-10 14:51:30 · 312 阅读 · 0 评论 -
【高级开发进阶】Redis五大数据结构应用场景落地
Redis缓存数据结构,数据同步问题(双删策略),缓存雪崩,缓存穿透,热点缓存重构,缓存失效,哨兵机制,持久化,redis 淘汰机制熟悉掌握Redis数据结构的使用场景,熟悉Redis缓存高并发的使用场景。比如,缓存雪崩,缓存穿透。五种数据结构:字符串string应用场景:一,单值缓存:set key value get key二,对象缓存:set user:1 value(json数据)说明:一次存入,后面修改不方便,胜在简单mset user:1:name zhug原创 2021-03-04 15:42:29 · 6902 阅读 · 381 评论 -
【JavaP6大纲】SpringCloud篇:熔断框架如何做技术选型?选用 Sentinel 还是 Hystrix?
熔断框架如何做技术选型?选用 Sentinel 还是 Hystrix?功能SentinelHystrix隔离策略信号量隔离线程池隔离/信号量隔离熔断降级策略基于响应时间或失败比率基于失败比率实时指标实现滑动窗口滑动窗口(基于 RxJava)规则配置支持多种数据源支持多种数据源扩展性多个扩展点插件的形式基于注解的支持支持支持限流基于 QPS,支持基于调用关系的限流不支持流量整形支持慢启动、匀速器模式不支持系原创 2021-04-11 16:20:23 · 548 阅读 · 0 评论