L'échafaudage qui a longtemps dominé le champ Javaee a mené avec Spring Struts2 Mybatis / Hibernate;
Printemps:
Le printemps n'est pas seulement pour les services Java. En tant que mise en œuvre de Spring en tant que norme CGI, ce n'est pas seulement un cadre dans le champ Java, mais la plate-forme C # peut toujours en bénéficier; Spring fournit diverses méthodes de configuration d'annotation pratiques telles que l'abstraction ou les solutions intégrées bootde, ce qui simplifie considérablement la base du projet de Javaee;
Pendant l'utilisation du printemps, les deux côtés sont différenciés, certains sont des annotations de poids légère, et certains ont tendance à être des annotations complètes.
Tout d'abord, la prémisse de l'annotation est qu'elle doit passer par proxy, dynamique, statique et proxy CGLIB. Pour les annotations légères, l'angle est des annotations statiques ou uniques.
Par exemple, les annotations du contrôleur, ces annotations uniques ou les annotations de temps de compilation sont initialisées dans le contexte du projet comme une analyse implicite unique et des annotations connexes telles que le service, offrant des instances d'objets légers singleton. Considéré comme le premier choix. Cela réduit le coût du proxy et de la réflexion pendant la période d'exécution et économise également de meilleures ressources pour la pile d'exécution.
Un autre type, tel que Responsebody, est une annotation dynamique ou une annotation d'exécution. Chaque fois que vous demandez, le reflet de l'annotation sera exécuté. L'annotation de la période de course est bien sûr pour occuper les ressources.
En général, pas les annotations nécessaires ne peuvent être complètement ignorées. Sur la base de la méthode de demande et de réponse basée sur les bases du servlet, il n'y a pas de MVC, qui ne peut pas être résolu, en prenant des paramètres, en passant par des paramètres, en retour, etc., et il n'y a pas besoin d'annotations pendant le temps d'exécution. Les annotations pendant l'exécution semblent réduire la quantité de code. Afin de compenser les différentes lacunes de ce processus, une annotation dynamique d'un cercle sera exécutée pour exécuter une annotation que vous utilisez à l'intérieur de la méthode. Pour les annotations de param écrites dans la méthode, quel code manque par rapport à l'utilisation de la demande C'est juste que le processus d'origine en une étape a été ajouté pour ajouter une couche d'interception de code.
Comment savoir si une annotation est une annotation dans la période d'exécution ou de compilation est très simple. Cliquez sur Ctrl + Mouse et vous verrez:
@Target ({elementType.type, elementType.Method})
@Retention (RetentionPolicy.runtime)
@Documenté
Rétention Ce type d'énumération illustre complètement et clairement la période de l'annotation que vous utilisez.
Tout le monde aime utiliser des singletons avec le printemps, ce qui est un excellent moyen. Singleton n'a rien à voir avec la concurrence elle-même, sauf que vous devez le faire rivaliser pour l'identification des ressources.
Si vous devez avoir de nombreux objets prototypes dans votre projet, cela signifie que vous avez abusé ou utilisé le mauvais objet. MVC a essentiellement des paramètres et des rendements entrants. Chaque demande est un thread. Une réponse de demande distincte a ce qu'ils entrent et quittent, qui est complètement isolé. À partir de cela, en ce qui concerne MyBatis, de nombreuses personnes utilisent diverses resmappers dans la configuration de MyBatis, et chaque fois que divers haricots vont et viennent. Après une demande, les haricots en tant que paramètres et résultats doivent être une fois. La surface de Mybatis est claire pour l'entretien des SQL, qui est au prix de réduire considérablement l'efficacité de JDBC. Alors personne ne s'en soucie. Pour eux, les haricots n'ont rien, et ils ne comprennent pas ou ne se soucient pas de GC. S'ils ont des problèmes, ajoutez de la mémoire et ajoutez de la mémoire au sommet. Tout ce qu'ils résolvent, c'est le problème du temps et utilisent l'espace pour échanger du temps. Avec les mêmes paramètres et mappages de résultats, alors si vous utilisez la carte de JDK, la meilleure, c'est naturellement la propre carte de JDK.
J'ai toujours obstinément cru que la consommation de l'objet du nouvel JDK est beaucoup plus petite que celle de définir un haricot par soi-même. Pourquoi, désolé, je ne sais pas non plus. Je viens donc toujours de cartographier et de cartographier. Lorsque vous utilisez MyBatis, vous devez détecter étroitement si vos affaires se proxissent pour votre classe? La méthode est très simple. Dans le journal du projet, ouvrez le débogage pour voir si votre journal est créé à chaque fois une nouvelle SQLSession. Si tel est le cas, vous devez noter que votre session MyBatis n'est pas mise en commun et pas procurée par les choses. S'il y a une SQL compétitive dans une méthode, il n'y a pas d'erreur dans Désolé, mais il est constaté que la base de données n'exécute pas votre SQL. Bientôt, vous constaterez que le pool de connexions est utilisé très rapidement et créera fréquemment de nouvelles connexions. Bien sûr, si vous ne pouvez pas utiliser Mybatis, n'hésitez pas, il est juste de ne pas l'utiliser.
Pourquoi devons-nous essayer d'utiliser des annotations statiques? C'est très simple. Les cours de printemps sont essentiellement des singletons. Les projets sont assez grands et les instances de bean sont suffisantes. Que prennent ces singletons? L'instance d'objet est dans l'espace du tas et est référencée dans la pile. Alors, quand GC recyclera-t-il les objets de ces singletons? ce que vous pensez? Par conséquent, en fonction de l'annotation, essayez de minimiser l'utilisation du proxy dynamique. Laissez plus de ressources pour une utilisation si nécessaire.
Dans le passé, nous dirions qu'il n'y a pas de tas, mais maintenant le pool constant de chaîne de JDK1.7 est déjà entré dans le tas.
Quel est le meilleur type de compilation ou interprétabilité? Bien sûr, il est analytique et le type de compilation est similaire au modèle de médiation. Par conséquent, il est beaucoup plus difficile de construire une excellente langue compilée qu'une langue interprétée.
La structure du Web est très claire. Tout d'abord, il est toujours dans le contexte, puis une série de composants en séquence. La chose la plus importante que nous sommes le composant servlet, qui est la norme Javaee, et le reste des composants Web sont des normes de protocole, que tout le monde doit avoir. Ensuite, vous verrez que la cartographie des servlets dans de nombreux projets est /, ce qui est une mauvaise façon. Parce qu'il est très simple, JS ou CSS n'ont jamais besoin d'être traités par le biais de servlets. Par conséquent, le mappage considère principalement l'interaction avec les composants du serveur des conteneurs Web, et donne généralement deux types d'identification, tels que .do et .Action .do nécessite une authentification de l'autorisation, etc., l'action est directement publiée. JS, etc. n'ont pas besoin d'entrer le servlet et de revenir directement du contexte Web en fonction de l'URL, puis il n'y a aucun moyen d'intercepter et de libérer MVC dans MVC. C'est une perte de temps pour créer des problèmes et résoudre des problèmes, ce qui n'est pas un bon moyen. De cette façon, que Nginx soit impliqué ou non, vos ressources statiques sont statiques pour les conteneurs Web et n'ont aucune relation avec les servlets. Les servlets se rapportent uniquement à ce que vous devez gérer.
Où est le meilleur endroit pour écrire JS?
Beaucoup de gens ont l'habitude d'écrire JS dans JSP ou HTML, ce qui est mauvais.
Lorsque nous construisons un projet, nous devons espérer que notre JS et CSS seront mis en cache par le navigateur.
Ensuite, JS écrit dans la balise de script de la page n'est qu'une balise, qui n'est pas différente de la div ou de l'entrée et ne sera pas mise en cache. J'ai vérifié beaucoup d'informations, et le cache que j'ai vu a évidemment dit que l'unité de cache est un fichier. Pas l'étiquette. Je ne suis donc pas complètement sûr d'écrire votre CSS JS dans le fichier et d'introduire le fichier afin que le fichier soit mis en cache, car il n'y a pas de réponse affirmative directe, c'est ma supposition.
JSP est en fait un servlet, c'est donc une page dynamique. Chaque fois que vous devez charger la classe pour traduire dynamiquement, puis la méthode d'écriture de la classe écrit la page en http au navigateur et rend le navigateur. S'il est HTML, c'est statique. Dynamique et flexible, il ne fait aucun doute que comme il s'agit d'un servlet, c'est un objet Java et que diverses balises et méthodes Java sont appelées possibilités. Les pages statiques doivent être gérées par vous-même. Si vous utilisez un langage macro similaire aux pages statiques, il est préférable d'utiliser directement JSP.
Quelle quantité de données est chargée à la fois sur la page?
Si le contenu affiché sur votre page est basé sur des catégories et des listes, la quantité de données est très petite, avec des centaines d'éléments. Le type est désormais affiché dans l'application Order à emporter, puis toutes les catégories et données sont données en même temps. Par conséquent, le traitement est traité du côté client, le changement de catégorie et l'aperçu dans l'ensemble du processus sont traités sur la page, y compris la recherche. Le JS exécuté sur notre client, le téléphone mobile ou l'ordinateur de A ne rivalisera pas avec le téléphone mobile ou l'ordinateur de B. Si vous changez un type chaque fois que vous passez à un type, vous brossez un AJAX, et c'est le même groupe de conteneurs Web, afin qu'il y ait de la concurrence. Plus l'opération est fréquente, plus la compétition est grande. Ceci est étroitement lié au scénario réel.
La quantité de données renvoyées par une requête n'a rien à voir avec les performances. Des milliers de milliers de données ne sont qu'au niveau des dizaines de KB.
Le nombre de requêtes, c'est-à-dire le nombre d'interactions avec le serveur, est la raison directe qui affecte les performances globales.
La quantité de données dans une requête est proportionnelle à la taille du tableau interrogé. Il n'accélérera pas la requête en renvoyant 10 requêtes à la fois, et 10 requêtes à la fois, ralentissant la requête. L'opération de base de données est essentiellement une application de collecte et rien n'est créé.
La prémisse du réglage est que le montant donné est le plus approprié, pas plus vous en donnez, plus il est approprié. La mémoire que JDK ou Tomcat peut consommer sur différents chiffres de OS.
Utiliser nginx;
Utilisez le cache si nécessaire;
Sélectionnez Message Middleware ou autre middleware en fonction de la question de savoir si vous en avez besoin;
La séparation des bases de données ou des esclaves maître, etc. doit être que la base de données actuelle ne peut pas prendre en charge le volume de trafic.
Singleton est un bon moyen.
Le multithreading est une lame tranchante, et elle ne distingue pas la langue spécifique.
La gestion de Maven est un bon moyen, mais votre corps principal du projet doit être WebMVC, créer un projet Web, intégrer Maven en tant que composant, au lieu de créer un projet Maven, puis de le convertir en projet Web, à moins qu'il ne soit inactif.
En utilisant le printemps, c'est actuellement le meilleur échafaudage.
Utilisez JDBC autant que possible, si possible.
N'interagissez pas avec le serveur lorsque vous pouvez accomplir des choses sur le client. Les ressources du client sont vastes et les ressources du serveur sont limitées.
Essayez d'envoyer moins de demandes. Les codes qui envoient moins de demandes sont un bon code, sauf si vous êtes une application instantanée.
Les outils de chaque code sont des outils, et l'API est ce que vous devez comprendre le plus. Il n'y a pas de réponse précise à laquelle est la meilleure et laquelle n'est pas bonne.
Tout est un objet, et il est pur pour Java. Le proxy est un objet, la réflexion est un objet, l'objet est un objet et le type de données de base n'est pas un objet.
Des choses autres que les types de base sont terminées via des objets. Peu importe la complexité du processus, ils sont terminés via les méthodes d'objet correspondantes combinées avec les paramètres de méthode. Comment sérialiser une classe et le désérialiser, pour le dire franchement, c'est l'EI et la transmission du fichier, puis le charger dans JVM et le construire dans un objet.
La raison pour laquelle RPC n'est pas appelé dans un fil. La chose appelée est proxyée. Le proxy convertit vos besoins en paramètres et les envoie sous forme de flux de données. Le serveur convertit votre flux de demande en objets, puis les diffuse. Vous construisez ensuite l'objet et le traitez via l'objet.
Nio est un bon moyen, Netty est un bon choix, y a-t-il une prise multi-thread qui dépasse Netty?
Zookeeper est un excellent outil pour une série de solutions telles que un bon enregistrement distribué.
Ces choses sont tous des principes et des objets, vous devez donc les utiliser pour les lire dur.
Ce qui précède est une compréhension personnelle et vous êtes invités à le corriger.