草庐IT

一面面

全部标签

阿里云一面:并发场景下的底层细节 - 伪共享问题

最近看书看到的伪共享问题,直接触碰到知识盲区了,之前确实没听说过这个东西,打开百度就像吃饭一样自然。虽然面经上出现的次数不多,不过我觉得还是很重要的一个问题,而且不难,花个五分钟就能弄清楚~老规矩,背诵版在文末。公众号【飞天小牛肉】定期更新大厂面试题,提供背诵版和详解版三级缓存架构众所周知,为了缓解内存和CPU之间速度不匹配的矛盾,引入了高速缓存这个东西,它的容量比内存小很多,但是交换速度却比内存要快得多。之前我们画过这样的分级存储体系结构:事实上,高速缓存仍然存在细分,也称为三级缓存结构:一级(L1)缓存、二级(L2)缓存、三级(L3)缓存越靠近CPU的缓存,速度越快,容量也越小。所以L1缓

阿里云一面:并发场景下的底层细节 - 伪共享问题

最近看书看到的伪共享问题,直接触碰到知识盲区了,之前确实没听说过这个东西,打开百度就像吃饭一样自然。虽然面经上出现的次数不多,不过我觉得还是很重要的一个问题,而且不难,花个五分钟就能弄清楚~老规矩,背诵版在文末。公众号【飞天小牛肉】定期更新大厂面试题,提供背诵版和详解版三级缓存架构众所周知,为了缓解内存和CPU之间速度不匹配的矛盾,引入了高速缓存这个东西,它的容量比内存小很多,但是交换速度却比内存要快得多。之前我们画过这样的分级存储体系结构:事实上,高速缓存仍然存在细分,也称为三级缓存结构:一级(L1)缓存、二级(L2)缓存、三级(L3)缓存越靠近CPU的缓存,速度越快,容量也越小。所以L1缓

美团一面:能不能通俗的解释下为什么要有意向锁这个东西?

众所周知,InnoDB中既有读锁也有写锁,也称为共享锁和排他锁,这两种锁既可以加在整张表上,也可以加在行上。MySQL自身就提供了表锁的能力:读锁:LOCKTABLEtable_nameREAD 用读锁锁表,会阻塞其他事务的写操作写锁:LOCKTABLEtable_nameWRITE 用写锁锁表,会阻塞其他事务的读和写操作行锁是InnoDB存储引擎提供的,MySQL本身并不提供行级锁的能力:读锁,如SELECT*FROMtable_nameWHERE...LOCKINSHAREMODE 加行级读锁,会阻塞其他事务对该行记录的写操作写锁,如SELECT*FROMtable_nameWHERE..

美团一面:能不能通俗的解释下为什么要有意向锁这个东西?

众所周知,InnoDB中既有读锁也有写锁,也称为共享锁和排他锁,这两种锁既可以加在整张表上,也可以加在行上。MySQL自身就提供了表锁的能力:读锁:LOCKTABLEtable_nameREAD 用读锁锁表,会阻塞其他事务的写操作写锁:LOCKTABLEtable_nameWRITE 用写锁锁表,会阻塞其他事务的读和写操作行锁是InnoDB存储引擎提供的,MySQL本身并不提供行级锁的能力:读锁,如SELECT*FROMtable_nameWHERE...LOCKINSHAREMODE 加行级读锁,会阻塞其他事务对该行记录的写操作写锁,如SELECT*FROMtable_nameWHERE..

【架构必备】读写分离的方方面面及主要设计

一.问题&分析在读多写少的互联网业务场景,往往“读”性能会成为第一个瓶颈。随着业务的发展,数据库负载越来越高,逐渐成为系统的瓶颈。面对“读”性能瓶颈,大致有以下几种解题思路:提升DB配置从而获取更高的性能。使用更NX的机器,升级DB的CPU、内存、磁盘等;使用更多的DB来分担读压力。对DB进行“拆分”,一个DB实例负责数据写入,一组DB实例负责数据查询,也就是常说的读写分离;将读压力转移到其他存储引擎。比如引入读性能更高的Cache,让Cache挡在DB前面,降低落到DB上的请求量;上面三种方案各具千秋,但性价比最高的仍旧是“读写分离方案”:方案一,升级硬件资源,简单粗暴,主要是金钱上的考量;

