You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

13 KiB

lemon-guide

lemon-x

收纳了 操作系统JAVA算法数据库中间件解决方案架构DevOps大数据 等技术栈总结!其内容有来源笔者个人总结的内容,也有来源于互联网各种经典场景或案例的总结(感谢对应的笔者),目的在于把常用的技术内容进行归纳整理记录。

同时提供一个微信交流群:请加笔者个人微信(echo-lry),备注拉群,笔者通过后,会发送邀请入群。

用最少的图文来讲解清楚每一个知识点,如果欢迎大家一起加入!

开源地址:

1 OS

1.1 TCP

TCP状态

收纳了网络模型、TCP三次握手、TCP四次挥手、TCP优化、常见TCP问题、Socket和TCP主要源码等知识点。

1.2 HTTP

HTTP请求流程

收纳了HTTP缓存流程、强制缓存、协商缓存、请求流程、常见请求/响应头参数、状态码、请求方法等知识点。

1.3 OS

Linux虚拟地址空间分布

收纳了常见处理器介绍、虚拟内存、内存分段、内存分页、内存管理、进程和线程等知识点。

2 JAVA

2.1 J.U.C

AQS

收纳整理了Unsafe、LockSupport、CAS机制、AQS框架、Condition、volatile、lambda、Striped64、LongAdder、Semaphore、CyclicBarrier、CountDownLatch、CompletableFuture等知识点。

2.2 集合

Java8ConcurrentHashMap结构

收纳整理了ListArrayList、LinkedList、Vector、CopyOnWriteArrayList、SetHashSet、TreeSet、LinkHashSet、ConcurrentSkipListSet、CopyOnWriteArraySet、ConcurrentSkipListSet、MapHashMap、TreeMap、HashTable、LinkHashMap、ConcurrentHashMap、ConcurrentSkipListMap等知识点。

2.3 Queue

队列类图

收纳整理了BlockingQueueArrayBlockingQueue、LinkedBlockingQueue、PriorityBlockingQueue、SynchronousQueue、DelayQueue、BlockingDequeLinkedBlockingDeque、TransferQueueLinkedTransferQueue等知识点。

2.4 Thread

Thread-NEW

收纳整理了线程实现方式、四种创建方式、生命周期、四种JDK线程池、常用线程方法、线程安全、线程同步、多线程通信、线程协作、线程死锁、守护线程、ThreadLocal、ThreadPoolExecutor等知识点。

2.5 Lock

synchronized

收纳整理了synchronized、ReentrantLock、ReentrantReadWriteLock、锁状态、自旋锁(SpinLock)、乐观锁/悲观锁、公平锁/非公平锁、可重入锁/不可重入锁、独占锁/共享锁、互斥锁/读写锁、锁优化(状态升级、自旋锁、所消除、锁粗化、分段锁、锁细化)等知识点。

2.6 I/O

异步非阻塞IO

收纳整理了阻塞/非阻塞IO、同步/异步IO、三种Reactor模式、Proactor模式、select/poll/epoll、BIO(同步阻塞I/O)、NIO(同步非阻塞I/O)、IO多路复用(异步阻塞I/O)、AIO(异步非阻塞I/O)、信号驱动式I/O等知识点。

2.7 Classloader

Classloader

收纳整理了JVM类加载机制、类加载器、双亲委派等知识点。

2.8 Throwable

Throwable

收纳整理了Error、Exception、异常处理方式等知识点。

2.9 JVM

JVM内存结构(JDK1.8)

收纳整理了JVM常量池、JVM内存布局、JAVA内存模型(JMM)、JVM运行时内存、引用级别、OOM场景等知识点。

2.10 GC

ParallelGCFullGC日志

收纳整理了2种寻找垃圾算法、4种清理垃圾算法、9种GC垃圾收集器、GC日志格式、GC最佳实践、FullGC场景、CMSGC场景等知识点。

