📖后端学习计划 - :cyclone: 书籍推荐

🌀 书籍推荐

📚✨🎞️📖👉🤓❤️🤣

🈂️

🏷️🔖🗞️📰📑📚🗂️📂📁💼🗒️📝📅📆📋📌📍📎🖇️⌛⌚⏰⏱️⏲️🕰️

🗂️📂📁🗓️📆📍📒

🗝️🔑🎹📻🔒🔓🔏🔐⚒️🪨🧱🔩🪛🔧🛠️🪵🛖⚙️🗜️🛢️⚗️💉🩻🩺🧬🧫🧪🩸🩹🩼💊🔬🔭🧰🪝⛓️🔗📿⚖️🧲🪜🦯🛡️🪚🏹♥️🎲🎖️🏆🎮🕹️🎰🥉🥇🥈🔔👟👗⚙️🔍🔎✒️🖋️🖊️🖌️🖍️📝🪥🚿🪠🪞🪒

🎧🎛️🎚️📯🥁🎙️🎤🪘📴📳📲♀️⚧️♂️🚬🪪🔋🪫🔌💻🖥️🪧⌨️🖱️🖲️💽💾💿📀🧮🎬📽️🎥📡📺📷📸📹📼💴💵🪙💰💳✉️📧📩📤📥📦📫🆘⭕⛔🚫🔇🔕❗❕❓❔‼️💯⁉️🔅🔆🔱⚜️✅➕➖✖️➗🟰™️®️©️🔘🔴🟠⚫🟤🟣🔵🟢🟡⚪🟥🟧🟨🟩🟦◻️◼️⬜⬛🟫🟪◾◽▪️▫️🔶🔲🗨️👁️‍🗨️

💫

🎯️

🛠️

📑

💻

🧑‍💻

这是一句话[1]

这是一句话2[2]

  • a

  • b

  • c

  • 如何翻盘?

    • 博客,记录学习的知识点。
    • github开源项目,目前不现实。
  • 许令波《深入分析Java Web技术内幕》

    • 我个人觉得这是一本水书,走马观花。但是也值得草草过一遍,因为每一个知识点都可以独立展开。
  • 姜承尧《MySQL技术内幕-InnoDB存储引擎》

    • 经典老书,知识点散乱,需要自己整理成知识卡片,缕出思路。
    • 书上对每个知识点都解释的原因和目的,逻辑是清晰的
  • 掘金小册上《从根上理解MySQL》

    • 非常推荐,不适合碎片化阅读,需要大段大段的连续时间细读理解,建议周末连肝两天,每天10小时。
    • 这本书非常细,没必要刻意记一些结构和数字。理解就够了
    • 可以关注作者的工作号,上面有补充文章可以看
    • 读完能彻底掌握MySQL原理的基础
  • 《高性能MySQL》,《高可用MySQL》

    • 简单看看即可,主要是拓展广度
  • 周志明-《深入理解Java虚拟机》

    • JVM其实很复杂,这本书仅仅是入门级别的书,但是通读就可以应对大部分面试和工作场景
    • JVM工具上可以试一试jprofile,图形化很直观
    • Arthas必须会
    • 书中“高效并发”这块内容,可以结合方腾飞的《Java并发编程的艺术》看,
  • 黄健宏-《Redis设计与实现》

    • 实际上这本书不值得推荐,里面有c语言源码,基于redis2.9,知识旧。
    • 但是,对于基本数据结构的底层实现写的不错,需要自行整理下来(别去网上抄,网上的有问题)
    • 就没发现关于Redis的好书,强烈建议直接官网文档
  • MyBatis-官网

    • 没觉得有什么书好的,推荐官网上学习
  • 《深入理解Kafka:核心设计与实践原理》

    • 挺不错的书,原理和解释很全面了,就是废话贼多看得难受
  • 设计模式的两份资料

    • 比较理论化的https://refactoringguru.cn/design-patterns/catalog
    • 接地气的:小傅哥(公众号:bugstack虫洞栈)《重学Java设计模式》 PDF,直接找我要
    • 《HeadFirst设计模式》那本书废话太多,时间就是金钱,个人不推荐。
  • 《图解TCP》,《图解HTTP》

    • 简单过过就好,查缺补漏。其实书上有挺多不严谨,不明确的地方(相对教材)。
    • 如果可以看回教材的话,还是看看教材。如果不是计算机专业,看谢希仁的就够了,Kurose的那本太深了,没必要。
  • 《Netty实战》

    • 用过Netty或许想学Netty,这本书跟着做就算入门了。
  • 并发编程类

    • 《Java并发编程实战》太深(一是抽象二是翻译),但是权威。没必要通读,看着目录找自己感兴趣的即可。
    • 方腾飞的《Java并发编程的艺术》结合着敲,敲完就达标了。
    • 葛一明的《实战Java高并发程序设计》,这本书是水书,很浅,但是有配套视频教程,对着敲很有效果。教程直接找我要。
  • Spring这些就不推荐书了,时效性不高

    • Spring思想就是工厂模式(容器),对Spring的基本概括就是依赖注入与AOP。
    • 配置(xml/javaConfig声明)到Bean的过程(Resource-BeanDefinition-实例化-初始化-销毁),个人认为Spring的DI与AOP思想的实现就在BeanPostProcessor
  • 《图解Java多线程设计模式》

    • 都是些并发编程的应用,这里面的模式在框架设计层面都有体现。
    • 可以对着将这些模式实现一遍,非常有帮助
  • 《图解网络-小林coding》

    • 作者有点功底的,就当优质博文看吧。PDF直接找我要

