Background of 0.

Building a knowledge system of our own can make the knowledge we have learned systematic. Let yourself know which is your knowledge blind area, which has built the foundation. Then according to the actual situation, targeted module learning. Make yourself a qualified Android engineer.

Usually read the blog or learn knowledge, learn things scattered, no independent knowledge module concept, and it is easy to forget after learning. So I set up a warehouse of my own notes (a warehouse I maintain for a long time, and if you are interested in it, you can click a star~ your star is a great motivation for me to write). I categorized what I learned and put it in it, so that it can be convenient to review when needed. After a while, I decided that wasn’t good enough, so I recently spent some time sorting out common Android knowledge and creating a mind map. Get a clearer idea of where your knowledge boundaries lie and where you’re missing.

Pictures can not see clearly friends can access the image source file, or view the curtain note link: Android knowledge system latest

This knowledge system is only a reference, you can add and delete according to their own actual situation (first save the notes to the curtain, and then you can modify). Then check the leak to fill the gap, improve their own ~

1. Basic computer skills

1.1 Computer Network

1.1.1 Computer Network Overview

  • Network layer 7 protocol
  • TCP/IP four-layer model
  • The underlying protocol
  • The underlying devices

1.1.2 the application layer

  • The HTTP protocol (⭐ ⭐ ⭐)
  • DHCP protocol (⭐ ⭐ ⭐)
  • NAT

1.1.3 Transport Layer (⭐⭐⭐)

  • TCP protocol
  • UDP protocol.

1.1.4 the network layer

  • TCP/IP protocol
  • The ICMP protocol

1.2 Operating System (⭐⭐⭐)

1.2.1 Basic Functions of the OS

  • Process management
  • Job management/file management
  • Storage management/device management

1.2.2 Linux system

  • Memory management
  • Process management
  • The file system
  • Common Command Operations

1.2.3 supplement

  • Spin-lock/mutex/read-write lock/condition variable/shared file
  • Message queues/pipes/semaphores
  • User mode and kernel mode of the operating system
  • Context switch cost
  • Processes, threads and coroutines

2. Java Basics (⭐⭐⭐)

2.1 Set Principle

  • ArrayList
  • Vector
  • Stack
  • LinkedList
  • HashMap
  • Hashtable
  • TreeMap
  • LinkedHashMap
  • HashSet
  • TreeSet
  • CopyOnWriteArrayList
  • ConcurrentHashMap
  • LinkedBlockingQueue
  • SynchronousQueue
  • SparseArray
  • ArrayMap

2.2 other

  • object-oriented
  • Design patterns
  • reflection
  • The generic
  • annotations

3. Java concurrency

3.1 Thread-based

  • Implementing multithreading
  • Starting a thread
  • Stop the thread
  • The six states of the thread
  • All kinds of locks
    • Pessimistic lock and optimistic lock
    • Shared locks and exclusive locks
    • Fair lock and non-fair lock
    • Reentrant locks and non-reentrant locks
    • Interruptible locks and non-interruptible locks
    • Spinlocks and non-spinlocks
    • Skew lock/lightweight lock/heavyweight lock
    • JVM optimizations for synchronized locks
  • Important methods such as wait/notify/sleep/join
  • Daemon thread, priority and other properties
  • Thread safety
  • The Future gets the result of the run
  • Fork/Join mode
  • CountDownLatch
  • CyclicBarrier
  • Semaphore
  • Condition
  • Phaser
  • reorder
  • atomic
  • Memory visibility
  • The CAS theory
  • AQS framework

3.2 other

3.2.1 Concurrent Containers

  • Vector/Hashtable
  • ConcurrentHashMap
  • CopyOnWriteArrayList
  • Blocking queue
  • Non-blocking queue
  • ConcurrentSkipListMap

3.2.2 Atomic package,6 atomic classes

  • classification
  • Atomic classes and locks
  • Atomic classes and volatile

3.2.3 ThreadLocal

  • Usage scenarios
  • The principle of

