From c0765af4b24d157abc64176659c9f7b0b5e3ba62 Mon Sep 17 00:00:00 2001 From: Guide Date: Sun, 11 Jun 2023 11:12:22 +0800 Subject: [PATCH] =?UTF-8?q?[docs=20update]=E5=AE=8C=E5=96=84cdn=E9=83=A8?= =?UTF-8?q?=E5=88=86=E7=9A=84=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/high-performance/cdn.md | 15 ++++++++++++--- docs/high-performance/images/cdn/cdn-101.drawio | 1 - .../images/cdn/cdn-overview.drawio | 1 - .../20-bad-habits-of-bad-programmers.md | 4 ++-- ...en-tips-for-becoming-an-advanced-programmer.md | 4 +++- .../ten-years-of-dachang-growth-road.md | 4 +++- ...-growth-strategy-of-the-technological-giant.md | 2 +- ...ology-and-business-after-five-years-of-work.md | 2 +- docs/home.md | 2 +- .../copyonwritearraylist-source-code.md | 2 +- 10 files changed, 24 insertions(+), 13 deletions(-) delete mode 100644 docs/high-performance/images/cdn/cdn-101.drawio delete mode 100644 docs/high-performance/images/cdn/cdn-overview.drawio diff --git a/docs/high-performance/cdn.md b/docs/high-performance/cdn.md index 17c6d81b..c5ffc53b 100644 --- a/docs/high-performance/cdn.md +++ b/docs/high-performance/cdn.md @@ -52,13 +52,22 @@ head: ### 静态资源是如何被缓存到 CDN 节点中的? -你可以通过预热的方式将源站的资源同步到 CDN 的节点中。这样的话,用户首次请求资源可以直接从 CDN 节点中取,无需回源。这样可以降低源站压力,提升用户体验。 +你可以通过 **预热** 的方式将源站的资源同步到 CDN 的节点中。这样的话,用户首次请求资源可以直接从 CDN 节点中取,无需回源。这样可以降低源站压力,提升用户体验。 如果不预热的话,你访问的资源可能不在 CDN 节点中,这个时候 CDN 节点将请求源站获取资源,这个过程是大家经常说的 **回源**。 -**命中率** 和 **回源率** 是衡量 CDN 服务质量两个重要指标。命中率越高越好,回源率越低越好。 +> - 回源:当 CDN 节点上没有用户请求的资源或该资源的缓存已经过期时,CDN 节点需要从原始服务器获取最新的资源内容,这个过程就是回源。当用户请求发生回源的话,会导致该请求的响应速度比未使用 CDN 还慢,因为相比于未使用 CDN 还多了一层 CDN 的调用流程。 +> - 预热:预热是指在 CDN 上提前将内容缓存到 CDN 节点上。这样当用户在请求这些资源时,能够快速地从最近的 CDN 节点获取到而不需要回源,进而减少了对源站的访问压力,提高了访问速度。 -如果资源有更新的话,你也可以对其 **刷新** ,删除 CDN 节点上缓存的资源,当用户访问对应的资源时直接回源获取最新的资源,并重新缓存。 +![CDN 回源](https://oss.javaguide.cn/github/javaguide/high-performance/cdn/cdn-back-to-source.png) + +如果资源有更新的话,你也可以对其 **刷新** ,删除 CDN 节点上缓存的旧资源,并强制 CDN 节点回源站获取最新资源。 + +几乎所有云厂商提供的 CDN 服务都具备缓存的刷新和预热功能(下图是阿里云 CDN 服务提供的相应功能): + +![CDN 缓存的刷新和预热](https://oss.javaguide.cn/github/javaguide/high-performance/cdn/cdn-refresh-warm-up.png) + +**命中率** 和 **回源率** 是衡量 CDN 服务质量两个重要指标。命中率越高越好,回源率越低越好。 ### 如何找到最合适的 CDN 节点? diff --git a/docs/high-performance/images/cdn/cdn-101.drawio b/docs/high-performance/images/cdn/cdn-101.drawio deleted file mode 100644 index 87e4159b..00000000 --- a/docs/high-performance/images/cdn/cdn-101.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/high-performance/images/cdn/cdn-overview.drawio b/docs/high-performance/images/cdn/cdn-overview.drawio deleted file mode 100644 index 4cf6f698..00000000 --- a/docs/high-performance/images/cdn/cdn-overview.drawio +++ /dev/null @@ -1 +0,0 @@ -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 \ No newline at end of file diff --git a/docs/high-quality-technical-articles/advanced-programmer/20-bad-habits-of-bad-programmers.md b/docs/high-quality-technical-articles/advanced-programmer/20-bad-habits-of-bad-programmers.md index ea47e296..bb7fb8f3 100644 --- a/docs/high-quality-technical-articles/advanced-programmer/20-bad-habits-of-bad-programmers.md +++ b/docs/high-quality-technical-articles/advanced-programmer/20-bad-habits-of-bad-programmers.md @@ -10,9 +10,9 @@ tag: > >
> -> **原文地址:** https://mp.weixin.qq.com/s/6hUU6SZsxGPWAIIByq93Rw +> **原文地址:** -我想你肯定遇到过这样一类程序员:**他们无论是写代码,还是写文档,又或是和别\*\***人沟通,都显得特别专业\*\*。每次遇到这类人,我都在想,他们到底是怎么做到的? +我想你肯定遇到过这样一类程序员:**他们无论是写代码,还是写文档,又或是和别人沟通,都显得特别专业**。每次遇到这类人,我都在想,他们到底是怎么做到的? 随着工作时间的增长,渐渐地我也总结出一些经验,他们身上都保持着一些看似很微小的优秀习惯,但正是因为这些习惯,体现出了一个优秀程序员的基本素养。 diff --git a/docs/high-quality-technical-articles/advanced-programmer/seven-tips-for-becoming-an-advanced-programmer.md b/docs/high-quality-technical-articles/advanced-programmer/seven-tips-for-becoming-an-advanced-programmer.md index 0dbe554e..0284e68a 100644 --- a/docs/high-quality-technical-articles/advanced-programmer/seven-tips-for-becoming-an-advanced-programmer.md +++ b/docs/high-quality-technical-articles/advanced-programmer/seven-tips-for-becoming-an-advanced-programmer.md @@ -8,6 +8,8 @@ tag: > **推荐语**:普通程序员要想成长为高级程序员甚至是专家等更高级别,应该注意在哪些方面注意加强?开发内功修炼号主飞哥在这篇文章中就给出了七条实用的建议。 > +>
+> > **内容概览**: > > 1. 刻意加强需求评审能力 @@ -18,7 +20,7 @@ tag: > 6. 关注全局 > 7. 归纳总结能力 > -> **原文地址**:https://mp.weixin.qq.com/s/8lMGzBzXine-NAsqEaIE4g +> **原文地址**: ### 建议 1:刻意加强需求评审能力 diff --git a/docs/high-quality-technical-articles/advanced-programmer/ten-years-of-dachang-growth-road.md b/docs/high-quality-technical-articles/advanced-programmer/ten-years-of-dachang-growth-road.md index 5c3d3f9c..8a69e8f5 100644 --- a/docs/high-quality-technical-articles/advanced-programmer/ten-years-of-dachang-growth-road.md +++ b/docs/high-quality-technical-articles/advanced-programmer/ten-years-of-dachang-growth-road.md @@ -6,7 +6,9 @@ tag: - 练级攻略 --- -> **推荐语**:这篇文章的作者有着丰富的工作经验,曾在大厂工作了 12 年。结合自己走过的弯路和接触过的优秀技术人,他总结出了一些对于个人成长具有普遍指导意义的经验和特质 +> **推荐语**:这篇文章的作者有着丰富的工作经验,曾在大厂工作了 12 年。结合自己走过的弯路和接触过的优秀技术人,他总结出了一些对于个人成长具有普遍指导意义的经验和特质。 +> +>
> > **原文地址:** diff --git a/docs/high-quality-technical-articles/advanced-programmer/the-growth-strategy-of-the-technological-giant.md b/docs/high-quality-technical-articles/advanced-programmer/the-growth-strategy-of-the-technological-giant.md index c3acee32..19822da6 100644 --- a/docs/high-quality-technical-articles/advanced-programmer/the-growth-strategy-of-the-technological-giant.md +++ b/docs/high-quality-technical-articles/advanced-programmer/the-growth-strategy-of-the-technological-giant.md @@ -10,7 +10,7 @@ tag: > >
> -> **原文地址:** https://mp.weixin.qq.com/s/YrN8T67s801-MRo01lCHXA +> **原文地址:** ## 1. 前言 diff --git a/docs/high-quality-technical-articles/advanced-programmer/thinking-about-technology-and-business-after-five-years-of-work.md b/docs/high-quality-technical-articles/advanced-programmer/thinking-about-technology-and-business-after-five-years-of-work.md index fb3fcec5..a35672c2 100644 --- a/docs/high-quality-technical-articles/advanced-programmer/thinking-about-technology-and-business-after-five-years-of-work.md +++ b/docs/high-quality-technical-articles/advanced-programmer/thinking-about-technology-and-business-after-five-years-of-work.md @@ -10,7 +10,7 @@ tag: > >
> -> **原文地址:** https://mp.weixin.qq.com/s/CTbEdi0F4-qFoJT05kNlXA +> **原文地址:** 苦海无边,回头无岸。 diff --git a/docs/home.md b/docs/home.md index 5a7093ec..999a995f 100644 --- a/docs/home.md +++ b/docs/home.md @@ -1,6 +1,6 @@ --- icon: creative -title: JavaGuide(Java学习&&面试指南) +title: JavaGuide(Java学习&面试指南) --- ::: tip 友情提示 diff --git a/docs/java/collection/copyonwritearraylist-source-code.md b/docs/java/collection/copyonwritearraylist-source-code.md index e8e57ba2..9741a87c 100644 --- a/docs/java/collection/copyonwritearraylist-source-code.md +++ b/docs/java/collection/copyonwritearraylist-source-code.md @@ -129,7 +129,7 @@ public boolean add(E e) { 从上面的源码可以看出: -- `add`方法内部用到了 `ReentrantLock` 加锁,保证了同步,避免了多线程写的时候会复制出多个副本出来。 +- `add`方法内部用到了 `ReentrantLock` 加锁,保证了同步,避免了多线程写的时候会复制出多个副本出来。锁被修饰保证了锁的内存地址肯定不会被修改,并且,释放锁的逻辑放在 `finally` 中,可以保证锁能被释放。 - `CopyOnWriteArrayList` 通过复制底层数组的方式实现写操作,即先创建一个新的数组来容纳新添加的元素,然后在新数组中进行写操作,最后将新数组赋值给底层数组的引用,替换掉旧的数组。这也就证明了我们前面说的:`CopyOnWriteArrayList` 线程安全的核心在于其采用了 **写时复制(Copy-On-Write)** 的策略。 - 每次写操作都需要通过 `Arrays.copyOf` 复制底层数组,时间复杂度是 O(n) 的,且会占用额外的内存空间。因此,`CopyOnWriteArrayList` 适用于读多写少的场景,在写操作不频繁且内存资源充足的情况下,可以提升系统的性能表现。 - `CopyOnWriteArrayList` 中并没有类似于 `ArrayList` 的 `grow()` 方法扩容的操作。