浅聊一下java中的八股文

技术主题

工作了也快三年了,无论是之前参加校招面试,还是参加社招面试,其实都离不开围绕以后端为中心得一些技术考察点,现在业界内都称为八股文,我个人对八股文的认识,更喜欢结合工作中遇到的问题来讲,也就是能把八股文用到实际的工作中来进行深入。

实际例子

缓存穿透的现象

上游要查找一个值,然后这个值在缓存没有,在我们的mysql的数据库里面也没有,从而每次进行给mysql压力,导致mysql压力大,mysql压力大直接导致的是,接口的响应也会有所下降。

布隆过滤器就是一种解决缓存穿透的方案,如果在布隆过滤器里面没有的话,在mysql一定也没有,如果在布隆过滤器里面有,mysql不一定有。

所谓布隆过滤器,就是一种数据结构,它是由一个长度为m bit的位数组与n个hash函数组成的数据结构,位数组中每个元素的初始值都是0。在初始化布隆过滤器时,会先将所有key进行n次hash运算,这样就可以得到n个位置,然后将这n个位置上的元素改为1。这样,就相当于把所有的key保存到了布隆过滤器中了。

聊一下公平锁和非公平锁

公平锁和非公平锁是指在多线程环境下,获取锁的顺序是否遵循先来先服务的原则。

公平锁:按照申请锁的顺序依次获取锁,即先进先出,保证所有线程公平地获取锁。如果一个线程没有获得锁,它会排队等待,直到轮到它获取锁为止。公平锁可以避免“饥饿”现象,即某些线程长时间等待获取锁。

非公平锁:当锁空闲时,新来的线程可以直接获取锁&

你可能感兴趣的:(java,开发语言,mysql)