5.17阿里云测开一面
上一次java研发二面挂了,被测开捞了,发发面经攒人品。
5.20已约下午二面,许愿一切顺利#我的失利项目复盘##不给转正的实习,你还去吗#
1.自我介绍
2.项目来源
3.技术选型,为什么选Redis作为内存
4.为什么选RabbitMQ
5.如何保证消息的有序消费,不重复消费,不被其他消费者消费
6.项目的读提交和可重复读如何实现
7.Spring和SpringBoot的区别
8.淘宝秒杀如何测试
9.阿里云OSS如何测试(我提到了OSS所以问
10.有无微服务相关经验
11.手撕:100元红包,分给十个人,要求:手气王的红包金额不能超过总金额的90%
12.实习时间,反问
5.20已约下午二面,许愿一切顺利#我的失利项目复盘##不给转正的实习,你还去吗#
1.自我介绍
2.项目来源
3.技术选型,为什么选Redis作为内存
4.为什么选RabbitMQ
5.如何保证消息的有序消费,不重复消费,不被其他消费者消费
6.项目的读提交和可重复读如何实现
7.Spring和SpringBoot的区别
8.淘宝秒杀如何测试
9.阿里云OSS如何测试(我提到了OSS所以问
10.有无微服务相关经验
11.手撕:100元红包,分给十个人,要求:手气王的红包金额不能超过总金额的90%
12.实习时间,反问
全部评论
选择RabbitMQ作为消息中间件的原因主要包括以下几点:
1. **AMQP标准支持**:RabbitMQ是少数几个实现了Advanced Message Queuing Protocol (AMQP)标准的消息代理之一。这意味着它遵循一个公开的标准,提供了与其他兼容AMQP系统的互操作性。
2. **可靠性**:RabbitMQ支持消息的持久化,可以在服务器宕机或重启后保证消息不丢失,这对于需要高度稳定性的系统至关重要。
3. **高并发与高性能**:由于使用Erlang语言编写,RabbitMQ能够充分利用Erlang在并发处理和故障恢复方面的优势,天生适合构建高并发和高可用的系统。
4. **丰富的消息模式**:支持多种消息收发模式,如简单队列模式、工作队列模式、路由模式、直接模式、主题模式等,以及延迟队列和惰性队列,适应不同的业务场景需求。
5. **多语言支持**:RabbitMQ提供了广泛的客户端库,支持Java、Python、Ruby、.NET、PHP等多种编程语言,方便不同技术栈的系统集成。
6. **集群部署简易**:利用Erlang的分布式特性,RabbitMQ可以轻松部署成集群模式,实现负载均衡和故障切换,提高系统的可扩展性和容错能力。
7. **社区活跃与文档完善**:拥有活跃的开发者社区和丰富的文档资源,意味着遇到问题时容易找到解决方案,同时也有持续的更新和改进。
8. **插件系统**:RabbitMQ支持通过安装插件来扩展功能,比如后台管理和监控、额外的协议支持(如JMS)等,增加了灵活性。
9. **解耦与异步处理**:通过消息队列,生产者和消费者解耦,允许独立扩展和维护,同时支持异步处理,提高系统响应速度和吞吐量。
10. **流量削峰**:可以作为缓冲区帮助平滑系统峰值负载,防止因瞬时高流量导致的服务崩溃,通过消息队列暂存请求,逐步处理。
综上所述,RabbitMQ凭借其标准支持、可靠性、高性能、灵活性以及强大的社区支持,成为了许多项目和企业中消息队列服务的首选。
```python
import random
def distribute_red_packets(total, num):
max_amount = total * 0.9
red_packets = [0] * num
for i in range(num - 1):
amount = random.uniform(0, max_amount)
red_packets[i] = round(amount, 2)
total -= amount
red_packets[num - 1] = round(total, 2)
return red_packets
total = 100
num = 10
red_packets = distribute_red_packets(total, num)
for i, amount in enumerate(red_packets):
print(f"Person {i+1}: {amount}元")
```
相关推荐
点赞 评论 收藏
分享
奇瑞 CAD建模工程师 13Kx13.5 硕士985
点赞 评论 收藏
分享