tips

指令重排主要有两个阶段,一个是编译阶段,另一个是CPU阶段。volatile通过加内存屏障来禁止了这两个阶段的指令重排。也可以通过锁总线保证单线程执行,这样即使发生指令重排,也可以保证结果正确

编译阶段重排序后,在CPU阶段是单线程执行,不影响最后的结果

每日一题:

用户每看一次电影有一条记录,一亿用户里看过5次电影以上的人,查找出来
答案均从群聊中来,不能保证100%正确。参考答案如下:

1.redis集群+zset有序集合
2.hadoop
3.kafka
4.flink或者spark streaming
5.mysql:select userid from records group by userid having count(userid)>=5
6.搞一个 100M 的存储,每个字节代表一个用户的观影次数

今日每日一题:锁的四种状态(java顺丰)

答案:无锁 偏向锁 自旋锁(轻量级锁) 重量级锁

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

弱小和无知不是生存的障碍,傲慢才是。