File tree Expand file tree Collapse file tree 8 files changed +311
-80
lines changed
Expand file tree Collapse file tree 8 files changed +311
-80
lines changed Original file line number Diff line number Diff line change 152152| Spring | 「 直击面试」—— Spring高频面试题 |
153153| 网络 | [ 「 直击面试」—— 搞定计算机网络] ( /docs/network/Network-FAQ.md ) |
154154| 基础 | [ 「 直击面试」—— 搞定 Java 集合] ( /docs/java/Collections/Collections-FAQ.md ) |
155+ | MySQL | [ 「 直击面试」—— MySQL三文字总结+面试100问] ( https://mp.weixin.qq.com/s/MCFHNOQnTtJ6MGVjM3DP4A ) |
155156
156157
157158
Original file line number Diff line number Diff line change 1- MySQL 三万字精华总结 + 面试100 问,吊打面试官绰绰有余(不收藏算我渣)
2-
31![ ] ( https://imgkr.cn-bj.ufileos.com/9e22c4b4-0db5-4f4f-9636-974875d4018f.jpg )
42
53> 写在之前:不建议那种上来就是各种面试题罗列,然后背书式的去记忆,对技术的提升帮助很小,对正经面试也没什么帮助,有点东西的面试官深挖下就懵逼了。
Original file line number Diff line number Diff line change @@ -305,4 +305,9 @@ public class JedisTest {
305305
306306### redis的所有指令
307307
308- [ 各指令介绍] ( https://github.com/antirez/redis-doc/tree/617a8109020fa299efb543277c1fea3915652509/commands )
308+ [ 各指令介绍] ( https://github.com/antirez/redis-doc/tree/617a8109020fa299efb543277c1fea3915652509/commands )
309+
310+
311+
312+
313+
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change @@ -194,7 +194,7 @@ public Object getObject(Object key) {
194194
195195弱引用需要用` java.lang.ref.WeakReference ` 类来实现,它比软引用的生存期更短。
196196
197- 对于只有软引用的对象来说 ,只要垃圾回收机制一运行,不管 JVM 的内存空间是否足够,都会回收该对象占用的内存。
197+ 对于只有弱引用的对象来说 ,只要垃圾回收机制一运行,不管 JVM 的内存空间是否足够,都会回收该对象占用的内存。
198198
199199** coding~ **
200200
Load Diff Large diffs are not rendered by default.
Original file line number Diff line number Diff line change 1+ ### 为什么使用MQ?MQ的优点
2+
3+ - 异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。
4+ - 应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。
5+ - 流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请求。
6+ - 日志处理 - 解决大量日志传输。
7+ - 消息通讯 - 消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。比如实现点对点消息队列,或者聊天室等
8+
9+
10+
11+ ### Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?
12+
13+ | | RabbitMQ | ActiveMQ | RocketMQ | Kafka |
14+ | ------------- | ----------------------------------------------- | ------------------------------------------- | ----------------------------------------------------- | --------------------------------------------------------- |
15+ | 所属社区/公司 | Rabbit | Apache | Ali | Apache |
16+ | 开发语言 | Erlang | Java | Java | Scala&Java |
17+ | 多语言支持 | 语言无关 | 支持,Java优先 | Java | 支持,Java优先 |
18+ | 消息推拉模式 | 多协议,Pull/Push均支持 | 多协议,Pull/Push均支持 | 多协议,Pull/Push均支持 | Pull |
19+ | HA | master/slave模式,master提供服务,slave仅作备份 | 基于zookeeper+levelDB的master-slave实现方式 | 支持多master模式、多master多slave模式、异步复制模式、 | 支持replica机制。leader宕掉后,备份自动顶替,并重选leader |
20+ | 事务 | 不支持 | 支持 | 支持 | 不支持,可通过Low Level API保证仅消费一次 |
21+ | 集群 | 支持 | 支持 | 支持 | 支持 |
22+ | 负载均衡 | 支持 | 支持 | 支持 | 支持 |
23+
24+
25+
26+ ### MQ 有哪些常见问题?如何解决这些问题?
27+
28+ MQ 的常见问题有:
29+
30+ 1 . 消息的顺序问题
31+ 2 . 消息的重复问题
Original file line number Diff line number Diff line change 11# 浅谈消息队列及常见的消息中间件
22
3- # 前言
3+ > Reference : < https://juejin.im/post/5b41fe36e51d45191252e79e#heading-2 >
4+
5+ ## 前言
46
57** 消息队列** 已经逐渐成为企业应用系统 ** 内部通信** 的核心手段。它具有 ** 低耦合** 、** 可靠投递** 、** 广播** 、** 流量控制** 、** 最终一致性** 等一系列功能。
68
1012
1113
1214
13- # 正文
14-
1515## 1. 消息队列概述
1616
1717** 消息队列** 是指利用 ** 高效可靠** 的 ** 消息传递机制** 进行与平台无关的 ** 数据交流** ,并基于 ** 数据通信** 来进行分布式系统的集成。
4949
5050### 4.1. 点对点模型
5151
52- ** 点对点模型** 用于 ** 消息生产者** 和 ** 消息消费者** 之间 ** 点到点** 的通信。消息生产者将消息发送到由某个名字标识的特定消费者。这个名字实际上对于消费服务中的一个 ** 队列** (` Queue ` ),在消息传递给消费者之前它被 ** 存储** 在这个队列中。** 队列消息** 可以放在 ** 内存** 中也可以 ** 持久化** ,以保证在消息服务出现故障时仍然能够传递消息。
52+ ** 点对点模型** 用于 ** 消息生产者** 和 ** 消息消费者** 之间 ** 点到点** 的通信。消息生产者将消息发送到由某个名字标识的特定消费者。这个名字实际上对应消费服务中的一个 ** 队列** (` Queue ` ),在消息传递给消费者之前它被 ** 存储** 在这个队列中。** 队列消息** 可以放在 ** 内存** 中也可以 ** 持久化** ,以保证在消息服务出现故障时仍然能够传递消息。
5353
5454传统的点对点消息中间件通常由 ** 消息队列服务** 、** 消息传递服务** 、** 消息队列** 和 ** 消息应用程序接口** ` API ` 组成,其典型的结构如下图所示。
5555
168168
169169### 6.3. 两种类型的区别
170170
171- ![ img] (E:\gitBlog\Technical-Learning\contents\Message Queue\ message-push-pull.png)
171+ ![ img] ( ../_images/message-queue/ message-push-pull.png)
172172
173173## 7. 消息队列技术对比
174174
255255
256256### 7.3. RocketMQ
257257
258- ` RocketMQ ` 出自 ** 阿里** 的开源产品,用 ` Java ` 语言实现,在设计时参考了 ` Kafka ` ,并做出了自己的一些改进,** 消息可靠性上** 比 ` Kafka ` 更好。` RocketMQ ` 在阿里内部被广泛应用在 ** 订单** ,** 交易** ,** 充值** ,** 流计算** ,** 消息推送** ,** 日志流式处理** ,` binglog ` ** 分发** 等场景。
258+ ` RocketMQ ` 出自 ** 阿里** 的开源产品,用 ` Java ` 语言实现,在设计时参考了 ` Kafka ` ,并做出了自己的一些改进,** 消息可靠性上** 比 ` Kafka ` 更好。` RocketMQ ` 在阿里内部被广泛应用在 ** 订单** ,** 交易** ,** 充值** ,** 流计算** ,** 消息推送** ,** 日志流式处理** ,` binglog ` ** 分发** 等场景。
259259
260260#### (a) 主要特性
261261
358358
359359` Kafka ` 在于 ** 分布式架构** ,` RabbitMQ ` 基于 ` AMQP ` ** 协议** 来实现,` RocketMQ ` 的思路来源于 ` Kafka ` ,改成了 ** 主从结构** ,在 ** 事务性** 和 ** 可靠性** 方面做了优化。广泛来说,** 电商** 、** 金融** 等对 ** 事务一致性** 要求很高的,可以考虑 ` RabbitMQ ` 和 ` RocketMQ ` ,对 ** 性能要求高** 的可考虑 ` Kafka ` 。
360360
361-
362-
363- Reference : < https://juejin.im/post/5b41fe36e51d45191252e79e#heading-2 >
364-
365361
366362
367363
You can’t perform that action at this time.
0 commit comments