草庐IT

面试连环炮系列(二十️五):RocketMQ怎么保证消息不丢失

RocketMQ怎么保证消息不丢失?A.从Producer的视角来看:如果消息未能正确的存储在MQ中,或者消费者未能正确的消费到这条消息,都是消息丢失。B.从Broker的视角来看:如果消息已经存在Broker里面了,如何保证不会丢失呢(宕机、磁盘崩溃)。C.从Consumer的视角来看:如果消息已经完成持久化了,但是Consumer取了,但是未消费成功且没有反馈,就是消息丢失。D.从Producer分析:如何确保消息正确的发送到了Broker?默认情况下,可以通过同步的方式阻塞式的发送,checkSendStatus,状态是OK,表示消息一定成功的投递到了Broker,状态超时或者失败,则会

面试连环炮系列(二十️五):RocketMQ怎么保证消息不丢失

RocketMQ怎么保证消息不丢失?A.从Producer的视角来看:如果消息未能正确的存储在MQ中,或者消费者未能正确的消费到这条消息,都是消息丢失。B.从Broker的视角来看:如果消息已经存在Broker里面了,如何保证不会丢失呢(宕机、磁盘崩溃)。C.从Consumer的视角来看:如果消息已经完成持久化了,但是Consumer取了,但是未消费成功且没有反馈,就是消息丢失。D.从Producer分析:如何确保消息正确的发送到了Broker?默认情况下,可以通过同步的方式阻塞式的发送,checkSendStatus,状态是OK,表示消息一定成功的投递到了Broker,状态超时或者失败,则会

《我想进大厂》之Spring夺命连环10问

《我想进大厂》之Spring夺命连环10问Java基础,必须全对! 1.说说Spring里用到了哪些设计模式?单例模式:Spring中的Bean默认情况下都是单例的。无需多说。工厂模式:工厂模式主要是通过BeanFactory和ApplicationContext来生产Bean对象。代理模式:最常见的AOP的实现方式就是通过代理来实现,Spring主要是使用JDK动态代理和CGLIB代理。模板方法模式:主要是一些对数据库操作的类用到,比如JdbcTemplate、JpaTemplate,因为查询数据库的建立连接、执行查询、关闭连接几个过程,非常适用于模板方法。2.谈谈你对IOC和AOP的理解?

《我想进大厂》之Spring夺命连环10问

《我想进大厂》之Spring夺命连环10问Java基础,必须全对! 1.说说Spring里用到了哪些设计模式?单例模式:Spring中的Bean默认情况下都是单例的。无需多说。工厂模式:工厂模式主要是通过BeanFactory和ApplicationContext来生产Bean对象。代理模式:最常见的AOP的实现方式就是通过代理来实现,Spring主要是使用JDK动态代理和CGLIB代理。模板方法模式:主要是一些对数据库操作的类用到,比如JdbcTemplate、JpaTemplate,因为查询数据库的建立连接、执行查询、关闭连接几个过程,非常适用于模板方法。2.谈谈你对IOC和AOP的理解?

面试连环炮系列(二十八):数据库读写分离的目的是什么?

1.数据库读写分离的目的是什么?通常业务系统是读多写少,读写分离是将对数据库的读写操作分散到不同的节点上,能够小幅提升写性能,大幅提升读性能。通常采用数据库一主多从的方式,主库可以读写,从库只读。2.读写分离会带来什么问题?如何解决?主库和从库的数据存在延迟。比如写完主库之后,主库的数据同步到从库是需要时间的,这个时间差就导致了主库和从库的数据不一致性问题。解决办法是在不能忍受延迟的场景强制读主库。3.MySQL主从复制的原理清楚吗?主库将数据库中数据的变化写入到binlog从库连接主库。从库会创建一个I/O线程向主库请求更新的binlog。主库会创建一个binlogdump线程来发送binl

面试连环炮系列(二十八):数据库读写分离的目的是什么?

