Please, school girl, stop asking me how to learn Java by myself! And tell

If there is such a cruel day, I accidentally drank the wrong bottle of medicine, which wiped out my more than ten years of programming experience and turned me into a little white. I want to learn Java by myself, and I want to find a job. I estimate that it will take 6 months. The prerequisite is that I am in an efficient learning state every day, and I study at least 12 hours a day.

Even so, I'm sure that the job I found will not be too good, and I can barely make ends meet. After all, it is a zero-based entry.

If you want to go further and truly become an indispensable senior Java engineer, it will take longer, two, three, five years, until the day of baldness.

Thinking about it, I felt it necessary to prepare for that day in case of emergency.

01. The first stage, environment and tool preparation

  • Prepare a computer and connect to the Internet
  • Download and install JDK, configure Java development environment
  • Download and configure Maven
  • Download and install IntelliJ IDEA
  • Prepare a GitHub repository (or code cloud) to manage Java source code

Java is a computer programming language. If you learn it, you don’t even have a computer. I have a child from a relative’s family who wants to learn programming, so he only reads books. He doesn’t even have a computer at home. I’m really a little drunk when he says “First lay the theoretical foundation, then practice”.

If you have a computer, you have to be connected to the Internet. You will definitely encounter a lot of problems in the process of self-study. When you encounter problems, first ask the search engine and recommend Google and Bing; if there is no answer, you can also come to me and apply for technical exchange. Group, ask the big guys in the group.

Since you want to learn Java, JDK must be installed first, otherwise Java programs cannot be compiled and executed.

Maven also needs to be installed and configured in advance, because later advanced, you need some practice projects, they usually need Maven to load third-party libraries.

Use the integrated development environment IntelliJ IDEA to type Java code, which is more popular than Eclipse. Don't use Notepad to write source code. For Xiaobai, time is precious. Notepad is only suitable for big cows to pretend, not for Xiaobai to use for programming (beginner), a waste of time.

With IDEA, it will be much more convenient to learn the source code later, including decompiling bytecode.

If English is not good enough, it is recommended to install two IDEA plug-ins: chinese and translation .

If you pay attention to coding standards, it is recommended to install two IDEA plug-ins: Alibaba and SonarLint .

Why do you need a GitHub repository or a code cloud repository? They can be used to synchronize source code online to prevent version loss. At the end of learning, you can also form a set of your own tool library. With the wheels, your work efficiency will be much higher when you go to work. The code that can be used directly does not need to be rewritten.

02. The second stage, introduction to Java basics

1) Basic data types

2) Operator

  • Arithmetic Operator
  • Logical Operators
  • Comparison operator

3) Process control statement

  • Conditional branch (if/else/else if, ternary operator, switch )
  • Loop or traverse (for, while, do-while)
  • break 和 continue

4) Package

  • Create package
  • Import package
  • Full package name

5) Detailed explanation of the main method

  • public keyword
  • static keyword
  • void keyword
  • main method
  • String array parameter ( String[] args)

6) Array

7) Notes

8) String

03. The third stage, Java core technology

1) Object-oriented

2) Common tools

  • String related tools
  • Date and time related tools
  • enumerate
  • random number
  • Regular expression
  • Apache-commons tool library
  • Guava tool library

3) Collection framework

4) Reflection mechanism

  • What is reflection?
  • What is the use of reflection?
  • Class

5) Exception handling

  • Why do you need an exception handling mechanism?
  • Error 和 Exception
  • try-catch-finally
  • try-with-resource
  • Custom exception
  • Try to catch the original exception
  • Don't throw an exception after printing the stack
  • Don't use exception handling mechanism instead of judgment
  • Don't catch exceptions too early

6) Annotation

  • What are annotations?
  • Annotation life cycle
  • The goal of annotation decoration
  • Custom annotation
  • Use annotations

7) IO style

  • Character stream, byte stream
  • Input stream, output stream
  • Synchronous Asynchronous
  • Blocking, non-blocking
  • BIO 、 NIO 和 AIO
  • NIO 2.0

8) Serialization

  • What is serialization and deserialization
  • How does Java implement serialization and deserialization
  • Serializbale 和 Externalizable
  • serialVersionUID

9) Generic

10) Unit testing

  • Junit
  • TestNG

11) Coding method

  • ASCII
  • Unicode
  • UTF-8
  • GBK、GB2312
  • How to solve the garbled problem

12) Concurrent programming

  • What is concurrency
  • What is parallel
  • What is thread
  • What is a process
  • Thread status
  • Thread priority
  • Create thread
  • Create thread pool
  • What is thread safety
  • Multi-level caching and consistency issues
  • CPU time slices and atomicity issues
  • Order rearrangement and order issues
  • Thread safety and memory model
  • happens-before
  • Reentrant lock
  • Blocking lock
  • Optimistic lock
  • Pessimistic lock
  • Distributed lock
  • CASE
  • ABA
  • Bias lock
  • Lightweight lock
  • Heavyweight lock
  • Spin lock
  • What is deadlock
  • How to avoid deadlock
  • synchronized
  • volatile
  • ThreadLocal
  • Executors
  • CountDownLatch
  • Thread
  • Runnable
  • Callable
  • ReentrantLock
  • ReentrantReadWriteLock
  • Atomic related classes

