![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
面试真题
文章平均质量分 76
穿城大饼
离离原上草,一岁一枯荣。
野火烧不尽,春风吹又生。
远芳侵古道,晴翠接荒城。
又送王孙去,萋萋满别情。
展开
-
Spring生命周期
Spring生命周期关键词一、生命周期原创 2021-11-12 16:33:13 · 239 阅读 · 0 评论 -
Redis-高可用问题3:哨兵模式(针对某一模块,数据量有限)
Redis:哨兵模式关键词主从,没有实现高可用主从+哨兵:可以实现主从切换,实现高可用哨兵:监视 主服务器 进入下线状态;从服务器升级为主服务器继续提供服务哨兵执行流程:启动并初始化Sentinel,获取主从服务器信息,向主服务器和从服务器发送消息(以订阅的方式),接收来自主服务器和从服务器的频道信息,检测主观下线状态,检查客观下线状态;选举Leader Sentinel,故障转移,主服务器的选择一、哨兵模式哨兵(sentinel)是Redis的高可用性 (High Availabili原创 2021-11-08 21:46:58 · 209 阅读 · 0 评论 -
Redis-并发问题2:主从配置
Redis:主从配置关键词一、 主从配置主Redis配置无需特殊配置从Redis配置修改从服务器上的 redis.conf 文件:# slaveof <masterip> <masterport># 表示当前【从服务器】对应的【主服务器】的IP是192.168.10.135,端口是6379。replicaof 127.0.0.1 6379作用读写分离一主多从,主从同步主负责写,从负责读提升Redis的性能和吞吐量主从的数据一致性问题数据容原创 2021-11-08 21:22:00 · 2567 阅读 · 0 评论 -
Redis:Redisson分布式锁的使用(推荐使用)
Redis:Redisson分布式锁的使用(生产环境下)(推荐使用)关键词基于NIO的Netty框架,生产环境使用分布式锁redisson加锁:lua脚本加锁(其他客户端自旋)自动延时机制:启动watch dog,后台线程,每隔10秒检查一下客户端1还持有锁key,会不断的延长锁key的生存时间可重入锁机制:第二个if判断 ,myLock :{“8743c9c0-0795-4907-87fd-6c719a6b4586:1”:2 }释放锁:无锁直接返回;有锁不是我加的,返回;有锁是我加的,执原创 2021-11-08 17:12:17 · 35461 阅读 · 6 评论 -
Redis:分布式锁setnx(只 实现了 互斥性和容错性)
Redis:分布式锁setnx关键词获取锁:原子性操作 set方法(推荐),谁set成功谁获取到锁(过期时间,避免死锁)释放锁:redis+lua脚本实现问题1:主从架构,主机宕机,重复获得锁问题(可以使用红锁解决99%,降低重复获取概率,redis在分布式环境下是ap模型)红锁:三个节点,往两个节点上set成功,才能获取锁问题2:无法续租问题(使用Redisson的看门狗进行续租)一、实现原理共享资源 互斥共享资源 串行化分布式应用中使用锁:(多进程多线程)分布式锁是控制原创 2021-11-08 16:19:42 · 4706 阅读 · 0 评论 -
Redis:分布式锁Watch
Redis:分布式锁Watch关键词锁的续租(延长使用时间)一、利用Watch实现Redis乐观锁乐观锁基于CAS(Compare And Swap)思想(比较并替换),是不具有互斥性(乐观),不会产生锁等待而消耗资源,但是需要反复的重试,但也是因为重试的机制,能比较快的响应。因此我们可以利用redis来实现乐观锁。具体思路如下:1、利用redis的watch功能,监控这个redisKey的状态值2、获取redisKey的值3、创建redis事务4、给这个key的值+15、然后去执原创 2021-11-08 15:51:48 · 651 阅读 · 0 评论 -
Redis:Big Key问题
Redis:Big Key问题关键词发现:(预估,redis-cli --bigkeys命令,rdbtools分析rdb生成csv文)处理:(string减少字符串长度 [MongoDB或缓存到CDN] ;list、hash、set、zset等减少成员数;多线程删除unlink)一、常见场景和大key的影响大key指的是存储的值(Value)非常大,常见场景:热门话题下的讨论大V的粉丝列表序列化后的图片没有及时处理的垃圾数据…大key的影响:大key会大量占用内存,在集群中原创 2021-11-08 15:20:20 · 1601 阅读 · 0 评论 -
Redis:Hot Key问题
Redis:Hot Key问题关键词发现:(预估,客户端统计,redis自带命令,大数据流式计算)处理:(本地缓存,add节点负载,限流熔断保护)一、Redis:Hot Key问题当有大量的请求(几十万)访问某个Redis某个key时,由于流量集中达到网络上限,从而导致这个redis的服务器宕机。造成缓存击穿,接下来对这个key的访问将直接访问数据库造成数据库崩溃,或者访问数据库回填Redis再访问Redis,继续崩溃。二、如何发现热key1、预估热key,比如秒杀的商品、火爆的新闻等原创 2021-11-08 14:55:26 · 657 阅读 · 0 评论 -
Redis:数据并发竞争顺序性
Redis:数据并发竞争顺序性关键词第一种方案:分布式锁(串行)+时间戳(保存一个时间戳判断set顺序)第二种方案:利用消息队列(并行读写进行串行化)一、数据并发竞争这里的并发指的是多个redis的client同时set 同一个key引起的并发问题。多客户端(Jedis)同时并发写一个key,一个key的值是1,本来按顺序修改为2,3,4,最后是4,但是顺序变成了4,3,2,最后变成了2。二、第一种方案:分布式锁+时间戳主要是准备一个分布式锁,大家去抢锁,抢到锁就做set操作。加锁原创 2021-11-08 14:33:57 · 755 阅读 · 0 评论 -
MySQL面试题1:MySQL架构体系相关
问题一:介绍一下MySQL结构体系MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层。一、网络连接层客户端连接器(Client Connectors):提供与MySQL服务器建立的支持。目前几乎支持所有主流的服务端编程技术,例如常见的 Java、C、Python、.NET等,它们通过各自API技术与MySQL建立连接。二、服务层(MySQL Server)服务层是MySQL Server的核心,主要包含系统管理和控制工具、连接池、SQL接口、解析器、查询优化原创 2021-02-24 20:03:22 · 385 阅读 · 0 评论 -
ConcurrentProgramming:Atomic 原子类
ConcurrentProgramming:Atomic 原子类关键词方法基于CAS实现+自旋AtomicInteger -> Unsafe的对象 -> CAS实现+自旋一、Atomic介绍Atomic 翻译成中⽂是原⼦的意思。在化学上,我们知道原⼦是构成⼀般物质的最⼩单位,在化学反应中是不可分割的。在我们这⾥ Atomic 是指⼀个操作是不可中断的。即使是在多个线程⼀起执⾏的时候,⼀个操作⼀旦开始,就不会被其他线程⼲扰。所以,所谓原⼦类说简单点就是具有原⼦/原⼦操作特征的类原创 2021-10-18 17:39:09 · 141 阅读 · 0 评论 -
面试题:请介绍⼀下 JMM(Java 内存模型)
面试题:请介绍⼀下 JMM(Java 内存模型)关键词CPU缓存一致性协议(例如MESI),多个CPU核心之间缓存不会出现不同步的问题Store Buffer、Load Buffer和L1之间却是异步的 (缓存和主内存之间不是完全同步的)内存重排序(Memory Ordering):Store Buffer的延迟写入CPU内存重排序 造成 内存可见性 问题volatile保证变量的可见性:每次使⽤它都到主存中进⾏读取内存屏障:禁止编译器重排序和 CPU 重排序一、为什么会存在“内存原创 2021-10-18 17:01:09 · 679 阅读 · 0 评论 -
面试题:双重检验锁⽅式实现 单例模式
面试题:双重检验锁方式实现 单例模式关键词volatile 禁⽌ JVM 中 构造方法的 指令重排编码实现public class Singleton { private volatile static Singleton instance; private Singleton() { } public static Singleton getInstance() { //先判断对象是否已经实例过,没有实例化过才进⼊加锁代码 if (instance== null)原创 2021-10-18 15:48:27 · 311 阅读 · 0 评论 -
面试题:ConcurrentHashMap 和 Hashtable 的区别
面试题:ConcurrentHashMap 和 Hashtable 的区别关键词1.8ConcurrentHashMap 只锁 首节点ConcurrentHashMap 和 Hashtable 的区别主要体现在实现线程安全的⽅式上不同。底层数据结构: JDK1.7 的 ConcurrentHashMap 底层采⽤ 分段的数组+链表 实现,JDK1.8采⽤的数据结构跟 HashMap1.8 的结构⼀样,数组+链表/红⿊⼆叉树。 Hashtable 和JDK1.8 之前的 HashMap原创 2021-10-18 15:14:41 · 404 阅读 · 0 评论 -
优秀简历模板和面试题分享
建议长期收藏资源1:全网免费Java资源下载SpringBoot、Spring、Mybatis、Redis、RabbitMQ、SpringCloud、高并发(持续更新)资源2:2021Java最新真实面试题汇总(持续更新): 访问地址资源3:13G编程类电子书:网盘地址,提取码:5555资源4:视频集锦:(6T内容比较大,如果地址失效了,请提醒一下博主更新地址)网盘地址,提取码:5555...原创 2021-08-06 16:56:22 · 1427 阅读 · 2 评论 -
面试题:为什么局部变量不赋初始值报错
类加载准备阶段 类变量赋值关键词加载阶段>链接阶段(验证,准备,解析)>初始化阶段在链接得准备阶段进行静态变量得默认值赋值操作一、面试题:请回答,下面两段代码得执行结果public class A { static int a ; public static void main(String[] args) { System.out.println(a); } }public class B { publi原创 2021-09-29 15:19:53 · 1790 阅读 · 0 评论 -
RocketMQ 常见面试题
RocketMQ 常见面试题1、RocketMQ Broker中的消息被消费后会立即删除吗?不会,每条消息都会持久化到CommitLog中,每个Consumer连接到Broker后会维持消费进度信息,当有消息消费后只是当前Consumer的消费进度(CommitLog的offset)更新了。追问:那么消息会堆积吗?什么时候清理过期消息?4.5.1默认72小时后会删除不再使用的CommitLog文件检查这个文件最后访问时间判断是否大于过期时间指定时间删除,默认凌晨4点2、RocketMQ消费模原创 2021-09-12 01:10:35 · 1718 阅读 · 0 评论 -
ConcurrentProgramming:ThreadLocal(jdk8)
ConcurrentProgramming:ThreadLocal使线程中的某个值与保存值的对象关联起来使用场景:ThreadLocal的使用不是为了能让多个线程共同使用某一对象,而是我有一个线程A,其中我需要用到某个对象o,这个对象o在这个线程A之内会被多处调用,而我不希望将这个对象o当作参数在多个方法之间传递,于是,我将这个对象o放到TheadLocal中,这样,在这个线程A之内的任何地方,只要线程A之中的方法不修改这个对象o,我都能取到同样的这个变量o。案例:有一个银行的BankDAO类原创 2021-09-07 18:09:13 · 173 阅读 · 0 评论