Learning Plan for a Java Backend Developer

Published:

Here is a list of points of knowledge I prepared for myself to learn or to review in order to be an advanced Java backend developer.

Java Fundamentals

  • Collection, java.util.concurrent, IO/NIO, reflection

NIO: overview of netty; review the source of netty

  • Dynamic proxy, CGLIB

How to generate proxy class

  • JVM, JMM (JVM Memory Model)

Mechanism of garbage collection (CMS GC + G1 GC) JMM: refer to java language specification JVM optimization: parameter optimization ConcurrentHashMap, CopyOnWrite, Thread pool, CAS, AQS

Commonly used Frameworks

  • Spring
    • IOC/AOP (design patterns): just skip through its source code
    • Source code level
  • MyBatis
    • Source code level

Database

  • MySQL
    • common practice of parameter settings
    • how to choose storage engine
    • how to choose index engine
    • table design
    • SQL optimization
  • Redis
    • internals
    • common practice of parameter settings

Web

  • HTTP Protocol: wikipedia
  • SOA: wikipedia
  • Caching
    • Guava cache
    • memcached
    • redis
  • Serialization (Google protocol buffer)
  • RPC
    • dubbo
  • JMS
    • internals

Basics

  • Algorithm & Data structure
    • <= Red-black tree
    • IOC/AOP
    • Design pattern (~ 15) ~> Wikipedia

Software Engineering and Management

High-Quality Software Engineering

References