13) Java 8 new features

14) Source code reading

  • String
  • Integer
  • ArrayList
  • LinkedList
  • CopyOnWriteArrayList
  • HashMap
  • TreeMap
  • LinkedHashMap
  • ConcurrentHashMap
  • CopyOnWriteArrayList

04. The fourth stage, Java advanced upgrade

1)JVM

  • Java memory structure
  • heap
  • Stack
  • Garbage collection
  • JVM parameter tuning
  • Java Object Model
  • HotSpot
  • Class loading mechanism
  • Compile and decompile
  • Decompilation tool
  • JIT
  • Virtual machine performance monitoring and troubleshooting tools (jps, jstack, jmap, jstat, jconsole, javap)

2) Performance optimization

  • Use singleton
  • Use thread pool
  • Reduce context switching
  • Reduce lock granularity
  • data compression
  • Stream parallel stream
  • GC tuning
  • JVM memory allocation tuning
  • btrace

3) Design pattern

  • Six principles of design patterns
  • Creational design patterns (singleton, abstract factory, builder, factory, prototype)
  • Structural design mode (adapter, bridge, decoration, combination, appearance, Flyweight, agency)
  • Behavioral design patterns (template methods, commands, iterators, observers, intermediaries, memos, interpreters, states, strategies, chains of responsibility, visitors)
  • Seven ways to write singleton

4) Data structure and algorithm

  • Simple data structure (stack, queue, linked list, array, hash table)
  • Trees (binary tree, dictionary tree, balanced tree, sort tree, B tree, B+ tree, R tree, red-black tree, multi-way tree)
  • heap
  • Graphs (topology, directed graph, undirected graph)
  • Stable sorting algorithm (bubble sort, insertion sort, cocktail sort, bucket sort, count sort, merge sort, in-place merge sort, binary sort tree sort, pigeon nest sort, cardinal sort, dwarf sort, library sort, block Sort)
  • Unstable sorting algorithm (selection sort, hill sort, comb sort, heap sort, smooth sort, quick sort, introspective sort, patient sort, Clover sort)
  • time complexity
  • Space complexity
  • how are you
  • KMP algorithm

5) Operating system

  • Common Linux commands (find, top, tar, move, grep, tail, netstat, curl, wget, ping, ssh)
  • Server performance indicators (qps, CPU utilization)
  • Process synchronization
  • Segmentation and paging
  • Virtual memory and main memory

6) Network Security

  • CSRF
  • XSS
  • SQL injection
  • Encryption and decryption (symmetric encryption, asymmetric encryption)
  • MD5 、 SHA1 、 DES 、 RSA
  • DDOS attack
  • HTTP 和 HTTPS
  • SSL
  • TLS
  • TCP and UDP
  • Cookie、Session
  • CDN
  • DNS

7) Database

  • MySql
  • index
  • Stored procedure
  • Sub-database and sub-table
  • binlog
  • Read and write separation
  • Database cache ( Redis , MongoDB )
  • Database middleware (MyCat)
  • Database connection pool (Durid)

8) Big data

  • Search ( Elasticsearch , Solr)
  • Streaming computing (Storm, Spark, Flink)
  • Hadoop

9) Server

  • Tomcat
  • jetty
  • Nginx

10) Frame

  • Spring
  • MyBatis
  • Spring MVC
  • Spring Boot
  • Spring Security
  • Spring Cloud
  • Netty
  • Dubbo

11) Message queue

12) Container

  • Docker
  • K8s

If I need a Java book list, I found a treasure project on GitHub . Just looking at the catalog is a little attracted to me.

The small partners who need it can pick it up as needed, the address is as follows:

https://github.com/itwanger/JavaBooks

05. In the fifth stage, life is the most important

There is no end to technology and there is no end to learning. The most important thing is to live and not be bald.

When reading a book or watching a video when getting started with zero foundation, I think adults, why bother to do multiple choice questions. If you like to read a book, you can read a book, and if you like a video, you can watch a video.

The most important thing is that in the process of self-study, you must not be over-sighted, but be practical, put the learned technology into the project, solve the problem, and then further temper your own skills.

For open source projects, I recommend mall and vhr on GitHub. The former is an e-commerce system, and the latter is a micro-personnel. Both use the most foreword technology, and the documentation is very comprehensive, so I am not afraid of getting confused.

The most feared thing about self-study is the lack of self-drive. You must be self-disciplined and put an end to "three days of fishing and two days of netting", and work in vain in the end.

While a high degree of self-discipline, you must remain patient, do not abandon or give up, do not complain about yourself, give yourself a little encouragement every day, you will have a lot of motivation to learn, and you will not be easily sleepy.

After learning the skills, you must prepare a resume when you are looking for a job. Don't go to the sea to submit your resume like a headless fly. You can refer to the link below to prepare your resume. After all, it is a stepping stone to finding a job.

After I joined Ali, I realized that my resume was written like this

After you get the interview invitation, you must be generous during the interview process and try your best to express the knowledge you have learned comfortably. Don't be self-confident because you are self-study. Give the interviewer a good impression. The chance of success in the interview is only It will be much bigger, come on, Sao Nian!

Guess you like

Origin blog.csdn.net/qing_gee/article/details/109031108