1
0
mirror of https://github.com/Snailclimb/JavaGuide synced 2025-06-16 18:10:13 +08:00

Merge pull request #2005 from Mister-Hope/tweaks2

chore: tweaks
This commit is contained in:
Guide 2023-05-05 12:59:22 +08:00 committed by GitHub
commit e3fa80502d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
205 changed files with 1811 additions and 1812 deletions

View File

@ -23,7 +23,7 @@ export default navbar([
text: "更新历史", text: "更新历史",
icon: "history", icon: "history",
link: "/timeline/", link: "/timeline/",
} },
], ],
}, },
]); ]);

View File

@ -17,8 +17,8 @@ ThoughtWorks 非常提倡分享、提倡帮助他人成长,这一点在公司
![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-7/feedback.png) ![](https://my-blog-to-use.oss-cn-beijing.aliyuncs.com/2019-7/feedback.png)
工作之后,平时更新公众号、专栏还有维护 Github 的时间变少了。实际上,很多时候下班回来后,都有自己的时间来干自己的事情,但是自己也总是找工作太累或者时间比较零散的接口来推掉了。到了今天,翻看 Github 突然发现 14 天前别人在 Github 上给我提的 pr 我还没有处理。这一点确实是自己没有做好的地方,没有合理安排好自己的时间。实际上自己有很多想写的东西,后面会慢慢将他们提上日程。工作之后,更加发现下班后的几个小时如何度过确实很重要 ,如果你觉得自己没有完成好自己白天该做的工作的话,下班后你可以继续忙白天没有忙完的工作,如果白天的工作对于你游刃有余的话,下班回来之后,你大可去干自己感兴趣的事情,学习自己感兴趣的技术。做任何事情都要基于自身的基础,切不可好高骛远。 工作之后,平时更新公众号、专栏还有维护 Github 的时间变少了。实际上,很多时候下班回来后,都有自己的时间来干自己的事情,但是自己也总是找工作太累或者时间比较零散的接口来推掉了。到了今天,翻看 Github 突然发现 14 天前别人在 Github 上给我提的 PR 我还没有处理。这一点确实是自己没有做好的地方,没有合理安排好自己的时间。实际上自己有很多想写的东西,后面会慢慢将他们提上日程。工作之后,更加发现下班后的几个小时如何度过确实很重要 ,如果你觉得自己没有完成好自己白天该做的工作的话,下班后你可以继续忙白天没有忙完的工作,如果白天的工作对于你游刃有余的话,下班回来之后,你大可去干自己感兴趣的事情,学习自己感兴趣的技术。做任何事情都要基于自身的基础,切不可好高骛远。
工作之后身边也会有很多厉害的人,多从他人身上学习我觉得是每个职场人都应该做的。这一届和我们一起培训的同事中,有一些技术很厉害的,也有一些技术虽然不是那么厉害,但是组织能力以及团队协作能力特别厉害的。有一个特别厉害的同事,在我们还在学 SpringBoot 各种语法的时候,他自己利用业余时间写了一个简化版的 SpringBoot ,涵盖了 Spring 的一些常用注解比如 `@RestController``@Autowried``@Pathvairable``@RestquestParam`等等(已经联系这位同事,想让他开源一下,后面会第一时间同步到公众号,期待一下吧!)。我觉得这位同事对于编程是真的有兴趣,他好像从初中就开始接触编程了,对于各种底层知识也非常感兴趣,自己写过实现过很多比较底层的东西。他的梦想是在 Github  上造一个 20k Star 以上的轮子。我相信以这位同事的能力一定会达成目标的,在这里祝福这位同事,希望他可以尽快实现这个目标。 工作之后身边也会有很多厉害的人,多从他人身上学习我觉得是每个职场人都应该做的。这一届和我们一起培训的同事中,有一些技术很厉害的,也有一些技术虽然不是那么厉害,但是组织能力以及团队协作能力特别厉害的。有一个特别厉害的同事,在我们还在学 SpringBoot 各种语法的时候,他自己利用业余时间写了一个简化版的 SpringBoot ,涵盖了 Spring 的一些常用注解比如 `@RestController``@Autowried``@Pathvairable``@RestquestParam`等等(已经联系这位同事,想让他开源一下,后面会第一时间同步到公众号,期待一下吧!)。我觉得这位同事对于编程是真的有兴趣,他好像从初中就开始接触编程了,对于各种底层知识也非常感兴趣,自己写过实现过很多比较底层的东西。他的梦想是在 Github 上造一个 20k Star 以上的轮子。我相信以这位同事的能力一定会达成目标的,在这里祝福这位同事,希望他可以尽快实现这个目标。
这是我入职一个多月之后的个人感受,很多地方都是一带而过,后面我会抽时间分享自己在公司或者业余学到的比较有用的知识给各位,希望看过的人都能有所收获。 这是我入职一个多月之后的个人感受,很多地方都是一带而过,后面我会抽时间分享自己在公司或者业余学到的比较有用的知识给各位,希望看过的人都能有所收获。

View File

@ -9,7 +9,7 @@ tag:
简单说一下自己的情况吧!我目前是在一家外企,每天的工作和大部分人一样就是做开发。毕业到现在,差不多也算是工作半年多了,也已经过了公司 6 个月的试用期。目前在公司做过两个偏向于业务方向的项目,其中一个正在做。你很难想象我在公司做的两个业务项目的后端都没有涉及到分布式/微服务,没有接触到 Redis、Kafka 等等比较“高大上”的技术在项目中的实际运用。 简单说一下自己的情况吧!我目前是在一家外企,每天的工作和大部分人一样就是做开发。毕业到现在,差不多也算是工作半年多了,也已经过了公司 6 个月的试用期。目前在公司做过两个偏向于业务方向的项目,其中一个正在做。你很难想象我在公司做的两个业务项目的后端都没有涉及到分布式/微服务,没有接触到 Redis、Kafka 等等比较“高大上”的技术在项目中的实际运用。
第一个项目做的是公司的内部项目——员工成长系统。抛去员工成长系统这个名字,实际上这个系统做的就是绩效考核比如你在某个项目组的表现。这个项目的技术是 Spring Boot+ JPA+Spring Security + K8S+Docker+React。第二个目前正在做的是一个集成游戏cocos、Web 管理端(Spring Boot+Vue)和小程序Taro项目。 第一个项目做的是公司的内部项目——员工成长系统。抛去员工成长系统这个名字,实际上这个系统做的就是绩效考核比如你在某个项目组的表现。这个项目的技术是 Spring Boot+ JPA + Spring Security + K8S + Docker + React。第二个目前正在做的是一个集成游戏 (cocos)、Web 管理端 (Spring Boot + Vue) 和小程序 (Taro) 项目。
是的,我在工作中的大部分时间都和 CRUD 有关,每天也会写前端页面。之前我认识的一个朋友 他听说我做的项目中大部分内容都是写业务代码之后就非常纳闷他觉得单纯写业务代码得不到提升what?你一个应届生,连业务代码都写不好你给我说这个!所以,**我就很纳闷不知道为什么现在很多连业务代码都写不好的人为什么人听到 CRUD 就会反感?至少我觉得在我工作这段时间我的代码质量得到了提升、定位问题的能力有了很大的改进、对于业务有了更深的认识,自己也可以独立完成一些前端的开发了。** 是的,我在工作中的大部分时间都和 CRUD 有关,每天也会写前端页面。之前我认识的一个朋友 他听说我做的项目中大部分内容都是写业务代码之后就非常纳闷他觉得单纯写业务代码得不到提升what?你一个应届生,连业务代码都写不好你给我说这个!所以,**我就很纳闷不知道为什么现在很多连业务代码都写不好的人为什么人听到 CRUD 就会反感?至少我觉得在我工作这段时间我的代码质量得到了提升、定位问题的能力有了很大的改进、对于业务有了更深的认识,自己也可以独立完成一些前端的开发了。**
@ -23,7 +23,7 @@ tag:
这不到了大三暑假跟着老师一起做项目的时候就出问题了。大三的时候我们跟着老师做的是一个绩效考核系统业务复杂程度中等。这个项目的技术用的是SSM + Shiro + JSP。当时做这个项目的时候我遇到各种问题各种我以为我会写的代码都不会写了甚至我写一个简单的 CRUD 都要花费好几天的时间。所以,那时候我都是边复习边学习边写代码。虽然很累,但是,那时候学到了很多,也让我在技术面前变得更加踏实。我觉得这“**这个项目已经没有维护的可能性**”这句话是我对我过的这个项目最大的否定了。 这不到了大三暑假跟着老师一起做项目的时候就出问题了。大三的时候我们跟着老师做的是一个绩效考核系统业务复杂程度中等。这个项目的技术用的是SSM + Shiro + JSP。当时做这个项目的时候我遇到各种问题各种我以为我会写的代码都不会写了甚至我写一个简单的 CRUD 都要花费好几天的时间。所以,那时候我都是边复习边学习边写代码。虽然很累,但是,那时候学到了很多,也让我在技术面前变得更加踏实。我觉得这“**这个项目已经没有维护的可能性**”这句话是我对我过的这个项目最大的否定了。
技术千变万化,掌握最核心的才是王道。我们前几年可能还在用 Spring 基于传统的 XML 开发,现在几乎大家都会用 Spring Boot 这个开发利器来提升开发速度,再比如几年前我们使用消息队列可能还在用 ActiveMQ到今天几乎都没有人用它了现在比较常用的就是 Rocket MQ、Kafka 。技术更新换代这么快的今天,你是无法把每一个框架/工具都学习一遍的 技术千变万化,掌握最核心的才是王道。我们前几年可能还在用 Spring 基于传统的 XML 开发,现在几乎大家都会用 Spring Boot 这个开发利器来提升开发速度,再比如几年前我们使用消息队列可能还在用 ActiveMQ到今天几乎都没有人用它了现在比较常用的就是 Rocket MQ、Kafka 。技术更新换代这么快的今天,你是无法把每一个框架/工具都学习一遍的。
**很多初学者上来就想通过做项目学习,特别是在公司,我觉得这个是不太可取的。** 如果的 Java 基础或者 Spring Boot 基础不好的话,建议自己先提前学习一下之后再开始看视频或者通过其他方式做项目。 **还有一点就是,我不知道为什么大家都会说边跟着项目边学习做的话效果最好,我觉得这个要加一个前提是你对这门技术有基本的了解或者说你对编程有了一定的了解。** **很多初学者上来就想通过做项目学习,特别是在公司,我觉得这个是不太可取的。** 如果的 Java 基础或者 Spring Boot 基础不好的话,建议自己先提前学习一下之后再开始看视频或者通过其他方式做项目。 **还有一点就是,我不知道为什么大家都会说边跟着项目边学习做的话效果最好,我觉得这个要加一个前提是你对这门技术有基本的了解或者说你对编程有了一定的了解。**
@ -31,9 +31,9 @@ tag:
不知道其他公司的程序员是怎么样的?我感觉技术积累很大程度在乎平时,单纯依靠工作绝大部分情况只会加快自己做需求的熟练度,当然,写多了之后或多或少也会提升你对代码质量的认识(前提是你有这个意识)。 不知道其他公司的程序员是怎么样的?我感觉技术积累很大程度在乎平时,单纯依靠工作绝大部分情况只会加快自己做需求的熟练度,当然,写多了之后或多或少也会提升你对代码质量的认识(前提是你有这个意识)。
工作之余,我会利用业余时间来学习自己想学的东西。工作中的例子就是我刚进公司的第一个项目用到了 Spring Security+JWT ,因为当时自己对于这个技术不太了解,然后就在工作之外大概花了一周的时间学习写了一个 Demo 分享了出来,GitHub 地址:<https://github.com/Snailclimb/spring-security-jwt-guide> 。以次为契机,我还分享了 工作之余,我会利用业余时间来学习自己想学的东西。工作中的例子就是我刚进公司的第一个项目用到了 Spring Security + JWT 因为当时自己对于这个技术不太了解,然后就在工作之外大概花了一周的时间学习写了一个 Demo 分享了出来GitHub 地址:<https://github.com/Snailclimb/spring-security-jwt-guide> 。以次为契机,我还分享了
- [《一问带你区分清楚 Authentication,Authorization 以及 Cookie、Session、Token》](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247485626&idx=1&sn=3247aa9000693dd692de8a04ccffeec1&chksm=cea24771f9d5ce675ea0203633a95b68bfe412dc6a9d05f22d221161147b76161d1b470d54b3&token=684071313&lang=zh_CN&scene=21#wechat_redirect) - [《一问带你区分清楚 AuthenticationAuthorization 以及 Cookie、Session、Token》](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247485626&idx=1&sn=3247aa9000693dd692de8a04ccffeec1&chksm=cea24771f9d5ce675ea0203633a95b68bfe412dc6a9d05f22d221161147b76161d1b470d54b3&token=684071313&lang=zh_CN&scene=21#wechat_redirect)
- [JWT 身份认证优缺点分析以及常见问题解决方案](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247485655&idx=1&sn=583eeeb081ea21a8ec6347c72aa223d6&chksm=cea2471cf9d5ce0aa135f2fb9aa32d98ebb3338292beaccc1aae43d1178b16c0125eb4139ca4&token=1737409938&lang=zh_CN#rd) - [JWT 身份认证优缺点分析以及常见问题解决方案](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247485655&idx=1&sn=583eeeb081ea21a8ec6347c72aa223d6&chksm=cea2471cf9d5ce0aa135f2fb9aa32d98ebb3338292beaccc1aae43d1178b16c0125eb4139ca4&token=1737409938&lang=zh_CN#rd)
另外一个最近的例子是因为肺炎疫情在家的这段时间,自学了 Kafka并且正在准备写一系列的入门文章目前已经完成了 另外一个最近的例子是因为肺炎疫情在家的这段时间,自学了 Kafka并且正在准备写一系列的入门文章目前已经完成了

View File

@ -125,7 +125,7 @@ QQ 飞车这款戏当时还挺火的,很多 90 后的小伙伴应该比较熟
大学生活过的还是挺丰富的,我会偶尔通宵敲代码,也会偶尔半夜发疯跑出去和同学一起走走古城墙、去网吧锤一夜的 LOL。 大学生活过的还是挺丰富的,我会偶尔通宵敲代码,也会偶尔半夜发疯跑出去和同学一起走走古城墙、去网吧锤一夜的 LOL。
大学生活专门写过一篇文章介绍: [害,毕业三年了!](https://javaguide.cn/about-the-author/my-college-life.html) 。 大学生活专门写过一篇文章介绍:[害,毕业三年了!](./my-college-life.md) 。
## 总结 ## 总结

View File

@ -29,11 +29,11 @@ tag:
![](https://oss.javaguide.cn/github/javaguide/about-the-author/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70.png) ![](https://oss.javaguide.cn/github/javaguide/about-the-author/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70.png)
累计有 **511****issue****575****pr**。所有的 pr 都已经被处理,仅有 15 个左右的 issue 我还未抽出时间处理。 累计有 **511****issue****575****PR**。所有的 PR 都已经被处理,仅有 15 个左右的 issue 我还未抽出时间处理。
![](https://oss.javaguide.cn/github/javaguide/about-the-author/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70-20230309224044850.png) ![](https://oss.javaguide.cn/github/javaguide/about-the-author/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM0MzM3Mjcy,size_16,color_FFFFFF,t_70-20230309224044850.png)
其实,相比于 star 数量,你看看仓库的 issue 和 pr 更能说明你的项目是否有价值。 其实,相比于 star 数量,你看看仓库的 issue 和 PR 更能说明你的项目是否有价值。
那些到处骗 star 甚至是 刷 star 的行为,我就不多说了,有点丢人。人家觉得你的项目还不错,能提供价值,自然就给你点 star 了。 那些到处骗 star 甚至是 刷 star 的行为,我就不多说了,有点丢人。人家觉得你的项目还不错,能提供价值,自然就给你点 star 了。

View File

@ -6,7 +6,7 @@ tag:
- 个人经历 - 个人经历
--- ---
> 关于初高中的生活,可以看 2020 年我写的[我曾经也是网瘾少年](https://javaguide.cn/about-the-author/internet-addiction-teenager.html)这篇文章。 > 关于初高中的生活,可以看 2020 年我写的 [我曾经也是网瘾少年](./internet-addiction-teenager.md) 这篇文章。
2019 年 6 月份毕业,距今已经过去了 3 年。趁着高考以及应届生毕业之际,简单聊聊自己的大学生活。 2019 年 6 月份毕业,距今已经过去了 3 年。趁着高考以及应届生毕业之际,简单聊聊自己的大学生活。

View File

@ -19,7 +19,7 @@ category: 走近作者
## 我坚持写了多久博客? ## 我坚持写了多久博客?
时间真快啊!我自己是从大二开始写博客的。那时候就是随意地在博客平台上发发自己的学习笔记和自己写的程序。就比如 [谢希仁老师的《计算机网络》内容总结](https://javaguide.cn/cs-basics/network/%E8%B0%A2%E5%B8%8C%E4%BB%81%E8%80%81%E5%B8%88%E7%9A%84%E3%80%8A%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%BD%91%E7%BB%9C%E3%80%8B%E5%86%85%E5%AE%B9%E6%80%BB%E7%BB%93/) 这篇文章就是我在大二学习计算机网络这门课的时候对照着教材总结的。 时间真快啊!我自己是从大二开始写博客的。那时候就是随意地在博客平台上发发自己的学习笔记和自己写的程序。就比如 [谢希仁老师的《计算机网络》内容总结](../cs-basics/network/computer-network-xiexiren-summary.md) 这篇文章就是我在大二学习计算机网络这门课的时候对照着教材总结的。
身边也有很多小伙伴经常问我:“我现在写博客还晚么?” 身边也有很多小伙伴经常问我:“我现在写博客还晚么?”

View File

@ -122,7 +122,7 @@ tag:
最重要的是一定要重视 Markdown 规范,不然内容再好也会显得不专业。 最重要的是一定要重视 Markdown 规范,不然内容再好也会显得不专业。
Markdown 规范请参考:**<https://javaguide.cn/javaguide/contribution-guideline.html>** (很重要,尽量按照规范来,对你工作中写文档会非常有帮助) 详见 [Markdown 规范](../javaguide/contribution-guideline.md) (很重要,尽量按照规范来,对你工作中写文档会非常有帮助)
## 有没有什么写作技巧分享? ## 有没有什么写作技巧分享?

View File

@ -124,8 +124,8 @@ _这本书还是非常适合我们用来学习 Java 多线程的。这本书的
- **IDEA**:熟悉基本操作以及常用快捷。你可以通过 GitHub 上的开源教程 [《IntelliJ IDEA 简体中文专题教程》](https://github.com/judasn/IntelliJ-IDEA-Tutorial) 来学习 IDEA 的使用。 - **IDEA**:熟悉基本操作以及常用快捷。你可以通过 GitHub 上的开源教程 [《IntelliJ IDEA 简体中文专题教程》](https://github.com/judasn/IntelliJ-IDEA-Tutorial) 来学习 IDEA 的使用。
- **Maven**:强烈建议学习常用框架之前可以提前花几天时间学习一下**Maven**的使用。(到处找 Jar 包,下载 Jar 包是真的麻烦费事,使用 Maven 可以为你省很多事情)。 - **Maven**:强烈建议学习常用框架之前可以提前花几天时间学习一下**Maven**的使用。(到处找 Jar 包,下载 Jar 包是真的麻烦费事,使用 Maven 可以为你省很多事情)。
- **Git** :基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 GitHub 上。你可以看看这篇 GitHub 上开源的 [《Git 极简入门》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Git) 。 - **Git**:基本的 Git 技能也是必备的,试着在学习的过程中将自己的代码托管在 Github 上。你可以看看这篇 Github 上开源的 [《Git 极简入门》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Git) 。
- **Docker** :学着用 Docker 安装学习中需要用到的软件比如 MySQL ,这样方便很多,可以为你节省不少时间。你可以看看这篇 GitHub 上开源的 [《Docker 基本概念解读》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Docker) 、[《一文搞懂 Docker 镜像的常用操作!》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Docker-Image) - **Docker**:学着用 Docker 安装学习中需要用到的软件比如 MySQL ,这样方便很多,可以为你节省不少时间。你可以看看这篇 Github 上开源的 [《Docker 基本概念解读》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Docker) 、[《一文搞懂 Docker 镜像的常用操作!》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Docker-Image)
除了这些工具之外,我强烈建议你一定要搞懂 GitHub 的使用。一些使用 GitHub 的小技巧,你可以看[《GitHub 小技巧》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Github%E6%8A%80%E5%B7%A7)这篇文章。 除了这些工具之外,我强烈建议你一定要搞懂 GitHub 的使用。一些使用 GitHub 的小技巧,你可以看[《GitHub 小技巧》](https://snailclimb.gitee.io/javaguide/#/docs/tools/Github%E6%8A%80%E5%B7%A7)这篇文章。

View File

@ -5,7 +5,7 @@ tag:
- 算法 - 算法
--- ---
> 本文转自http://www.guoyaohua.com/sorting.htmlJavaGuide 对其做了补充完善。 > 本文转自:<http://www.guoyaohua.com/sorting.html>JavaGuide 对其做了补充完善。
## 引言 ## 引言
@ -729,6 +729,6 @@ public static int[] radixSort(int[] arr) {
## 参考文章 ## 参考文章
- https://www.cnblogs.com/guoyaohua/p/8600214.html - <https://www.cnblogs.com/guoyaohua/p/8600214.html>
- https://en.wikipedia.org/wiki/Sorting_algorithm - <https://en.wikipedia.org/wiki/Sorting_algorithm>
- https://sort.hust.cc/ - <https://sort.hust.cc/>

View File

@ -68,7 +68,7 @@ OSI 七层模型虽然失败了,但是却提供了很多不错的理论基础
- **RTPReal-time Transport Protocol实时传输协议**:通常基于 UDP 协议,但也支持 TCP 协议。它提供了端到端的实时传输数据的功能,但不包含资源预留存、不保证实时传输质量,这些功能由 WebRTC 实现。 - **RTPReal-time Transport Protocol实时传输协议**:通常基于 UDP 协议,但也支持 TCP 协议。它提供了端到端的实时传输数据的功能,但不包含资源预留存、不保证实时传输质量,这些功能由 WebRTC 实现。
- **DNSDomain Name System域名管理系统**: 基于 UDP 协议,用于解决域名和 IP 地址的映射问题。 - **DNSDomain Name System域名管理系统**: 基于 UDP 协议,用于解决域名和 IP 地址的映射问题。
关于这些协议的详细介绍请看 [应用层常见协议总结(应用层)](https://javaguide.cn/cs-basics/network/application-layer-protocol.html) 这篇文章。 关于这些协议的详细介绍请看 [应用层常见协议总结(应用层)](./application-layer-protocol.md) 这篇文章。
### 传输层Transport layer ### 传输层Transport layer

View File

@ -40,7 +40,7 @@ tag:
![TCP/IP 四层模型](https://oss.javaguide.cn/github/javaguide/cs-basics/network/tcp-ip-4-model.png) ![TCP/IP 四层模型](https://oss.javaguide.cn/github/javaguide/cs-basics/network/tcp-ip-4-model.png)
关于每一层作用的详细介绍,请看 [OSI 和 TCP/IP 网络分层模型详解(基础)](https://javaguide.cn/cs-basics/network/osi-and-tcp-ip-model.html) 这篇文章。 关于每一层作用的详细介绍,请看 [OSI 和 TCP/IP 网络分层模型详解(基础)](./osi-and-tcp-ip-model.md) 这篇文章。
#### 为什么网络要分层? #### 为什么网络要分层?
@ -230,7 +230,7 @@ URI 的作用像身份证号一样URL 的作用更像家庭住址一样。URL
### Cookie 和 Session 有什么区别? ### Cookie 和 Session 有什么区别?
准确点来说,这个问题属于认证授权的范畴,你可以在 [认证授权基础概念详解](https://javaguide.cn/system-design/security/basis-of-authority-certification.html) 这篇文章中找到详细的答案。 准确点来说,这个问题属于认证授权的范畴,你可以在 [认证授权基础概念详解](../../system-design/security/basis-of-authority-certification.md) 这篇文章中找到详细的答案。
## PING ## PING

View File

@ -6,7 +6,7 @@ tag:
- Elasticsearch - Elasticsearch
--- ---
**Elasticsearch** 相关的面试题为我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html)中。 **Elasticsearch** 相关的面试题为我的[知识星球](../../about-the-author/zhishixingqiu-two-years.md)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](../../zhuanlan/java-mian-shi-zhi-bei.md)中。
![](https://oss.javaguide.cn/javamianshizhibei/elasticsearch-questions.png) ![](https://oss.javaguide.cn/javamianshizhibei/elasticsearch-questions.png)

View File

@ -208,7 +208,7 @@ MongoDB 聚合管道由多个阶段组成,每个阶段在文档通过管道时
| \$unwind | 拆分操作符,用于将数组中的每一个值拆分为单独的文档 | | \$unwind | 拆分操作符,用于将数组中的每一个值拆分为单独的文档 |
| \$lookup | 连接操作符,用于连接同一个数据库中另一个集合,并获取指定的文档,类似于 populate | | \$lookup | 连接操作符,用于连接同一个数据库中另一个集合,并获取指定的文档,类似于 populate |
更多操作符介绍详见官方文档https://docs.mongodb.com/manual/reference/operator/aggregation/ 更多操作符介绍详见官方文档:<https://docs.mongodb.com/manual/reference/operator/aggregation/>
阶段操作符用于 `db.collection.aggregate` 方法里面,数组参数中的第一层。 阶段操作符用于 `db.collection.aggregate` 方法里面,数组参数中的第一层。
@ -246,7 +246,7 @@ db.orders.aggregate([
- **隔离性**`Isolation`并发访问数据库时一个用户的事务不被其他事务所干扰各并发事务之间数据库是独立的。WiredTiger 存储引擎支持读未提交( read-uncommitted )、读已提交( read-committed )和快照( snapshot 隔离MongoDB 启动时默认选快照隔离。在不同隔离级别下,一个事务的生命周期内,可能出现脏读、不可重复读、幻读等现象。 - **隔离性**`Isolation`并发访问数据库时一个用户的事务不被其他事务所干扰各并发事务之间数据库是独立的。WiredTiger 存储引擎支持读未提交( read-uncommitted )、读已提交( read-committed )和快照( snapshot 隔离MongoDB 启动时默认选快照隔离。在不同隔离级别下,一个事务的生命周期内,可能出现脏读、不可重复读、幻读等现象。
- **持久性**`Durability`):一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。 - **持久性**`Durability`):一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响。
关于事务的详细介绍这篇文章就不多说了,感兴趣的可以看看我写的[MySQL 常见面试题总结](https://javaguide.cn/database/mysql/mysql-questions-01.html)这篇文章,里面有详细介绍到。 关于事务的详细介绍这篇文章就不多说了,感兴趣的可以看看我写的[MySQL 常见面试题总结](../mysql/mysql-questions-01.md)这篇文章,里面有详细介绍到。
MongoDB 单文档原生支持原子性,也具备事务的特性。当谈论 MongoDB 事务的时候,通常指的是 **多文档** 。MongoDB 4.0 加入了对多文档 ACID 事务的支持,但只支持复制集部署模式下的 ACID 事务也就是说事务的作用域限制为一个副本集内。MongoDB 4.2 引入了 **分布式事务** ,增加了对分片集群上多文档事务的支持,并合并了对副本集上多文档事务的现有支持。 MongoDB 单文档原生支持原子性,也具备事务的特性。当谈论 MongoDB 事务的时候,通常指的是 **多文档** 。MongoDB 4.0 加入了对多文档 ACID 事务的支持,但只支持复制集部署模式下的 ACID 事务也就是说事务的作用域限制为一个副本集内。MongoDB 4.2 引入了 **分布式事务** ,增加了对分片集群上多文档事务的支持,并合并了对副本集上多文档事务的现有支持。
@ -276,9 +276,9 @@ WiredTiger 日志也会被压缩,默认使用的也是 Snappy 压缩算法。
## 参考 ## 参考
- MongoDB 官方文档主要参考资料以官方文档为准https://www.mongodb.com/docs/manual/ - MongoDB 官方文档(主要参考资料,以官方文档为准):<https://www.mongodb.com/docs/manual/>
- 《MongoDB 权威指南》 - 《MongoDB 权威指南》
- 技术干货| MongoDB 事务原理 - MongoDB 中文社区https://mongoing.com/archives/82187 - 技术干货| MongoDB 事务原理 - MongoDB 中文社区:<https://mongoing.com/archives/82187>
- Transactions - MongoDB 官方文档https://www.mongodb.com/docs/manual/core/transactions/ - Transactions - MongoDB 官方文档:<https://www.mongodb.com/docs/manual/core/transactions/>
- WiredTiger Storage Engine - MongoDB 官方文档https://www.mongodb.com/docs/manual/core/wiredtiger/ - WiredTiger Storage Engine - MongoDB 官方文档:<https://www.mongodb.com/docs/manual/core/wiredtiger/>
- WiredTiger 存储引擎之一基础数据结构分析https://mongoing.com/topic/archives-35143 - WiredTiger 存储引擎之一:基础数据结构分析:<https://mongoing.com/topic/archives-35143>

View File

@ -263,11 +263,11 @@ Rebalance 操作是比较耗费系统资源的,我们可以通过在业务低
## 参考 ## 参考
- MongoDB 官方文档主要参考资料以官方文档为准https://www.mongodb.com/docs/manual/ - MongoDB 官方文档(主要参考资料,以官方文档为准):<https://www.mongodb.com/docs/manual/>
- 《MongoDB 权威指南》 - 《MongoDB 权威指南》
- Indexes - MongoDB 官方文档https://www.mongodb.com/docs/manual/indexes/ - Indexes - MongoDB 官方文档:<https://www.mongodb.com/docs/manual/indexes/>
- MongoDB - 索引知识 - 程序员翔仔 - 2022https://fatedeity.cn/posts/database/mongodb-index-knowledge.html - MongoDB - 索引知识 - 程序员翔仔 - 2022<https://fatedeity.cn/posts/database/mongodb-index-knowledge.html>
- MongoDB - 索引: https://www.cnblogs.com/Neeo/articles/14325130.html - MongoDB - 索引: <https://www.cnblogs.com/Neeo/articles/14325130.html>
- Sharding - MongoDB 官方文档https://www.mongodb.com/docs/manual/sharding/ - Sharding - MongoDB 官方文档:<https://www.mongodb.com/docs/manual/sharding/>
- MongoDB 分片集群介绍 - 阿里云文档https://help.aliyun.com/document_detail/64561.html - MongoDB 分片集群介绍 - 阿里云文档:<https://help.aliyun.com/document_detail/64561.html>
- 分片集群使用注意事项 - - 腾讯云文档https://cloud.tencent.com/document/product/240/44611 - 分片集群使用注意事项 - - 腾讯云文档:<https://cloud.tencent.com/document/product/240/44611>

View File

@ -32,7 +32,7 @@ InnoDB 支持事务,支持行级锁,更好的恢复性,高并发下性能
参考文章: 参考文章:
- [MySQL 字符集不一致导致索引失效的一个真实案例](https://blog.csdn.net/horses/article/details/107243447) - [MySQL 字符集不一致导致索引失效的一个真实案例](https://blog.csdn.net/horses/article/details/107243447)
- [MySQL 字符集详解](https://javaguide.cn/database/character-set.html) - [MySQL 字符集详解](../character-set.md)
### 所有表和字段都需要添加注释 ### 所有表和字段都需要添加注释

View File

@ -286,7 +286,7 @@ ALTER TABLE `cus_order` ADD INDEX id_score_name(score, name);
通过 `Extra` 这一列的 `Using index` ,说明这条 SQL 语句成功使用了覆盖索引。 通过 `Extra` 这一列的 `Using index` ,说明这条 SQL 语句成功使用了覆盖索引。
关于 `EXPLAIN` 命令的详细介绍请看:[MySQL 执行计划分析](https://javaguide.cn/database/mysql/mysql-query-execution-plan.html)这篇文章。 关于 `EXPLAIN` 命令的详细介绍请看:[MySQL 执行计划分析](./mysql-query-execution-plan.md)这篇文章。
### 联合索引 ### 联合索引
@ -351,7 +351,7 @@ ALTER TABLE `cus_order` ADD INDEX id_score_name(score, name);
- 在索引列上进行计算、函数、类型转换等操作; - 在索引列上进行计算、函数、类型转换等操作;
- 以 `%` 开头的 LIKE 查询比如 `like '%abc'`; - 以 `%` 开头的 LIKE 查询比如 `like '%abc'`;
- 查询条件中使用 or且 or 的前后条件中有一个列没有索引,涉及的索引都不会被使用到; - 查询条件中使用 or且 or 的前后条件中有一个列没有索引,涉及的索引都不会被使用到;
- 发生[隐式转换](https://javaguide.cn/database/mysql/index-invalidation-caused-by-implicit-conversion.html); - 发生[隐式转换](./index-invalidation-caused-by-implicit-conversion.md);
- ...... - ......
### 删除长期未使用的索引 ### 删除长期未使用的索引
@ -395,4 +395,4 @@ mysql> EXPLAIN SELECT `score`,`name` FROM `cus_order` ORDER BY `score` DESC;
| filtered | 按表条件过滤后,留存的记录数的百分比 | | filtered | 按表条件过滤后,留存的记录数的百分比 |
| Extra | 附加信息 | | Extra | 附加信息 |
篇幅问题,我这里只是简单介绍了一下 MySQL 执行计划,详细介绍请看:[MySQL 执行计划分析](https://javaguide.cn/database/mysql/mysql-query-execution-plan.html)这篇文章。 篇幅问题,我这里只是简单介绍了一下 MySQL 执行计划,详细介绍请看:[MySQL 执行计划分析](./mysql-query-execution-plan.md)这篇文章。

View File

@ -201,6 +201,6 @@ MySQL 中的查询缓存虽然能够提升数据库的查询性能,但是查
## 参考 ## 参考
- 《高性能 MySQL》 - 《高性能 MySQL》
- MySQL 缓存机制https://zhuanlan.zhihu.com/p/55947158 - MySQL 缓存机制:<https://zhuanlan.zhihu.com/p/55947158>
- RDS MySQL 查询缓存Query Cache的设置和使用 - 阿里元云数据库 RDS 文档:https://help.aliyun.com/document_detail/41717.html - RDS MySQL 查询缓存Query Cache的设置和使用 - 阿里元云数据库 RDS 文档:<https://help.aliyun.com/document_detail/41717.html>
- 8.10.3 The MySQL Query Cache - MySQL 官方文档https://dev.mysql.com/doc/refman/5.7/en/query-cache.html - 8.10.3 The MySQL Query Cache - MySQL 官方文档:<https://dev.mysql.com/doc/refman/5.7/en/query-cache.html>

View File

@ -132,8 +132,8 @@ mysql> SHOW VARIABLES LIKE '%storage_engine%';
如果你想要深入了解每个存储引擎以及它们之间的区别,推荐你去阅读以下 MySQL 官方文档对应的介绍(面试不会问这么细,了解即可) 如果你想要深入了解每个存储引擎以及它们之间的区别,推荐你去阅读以下 MySQL 官方文档对应的介绍(面试不会问这么细,了解即可)
- InnoDB 存储引擎详细介绍https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html 。 - InnoDB 存储引擎详细介绍:<https://dev.mysql.com/doc/refman/8.0/en/innodb-storage-engine.html>
- 其他存储引擎详细介绍https://dev.mysql.com/doc/refman/8.0/en/storage-engines.html 。 - 其他存储引擎详细介绍:<https://dev.mysql.com/doc/refman/8.0/en/storage-engines.html>
![](https://oss.javaguide.cn/github/javaguide/mysql/image-20220510155143458.png) ![](https://oss.javaguide.cn/github/javaguide/mysql/image-20220510155143458.png)
@ -143,7 +143,7 @@ MySQL 存储引擎采用的是 **插件式架构** ,支持多种存储引擎
并且,你还可以根据 MySQL 定义的存储引擎实现标准接口来编写一个属于自己的存储引擎。这些非官方提供的存储引擎可以称为第三方存储引擎,区别于官方存储引擎。像目前最常用的 InnoDB 其实刚开始就是一个第三方存储引擎,后面由于过于优秀,其被 Oracle 直接收购了。 并且,你还可以根据 MySQL 定义的存储引擎实现标准接口来编写一个属于自己的存储引擎。这些非官方提供的存储引擎可以称为第三方存储引擎,区别于官方存储引擎。像目前最常用的 InnoDB 其实刚开始就是一个第三方存储引擎,后面由于过于优秀,其被 Oracle 直接收购了。
MySQL 官方文档也有介绍到如何编写一个自定义存储引擎地址https://dev.mysql.com/doc/internals/en/custom-engine.html 。 MySQL 官方文档也有介绍到如何编写一个自定义存储引擎,地址:<https://dev.mysql.com/doc/internals/en/custom-engine.html>
### MyISAM 和 InnoDB 有什么区别? ### MyISAM 和 InnoDB 有什么区别?
@ -167,7 +167,7 @@ MyISAM 不提供事务支持。
InnoDB 提供事务支持,实现了 SQL 标准定义了四个隔离级别,具有提交(commit)和回滚(rollback)事务的能力。并且InnoDB 默认使用的 REPEATABLE-READ可重读隔离级别是可以解决幻读问题发生的基于 MVCC 和 Next-Key Lock InnoDB 提供事务支持,实现了 SQL 标准定义了四个隔离级别,具有提交(commit)和回滚(rollback)事务的能力。并且InnoDB 默认使用的 REPEATABLE-READ可重读隔离级别是可以解决幻读问题发生的基于 MVCC 和 Next-Key Lock
关于 MySQL 事务的详细介绍,可以看看我写的这篇文章:[MySQL 事务隔离级别详解](https://javaguide.cn/database/mysql/transaction-isolation-level.html)。 关于 MySQL 事务的详细介绍,可以看看我写的这篇文章:[MySQL 事务隔离级别详解](./transaction-isolation-level.md)。
**3.是否支持外键** **3.是否支持外键**
@ -201,7 +201,7 @@ MyISAM 不支持,而 InnoDB 支持。
InnoDB 引擎中,其数据文件本身就是索引文件。相比 MyISAM索引文件和数据文件是分离的其表数据文件本身就是按 B+Tree 组织的一个索引结构,树的叶节点 data 域保存了完整的数据记录。 InnoDB 引擎中,其数据文件本身就是索引文件。相比 MyISAM索引文件和数据文件是分离的其表数据文件本身就是按 B+Tree 组织的一个索引结构,树的叶节点 data 域保存了完整的数据记录。
详细区别,推荐你看看我写的这篇文章:[MySQL 索引详解](https://javaguide.cn/database/mysql/mysql-index.html)。 详细区别,推荐你看看我写的这篇文章:[MySQL 索引详解](./mysql-index.md)。
**7.性能有差别。** **7.性能有差别。**
@ -237,7 +237,7 @@ InnoDB 的性能比 MyISAM 更强大,不管是在读写混合模式下还是
## MySQL 索引 ## MySQL 索引
MySQL 索引相关的问题比较多,对于面试和工作都比较重要,于是,我单独抽了一篇文章专门来总结 MySQL 索引相关的知识点和问题: [MySQL 索引详解](https://javaguide.cn/database/mysql/mysql-index.html) 。 MySQL 索引相关的问题比较多,对于面试和工作都比较重要,于是,我单独抽了一篇文章专门来总结 MySQL 索引相关的知识点和问题:[MySQL 索引详解](./mysql-index.md) 。
## MySQL 查询缓存 ## MySQL 查询缓存
@ -282,7 +282,7 @@ SELECT sql_no_cache COUNT(*) FROM usr;
- undo log 如何保证事务的原子性? - undo log 如何保证事务的原子性?
- ...... - ......
上诉问题的答案可以在[《Java 面试指北》(付费)](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html) 的 **「技术面试题篇」** 中找到。 上诉问题的答案可以在[《Java 面试指北》(付费)](../../zhuanlan/java-mian-shi-zhi-bei.md) 的 **「技术面试题篇」** 中找到。
![《Java 面试指北》技术面试题篇](https://oss.javaguide.cn/javamianshizhibei/technical-interview-questions.png) ![《Java 面试指北》技术面试题篇](https://oss.javaguide.cn/javamianshizhibei/technical-interview-questions.png)
@ -420,7 +420,7 @@ MVCC 在 MySQL 中实现所依赖的手段主要是: **隐藏字段、read view
- undo log : undo log 用于记录某行数据的多个版本的数据。 - undo log : undo log 用于记录某行数据的多个版本的数据。
- read view 和 隐藏字段 : 用来判断当前版本数据的可见性。 - read view 和 隐藏字段 : 用来判断当前版本数据的可见性。
关于 InnoDB 对 MVCC 的具体实现可以看这篇文章:[InnoDB 存储引擎对 MVCC 的实现](https://javaguide.cn/database/mysql/innodb-implementation-of-mvcc.html) 。 关于 InnoDB 对 MVCC 的具体实现可以看这篇文章:[InnoDB 存储引擎对 MVCC 的实现](./innodb-implementation-of-mvcc.md) 。
### SQL 标准定义了哪些事务隔离级别? ### SQL 标准定义了哪些事务隔离级别?
@ -459,7 +459,7 @@ mysql> SELECT @@tx_isolation;
+-----------------+ +-----------------+
``` ```
关于 MySQL 事务隔离级别的详细介绍,可以看看我写的这篇文章:[MySQL 事务隔离级别详解](https://javaguide.cn/database/mysql/transaction-isolation-level.html)。 关于 MySQL 事务隔离级别的详细介绍,可以看看我写的这篇文章:[MySQL 事务隔离级别详解](./transaction-isolation-level.md)。
## MySQL 锁 ## MySQL 锁
@ -645,7 +645,7 @@ MySQL 提供了两个方法来处理 ip 地址
### 有哪些常见的 SQL 优化手段? ### 有哪些常见的 SQL 优化手段?
[《Java 面试指北》(付费)](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html) 的 **「技术面试题篇」** 有一篇文章详细介绍了常见的 SQL 优化手段,非常全面,清晰易懂! [《Java 面试指北》(付费)](../../zhuanlan/java-mian-shi-zhi-bei.md) 的 **「技术面试题篇」** 有一篇文章详细介绍了常见的 SQL 优化手段,非常全面,清晰易懂!
![常见的 SQL 优化手段](https://oss.javaguide.cn/javamianshizhibei/javamianshizhibei-sql-optimization.png) ![常见的 SQL 优化手段](https://oss.javaguide.cn/javamianshizhibei/javamianshizhibei-sql-optimization.png)
@ -688,15 +688,15 @@ mysql> EXPLAIN SELECT `score`,`name` FROM `cus_order` ORDER BY `score` DESC;
| filtered | 按表条件过滤后,留存的记录数的百分比 | | filtered | 按表条件过滤后,留存的记录数的百分比 |
| Extra | 附加信息 | | Extra | 附加信息 |
篇幅问题,我这里只是简单介绍了一下 MySQL 执行计划,详细介绍请看:[SQL 的执行计划](https://javaguide.cn/database/mysql/mysql-query-execution-plan.html)这篇文章。 篇幅问题,我这里只是简单介绍了一下 MySQL 执行计划,详细介绍请看:[SQL 的执行计划](./mysql-query-execution-plan.md)这篇文章。
### 读写分离和分库分表了解吗? ### 读写分离和分库分表了解吗?
读写分离和分库分表相关的问题比较多,于是,我单独写了一篇文章来介绍: [读写分离和分库分表详解](https://javaguide.cn/high-performance/read-and-write-separation-and-library-subtable.html)。 读写分离和分库分表相关的问题比较多,于是,我单独写了一篇文章来介绍:[读写分离和分库分表详解](../../high-performance/read-and-write-separation-and-library-subtable.md)。
## MySQL 学习资料推荐 ## MySQL 学习资料推荐
**书籍推荐** :参见:[https://javaguide.cn/books/database.html#mysql](https://javaguide.cn/books/database.html#mysql) 。 [**书籍推荐**](../../books/database.md#mysql) 。
**文章推荐** : **文章推荐** :
@ -711,12 +711,12 @@ mysql> EXPLAIN SELECT `score`,`name` FROM `cus_order` ORDER BY `score` DESC;
- 《高性能 MySQL》第 7 章 MySQL 高级特性 - 《高性能 MySQL》第 7 章 MySQL 高级特性
- 《MySQL 技术内幕 InnoDB 存储引擎》第 6 章 锁 - 《MySQL 技术内幕 InnoDB 存储引擎》第 6 章 锁
- Relational Databasehttps://www.omnisci.com/technical-glossary/relational-database - Relational Database<https://www.omnisci.com/technical-glossary/relational-database>
- 技术分享 | 隔离级别正确理解幻读https://opensource.actionsky.com/20210818-mysql/ - 技术分享 | 隔离级别:正确理解幻读:<https://opensource.actionsky.com/20210818-mysql/>
- MySQL Server Logs - MySQL 5.7 Reference Manualhttps://dev.mysql.com/doc/refman/5.7/en/server-logs.html - MySQL Server Logs - MySQL 5.7 Reference Manual<https://dev.mysql.com/doc/refman/5.7/en/server-logs.html>
- Redo Log - MySQL 5.7 Reference Manualhttps://dev.mysql.com/doc/refman/5.7/en/innodb-redo-log.html - Redo Log - MySQL 5.7 Reference Manual<https://dev.mysql.com/doc/refman/5.7/en/innodb-redo-log.html>
- Locking Reads - MySQL 5.7 Reference Manualhttps://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html - Locking Reads - MySQL 5.7 Reference Manual<https://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html>
- 深入理解数据库行锁与表锁 https://zhuanlan.zhihu.com/p/52678870 - 深入理解数据库行锁与表锁 <https://zhuanlan.zhihu.com/p/52678870>
- 详解 MySQL InnoDB 中意向锁的作用https://juejin.cn/post/6844903666332368909 - 详解 MySQL InnoDB 中意向锁的作用:<https://juejin.cn/post/6844903666332368909>
- 深入剖析 MySQL 自增锁https://juejin.cn/post/6968420054287253540 - 深入剖析 MySQL 自增锁:<https://juejin.cn/post/6968420054287253540>
- 在数据库中不可重复读和幻读到底应该怎么分https://www.zhihu.com/question/392569386 - 在数据库中不可重复读和幻读到底应该怎么分?:<https://www.zhihu.com/question/392569386>

View File

@ -5,7 +5,7 @@ tag:
- Redis - Redis
--- ---
**缓存基础** 相关的面试题为我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html)中。 **缓存基础** 相关的面试题为我的 [知识星球](../../about-the-author/zhishixingqiu-two-years.md)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](../../zhuanlan/java-mian-shi-zhi-bei.md)中。
![](https://oss.javaguide.cn/javamianshizhibei/database-questions.png) ![](https://oss.javaguide.cn/javamianshizhibei/database-questions.png)

View File

@ -5,7 +5,7 @@ tag:
- Redis - Redis
--- ---
**Redis 集群** 相关的面试题为我的[知识星球](https://javaguide.cn/about-the-author/zhishixingqiu-two-years.html)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](https://javaguide.cn/zhuanlan/java-mian-shi-zhi-bei.html)中。 **Redis 集群** 相关的面试题为我的 [知识星球](../../about-the-author/zhishixingqiu-two-years.md)(点击链接即可查看详细介绍以及加入方法)专属内容,已经整理到了[《Java 面试指北》](../../zhuanlan/java-mian-shi-zhi-bei.md)中。
![](https://oss.javaguide.cn/github/javaguide/database/redis/redis-cluster-javamianshizhibei.png) ![](https://oss.javaguide.cn/github/javaguide/database/redis/redis-cluster-javamianshizhibei.png)

View File

@ -61,7 +61,7 @@ String 是一种二进制安全的数据结构,可以用来存储任何类型
| DEL key通用 | 删除指定的 key | | DEL key通用 | 删除指定的 key |
| EXPIRE key seconds通用 | 给指定 key 设置过期时间 | | EXPIRE key seconds通用 | 给指定 key 设置过期时间 |
更多 Redis String 命令以及详细使用指南,请查看 Redis 官网对应的介绍https://redis.io/commands/?group=string 。 更多 Redis String 命令以及详细使用指南,请查看 Redis 官网对应的介绍:<https://redis.io/commands/?group=string>
**基本操作** **基本操作**
@ -154,7 +154,7 @@ Redis 中的 List 其实就是链表数据结构的实现。我在 [线性数据
| LLEN key | 获取列表元素数量 | | LLEN key | 获取列表元素数量 |
| LRANGE key start end | 获取列表 start 和 end 之间 的元素 | | LRANGE key start end | 获取列表 start 和 end 之间 的元素 |
更多 Redis List 命令以及详细使用指南,请查看 Redis 官网对应的介绍https://redis.io/commands/?group=list 。 更多 Redis List 命令以及详细使用指南,请查看 Redis 官网对应的介绍:<https://redis.io/commands/?group=list>
**通过 `RPUSH/LPOP` 或者 `LPUSH/RPOP`实现队列** **通过 `RPUSH/LPOP` 或者 `LPUSH/RPOP`实现队列**
@ -247,7 +247,7 @@ Hash 类似于 JDK1.8 前的 `HashMap`,内部实现也差不多(数组 + 链
| HLEN key | 获取指定哈希表中字段的数量 | | HLEN key | 获取指定哈希表中字段的数量 |
| HINCRBY key field increment | 对指定哈希中的指定字段做运算操作(正数为加,负数为减) | | HINCRBY key field increment | 对指定哈希中的指定字段做运算操作(正数为加,负数为减) |
更多 Redis Hash 命令以及详细使用指南,请查看 Redis 官网对应的介绍https://redis.io/commands/?group=hash 。 更多 Redis Hash 命令以及详细使用指南,请查看 Redis 官网对应的介绍:<https://redis.io/commands/?group=hash>
**模拟对象数据存储** **模拟对象数据存储**
@ -308,7 +308,7 @@ Redis 中的 Set 类型是一种无序集合,集合中的元素没有先后顺
| SPOP key count | 随机移除并获取指定集合中一个或多个元素 | | SPOP key count | 随机移除并获取指定集合中一个或多个元素 |
| SRANDMEMBER key count | 随机获取指定集合中指定数量的元素 | | SRANDMEMBER key count | 随机获取指定集合中指定数量的元素 |
更多 Redis Set 命令以及详细使用指南,请查看 Redis 官网对应的介绍https://redis.io/commands/?group=set 。 更多 Redis Set 命令以及详细使用指南,请查看 Redis 官网对应的介绍:<https://redis.io/commands/?group=set>
**基本操作** **基本操作**
@ -399,7 +399,7 @@ Sorted Set 类似于 Set但和 Set 相比Sorted Set 增加了一个权重
| ZREVRANGE key start end | 获取指定有序集合 start 和 end 之间的元素score 从高到底) | | ZREVRANGE key start end | 获取指定有序集合 start 和 end 之间的元素score 从高到底) |
| ZREVRANK key member | 获取指定有序集合中指定元素的排名(score 从大到小排序) | | ZREVRANK key member | 获取指定有序集合中指定元素的排名(score 从大到小排序) |
更多 Redis Sorted Set 命令以及详细使用指南,请查看 Redis 官网对应的介绍https://redis.io/commands/?group=sorted-set 。 更多 Redis Sorted Set 命令以及详细使用指南,请查看 Redis 官网对应的介绍:<https://redis.io/commands/?group=sorted-set>
**基本操作** **基本操作**
@ -485,7 +485,7 @@ value1
## 参考 ## 参考
- Redis Data Structures https://redis.com/redis-enterprise/data-structures/ 。 - Redis Data Structures<https://redis.com/redis-enterprise/data-structures/>
- Redis Commands https://redis.io/commands/ - Redis Commands<https://redis.io/commands/>
- Redis Data types tutorialhttps://redis.io/docs/manual/data-types/data-types-tutorial/ 。 - Redis Data types tutorial<https://redis.io/docs/manual/data-types/data-types-tutorial/>
- Redis 存储对象信息是用 Hash 还是 String : https://segmentfault.com/a/1190000040032006 - Redis 存储对象信息是用 Hash 还是 String : <https://segmentfault.com/a/1190000040032006>

View File

@ -89,7 +89,7 @@ Spring Cloud Gateway 不仅提供统一的路由方式,并且基于 Filter 链
Spring Cloud Gateway 和 Zuul 2.x 的差别不大,也是通过过滤器来处理请求。不过,目前更加推荐使用 Spring Cloud Gateway 而非 ZuulSpring Cloud 生态对其支持更加友好。 Spring Cloud Gateway 和 Zuul 2.x 的差别不大,也是通过过滤器来处理请求。不过,目前更加推荐使用 Spring Cloud Gateway 而非 ZuulSpring Cloud 生态对其支持更加友好。
- GitHub 地址 <https://github.com/spring-cloud/spring-cloud-gateway> - Github 地址 <https://github.com/spring-cloud/spring-cloud-gateway>
- 官网: <https://spring.io/projects/spring-cloud-gateway> - 官网: <https://spring.io/projects/spring-cloud-gateway>
### Kong ### Kong
@ -117,7 +117,7 @@ $ curl -X POST http://kong:8001/services/{service}/plugins \
![](https://oss.javaguide.cn/github/javaguide/system-design/distributed-system/api-gateway/kong-gateway-overview.png) ![](https://oss.javaguide.cn/github/javaguide/system-design/distributed-system/api-gateway/kong-gateway-overview.png)
- GitHub 地址: <https://github.com/Kong/kong> - Github 地址: <https://github.com/Kong/kong>
- 官网地址: <https://konghq.com/kong> - 官网地址: <https://konghq.com/kong>
### APISIX ### APISIX
@ -143,7 +143,7 @@ APISIX 同样支持定制化的插件开发。开发者除了能够使用 Lua
![](https://oscimg.oschina.net/oscnet/up-a240d3b113cde647f5850f4c7cc55d4ff5c.png) ![](https://oscimg.oschina.net/oscnet/up-a240d3b113cde647f5850f4c7cc55d4ff5c.png)
- GitHub 地址 <https://github.com/apache/apisix> - Github 地址<https://github.com/apache/apisix>
- 官网地址: <https://apisix.apache.org/zh/> - 官网地址: <https://apisix.apache.org/zh/>
相关阅读: 相关阅读:
@ -161,7 +161,7 @@ Shenyu 是一款基于 WebFlux 的可扩展、高性能、响应式网关Apac
Shenyu 通过插件扩展功能,插件是 ShenYu 的灵魂并且插件也是可扩展和热插拔的。不同的插件实现不同的功能。Shenyu 自带了诸如限流、熔断、转发、重写、重定向、和路由监控等插件。 Shenyu 通过插件扩展功能,插件是 ShenYu 的灵魂并且插件也是可扩展和热插拔的。不同的插件实现不同的功能。Shenyu 自带了诸如限流、熔断、转发、重写、重定向、和路由监控等插件。
- GitHub 地址: <https://github.com/apache/incubator-shenyu> - Github 地址: <https://github.com/apache/incubator-shenyu>
- 官网地址: <https://shenyu.apache.org/> - 官网地址: <https://shenyu.apache.org/>
## 参考 ## 参考

View File

@ -168,6 +168,6 @@ span 是层的意思,比如在第一个实例算是第一层, 请求代理
实际是在 dwz.cn 域名后面拼接新产生的数字类型 ID直接用数字 ID网址长度也有些长服务可以通过数字 ID 转更高进制的方式压缩长度。这种算法在短网址的技术实现上越来越多了起来,它可以进一步压缩网址长度。转进制的压缩算法在生活中有广泛的应用场景,举例: 实际是在 dwz.cn 域名后面拼接新产生的数字类型 ID直接用数字 ID网址长度也有些长服务可以通过数字 ID 转更高进制的方式压缩长度。这种算法在短网址的技术实现上越来越多了起来,它可以进一步压缩网址长度。转进制的压缩算法在生活中有广泛的应用场景,举例:
- 客户的长网址https://wenku.baidu.com/ndbusiness/browse/wenkuvipcashier?cashier_code=PCoperatebanner - 客户的长网址:<https://wenku.baidu.com/ndbusiness/browse/wenkuvipcashier?cashier_code=PCoperatebanner>
- ID 映射的短网址https://dwz.cn/2047601319t66 (演示使用,可能无法正确打开) - ID 映射的短网址:<https://dwz.cn/2047601319t66> (演示使用,可能无法正确打开)
- 转进制后的短网址https://dwz.cn/2ezwDJ0(演示使用,可能无法正确打开) - 转进制后的短网址:<https://dwz.cn/2ezwDJ0> (演示使用,可能无法正确打开)

View File

@ -31,7 +31,7 @@ LMAX 公司 2010 年在 QCon 演讲后Disruptor 获得了业界关注,并
Disruptor 提供的功能优点类似于 Kafka、RocketMQ 这类分布式队列,不过,其作为范围是 JVM(内存)。 Disruptor 提供的功能优点类似于 Kafka、RocketMQ 这类分布式队列,不过,其作为范围是 JVM(内存)。
- GitHub 地址:<https://github.com/LMAX-Exchange/disruptor> - Github 地址:<https://github.com/LMAX-Exchange/disruptor>
- 官方教程: <https://lmax-exchange.github.io/disruptor/user-guide/index.html> - 官方教程: <https://lmax-exchange.github.io/disruptor/user-guide/index.html>
关于如何在 Spring Boot 项目中使用 Disruptor可以看这篇文章[Spring Boot + Disruptor 实战入门](https://mp.weixin.qq.com/s/0iG5brK3bYF0BgSjX4jRiA) 。 关于如何在 Spring Boot 项目中使用 Disruptor可以看这篇文章[Spring Boot + Disruptor 实战入门](https://mp.weixin.qq.com/s/0iG5brK3bYF0BgSjX4jRiA) 。

View File

@ -123,7 +123,6 @@ JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8](https://docs.oracle.
- [后端程序员必备的 Linux 基础知识总结](./cs-basics/operating-system/linux-intro.md) - [后端程序员必备的 Linux 基础知识总结](./cs-basics/operating-system/linux-intro.md)
- [Shell 编程基础知识总结](./cs-basics/operating-system/shell-intro.md) - [Shell 编程基础知识总结](./cs-basics/operating-system/shell-intro.md)
### 网络 ### 网络
**知识点/面试题总结** **知识点/面试题总结**

View File

@ -36,14 +36,14 @@ icon: jianli
下面是我收集的一些还不错的简历模板: 下面是我收集的一些还不错的简历模板:
- 适合中文的简历模板收集推荐免费https://github.com/dyweb/awesome-resume-for-chinese - 适合中文的简历模板收集(推荐,免费):<https://github.com/dyweb/awesome-resume-for-chinese>
- 木及简历(部分收费) https://www.mujicv.com/。 - 木及简历(部分收费)<https://www.mujicv.com/>
- 简单简历付费https://easycv.cn/ - 简单简历(付费):<https://easycv.cn/>
- 站长简历https://jianli.chinaz.com/ - 站长简历:<https://jianli.chinaz.com/>
- typora+markdown+css 自定义简历模板 https://github.com/Snailclimb/typora-markdown-resume - typora+markdown+css 自定义简历模板:<https://github.com/Snailclimb/typora-markdown-resume>
- 极简简历 https://www.polebrief.com/index - 极简简历<https://www.polebrief.com/index>
- Markdown 简历排版工具https://resume.mdnice.com/ - Markdown 简历排版工具:<https://resume.mdnice.com/>
- 超级简历(部分收费) https://www.wondercv.com/ - 超级简历(部分收费)<https://www.wondercv.com/>
上面这些简历模板大多是只有 1 页内容,很难展现足够的信息量。如果你不是顶级大牛(比如 ACM 大赛获奖)的话,我建议还是尽可能多写一点可以突出你自己能力的内容(校招生 2 页之内,社招生 3 页之内,记得精炼语言,不要过多废话)。 上面这些简历模板大多是只有 1 页内容,很难展现足够的信息量。如果你不是顶级大牛(比如 ACM 大赛获奖)的话,我建议还是尽可能多写一点可以突出你自己能力的内容(校招生 2 页之内,社招生 3 页之内,记得精炼语言,不要过多废话)。

View File

@ -14,7 +14,7 @@ icon: help
《JavaGuide 面试突击版》在我的公众号后台回复“**PDF**”即可获取,免费的。除了 《JavaGuide 面试突击版》之外,还会免费送你多本优质面试 PDF 手册。 《JavaGuide 面试突击版》在我的公众号后台回复“**PDF**”即可获取,免费的。除了 《JavaGuide 面试突击版》之外,还会免费送你多本优质面试 PDF 手册。
<div align="center"> <img src="https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png" style="margin: 0 auto;" /> </div> ![公众号](https://oss.javaguide.cn/github/javaguide/gongzhonghaoxuanchuan.png)
## 如何看待 JavaGuide 的 star 数量很多? ## 如何看待 JavaGuide 的 star 数量很多?

View File

@ -955,6 +955,6 @@ public abstract class TestBase {
} }
``` ```
_暂时总结到这里吧虽然花了挺长时间才写完不过可能还是会一些常用的注解的被漏掉所以我将文章也同步到了 GitHub 上去GitHub 地址: 欢迎完善_ _暂时总结到这里吧虽然花了挺长时间才写完不过可能还是会一些常用的注解的被漏掉所以我将文章也同步到了 Github 上去Github 地址: 欢迎完善_
本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide[https://github.com/Snailclimb/JavaGuide](https://github.com/Snailclimb/JavaGuide)。 本文已经收录进我的 75K Star 的 Java 开源项目 JavaGuide[https://github.com/Snailclimb/JavaGuide](https://github.com/Snailclimb/JavaGuide)。