08 2022 档案
摘要:spring中XXXAware接口的作用 Aware接口,是Spring中的一个根接口。Aware的中文含义,是“意识到,察觉到,发觉,发现”,所以该接口的目的,通过实现Aware的子接口,让类添加发觉信息的能力。 常见的Aware直接实现类:ApplicationContextAware实现该接口
阅读全文
摘要:什么是Zab协议 ZAB协议,全称 Zookeeper Atomic Broadcast(Zookeeper 原子广播协议)。它是专门为分布式协调服务——Zookeeper,设计的一种支持崩溃恢复和原子广播的协议。 从设计上看,ZAB协议和 Raft 很类似。ZooKeeper集群中,只有一个Lea
阅读全文
摘要:线程安全的List 获取线程安全的List我们可以通过Vector、Collections.synchronizedList()方法和CopyOnWriteArrayList三种方式读多写少的情况下,推荐使用CopyOnWriteArrayList方式读少写多的情况下,推荐使用Collections
阅读全文
摘要:堆外内存 JVM启动时分配的内存,称为堆内存,与之相对的,在代码中还可以使用堆外内存,比如Netty,广泛使用了堆外内存,但是这部分的内存并不归JVM管理,GC算法并不会对它们进行回收,所以在使用堆外内存时,要格外小心,防止内存一直得不到释放,造成线上故障。 堆外内存的申请和释放 JDK的ByteB
阅读全文
摘要:行锁死锁的两种场景和解决策略 死锁的第一种场景:获取同一个记录产生死锁 由于在行锁中,锁是逐步得到的,主要分为两步:锁住主键索引,锁住非主键索引。如:当两个事务同时执行时,一个锁住了主键索引,在等待其余索引;另外一个锁住了非主键索引,在等待主键索引。这样便会发生死锁。InnoDB通常均可以检测到这种
阅读全文
摘要:mysql子查询和连接查询 首先是in和Exist的区别,in是对内查询的每个结果会去外层表里面进行循环,Exist则是对外层的记录去内层记录里面去遍历,所以如果外查询表比较大的话使用Exists,内查询的表比较大的话使用in。 一 子查询 1 MySQL从4.1版本开始支持子查询,使用子查询进行S
阅读全文
摘要:面试真题:经典智力题最详汇总(上) - 知乎 (zhihu.com) 面试真题:经典智力题最详汇总(中) - 知乎 (zhihu.com) 面试常问智力题40道(逻辑题)+ 参考答案_笔经面经_牛客网 (nowcoder.com)
阅读全文
摘要:双写实现数据迁移 mysql的架构 在一张大表内包含了整个年级所有的班的同学的考试成绩,当然为了区别每个同学是来自哪个班的,相应的也有班级这个字段来标识。现在,我们依据总成绩这个字段来将全年级的同学进行一个排名,排序的结果当然是各个班级的学生穿插在一起,大致如下表所示: 姓名 班级 成绩张三 2 9
阅读全文
摘要:对象创建的过程(简单理解) 详细的过程 java创建对象的过程主要分为一下五个步骤:(1)类加载检查Java虚拟机(jvm)在读取一条new指令时候,首先检查能否在常量池中定位到这个类的符号引用,并且检查这个符号引用代表的类是否被加载、解析和初始化。如果没有,则会先执行相应的类加载过程。 (2)内存
阅读全文
摘要:fork创建进程的步骤 我们都知道,在Linux中调用fork()函数,会创建一个子进程,那么在创建这个子进程的过程中,发生了些什么事情? 首先,我们要知道,fork()函数其实是调用发起_fork()系统调用,控制权由用户态转为内核态, 内核会分配新的内存块和内核数据结构给子进程(也就是PCB t
阅读全文
摘要:kafka高吞吐量的原因 1、顺序读写kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能 顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写 2、零拷贝在Linux kernel2.2 之后出现了一种叫做"零拷贝(zero-copy
阅读全文