How to learn to grow from a junior Java programmer to a qualified architect, or what kind of technical knowledge system a qualified architect should have. This is not only a junior programmer who has just entered the workplace, but also a job This is a question often asked by veteran programmers who become confused after three or five years. I hope this article will be the most comprehensive and authoritative answer you have ever seen.
1: Basics of Programming
Whether it’s C or C++, whether it’s Java or PHP, if you want to be a qualified programmer, you still need to have basic data structures and algorithm foundations. The following articles will sort out commonly used data structures and classic algorithms for you from idea to implementation.
1-1 Commonly used data structures
Arrays, linked lists, heaps, stacks, queues, Hash tables, binary trees, etc.
1-2 Algorithm ideas
Analysis and calculation of algorithm time complexity and space complexity
Algorithm ideas: Recursion, recursion, exhaustion, greedy, divide and conquer, dynamic programming, iteration, branch bound
1-3 Classic algorithms
Classic sorting: insertion sort, bubble sort, quick sort (divide and exchange sort), direct Selection sort, heap sort, merge sort
Classic search: sequential search, binary search, binary sort tree search
1-4 Advanced data structures
B+/B- numbers, red-black trees, graphs, etc.
1- 5 Advanced Algorithms
Depth-first search of graphs, breadth-first search of graphs, topological sorting, Dijkstra algorithm (single source shortest path), Huffman coding, euclidean division, minimum spanning tree, etc.
2: Java Language Basics
The Java language, which was born just over 20 years ago, has been widely used in Web websites, mobile devices, and desktop applications due to its cross-platform, object-oriented, and suitable for distributed computing features, and has been firmly ranked in TOBIE for many years. It is at the top of the programming language rankings, and recently it was ranked first. What are the outstanding and distinctive features of Java must first be clear.
2-1 Basic grammar
Java syntax format, constants and variables, variable scope, methods and method overloading, operators, program flow control, various basic data types and packaging classes
2-2 Important : Collection class
Collection and various List, Set, Queue, Map implementation and integration relationships, implementation principles
Collections and Arrays
2-3 Other JavaAPI
String and StringBuffer, System and Runtime classes, Date and DateFomat Class
java.lang package
java.util package (collection class system, regular expressions, zip, and time, random numbers, properties, resources and Timer, etc.)
java.math package
java.NET package
java.text package (various formatting classes, etc.)
java.security package
2-4 Object-oriented, interface-oriented
Three major characteristics of objects: encapsulation, inheritance and polymorphism, advantages and disadvantages
How to design Classes, class design principles
this keyword, final keyword, static keyword
instantiation process of objects
rewriting and overloading of methods; method and method parameter passing process
constructor
internals Classes, abstract classes, interfaces
Polymorphism of objects (conversion between subclasses and parent classes, references to parent carton classes), application of abstract classes and interfaces in polymorphism
2-5 JVM memory Model, garbage collection
2-6 About exceptions
Throwable/Error/Exception, Checked Exception vs. Unchecked Exception, exception catching and throwing, exception catching principles, use of finally
2-7 Multi-threading
The concept of threads and processes
How to create multi-threads in a program, thread safety issues, communication between threads
Thread synchronization
Analysis of deadlock problems
Thread pool
2-8 IO
java. io package, understand the design ideas of the IO system based on the pipeline model and the characteristics and usage scenarios of commonly used IO classes.
File and related classes, byte streams InputStream and OutputStream, character streams Reader and Writer, and corresponding buffer streams and pipe streams, byte and character conversion streams, packaging streams, and common packaging classes are used to analyze IO performance
2-9XML
Be familiar with the advantages and disadvantages of SAX, DOM and JDOM and be able to use one of them to complete XML parsing and content processing; the principles of these parsing methods
2-10 Some advanced features
Reflection, proxy , generics, enumerations, Java regular expressions
2-11 Network programming
Principles and applicable scenarios of network communication protocols, Socket programming, working principles of WEB servers
2-11 JDK1.5, JDK1.6, JDK1 .7. What new features and improvements have been added to each version of JDK1.8 compared to the previous version?
Three: Database relatedI mentioned the data structure earlier. The database is simply like an electronic database. A specialized filing cabinet is a warehouse that organizes, stores and manages data according to a certain data structure.
3-1 Theoretical basis
Database design principles and paradigms
Transactions (ACID, working principles, transaction isolation levels, locks, transaction propagation mechanisms)
3-2 Analysis of advantages and disadvantages of various databases, usage scenarios
MySQL/SQLServer/Oracle and various NoSQL (Redis, MongoDB, Memcached, Hbase, CouchDB, etc.)
3-2 SQL statements
Database creation, permission allocation, table creation, addition, deletion, modification, connection, subquery
Triggers, stored procedures, transaction control
3-3 optimization
Index principle and application, large table query optimization, multi-table connection query optimization, subquery optimization, etc.
3-4 database, table, backup, migration
Import, export, database, table, cold standby and hot Backup, master-slave backup, dual-machine hot backup, vertical expansion, horizontal expansion
3-5 JDBC
JDBC Connection, Statement, PreparedStatement, CallableStatement, ResultSet and other different types of use
Connection pool (configuration usage, implementation principle)
ORM, DAO
Four: JavaWeb core technology (including some front-ends)
HTML5/Css/js native/jQuery
Ajax (cross-domain, etc.)
JSP/JavaBean/Servlet/EL/JSTL /TabLib
JSF
JSON
EJB
Serialization and Deserialization
Rules Engine
Search Engine
Template Engine
Cache
Authentication
Testing
Cluster
Persistence
Generate static page technology
High performance
Security
Transaction JTA
Others you need to know, such as: management JMX, security JCCA/JAAS, integrated JCA, communication JNDI/JMS/JavaMain/JAF, SSI technology
5. 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 server: Tomcat, JBoss, Jetty, Resin, WebLogic, WebSphere, etc.
Communication: WebService (cxf's soap, restful protocol)
Cache: redis, Memcached
Work Stream: Activity, JBPM
Search engine: lucene, solr based on lucene package
Template engine: Velocity, FreeMaker
Big data: Hadoop (HDFS and MapReduce)
Build tool: Ant/Maven
6 , JavaWeb system design and architecture
Java design patterns
JAVA and UML modeling
Service-oriented architecture: SOA/SCA/ESB/OSGI/EAI, microservices
Resource-oriented architecture: ROA/REST
Cloud-oriented Architecture: COA/Saas/Cloud Computing
Large website load balancing, system tuning, etc.
Seven, More
Troubleshooting ability:
should be able to quickly locate the cause of the problem based on the exception information and approximate location
Optimization capabilities
Code specifications and code management:
Have its own code specification system, and the code is readable
Wide knowledge:
Understand various network products and features , understand all kinds of middleware, be able to know where the pitfalls are, be well versed in the advantages and disadvantages of various technical solutions, know how to integrate various resources and achieve the optimal... Understand various technologies and application scenarios, and have enough work experience to solve them Various strange problems encountered during integration
Technical management/technical director:
Product management, project management, team building, team improvement
The above is the detailed content of Detailed introduction to the path to Java advancement. For more information, please follow other related articles on the PHP Chinese website!