背景
对于单机限流,可以使用 Guava 等工具
如果需要对所有服务进行限流,就需要使用依赖同一个数据资源
简单的方案可以使用 Redis 记录限流相关信息进行实现,Redisson 的
RRateLimiter
就是基于 Redis
实现的全局限流工具,使用了令牌桶的思想
对于单机限流,可以使用 Guava 等工具
如果需要对所有服务进行限流,就需要使用依赖同一个数据资源
简单的方案可以使用 Redis 记录限流相关信息进行实现,Redisson 的
RRateLimiter
就是基于 Redis
实现的全局限流工具,使用了令牌桶的思想
观察者模式(Observer Pattern)用来处理某个值得关注的状态的对象状态变更,进而执行相应的操作
将自身的状态改变通知给其他对象, 我们也将其称为 发布者 (publisher)
所有希望关注发布者状态变化的其他对象被称为 订阅者 (subscribers)
所有订阅者都必须实现同样的接口, 发布者仅通过该接口与订阅者交互, 接口中必须声明通知方法及其参数, 这样发布者在发出通知时还能传递一些上下文数据
一段时间没有使用 github SSH 操作,今天突然发现 Hexo deploy 无法正常 push 到仓库
报错信息为
1 | ssh: connect to host github.com port 22: Connection refused |
开始以为是 SSH 配置存在问题,但是检查了配置以及仓库情况并没有发现问题
对应 EL 规则中的 WHEN
关键字,会被包装为
WhenCondition
组件
主要的并发编排逻辑主要由 WhenCondition
的实现方法执行
WHEN
关键字支持的属性:
从 Ferrari 到 Hard Start,这里有 9 款我们最爱的 50/50 shots 酒单
50/50 shots 诸如 Ferrari 和 M&M 多年来一致是业内宠儿;不过随着越来越受欢迎,派对者们找到了将鸡尾酒作为配料的方式,这种形式已经扩展为一种易于复制并创作的模式
这是一个简单的模板:取一杯苦杏仁酒(amaro),将其与另一种利口酒或更高度烈酒等分
各种各样的变化,无论你是在寻找一种令人大开眼界的宿醉方式:例如 Hard Start,或者是一杯复杂性堪比鸡尾酒的 shot:例如 Mezcaletti
InheritableThreadLocal
是官方提供的类,区别于
ThreadLocal
的功能就是使子线程创建时会赋值父线程当时的
ThreadLocal
值(引用),实现开启线程后将线程本地变量传递
1 | public class ThreadLocalTest { |
1 | Thread[main,5,main] Hello World |