没长正的技术专栏 勤动手、多思考

Java 学习路线

2017-01-01

阅读:


Java 学习路线

脑图

参考:http://www.hollischuang.com/archives/489

学习java已有几年,感觉自己越来越Low, 特参考Hollis java学习路线,结合自身学习情况、总结。

基础篇

JVM

JVM内存结构
  • 堆、栈、方法区、直接内存、堆和栈的区别
Java内存模型
  • 内存可见性、重排序、顺序一致性、volatile、锁、final
垃圾回收
  • 内存分配策略、垃圾收集器(G1)、GC算法、GC参数、对象存活的判定

JVM参数及调优
  • Java对象模型
  • oop-klass、对象头
HotSpot
  • 即时编译器、编译器优化
  • 类加载机制
  • classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw)
  • 虚拟机性能监控与故障处理工具
    • jps
    • jstack
    • jmap
    • jstat
    • jconsole
    • jinfo
    • jhat
    • javap
    • btrace
    • TProfiler
  • 编译及反编译
    • java、java、jad、CRF

Java基础知识

阅读源码
  • String、Integer、Long、Enum、BigDecimal、ThreadLocal、ClassLoader & URLLoader
  • ArrayList、LinkedList
  • HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap
  • HashSet、LinkedHashSet、TreeSet
Java中各种变量类型
  • 熟悉Java String的使用,熟悉String的各种函数
  • JDK6和JDK7中substring的原理与区别
  • replaceFirst、repalceAll、replace的区别
  • String对”+”的重载
  • String.valueOf和Integer.toString的区别
  • 字符串的不可变性
  • 自动拆装箱
  • Integer的缓存机制
  • 熟悉Java中各种关键字
    • transient、instance of 、valtile、synchronized、final、static、const原理及用法
集合类
  • 常用集合类的使用
  • ArrayList和LinkedList和Vector的区别
  • SchronizedList和Vector的区别
  • HashMap和HashTable、ConcurrentHashMap的区别
  • Java8 Stream相关用法
  • apache集合处理工具类的使用
  • 不同版本的JDK的HashMap的实现的区别以及原因
枚举
  • 枚举的用法、枚举与单例、Enum类
Java IO & Java NIO
  • bio、nio和aio 的区别, 三种IO的用法与原理、netty
Java反射与javassist
  • 反射与工厂模式、java.lang.reflect.*
Java 反序列化
  • 什么是序列化与分序列化
  • 为什么序列化
  • 序列化的底层原理
  • 序列化与单例模式
  • protobuf
  • 为什么说序列化不安全
注解
  • 元注解、自定义注解、Java中常用注解使用、注解与反射的结合
JMS
  • 什么是Java消息服务,JMS消息传送模型
JMX
  • java.lang.management.*javax.management
泛型
  • 泛型与继承、类型与擦除、泛型宗KTVE?Object等的含义、泛型的各种用法
单元测试
  • Junit、mock、mockito、内存数据库(h2)
正则表达式
  • java.lang.util.regex.*
常用的Java工具库
  • commons.lang,commons.*...,guava-libraries,netty
什么是API &SPI
异常
  • 异常类型、正确处理异常、自定义异常
时间处理
  • 时区、时令、Java中时间API
编码方式
  • 解决编码问题、常用编码方式
语法糖
  • Java中的语法糖原理、解语法糖

Java并发编程

什么是线程,进程 及区别
  • 阅读源码,并学会使用
    • Thread、Runable、Callable、ReentrantLock、ReentrantReadWriteLock、
    • Atomic*、Semaphore、CountDownLatch、ConcurrentHashMap、Excutors
线程池
  • 自己设计线程池、Submit ()和execute()
线程安全
  • 死锁、死锁如何排查、Java线程调度、线程安全和线程模型
  • CAS、乐观锁与悲观锁、数据相关锁机制、分布式锁
  • 偏向锁、轻量级锁、重量级锁、monitor 、锁优化、锁消除
  • 锁粗化、自旋锁、可重入锁、阻塞锁、死锁
死锁
  • volatile
    • happens-before、编辑器指令重排和CPU指令重排
  • synchornized
    • synchronized是如何实现的?

参考Hollis

Java 基础-实操

Oracle - Java

Learning the Java Language

openjdk11


欢迎拍砖,多多交流,转载请注明出处:[没长正的技术专栏](http://blog.meizhangzheng.com) 如涉及侵权问题,请发送邮件到xsj34567@163.com,如情况属实本人将会尽快删除。


上一篇 HTTPS证书

下一篇 基本变量类型

Comments

Content