摘要: 前言 限流的作用大家其实都知道, 单机版本下的限流有Guava的RateLimiter以及JDK自带的Semaphore, 都能满足需求. 但是线上业务出于各种原因考虑, 还需要分布式的限流, 比如扩容/缩容时无法控制整个服务的控制速率等场景. 开源的分布式限流组件有阿里巴巴的Sentinel, 但 阅读全文
posted @ 2021-01-11 01:24 梅子酒zZ 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 前言 网上有很多通过分析ReentrantLock来讲解AQS独占模式的文章, 这里就不老生常谈的讲独占锁了, 本篇文章主要是分析CountDownLatch是如何利用AQS的共享模式来实现的倒计时门闩的功能 关于CountDownLatch以及相关线程协作工具类的用法可以参考之前写的一篇文章: h 阅读全文
posted @ 2021-01-06 12:53 梅子酒zZ 阅读(103) 评论(0) 推荐(0) 编辑
摘要: Groovy模板引擎 API 构建动态脚本 可以利用Groovy提供的模板引擎, 在代码中编写脚本, 来完成一些动态化的需求, 案例如下, 当字符串长度等于4时, 执行打印 public class RuleEngine { private static final ConcurrentHashMa 阅读全文
posted @ 2021-01-06 00:51 梅子酒zZ 阅读(3217) 评论(0) 推荐(0) 编辑
摘要: 前言 前几天滴滴第三轮面试的时候, 遇到一道面试题, 大意是说现在给定一个订单表, 是按照订单ID来进行分库分表的, 那么如果想要根据订单的商户ID来进行查询某个商户的一些订单, 或者查询某个用户的订单, 该如何处理? 当时回答的不是很好, 后来询问了原来的同事, 发现可以通过Elasticsear 阅读全文
posted @ 2020-12-27 13:12 梅子酒zZ 阅读(1843) 评论(0) 推荐(1) 编辑
摘要: 前言 最近在阅读ReentrantLock源码的时候, 发现了Lock有公平和不公平两种锁, 查阅相关资料与博客后得知公平锁和非公平锁的性能是不一样的, 非公平锁的性能会优于公平锁. 因为FairLock在获取锁时, 永远是等待时间最长的线程获取到锁, 这样当线程释放锁以后, 如果还想继续再获取锁, 阅读全文
posted @ 2020-12-12 20:04 梅子酒zZ 阅读(89) 评论(0) 推荐(0) 编辑
摘要: CountDownLatch 倒计时门闩 /** * CountDownLatch不能被重用, 如果需要重新计数, 可以考虑CyclicBarrier * all wait for onw, 如多个运动员等待裁判员鸣枪, 比赛开始 * one wait for all, 如等待所有运动员到达终点, 阅读全文
posted @ 2020-12-11 00:33 梅子酒zZ 阅读(53) 评论(0) 推荐(0) 编辑
摘要: 前言 原本以为LockSupport的park()方法会直接阻塞线程, 但是在阅读AQS源码的时候, 发现不是这个样子, 所以这里也记录一下LockSupport的park()方法的一些注意事项 LockSupport.park() 功能: 阻塞当前线程 park方法只要线程设置了中断标志位,就直接 阅读全文
posted @ 2020-12-09 19:35 梅子酒zZ 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 前言 Java提供了好几种与interrupt有关的方法, 比较容易弄混, 在此总结一下, 形成文字 线程实例方法 interrupt() 为线程设置中断标志, 但是线程需要主动响应InterruptedException异常, 获取轮训interrupt状态来响应外部的中断 private sta 阅读全文
posted @ 2020-12-09 19:15 梅子酒zZ 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 同步与异步 引用一段书本里面的话来简单介绍一下同步与异步 同步, 可以理解为在执行完一个函数或方法之后, 一直等待系统返回值或消息, 这时程序是出于阻塞的, 只有接收到返回的值或消息后才往下执行其他的命令. 异步, 执行完函数或方法后, 不必阻塞性地等待返回值或消息, 只需要向系统委托一个异步过程, 阅读全文
posted @ 2020-12-06 10:08 梅子酒zZ 阅读(928) 评论(0) 推荐(0) 编辑
摘要: Docker的安装 Mac下安装Docker 安装 采用brew cask进行安装, 命令如下 brew cask install docker 镜像加速 这里选用网易的镜像加速, 点击Docker图标->Perferences->Docker Engine->将下面的地址加入到Json的"regi 阅读全文
posted @ 2020-12-03 19:02 梅子酒zZ 阅读(146) 评论(0) 推荐(0) 编辑