- 博客(11)
- 收藏
- 关注
原创 ServiceLoader装载类(SPI)
可以看到FileSystem会把所有的FileSystem的实现都以scheme和class来cache,之后就从这个cache中取相应的值。因此,以后可以通过ServiceLoader来实现一些类似的功能,而不用依赖像Spring这样的第三方框架。Hadoop FileSystem就是通过这个机制来根据不同文件的scheme来返回不同的FileSystem。ServiceLoader的应用。基础服务接口:IEat。
2023-04-13 22:30:25 133
原创 缓存行对齐解决数据的伪共享问题
1、涉及mesi缓存一致性协议和多核CPU三级缓存、主内存加载数据。2、CPU从缓存中加载数据是以64byte为一个单元,叫缓存行。运行平均时间:11033毫秒。运行平均时间:2264毫秒。
2023-04-13 22:28:27 155
原创 NIO、BIO等五种IO模型
学过Linux的都知道这么一句话:在Linux系统中,一切皆文件。在网络信息交换的过程中,文件即是一串二进制流。而**我们对于二进制流数据的收发操作,就是I/O操作。**在实际应用中,我们一般对流有比如read/write等操作,那么如何知道我们操作的是哪个流(文件)呢?实际上是由操作系统内核创建文件描述符(File Descriptor,FD)来标识的,一个FD就是一个非负整数,实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。
2023-04-13 22:24:21 210
原创 哨兵模式选举、Redis Cluster集群模式选举
7、如果slave在两倍的cluster-node-timeout(集群节点不可用的最大超时时间,默认15s)时间内(至少2秒)未赢得选举,则放弃本次选举,然后在四倍cluster-node-timeout时间(至少4秒)后重新发起选举。3、如果一个哨兵的票数达到最低票数(quorum和Sentinel节点数/2+1的最大值,一般是半数以上哨兵节点),则成为leader。6、从节点收到响应的投票信息,会比较currentEpoch,小于自己的直接丢弃,一旦获得半数主节点的票,则声明自己赢得选举。
2023-04-13 22:15:35 647
原创 缓存穿透、击穿和雪崩
向布隆过滤器询问 key 是否存在时,跟 add 一样,也会把 hash 的几个位置都算出来,看看位数组中这几个位置是否都为 1,只要有一个位为 0,那么说明布隆过滤器中这个key 不存在。造成原因:如在高并发的情况下,缓存在极短时间内大量失效(如缓存挂了,或者设置了相同过期时间),所有请求会读数据库,容易导致数据库负载瞬间上升,乃至崩掉。总结:第1种,数据量大时,缓存量会比较大,第2种,很好理解,但是需要另外的逻辑去维护,会增加系统的复杂度。(不太常用,因为如果是随机key就不起作用,且占缓存)
2023-04-13 22:14:32 66
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人