We do the thread pool

  • advantages
  • parameter
  • classification
  • Task execution process
  • Rejection policies
  • Close the thread pool correctly
  • Thread pool reuse principle

4. JVM VM

  • Memory area
  • The memory model
  • Memory allocation and reclamation policy
  • Java object creation, memory layout, and access location
  • GC: reference counting and accessibility analysis, garbage collection algorithms,G1 and ZGC
  • Class loading mechanism
  • Parent delegation model
  • Compiler optimization: method inlining, escape analysis
  • Virtual machine related: HotSpot and JIT,Dalvik,ART and AOT
  • JVM execution methods
  • JVM implements reflection
  • The JVM implements generics
  • JVM implementation exception
  • JVM implementation annotations

5. Data structure and algorithm

5.1 Data Structure

  • The stack
  • The queue
  • An array of
  • The list
  • The Hash table
  • Binary tree
  • Basic sorting algorithm
  • String operation

5.2 algorithm

  • Divide and conquer algorithm
  • Dynamic programming
  • Greedy algorithm
  • Branch and bound method

5.3 brush the topic

  • Cs-notes sword point Offer problem solution
  • CS – NotesLeetCode antithesis
  • JsonChao high frequency problem set

6. The Android

6.1 Core Knowledge points

6.1.1 Components

  • Activity
  • Service
  • BroadcastReceiver
  • ContentProvider

6.1.2 Layout and Controls

  • RelativeLayout
  • FrameLayout
  • LinearLayout
  • ConstraintLayout
  • Button
  • TextView
  • RecyclerView
  • .

6.1.3 Customizing View/ViewGroup

  • onMeasure
  • onLayout
  • onDraw
  • onTouchEvent
  • dispatchTouchEvent
  • Custom properties

6.1.4 Animation and gestures

  • The View animation
  • Attribute animation
  • LayoutAnimation View animation
  • GestureDetector
  • Scaling gesture detection

6.1.5 network

  • Request network
  • Analytical data

6.1.6 Image Loading

  • Local image
  • Network image
  • The compressed image
  • Multiple list
  • DiskLruCache

6.1.7 Handler

  • Looper
  • Message
  • MessageQueue
  • A memory leak
  • ThreadLocal

6.1.8 New Features of Android Versions

  • Android5.0
  • Android6.0
  • Android7.0
  • Android8.0 (O)
  • Android9.0 (P)
  • Android10.0 (Q)
  • Android11.0 (R)

6.1.9 other

  • Adb Common commands
  • Files and databases
  • Asynchronous thread pool
  • Resources

6.2 Using open Source Libraries

  • Retrofit/OKhttp
  • RxJava
  • Glide
  • Annotation framework
  • Jetpack

6.3 Performance Optimization

6.3.1 Fast – Smooth experience

  • Layout optimization
  • Draw the optimization
  • Memory optimization
  • Start the optimization
  • other

6.3.2 Stable – Stable

  • Avoiding memory leaks
  • Avoid collapse

6.3.3 Save – Save power/traffic

  • Use JobScheduler to schedule tasks
  • Use the Lazy Rule

6.3.4 Small – Small installation package

  • Apk constitute
  • Inclusions optimization

7. Android is advanced

7.1 Core Knowledge points

7.1.1 multi-process

  • Binder
  • AIDL
  • Messenger

7.1.2 the difficulties the Activity

  • OnSaveInstanceState () and onRestoreInstanceState ()
  • Intent-filter Matches rules
  • The life cycle
  • Boot mode
  • Activity Startup process
  • App startup Process

7.1.3 Service difficulties

  • StartService process
  • BindService process

7.1.4 BroadcastReceiver difficulties

  • How registering/sending/receiving works

7.1.5 ContentProvider difficulties

  • ContentProvider startup process

7.1.6

  • The View map
  • Dispatching events
  • The message queue
  • AsyncTask principle
  • RemoteViews
  • Window and ViewRootImpl

