Original link: http://blog.csdn.net/liangyixin19800304/article/details/12760541
How to learn to grow from a Java Junior programmer to a qualified architect, or what kind of technical knowledge a qualified architect should have, is not only a novice programmer who has just entered the workplace, but also a problem often asked by old programmers who have been confused after 35 years of work. I hope this article will be the most comprehensive and authoritative answer you have ever seen.
One: Programming Basics
Whether it's C or C + +, whether Java or PHP, want to be a qualified programmer, basic data structure and algorithm Foundation is still to have. The following articles from ideas to implementation, for you to comb out the commonly used data structures and classical algorithms.
1-1 Common data structures
Array, linked list, heap, stack, queue, hash table, binary tree, etc.
1-2 Algorithmic Thinking
Analysis and calculation of algorithm time complexity and space complexity
Algorithmic thinking: Recursive, recursive, exhaustive, greedy, divided, dynamic programming, iterative, branching boundaries
1-3 Classical Algorithms
Classic sort: Insert sort, bubble sort, quick row (split swap sort), direct select sort, heap sort, merge sort
Classic Find: Order lookup, binary lookup, binary sort tree Lookup
1-4 Advanced Data Structures
b+/b-number, red-black tree, figure, etc.
1-5 Advanced Algorithms
Depth-first search of graphs, breadth-first search of graphs, topological ordering, Dijkstra algorithm (single source shortest path), Huffman coding, Euclidean method, minimum spanning tree, etc.
Second: the Java Language Foundation
The more than 20-year-old Java language, with its cross-platform, object-oriented, distributed computing features, is widely used in Web sites, mobile devices, desktop applications, and has been in the forefront of Tobie programming languages for many years, and has recently topped the throne. It's important to know what's good and what's different in Java first.
2-1 Basic Syntax
Java syntax formats, constants and variables, scope of variables, overloads of methods and methods, operators, program flow control, various basic data types and wrapper classes
2-2 Important: Collection classes
Collection and the implementation of various list, Set, Queue, map, and integration relationships, the principle of implementation
Collections and Arrays
2-3 other Javaapi
String and Stringbuffer,system and runtime classes, date and Datefomat classes
Java.lang Bag
Java.util Package (Collection class system, regular expressions, zip, and time, random number, attributes, resources, timer, etc.)
Java.math Bag
Java. NET Package
Java.text package (various formatting classes, etc.)
Java.security Bag
2-4 object-oriented, interface-oriented
Three main features of an object: encapsulation, inheritance, and polymorphism, pros and cons
How to design the class, the design principle of the class
This keyword, final keyword, static keyword
Instantiation process of an object
Method overrides and overloads; method and method parameter passing procedure
constructor function
Inner class, abstract class, interface
Object polymorphism (conversions between subclasses and parent classes, references to parent paper box classes), abstract classes and interfaces in polymorphic applications
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, finally using
2-7 Multi-Threading
Concepts of threads and processes
How to create multi-threading, thread-safe issues, communication between threads in a program
Synchronization of Threads
Analysis of the deadlock problem
Thread pool
2-8 IO
java.io package, understanding the IO system based on the pipeline model design ideas and commonly used IO class characteristics and applications.
File and related classes, byte stream InputStream and OutputStream, character stream reader and writer, and corresponding buffer stream and pipeline flow, bytes and characters of the conversion stream, wrapper flow, and common wrapper class use
Analyzing IO Performance
2-9xml
Familiarity with the advantages and disadvantages of sax, Dom, and Jdom, and the ability to use one of the parsing and content processing of XML, the principles of these analytic methods
2-10 some advanced features
Reflection, Proxy, generics, enumeration, Java regular expressions
2-11 Network Programming
Principles and application Scenarios of network communication protocols, socket programming, how Web servers work
2-11 JDK1.5, JDK1.6, JDK1.7, JDK1.8 What are the new features that each version adds to the previous version, and what improvements are made
Three: Database-related
In front of the data structure, the database is simply like an electronic filing cabinet, is to organize, store and manage data warehouse according to a certain data structure.
3-1 Theoretical basis
Database design principles and paradigms
Transactions (ACID, working principle, isolation level of transactions, locks, propagation mechanism of transactions)
3-2 various database advantages and disadvantages, usage scenario analysis
Mysql/sqlserver/oracle and various NoSQL (Redis, MongoDB, Memcached, Hbase, COUCHDB, etc.)
3-2 SQL statements
Database creation, permission assignment, creation of tables, additions and deletions, connection, sub-query
Triggers, stored procedures, transaction control
3-3 optimization
Index principle and application, large table query optimization, multi-table Connection query optimization, sub-query optimization, etc.
3-4 Library, sub-table, Backup, migration
Import, export, sub-Library, table, cold standby hot standby, master-slave backup, dual standby, vertical expansion, scale-out
3-5 JDBC
Use of different classes such as JDBC Connection, Statement, PreparedStatement, callablestatement, resultset, etc.
Connection pooling (configuration usage, implementation principle)
Orm,dao
IV: Javaweb core technology (including partial front end)
Html5/css/js native/jquery
Ajax (cross-domain, etc.)
Jsp/javabean/servlet/el/jstl/tablib
Jsf
Json
Ejb
Serialization and deserialization
Rule Engine
Search engine
Template engine
Cache
Identity verification
Test
Cluster
Persistence of
Generate static page technology
Performance
Safety
Transaction JTA
Other needs to know, such as: Managing JMX, Security Jcca/jaas, integrated JCA, Communications JNDI/JMS/JAVAMAIN/JAF, SSI technology
V. Mainstream framework and tools
Struts1/struts2
Spring (IoC, AOP, etc.), SPRINGMVC
Persistence: Hibernate/mybatis
LOG: log4j
Unit Test: JUnit
Message Queuing: ActiveMQ, RABBITMQ, etc.
Load balancing: Nginx/haproxy
Web servers: Tomcat, JBoss, Jetty, Resin, WebLogic, WebSphere, etc.
Communication: WebService (SOAP, restful protocol for CXF)
Cache: Redis, Memcached
Workflow: Activity, JBPM
Search engine: Lucene, SOLR based in Lucene package
Template engine: Velocity, Freemaker
Big Data: Hadoop (HDFs and MapReduce)
Build Tool: Ant/maven
Vi. 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 Web site load balancing, system tuning Excellence
Seven, more
Troubleshooting Capacity:
Should be able to quickly locate the cause and approximate location of the problem based on the exception information
Optimization capabilities
Code specification, code management:
Have their own code specification system, code readability good
Broad knowledge Surface:
Understand a variety of network products and features, understand a variety of middleware, can know where the pit, deep understanding of the advantages and disadvantages of various technical solutions, understand the integration of various resources and achieve the best .... Understand all kinds of technology and application scenarios, have enough work experience to solve all kinds of wonderful problems in integration
Technical Management/Technical Director:
Product management, project management, team building, team promotion
Cto:
Development strategy
Java advanced path-from junior programmers to architects, from small to expert (reprint)