[TOC]

The Road To Bald Man!

一、编程基础

Java基础

  • 基础语法
  • 面向对象
  • 接口
  • 容器
  • 异常
  • 泛型
  • 反射
  • 注解
  • I/O
  • 图形化
  • 集合框架(源码)
    • List
      • ArrayList
      • LInkedList
    • Set
      • HashSet
      • TreeSet
    • Map
      • HashMap (JDK 8 的实现与之前的版本不同)
      • TreeMap
      • ConcurrentHashMap
    • Queue
      • ConcurrentLinkedQueue
    • Stack
    • Collections的SynchronizedXXX方法
  • 高级特性
    • 泛型
    • 多态的实现原理
    • Lambda
    • 并发编程
      • Executor框架
      • Fork/join
      • 数据结构
        • ConcurrentHashMap
        • ConcurrentLinkedQueue
      • 线程池
      • 线程状态
      • Lock/syschronized
      • 原子操作类
      • 并发工具类
        • CountDownLatch
        • Semaphore
        • CyclicBarrier
        • Exchanger
  • 网络编程
    • Socket
  • IO
    • BIO
    • NIO
    • AIO
  • 序列化
    • JDK自带
    • Google protobuf
  • RPC
    • RMI
    • Thrift
    • Dubbo
    • gRpc

JVM

  • 认识Java虚拟机(默认HotSpot实现)
  • 类加载机制(知道双亲委派模型)
  • 字节码执行机制
  • 内存模型
  • GC
    • 回收算法
    • 垃圾收集器
  • jvm性能监控与故障定位
  • 调优
  • 工具
    • jstack
    • jmap
    • jconsole

并发、多线程

  • 并发编程基础
  • 线程池
  • 并发容器
  • 原子类
  • juc并发工具类

数据结构和算法

数据结构

  • 字符串

    • 查找匹配(KMP)
    • 正则
  • 数组

  • 链表

  • 队列

    • 二叉树
      • 前序遍历
      • 中序遍历
      • 后序遍历
  • B Tree/B+Tree

  • 红黑树

  • 哈希

    • 哈希冲突
    • k-v
    • BFS
    • DFS

算法

  • 查找
  • 动态规划
  • 分治
  • 回溯
  • 排序
    • 内部排序
      • 插入排序
        • 直接插入排序
        • 希尔排序
    • 选择排序
      • 简单选择排序
      • 堆排序
  • 交换排序
    • 冒泡排序
    • 快速排序
  • 归并排序
  • 基数排序
  • 桶排序
  • 外部排序
  • 贪心

计算机网络

  • TCP、UDP
  • ARP
  • IP、ICMP
  • DNS、HTTP、HTTPS
  • OAuth2.0
  • REST
  • Session、Cookie

数据库/SQL

  • 关系型数据库
    • MySql
      • 引擎
        • InnoDB(支持事务)
        • MyISAM(支持全文索引)
    • 分库分表
      • Cobar
      • Mycat
  • SQL优化
    • 索引
      • 主键索引
      • 组合索引
  • explain
  • 存储过程
  • SQL注入
    • 使用#而不使用$
  • 事务隔离级别(ACID)
    • 原子性
    • 一致性
    • 隔离性
    • 持久性
    • 表锁
    • 行锁
    • 乐观锁
    • 悲观锁
  • Oracle
  • SQL sever
  • 数据库设计
    • 范式
      • 第一范式
      • 第二范式
      • 第三范式
  • E-R图
  • NoSql
    • Memcached
      • 文档模型
      • 分片
  • Redis
  • MongoDB
  • HBase
  • JDBC

设计模式

  • 七大原则
    • 单一职责原则
    • 接口隔离原则
    • 依赖倒转原则
    • 里氏替换原则
    • 开闭原则
    • 迪米特法则
    • 合成复用原则
  • 23种设计模式
    • 创建型模式:
      1. 单例模式
      2. 抽象工厂模式
      3. 原型模式
      4. 建造者模式
      5. 工厂模式
    • 结构性模式:
      1. 适配器模式
      2. 桥接模式
      3. 装饰模式
      4. 组合模式
      5. 外观模式
      6. 享元模式
      7. 代理模式
    • 行为型模式:
      1. 模板方法模式
      2. 命令模式
      3. 访问者模式
      4. 迭代器模式
      5. 观察者模式
      6. 中介者模式
      7. 备忘录模式
      8. 解释器模式
      9. 状态模式
      10. 策略模式
      11. 职责链模式

操作系统

  • 线程、进程
  • 并发、锁
  • 内存管理和调度
  • I/O原理

二、开发工具

IDE

  • IDEA
  • Eclipse
  • VSCode

Linux

发行版(Server)

  • Ubuntu
  • RedHat
  • CentOS

常用命令

  • 1、查看正则执行的进程
  • 2、查询指定的进程ID打开的文件
  • 3、杀死指定PID的进程
  • 4、计算文件的行数、字数或字符数
  • 5、显示进程信息,并实时更新
  • 6、调用top命令的"-H"选项,该选项会列出所有的Linux线程
  • 7、查看用户username的进程所打开的文件
  • 8、在ps命令中,"-T"选项可以开启线程查看,下面的命令列出了由进程号为进程创建的所有线程
  • 9、比较两个文件
  • 10、后台执行、通过在shell中输入exit来退出终端
  • 11、查看正在执行的任务
  • 12、多线程执行
  • 13、查看进程和线程的树形结构关系
  • 14、ps命令-L参数显示进程,并尽量显示其LWP(线程ID)和NLWP(线程的个数)
  • 15、ps命令查看线程在哪个CPU上运行
  • 16、取出文件的前面几行
  • 17、动态查看文件变化
  • 18、退出 tail -f
  • 19、tail程序放到后台去等处理完其他事情,再用fg命令将tail命令转到前台来
  • 20、查看文件夹和子目录的大小
  • 21、设置定时任务
  • 22、重命名文件和文件夹
  • 23、复制、剪切、清空和删除
  • 24、Linux通信