3 Algorithm

3.1 数据结构

Stack

收纳整理了常用数据结构数组(Array)、链表(Linked List)、栈(Stack)、队列(Queue)、双端队列Deque、树(Tree)和高级数据结构优先队列Priority Queue、图Graph、前缀树Trie、线段树Segment Tree、树状数组Fenwick Tree、散列表(Hash)、二叉堆等知识点。

3.2 算法

SortAlgorithm

收纳整理了算法复杂度、4种算法思想常用查找算法顺序查找、二分查找、插值查找、斐波那契查找搜索算法深度优先搜索(DFS)、广度优先搜索(BFS)、迪杰斯特拉算法(Dijkstra)、kruskal(克鲁斯卡尔)算法排序算法冒泡排序Bubble Sort、选择排序Selection Sort、插入排序Insertion Sort、希尔排序Shell Sort、归并排序Merging Sort、快速排序Quick Sort、基数排序Radix Sort、堆排序Heap Sort、计数排序Counting Sort、桶排序Bucket Sort等知识点。

3.3 设计模式

收纳整理了25种设计模式简单工厂模式、工厂模式-Factory、抽象工厂模式-Abstract Factory、单例模式-Singleton、建造者模式-Builder、原型模式-Prototype、适配器模式-Adapter、组合模式-Composite、代理模式-Proxy、享元模式-Flywight、门面模式-Facade、桥梁模式-Bridge、修饰模式-Decorator、过滤器模式-Filter、模板方法模式-Template Method、解释器模式-Mediator、责任链模式-Chain of Responsibility、观察者模式-Observer、策略模式-Strategy、命令模式-Command、状态模式-State、访客模式-Visitor、转义模式-Interpreter、迭代器模式-Iterator、备忘录模式-Memento等知识点。

4 Database

收纳整理了数据库6种范式、9种连接方式、4种事务隔离级别、索引、SQL优化、存储引擎、MYSQL原理、MYSQL高可用方案等知识点。

4.1 数据库范式

收纳整理了第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式BCNF、第四范式4NF、第五范式5NF等知识点。

4.2 连接方式

SQL所有JOIN

收纳整理了内连接INNER JOIN、左连接LEFT JOIN、右连接RIGHT JOIN、全连接FULL OUTER JOIN、LEFT JOIN EXCLUDING INNER JOIN、RIGHT JOIN EXCLUDING INNER JOIN、FULL OUTER JOIN EXCLUDING INNER JOIN、CROSS JOIN、SELF JOIN等知识点。

4.3 事务

隔离级别 第一类丢失更新 第二类丢失更新 脏读 不可重复读 幻读
SERIALIZABLE (串行化) × × × × ×
REPEATABLE READ可重复读 × × × ×
READ COMMITTED (读已提交) × ×
READ UNCOMMITTED读未提交 ×

收纳整理了事务特性ACID隔离级别Serializable串行化、Repeatable Read可重复读、Read Committed读已提交、Read uncommitted读未提交、SpringBoot Transaction等知识点。

4.4 索引

收纳整理了索引结构二叉树、红黑树、Hash、B-Tree、B+Tree索引类型普通索引、复合索引、唯一索引、主键索引、全文索引等知识点。

4.5 MYSQL原理

MySQL架构设计

收纳整理了MYSQL架构设计、日志系统、查询过程、全局锁表锁&行锁、复制原理等知识点。

4.6 高可用方案

MySQL-Cluster

收纳整理了主从或主主半同步复制、双通道复制、MHA+多节点集群、ZooKeeper+Proxy、SAN共享储存、DRBD磁盘复制、MySQL Cluster、Galera、Paxos等知识点。

5 Middleware

DubboArchitecture

收纳整理了SPI、Redis、RocketMQ、Zookeeper、Netty、RabbitMQ、Dubbo、Nacos、Sentinel、Influxdb、Spring、SpringCloud、MyBatis、Nginx、LVS、Keepalived、HAProxy等知识点。

