白菜Java自习室 涵盖核心知识
我相信各位小伙伴们或多或少都对 Java 的相关岗位的面试都有一定的了解,知道面试官一定会对某个知识点进行一系列的穷追猛打,直到你默默不语……
基础篇
-------- Java工程师的进阶之路 基础篇(一)
- Java语言主要特点
- Java语言和C++语言的区别
- JDK、JRE、JVM之间的关系
- Java应用程序与小程序之间的区别
- Java面向对象编程三大特性: 封装 继承 多态
-------- Java工程师的进阶之路 基础篇(二)
- 字符型常量和字符串常量的区别?
- Java中的String为什么不可变?
- String、StringBuffer、StringBuilder的区别是什么?
- Java的自动装箱与拆箱的实现原理?
- Java的重载和重写的区别是什么?
- Java的接口和抽象类的区别是什么?
- Java的对象实体与对象引用有何不同?
- Java的对象相等与引用相等有何不同?
- Java的成员变量与局部变量的区别有哪些?
- Java的静态方法和实例方法有何不同?
-------- Java工程师的进阶之路 基础篇(三)
- Java中的构造方法的作用和特性
- Java中的 final 关键字
- Java中的 static 关键字
- Java中的 volatile 关键字
- Java中的 transient 关键字
- Java中的 synchronized 关键字
- Java中的异常处理和类层次结构
- Java中的hashcode()方法和equals()方法
- Java中IO流以及BIO,NIO,AIO的区别
- 线程和进程的基本概念以及之间的关系
容器篇
-------- Java工程师的进阶之路 容器篇(一)
- Java容器分类图
- Collection接口(ArrayList、LinkedList、Vector、Stack)
- Set接口(HashSet、TreeSet、LinkedHashSet、EnumSet)
- Map接口(HashMap、HashTable、TreeMap、WeakHashMap)
- Iterator接口
-------- Java工程师的进阶之路 容器篇(二)
Java容器——List详解
- List 接口
- AbstractList(Iterator 实现、for-each 删除元素、subList 实现)
- ArrayList(MAX_ARRAY_SIZE、ArrayList 扩容、batchRemove)
- LinkedList(存储结构与迭代器)
- CopyOnWriteArrayList
-------- Java工程师的进阶之路 容器篇(三)
Java容器——Map详解
- AbstractMap(EntrySet、键视图和值视图)
- HashMap(HashMap 实现原理、resize 实现、迭代器构建、Java 1.8 性能改进)
- treeMap(TreeMap 实现原理、红黑树)
- ConcurrentHashMap(实现原理)
并发篇
-------- Java工程师的进阶之路 并发篇(一)
Java并发-线程池
- 线程池的优势
- 线程池的主要参数
- 线程池的执行流程
- 线程池的阻塞队列
- 线程池的饱和策略
- 线程池的配置选择
- Java提供的线程池
- execute()和submit()方法
-------- Java工程师的进阶之路 并发篇(二)
Java并发-Executor
- Executor框架的结构
- Executor类和接口示意图
- Executor框架的使用示意图
- ThreadPoolExecutor
- ScheduledThreadPoolExecutor
- Future接口
- Runnable接口和Callable接口
-------- Java工程师的进阶之路 并发篇(三)
Java并发-锁
- 乐观锁 VS 悲观锁(CAS自旋、AtomicInteger)
- 自旋锁 VS 适应性自旋锁
- 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁(synchronized、无锁、偏向锁、轻量级锁、重量级锁)
- 公平锁 VS 非公平锁(公平锁、非公平锁、ReentrantLock)
- 可重入锁 VS 非可重入锁(可重入锁、非可重入锁、ReentrantLock和synchronized)
- 独享锁 VS 共享锁(ReentrantReadWriteLock、WriteLock、ReadLock)
-------- Java工程师的进阶之路 并发篇(四)
Java并发-并发工具
- AQS(State、CLH队列(FIFO))
- CountDownLatch:等待其他线程完成操作
- CyclicBarrier:同步屏障
- Semaphore:控制并发线程数
- Exchanger:线程间交换数据
-------- Java工程师的进阶之路 并发篇(五)
Java并发-并发容器
- Threadlocal(ThreadLocal简单使用、ThreadLocal原理、ThreadLocal应用场景)
- ConcurrentHashMap:并发版HashMap
- CopyOnWriteArrayList:并发版ArrayList
- CopyOnWriteArraySet:并发Set
- ConcurrentLinkedQueue:并发队列(基于链表)
- ConcurrentLinkedDeque:并发队列(基于双向链表)
- ConcurrentSkipListMap:基于跳表的并发Map
- ConcurrentSkipListSet:基于跳表的并发Set
- ArrayBlockingQueue:阻塞队列(基于数组)
- LinkedBlockingQueue:阻塞队列(基于链表)
- LinkedBlockingDeque:阻塞队列(基于双向链表)
- PriorityBlockingQueue:线程安全的优先队列
- SynchronousQueue:读写成对的队列
- LinkedTransferQueue:基于链表的数据交换队列
- DelayQueue:延时队列
JVM篇
-------- Java工程师的进阶之路 JVM篇(一)
- JVM是什么
- JVM、JRE、JDK三者的关系
- Java运行时数据区域(程序计数器、虚拟机栈、本地方法栈、Java 堆、方法区、运行时常量池、直接内存)
- HotSpot 虚拟机对象探秘(对象的创建、对象的内存布局、对象的访问定位)
-------- Java工程师的进阶之路 JVM篇(二)
- Java 内存模型
- Java 内存分配
- Java 垃圾回收(判断对象已死、垃圾回收算法、垃圾回收器)
- JVM 优化
-------- Java工程师的进阶之路 JVM篇(三)
类加载机制
- 类的生命周期(七个阶段)
- 类的加载过程(加载、连接、初始化)
- 类的加载器(双亲委派模型、用户自定义的类加载器、类加载机制与接口)
MySQL篇
-------- Java工程师的进阶之路 MySQL篇(一)
- 什么是MySQL?
- MySQL存储引擎
- 字符集及校对规则
- MySQL数据索引
- MySQL事务机制
- MySQL日志模块
- SQL语句在MySQL中如何执行?
-------- Java工程师的进阶之路 MySQL篇(二)
- MySQL锁机制
- MySQL大表优化
- 分库分表代理架构
- 分库分表ID主键
Mybatis篇
-------- Java工程师的进阶之路 Mybatis篇(一)
- Mybatis 简介
- MyBatis 框架设计(接口层、数据处理层、框架支撑层)
- MyBatis 主要构件及其相互关系
- MyBatis 工作原理
- MyBatis 和 Hibernate 比较
-------- Java工程师的进阶之路 Mybatis篇(二)
- Mybatis 的SqlSession详解(SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession)
- MyBatis 中 #{} 和 ${} 的区别
- Mybatis 的二级缓存原理(一级缓存、二级缓存)
- Mybatis 的批处理机制详解(执行器类型、选择更优的批处理方案)
Redis篇
-------- Java工程师的进阶之路 Redis篇(一)
- Redis 简介
- Redis 基本数据结构(string、list、hash、set、zset)
- Redis 的线程模型
- Redis 设置过期时间(定期删除、惰性删除)
- Redis 内存淘汰机制
- Redis 持久化机制(RDB、AOF)
- Redis 事务机制
- Redis 发布/订阅功能
- Redis 集群模式(主从复制、Redis Sentinel 哨兵、Redis 集群架构)
-------- Java工程师的进阶之路 Redis篇(二)
- Redis 跳跃表(跳跃表简介、跳跃表原理)
- Redis 分布式锁(分布式锁简介、Redis 分布式锁、Redlock 分布式锁)
- Redis 布隆过滤器(布隆过滤器简介、布隆过滤器原理、布隆过滤器使用)
- Redis HyperLogLog(HyperLogLog 简介、HyperLogLog 原理)
Nginx篇
-------- Java工程师的进阶之路 Nginx篇(一)
- Nginx 简介
- 正向代理和反向代理
- Nginx 特点
- Nginx 工作原理
- Nginx处理HTTP请求流程
- Nginx 进程模型(master与worker、nginx处理高并发)
-------- Java工程师的进阶之路 Nginx篇(二)
- Nginx 模块功能(全局块、events块、http块、server块、location块)
- Nginx 配置解析
- Nginx 配置HTTPS
RocketMQ篇
-------- Java工程师的进阶之路 RocketMQ篇(一)
- 消息中间件简介
- 消息队列需要解决哪些问题?
- RocketMQ 入门实例(RocketMQ 生产者、RocketMQ 消费者)
-------- Java工程师的进阶之路 RocketMQ篇(二)
- RocketMQ 简介
- RocketMQ 架构图
- RocketMQ 名词解释
- RocketMQ Topic和Queue
- RocketMQ 消费模型
- RocketMQ 网络模型
- RocketMQ 存储模型
- RocketMQ 高可用性
- RocketMQ 定时/延时消息
- RocketMQ 事务消息
ElasticSearch篇
-------- Java工程师的进阶之路 ElasticSearch篇(一)
- ElasticSearch 简介
- ElasticSearch 基本概念
- Elasticsearch 倒排索引
- Elasticsearch 分词原理
- Elasticsearch 数据类型
-------- Java工程师的进阶之路 ElasticSearch篇(二)
- ElasticSearch 索引动态更新
- ElasticSearch 文档的更新删除
- Elasticsearch 数据读写原理
- ElasticSearch 分布式集群原理
- ElasticSearch 实际使用的问题(分片的设定、数据近实时问题、深分页问题)
Zookeeper篇
-------- Java工程师的进阶之路 Zookeeper篇(一)
- Zookeeper 简介
- Zookeeper 结构(文件系统、通知机制)
- Zookeeper 功能(命名服务、配置管理、系统解耦、集群管理、分布式锁、队列管理)
- Zookeeper 集群(分布式集群、数据复制的优点、数据一致性与paxos算法)
-------- Java工程师的进阶之路 Zookeeper篇(二)
- Zookeeper 系统模型
- Zookeeper 工作协议(CAP定理、原子广播协议)
- Zookeeper 选主流程(恢复模式)
- Zookeeper 同步流程(广播模式)
- Zookeeper 工作流程(Leader和Follower)
设计模式篇
-------- Java工程师的进阶之路 设计模式篇(一)
- 设计模式简介
- 设计模式的概念
- GoF的23种设计模式
- 面向对象设计原则(开闭原则、里氏替换原则、依赖倒置原则、单一职责原则、接口隔离原则、迪米特法则、合成复用原则)
-------- Java工程师的进阶之路 设计模式篇(二)
创建型模式
- 工厂方法模式(亦称: 虚拟构造函数、Virtual Constructor、Factory Method)
- 抽象工厂模式(亦称: Abstract Factory)
- 建造者模式(亦称: 生成器模式、Builder)
- 原型模式(亦称: 克隆、Clone、Prototype)
- 单例模式(亦称: 单件模式、Singleton)
-------- Java工程师的进阶之路 设计模式篇(三)
结构型模式
- 适配器模式(亦称: 封装器模式、Wrapper、Adapter)
- 桥接模式(亦称: Bridge)
- 组合模式(亦称: 对象树、Object Tree、Composite)
- 装饰模式(亦称: 装饰者模式、装饰器模式、Wrapper、Decorator)
- 外观模式(亦称: 门面模式、Facade)
- 享元模式(亦称: 缓存、Cache、Flyweight)
- 代理模式(亦称: Proxy)
-------- Java工程师的进阶之路 设计模式篇(四)
行为模式
- 责任链模式(亦称: 职责链模式、命令链、CoR、Chain of Command、Chain of Responsibility)
- 命令模式(亦称: 动作、事务、Action、Transaction、Command)
- 迭代器模式(亦称: Iterator)
- 中介者模式(亦称: 调解人、控制器、Intermediary、Controller、Mediator)
- 备忘录模式(亦称: 快照、Snapshot、Memento)
- 观察者模式(亦称: 事件订阅者、监听者、Event-Subscriber、Listener、Observer)
- 状态模式(亦称: State)
- 策略模式(亦称: Strategy)
- 模板方法模式(亦称: Template Method)
- 访问者模式(亦称: Visitor)
分布式网络篇
-------- Https相对Http更安全的原理探秘
- HTTPS
- SSL 简介
- TLS 简介
- HMAC 简介
- TLS与SSL的异同
- SSL协议基本运行过程
- 会话保持(Session ID 和 Session Ticket)
- CA认证机构和证书
-------- JWT最流行的跨域身份验证解决方案
- 什么是JWT
- JWT长什么样
- JWT的构成(header、playload、signature)
- JWT如何应用
- JWT优点和缺点
分布式限流篇
-------- 分布式限流常见算法原理和应用
- 限流策略
- 限流算法(令牌桶算法、漏桶算法)
- 应用级限流(限制总并发数/连接/请求数、限制接口的总并发/请求数、限流接口每秒的请求数、平滑限流接口的请求数)
- 接入层限流(Nginx、OpenResty)
- 分布式应用限流(Redis+Lua的实现)
分布式事务篇
-------- 分布式事务Seata几种常见模式分析
- 分布式事务协议((2PC)两阶段提交协议、(3PC)三阶段提交协议)
- AT 模式(一阶段、二阶段提交、二阶段回滚)
- TCC 模式(业务模型、允许空回滚、防悬挂控制、幂等控制)
- Saga 模式(使用场景、允许空补偿、防悬挂控制、幂等控制、自定义事务恢复策略)
- XA 模式
- AT、TCC、Saga、XA 模式对比
重要源码解析篇
-------- Dubbo服务启动初始化注解实现源码分析
- 概要
- @EnableDubbo
- @EnableDubboConfig
- @DubboComponentScan(@DubboService、@DubboReference)
-------- Spring Session Data Redis源码分析
- 概要
- @EnableRedisHttpSession
- RedisHttpSessionConfiguration
- SpringHttpSessionConfiguration
其他干货内容分享
即将带来【SpringCloud专场】和【LeetCode算法系列】,敬请期待......