diff --git a/docs/.vuepress/config.ts b/docs/.vuepress/config.ts index 2e87d4a2..4bfa7184 100644 --- a/docs/.vuepress/config.ts +++ b/docs/.vuepress/config.ts @@ -25,7 +25,7 @@ module.exports = defineHopeConfig({ "link", { rel: "stylesheet", - href: "//at.alicdn.com/t/font_2922463_lu595twe5t.css", + href: "//at.alicdn.com/t/font_2922463_vua8ycbr0j.css", }, ], ], diff --git a/docs/.vuepress/navbar.ts b/docs/.vuepress/navbar.ts index d593f9b5..fe1eedc5 100644 --- a/docs/.vuepress/navbar.ts +++ b/docs/.vuepress/navbar.ts @@ -1,16 +1,8 @@ import { defineNavbarConfig } from "vuepress-theme-hope"; export const navbarConfig = defineNavbarConfig([ - { text: "Java面试指南", icon: "java", link: "/home" }, - { - text: "Java面试指北", - icon: "recommend", - link: "https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7", - }, - { - text: "官方知识星球", - icon: "recommend", - link: "https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc", - }, + { text: "Java面试指南", icon: "java", link: "/home.md" }, + { text: "Java优质专栏", icon: "recommend", link: "/zhuanlan/" }, { text: "关于作者", icon: "zuozhe", link: "/about-the-author/" }, + { text: "RSS订阅", icon: "zuozhe", link: "/feed.json" }, ]); diff --git a/docs/.vuepress/sidebar.ts b/docs/.vuepress/sidebar.ts index d645cc2d..9b8abcf0 100644 --- a/docs/.vuepress/sidebar.ts +++ b/docs/.vuepress/sidebar.ts @@ -3,6 +3,7 @@ import { defineSidebarConfig } from "vuepress-theme-hope"; export const sidebarConfig = defineSidebarConfig({ // 应该把更精确的路径放置在前边 "/javaguide/": ["intro", "contribution-guideline", "faq", "todo"], + "/zhuanlan/": ["java-mian-shi-zhi-bei", "handwritten-rpc-framework"], "/about-the-author/": [ { text: "个人经历", @@ -22,6 +23,7 @@ export const sidebarConfig = defineSidebarConfig({ children: [ "my-article-was-stolen-and-made-into-video-and-it-became-popular", "dog-that-copies-other-people-essay", + "zhishixingqiu-two-years", ], }, ], @@ -45,7 +47,7 @@ export const sidebarConfig = defineSidebarConfig({ }, { text: "面试", - icon: "mianshixinxi-02", + icon: "mianshi", prefix: "interview/", collapsable: false, children: [ @@ -64,6 +66,16 @@ export const sidebarConfig = defineSidebarConfig({ ], // 必须放在最后面 "/": [ + { + text: "面试准备", + icon: "mianshi", + prefix: "interview-preparation/", + collapsable: true, + children: [ + "teach-you-how-to-prepare-for-the-interview-hand-in-hand", + "interview-experience", + ], + }, { text: "Java", icon: "java", @@ -89,7 +101,6 @@ export const sidebarConfig = defineSidebarConfig({ "proxy", "io", "bigdecimal", - "generics", ], }, ], diff --git a/docs/about-the-author/zhishixingqiu-two-years.md b/docs/about-the-author/zhishixingqiu-two-years.md new file mode 100644 index 00000000..34f7d511 --- /dev/null +++ b/docs/about-the-author/zhishixingqiu-two-years.md @@ -0,0 +1,87 @@ +--- +title: 我的知识星球运营两年多了! +category: 知识星球 +--- + +时间过的真快,知识星球我已经运营了有 2 年多了! + +在 2019 年 12 月 29 号,经过了大概一年左右的犹豫期,我正式确定要开始做一个自己的星球。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2021-1/%E7%9F%A5%E8%AF%86%E6%96%B0%E7%90%83%E4%B8%80%E5%91%A8%E5%B9%B4-0293.jpg) + +## 什么是知识星球? + +简单来说,知识星球就是一个私密交流圈子,主要用途是知识创作者连接铁杆读者/粉丝。 + +相比于微信群,知识星球内容沉淀、信息管理更高效。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211223754566.png) + +## 为什么要做知识星球? + +1. 主要目的是为了借助自身的认知,切实地帮助到一些需要帮助的小伙伴。 +2. 将知识沉淀下来(微信群实在是太不适合知识沉淀了)。 +3. 为准备面试的小伙伴提供一个面试交流平台。 +4. 为爱学习爱读书的小伙伴提供了一个纯粹的技术交流环境。 + +## 我的星球能为你提供什么? + +加入到我的星球之后,你将获得: + +1. 6 个高质量的小册永久阅读,内容涵盖面试,源码解析,手写 RPC 框架等内容!价值远超门票! +2. 专属求职指南和建议,帮助你逆袭大厂! +3. 一对一免费提问交流(专属建议,走心回答)。 +4. 免费的简历修改服务(已经累计帮助 1800+ 位球友)。 +5. 海量 Java 优质面试资源分享!价值远超门票! +6. 读书交流,学习交流,让我们一起努力创造一个纯粹的学习交流社区。 +7. 不定期福利:节日抽奖、送书送课、球友线下聚会等 + +星球运行 2 年多,我累计帮助 **1800+** 位球友提供了免费的简历修改服务,回答了 **800+** 个问题,产出了 **1800+** 个主题。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/2021-1/image-20210102184923199.png) + +除了 **《Java 面试指北》** 之外,星球还有 **《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)、 **《从零开始写一个 RPC 框架》**(已更新完) 、**《Kafka 常见面试题/知识点总结》** 等多个专属小册。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231206733.png) + +《Java 面试指北》的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者配合使用。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/1&e=1648742399&token=kIxbL07-8jAj8w1n4s9zv64FuZZNEATmlU_Vm6zD:HyfLWy5gNC5F_XukPYrlj_a4EJI=.png) + +各种手绘图解,内容非常高! + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211233356435.png) + +再给大家看看我昨天对一位球友的提问的回答,不谦虚地说,是真的走心了。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211223559179.png) + +每个月至少还会又一次有奖励的读书活动,我会带着大家一起读一些优秀的技术书籍! + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211233642079.png) + +毫不夸张!每一期读书活动的获奖率都非常非常非常高!直接超过门票价!!! + +为了带着大家读好书,9月份开始,我抽了很多时间整理完善我的读书笔记在星球分享。仅仅不到一个月,我就更新了 11 本书籍的读书笔记。自夸一下,自认为我分享出来的每一篇读书笔记写的都很认真,基本把原书的精华都概括到了!并且,每一篇读书笔记基本都有我自己的思考。我看了很多好书,后续会慢慢将它们整理成精致的读书笔记分享在星球。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211233919161.png) + +## 如何加入?是否收费? + +刚开知识星球那会,没想着星球会加入这么多人,定价是 **50/年** ,这是星球的最低定价。随着时间推移,星球积累的干货资源越来越多,我花在星球上的时间也越来越多。 + +于是,我将星球的定价慢慢调整为了 **159/年**!是的,星球的价格会慢慢升高的,想要加入的小伙伴一定要尽早加入。 + +你可以添加我的私人微信领取星球专属优惠券,限时 **100** 元/年 加入。一定要备注“星球优惠券”!!! + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231926486.png) + +进入星球之后,你可以为自己制定一个目标,比如自己想要进入某某还不错的公司或者达成什么成就(一定要是还算有点挑战的目标)。 + +待你完成目标在星球分享之后,我会将星球的门票费退还给你。 + +**真诚欢迎准备面试的小伙伴加入星球一起交流!真心希望能够帮助到更多小伙伴!** + +**加入星球之后记得看置顶主题,你会发现物超所值!** + + \ No newline at end of file diff --git a/docs/distributed-system/distributed-transaction.md b/docs/distributed-system/distributed-transaction.md index c020c89e..de735db4 100644 --- a/docs/distributed-system/distributed-transaction.md +++ b/docs/distributed-system/distributed-transaction.md @@ -7,17 +7,4 @@ category: 分布式 《Java 面试指北》的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。 -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/1&e=1648742399&token=kIxbL07-8jAj8w1n4s9zv64FuZZNEATmlU_Vm6zD:HyfLWy5gNC5F_XukPYrlj_a4EJI=.png) - -我已经在星球更新了 **7** 个高质量的小册: **《Java 面试进阶指北》**(持续完善中)、 **《从零开始写一个 RPC 框架》**(已更新完) 、**《Kafka 常见面试题/知识点总结》**、**《程序员副业赚钱之路》**(持续完善)、**《分布式、高并发、Devops 知识扫盲》**、**《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)(持续完善中)。 - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231206733.png) - -如果你需要专属面试小册/一对一交流/简历修改/专属求职指南/学习打卡,不妨花 3 分钟左右看看星球的详细介绍: [JavaGuide 知识星球详细介绍](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc) (一定要确定自己真的需要再加入,一定要看完详细介绍之后再加我)。 - -星球目前的定价为 **159/年**,即将调整为 **199/年**。如果的认可 JavaGuide,相信我,并且需要星球提供的专属服务,那欢迎你加入我的星球。你可以添加我的私人微信领取星球专属优惠券,限时 **100/年** 加入。一定要备注“**星球优惠券**”! - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231926486.png) - -**用心做内容,真心希望帮助到你,拒绝知识付费割韭菜。加油!!!** - +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304102536445.png) diff --git a/docs/high-availability/fallback&circuit-breaker.md b/docs/high-availability/fallback&circuit-breaker.md index acc7b673..18b6fb1f 100644 --- a/docs/high-availability/fallback&circuit-breaker.md +++ b/docs/high-availability/fallback&circuit-breaker.md @@ -4,19 +4,4 @@ 《Java 面试指北》的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。 -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/1&e=1648742399&token=kIxbL07-8jAj8w1n4s9zv64FuZZNEATmlU_Vm6zD:HyfLWy5gNC5F_XukPYrlj_a4EJI=.png) - -我已经在星球更新了 **7** 个高质量的小册: **《Java 面试进阶指北》**(持续完善中)、 **《从零开始写一个 RPC 框架》**(已更新完) 、**《Kafka 常见面试题/知识点总结》**、**《程序员副业赚钱之路》**(持续完善)、**《分布式、高并发、Devops 知识扫盲》**、**《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)(持续完善中)。 - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231206733.png) - -如果你需要专属面试小册/一对一交流/简历修改/专属求职指南/学习打卡,不妨花 3 分钟左右看看星球的详细介绍: [JavaGuide 知识星球详细介绍](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc) (一定要确定自己真的需要再加入,一定要看完详细介绍之后再加我)。 - -星球目前的定价为 **159/年**,即将调整为 **199/年**。如果的认可 JavaGuide,相信我,并且需要星球提供的专属服务,那欢迎你加入我的星球。你可以添加我的私人微信领取星球专属优惠券,限时 **100/年** 加入。一定要备注“**星球优惠券**”! - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231926486.png) - -**用心做内容,真心希望帮助到你,拒绝知识付费割韭菜。加油!!!** - - - +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304102536445.png) diff --git a/docs/home.md b/docs/home.md index 08b16375..df216f4a 100644 --- a/docs/home.md +++ b/docs/home.md @@ -9,28 +9,22 @@ title: JavaGuide(Java学习&&面试指南)

-

- - - -

-

- 阅读 - stars - forks - issues -

-> 1. **面试专版** :准备面试的小伙伴可以考虑面试专版:[《Java 面试进阶指北 》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7) (质量很高,专为面试打造,配合 JavaGuide 食用) -> 2. **转载须知** :以下所有文章如非文首说明为转载皆为我(Guide 哥)的原创,转载在文首注明出处,如发现恶意抄袭/搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境!⛽️ +> 1. **面试专版** :准备面试的小伙伴可以考虑面试专版:[《Java 面试指北 》](./zhuanlan/java-mian-shi-zhi-bei.md) (质量很高,专为面试打造,配合 JavaGuide 食用) +> 2. **转载须知** :以下所有文章如非文首说明为转载皆为我(Guide 哥)的原创,转载在文首注明出处,如发现恶意抄袭/搬运,会动用法律武器维护自己的权益。让我们一起维护一个良好的技术创作环境! -你可能需要: +## 必看专栏 -- [项目介绍](/javaguide/intro) -- [贡献指南](/javaguide/contribution-guideline) -- [常见问题](/javaguide/faq) -- [项目代办](/javaguide/todo) +- **[《Java 面试指北》](./zhuanlan/java-mian-shi-zhi-bei.md)** : 与 JavaGuide 开源版的内容互补! +- **[《手写 RPC 框架》](./zhuanlan/handwritten-rpc-framework.md)** : 从零开始基于 Netty+Kyro+Zookeeper 实现一个简易的 RPC 框架。 + +## 项目相关 + +- [项目介绍](./javaguide/intro.md) +- [贡献指南](./javaguide/contribution-guideline.md) +- [常见问题](./javaguide/faq.md) +- [项目代办](./javaguide/todo.md) ## 面试资源 diff --git a/docs/interview-preparation/interview-experience.md b/docs/interview-preparation/interview-experience.md new file mode 100644 index 00000000..d828d540 --- /dev/null +++ b/docs/interview-preparation/interview-experience.md @@ -0,0 +1,14 @@ +--- +title: 优质面经 +category: 知识星球 +--- + +古人云:“**他山之石,可以攻玉**” 。善于学习借鉴别人的面试的成功经验或者失败的教训,可以让自己少走许多弯路。 + +在 **[《Java 面试指北》](../zhuanlan/java-mian-shi-zhi-bei.md)** 的 **「面经篇」** ,我分享了 10+ 篇高质量的面经: + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304103521611.png) + +并且,[知识星球](../about-the-author/zhishixingqiu-two-years.md)还有专门分享面经和面试题的专题,里面会分享很多优质的面经和面试题。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304120018731.png) diff --git a/docs/interview-preparation/teach-you-how-to-prepare-for-the-interview-hand-in-hand.md b/docs/interview-preparation/teach-you-how-to-prepare-for-the-interview-hand-in-hand.md new file mode 100644 index 00000000..dc0db88d --- /dev/null +++ b/docs/interview-preparation/teach-you-how-to-prepare-for-the-interview-hand-in-hand.md @@ -0,0 +1,16 @@ +--- +title: 手把手教你如何准备面试 +category: 知识星球 +--- + +在 **[《Java 面试指北》](../zhuanlan/java-mian-shi-zhi-bei.md)** 的 **「面试准备篇」** ,我写了 10+ 篇文章手把手教你如何准备面试: + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304120532910.png) + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304120629860.png) + +这个系列涵盖项目经验、简历编写、源码学习、算法准备、面试资源等内容。 + +另外,考虑到很多小伙伴缺少项目经历,除了星球内部的 [《手写 RPC 框架》](../zhuanlan/handwritten-rpc-framework.md)之外,我还推荐了很多小众但优质的实战项目,有视频也有开源项目。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/image-20220308132546961.png) diff --git a/docs/java/basis/generics.md b/docs/java/basis/generics.md deleted file mode 100644 index 164794b6..00000000 --- a/docs/java/basis/generics.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: 泛型连环炮 -category: Java -tag: - - Java基础 ---- - -泛型相关的面试题为我的[知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)专属内容,已经整理到了[《Java 面试指北》](https://www.yuque.com/docs/share/f37fc804-bfe6-4b0d-b373-9c462188fec7)中。 - -《Java 面试指北》的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。 - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/1&e=1648742399&token=kIxbL07-8jAj8w1n4s9zv64FuZZNEATmlU_Vm6zD:HyfLWy5gNC5F_XukPYrlj_a4EJI=.png) - -我已经在星球更新了 **7** 个高质量的小册: **《Java 面试进阶指北》**(持续完善中)、 **《从零开始写一个 RPC 框架》**(已更新完) 、**《Kafka 常见面试题/知识点总结》**、**《程序员副业赚钱之路》**(持续完善)、**《分布式、高并发、Devops 知识扫盲》**、**《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)(持续完善中)。 - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231206733.png) - -如果你需要专属面试小册/一对一交流/简历修改/专属求职指南/学习打卡,不妨花 3 分钟左右看看星球的详细介绍: [JavaGuide 知识星球详细介绍](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc) (一定要确定自己真的需要再加入,一定要看完详细介绍之后再加我)。 - -星球目前的定价为 **159/年**,即将调整为 **199/年**。如果的认可 JavaGuide,相信我,并且需要星球提供的专属服务,那欢迎你加入我的星球。你可以添加我的私人微信领取星球专属优惠券,限时 **100/年** 加入。一定要备注“**星球优惠券**”! - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231926486.png) - -**用心做内容,真心希望帮助到你,拒绝知识付费割韭菜。加油!!!** - - - - - diff --git a/docs/readme.md b/docs/readme.md index 49a180bd..bc64e33f 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -9,28 +9,24 @@ actions: - text: 开始阅读 link: /home/ type: primary - - text: 关于作者 - link: /about-the-author/ - type: default - text: 知识星球 - link: https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc + link: /about-the-author/zhishixingqiu-two-years.md type: default --- -## 👍官方知识星球 +## 必看专栏 - [JavaGuide 官方知识星球](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc)来啦!!!如果你需要专属面试小册/一对一交流/简历修改/专属求职指南/学习打卡,不妨花 3 分钟左右看看星球的详细介绍: [JavaGuide 知识星球详细介绍](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc) (一定要确定自己真的需要再加入,一定要看完详细介绍之后再加我)。 +- **[《Java 面试指北》](./zhuanlan/java-mian-shi-zhi-bei.md)** : 与 JavaGuide 开源版的内容互补! +- **[《手写 RPC 框架》](./zhuanlan/handwritten-rpc-framework.md)** : 从零开始基于 Netty+Kyro+Zookeeper 实现一个简易的 RPC 框架。 -**用心做内容,真心希望帮助到你,拒绝知识付费割韭菜。加油!!!** - -## 👉推荐阅读 +## 推荐阅读 - [Java学习路线](https://zhuanlan.zhihu.com/p/379041500) : 一份涵盖 Java 后端开发必备技能的学习路线!全面且清晰! - [Java开源项目精选](https://gitee.com/SnailClimb/awesome-java) :收集整理了 Gitee/Github 上非常棒的 Java 开源项目集合。Java 开发必备! - [Java技术文章精选集](/high-quality-technical-articles/) : 精选一些和 Java 相关的优质技术文章,每一篇都值得你阅读 3 遍以上! - [Java书单精选](https://gitee.com/SnailClimb/awesome-cs) : Java 后端开发值得一读的一些书籍。 -## 🔥PDF 资源 +## PDF - [《JavaGuide 面试突击版》](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=100029614&idx=1&sn=62993c5cf10265cb7018db7f1ec67250&chksm=4ea1fb6579d67273499b7243641d4ef372decd08047bfbb6dfb5843ef81c7ccba209086cf345#rd) - [《消息队列常见知识点&面试题总结》](https://t.1yb.co/Fy0u) @@ -38,13 +34,13 @@ actions: - [《分布式相关面试题汇总》](https://t.1yb.co/GXLF) - [《图解计算机基础》](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=100021725&idx=1&sn=2db9664ca25363139a81691043e9fd8f&chksm=4ea19a1679d61300d8990f7e43bfc7f476577a81b712cf0f9c6f6552a8b219bc081efddb5c54#rd) -## 💡官方公众号 +## 公众号 最新更新会第一时间同步在公众号,强烈推荐大家关注一波!另外,公众号上有很多干货不会同步在线阅读网站。 ![我的公众号](https://cdn.jsdelivr.net/gh/javaguide-tech/blog-images/2020-08/167598cd2e17b8ec.png) -## 📧联系我 +## 联系我 交流/加群/互看朋友圈,欢迎添加我的微信(备注“Github”即可)。 diff --git a/docs/system-design/framework/netty.md b/docs/system-design/framework/netty.md index 19b03f87..fcd75b36 100644 --- a/docs/system-design/framework/netty.md +++ b/docs/system-design/framework/netty.md @@ -7,17 +7,4 @@ Netty 相关的面试题为我的[知识星球](https://www.yuque.com/docs/share 《Java 面试指北》的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。 -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/1&e=1648742399&token=kIxbL07-8jAj8w1n4s9zv64FuZZNEATmlU_Vm6zD:HyfLWy5gNC5F_XukPYrlj_a4EJI=.png) - -我已经在星球更新了 **7** 个高质量的小册: **《Java 面试进阶指北》**(持续完善中)、 **《从零开始写一个 RPC 框架》**(已更新完) 、**《Kafka 常见面试题/知识点总结》**、**《程序员副业赚钱之路》**(持续完善)、**《分布式、高并发、Devops 知识扫盲》**、**《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)(持续完善中)。 - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231206733.png) - -如果你需要专属面试小册/一对一交流/简历修改/专属求职指南/学习打卡,不妨花 3 分钟左右看看星球的详细介绍: [JavaGuide 知识星球详细介绍](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc) (一定要确定自己真的需要再加入,一定要看完详细介绍之后再加我)。 - -星球目前的定价为 **159/年**,即将调整为 **199/年**。如果的认可 JavaGuide,相信我,并且需要星球提供的专属服务,那欢迎你加入我的星球。你可以添加我的私人微信领取星球专属优惠券,限时 **100/年** 加入。一定要备注“**星球优惠券**”! - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231926486.png) - -**用心做内容,真心希望帮助到你,拒绝知识付费割韭菜。加油!!!** - +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304102536445.png) diff --git a/docs/system-design/system-design-questions.md b/docs/system-design/system-design-questions.md index 76c77f69..cdb4489c 100644 --- a/docs/system-design/system-design-questions.md +++ b/docs/system-design/system-design-questions.md @@ -7,17 +7,4 @@ category: Java面试指北 《Java 面试指北》的部分内容展示如下,你可以将其看作是 [JavaGuide](https://javaguide.cn/#/) 的补充完善,两者可以配合使用。 -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/1&e=1648742399&token=kIxbL07-8jAj8w1n4s9zv64FuZZNEATmlU_Vm6zD:HyfLWy5gNC5F_XukPYrlj_a4EJI=.png) - -我已经在星球更新了 **7** 个高质量的小册: **《Java 面试进阶指北》**(持续完善中)、 **《从零开始写一个 RPC 框架》**(已更新完) 、**《Kafka 常见面试题/知识点总结》**、**《程序员副业赚钱之路》**(持续完善)、**《分布式、高并发、Devops 知识扫盲》**、**《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码)(持续完善中)。 - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231206733.png) - -如果你需要专属面试小册/一对一交流/简历修改/专属求职指南/学习打卡,不妨花 3 分钟左右看看星球的详细介绍: [JavaGuide 知识星球详细介绍](https://www.yuque.com/docs/share/8a30ffb5-83f3-40f9-baf9-38de68b906dc) (一定要确定自己真的需要再加入,一定要看完详细介绍之后再加我)。 - -星球目前的定价为 **159/年**,即将调整为 **199/年**。如果的认可 JavaGuide,相信我,并且需要星球提供的专属服务,那欢迎你加入我的星球。你可以添加我的私人微信领取星球专属优惠券,限时 **100/年** 加入。一定要备注“**星球优惠券**”! - -![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231926486.png) - -**用心做内容,真心希望帮助到你,拒绝知识付费割韭菜。加油!!!** - +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304102536445.png) diff --git a/docs/zhuanlan/handwritten-rpc-framework.md b/docs/zhuanlan/handwritten-rpc-framework.md new file mode 100644 index 00000000..522acbfd --- /dev/null +++ b/docs/zhuanlan/handwritten-rpc-framework.md @@ -0,0 +1,77 @@ +--- +title: 《手写 RPC 框架》 +category: 知识星球 +--- + +## 介绍 + +**《手写 RPC 框架》** 是我的[知识星球](../about-the-author/zhishixingqiu-two-years.md)的一个内部小册,我写了 12 篇文章来讲解如何从零开始基于 Netty+Kyro+Zookeeper 实现一个简易的 RPC 框架。 + +麻雀虽小五脏俱全,项目代码注释详细,结构清晰,并且集成了 Check Style 规范代码结构,非常适合阅读和学习。 + +## 内容概览 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/github/javaguide/image-20220308100605485.png) + +通过这个简易的轮子,你可以学到 RPC 的底层原理和原理以及各种 Java 编码实践的运用。你甚至可以把它当做你的毕设/项目经验的选择,这是非常不错!对比其他求职者的项目经验都是各种系统,造轮子肯定是更加能赢得面试官的青睐。 + +- Github 地址:[https://github.com/Snailclimb/guide-rpc-framework](https://github.com/Snailclimb/guide-rpc-framework) 。 +- Gitee 地址:[https://gitee.com/SnailClimb/guide-rpc-framework](https://gitee.com/SnailClimb/guide-rpc-framework) 。 + +## 项目基本情况和可优化点 + +为了循序渐进,最初的是时候,我是基于传统的 **BIO** 的方式 **Socket** 进行网络传输,然后利用 **JDK 自带的序列化机制** 来实现这个 RPC 框架的。后面,我对原始版本进行了优化,已完成的优化点和可以完成的优化点我都列在了下面 👇。 + +**为什么要把可优化点列出来?** 主要是想给哪些希望优化这个 RPC 框架的小伙伴一点思路。欢迎大家 fork 本仓库,然后自己进行优化。 + +- [x] **使用 Netty(基于 NIO)替代 BIO 实现网络传输;** +- [x] **使用开源的序列化机制 Kyro(也可以用其它的)替代 JDK 自带的序列化机制;** +- [x] **使用 Zookeeper 管理相关服务地址信息** +- [x] Netty 重用 Channel 避免重复连接服务端 +- [x] 使用 `CompletableFuture` 包装接受客户端返回结果(之前的实现是通过 `AttributeMap` 绑定到 Channel 上实现的) 详见:[使用 CompletableFuture 优化接受服务提供端返回结果](./docs/使用CompletableFuture优化接受服务提供端返回结果.md) +- [x] **增加 Netty 心跳机制** : 保证客户端和服务端的连接不被断掉,避免重连。 +- [x] **客户端调用远程服务的时候进行负载均衡** :调用服务的时候,从很多服务地址中根据相应的负载均衡算法选取一个服务地址。ps:目前实现了随机负载均衡算法与一致性哈希算法。 +- [x] **处理一个接口有多个类实现的情况** :对服务分组,发布服务的时候增加一个 group 参数即可。 +- [x] **集成 Spring 通过注解注册服务** +- [x] **集成 Spring 通过注解进行服务消费** 。参考: [PR#10](https://github.com/Snailclimb/guide-rpc-framework/pull/10) +- [x] **增加服务版本号** :建议使用两位数字版本,如:1.0,通常在接口不兼容时版本号才需要升级。为什么要增加服务版本号?为后续不兼容升级提供可能,比如服务接口增加方法,或服务模型增加字段,可向后兼容,删除方法或删除字段,将不兼容,枚举类型新增字段也不兼容,需通过变更版本号升级。 +- [x] **对 SPI 机制的运用** +- [ ] **增加可配置比如序列化方式、注册中心的实现方式,避免硬编码** :通过 API 配置,后续集成 Spring 的话建议使用配置文件的方式进行配置 +- [x] **客户端与服务端通信协议(数据包结构)重新设计** ,可以将原有的 `RpcRequest`和 `RpcReuqest` 对象作为消息体,然后增加如下字段(可以参考:《Netty 入门实战小册》和 Dubbo 框架对这块的设计): + - **魔数** : 通常是 4 个字节。这个魔数主要是为了筛选来到服务端的数据包,有了这个魔数之后,服务端首先取出前面四个字节进行比对,能够在第一时间识别出这个数据包并非是遵循自定义协议的,也就是无效数据包,为了安全考虑可以直接关闭连接以节省资源。 + - **序列化器编号** :标识序列化的方式,比如是使用 Java 自带的序列化,还是 json,kyro 等序列化方式。 + - **消息体长度** : 运行时计算出来。 + - ...... +- [ ] **编写测试为重构代码提供信心** +- [ ] **服务监控中心(类似 dubbo admin)** +- [x] **设置 gzip 压缩** + +## 星球其他资源 + +除了 **《从零开始写一个 RPC 框架》** 之外,星球还有 **《Java 面试指北》**、 **《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码) 、**《Kafka 常见面试题/知识点总结》** 等多个专栏。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231206733.png) + +另外,星球还会有读书活动、学习打卡、简历修改、免费提问、海量 Java 优质面试资源以及各种不定时的福利。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304124333119.png) + +## 星球限时优惠 + +两年前,[知识星球](../about-the-author/zhishixingqiu-two-years.md)的定价是 **50/年** ,这是星球的最低定价,我还附送了优惠券。扣除了星球手续费,发了各种福利之后,几乎就是纯粹做公益。 + +当时的想法真不是为了赚钱,不开玩笑,不打诳语!目前星球有 **8000+** 人,其中有超过 **35%** 的小伙伴都是星球刚开那会就加入了。 + +随着时间推移,星球积累的干货资源越来越多,我花在星球上的时间也越来越多。于是,我将星球的定价慢慢调整为了 **159/年**!是的,星球的价格会慢慢升高的,想要加入的小伙伴一定要尽早。 + +你可以添加我的私人微信领取星球专属优惠券,限时 **100 元/年** 加入。一定要备注“**星球优惠券**”!!! + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231926486.png) + +如果你经济确实有困难的话,加我的时候说明一下情况就好,莫欺少年穷,可以理解,一定不要去用什么花呗类借贷产品。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304125325364.png) + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304125403995.png) + +不过,还是希望大家也不要利用我的好心,感恩!信任!理解! \ No newline at end of file diff --git a/docs/zhuanlan/java-mian-shi-zhi-bei.md b/docs/zhuanlan/java-mian-shi-zhi-bei.md index abd69a7e..2fa1aaa3 100644 --- a/docs/zhuanlan/java-mian-shi-zhi-bei.md +++ b/docs/zhuanlan/java-mian-shi-zhi-bei.md @@ -1,6 +1,11 @@ +--- +title: 《Java 面试指北》 +category: 知识星球 +--- + 你好,我是 Guide。 -犹豫了很久,还是想借这篇文章来简单介绍以及宣传一下我这两年利用业余时间完成的 [**JavaGuide 开源版**](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247513622&idx=1&sn=2e254f37b6b13206f3397efbe81bd438&chksm=cea1f9ddf9d670cb1443e5fbf11ac272c1c1a46f46ab8cce4eddce11d6843a0e2b77b1ef9510&token=2063686030&lang=zh_CN#rd)的兄弟 — **《Java 面试指北》**。 +犹豫了很久,还是想借这篇文章来简单介绍以及宣传一下我这两年利用业余时间完成的 [**JavaGuide 开源版**](https://javaguide.cn/)的兄弟 — **《Java 面试指北》**。 每次写这种“软文”我还是挺忐忑的,但是转念一想,自己用心做内容,真诚帮助别人,为什么不能宣传一下呢?这内容不比很多几千块钱的训练营强? @@ -12,7 +17,7 @@ ## 介绍 -**《Java 面试指北》** 是我的[知识星球](https://mp.weixin.qq.com/s/uAeDhzcN26quyMHDTOxpoQ)的一个内部小册,和 [JavaGuide 开源版](https://mp.weixin.qq.com/s?__biz=Mzg2OTA0Njk0OA==&mid=2247517408&idx=1&sn=86e6591a82c0e4e08f6a74a3de981109&chksm=cea1cb2bf9d6423d267fb5988bfd25da36b711c5272cc8ab214948fe0b2089c0774c6f53d12b&scene=21#wechat_redirect)的内容互补。相比于开源版本来说,《Java 面试指北》添加了下面这些内容(不仅仅是这些内容): +**《Java 面试指北》** 是我的[知识星球](../about-the-author/zhishixingqiu-two-years.md)的一个内部小册,和 [JavaGuide 开源版](https://javaguide.cn/)的内容互补。相比于开源版本来说,《Java 面试指北》添加了下面这些内容(不仅仅是这些内容): - 10+ 篇文章手把手教你如何准备面试。 - 更全面的八股文面试题(系统设计、常见框架、分布式、高并发 ......)。 @@ -78,7 +83,7 @@ ## 星球限时优惠 -两年前,[知识星球](https://mp.weixin.qq.com/s/uAeDhzcN26quyMHDTOxpoQ)的定价是 **50/年** ,这是星球的最低定价,我还附送了优惠券。扣除了星球手续费,发了各种福利之后,几乎就是纯粹做公益。 +两年前,[知识星球](../about-the-author/zhishixingqiu-two-years.md)的定价是 **50/年** ,这是星球的最低定价,我还附送了优惠券。扣除了星球手续费,发了各种福利之后,几乎就是纯粹做公益。 当时的想法真不是为了赚钱,不开玩笑,不打诳语!目前星球有 **8000+** 人,其中有超过 **35%** 的小伙伴都是星球刚开那会就加入了。 diff --git a/docs/zhuanlan/readme.md b/docs/zhuanlan/readme.md new file mode 100644 index 00000000..324b16d1 --- /dev/null +++ b/docs/zhuanlan/readme.md @@ -0,0 +1,40 @@ +--- +title: 星球专属优质专栏概览 +category: 知识星球 +--- + +这部分的内容为我的知识星球专属,目前已经更新了下面这些专栏: + +- **[《Java 面试指北》](./java-mian-shi-zhi-bei.md)** : 与 JavaGuide 开源版的内容互补! +- **[《手写 RPC 框架》](./java-mian-shi-zhi-bei.md)** : 从零开始基于 Netty+Kyro+Zookeeper 实现一个简易的 RPC 框架。 +- ...... + +## 更多专栏 + +除了上面介绍的之外,我的[知识星球](../about-the-author/zhishixingqiu-two-years.md)还有 **《Java 必读源码系列》**(目前已经整理了 Dubbo 2.6.x 、Netty 4.x、SpringBoot2.1 的源码) 、**《Kafka 常见面试题/知识点总结》** 等多个专栏。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231206733.png) + +另外,星球还会有读书活动、学习打卡、简历修改、免费提问、海量 Java 优质面试资源以及各种不定时的福利。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304124333119.png) + +## 星球限时优惠 + +两年前,[知识星球](../about-the-author/zhishixingqiu-two-years.md)的定价是 **50/年** ,这是星球的最低定价,我还附送了优惠券。扣除了星球手续费,发了各种福利之后,几乎就是纯粹做公益。 + +当时的想法真不是为了赚钱,不开玩笑,不打诳语!目前星球有 **8000+** 人,其中有超过 **35%** 的小伙伴都是星球刚开那会就加入了。 + +随着时间推移,星球积累的干货资源越来越多,我花在星球上的时间也越来越多。于是,我将星球的定价慢慢调整为了 **159/年**!是的,星球的价格会慢慢升高的,想要加入的小伙伴一定要尽早。 + +你可以添加我的私人微信领取星球专属优惠券,限时 **100 元/年** 加入。一定要备注“**星球优惠券**”!!! + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220211231926486.png) + +如果你经济确实有困难的话,加我的时候说明一下情况就好,莫欺少年穷,可以理解,一定不要去用什么花呗类借贷产品。 + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304125325364.png) + +![](https://guide-blog-images.oss-cn-shenzhen.aliyuncs.com/xingqiu/image-20220304125403995.png) + +不过,还是希望大家也不要利用我的好心,感恩!信任!理解! \ No newline at end of file