- 博客(23)
- 收藏
- 关注
原创 C++关于移动构造或移动赋值函数
注意:如果手动创建了拷贝相关函数,那么默认的移动相关函数会被delete,并且在应该调用移动相关函数的时候,转而调用拷贝相关函数。
2023-11-22 17:21:53
118
原创 踩坑,C++ Opencv中Mat对象作消息队列参数时候出现队列中数据完全一样的情况
opencv的Mat对象的拷贝构造和赋值都是浅拷贝,也就是说队列中的对象最终都指向最后输入的图像。使用clone()方法,进行深拷贝。这串代码会显示完全一样的图片。调用move函数也可。
2023-10-30 17:21:07
295
原创 Redis场景题
使用一个 2 核 CPU、4GB 内存、500GB 磁盘的云主机运行 Redis,Redis 数据库的数据量大小差不多是 2GB。当时 Redis主要以修改操作为主,写读比例差不多在 8:2 左右,也就是说,如果有 100 个请求,80 个请求执行的是修改操作。在这个场景下,用 RDB 做持久化有什么风险吗?内存角度:做RDB使用写时复制,而以修改为主,主线程会复制大量内存,大约就是1.8GB额外复制,如果还有额外大数据,内存会超出限制,如果启用了swap机制,读取磁盘数据就会很慢,如果没有开启,Red
2023-06-13 21:07:01
253
原创 用rand7()模拟任何其他rand(),进制思想+拒绝采样
将rand7可以生成数的范围,通过相乘进行扩展,利用进制思想唯一映射每个一结果,最后用拒绝采样获得所需要的范围。
2023-06-13 10:02:49
116
原创 TopK问题的三种思路
然后,对每个块进行排序,并找到每个块中的前K个最大(或最小)的元素。最后,将所有块中的前K个元素合并起来,再次使用上述方法找到前K个最大(或最小)的元素。首先,创建一个大小为K的最小(或最大)堆,然后遍历数据集,将每个元素与堆顶元素进行比较。如果当前元素比堆顶元素大(或小),则用当前元素替换堆顶元素,并调整堆。最后,堆中剩余的K个元素就是前K个最大(或最小)的元素。首先,创建一个计数数组,然后遍历数据集,统计每个元素出现的次数。最后,遍历计数数组,找到前K个最大(或最小)的元素。
2023-06-09 23:06:37
162
原创 Redis 主从同步与哨兵集群
从库向主库发送指令 replicaof 172.16.19.3 6379 成为主库的从库。主从确认复制进度offset和runID。从库清空自身原有数据,接收主库的RDB文件进行同步。从库接收主库的RepicationBuffer,记录了生成RDB期间的操作,然后进行同步。
2023-06-09 16:53:52
95
原创 Redis如何持久化?
但是此时父进程依旧是会有流量写入的,如果父进程操作的是一个已经存在的key,那么这个时候父进程就会真正拷贝这个key对应的内存数据,申请新的内存空间,这样逐渐地,父子进程内存数据开始分离,父子进程逐渐拥有各自独立的内存空间。等重写完成之后,直接替换旧文件即可。问题二:对于任何文件系统都是不推荐并发修改文件的,例如hadoop的租约机制,Redis也是这样,避免重写发生故障,导致文件格式错乱最后aof文件损坏无法使用,所以Redis的做法是同时写两份文件,最后通过修改文件名的方式,保证文件切换的原子性。
2023-06-08 14:55:25
84
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人