6-1 HashMap和CurrentHashMap的区别是什么? CurrentHashMap底层结构在1.7和1.8有什么不同?
HashMap和ConcurrentHashMap是java中的两种不同的实现方式.
区别 :
1:线程安全:HashMap是非线程安全的,而ConcurrentHashMap是线程安全的
锁机制:HashMap在多线程环境下需要保证自己同步,而ConcurrentHashMap使用了一种不同的锁机制来实现线程安全,并且允许并发访问不同部分的map
性能:在并发情况下,ConcurrentHashMap具有更好的性能,因为它使用了分段锁(即将整个map分成多个校的segment ,在不同segment上锁),而HashMap在多线程情况下可能会导致死锁或者数据丢失
jave1.7中的HashMap底层结构是数组+链表的方式,具体来说,HashMap内部围维护了一个Entry数组,每个Entry包含一个键值对,如果产生hash冲突,即两个不同的键映射到同一个数组索引上,那么它们将以链表的形式存储在该位置上
java1.8中的HashMap对底层结构进行了优化,引入红黑树的概念,当链表上的节点数量超过一定阈值时.链表将会转换为红黑树,以提高在这个位置上的查找效率
6-2 假设你有一批历史积分数据要存储,数量在kw条左右 存入mysql 你的方案是什么
对于将大量历史积分数据存储到MySQL中的方案
1创建表结构:在MySQL中创建一个表来存储历史积分数据.你看也根据数据的具体字段进行表的设计,例如,可以创建一个存储表,包含如下字段
id :主键,用于唯一标识每条数据
user_Id:存储用户ID的字段
score:存储积分数量的字段
timestamp:存储数据记录的时间戳.
6-3 请你说一说你的排行榜功能是如何实现的
排行榜功能可以通过存储用户的数据并根据特定的指标进行排序来实现。通常情况下,排行榜功能包括以下几个步骤:
1-数据收集:收集用户的相关数据,例如分数.成绩.投票数等
2-数据排序:将收集到的数据存储在数据库或其他数据存储系统中.确保数据持久性,和可靠性.
3-数据排序"根据特定的指标对数据进行排序,例如按分数高低或票数多少进行排名
4-排行榜展示:将排好序的数据展示在用户界面上,通常以列表或图表的形式展示.让用户可以直观地看到排名情况
5-实时更新"根据用户新的数据实时更新排行榜,确保排行榜的准确性和实时性
6-4 历史赛季积分是如何生成的
历史积分的生成主要分为三大步核心就是将radis中上个赛季的排行是数据存储到myslq中
1.第一步在myslq中创建一张历史积分榜的表
2.第二步将radis中的数据同步到mysql的表中
3.第三步删除radis中的数据
因为他们每月都要进行所以用xxl-job设置定时任务利用任务链每月执行任务