cpp 选手秋招学习笔记 day27

一、算法

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,这个有一点不熟悉了,其他都还好。

相关推荐
haolin123.1 小时前
STL vector底层揭秘:从构造到迭代器失效
开发语言·c++·算法
大模型码小白1 小时前
ChatGPT 的回答也能被结构化抓取?AI Bot Scraper 对比测评
服务器·开发语言·数据库·人工智能·spring·chatgpt
尘中远2 小时前
给C++工业软件搭建 Agent
开发语言·c++·qt·ai·agent
2401_868534782 小时前
网规备考_2.4 路由协议
c++·设计模式
青瓦梦滋2 小时前
NAT技术
linux·服务器·网络·网络协议·tcp/ip
啦啦啦啦啦zzzz2 小时前
自定义日志缓冲区(上)c++20
linux·服务器·c++·网络编程
wabs6662 小时前
关于二叉树【力扣199.二叉树的右视图的思考】
数据结构·c++·算法·leetcode·二叉树·层序遍历
hope_wisdom2 小时前
C/C++数据结构之二叉树的遍历
c语言·数据结构·c++·二叉树·深度优先·广度优先
程序员清风2 小时前
聊聊怎么缓解找工作的焦虑感?
java·后端·面试