知识碎片
文章平均质量分 60
羊毛_
代码改变世界
展开
-
Kafka大厂面试14问(附答案)
通过心跳机制监控消费者组中consumer的存活,返回通知消费者进行balance,选举出新的ld consumer ,ldconsumer从协调者获取所有的consumer,将分配信息发给协调者,协调者再通过心跳机制下发给consumer。生产者发送消息过快,消费者消费慢 -> 如果需要紧急处理,可以把修改消费端程序,让它将收到的消息快速转发到其他topic,然后启动多个消费者同时消费新主题的不同分区。设置的自动提交offset,消息拉取了,但是没消费完,就提交了offset,但是消费者宕机了;原创 2024-09-03 21:22:17 · 1263 阅读 · 0 评论 -
【实践举例】一文搞懂Mysql常见锁!!
共享锁(读锁):会阻塞写锁排他锁(写锁):会阻塞读锁,写锁全库导出,全库备份,需要保证整个数据库一致性flush tables with read lock 添加读锁Unlock tables 释放全局锁另外:-single-transaction 可以通过将导出操作封装到一个事务中,使得导出的数据是一个一致性快照(需要在支持MVCC的场景)原创 2024-08-29 00:10:36 · 300 阅读 · 0 评论 -
单例模式的几种写法及破坏
在这三步中,第2、3步有可能会发生指令重排现象,创建对象的顺序变为1-3-2,会导致多个线程获取对象时,有可能线程A创建对象的过程中,执行了1、3步骤,线程B判断singleton已经不为空,获取到未初始化的singleton对象,就会报NPE异常。为了防止这种行为破坏单例模式,你需要重写 `readResolve()` 方法,在 `readResolve()` 方法中返回单例实例的引用,这样即使经过序列化和反序列化,你仍然只会有一个单例实例。输出到文件中,在读入文件反序列化成对象时,原创 2024-08-15 15:29:26 · 628 阅读 · 0 评论 -
循环依赖问题和Spring三级缓存
一二级缓存能解决不是代理对象的循环依赖,如果是代理对象,就需要用到三级缓存一三级缓存能解决依赖注入往后的循环依赖问题,如果是构造方法出现了循环依赖,则可以通过@Lazy解决原创 2024-08-08 16:46:05 · 283 阅读 · 0 评论 -
【面试】讲讲对IOC及其工作流程的理解
根据程序里定义的bean的声明方式,通过解析和加载后生成BeanDefinition,其中包括bean的定义和基本属性,然后把BeanDefinition注册到IOC容器的Map集合里;对于设置了Lazy-init属性和非单例的Bean,是在每次获取Bean对象时,调用Bean的初始化方法来完成实例化的。Spring中提供了很多声明bean的方式,比如使用xml配置文件,@Service注解,在@Configuration修饰的配置类中用@Bean注解来声明Bean等。原创 2024-08-08 16:10:28 · 351 阅读 · 0 评论 -
synchronized加锁原理
jdk 1.6以后,引入了偏向锁,只有第一次使用CAS,将线程ID设置到锁对象的Mark Word头中(之前是用锁记录替换markword),这样就可以根据线程id判断是否是自己线程持有锁,不用CAS了。进入synchronized后,会首先在线程栈中创建一个锁记录,它的object字段指向锁对象,并用CAS将锁记录的地址存储在对象头的mark word中。如果CAS修改失败,说明发生了竞争,会再去申请monitor,升级为重量级锁,原来持有锁的线程也会走重量级锁的解锁流程。原创 2024-07-25 20:34:11 · 178 阅读 · 0 评论