Contents

ARST打卡第284周

lc1884_鸡蛋掉落-两枚鸡蛋 TED_追求艺术是浪费时间吗 Tidis 相关文档学习 vivo AI 计算平台轩辕文件存储缓存的设计与应用 一致性hash优点和应用场景

Algorithm

lc1884_鸡蛋掉落-两枚鸡蛋

思路:

仔细观察示例2,可以发现后面的数字倒着看 100,99,97,94,90,85,79,72,64,55,45,34,22,9,0, 排除0,总共14个,所以答案是14。

每次间隔增加一点。

所以解法就是从n开始,一开始间隔1,然后间隔2,然后间隔3,直到鸡蛋碎了为止。

也就是求解 i * (i + 1) / 2 >= n 的最小i值。

1
2
3
4
5
6
7
8
9
impl Solution {
    pub fn two_egg_drop(n: i32) -> i32 {
        let mut i = 1;
        while i * (i + 1) / 2 < n {
            i += 1;
        }
        i
    }
}

看了题解的 dp 方法 和 数学方法。

感觉我这个找规律的方法比较取巧,容易理解 -> 其实数学方法也是找规律,但比我多提炼了一步。 感兴趣的可以继续看看题解的方法学习一下。

Review

TED_追求艺术是浪费时间吗

艺术是值得的吗?“当然了 ”,图画小说家 R. 艾伦·布鲁克斯称——艺术可以吓到独裁者,激励群众,改变整个世界的心灵和思想。回想起他成为艺术家的过程,当世界像陷入了危机一般,布鲁克斯分享了发自内心热爱去创作会如何带给人意想不到的好的影响。

艺术创作刺激人们思考,从而能更觉知得生活。

Tips

Tidis 相关文档学习:

Share

vivo AI 计算平台轩辕文件存储缓存的设计与应用

讲解了分布式缓存实现原理(一致性hash)以及vivo的多级缓存设计与应用。

一致性hash优点

其中一致性hash在分布式存储领域非常常见,它有许多优点:

  • 均衡负载:一致性哈希算法能够将数据在节点上均匀分布,避免出现热点数据集中在某些节点上而导致负载不均衡的情况。通过增加虚拟节点的数量,可以进一步增强负载均衡的效果;
  • 扩展性:在一致性哈希算法中,当节点数量增加或减少时,只有部分数据需要重新映射,系统能够进行水平扩展更容易,可以增加节点数量以应对更大的负载需求;
  • 减少数据迁移:相比传统的哈希算法,一致性哈希算法在节点增减时需要重新映射的数据量较少,可以大幅降低数据迁移的开销,减少系统的不稳定性和延迟;
  • 容错性:一致性哈希算法在节点故障时能够保持较好的容错性。当某个节点失效时,只有存储在该节点上的数据需要重新映射,这使得系统能够更好地应对节点故障,提高系统的可用性和稳定性;
  • 简化管理:由于一致性哈希算法中节点的加入和离开对数据分片的影响较小,系统管理员进行节点的动态管理更加方便。节点的扩容和缩容操作对整个系统的影响相对较小,简化了系统的管理和维护过程。

一致性hash应用场景

一致性哈希算法在分布式系统中具有广泛的应用场景,以下是一些常见的应用场景:

  • 缓存系统:一致性哈希算法被广泛用于分布式缓存系统,例如分布式内存缓存(如 Memcached)或分布式键值存储(如 Redis)。通过将数据根据哈希值映射到缓存节点,可以实现负载均衡和数据分布的优化;
  • 分布式文件系统:一致性哈希算法可用于分布式文件系统中的数据分片和数据块的分配。它可以将文件块映射到不同的存储节点上,实现数据的分散存储和高吞吐量的访问;
  • 负载均衡器:一致性哈希算法可以用于负载均衡器(如反向代理或负载均衡服务器)的请求路由。它可以将请求路由到后端服务器集群中的不同节点,实现负载均衡和故障恢复;
  • 分布式数据库:一致性哈希算法可以用于分布式数据库系统中的数据分片和数据复制。它可以将数据均匀地分布在多个节点,并确保数据的可用性和一致性;
  • 分布式哈希表:一致性哈希算法可以用于实现分布式哈希表,使得数据可以分布在多个节点上,并提供高效的键值查找和存储; 分布式消息队列:一致性哈希算法可用于分布式消息队列中的消息路由和分发。它可以确保消息被正确地路由到相应的消费者节点上,实现高吞吐量和可靠的消息传递。

参考

什么是一致性哈希?