7.2 Principles of Open Source Libraries

  • OkHttp
  • Retrofit
  • RxJava
  • Glide
  • LeakCanary
  • GreenDao
  • ARouter

7.3 Gradle

  • compile
  • confusion
  • The signature
  • Groovy
  • Gradle build process
  • GradlePlugin
  • Gradle build optimization
  • App Build Process
  • Differentiated packaging

7.4 Primary Architecture

  • Design patterns
  • MVC,MVP,MVVM

7.5 the JNI

  • JNI basis
  • The NDK basis

7.6 dynamic

7.6.1 Pre-knowledge

  • Android Packaging Process
  • Java bytecode
  • GradlePlugin
  • TransformAPI
  • ASM

7.6.2 hotfix :nuwa&Tinker

  • Classic -64K problem
  • Dex subcontract
  • MultiDex optimization
  • FindClass principle
  • QQ space hot patch scheme
  • Nuwa application layer implementation
  • NuwaGradle

7.6.3 Plug-in :VirtualAPK

  • Load class
  • Access to resources
  • Life cycle management

7.7 Compile pile inserts

  • AOP
  • ASM

7.8 Framework

7.8.1 System Services

  • Zygote started
  • Android Startup
  • ServiceManager starts and works

7.8.2 Application Process

  • Start the process
  • Enabling the Binder Mechanism
  • Application Initialization process
  • Context

7.8.3 UI system

  • According to the principle of
  • UI thread startup
  • Screen refresh mechanism
  • surface
  • vsync

7.8.4 Process communication

  • Binder
  • IPC Communication Process
  • Binder objects are passed across processes
  • OneWay mechanism

7.8.5 Thread communication

  • The message queue
  • Messaging mechanism
  • Handler message delay implementation
  • IdleHandler principle
  • Message barrier
  • ThreadLocal principle

7.8.6 other

  • Pass large pictures across processes
  • Startup principles of the four components

8. Domain expert

8.1 Performance Optimization Direction

  • Stability optimization
  • Start speed optimization
  • Draw the optimization
  • Memory optimization
  • Package volume optimization
  • Network optimization
  • IO optimization
  • Storage optimization
  • Optimize the power consumption

8.2 Infrastructure Direction

  • Android Engineering Practices
  • Gradle automates builds
  • Compile pile insertion techniques
  • The Android framework
  • Android hot repair
  • The Android plug-in,
  • Android Core source code

8.3 NDK, Audio and video

  • C
  • C++
  • JNI basis
  • Compilation principles and syntax foundation
  • The Linux foundation
  • Hot repair
  • Gif figure implementation
  • Fundamentals of Audio and video
  • ffmpeg
  • WebRTC
  • opengl
  • vulkan
  • opencv

8.4 the big front end

8.4.1 Front-end Basics

  • HTML
  • CSS
  • JavaScript

8.4.2 Flutter (⭐ ⭐)

  • Introduction to the Dart
  • Introduction to Flutter
  • The development of
  • Engineering management
  • Online operations
  • release
  • Testing and debugging

8.4.3 other

  • ReactNative
  • Small program
  • Performance optimization

9. Other Android related

9.1 Kotlin (⭐ ⭐)

9.1.1 Basics

  • Built-in types
  • Type a preliminary
  • Express formula
  • Function is advanced
  • Type of advanced

9.1.2 Advanced section

  • The generic
  • reflection
  • annotations
  • coroutines

Python 9.2 (⭐)

  • basis
  • function
  • Advanced features
  • Functional programming
  • The module
  • Object-oriented programming
  • Errors, debugging, testing
  • IO programming
  • Processes and threads are often built in modules
  • Common Third-party modules
  • Network programming
  • The database
  • Asynchronous I/o

I wrote a Python script to turn the curtain mind map into MarkDown and number it. Those interested can see the source code here

The resources

  • Just elder brother
  • jsonchao
  • Omooo

Thanks to all of you