1.数据库读写分离的目的是什么?通常业务系统是读多写少,读写分离是将对数据库的读写操作分散到不同的节点上,能够小幅提升写性能,大幅提升读性能。通常采用数据库一主多从的方式,主库可以读写,从库只读。2.读写分离会带来什么问题?如何解决?主库和从库的数据存在延迟。比如写完主库之后,主库的数据同步到从库是需要时间的,这个时间差就导致了主库和从库的数据不一致性问题。解决办法是在不能忍受延迟的场景强制读主库。3.MySQL主从复制的原理清楚吗?主库将数据库中数据的变化写入到binlog从库连接主库。从库会创建一个I/O线程向主库请求更新的binlog。主库会创建一个binlogdump线程来发送binl

面试连环炮系列(二十七):如何保证缓存与数据库的数据一致性

1.如何保证缓存与数据库的数据一致性?要保持数据强一致性,只能将读请求和写请求串行化,在同一个内存队列里执行。但是串行化会导致系统的吞吐量大幅度降低,多用几倍的机器去支撑线上的请求。2.如果只要数据最终一致性,该怎么做呢?缓存设置过期时间。读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。更新数据的时候,先更新数据库,然后再删除缓存。3.为什么是删除缓存,而不是更新缓存?删除比更新更快捷。比如有些缓存值是由多个数据计算出来的,如果计算比较耗时,在高并发下,更新缓存的方式增加了读缓存不一致的概率。有些缓存是冷数据,删除缓存等于是将更新缓存延迟到了读请求的时刻。4

面试连环炮系列(二十七):如何保证缓存与数据库的数据一致性

1.如何保证缓存与数据库的数据一致性?要保持数据强一致性,只能将读请求和写请求串行化,在同一个内存队列里执行。但是串行化会导致系统的吞吐量大幅度降低,多用几倍的机器去支撑线上的请求。2.如果只要数据最终一致性,该怎么做呢?缓存设置过期时间。读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。更新数据的时候,先更新数据库,然后再删除缓存。3.为什么是删除缓存,而不是更新缓存?删除比更新更快捷。比如有些缓存值是由多个数据计算出来的,如果计算比较耗时,在高并发下,更新缓存的方式增加了读缓存不一致的概率。有些缓存是冷数据,删除缓存等于是将更新缓存延迟到了读请求的时刻。4

面试题系列:网络篇夺命连环12问

  一、谈一谈你对TCP/IP四层模型,OSI七层模型的理解? 为了增强通用性和兼容性,计算机网络都被设计成层次机构,每一层都遵守一定的规则。 因此有了OSI这样一个抽象的网络通信参考模型,按照这个标准使计算机网络系统可以互相连接。 物理层:通过网线、光缆等这种物理方式将电脑连接起来。传递的数据是比特流,0101010100。 数据链路层:首先,把比特流封装成数据帧的格式,对0、1进行分组。电脑连接起来之后,数据都经过网卡来传输,而网卡上定义了全世界唯一的MAC地址。然后再通过广播的形式向局域网内所有电脑发送数据,再根据数据中MAC地址和自身对比判断是否是发给自己的。 网络层:广播的形式太低效

面试题系列:网络篇夺命连环12问

  一、谈一谈你对TCP/IP四层模型,OSI七层模型的理解? 为了增强通用性和兼容性,计算机网络都被设计成层次机构,每一层都遵守一定的规则。 因此有了OSI这样一个抽象的网络通信参考模型,按照这个标准使计算机网络系统可以互相连接。 物理层:通过网线、光缆等这种物理方式将电脑连接起来。传递的数据是比特流,0101010100。 数据链路层:首先,把比特流封装成数据帧的格式,对0、1进行分组。电脑连接起来之后,数据都经过网卡来传输,而网卡上定义了全世界唯一的MAC地址。然后再通过广播的形式向局域网内所有电脑发送数据,再根据数据中MAC地址和自身对比判断是否是发给自己的。 网络层:广播的形式太低效