学习临时笔记

tech2025-03-20  10

1 mysql 三个重要日志 binlog 同步主从用的  redolog 事务持久化数据用的  undolog事务回滚确保原子性用的

2 异或运算  0和任何数异或都得到原来的数/两个相同的数字异或得0

右移16位异或可以同时保留高16位于低16位的特征,采用&运算计算出来的值会向1靠拢,采用|运算计算出来的值会向0靠拢。假如不做右移运算,那么hash仅是最后四位和1111运算(假如数组长度为16)那么hash高位的信息就会全部丢失(比如:如果有多个key.hashcode最后四位都是0000那么就会全部存储在索引为0的桶中产生碰撞),如果右移16位就会将高位的信息与低位的16位异或运算,保留了高位与低位的特征更能体现key.hashcode的特征,降低冲突的概率。主要目的:上面提到的所有问题,最终目的还是为了让哈希后的结果更均匀的分布,减少哈希碰撞,提升hashmap的运行效率。

防止一些实现比较差的 hashCode() 方法,使用扰动函数之后可以减少碰撞,进一步降低hash冲突的几率。不防止实现好的hashcode方法

最新回复(0)