- 博客(10)
- 收藏
- 关注
原创 MySQL一条语句的执行流程
MySQL也是有缓存存在的 ,如果一条查询语句进来以后首先会检查缓存中是否存在对应数据 如果有可以直接返回 提示效率。客户端于MySQL连接器建立连接后,连接器会检查用户信息,确定用户权限等工作。优化器就和我们的索引开始打交道了 他会去选择到底要不要走索引,具体走哪个索引。执行器就是和存储引擎直接打交到了 ,这里以目前最常见的InnoDB为例。主要就是对SQL语句进行分析,检查是否有语法错误等问题。
2022-08-23 15:52:10 418 1
原创 Redis缓存失效三大问题如何解决(穿透、击穿、雪崩)
如果真有人那么无趣非要一直请求id = - 1,那么就在第一次请求后 数据库一定会返回一个null值,直接把做个null值甩到Redis中,这样下一次再请求id= -1 ,就不会打到数据库了,会直接从Redis返回null 从而得知这是一个无效请求。同时大量相同的请求打到DB,那么就可以加互斥锁 同时只能一个请求打到DB其他的请求陷入自旋状态,知道唯一 一个到大DB的请求把数据写回到Redis,再从Redis拿回数据即可。但是这种方法会大量浪费Redis的内存空间,建议还是要给空key设置一个过期时间。..
2022-08-04 22:37:13 1893
原创 Redis为什么能用来做消息队列,他和其他MQ如何选择?
其中List类型是一个双向链表,自然就可以当作普通的队列Queue来使用了,再加之Redis本身就是一个中间件,所以就可以使用list类型完成一个简易的消息队列了。RabbitMqKafa等一系列都是专门的消息队列中间件,相比Redis提供了更丰富的功能,如交换机、绑定、死信队列、生产或消费时的确认机制。Redis每秒十万读写这是其他消息队列中间件很难匹敌的,而且对与一些简单的业务需求,使用RabbitMQ等一些复杂的功能也降低了整体架构的可用性。redis有五种基本类型分别为。...
2022-08-02 13:52:20 845
原创 ConcurrentHashMap为什么不能有null值,使用containsKey方法有什么问题?
HashMap的key和value是可以存在null值的,而ConcurrentHashMap 则是禁止出现任何null值,甚至会直接throws NullPointerException。先看原作者Doug Lea的解释核心意思就是ConcurrentHashMap是用于并发环境下的, get方法 如果没有找到对应的key会返回null值,如果含有key 但是value确实为null 那么也会返回null。这就会造成二义性!HashMap中是如何解决二义性的呢?containsKey呢...
2022-07-19 15:12:30 1372 3
原创 【应届面试篇】如何避免死锁?
如何避免死锁,那就把死锁产生的原因及必要条件避免了,问题自然而然就解决了。### 那么先看死锁产生的4个必要条件1、互斥: 某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。2、占有且等待: 一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。3、不可抢占: 别人已经占有了某项资源,你不能因为自己也需要该资源,就去把别人的资源抢过来。4、循环等待: 存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源
2022-07-17 15:33:49 187
原创 【应届面试篇】MySQL是如何保证事务的?
首先MySQL事务有四大特性,我们由这四大特性反推就可得知MySQL是如何保证事务的,也就是说保证四大特性就能保证MySQL的事务那先来看一下四大特性ACID:原子性:即不可再分,整个语句要么执行,要么不执行一致性:即在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。隔离性:事务的执行是互不干扰的,一个事务不可能看到其他事务运行持久性:在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中ACID分别都是如何实现 靠什么保证的呢?redolongundologbinlog
2022-07-17 15:10:01 1853
原创 【应届面试篇】JVM的主要组成部分?及各部分常见问题详解
老年代空间不够分配新的内存(或永久代空间不足,但只是JDK1.7有的,这也是用元空间来取代永久代的原因,可以减少FullGC的频率,减少GC负担,提升其效率)。SoftReference实现弱引用,相比软引用来说,要更加无用一些,它拥有更短的生命周期,当JVM进行垃圾回收时,无论内存是否充足,都会回收被弱引用关联的对象。因此所有的加载请求最终都应该传送到顶层的启动类加载器中,只有当父加载器反馈自己无法完成这个加载请求(它的搜索范围中没有找到所需的类)时,子加载器才会尝试自己去加载。...
2022-07-16 20:17:44 368
原创 【应届面试篇】Redis是干什么的? 及引申问题
Redisson提出了一种“锁续命的机制”,简单来说就是多开一条辅助线程,去管理锁的存活时间,如果锁存活时间不足持有锁的服务还没有完成,那么就会给锁的存活时间延时。Redis的List类型是一个双向链表,它可以作为简单的消息队列来使用,但是现在还有很多专业的Mq相比与Redis的List有很强的扩展性。Redis的setnx函数用于互斥性可以作为分布式锁来使用,但是想做好一把完美的分布式锁并不容易,要考虑大量的极端情况。Redisson是一个第三方依赖,在github上能找到。...
2022-07-16 19:34:35 250
原创 【应届面试篇】谈一谈HashMap 及 ConcurrentHashMap?- 附源码解读
以面试参考答案为主文章,尽可能保持简洁,本文为了方便理解附上部分源码方便理解。
2022-07-16 15:46:08 189
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人