网站优化seo怎么做,做网站 内网怎么映射,logo设计理念怎么写,昆明企业免费建站目录
1、SpringBoot在整合RabbitMQ时需要导入的包是
2、下列关于RabbitMQ的confirm消息确认机制解释说明正确的是
3、关于SpringBoot的配置文件#xff0c;以下说法正确的是#xff08;#xff09;
4、变量命名规范说法正确的是?
5、哪个关键字可以对对象加互斥锁以下说法正确的是
4、变量命名规范说法正确的是?
5、哪个关键字可以对对象加互斥锁
6、RabbitMQ不支持哪个协议
7、关于异常下列说法正确的是
8、以下锁机机制中不能保证线程安全的是
9、vim中哪条命令是保存强制退出( )
10、下面哪种 ID 生成机制可以避免分布式环境下的 ID 重复问题
11、执行完以下代码 int [ ] x new int[10] 后以下哪项说明是正确的
12、下列哪些是RabbitMQ的特点
13、SpringBoot整合RabbitMQ需要导入的包有
14、实现分布式锁的方案中哪些是可行的
15、下列关于RabbitMQ解释说明正确的有
16、下列关于ElasticSearch安装使用说明错误的是
17、在创建CustomExchange是指定交换机和消息队列的类型它们的key是
18、MyBatis中关联映射的标记中使用什么属性指定多方或者一方封装的数据的类型
19、下列关于RabbitMQ解释说明正确的有
20、以下哪种场景可以考虑使用分布式锁
21、下面哪个Java语句声明了一个适合于创建50个字符串对象数组的变量
22、Maven项目的坐标位置由那些部分组成
23、下列关于amqptemplate接口解释说明正确的是
24、关于SpringBoot中的spring-boot-starter-parent父项目说法正确的有。
25、下列属于RabbitMQ中Message类属性的是
26、hashmap底层结构什么情况下链表转为红黑树
27、Redis过期策略
28、说说Redis的缓存预热、缓存雪崩、缓存击穿、缓存穿透的现象及如何防止
1.缓存预热
2.缓存雪崩
3.缓存击穿
4.缓存穿透
29、说说父项目中dependencyManagement标记的作用 1、SpringBoot在整合RabbitMQ时需要导入的包是
解题思路 RabbitMQ遵守amqp协议并且springboot中的包一般不会以starter结尾所以是spring-boot-starter-amqp 2、下列关于RabbitMQ的confirm消息确认机制解释说明正确的是 解题思路 开启confirm消息确认机制后只要消息到达rabbitmqrabbitmq就会发送确认收到消息因此A说法错误不管消息是否到达rabbitmq都会收到消息确认要么成功要么失败因此B错消息发送失败之后可以根据返回的tag值再次发送消息因此D错。 3、关于SpringBoot的配置文件以下说法正确的是 4、变量命名规范说法正确的是? 5、哪个关键字可以对对象加互斥锁 6、RabbitMQ不支持哪个协议
UDP
解题思路 RabbitMQ遵守AMQP协议生成者、消费者与RabbitMQ相连是通过TCP协议同时RabbitMQ还支持STOMP、MQTT等协议。 7、关于异常下列说法正确的是 8、以下锁机机制中不能保证线程安全的是
解题思路 volatile关键字 9、vim中哪条命令是保存强制退出( ) 10、下面哪种 ID 生成机制可以避免分布式环境下的 ID 重复问题 11、执行完以下代码 int [ ] x new int[10] 后以下哪项说明是正确的 12、下列哪些是RabbitMQ的特点 13、SpringBoot整合RabbitMQ需要导入的包有
解题思路 spring-boot-starter-amqp为核心starterspring-rabbit-test为测试包。 14、实现分布式锁的方案中哪些是可行的
解题思路 目前流行的是数据库Redis、和ZooKeeper 15、下列关于RabbitMQ解释说明正确的有 16、下列关于ElasticSearch安装使用说明错误的是 17、在创建CustomExchange是指定交换机和消息队列的类型它们的key是
解题思路 创建CustomExchange时通过x-delayed-type指定交换机类型通过x-delayed-message指定消息队列类型。 18、MyBatis中关联映射的标记中使用什么属性指定多方或者一方封装的数据的类型
解题思路 注意区分对多关联映射中指定类型的为ofType,对一关联映射中指定类型的为javaType 19、下列关于RabbitMQ解释说明正确的有 20、以下哪种场景可以考虑使用分布式锁
解题思路 秒杀中防止超卖接口防止重复调用等都是分布式锁的使用场景 21、下面哪个Java语句声明了一个适合于创建50个字符串对象数组的变量 22、Maven项目的坐标位置由那些部分组成
解题思路 ①groupid:公司或组织域名倒序项目名 groupidcom.gly.maven /groupid ②artifactid:模块名 artifactidHello /artifactid ③version版本 23、下列关于amqptemplate接口解释说明正确的是 24、关于SpringBoot中的spring-boot-starter-parent父项目说法正确的有。 25、下列属于RabbitMQ中Message类属性的是
解题思路 Message只有两个属性分别是messageProperties和body。 26、hashmap底层结构什么情况下链表转为红黑树
参考答案
HashMap中链表转为红黑树的条件 HashMap的底层是元素为链表的数组。
转化条件 在JDK1.8之后HashMap中的链表在满足以下两个条件时将会转化为红黑树(即自平衡的排序二叉树)
条件一 数组 arr[i] 处存放的链表长度大于8条件二 数组长度大于等于64。
满足以上两个条件数组 arr[i] 处的链表将自动转化为红黑树其他位置如 arr[i1] 处的数组元素仍为链表不受影响
解题思路 HashMap中链表转为红黑树的条件 HashMap的底层是元素为链表的数组。 转化条件 在JDK1.8之后HashMap中的链表在满足以下两个条件时将会转化为红黑树(即自平衡的排序二叉树) 1. 条件一 数组 arr[i] 处存放的链表长度大于8 2. 条件二 数组长度大于等于64。 满足以上两个条件数组 arr[i] 处的链表将自动转化为红黑树其他位置如 arr[i1] 处的数组元素仍为链表不受影响 27、Redis过期策略
参考答案
redis 过期策略是定期删除惰性删除。
所谓定期删除指的是 redis 默认是每隔 100ms 就随机抽取一些设置了过期时间的 key检查其是否过期如果过期就删除。
假设 redis 里放了 10w 个 key都设置了过期时间你每隔几百毫秒就检查 10w 个 key那 redis 基本上就死了cpu 负载会很高的消耗在你的检查过期 key 上了。注意这里可不是每隔 100ms 就遍历所有的设置过期时间的 key那样就是一场性能上的灾难。实际上 redis 是每隔 100ms 随机抽取一些 key 来检查和删除的。
但是问题是定期删除可能会导致很多过期 key 到了时间并没有被删除掉那咋整呢所以就是惰性删除了。这就是说在你获取某个 key 的时候redis 会检查一下 这个 key 如果设置了过期时间那么是否过期了如果过期了此时就会删除不会给你返回任何东西。
获取 key 的时候如果此时 key 已经过期就删除不会返回任何东西。 但是实际上这还是有问题的如果定期删除漏掉了很多过期 key然后你也没及时去查也就没走惰性删除此时会怎么样如果大量过期 key 堆积在内存里导致 redis 内存块耗尽了怎么办 走内存淘汰机制。
内存淘汰机制 redis 内存淘汰机制有以下几个
noeviction: 当内存不足以容纳新写入数据时新写入操作会报错。allkeys-lru当内存不足以容纳新写入数据时在键空间中移除最近最少使用的 key这个是最常用的。allkeys-random当内存不足以容纳新写入数据时在键空间中随机移除某个 key。volatile-lru当内存不足以容纳新写入数据时在设置了过期时间的键空间中移除最近最少使用的 key这个一般不太合适。volatile-random当内存不足以容纳新写入数据时在设置了过期时间的键空间中随机移除某个 key。volatile-ttl当内存不足以容纳新写入数据时在设置了过期时间的键空间中有更早过期时间的 key 优先移除。 28、说说Redis的缓存预热、缓存雪崩、缓存击穿、缓存穿透的现象及如何防止
参考答案
1.缓存预热
解决的问题缓存预热就是系统上线后提前将相关的缓存数据直接加载到缓存系统。避免在用户请求的时候由于缓存中没有任何数据而并发地全部访问数据库。
怎么解决提前将相关的缓存数据直接加载到缓存系统
2.缓存雪崩
1) 在一个较短的时间内缓存中较多的key过期
2) 恰恰就是在较短的时间内有很多请求访问过期key而未命中让请求到达数据库
3) 数据库同时接收大量的请求而无法及时处理导致数据库崩溃
4) redis得不到数据库的响应无法释放链接导致redis集群崩溃
5) 应用服务器无法及时得到redis的响应同时新的请求不断到来应用服务器崩溃
6)同时重启应用服务、redis服务、数据库服务重启以后海量请求呼啸而至缓存中是空的继续崩溃。
缓存雪崩解决方案
1)对key的过期时间进行分类错峰均匀分布key的过期时间避免大量key在较短时间内集中过期。
2) 超热key永不过期
3)使用mq削峰让呼啸而至的请求排队。用户体验不好
4) 避免mysql慢查询 (超过long_query_time参数设定的时间阈值默认10s就被认为是慢的是需要优化的。慢查询被记录在慢查询日志里。慢查询日志默认是不开启的。如果需要优化SQL语句就可以开启这个功能它可以让你很容易地知道哪些语句是需要优化的。)
3.缓存击穿
1)redis中某一个高热key过期
2) 同时海量请求都在访问这同一个高热key均未命中
3) 海量请求呼啸而至奔向数据库数据库崩溃
缓存击穿解决方案
1)在特殊节日前预先设定阶段性高热key的过期时间
2) 现场调整对自然流量所推出来的新的高热key延长其过期时间或者设置其为永久key
4.缓存穿透
1)redis中出现大量未命中的请求
2) 出现非正常URL的访问这些访问由于没有走正常的应用所以可以故意访问一类不可能存在的key这些key不在缓存中数据库中也没有。
3) 后续出现大量以上请求很可能是懂技术的人在对服务器进行攻击
缓存穿透解决方案
1)缓存null对查询结果为null的数据也进行缓存设定较短的过期时间
2) 白名单策略:采用布隆过滤器布隆过滤器的思想是将所有可能存在的key哈希到一个足够大的 bitmap 中一个一定不存在的数据会被这个 bitmap 拦截掉从而避免了对底层存储系统的查询压力附加 对于空间的利用到达了一种极致 29、说说父项目中dependencyManagement标记的作用
参考答案
Maven的dependencyManagement标签这个标签只负责维护版本号父项目在这里添加了依赖后子项目在写依赖时不需要手动指定版本号了(注意在dependencyManagement标签中加入的依赖后Maven不会立即导入此依赖而是在子项目引用此依赖的时候Maven在会开始导入依赖 所以在子项目引用此依赖时只需要写artifactId和groupId而version则由dependencyManagement帮助你管理
解题思路 dependencyManagement标签主要用在在父项目中声明依赖的版本信息。