
├── 第01章 课程介绍
│ └── 1-1 为什么做这门课
│
├── 第02章 Java空指针和异常
│ ├── 2-1 如何从根源避免空指针
│ ├── 2-2 赋值时自动拆箱出现空指针
│ ├── 2-3 字符串、数组、集合在使用时出现空指针怎么办
│ ├── 2-4 使用Optional需要注意些什么
│ ├── 2-5 明明try catch了却没有解决好异常
│ ├── 2-6 常见异常:并发修改、类型转换、枚举查找
│ ├── 2-7 编码中常见异常解决办法
│ └── 2-8 使用try finally资源泄露隐患
│
├── 第03章 Java计算、集合、接口
│ ├── 3-1 BigDecimal出错?都是精度的锅
│ ├── 3-2 为啥老用不好日期计算
│ ├── 3-3 SimpleDateFormat线程不安全的原因
│ ├── 3-4 我只想迭代元素,不需要索引呀
│ ├── 3-5 嵌套迭代,小心外面的过早耗尽
│ ├── 3-6 如果不好好判等,集合存储就会乱套
│ ├── 3-7 使用lombok注解,没有达到预期该怎么办
│ ├── 3-8 怎么避免抽象类和接口选择失误呢
│ ├── 3-9 接口的默认方法和静态方法改写总不合预期
│ ├── 3-10 lambda表达式不是什么地方都能写
│ └── 3-11 lambda和Stream真的高效吗
│
├── 第04章 泛型、反射、编译优化
│ ├── 4-1 父类没有实现Serializable,子类就不能实现了吗
│ ├── 4-2 实现了Serializable接口却报错怎么办
│ ├── 4-3 泛型不仅仅是规定集合中的类型那么简单
│ ├── 4-4 你必须要知道的泛型特性
│ ├── 4-5 使用原始类型可能会出现灾难性后果
│ ├── 4-6 反射同样也是有缺陷的
│ ├── 4-7 反射获取不到Method是为什么呢
│ ├── 4-8 并不是所有的字符串拼接都使用StringBuilder
│ ├── 4-9 面试时答上来深浅拷贝,实际中会用吗
│ └── 4-10 你的序列化实现的是深拷贝还是浅拷贝
│
├── 第05章 Java线程安全
│ ├── 5-1 用不好Synchronized关键字
│ ├── 5-2 多线程下怎么更新变量值才好
│ ├── 5-3 提到阻塞队列,你是不是感觉到很懵
│ ├── 5-4 并不是什么时候都适合用Copy-On-Write
│ ├── 5-5 使用线程池,你有没有遇到过拒绝执行异常
│ ├── 5-6 线程池其实是用来管理线程的工具
│ ├── 5-7 如何实现对线程状态监控
│ ├── 5-8 ThreadLocal不是用来解决并发或共享问题的
│ └── 5-9 用不好ThreadLocal,极有可能出现内存泄漏
│
├── 第06章 Spring中的坑
│ ├── 6-1 Spring配置文件要小心“一步到位”
│ ├── 6-2 你知道Spring Bean的默认名称生成策略吗
│ ├── 6-3 使用@Autowired注解,但是仍然出现空指针
│ ├── 6-4 不使用自动注入你还会获取上下文吗(上)
│ ├── 6-5 不使用自动注入你还会获取上下文吗(下)
│ ├── 6-6 Bean的数据不符合预期怎么办
│ ├── 6-7 你是不是经常报“存在多个可用Bean”异常
│ ├── 6-8 你是不是经常报“存在多个可用Bean”异常
│ ├── 6-9 Spring Bean出现了循环依赖,该怎么办
│ ├── 6-10 Bean实例化之前我们还能做点儿什么
│ ├── 6-11 学会利用Bean的生命周期,事半功倍
│ ├── 6-12 你的@Transactional标对位置了吗
│ └── 6-13 写了@Transactional也不能回滚
│
├── 第07章 SpringMVC中的坑
│ ├── 7-1 你是不是总看不明白别人的自定义异常
│ ├── 7-2 明明该抛出自定义的异常,怎么还报500
│ ├── 7-3 时间格式不能正常转换?检查下POST请求吧
│ ├── 7-4 时间格式局部处理真的好吗
│ ├── 7-5 调试时进不去断点?可能是多个Filter卡住了
│ ├── 7-6 日志到底该放在拦截器,还是过滤器中
│ ├── 7-7 读取了Request输入流,请求数据就不见了
│ └── 7-8 获取不到数据?可能是方法互斥的锅
│
├── 第08章 SpringBoot中的坑
│ ├── 8-1 配置总出错?是不是同时用了.properties和.yml
│ ├── 8-2 换个位置配置就失效?搞清楚加载顺序吧
│ ├── 8-3 定时任务不定时了,这到底是怎么了
│ ├── 8-4 线程池出错缺看不出原因?可能是异步任务没处理好
│ ├── 8-5 异步任务超时怎么办
│ ├── 8-6 速度慢,有没有想过可能是ObjectMapper实例化太多次
│ └── 8-7 Jackson和fastJson到底有啥区别
│
├── 第09章 MySQL中的坑
│ ├── 9-1 表属性设置为NULL,你可能要面临很多麻烦
│ ├── 9-2 不再随意设置数据类型,不给未来留隐患
│ ├── 9-3 索引加的不好,效果可能适得其反(上)
│ ├── 9-4 索引加的不好,效果可能适得其反(下)
│ ├── 9-5 MySQL为什么莫名其妙的断开连接
│ ├── 9-6 事务处理出错?可能是锁用的不对
│ ├── 9-7 你写的SQL可能很慢,怎样做优化呢
│ └── 9-8 数据量逐渐增大,才考虑分库分表可行吗
│
└── 第10章 Redis中的坑
├── 10-1 怎么正确的选择数据类型,让维护不再是噩梦
├── 10-2 使用了事务功能,怎么没回滚呢
├── 10-3 Redis性能上不去,可能是有big key
├── 10-4 Redis怎么出现了内存耗尽
├── 10-5 有了过期机制以后内存还不够用怎么办
├── 10-6 如何解决频繁的命令往返造成的性能瓶颈
├── 10-7 你配置好持久化机制了吗
├── 10-8 你的代码是不是有缓存穿透隐患
└── 10-9 出现缓存雪崩该怎么办?如何避免