代码管理工具

  • Git
  • SVN

项目构建

  • Maven
  • Gradle

三、前端技术

HTML、CSS、JavaScript

JQuery

Ajax

JSP、JSTL

Thymeleaf

FreeMarker

VUE、React

Node.js

四、技术框架

Spring全家桶

Spring

  • IOC
  • AOP
  • Transaction
    • 声明式事务底层原理
    • Spring事务处理机制
    • 事务的传播与监控
    • 基于Springjdbc手写Orm框架
  • 常用注解
    • @Component:标识该类需要Spring初始化时自动装配,可以时一个普通的Bean
    • @Resource:被该注释修饰的字段或方法,Spring会通过by-name的方式自动注入
    • @Required:应用于bean属性的setter方法,它表明受影响的bean属性在配置时必须放在XML配置文件中,否则容器就会抛出一个BeanInitializationException异常
    • @Autowired:可以在setter方法中被用于自动连接bean
    • @Value:可以为普通方法和构造方法中的参数或者字段指定一个默认的值
    • @Qualifer:指定哪个真正的bean将会被装配,应用于一个接口有多个实现类的情况
    • @Service:标注一个业务逻辑处理类
    • @Repository:标注一个DAO组件类
    • @RequestMapping:指定请求路径
    • @Controller:标注一个控制器组件类
    • @ResponseBody:返回json结果数据
  • 设计模式
    • 简单工厂模式
    • 工厂方法模式
    • 抽象工厂模式
    • 单例模式
    • 原型模式
    • 代理模式
      • jdk动态代理模式
      • cglib动态代理模式
  • 组合模式

SpringMVC

  • MVC原理介绍
  • 与IOC容器整合原理
  • Handlermapping实现原理
  • Handleradapter实现原理
  • Viewresolver实现原理
  • Controller调用原理
  • 动态参数匹配原理
  • SpringMVC与Struts2对比分析
  • 手写实现SpringMVC框架

SpringBoot

  • 自动配置、开箱即用
  • 整合Web
  • 整合数据库(事务问题)
  • 整合权限
    • Shiro
    • SpringSecurity
  • 整合各种中间件
    • 缓存
    • MQ
    • RPC框架
    • NIO框架
    • 等。。。

SpringCloud

服务器软件

Web服务器

  • Nginx

应用服务器

  • Tomcat
  • Jetty
  • Undertow

中间件

缓存

  • Redis
    • 5大数据类型
    • 事务
    • 消息通知
    • 管道
    • 持久化
    • 集群
  • Memcached

消息队列

  • RocketMQ
  • RabbitMQ
  • Kafka

RPC架构

  • Dubbo
  • GRPC
  • Thrift
  • Netty

数据库

ORM层框架

  • MyBatis
    • 逆向工程
    • 一对多,多对多嵌套查询
    • 一级缓存、二级缓存使用场景及选择策略
    • 与Spring继承Spring-Mybatis.Jar分析
    • Spring继承下的Sqlsession与Mapper
    • Mybaits事务
    • 分析Mybatis动态代理的真正实现
    • 手写实现Mybatis
      • 实现配置文件加载流程
      • 实现封装jdbc的执行流程
    • 设计模式
      • 构建者模式
      • 简单工厂模式
      • 工厂方法模式
      • 抽象工厂模式
      • 单例模式
  • Hibernate
  • JPA

连接池

  • Druid
  • HikariCP
  • C3P0

分库分表

  • MyCat
  • Sharding-JDBC
  • Sharding-Sphere

搜索引擎

  • Solr
  • ElasticSearch

分布式微服务

  • 服务发现/注册
    • Eureka
    • Consul
    • Zookeeper
    • Nacos
  • 网关
    • Zuul
    • Gateway
  • 服务调用(负载均衡)
    • Ribbon
    • Feign
  • 熔断/降级
    • Hystrix
  • 配置中心
    • Config
    • Apollo
    • Nacos
  • 认证和鉴权
    • Shiro
    • SpringSecurity
    • OAuth2
    • SSO
  • 分布式事务
    • JTA接口
      • Atomikos组件
  • 2PC、3PC
  • XA模式
  • TCC模式
    • tcc-transaction
    • ByteTCC
    • EasyTransaction
    • Seata
  • SAGA模式
    • ServiceComb
    • Seata
  • LCN模式
    • tx-lcn
  • 任务调度
    • Quartz
    • Elastic-Job
  • 链路追踪与监控
    • Zipkin
    • Sleuth
    • Skywalking
  • 日志分析与监控
    • ELK
      • ElasticSearch
      • Logstash
      • Kibana
  • 虚拟化/容器化
    • 容器技术
      • Docker
  • 容器编排技术
    • Kubernetes
    • Swarm

五、运维

Web服务器

  • Nginx

应用服务器

  • Tomcat
  • Jetty
  • Undertow

CDN加速

持续集成/持续发布

  • Jenkins

代码质量检查

  • sonar

日志收集/分析

  • ELK

六、安全加密

单项散列算法

  • MD5
  • SHA

对称加密

  • DES

非对称加密

  • RSA
  • HTTPS

七、业务解决方案

八、源码

九、植发