Comment apprendre à passer d'un programmeur Java junior à un architecte qualifié, ou quel type de système de connaissances techniques un architecte qualifié devrait avoir Ce n'est pas seulement un programmeur junior qui vient d'entrer sur le marché du travail. souvent demandé par les programmeurs chevronnés qui deviennent confus après avoir travaillé pendant trois à cinq ans. J'espère que cet article sera la réponse la plus complète et faisant autorité que vous ayez jamais vue.
1 : Bases de la programmation
Que ce soit C ou C++, que ce soit Java ou PHP, si vous souhaitez devenir un programmeur qualifié, les structures de données de base et fondements de l'algorithme Encore faut-il l'avoir. Les articles suivants trieront pour vous les structures de données couramment utilisées et les algorithmes classiques, de l’idée à la mise en œuvre.
1-1 Structures de données communes
Tableau, liste chaînée, tas, pile, file d'attente, table de hachage, arbre binaire, etc.
1-2 Idées d'algorithmes
Analyse et calcul de la complexité temporelle et spatiale de l'algorithme
Idées d'algorithmes : récursivité, récursivité, épuisement, gourmand, diviser pour régner, programmation dynamique, itération, branchement
1- 3 Algorithmes classiques
Tri classique : tri par insertion, tri à bulles, tri rapide (tri par division et échange), tri par sélection directe, tri par tas, tri par fusion
Recherche classique : recherche séquentielle, recherche binaire , Recherche d'arbre de tri binaire
1-4 Structures de données avancées
Nombres B+/B, arbres rouge-noir, graphiques, etc.
1-5 Algorithmes avancés
Recherche en profondeur d'abord du graphique, recherche en largeur du graphique en premier, tri topologique, algorithme de Dijkstra (chemin le plus court à source unique), codage de Huffman, division euclidienne, arbre couvrant minimum, etc.
2 : Bases du langage Java
Le langage Java, né il y a un peu plus de 20 ans, est largement utilisé dans les sites Web. Dans les appareils mobiles et les applications de bureau, il a été au sommet du classement des langages de programmation TOBIE pendant de nombreuses années consécutives, et récemment, il a dominé le championnat. Quelles sont les caractéristiques exceptionnelles et distinctives de Java doivent d’abord être claires.
2-1 Syntaxe de base
Format de syntaxe Java, constantes et variables, portée des variables, méthodes et surcharge de méthodes, opérateurs, contrôle de flux de programme, divers types de données de base et classe d'emballage
2-2 Important : Classe de collection
Collection et diverses relations d'implémentation et d'intégration de listes, d'ensembles, de files d'attente, de cartes, principes d'implémentation
Collections et tableaux
2-3 Autres JavaAPI
String et StringBuffer, classes System et Runtime, classes Date et DateFomat
package java.lang
package java.util (système de classes de collection, expressions régulières, zip , ainsi que l'heure, les nombres aléatoires, les propriétés, les ressources et la minuterie, etc.)
paquet java.math
paquet java.NET
paquet java .text (divers classes de formatage, etc.)
package java.security
2-4 Orienté objet, orienté interface
Les trois caractéristiques majeures des objets : encapsulation et héritage Et polymorphisme , avantages et inconvénients
Comment concevoir une classe, principes de conception d'une classe
ce mot-clé, mot-clé final, mot-clé statique
Le processus d'instanciation d'un objet
Réécriture et surcharge des méthodes ; le processus de passage des paramètres des méthodes et méthodes
Constructeur
Classes internes, classes abstraites, interfaces
Polymorphisme des objets (conversion entre sous-classes et classes parent, références aux classes carton parent), application de classes abstraites et d'interfaces dans le polymorphisme
2-5 Modèle de mémoire JVM, garbage collection
2-6 À propos des exceptions
Throwable/Error/Exception, Checked Exception vs.
Comment créer du multi-threading dans un programme, problèmes de sécurité des threads, communication entre les threadsSynchronisation des threadsAnalyse du problème de blocagePool de threads2-8 IOpaquet java.io, comprenez les idées de conception du système IO basées sur le modèle de pipeline et les classes IO communes Caractéristiques et situations d'utilisation. Fichiers et classes associées, flux d'octets InputStream et OutputStream, flux de caractères Reader et Writer, ainsi que les flux de tampon et les flux de tuyaux correspondants, les flux de conversion d'octets et de caractères, les flux d'empaquetage et les classes d'empaquetage couramment utiliséesAnalyser les performances des IO2-9XMLÊtre familier avec les avantages et les inconvénients de SAX, DOM et JDOM et être capable d'utiliser l'un d'entre eux pour effectuer l'analyse XML et le traitement de contenu de ces types ; d'analyse Principes des méthodes2-10 Quelques fonctionnalités avancéesRéflexion, proxys, génériques, énumérations, expressions régulières Java2-11 Programmation réseauPrincipes et scénarios applicables des protocoles de communication réseau, de la programmation Socket et des principes de fonctionnement des serveurs WEB2-11 Chaque version de JDK1.5, JDK1.6, JDK1.7 et JDK1.8 est meilleure que la version précédente Quelles nouvelles fonctionnalités ont été ajoutées et quelles améliorations ont été apportées3 : Lié à la base de données
Comme mentionné précédemment, la structure des données c'est simplement comme s'il s'agissait d'un classeur électronique et d'un entrepôt qui organise, stocke et gère les données selon une certaine structure de données.3-1 Base théorique
Principes et paradigmes de conception de bases de donnéesTransactions (ACID, principe de fonctionnement, niveau d'isolement des transactions, verrous, mécanisme de propagation des transactions)3-2 Analyse des avantages, inconvénients et scénarios d'utilisation de diverses bases de donnéesMySQL/SQLServer/Oracle et divers NoSQL (Redis, MongoDB, Memcached, Hbase, CouchDB, etc.)3 - 2 instructions SQL Création de base de données, attribution d'autorisations, création de table, ajout, suppression, modification, requête, connexion, sous-requêteDéclencheurs, procédures stockées, contrôle des transactions3 -3 Optimisation
Principe et application de l'index, optimisation des requêtes de grandes tables, optimisation des requêtes de connexion multi-tables, optimisation des sous-requêtes, etc.
3-4 sous-base de données, sous-table, sauvegarde, migration
Importation, exportation, sous-base de données, sous-table, veille froide et veille chaude, sauvegarde maître-esclave, veille chaude double machine, expansion verticale, expansion horizontale
3-5 JDBC
Connexion JDBC, Statement, PreparedStatement, CallableStatement , ResultSet et autres différents types d'utilisation
Pool de connexions (utilisation de la configuration, principe d'implémentation)
ORM, DAO
Quatre : JavaWeb Core Technology (y compris certains front-end)
HTML5/Css/js natif/jQuery
Ajax (cross-domaine, etc.)
JSP/JavaBean/Servlet/EL/JSTL /TabLib
JSF
JSON
EJB
Sérialisation et désérialisation
Moteur de règles
Moteur de recherche
Moteur de modèles
Cache
Authentification
Tests
Cluster
Persistance
Génération de technologie de page statique
Hautes performances
Sécurité
Transaction JTA
Autres éléments dont vous avez besoin savoir, tels que : gestion JMX, sécurité JCCA/JAAS, Intégration JCA, communication JNDI/JMS/JavaMain/JAF, technologie SSI
5. Frameworks et outils grand public
Struts1/Struts2
spring (IoC, AOP, etc.), SpringMVC
Persistance : hibernate/MyBatis
Log : Log4j
Test unitaire : JUnit
File d'attente de messages : ActiveMQ, RabbitMQ, etc.
Équilibrage de charge : Nginx/HaProxy
Serveur Web : Tomcat, JBoss, Jetty, Resin , WebLogic, WebSphere, etc.
Communication : WebService (cxf soap, restful protocol)
Cache : redis, Memcached
Workflow : Activité, JBPM
Moteur de recherche : lucene, solr basé sur l'encapsulation lucene
Moteurs de templates : Velocity, FreeMaker
Big data : Hadoop (HDFS et MapReduce)
Outils de build : Ant/Maven
6, Conception et architecture du système JavaWeb
Modèles de conception Java
Modélisation JAVA et UML
Architecture orientée services : SOA/SCA/ESB/OSGI/EAI, Micro Service
Architecture orientée ressources : ROA/REST
Architecture orientée Cloud : COA/Saas/Cloud Computing
Équilibrage de charge de grands sites Web, réglage du système, etc.
7. Plus
Capacité de dépannage :
Il devrait être possible de localiser rapidement la cause du problème en fonction des informations d'exception et de l'emplacement approximatif
Capacités d'optimisation
. Spécifications du code et gestion du code :
possède son propre système de spécification de code, et le code peut Bonne lisibilité
Connaissances étendues :
Comprendre divers produits et fonctionnalités réseau, comprendre divers middleware, être capable de savoir où se trouvent les pièges et se familiariser avec diverses technologies Les avantages et inconvénients de la solution, savoir intégrer diverses ressources et obtenir des résultats optimaux.... Comprendre diverses technologies et des scénarios d'application, et avoir suffisamment d'expérience professionnelle pour résoudre divers problèmes étranges rencontrés en intégration
Direction technique/directeur technique :
Gestion de produit, gestion de projet, team building, amélioration de l'équipe
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!