MistRay

Thinking will not overcome fear but action will.

Jedis连接池竟然会资源泄露

Jedis

1.前言 Jedis是我们经常使用的Redis Java客户端.在SpringBoot2.X将lettuce作为默认Redis Java客户端之前,Jedis几乎是具备统治地位的.今天我会通过复盘一个压测时遇到的问题来解析Jedis 2.9.1版本一个必现的连接池资源泄露BUG. 2.问题描述 在某次压测中,某服务中产生了这样一条异常日志,期初我们猜测这可能是Jedis连接池负载较高,...

Redis缓存雪崩,击穿,穿透

redis

前言 写这篇文章的契机是同事最近面试遇到的一道神奇面试题。 面试官先让同事解释了下Redis缓存雪崩,击穿,穿透的含义和解决方案。 然后刁钻的问题来了,缓存雪崩后如何恢复。下面会对上述问题逐一分析。 缓存雪崩 服务中的热点数据会做缓存,一般就是两种逻辑,第一种就是通过定时任务去刷新,第二种就是查缓存查不到后更新数据。 缓存雪崩指的是缓存同时大面积失效的情况,一般存在于上面说的第一种缓存逻...

canal同步体系

canal

前言 写这篇文章的契机是工作中遇到的一个场景。生产环境中有一个数据量巨大(10亿级)且已经用Shardingjdbc做了分表的多表数据集。 分表逻辑是这样的,每天一张表,当天产生的数据录入当天的表内(例:2020年6月5日的数据录入到table_20200605表中)。 其中有一个查询需要做多天数据的聚合,之前的方案是通过Shardingjdbc做多表聚合,数据量大了之后,效率极低, 低到...

ReentrantLock是怎么回事

ReentrantLock

前言 A reentrant mutual exclusion {@link Lock} with the same basic behavior and semantics as the implicit monitor lock accessed using {@code synchronized} methods and statements, but with extende...

为Java程序员而准备的Go指南(转载)

Java & Go

为Java程序员而准备的Go指南(转载) 本文原作者为Stephen Nillson,由ZephyrJung翻译,原文链接如下: https://www.nada.kth.se/%7Esnilsson/go_for_java_programmers/ 鉴于水平有限,未免有很多不合适之处甚至错误,欢迎各位批评指证,Github地址在这里,交流请到黑客派社区,更多精彩等你发现 本文从...

Redis Cluster集群功能测试与踩坑分享

Redis

前言 写这篇文章的契机是这样的,现就职公司的Redis是直接购买阿里的云服务,阿里的云服务大家都懂,三个字总结就是好而贵, 虽然云服务内部一定是做了高可用的,但对于使用者(开发人员)来说,这些都是隐形的,是透明的。云服务中的Redis是个黑盒,它甚至仅借用了Redis的概念, 内部是如何实现的,我们一概不知。 所以我对此产生了浓厚的兴趣,我想知道原生Redis集群可以做到何种程度,为的是一...

Java的四种引用类型

Reference

前言 上一篇文章我们讨论了ThreadLocal相关的问题,其中内存泄漏的原因是因为Thread对象内部维护的ThreadLocalMap,这个Map的Key是弱引用类型(WeakReference),而Value是强引用类型,如果Key被回收,Value却不会被回收。本期让我们详细分析一下Java的四种引用。 Java的引用 从 JDK1.2 开始,对象的引用从原来的1种级别增加到了4种...

ThreadLocal真的会内存泄露么

ThreadLocal

前言 标题所述的问题来源于我朋友的某次面试。我朋友具体是怎么回答的我现在已经忘记了,但这个问题勾起了我的兴趣,所以就有了这篇文章。 ThreadLocal This class provides thread-local variables. These variables differ from their normal counterparts in that each th...

Redisson锁续约源码解析

Redisson

前言 写这篇文章的契机是,我一个朋友提出的一个问题. F:friend M:me F:redis分布式锁怎么解决超时问题 有研究过么。。 M:请求超时么- = F:redis锁期间业务处理超时,导致redis锁过期 M:如果业务的数据精度要求极高的情况下,就不让它过期了呗 F:不过期的话,如果我在上锁之后解锁之前,服务down了,不是就死锁了么? M:也就是说你即不想产生死锁,同时还...

MySQL中truncate函数自动转型的精度问题

MySQL

MySQL中truncate函数的精度问题 truncate函数 TRUNCATE(X,D) 是MySQL自带的一个系统函数。 其中,X是数值,D是保留小数的位数。 其作用就是按照小数位数,进行数值截取(此处的截取是按保留位数直接进行截取,没有四舍五入)。 现在有这样一个需求,某个表有一个varchar类型的字段,字段内存了一串浮点数。 现在我想要截取到该字段的小数点后两位。 sel...