【架构必备】读写分离的方方面面及主要设计

一.问题&分析在读多写少的互联网业务场景,往往“读”性能会成为第一个瓶颈。随着业务的发展,数据库负载越来越高,逐渐成为系统的瓶颈。面对“读”性能瓶颈,大致有以下几种解题思路:提升DB配置从而获取更高的性能。使用更NX的机器,升级DB的CPU、内存、磁盘等;使用更多的DB来分担读压力。对DB进行“拆分”,一个DB实例负责数据写入,一组DB实例负责数据查询,也就是常说的读写分离;将读压力转移到其他存储引擎。比如引入读性能更高的Cache,让Cache挡在DB前面,降低落到DB上的请求量;上面三种方案各具千秋,但性价比最高的仍旧是“读写分离方案”:方案一,升级硬件资源,简单粗暴,主要是金钱上的考量;

字节一面,被问到两个经典问题!你知道是什么吗?

大家好,我是小林。之前有位读者面字节被问到两个很经典的TCP问题:第一个问题:服务端大量处于TIME_WAIT状态连接的原因。第二个问题:服务端大量处于CLOSE_WAIT状态连接的原因。这两个问题在面试中很常问,主要也是因为在工作中也很常遇到这个问题。这次,我们就来聊聊这两个问题。服务端出现大量TIME_WAIT状态的原因有哪些?我们先来看一下TCP四次挥手的流程吧,看看TIME_WAIT状态发生在哪一个阶段。下面这个图,是由「客户端」作为「主动关闭方」的TCP四次挥手的流程。TCP四次挥手的流程从上面我们可以知道,TIME_WAIT状态是「主动关闭连接方」才会出现的状态。而且TIME_WA

字节一面,被问到两个经典问题!你知道是什么吗?

大家好,我是小林。之前有位读者面字节被问到两个很经典的TCP问题:第一个问题:服务端大量处于TIME_WAIT状态连接的原因。第二个问题:服务端大量处于CLOSE_WAIT状态连接的原因。这两个问题在面试中很常问,主要也是因为在工作中也很常遇到这个问题。这次,我们就来聊聊这两个问题。服务端出现大量TIME_WAIT状态的原因有哪些?我们先来看一下TCP四次挥手的流程吧,看看TIME_WAIT状态发生在哪一个阶段。下面这个图,是由「客户端」作为「主动关闭方」的TCP四次挥手的流程。TCP四次挥手的流程从上面我们可以知道,TIME_WAIT状态是「主动关闭连接方」才会出现的状态。而且TIME_WA

阿里一面:说一说Java、Spring、Dubbo三者SPI机制的原理和区别

大家好,我是三友~~今天来跟大家聊一聊Java、Spring、Dubbo三者SPI机制的原理和区别。其实我之前写过一篇类似的文章,但是这篇文章主要是剖析dubbo的SPI机制的源码,中间只是简单地介绍了一下Java、Spring的SPI机制,并没有进行深入,所以本篇就来深入聊一聊这三者的原理和区别。什么是SPISPI全称为ServiceProviderInterface,是一种动态替换发现的机制,一种解耦非常优秀的思想,SPI可以很灵活的让接口和实现分离,让api提供者只提供接口,第三方来实现,然后可以使用配置文件的方式来实现替换或者扩展,在框架中比较常见,提高框架的可扩展性。简单来说SPI是

阿里一面:说一说Java、Spring、Dubbo三者SPI机制的原理和区别

大家好,我是三友~~今天来跟大家聊一聊Java、Spring、Dubbo三者SPI机制的原理和区别。其实我之前写过一篇类似的文章,但是这篇文章主要是剖析dubbo的SPI机制的源码,中间只是简单地介绍了一下Java、Spring的SPI机制,并没有进行深入,所以本篇就来深入聊一聊这三者的原理和区别。什么是SPISPI全称为ServiceProviderInterface,是一种动态替换发现的机制,一种解耦非常优秀的思想,SPI可以很灵活的让接口和实现分离,让api提供者只提供接口,第三方来实现,然后可以使用配置文件的方式来实现替换或者扩展,在框架中比较常见,提高框架的可扩展性。简单来说SPI是