3 依赖注入
3.1 知识注入:理解IoC和DI
3.1.1 控制反转
3.1.2 依赖注入
3.1.3 转成DI
3.2 Java中标准化的DI
3.2.1 @Inject注解
3.2.2 @Qualifier注解
3.2.3 @Named注解
3.2.4 @Scope注解
3.2.5 @Singleton注解
3.2.6 接口Provider<T>
3.3 Java中的DI参考实现:Guice 3
3.3.1 Guice新手指南
3.3.2 水手绳结:Guice的各种绑定
3.3.3 在Guice中限定注入对象的生命周期
3.4 小结
4 现代并发
4.1 并发理论简介
4.1.1 解释Java线程模型
4.1.2 设计理念
4.1.3 这些原则如何以及为何会相互冲突
4.1.4 系统开销之源
4.1.5 一个事务处理的例子
4.2 块结构并发(Java 5之前)
4.2.1 同步与锁
4.2.2 线程的状态模型
4.2.3 完全同步对象
4.2.4 死锁
4.2.5 为什么是synchronized
4.2.6 关键字volatile
4.2.7 不可变性
4.3 现代并发应用程序的构件
4.3.1 原子类:java.util.concurrent.atomic
4.3.2 线程锁:java.util.concurrent.locks
4.3.3 CountDownLatch
4.3.4 ConcurrentHashMap
4.3.5 CopyOnWriteArrayList
4.3.6 Queue
4.4 控制执行
4.4.1 任务建模
4.4.2 ScheduledThreadPoolExecutor
4.5 分支/合并框架
4.5.1 一个简单的分支/合并例子
4.5.2 ForkJoinTask与工作窃取
4.5.3 并行问题
4.6 Java内存模型
4.7 小结
5 类文件与字节码
5.1 类加载和类对象
5.1.1 加载和连接:概览
加载
连接
5.1.2 验证
准备
解析
5.1.3 Class对象
5.1.4 类加载器
5.1.5 示例:依赖注入中的类加载器
5.2 使用方法句柄
5.2.1 MethodHandle
5.2.2 MethodType
5.2.3 查找方法句柄
5.2.4 示例:反射、代理与方法句柄
5.2.5 为什么选择MethodHandle
5.3 检查类文件
5.3.1 介绍javap
5.3.2 方法签名的内部形式
5.3.3 常量池
5.4 字节码
5.4.1 示例:反编译类
5.4.2 运行时环境
5.4.3 操作码介绍
5.4.4 加载和储存操作码
5.4.5 数学运算操作码
5.4.6 执行控制操作码
5.4.7 调用操作码
5.4.8 平台操作操作码
5.4.9 操作码的快捷形式
5.4.10 示例:字符串拼接
5.5 Invokedynamic
5.5.1 invokedynamic如何工作
5.5.2 示例:反编译invokedynamic调用
5.6 小结