mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-08-01 16:28:03 +08:00
Compare commits
7 Commits
d02465ae34
...
f917723d27
Author | SHA1 | Date | |
---|---|---|---|
|
f917723d27 | ||
|
0110397c6d | ||
|
c183e05b5e | ||
|
b3fff4525c | ||
|
1b09d1896a | ||
|
a3e99f7ad9 | ||
|
695a3a0f2c |
@ -6,15 +6,13 @@ star: 2
|
||||
|
||||
<!-- @include: @small-advertisement.snippet.md -->
|
||||
|
||||
截止到今天,我认真维护了接近四年的星球已经有 **2.3w+** 的同学加入了,也算是达成了自己当初的目标。虽然比不上很多大佬,但这于我来说也算是小有成就了,真的很满足了!我确信自己是一个普通人,能做成这些,也不过是在兴趣和运气的加持下赶上了时代而已。
|
||||
|
||||

|
||||
|
||||
在 **2019 年 12 月 29 号**,经过了大概一年左右的犹豫期,我正式确定要开始做一个自己的星球,帮助学习 Java 和准备 Java 面试的同学。一转眼,马上快要四年了。感谢大家一路陪伴,我会信守承诺,继续认真维护这个纯粹的 Java 知识星球,不让信任我的读者失望。
|
||||
在 **2019 年 12 月 29 号**,经过了大概一年左右的犹豫期,我正式确定要开始做一个自己的星球,帮助学习 Java 和准备 Java 面试的同学。一转眼,已经四年多了。感谢大家一路陪伴,我会信守承诺,继续认真维护这个纯粹的 Java 知识星球,不让信任我的读者失望。
|
||||
|
||||

|
||||
|
||||
我应该是最早一批做星球的技术号主,最开始的一两年,纯粹靠爱发电。当初定价非常低(一顿饭钱),加上刚工作的时候比较忙,提供的服务也没有现在这么多。
|
||||
我是比较早一批做星球的技术号主,也是坚持做下来的那一少部人(大部分博主割一波韭菜就不维护星球了)。最开始的一两年,纯粹靠爱发电。当初定价非常低(一顿饭钱),加上刚工作的时候比较忙,提供的服务也没有现在这么多。
|
||||
|
||||
慢慢的价格提上来,星球的收入确实慢慢也上来了。不过,考虑到我的受众主要是学生,定价依然比同类星球低很多。另外,我也没有弄训练营的打算,虽然训练营对于我这个流量来说可以赚到更多钱。
|
||||
|
||||
**我有自己的原则,不割韭菜,用心做内容,真心希望帮助到他人!**
|
||||
|
||||
@ -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 面试手册。
|
||||
|
||||

|
||||
|
||||
@ -84,7 +82,7 @@ JavaGuide 知识星球优质主题汇总传送门:<https://www.yuque.com/snail
|
||||
|
||||

|
||||
|
||||
简单统计了一下,到目前为止,我至少帮助 **6000+** 位球友提供了免费的简历修改服务。
|
||||
简单统计了一下,到目前为止,我至少帮助 **7000+** 位球友提供了免费的简历修改服务。
|
||||
|
||||

|
||||
|
||||
@ -94,7 +92,7 @@ JavaGuide 知识星球优质主题汇总传送门:<https://www.yuque.com/snail
|
||||
|
||||
### 一对一提问
|
||||
|
||||
你可以和我进行一对一免费提问交流,我会很走心地回答你的问题。到目前为止,已经累计回答了 **2000+** 个读者的提问。
|
||||
你可以和我进行一对一免费提问交流,我会很走心地回答你的问题。到目前为止,已经累计回答了 **3000+** 个读者的提问。
|
||||
|
||||

|
||||
|
||||
|
@ -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:
|
||||
|
||||
|
@ -170,7 +170,7 @@ RabbitMQ 中的交换器、交换器类型、队列、绑定、路由键等都
|
||||
|
||||
## 什么是死信队列?如何导致的?
|
||||
|
||||
DLX,全称为 `Dead-Letter-Exchange`,死信交换器,死信邮箱。当消息在一个队列中变成死信 (`dead message`) 之后,它能被重新被发送到另一个交换器中,这个交换器就是 DLX,绑定 DLX 的队列就称之为死信队列。
|
||||
DLX,全称为 `Dead-Letter-Exchange`,死信交换器,死信邮箱。当消息在一个队列中变成死信 (`dead message`) 之后,它能被重新发送到另一个交换器中,这个交换器就是 DLX,绑定 DLX 的队列就称之为死信队列。
|
||||
|
||||
**导致的死信的几种原因**:
|
||||
|
||||
|
@ -891,13 +891,13 @@ RocketMQ 内部主要是使用基于 mmap 实现的零拷贝(其实就是调用
|
||||
|
||||

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

|
||||
|
||||
|
@ -38,7 +38,7 @@ SPI 将服务接口和具体的服务实现分离开来,将服务调用方和
|
||||
|
||||

|
||||
|
||||
一般模块之间都是通过通过接口进行通讯,那我们在服务调用方和服务实现方(也称服务提供者)之间引入一个“接口”。
|
||||
一般模块之间都是通过接口进行通讯,那我们在服务调用方和服务实现方(也称服务提供者)之间引入一个“接口”。
|
||||
|
||||
当实现方提供了接口和实现,我们可以通过调用实现方的接口从而拥有实现方给我们提供的能力,这就是 API ,这种接口和实现都是放在实现方的。
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||

|
||||
|
||||
进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://t.zsxq.com/12uSKgTIm)** 。
|
||||
进入星球之后,记得查看 **[星球使用指南](https://t.zsxq.com/0d18KSarv)** (一定要看!!!) 和 **[星球优质主题汇总](https://t.zsxq.com/12uSKgTIm)**,干货多多!
|
||||
|
||||
**无任何套路,无任何潜在收费项。用心做内容,不割韭菜!**
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
## 星球其他资源
|
||||
|
||||
[知识星球](../about-the-author/zhishixingqiu-two-years.md)除了提供了 **《Java 面试指北》** 、 **《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)、 **《手写 RPC 框架》** 、**《Kafka 常见面试题/知识点总结》** 等多个专属小册,还有 读书活动、学习打卡、简历修改、免费提问、海量 Java 优质面试资源以及各种不定时的福利。
|
||||
[知识星球](../about-the-author/zhishixingqiu-two-years.md)除了提供了 **《Java 面试指北》** 、 **《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)、 **《手写 RPC 框架》** 、**《Kafka 常见面试题/知识点总结》** 等多个专属小册,还有读书活动、学习打卡、简历修改、免费提问、海量 Java 优质面试资源以及各种不定时的福利。
|
||||
|
||||

|
||||
|
||||
|
@ -20,6 +20,8 @@ tag:
|
||||
|
||||

|
||||
|
||||
哈希算法的是不可逆的,你无法通过哈希之后的值再得到原值。
|
||||
|
||||
哈希值的作用是可以用来验证数据的完整性和一致性。
|
||||
|
||||
举两个实际的例子:
|
||||
|
@ -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 的内容可以查看这篇文章 )。
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user