redis之队列应用
摘要:一、从最简单的开始:List 队列(LPUSH+BRPOP实现) 首先,我们先从最简单的场景开始讲起。 如果你的业务需求足够简单,想把 Redis 当作队列来使用,肯定最先想到的就是使用 List 这个数据类型。 因为 List 底层的实现就是一个「链表」,在头部和尾部操作元素,时间复杂度都是 O(
阅读全文
posted @
2021-04-25 20:06
duanxz
阅读(3387)
推荐(2) 编辑
redis使用之bitmap
摘要:说清楚几个问题:1.bitmap的原理、用法。2.bitmap的优势、限制。3.bitmap空间、时间粗略计算方式。4.bitmap的使用场景。5.使用bitmap过程中可能会遇到的坑。6.bitmap进阶用法(思考)。 一、bitmap的原理、用法 8bit = 1b = 0.001kb bitm
阅读全文
posted @
2021-04-25 16:53
duanxz
阅读(7929)
推荐(1) 编辑
Redis 4.0的布隆过滤器插件
摘要:还没有安装Redis的同学,可以参考我先前的文章安装,传送门《玩转Redis-Redis安装、后台启动、卸载》。Redis 4.0开始以插件形式提供布隆过滤器。 # docker方式安装 > docker pull redislabs/rebloom # 拉取镜像> docker run -p637
阅读全文
posted @
2021-04-25 14:58
duanxz
阅读(1062)
推荐(0) 编辑
Redis实现布隆过滤器
摘要:前面讲到bloomfilter的原理及guava实现的bloomfilter的用法,现在看看redis如何实现: 一、bitmaps 我们知道计算机是以二进制位作为底层存储的基础单位,一个字节等于8位。 比如“big”字符串是由三个字符组成的,这三个字符对应的ASCII码分为是98、105、103,
阅读全文
posted @
2021-04-25 09:29
duanxz
阅读(2555)
推荐(1) 编辑
guava之BloomFilter
摘要:Guava中的布隆过滤器 示例: import com.google.common.base.Charsets; import com.google.common.hash.BloomFilter; import com.google.common.hash.Funnels; public clas
阅读全文
posted @
2021-04-25 09:17
duanxz
阅读(1614)
推荐(0) 编辑
idea 查看gradle项目的依赖关系
摘要:这几天发现一些项目(没有引入redis包的),因为redis的健康检查失败。初步怀疑是项目引入了redis,但在build.gradle中没有相关的jar引入,因为是自定义的jar中间接引入了。需要查看依赖关系。 1、用gradle命令查看依赖关系: 2、用idea查看依赖关系: 看下面输出的依赖关
阅读全文
posted @
2021-04-15 16:52
duanxz
阅读(4349)
推荐(0) 编辑
guava之cache
摘要:缓存 本次主要讨论缓存。缓存在日常开发中举足轻重,如果你的应用对某类数据有着较高的读取频次,并且改动较小时那就非常适合利用缓存来提高性能。 缓存之所以可以提高性能是因为它的读取效率很高,就像是 CPU 的 L1、L2、L3 缓存一样,级别越高相应的读取速度也会越快。 但也不是什么好处都占,读取速度快
阅读全文
posted @
2021-04-14 20:53
duanxz
阅读(1838)
推荐(0) 编辑
guava--RateLimiter源码分析
摘要:限流是保护高并发系统的三把利器之一,另外两个是缓存和降级。 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务或进行流量整形。 常用的限流方式和场景有: A、限制总并发数(比如数据库连接池、线程池)B、限制瞬时并发数(如nginx的l
阅读全文
posted @
2021-04-14 19:25
duanxz
阅读(1530)
推荐(0) 编辑
CompletionService之二:深入解析
摘要:要点解说 假设现在有一大批需要进行计算的任务,为了提高整批任务的执行效率,你可能会使用线程池,向线程池中不断submit异步计算任务,同时你需要保留与每个任务关联的Future,最后遍历这些Future,通过调用Future接口实现类的get方法获取整批计算任务的各个结果。 虽然使用了线程池提高了整
阅读全文
posted @
2021-04-05 13:19
duanxz
阅读(257)
推荐(0) 编辑
CompletionService之一:获得线程(线程池的)处理结果
摘要:《Thread之四:java线程返回结果的方法》 《Runnable、Callable、Future和FutureTask之一:获取线程的返回值》 《CompletionService之一:获得线程(线程池的)处理结果》 使用线程池的时候,经常会有需要获得线程处理结果的时候。此时我们通常有两种做法:
阅读全文
posted @
2021-04-05 11:08
duanxz
阅读(490)
推荐(0) 编辑
tomcat工作原理
摘要:一、tomcat原理 二、tomcat线程池介绍 三、tomcat线程池工作原理 四、tomcat线程池跟jdk线程池的主要区别 一、tomcat原理 功能组件结构 Tomcat 的核心功能有两个,分别是负责接收和反馈外部请求的连接器 Connector,和负责处理请求的容器 Container。其
阅读全文
posted @
2021-04-02 09:11
duanxz
阅读(3925)
推荐(0) 编辑
JDK线程池原理之一:工作原理
摘要:一、线程池工作原理(新任务进入时线程池的执行策略)二、创建线程池的方式三、合理配置线程池四、ThreadPoolExecutor的函数说明 一、线程池工作原理(新任务进入时线程池的执行策略) 线程池的触发时机如下图: 当一个任务通过execute(Runnable)方法欲添加到线程池时: 1、如果此
阅读全文
posted @
2021-04-01 15:29
duanxz
阅读(351)
推荐(0) 编辑
Hystrix Feign 特定状态码不熔断
摘要:背景 部分业务校验规范或疏忽场景,传入bad request 导致接口熔断,影响接口正常流量 处理 重写Feign error decoder逻辑 import com.netflix.hystrix.exception.HystrixBadRequestException; import feig
阅读全文
posted @
2021-04-01 11:25
duanxz
阅读(506)
推荐(0) 编辑