windland-coder / CS-Wiki

📙 致力打造完善的 Java 后端知识体系. Not only an Interview-Guide, but also a Learning-Direction.

Home Page:https://veal98.gitee.io/cs-wiki

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

star fork GitHub stars GitHub forks

公众号 配套教程 LeetCode-Offer

💡 「关于」

  • 🎓 博主东南大学研一在读,携程 Java 后台开发暑期实习生,热爱健身与篮球。本仓库于我考研时建立并维护至今两年有已,旨在用于记录学习过程中的所思所想,并力图构建一个完善的知识体系

  • 🙏 由于本人水平有限,仓库中的知识点来自本人原创、视频、书籍、博客等,非原创均已标明出处(或在参考资料中列出),如有遗漏或发现文章错误及排版问题,请提 issue 或 PR

  • Gitee 仓库地址 (推荐) | Gitee 在线阅读 (国内访问速度较快) | Github 仓库地址 | Github 在线阅读

  • 💬 我的公众号:飞天小牛肉,2020/12/29 日开通,专注于分享计算机基础(数据结构 + 算法 + 计算机网络 + 数据库 + 操作系统 + Linux)和 Java 相关技术栈的原创技术好文,让大家可以快速掌握重点知识,有的放矢。下方扫码关注第一时间获取干货更新:

  • 🎁 学习小组:公众号后台回复 学习小组 免费进入学习小组,悄悄告诉你,已经有 100+ 小伙伴在这里啦,连续打卡还能拿红包!

  • ✍ 刷题网站 LeetCode-Offer:LeetCode-Offer 仓库地址 | LeetCode-Offer 在线阅读,主要分享自己的算法模板和刷题顺序,由于正在准备校招,所以每天都会刷题

  • 🦄 另外,如果各位小伙伴春招秋招没有拿得出手的项目的话,可以参考这个 「开源社区系统 Echo」Gitee 官方推荐项目,目前已累计 1.1k+ star,基于 SpringBoot + MyBatis + MySQL + Redis + Kafka + Elasticsearch ... 并提供详细的开发文档和配套教程。公众号后台回复 Echo 可以获取配套手把手教程,目前尚在更新中

🎨 走近小牛肉


程序人生

读书笔记

📑 计算机基础


数据结构与算法

秉着先理论后刷题的理念,上线了一个刷题网站:

因为之前刷题总是找不到方法和体系,所以经常半途而废,开这个仓库的目的也是为了督促自己能够每日刷题,同时分享一下自己的刷题套路和经验,大伙儿可以跟我一起每天打卡,一起刷题进大厂!

计算机网络

操作系统

数据库 MySQL

🍵 Java


基础

集合

并发

Java 虚拟机

🔥 必备框架


SSM

Spring Boot 2.x

Netty 4.x

Note

Netty 是目前 Java 网络编程最热门的框架,很多开源项目涉及到网络通信的部分都是基于 Netty 来做的,比如 Dubbo、RocketMQ、ElasticSearch 等。学习 Netty 前请务必掌握 Java I/O 的相关知识。并请注意 Netty 5 已被官方废弃,本笔记基于 Netty 4.x

👷 系统设计


系统设计基础

编码之道

  • 1 - RestFul API 详解
  • 2 - Java 命名之道
  • 3 - Java 编程规范

认证授权

① 认证授权基础

  • 1 - 认证授权之理论基础
  • 2 - JWT
  • 3 - SSO 单点登录

② Apache Shiro

③ Spring Security 5.x

高并发

👉 如何设计一个高并发系统

① 缓存

[!WARNING|label:Important] 网站性能优化第一定律:优先考虑使用缓存

② 消息队列 MQ

Note

消息队列在分布式系统中主要是为了解耦和削峰

③ 读写分离

Note

读写分离主要是为了将数据库的读和写操作分布到不同的数据库节点上。主服务器负责写,从服务器负责读。一主一从或者一主多从都可以。

读写分离可以大幅提高读性能,小幅提高写的性能。因此,读写分离更适合单机并发读请求比较多的场景

④ 分库分表