关键组件Redis、RocketMQ、MySQL、Zookeeper、Netty、MyBatis

6 Solution

ServiceDowngrade

收纳整理了注册中心、API网关、服务编排、服务降级、断路器、链路追踪、幂等机制、分布式ID、分布式限流、分布式缓存、消息队列、分布式事务、分库分表、全链路压测、配置中心、服务框架等知识点。

7 Architecture

分层设计

微服务技术架构体系

收纳整理了架构演进、架构规范、OAuth2.0、用户体系、权限设计、订单支付、分布式锁、数据脱敏、附近的人、亿级数据统计、短信服务、安全漏洞等知识点。

8 DevOps

本章节主要总结并收纳了常用的JDK工具、Linux命令、Shell语法、Git命令、测试工具、Docker等。

8.1 JDK Tools

Visual-GC

  • jps用于查看JAVA进程编号
  • jstat用于打印GC回收统计信息便于分析是否出现FGC等情况
  • jstack用于dump出指定进程中的线程堆栈快照信息便于排查应用是否有锁、死锁或排查CPU占比高的线程代码
  • jmap用于dump出指定进程中当前内存的快照信息便于分析内存的内容结构从而定位内存泄漏等问题
  • jhat用于与jmap搭配使用用来分析jmap生成的dump
  • jconsoleJava GUI监视工具可以以图表化的形式显示各种数据并可通过远程连接监视远程的服务器VM
  • jvisualvm一个基于图形化界面的可以查看本地及远程的JAVA GUI监控工具可以查看CPU、堆、线程、GC等
  • jmcJDK自带图形界面监控工具。JMC打开性能日志后可查看一般信息、内存、代码、线程、I/O、系统、事件 功能
  • EclipseMAT基于Eclipse内存分析工具它可以帮助我们查找内存泄漏和减少内存消耗

8.2 Linux Command

htop

  • 基本命令vi/vimscptarsudftailgrepawkfindnetstatechotelnetrpmyum
  • 监控命令
    • Memoryfreevmstat
    • CPUtophtopsar
    • IOiostatpidstaiotop
    • Networknetstatiftoptcpdump
    • OthersdstatsaidarGlances
  • 瓶颈排查定位线上最耗CPU的线程、定位丢包错包情况、查看网络错误、包的重传率等

8.3 Shell

收纳了Shell脚本的变量、数组、算术运算、字符串、条件判断、流程控制等基本语法学完后就可自己写Shell脚本。

8.4 Git

收纳了Git相关的常用命令git clonegit addgit rmgit commitgit branchgit taggit pushgit pullgit loggit remotegit fetchgit reset等。

8.5 Test Tools

Junit-Summary-Report

  • ABApacheBench (ab)是 Apache 网站服务器软件附带的工具专门用来做HTTP接口的性能测试
  • JmeterApache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试

8.6 Docker

Docker常用命令。

8.7 Nginx

收纳了Nginx常用配置和应用场景配置案例等知识点。

9 BigData

Hadoop生态架构图

收纳整理了Hadoop、Flume、Kafka、HBase、HDFS、Apache Storm、Apache Spark、Apache Flink等知识点。

10 Others

收纳整理了常用软件画图工具、数据抓包、SSH、Chrome、代码对比等、IDEA常见设置图解、常用插件、功能插件、产品经理常用软件、管理总结时间管理、项目管理、团队管理、知识卡片、演讲能力等知识点。

10.1 自定义主题

最后还提供了文档中部分图片的原稿文件support目录下方便各位使用进行二次加工使用。同时还提供了笔者日常使用的Markdown编辑软件Tyora的一份自定义主题提供黑暗主题support/lry.css和support/lry-darcula.css主要实现了Markdown文档自动编号问题同时渲染了部分效果。效果截图如下

Markdown自定义主题渲染效果