摘要:
fail-safe:这种遍历基于容器的一个克隆。因此,对容器内容的修改不影响遍历。java.util.concurrent包下的容器都是安全失败的,可以在多线程下并发使用,并发修改。常见的的使用fail-safe方式遍历的容器有ConcerrentHashMap和CopyOnWriteArrayList等。
阅读全文
posted @ 2021-11-23 12:45
徐知语的笔记
阅读(98)
推荐(0)
编辑
摘要:
数组+链表+红黑树 ;如果链表存储超过了8个,那么会调用treeifyBin函数,将链表转换为红黑树。那么即使hashcode完全相同,由于红黑树的特点,查找某个特定元素,也只需要O(log n)的开销 ; 也就是说put/get的操作的时间复杂度最差只有O(log n)
阅读全文
posted @ 2021-11-22 22:27
徐知语的笔记
阅读(83)
推荐(0)
编辑
摘要:
一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。
阅读全文
posted @ 2021-05-23 16:19
徐知语的笔记
阅读(178)
推荐(0)
编辑
摘要:
熔断一般是指依赖的外部接口出现故障的时断绝和外部接口的关系;例如你的A服务里面的一个功能依赖B服务,这时候B服务出问题了,返回的很慢。这种情况可能会因为这么一个功能而拖慢了A服务里面的所有功能,因此我们这时候就需要熔断!即当发现A要调用这B时就直接返回错误(或者返回其他默认值啊啥的),就不去请求B了。
阅读全文
posted @ 2021-05-21 11:03
徐知语的笔记
阅读(242)
推荐(0)
编辑
摘要:
在分布式高并发的条件下,比如有个线程获得锁的同时,还没有来得及去释放锁,就因为系统故障或者其它原因使它无法执行释放锁的命令,导致其它线程都无法获得锁,造成死锁。所以分布式非常有必要设置锁的有效时间,确保系统出现故障后,在一定时间内能够主动去释放锁,避免造成死锁的情况。
阅读全文
posted @ 2021-05-20 15:49
徐知语的笔记
阅读(189)
推荐(0)
编辑
摘要:
zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。 可以对指定键的值进行排序权重的设定,它应用排名模块比较多。
阅读全文
posted @ 2021-05-20 10:45
徐知语的笔记
阅读(133)
推荐(0)
编辑
摘要:
问题:线程A在修改mysql的时候,线程B先读取了数据,接着线程A执行完毕,此时redis中没有数据了,接着线程B处理业务然后设置redis缓存,此时redis中的数据还是线程A修改前的数据。
阅读全文
posted @ 2021-05-19 17:44
徐知语的笔记
阅读(537)
推荐(0)
编辑
摘要:
这个数值依据: 这个数值与MySQL 的配置以及机器的硬件有关。因为,MySQL 为了提高性能,会将表的索引装载到内存中。InnoDB buffer size 足够的情况下,其能完成全加载进内存,查询不会有问题。但是,当单表数据库到达某个量级的上限时,导致内存无法存储其索引,使得之后的 SQL 查询会产生磁盘 IO,从而导致性能下降。当然,这个还有具体的表结构的设计有关,最终导致的问题都是内存限制。这里,增加硬件配置,可能会带来立竿见影的性能提升哈。
阅读全文
posted @ 2021-05-19 14:20
徐知语的笔记
阅读(263)
推荐(0)
编辑
摘要:
事务在主库写完binlog后需要从库返回一个已接受,才放回给客户端;5.5集成到mysql,以插件的形式存在,需要单独安装确保事务提交后binlog至少传输到一个从库。
阅读全文
posted @ 2021-05-19 11:39
徐知语的笔记
阅读(267)
推荐(0)
编辑
摘要:
将这个参数设为0或大于1以上的数值会提高数据库的性能,但同时会伴随数据丢失的风险。二进制日志文件涉及到数据的恢复,以及想在主从之间获得最大的一致性,那么应该将该参数设置为1,但同时也会造成一定的性能损耗。
阅读全文
posted @ 2021-05-19 09:37
徐知语的笔记
阅读(332)
推荐(0)
编辑