README.md

    本项目很多内容来自廖雪峰、JavaGuide、advanced-java、CS-Notes、srs 等开源库,进行简单排版与补充整理,内容涵盖 Java、PHP、C++、JVM、CS、Redis、MySQL、高并发、高可用、分布式、微服务、海量数据处理等领域知识。

    本项目基于 Docsify 进行构建,目前支持以下站点访问:

    GitHub Pages:https://langyastudio.github.io/langya-doc

    下载到本地查看,推荐 Markdown 编辑器 Typora

    Java

    java 后端开发最全知识点

    JDK

    依据 jvm 规范实现的一套 API,反射、泛型、IO、函数编程、异常、注解等

    扩展

    新特性

    集合

    源码解读

    并发

    多线程、线程安全、AQS、锁、并发容器、原子类、ABA 问题、伪共享等

    扩展

    JVM

    存储级别 or 执行级别,jdk 提供了一系列工具来窥探这些信息。包含jstat、jmap、jstack、jvisualvm 等都是最常用的。 垃圾收集器、Class文件结构、类加载机制、参数调优、字节码、锁升级、JMM、JVM并发、JIT等

    扩展

    Framework

    mybatis

    spring

    spring boot

    打包

    工具集

    fastjson、Hutool 等

    数据库

    MySQL

    数据库范式、字符集、索引(聚集索引、非聚集索引、复合索引、自适应哈希索引)、事务(ACID、隔离级别、MVCC)、锁(锁与同步锁、公开锁、非公平锁、悲观锁、乐观锁、互斥锁、共享锁、死锁)等

    设计

    Druid

    数据库连接池方面,国内使用 druid 最多

    Mongodb

    mongodb 实战入门

    数据仓库

    现在的企业,数据量都非常大,数据仓库是必须的。 搜索方面,solr 比较成熟,稳定性更好一些,但实时搜索方面不如 es。 列式存储方面,基于 Hadoop 的 hbase,使用最是广泛;基于 LSM 的 leveldb 写入性能优越,但目前主要是作为嵌入式引擎使用多一些。 时序数据库方面,opentsdb 用在超大型监控系统多一些

    数据同步

    实时数据同步工具,都是把自己模拟成一个从库,进行数据拉取和解析。 mysql 通过 binlog 进行同步;canal、maxwell 等工具,都支持将要同步的数据写入到 mq 中进行后续处理。对于ETL(抽取、清洗、转换)来说,datax、logstash、sqoop 等,都是这样的工具。

    中间件

    缓存

    分布式缓存来说,优先选择的就是 redis。由于 redis 是单线程的,并不适合高耗时操作。所以对于一些数据量比较大的缓存,比如图片、视频等,使用老牌的 memcached 效果会好的多。 redis、caffeine、vernemq等

    Redis

    消息队列

    一个大型的分布式系统,通常都会异步化,走消息总线。 kafka 有着极高的吞吐量 rocketmq 和 rabbitmq 都是电信级别的消息队列,在业务上用的比较多 mqtt 具体来说是一种协议,主要用在物联网方面

    RocketMQ

    websocket

    任务调度

    quartz 是 java 中比较古老的调度方案,分布式调度采用数据库锁的方式,管理界面需要自行开发。相对来说 xxl-job 更加轻量好用

    RPC框架

    thrift、dubbo、gRPC 默认都是二进制序列化方式的 socket 通讯框架;feign、hessian 都是 onhttp 的远程调用框架。

    Dubbo

    通讯框架

    Java 中,netty 已经成为当之无愧的网络开发框架,包括其上的 socketio。服务的响应时间主要耗费在业务逻辑以及数据库上,通讯层耗时在其中的占比很小

    服务器

    Tomcat、Nginx、Apache等

    Apache

    Tomcat

    nginx

    架构

    分布式

    分布式系统 zookeeper 能用在很多场景,与其类似的还有基于 raft 协议的 etcd 和 consul。 CAP/BASE、Paxos/Raft、分布式锁、API网关、CC、分布式文件系统、分布式Id、分布式事务等

    微服务

    注册中心默认的 eureka 不再维护,consul 已经成为首选,nacos 带有后台,比较适合国人使用习惯 熔断组件官方的 hystrix 不再维护,推荐阿里的 sentinel or resilience4j 调用链推荐 jaeger or skywalking 配置中心推荐 apollo 对于 spring cloud 来说,zuul 系列推荐使用 zuul2,zuul1 是多线程阻塞的有硬伤。spring-cloud-gateway 是 spring cloud 亲生的

    高并发

    读写分离、负载均衡、分库分表(推荐使用驱动层的sharding-jdbc,或者代理层的mycat方案一旦确定,几乎无法回退)进行垂直拆分、水平拆分、不停机切换、HA&FailOver等

    性能优化

    内核参数优化、jvm优化、网络参数优化、事务优化、数据库优化、池化等

    高可用

    限流、熔断(sentinel)、降级、排队、超时与重试、容灾、应用层容灾、跨机房容灾等

    系统设计

    DDD、Aotor模式、响应式设计、RESTful、Service Mesh等

    设计模式

    安全

    web 安全(SQL注入、XSS、CSRF、DDOS、脚本注入、漏洞、验证码)、隐私信息保护、加密解密、证书体系、网络隔离、内外网隔离、跳板机、授权认证(OAuth、SSO、JWT)等

    计算机基础

    数据结构

    基本的数据结构非常重要,无论接触什么编程语言,基本数据结构都是首先要掌握的。 队列、栈、链表、数组、字典、图、堆、树(红黑树、B、B+、B*树、LSM 树、二叉树、平衡二叉树、平衡二叉树、BST 二叉查找树)等

    算法

    算法是某些大厂的门槛,能够培养逻辑思维能力和动手能力,最快的进阶途径就是刷 leetcode。 排序算法、贪心算法、动态规划、回溯算法、剪枝算法、图算法等

    计算机网络

    熟悉 Netty 开发是入门网络开发的捷径。 网络基础、网络模型、Epoll、Kqueue、长连接、爬虫等

    操作系统

    对于计算密集型应用,就需要关注程序执行的效率;对于I/O密集型,要关注进程(线程)之间的切换以及I/O设备的优化以及调度。 计算机原理、CPU、内存、IO、进程线程等

    视音频

    原理

    流媒体

    srs

    运维

    故障排查

    内存溢出排查、堆内外层排查、网络排查、IO排查、高负载排查等

    运维

    服务器一般采用稳定性较好的 centos,并配备 ansible工具进行支持 haproxy、lvs、keepalived、APM、Docker、CI/CD、jenkins、自动化(ansible)、监控(zabbix、prometheus + grafana + telegraf、es/logstash/kibana)等

    Docker

    硬件

    Linux

    Windows

    监控

    监控入门

    Platform

    工具

    IDE、代码管理、项目构建等

    IDEA

    Database

    Git

    其他

    管理

    开源

    项目

    架构评审、重构、代码规范、代码评审、RUP、看板管理、SCRUM、敏捷开发、结对编程、PDCA、FMEA 管理模式等

    团队

    测试

    TDD、单元测试、压力测试、全链路压测

    运营

    资讯

    行业、技术趋势、行业数据分析等

    Web

    前端

    PHP

    扩展

    C++

    C#

    项目简介

    A lot of core knowledge that programmers need to know, such as java, php, c++, jvm, algorithms, redis, mysql, elasticsearch, rpc, dubbo, message-queue, distributed-systems, spring-cloud etc.

    🚀 Github 镜像仓库 🚀

    源项目地址

    https://github.com/langyastudio/langya-doc

    发行版本

    当前项目没有发行版本

    贡献者 2

    L langyastudio @langyastudio
    L langyastudio @langyastudio

    开发语言

    • HTML 100.0 %