知识板块

计算机基础,操作系统

  • 硬件基本知识:CPU,缓存,内存,硬盘,DMA
  • 线程调度,文件系统,用户态内核态
  • LInux命令,top, grep, sort, find, tail, sed
  • 书:

网络知识

  • 7层4层,
  • tcp udp ip
  • http,https(SSL TLS)
  • 书:
    • 《图解TCP》,《图解HTTP》过一下就好

数据库MySQL为例

  • 总体架构
  • 索引的结构和原理, 数据页,bufferpool等等
  • 执行计划与优化
    • 索引下推,join,
  • 不同维度的锁。表锁行锁,意向锁,gap-lock next-key-lock等等
  • 四个并发问题与隔离级别
  • redo log,undo log,MVVC,ReadView
  • binlog与主从,canal,读写分离(mycat中间件),多写MGR(了解)
    • 这里上升到分布式系统层面视角
  • information_schema架构。里面的系统表,以及各种配置项
  • 分库分表的场景与将会面临的问题(弊端), Sharding-JDBC(Sharding-Sphere), mycat
    • InnoDB存储引擎
      • 老书,知识点散乱,需要自行整理
    • 高性能MySQL
      • 比较浅,但是知识结构清晰,简单过一过就好
    • 高可用MySQL
      • 我没看过,直观上感觉了解一下就好了
    • 官网reference
      • 可以发现很多日常工作中坑的原因
    • 掘金小册《从根上理解MySQL》
      • 这本书很仔细,适合深度理解,需要大段的连续时间研读。

缓存Redis

  • 数据结构以及对应原理
    • 找博客怕是找不全。可以通过《Redis设计与实现》自行整理,但这本书浅,很多知识点落后了(基于2.9的)
  • 配置文件一个个配置项看
  • 应用场景
    • 缓存,各种redis命令上的坑
    • 用于分布式锁的优势劣势,RedLock(进阶)
    • 限流(少)
  • jedis,lettuce, redisson
  • 热点数据,慢查询,expired
  • redis的使用规范
  • 缓存的击穿穿透雪崩,与数据库一致性(双写一致性)问题
    • 首先要明确,缓存的目的。它的应用场景就一定是写少读多,以此为出发点思考上述问题即可。
    • 没经历就记八股文,有经历就能灵活处理
    • 什么延迟双删也不知道是哪个脑瘫发明出来的
  • 主从,备份,持久化,cluster。
    • 分片,hashtag,一致性问题,gossip协议等等 这种也上升到分布式系统设计的问题了。
    • Redis知识只推荐官网,我没找到其它好的资料。英文不好只能硬啃没办法。
    • 垃圾避坑:掘金上老钱的Redis,别浪费钱

