Contents
  1. 1. Java Fundamentals
  2. 2. Commonly used Frameworks
  3. 3. Database
  4. 4. Web
  5. 5. Basics
  6. 6. Software Engineering and Management
  • References
  • 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

    Contents
    1. 1. Java Fundamentals
    2. 2. Commonly used Frameworks
    3. 3. Database
    4. 4. Web
    5. 5. Basics
    6. 6. Software Engineering and Management
  • References