1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-08-01 16:28:03 +08:00

Compare commits

...

7 Commits

Author SHA1 Message Date
Guide
f917723d27
Merge pull request #2363 from ustargaze/main
Update rocketmq-questions.md
2024-04-10 23:18:05 +08:00
u
0110397c6d
Update rocketmq-questions.md
修改两处拼写错误,RockeMQ -> RocketMQ.
2024-04-10 17:51:23 +08:00
Guide
c183e05b5e [docs update]一些笔误修改 2024-04-10 00:20:28 +08:00
Guide
b3fff4525c
Merge pull request #2361 from cybzzz/main
typo: docker-intro.md
2024-04-10 00:17:52 +08:00
cybzzz
1b09d1896a typo: docker-intro.md 2024-04-09 23:34:56 +08:00
Guide
a3e99f7ad9
Merge pull request #2357 from welitis/patch-1
Update spi.md 错别字
2024-04-08 20:13:18 +08:00
王希知
695a3a0f2c
Update spi.md
修改错别字
2024-04-08 11:19:24 +08:00
9 changed files with 19 additions and 19 deletions

View File

@ -6,15 +6,13 @@ star: 2
<!-- @include: @small-advertisement.snippet.md -->
截止到今天,我认真维护了接近四年的星球已经有 **2.3w+** 的同学加入了,也算是达成了自己当初的目标。虽然比不上很多大佬,但这于我来说也算是小有成就了,真的很满足了!我确信自己是一个普通人,能做成这些,也不过是在兴趣和运气的加持下赶上了时代而已。
![](https://oss.javaguide.cn/xingqiu/640.png)
**2019 年 12 月 29 号**,经过了大概一年左右的犹豫期,我正式确定要开始做一个自己的星球,帮助学习 Java 和准备 Java 面试的同学。一转眼,马上快要四年了。感谢大家一路陪伴,我会信守承诺,继续认真维护这个纯粹的 Java 知识星球,不让信任我的读者失望。
**2019 年 12 月 29 号**,经过了大概一年左右的犹豫期,我正式确定要开始做一个自己的星球,帮助学习 Java 和准备 Java 面试的同学。一转眼,已经四年多了。感谢大家一路陪伴,我会信守承诺,继续认真维护这个纯粹的 Java 知识星球,不让信任我的读者失望。
![](https://oss.javaguide.cn/xingqiu/640-20230727145252757.png)
我应该是最早一批做星球的技术号主,最开始的一两年,纯粹靠爱发电。当初定价非常低(一顿饭钱),加上刚工作的时候比较忙,提供的服务也没有现在这么多。
我是比较早一批做星球的技术号主,也是坚持做下来的那一少部人(大部分博主割一波韭菜就不维护星球了)。最开始的一两年,纯粹靠爱发电。当初定价非常低(一顿饭钱),加上刚工作的时候比较忙,提供的服务也没有现在这么多。
慢慢的价格提上来,星球的收入确实慢慢也上来了。不过,考虑到我的受众主要是学生,定价依然比同类星球低很多。另外,我也没有弄训练营的打算,虽然训练营对于我这个流量来说可以赚到更多钱。
**我有自己的原则,不割韭菜,用心做内容,真心希望帮助到他人!**
@ -30,7 +28,7 @@ star: 2
1. 6 个高质量的专栏永久阅读,内容涵盖面试,源码解析,项目实战等内容!
2. 多本原创 PDF 版本面试手册免费领取。
3. 免费的简历修改服务(已经累计帮助 5000+ 位球友修改简历)。
3. 免费的简历修改服务(已经累计帮助 7000+ 位球友修改简历)。
4. 一对一免费提问交流(专属建议,走心回答)。
5. 专属求职指南和建议,让你少走弯路,效率翻倍!
6. 海量 Java 优质面试资源分享。
@ -58,7 +56,7 @@ star: 2
### PDF 面试手册
免费赠送多本优质 PDF 面试手册。
进入星球就免费赠送多本优质 PDF 面试手册。
![星球 PDF 面试手册](https://oss.javaguide.cn/xingqiu/image-20220723120918434.png)
@ -84,7 +82,7 @@ JavaGuide 知识星球优质主题汇总传送门:<https://www.yuque.com/snail
![](https://oss.javaguide.cn/xingqiu/image-20220304123156348.png)
简单统计了一下,到目前为止,我至少帮助 **6000+** 位球友提供了免费的简历修改服务。
简单统计了一下,到目前为止,我至少帮助 **7000+** 位球友提供了免费的简历修改服务。
![](https://oss.javaguide.cn/xingqiu/%E7%AE%80%E5%8E%86%E4%BF%AE%E6%94%B92.jpg)
@ -94,7 +92,7 @@ JavaGuide 知识星球优质主题汇总传送门:<https://www.yuque.com/snail
### 一对一提问
你可以和我进行一对一免费提问交流,我会很走心地回答你的问题。到目前为止,已经累计回答了 **2000+** 个读者的提问。
你可以和我进行一对一免费提问交流,我会很走心地回答你的问题。到目前为止,已经累计回答了 **3000+** 个读者的提问。
![](https://oss.javaguide.cn/xingqiu/wecom-temp-151578-45e66ccd48b3b5d3baa8673d33c7b664.jpg)

View File

@ -149,7 +149,7 @@ WiredTiger maintains a table's data in memory using a data structure called a B-
此外WiredTiger 还支持 [LSM(Log Structured Merge)](https://source.wiredtiger.com/3.1.0/lsm.html) 树作为存储结构MongoDB 在使用 WiredTiger 作为存储引擎时,默认使用的是 B+ 树。
如果想要了解 MongoDB 使用 B 树的原因,可以看看这篇文章:[为什么 MongoDB 使用 B 树?](https://mp.weixin.qq.com/s/mMWdpbYRiT6LQcdaj4hgXQ)。
如果想要了解 MongoDB 使用 B+ 树的原因,可以看看这篇文章:[【驳斥八股文系列】别瞎分析了MongoDB 使用的是 B+ 树,不是你们以为的 B 树](https://zhuanlan.zhihu.com/p/519658576)。
使用 B+ 树时WiredTiger 以 **page** 为基本单位往磁盘读写数据。B+ 树的每个节点为一个 page共有三种类型的 page

View File

@ -170,7 +170,7 @@ RabbitMQ 中的交换器、交换器类型、队列、绑定、路由键等都
## 什么是死信队列?如何导致的?
DLX全称为 `Dead-Letter-Exchange`,死信交换器,死信邮箱。当消息在一个队列中变成死信 (`dead message`) 之后,它能被重新发送到另一个交换器中,这个交换器就是 DLX绑定 DLX 的队列就称之为死信队列。
DLX全称为 `Dead-Letter-Exchange`,死信交换器,死信邮箱。当消息在一个队列中变成死信 (`dead message`) 之后,它能被重新发送到另一个交换器中,这个交换器就是 DLX绑定 DLX 的队列就称之为死信队列。
**导致的死信的几种原因**

View File

@ -891,13 +891,13 @@ RocketMQ 内部主要是使用基于 mmap 实现的零拷贝(其实就是调用
![](https://oss.javaguide.cn/github/javaguide/high-performance/message-queue/16ef3884c02acc72.png)
`RocketMQ` 采用的是 **混合型的存储结构** ,即为 `Broker` 单个实例下所有的队列共用一个日志数据文件来存储消息。有意思的是在同样高并发的 `Kafka` 中会为每个 `Topic` 分配一个存储文件。这就有点类似于我们有一大堆书需要装上书架,`RockeMQ` 是不分书的种类直接成批的塞上去的,而 `Kafka` 是将书本放入指定的分类区域的。
`RocketMQ` 采用的是 **混合型的存储结构** ,即为 `Broker` 单个实例下所有的队列共用一个日志数据文件来存储消息。有意思的是在同样高并发的 `Kafka` 中会为每个 `Topic` 分配一个存储文件。这就有点类似于我们有一大堆书需要装上书架,`RocketMQ` 是不分书的种类直接成批的塞上去的,而 `Kafka` 是将书本放入指定的分类区域的。
`RocketMQ` 为什么要这么做呢?原因是 **提高数据的写入效率** ,不分 `Topic` 意味着我们有更大的几率获取 **成批** 的消息进行数据写入,但也会带来一个麻烦就是读取消息的时候需要遍历整个大文件,这是非常耗时的。
所以,在 `RocketMQ` 中又使用了 `ConsumeQueue` 作为每个队列的索引文件来 **提升读取消息的效率**。我们可以直接根据队列的消息序号,计算出索引的全局位置(索引序号\*索引固定⻓度 20然后直接读取这条索引再根据索引中记录的消息的全局位置找到消息。
讲到这里,你可能对 `RockeMQ` 的存储架构还有些模糊,没事,我们结合着图来理解一下。
讲到这里,你可能对 `RocketMQ` 的存储架构还有些模糊,没事,我们结合着图来理解一下。
![](https://oss.javaguide.cn/github/javaguide/high-performance/message-queue/16ef388763c25c62.jpg)

View File

@ -38,7 +38,7 @@ SPI 将服务接口和具体的服务实现分离开来,将服务调用方和
![](https://oss.javaguide.cn/github/javaguide/java/basis/spi/1ebd1df862c34880bc26b9d494535b3dtplv-k3u1fbpfcp-watermark.png)
一般模块之间都是通过通过接口进行通讯,那我们在服务调用方和服务实现方(也称服务提供者)之间引入一个“接口”。
一般模块之间都是通过接口进行通讯,那我们在服务调用方和服务实现方(也称服务提供者)之间引入一个“接口”。
当实现方提供了接口和实现,我们可以通过调用实现方的接口从而拥有实现方给我们提供的能力,这就是 API ,这种接口和实现都是放在实现方的。

View File

@ -18,7 +18,7 @@
![知识星球30元优惠卷](https://oss.javaguide.cn/xingqiu/xingqiuyouhuijuan-30.jpg)
进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://t.zsxq.com/12uSKgTIm)**
进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://t.zsxq.com/12uSKgTIm)**,干货多多!
**无任何套路,无任何潜在收费项。用心做内容,不割韭菜!**

View File

@ -20,6 +20,8 @@ tag:
![哈希算法效果演示](https://oss.javaguide.cn/github/javaguide/system-design/security/encryption-algorithms/hash-function-effect-demonstration.png)
哈希算法的是不可逆的,你无法通过哈希之后的值再得到原值。
哈希值的作用是可以用来验证数据的完整性和一致性。
举两个实际的例子:

View File

@ -273,9 +273,9 @@ LXC 技术主要是借助 Linux 内核中提供的 CGroup 功能和 namespace
- **namespace 是 Linux 内核用来隔离内核资源的方式。** 通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前 namespace 里的进程,对其他 namespace 中的进程没有影响。
(以上关于 namespace 介绍内容来自<https://www.cnblogs.com/sparkdev/p/9365405.html> ,更多关于 namespace 的内容可以查看这篇文章 )。
(以上关于 namespace 介绍内容来自<https://www.cnblogs.com/sparkdev/p/9365405.html> ,更多关于 namespace 的内容可以查看这篇文章 )。
- **CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物资源 (如 cpu memory i/o 等等) 的机制。**
- **CGroup 是 Control Groups 的缩写,是 Linux 内核提供的一种可以限制、记录、隔离进程组 (process groups) 所使用的物资源 (如 cpu memory i/o 等等) 的机制。**
(以上关于 CGroup 介绍内容来自 <https://www.ibm.com/developerworks/cn/linux/1506_cgroup/index.html> ,更多关于 CGroup 的内容可以查看这篇文章 )。