The path to advanced Java-from junior programmers to architects, from small workers to experts, and java
How to Learn how to grow from a Java junior programmer to a qualified architect, or what technical knowledge system should a qualified architect have, this is not only a beginner programmer who has just entered the workplace, but also an old programmer who has been confused since year 35. I hope this article will be the most comprehensive and authoritative answer you have ever seen.
I. Programming Basics
Whether it's C or C ++, Java or PHP, you want to be a qualified programmer, with basic data structures and algorithms. The following articles describe common data structures and classic algorithms from thought to implementation.
1-1 Common Data Structures
Array, linked list, heap, stack, queue, Hash table, binary tree, etc.
1-2 algorithm ideas
Analysis and computing of algorithm time complexity and space complexity
Algorithm ideas: recursive, recursive, exhaustive, greedy, sub-governance, dynamic planning, iteration, and branch boundaries
1-3 classic algorithms
Classic sorting: insert sorting, Bubble sorting, fast sorting (sharding and switching sorting), direct selection sorting, heap sorting, and Merge Sorting
Classic search: sequential search, binary search, and Binary Search
1-4 Advanced Data Structure
B +/B-number, red/black tree, graph, etc.
1-5 advanced algorithms
Depth-first search, breadth-first search, Topology Sorting, Dijkstra algorithm (single-source shortest path)
Ii. Java language basics
Java language, which has been born for more than 20 years, is widely used in Web sites, mobile devices, and desktop applications thanks to its cross-platform, object-oriented, and distributed computing features, he has been at the top of the TOBIE programming language rankings for many years, and has recently won the championship. The first difference between Java and Java must be clear.
2-1 basic syntax
Java syntax format, constants and variables, variable scopes, method and method overloading, operators, program flow control, various basic data types and packaging classes
2-2 important: Collection class
Collection and the implementation and integration relationships of various lists, sets, Queue, and Map.
Collections and Arrays
2-3 other Java APIs
String and StringBuffer, System and Runtime classes, Date and DateFomat classes
Java. lang Package
Java. util package (Collection class system, rule expression, zip, and time, random number, attribute, resource, and Timer)
Java. math package
Java. NET Package
Java. text package (various formatting classes)
Java. security Package
2-4 object-oriented and interface-oriented
Three features of an object: encapsulation, inheritance, and polymorphism, advantages and disadvantages
Design Principles of classes and Classes
This keyword, final keyword, static keyword
Object Instantiation Process
Method rewriting and overloading; parameter passing process of methods and methods
Constructor
Internal class, abstract class, Interface
Object polymorphism (Conversion between subclass and parent class, reference of parent class carton subclass), application of abstract class and interface in Polymorphism
2-5 JVM Memory Model and garbage collection
2-6 exceptions
Throwable/Error/Exception, Checked Exception vs. Unchecked Exception, Exception capture and throw, Exception capture principle, finally use
2-7 Multithreading
Concepts of threads and processes
How to Create multithreading in a program, thread security issues, and inter-thread Communication
Thread Synchronization
Analysis of deadlock Problems
Thread Pool
2-8 IO
Java. io package, understanding the design idea of the IO System Based on the pipeline model, as well as the features and usage of common IO classes.
File and related classes, byte stream InputStream and OutputStream, bytes stream Reader and Writer, as well as corresponding buffer stream and pipeline stream, byte and character conversion stream, packaging stream, and common packaging class usage
Analysis of IO Performance
2-9XML
Familiar with the advantages and disadvantages of SAX, DOM, and JDOM, and can use one of them to complete XML parsing and content processing; Principles of these parsing Methods
2-10 some advanced features
Reflection, proxy, generic, enumeration, Java Regular Expression
2-11 Network Programming
Principles and applicable scenarios of network communication protocols, Socket programming, and working principles of WEB servers
2-11 JDK1.5, JDK1.6, JDK1.7, and JDK1.8 each version adds new features and upgrades compared with the previous version.
Iii. Database Problems
As mentioned above, the data structure is simply like an electronic archive cabinet. It is a warehouse that organizes, stores, and manages data according to a certain data structure.
3-1 Theoretical Basis
Database Design Principles and Paradigm
Transactions (ACID, working principle, isolation level of transactions, lock, propagation mechanism of transactions)
3-2 Analysis of Advantages and Disadvantages and application scenarios of various databases
MySQL/SQLServer/Oracle and various NoSQL (Redis, MongoDB, Memcached, Hbase, CouchDB, etc)
3-2 SQL statements
Database creation, permission assignment, table creation, addition, deletion, modification, query, connection, and subquery
Trigger, stored procedure, transaction control
3-3 Optimization
Indexing principles and applicability, Big Table query optimization, multi-table join query optimization, and subquery Optimization
3-4 database sharding, table sharding, backup, and migration
Import and Export, database/table sharding, Cold Standby, Master/Slave backup, dual-machine Hot Standby, vertical scaling, and horizontal scaling
3-5 JDBC
Use of different classes such as JDBC Connection, Statement, PreparedStatement, CallableStatement, and ResultSet
Connection Pool (configuration usage and Implementation Principles)
ORM, DAO
Iv. JavaWeb core technologies (including some front-ends)
HTML5/Css/js NATIVE/jQuery
Ajax (cross-origin, etc)
JSP/JavaBean/Servlet/EL/JSTL/TabLib
JSF
JSON
EJB
Serialization and deserialization
Rule Engine
Search Engine
Template engine
Cache
Identity Authentication
Test
Cluster
Persistence
Static Page Generation Technology
High Performance
Security
Transaction JTA
Other things you need to know, such as JMX management, JCCA/JAAS security, JCA integration, communication JNDI/JMS/JavaMain/JAF, and SSI technology.
V. Mainstream frameworks and tools
Struts1/Struts2
Spring (IoC, AOP, etc.), SpringMVC
Persistence: hibernate/MyBatis
Log: Log4j
Unit test: JUnit
Message Queue: ActiveMQ, RabbitMQ, etc.
Load Balancing: Nginx/HaProxy
Web servers: Tomcat, JBoss, Jetty, Resin, WebLogic, WebSphere, etc.
Communication: WebService (soap and restful protocols of cxf)
Cache: redis, Memcached
Workflow: Activity, JBPM
Search engine: lucene, solr encapsulated based on lucene
Template engine: Velocity, FreeMaker
Big Data: Hadoop (HDFS and MapReduce)
Build tool: Ant/Maven
Vi. JavaWeb system design and architecture
Java Design Mode
JAVA and UML modeling
Service-Oriented Architecture: SOA, SCA, ESB, OSGI, EAI, and microservices
Resource-Oriented Architecture: ROA/REST
Cloud-Oriented Architecture: COA, Saas, and cloud computing
Load Balancing and System Optimization for large websites
VII. More
Troubleshooting capability:
You can quickly locate the cause and approximate location of the problem based on the exception information.
Optimization capability
Code specifications and code management:
Has its own code standardization system, with good code readability
Wide range of knowledge:
Understand various network products and features, understand various middleware, know where the pitfalls are, understand the advantages and disadvantages of various technical solutions, understand the integration of various resources and achieve the best .... understand various technologies and application scenarios, and have enough work experience to solve various wonderful problems encountered in integration.
Technical Management/Technical Director:
Product management, project management, team building, and team Improvement
CTO:
Development Strategy
Notes for learning Java !!!
If you have any questions or want to obtain learning resources during the learning process, join the Java learning exchange group: 299541275 let's learn Java together!