设计模式

  • 理解过一遍就行,别钻牛角尖,个人认为设计模式是上层设计层思考的事情,而不是编码层去考虑,视角放高。
  • 实际上绝大部分人都是crud, if else。
  • 书:

分布式架构

  • dubbo SOA架构
  • SpringCloud微服务各种组件与作用(熔断,限流,网关,配置,总线,降级)
  • 其实这部分知识,项目体量上不去这些组件很难深刻理解,知道它们在微服务中作用即可
  • zookeeper及其客户端curator,一些协调应用场景的实现(选主,分布式锁,watch机制)
  • 分布式ID,

Java基础

  • JDK上String,Map, Collection,JUC(AQS,Lock,AtomicXxx, 线程池…)
  • AQS=state+等待队列

消息中间件

  • 应用场景,动手试一试
  • Kafka, RocketMQ. 下面kafka为例
  • Topic, 副本replica,partition,leader, ISR,OSR,高水位低水位,segment file, rebalance
  • 消息丢失,重复,有序,幂等处理
    • producer如何保证,broker如何保证,consumer如何处理可以保证。consumer与group的顺序,offset,
    • 《深入理解Kafka:核心设计与实践原理》
      • 挺不错的书,原理很全面了,就是废话贼多看得难受,凑字数骗稿酬

分布式事务

  • 先搞个seata实践一下
  • 原理层面大致搜一搜就有了,真要理解得看很多(共识问题出发,Paxos,到ACID,再到BASE, 2PC,TCC)
  • 2PC(基本原理) TCC(柔性,依赖业务编码,幂等)
  • Sage方案

JVM

  • 直接看书吧,快速过即可问不了多深。《深入理解Java虚拟机》
  • 基本上就是内存结构,Java内存模型,类加载,classloader,SPI,常用工具
  • CMS(在JDK9之后废弃),G1基本概念和原理
  • 一般的排查方式jstack, jmap, jprofile,jvisualvm等等
  • 阿里Arthas,基本就用两个命令watch trace

Netty

  • 没用过就算了
  • Reactor模型中主从Reactor的变体(去掉线程池的变体)
  • 事件循环EventLoop,Channel,ChannelPipeline,Inbound/Outbound
  • 实现分片拷贝
  • 粘包拆包的四种方案。
  • 实现长连接,心跳,断线重连

Spring,SpringMVC,SpringBoot

  • Spring思想就是工厂模式(容器)。基本概括就是依赖注入与AOP。
  • 常用注解
  • 配置(xml/javaConfig声明)到Bean的过程(Resource-BeanDefinition-实例化-初始化-销毁),个人认为Spring的DI与AOP思想的实现就在BeanPostProcessor
  • 容器refresh过程,循环依赖
  • SpringMVC源码可以看看,挺不错的
  • SpringBoot的spring.factories(看看starter包里/META-INF/spring.factories)

MyBatis

  • 太简单了,官网跟着写一轮就好了
  • xml方式配置,config方式配置
  • xml方式声明sql,注解方式声明sql
  • 框架原理方面网上都有,也比较简单
  • 可以看看源码,写得还是很不错的。

Dubbo

  • 用的少,活跃度也不太行了。
  • 官网看一看,搜一搜面试题就好
  • 主要是各个协议的特点。因为Dubbo本身就是RMI的解决方案,传输协议,解压缩,编码等等是实现上关键点
flowchart TD
A[start] --> B{It's TURE?}
B --Yes--> C[OK]
c --> D[Rethink]
D --> B
B ----> |No| E[End]

📚Reference

  1. 这是对应的脚注
  2. 这是对应222的脚注

📖后端学习计划 - :cyclone: 书籍推荐
http://www.tung7.com/茶话闲谈/后端学习计划.html
Author
Tung
Posted on
August 6, 2019
Licensed under