一、算法
1.力扣 92 解码
这个是把数一位数的要是 1 到 9 之间的,不能是 0,如果是两位数就是 10 到 26。
2.今天做华为机试,久违地遇到了通过 while(cin>>s)界定输入是否结束的,常见的方式都是先输入一个整数 n 然后去循环 n 次去输入 s。
二、Redis 专栏学习
关于 Redis 缓冲区
Redis 的缓冲存在于两个地方,分别是实例和客户端之间,以及主从节点之间;客户端和 Redis 之间有输入和输出缓冲区,输入缓冲区存储没有执行完的命令,输出缓冲区存储执行后的结果。
主从复制的过程中从库可能跟不上数据传输的速度,所以也要有缓冲区。
缓冲区溢出或者持续缓冲区数据增长超过某个值需要直接断开客户端的连接或者主从库之间的连接。
也可以采用的另一种方式是增加缓冲区的大小。
三、复盘
今日做的算法题
一个没有做出来,因为时间复杂度的是计算 i 取余 modk 乘以 ai
四、复习
1.缓存穿透、击穿和雪崩分别是因为什么以及解决的方法
缓存穿透是指查找数据库没有的数据,因此缓存也没有。因而请求直接去访问数据库。
解决方法是使用布隆过滤器,如果数据多了之后可以使用多个布隆过滤器。
缓存击穿是指热点 key 失效导致大量热点请求直接打到数据库。
解决方法是热点 key 永不失效,或者是使用互斥锁只有第一个请求访问数据库。
缓存雪崩是大量 key 同时过期,失效导致大量请求直接打到数据库。
解决方法在针对不同的 key 设置不同的过期时间(可以增加随机的过期时间),以及使用多级缓冲避免直接失效。
2.Redis 高性能的来源
一点是来自于 Redis 是内存数据库,内存本身的高速,Redis 也是键值数据库,基于哈希存储 key 和 value 关系,因此支持 O(1)查找,另外一个就是 Redis 采用 IO 多路复用机制,虽然是单线程但是仍然可以同时监听多个连接的请求。
3.Redis 高可靠的来源
一个是来自于 AOF 和 RDB 作为持久化,Redis 在崩溃之后可以通过这两者恢复,在生产环境中 AOF 和 RDB 是结合使用的,AOF 存储的是 RDB 之后执行的命令,另一个是主从复制确保服务的可用性,以及服务器宕机之后主从切换。
总结:缓存穿透是不存在的 key,这个有一点不熟悉了,其他都还好。