03 2022 档案
摘要:1、exists和in的区别 存在表A和表B A_id A_name A_type B_id B_name B_type 其中表A和表B的A_id和B_id均加了索引,其他的两个字段未加索引,A表记录10000条,B表记录有50000条 执行select * from A where A_id in
阅读全文
摘要:1、Runable和Callable Java里面实现多线程的三种方式:一、是继承Thread类;二、实现Runable接口;三、实现Callable接口。 第一种方式继承Thread,然后重写run(); 第二种方式实现Runable接口,然后实现run(); public interface R
阅读全文
摘要:ThreadLocal是什么呢?简单来说,它是一个线程内部的存储类。 类组成:1、无参构造方法2、一个ThreadLocalMap静态内部类3、ThreadLocalMap静态内部类里面存在一个Entry<ThreadLocal<?> k, Object v>[]数组4、其他的就不细说,可以自己看源
阅读全文
摘要:说到多线程肯定要理解锁,锁可以分为悲观锁和乐观锁,比如独占锁就是悲观锁,synchronized就是一种独占锁。 何为悲观,认为每一次操作数据,都可能会发生冲突,所以采用的策略是,先锁定再访问,保证在加锁阶段只有自己可以操作数据。何为乐观,就是我认为大多数情况下,操作的数据不会发生冲突,所以不会加锁
阅读全文
摘要:锁的状态分为4种,无锁、偏向锁、轻量级锁、重量级锁其实涉及到锁的升级,随着线程竞争的加大,从偏向锁->轻量级锁->重量级锁,且升级过程不可逆 问:为什么会有锁升级?直接就上重量级锁不好吗?答:因为重量级锁性能不好。 问:为什么重量级锁性能不好?答:因为加锁和解锁过程,涉及到CPU用户态切换到内核态再
阅读全文
摘要:Kafka是一个高性能的分布式发布订阅消息系统,其实activeMq,RabbitMq,kafka都比较类似。 其解决的问题:解耦、异步、削峰,以及对应的场景小知识:mysql每秒处理2000个请求已经差不多了activeMq,rabbitMq,rocketMq,kafka优缺点比较,从单机吞吐量、
阅读全文