Note

分库分表是为了解决由于库、表数据量过大,而导致数据库性能持续下降的问题。

常见的分库分表工具/中间件有:sharding-jdbc(当当)、TSharding(蘑菇街)、MyCAT(基于 Cobar)、Cobar(阿里巴巴)......

推荐使用 sharding-jdbc 。 因为 sharding-jdbc 是一款轻量级 Java 框架,以 jar 包形式提供服务,不要我们做额外的运维工作,并且兼容性也很好。

⑤ 负载均衡

Note

所谓负载均衡即将任务比如用户请求处理分配到多个服务器进行处理,以提高网站、应用或者数据库的性能和可靠性。

高可用

👉 如何设计一个高可用系统

① 降级

Note

降级是从系统功能优先级的角度考虑如何应对系统故障。

服务降级是指系统为了应对大量的请求,主动关闭部分功能,以此释放服务器资源从而保证核心功能可用

  • 如何实现降级

② 限流

Note

限流可以认为是服务降级的一种,限流就是限制系统的输入和输出流量以达到保护系统的目的。一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行,一旦达到需要限制的阈值,就采取一些措施以完成限制流量的目的。比如:延迟处理/排队,拒绝处理,或者部分拒绝处理等等。

③ 熔断

Note

熔断和降级是两个比较容易混淆的概念,两者的含义并不相同。

降级的目的在于应对系统自身的故障,而熔断的目的在于应对当前系统依赖的外部系统或者第三方系统的故障

  • 1 - 如何实现熔断
  • 2 - 熔断中间件 Hystrix(已停更)
  • 3 - 熔断中间件 Sentienl(推荐使用)
  • 4 - 如何设计一个消息队列

分布式

① 分布式理论基础

② RPC 框架 — Dubbo

[!Danger] Dubbo 与 Spring Cloud 并不是竞争关系Dubbo 作为成熟的 RPC 框架(分布式服务框架),其易用性、扩展性和健壮性已得到业界的认可。而 Spring Cloud 是一整个微服务生态,目前 Dubbo 已经成为 Spring Cloud Alibaba 的 RPC 组件,与 Spring Cloud 原生的 Feign 以及 RestTemplate 进行无缝整合,实现“零”成本迁移。

💌 阿里巴巴中间件 独家解读:Dubbo Ecosystem - 从微服务框架到微服务生态

③ API 网关

  • 1 - API 网关相关概念
  • 2 - 网关中间件:Netflix Zuul(已停更)
  • 3 - 网关中间件:Gateway(推荐使用)
  • 4 - 如何设计一个网关

④ 分布式搜索引擎 — Elasticsearch

⑤ 分布式协调服务 — Zookeeper

Note

所谓分布式协调服务就是将各个分布式组件协调起来,减少各个系统之间的耦合度、处理分布式事务、配置整个分布式系统等等

微服务架构 — Spring Cloud

① 微服务相关概念

② Spring Cloud Netflix

Warning

Spring Cloud Netflix 2018 年12 月 12 日进入维护模式(Maintenance Mode),且其内置组件/中间件大部分都已停更或出现更好的替代组件,所以不太适合再长期使用

③ Spring Cloud Alibaba

🛴 设计模式


Note

设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。

创建型模式

结构型模式

行为型模式

🙋‍ 联系我


公众号

我的公众号:飞天小牛肉,专注于分享计算机基础(数据结构 + 算法 + 计算机网络 + 数据库 + 操作系统 + Linux)、Java 基础和面试指南的相关原创技术好文。本公众号的目的就是让大家可以快速掌握重点知识,有的放矢。下方扫码关注第一时间获取干货更新

WeChat

有什么问题也可以添加我的微信,记得备注来意:格式 (学校或公司 - 姓名或昵称 - 来意)

About

📙 致力打造完善的 Java 后端知识体系. Not only an Interview-Guide, but also a Learning-Direction.

https://veal98.gitee.io/cs-wiki

License:GNU General Public License v3.0


Languages

Language:CSS 57.6%Language:HTML 26.6%Language:JavaScript 15.8%