
linux
weixin_43887958
这个作者很懒,什么都没留下…
展开
-
redis unlink
unlink是指redis用异步方式去del键值,但是异步删除键值有一个判断条件.会根据元素的个数来判断是否值得用异步线程去del,因为异步会有额外的消耗,如果元素较少(比如string,无论string多大都是在主线程里删除),直接在主线程里删除就行.List:直接返回element个数。Set:非hash table编码,即intset编码时返回1.当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用intset作为集合键的底层实现。Hash:同上。当hash键值转载 2021-08-19 11:02:58 · 3367 阅读 · 1 评论 -
redis跳表的层数
redis跳表在插入一个元素时,先随机出一个该元素的所在的层数int random_level() { K = 1; while (random(0,1)) K++; return K; } 然后在将该元素加入第K层的链表中.原创 2021-08-16 15:22:13 · 944 阅读 · 0 评论 -
缓存淘汰算法
LRU (Least Recently Used):这个名字有问题!!!它表达的含义应该是将最近未使用的淘汰掉,和’Least’(最少)没有任何关系。实现:用一个链表记录每个数据,使用到了哪个数据就将哪个数据放在链表的最前面,淘汰内存时将末尾的直接删除,和使用次数无关。LFU (Least frequently used) 最不经常使用,如果一个数据在最近一段时间内使用次数很少,那么在将来一段时间内被使用的可能性也很小。这个实现需要将设置一个比例,关于时间和使用次数的比例需要经过不断的优化,可以参考Red原创 2021-07-27 15:15:02 · 72 阅读 · 0 评论 -
MMP FileChannel RandomAccessFile总结
RandomAccessFile用来随机读写一个文件,调用seek(long position)来标记从哪里开始读写,一般用来多线程的分块文件复制或者分块文件写入.它有一个方法去获取FileChannel.FileChannel用来访问文件,可以进行MMP、transferTo、transferFrom,但是不能随机读写。其中transferFrom将一个通道的数据写入当前通道,可以直接将接受到的数据流写入文件,不用经过用户态的处理数据流,但是一般都还是需要进行处理数据流的,因为数据都是由各种协议包装起来原创 2021-07-27 12:37:51 · 425 阅读 · 0 评论 -
虚拟机centos8网络
0桥接:对应vmware中VMnet0,会直接使用主机所在局域网的ip,如果被占满了,就使用不了了.1nat:,对应vmware中VMnet8,相当于用vmware生成了一个局域网.如果进去没有网络:输入nmcli n,返回disable,就输入nmcli n on打开网络输入nmcli device connect ens33...原创 2021-04-30 14:29:00 · 83 阅读 · 0 评论 -
如何选用redis中key类型
在实际开发中,我之前很纠结用什么类型,尤其是hash和string的区别.整个redis比喻成一个Map<String,Object>,string相当于Object=String,hash相当于Object=Map<String,Object>.两者的优缺点:将多个键放在hash里面会省内存,但是无法给每个单独的键设置过期时间;将多个键放在string里面消耗内存,但是可以给每个单独的键设置过期时间;同理:list,set,zset也无法给各自里面的元素设置过期时间.原创 2021-04-28 15:08:44 · 150 阅读 · 0 评论 -
docker指定ip
Docker 默认网络Docker安装后,默认会创建下面三种网络类型:启动 Docker的时候,用 --network参数,可以指定网络类型,如:docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest/bin/bashbridge:桥接网络默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,原创 2021-04-22 11:56:33 · 371 阅读 · 0 评论