本篇研究blocking_keys和ready_keys属性。
blocking_keys的作用是什么?Redis源码中为什么拥有两个ready_keys同名属性?解除客户端阻塞时采用了什么策略?这篇文章将对此进行探究。
本篇研究blocking_keys和ready_keys属性。
blocking_keys的作用是什么?Redis源码中为什么拥有两个ready_keys同名属性?解除客户端阻塞时采用了什么策略?这篇文章将对此进行探究。
本篇继续解析单机数据库的实现,理解第二个属性expires。
Redis的过期删除采用了什么策略?过期键会被保存在更新后的RDB文件吗?主从节点对过期键的处理方式有什么不同?本篇将走进源码,寻找答案。
本篇主要目的是理解Redis单机数据库中键空间dict的实现机理。
Redis的持久化技术建立在操作系统的COW机制上,Redis如何权衡rehash的时机?rehash时间会产生堵塞服务器的问题,Redis是如何应对这个问题的?渐进式rehash的原理是什么?诸如此类问题将通过本篇文章得到解答。
本篇研究CopyOnWrite的实现原理,并为后续研究其它“写时复制”的问题进行预热。
更改键对应的值,也会在内部复制数组吗?存在数据一致性的问题吗?写时不复制不可以吗?这篇文章会解答诸如此类的问题。
本篇延续之前的AQS系列,解析CountDownLatch,目的在于摸清CountDownLatch的工作机理。
线程内调用await()是如何响应中断的?多个线程各自调用await()并挂起,当同步器的state更新为0后会全部唤醒执行吗?通过本篇文章,诸如此类的问题将得到解决。
通常ReentrantLock和Condition配套使用,后者提供了await()以及signal()等方法,本篇将重点解析await()和signal()的实现原理,以期了解它们的工作流程。
signal()会随意唤醒条件队列中的线程吗?调用signal()会立马唤醒条件队列的线程吗?中断条件队列中的等待线程会抛异常吗?很多问题将通过本篇获解。
很久之前写过一篇《pyenv的安装和应用》,没想到现在也要去安装一个Java的版本管理器,不过在本人看来这是一件好事,因为这侧面说明Java一直都在与时俱进,本篇主要记录jenv的安装和使用。
这篇文章记录《Java 8实战》第十一章的实例,将各个例子厘清,这里主要涉及到thenApply、thenAccept、thenCompose等函数的用法,通过这些例子了解CompletableFuture基本的使用方法。