Skip to content

Commit c40ec4c

Browse files
committed
[docs update]一些内容的简单完善
1 parent 743d9c0 commit c40ec4c

File tree

8 files changed

+35
-13
lines changed

8 files changed

+35
-13
lines changed

docs/.vuepress/sidebar/index.ts

+1
Original file line numberDiff line numberDiff line change
@@ -582,6 +582,7 @@ export default sidebar({
582582
collapsible: true,
583583
children: [
584584
"high-availability-system-design",
585+
"idempotency",
585586
"redundancy",
586587
"limit-request",
587588
"fallback-and-circuit-breaker",

docs/.vuepress/theme.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ export default hopeTheme({
1818

1919
repo: "https://github.com/Snailclimb/JavaGuide",
2020
docsDir: "docs",
21-
// 纯净模式:https://theme-hope.vuejs.press/zh/guide/interface/pure.html
2221
pure: true,
22+
focus: false,
2323
breadcrumb: false,
2424
navbar,
2525
sidebar,

docs/database/redis/redis-cluster.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ tag:
77

88
**Redis 集群** 相关的面试题为我的 [知识星球](../../about-the-author/zhishixingqiu-two-years.md)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](../../zhuanlan/java-mian-shi-zhi-bei.md)中。
99

10-
![](https://oss.javaguide.cn/github/javaguide/database/redis/redis-cluster-javamianshizhibei.png)
10+
![](https://oss.javaguide.cn/xingqiu/mianshizhibei-database.png)
1111

1212
<!-- @include: @planet.snippet.md -->
1313

docs/distributed-system/distributed-id.md

+10-6
Original file line numberDiff line numberDiff line change
@@ -228,12 +228,16 @@ UUID.randomUUID()
228228

229229
我们这里重点关注一下这个 Version(版本),不同的版本对应的 UUID 的生成规则是不同的。
230230

231-
5 种不同的 Version(版本)值分别对应的含义(参考[维基百科对于 UUID 的介绍](https://zh.wikipedia.org/wiki/通用唯一识别码)):
231+
8 种不同的 Version(版本)值分别对应的含义(参考[维基百科对于 UUID 的介绍](https://zh.wikipedia.org/wiki/通用唯一识别码)):
232232

233-
- **版本 1** : UUID 是根据时间和节点 ID(通常是 MAC 地址)生成;
234-
- **版本 2** : UUID 是根据标识符(通常是组或用户 ID)、时间和节点 ID 生成;
235-
- **版本 3、版本 5** : 版本 5 - 确定性 UUID 通过散列(hashing)名字空间(namespace)标识符和名称生成;
236-
- **版本 4** : UUID 使用[随机性](https://zh.wikipedia.org/wiki/随机性)[伪随机性](https://zh.wikipedia.org/wiki/伪随机性)生成。
233+
- **版本 1 (基于时间和节点 ID)** : 基于时间戳(通常是当前时间)和节点 ID(通常为设备的 MAC 地址)生成。当包含 MAC 地址时,可以保证全球唯一性,但也因此存在隐私泄露的风险。
234+
- **版本 2 (基于标识符、时间和节点 ID)** : 与版本 1 类似,也基于时间和节点 ID,但额外包含了本地标识符(例如用户 ID 或组 ID)。
235+
- **版本 3 (基于命名空间和名称的 MD5 哈希)**:使用 MD5 哈希算法,将命名空间标识符(一个 UUID)和名称字符串组合计算得到。相同的命名空间和名称总是生成相同的 UUID(**确定性生成**)。
236+
- **版本 4 (基于随机数)**:几乎完全基于随机数生成,通常使用伪随机数生成器(PRNG)或加密安全随机数生成器(CSPRNG)来生成。 虽然理论上存在碰撞的可能性,但理论上碰撞概率极低(2^122 的可能性),可以认为在实际应用中是唯一的。
237+
- **版本 5 (基于命名空间和名称的 SHA-1 哈希)**:类似于版本 3,但使用 SHA-1 哈希算法。
238+
- **版本 6 (基于时间戳、计数器和节点 ID)**:改进了版本 1,将时间戳放在最高有效位(Most Significant Bit,MSB),使得 UUID 可以直接按时间排序。
239+
- **版本 7 (基于时间戳和随机数据)**:基于 Unix 时间戳和随机数据生成。 由于时间戳位于最高有效位,因此支持按时间排序。并且,不依赖 MAC 地址或节点 ID,避免了隐私问题。
240+
- **版本 8 (自定义)**:允许用户根据自己的需求定义 UUID 的生成方式。其结构和内容由用户决定,提供更大的灵活性。
237241

238242
下面是 Version 1 版本下生成的 UUID 的示例:
239243

@@ -261,7 +265,7 @@ int version = uuid.version();// 4
261265

262266
最后,我们再简单分析一下 **UUID 的优缺点** (面试的时候可能会被问到的哦!) :
263267

264-
- **优点**生成速度比较快、简单易用
268+
- **优点**生成速度通常比较快、简单易用
265269
- **缺点**:存储消耗空间大(32 个字符串,128 位)、 不安全(基于 MAC 地址生成 UUID 的算法会造成 MAC 地址泄露)、无序(非自增)、没有具体业务含义、需要解决重复 ID 问题(当机器时间不对的情况下,可能导致会产生重复 ID)
266270

267271
#### Snowflake(雪花算法)

docs/high-availability/fallback-and-circuit-breaker.md

+2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ icon: circuit
66

77
**降级&熔断** 相关的面试题为我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html)中。
88

9+
![](https://oss.javaguide.cn/xingqiu/mianshizhibei-gaobingfa.png)
10+
911
<!-- @include: @planet.snippet.md -->
1012

1113
<!-- @include: @article-footer.snippet.md -->

docs/high-availability/idempotency.md

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
title: 接口幂等方案总结(付费)
3+
category: 高可用
4+
icon: security-fill
5+
---
6+
7+
**接口幂等** 相关的面试题为我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html)中。
8+
9+
![](https://oss.javaguide.cn/xingqiu/mianshizhibei-gaobingfa.png)
10+
11+
<!-- @include: @planet.snippet.md -->
12+
13+
<!-- @include: @article-footer.snippet.md -->

docs/java/concurrent/jmm.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Java 源代码会经历 **编译器优化重排 —> 指令并行重排 —> 内
6767

6868
- 对于处理器,通过插入内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)的方式来禁止特定类型的处理器重排序。
6969

70-
> 内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)是一种 CPU 指令,用来禁止处理器指令发生重排序(像屏障一样),从而保障指令执行的有序性。另外,为了达到屏障的效果,它也会使处理器写入、读取值之前,将主内存的值写入高速缓存,清空无效队列,从而保障变量的可见性。
70+
> 内存屏障(Memory Barrier,或有时叫做内存栅栏,Memory Fence)是一种 CPU 指令,用来禁止处理器指令发生重排序(像屏障一样),从而保障指令执行的有序性。另外,为了达到屏障的效果,它会在处理器写入值时,强制将写缓冲区中的数据刷新到主内存;在读取值之前,使处理器本地缓存中的相关数据失效,强制从主内存中加载最新值,从而保障变量的可见性。
7171
7272
## JMM(Java Memory Model)
7373

docs/open-source-project/tool-library.md

+6-4
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,12 @@ icon: codelibrary-fill
3939

4040
### PDF
4141

42-
- [x-easypdf](https://gitee.com/dromara/x-easypdf):一个用搭积木的方式构建 PDF 的框架(基于 pdfbox/fop),支持 PDF 导出和编辑。
43-
- [pdfbox](https://github.com/apache/pdfbox) :用于处理 PDF 文档的开放源码 Java 工具。该项目允许创建新的 PDF 文档、对现有文档进行操作以及从文档中提取内容。PDFBox 还包括几个命令行实用程序。PDFBox 是在 Apache 2.0 版许可下发布的。
44-
- [OpenPDF](https://github.com/LibrePDF/OpenPDF):OpenPDF 是一个免费的 Java 库,用于使用 LGPL 和 MPL 开源许可创建和编辑 PDF 文件。OpenPDF 基于 iText 的一个分支。
45-
- [itext7](https://github.com/itext/itext7):一个用于创建、编辑和增强 PDF 文档的 Java 库。
42+
对于简单的 PDF 创建需求,OpenPDF 是一个不错的选择,它开源免费,API 简单易用。对于需要解析、转换和提取文本等操作的复杂场景,可以选择 Apache PDFBox。当然了,复杂场景如果不介意 LGPL 许可也可以选择 iText。
43+
44+
- [x-easypdf](https://gitee.com/dromara/x-easypdf):一个用搭积木的方式构建 PDF 的框架(基于 pdfbox/fop),支持 PDF 导出和编辑,适合简单的 PDF 文档生成场景。
45+
- [iText](https://github.com/itext/itext7):一个用于创建、编辑和增强 PDF 文档的 Java 库。iText 7 社区版采用 AGPL 许可证,如果你的项目是闭源商业项目,需要购买商业许可证。 iText 5 仍然是 LGPL 许可,可以免费用于商业用途,但已经停止维护。
46+
- [OpenPDF](https://github.com/LibrePDF/OpenPDF):完全开源免费 (LGPL/MPL 双重许可),基于 iText 的一个分支,可以作为 iText 的替代品,简单易用,但功能相比于 iText 更少一些(对于大多数场景已经足够)。
47+
- [Apache PDFBox](https://github.com/apache/pdfbox) :完全开源免费 (Apache 许可证),功能强大,支持 PDF 的创建、解析、转换和提取文本等。不过,由于其功能过于丰富,因此 API 设计相对复杂,学习难度会大一些。
4648
- [FOP](https://xmlgraphics.apache.org/fop/) : Apache FOP 用于将 XSL-FO(Extensible Stylesheet Language Formatting Objects)格式化对象转换为多种输出格式,最常见的是 PDF。
4749

4850
## 图片处理

0 commit comments

Comments
 (0)