Le 7 juin 2017, le temps est passé du ensoleillé au nuageux. Je suis de bonne humeur.
J'ai passé mon premier test écrit samedi dernier. Je me sentais très mal, principalement parce que je n'avais pas une solide maîtrise des connaissances de base. J'ai maintenant résumé certaines des questions du test écrit comme suit pour faciliter la référence. à l'avenir.
1. Qu'est-ce que GC ? Pourquoi GC ?
GC (GarbageCollection) est un mécanisme de collecte des ordures. En Java, les développeurs ne peuvent pas utiliser de pointeurs pour gérer librement la mémoire. C'est la façon dont la JVM gère la mémoire (en fait les objets). La machine virtuelle Java peut automatiquement déterminer et collecter les déchets, mais ne libère généralement pas son espace mémoire immédiatement. Vous pouvez également utiliser System.gc() dans le programme pour forcer le garbage collection, mais il convient de noter que le système ne le garantit pas. cela libérera la mémoire immédiatement. GC permet aux développeurs Java de se débarrasser du travail fastidieux de gestion de la mémoire et de rendre le développement de programmes plus efficace.
Principes de base du GC :
La gestion de la mémoire de Java est en fait la gestion des objets, y compris l'allocation et la libération des objets.
Pour les programmeurs, allouez les objets à l'aide du mot-clé new ; lors de la libération d'un objet, attribuez simplement toutes les références à l'objet à null afin que le programme ne puisse plus accéder à l'objet. Nous appelons l'objet "inaccessible" de". . Le GC sera responsable de récupérer l’espace mémoire de tous les objets « inaccessibles ».
Pour GC, lorsque le programmeur crée un objet, le GC commence à surveiller l'adresse, la taille et l'utilisation de l'objet. Habituellement, GC utilise un graphe orienté pour enregistrer et gérer tous les objets du tas. De cette manière, il est déterminé quels objets sont « atteignables » et quels objets sont « inaccessibles ». Lorsque le GC détermine que certains objets sont « inaccessibles », le GC est responsable de la récupération de ces espaces mémoire. Cependant, afin de garantir que GC puisse être implémenté sur différentes plates-formes, Java n'a pas de réglementation stricte sur de nombreux comportements de GC. Par exemple, il n’existe pas de réglementation claire sur des questions importantes telles que le type d’algorithme de recyclage à utiliser et le moment où effectuer le recyclage. Par conséquent, les différents implémenteurs de JVM ont souvent des algorithmes d'implémentation différents, ce qui apporte beaucoup d'incertitude au développement des programmeurs Java.
2. Quelle est la différence entre l'interface et la classe abstraite ?
L'interface est l'abstraction des actions, et la classe abstraite est l'abstraction de la source. La classe abstraite représente ce qu'est cet objet. L'interface représente ce que cet objet peut faire. Par exemple, les hommes et les femmes, ces deux classes (si ce sont des classes), leur classe abstraite est celle des gens. Explication : Ils sont tous humains. Les gens peuvent manger, et les chiens peuvent aussi manger. Vous pouvez définir « manger » comme interface, puis laisser ces classes l'implémenter. Par conséquent, dans les langages de haut niveau, une classe ne peut hériter que d’une seule classe (classe abstraite) (tout comme une personne ne peut pas être à la fois un être vivant et un être non vivant), mais elle peut implémenter plusieurs interfaces (interface alimentaire). , interface de marche).
Lorsque vous vous concentrez sur l'essence d'une chose, utilisez des classes abstraites ; lorsque vous vous concentrez sur une opération, utilisez des interfaces.
(1) Ni les classes abstraites ni les interfaces ne peuvent être instanciées directement. Si elles doivent être instanciées, les variables de classe abstraite doivent pointer vers des objets de sous-classe qui implémentent toutes les méthodes abstraites, et les variables d'interface doivent pointer vers une sous-classe. objets qui implémentent toutes les méthodes d’interface.
(2) Les classes abstraites doivent être héritées par les sous-classes et les interfaces doivent être implémentées par les sous-classes.
(3) Les interfaces ne peuvent faire que des déclarations de méthodes, tandis que les classes abstraites peuvent faire des déclarations de méthodes et des implémentations de méthodes.
(4) Les variables définies dans l'interface ne peuvent être que des constantes statiques publiques, et les variables des classes abstraites sont des variables ordinaires.
(5) Toutes les méthodes abstraites d'une classe abstraite doivent être implémentées par la sous-classe. Si la sous-classe ne peut pas implémenter toutes les méthodes abstraites de la classe parent, alors la sous-classe ne peut être qu'une classe abstraite. De même, lorsqu'une classe implémente une interface, si elle ne peut pas implémenter toutes les méthodes d'interface, alors la classe ne peut être qu'une classe abstraite.
(6) Les méthodes abstraites ne peuvent être déclarées, pas implémentées. Les interfaces sont le résultat de la conception et les classes abstraites sont le résultat de la reconstruction.
(7) Il n'y a pas besoin de méthodes abstraites dans les classes abstraites.
(8) S'il existe une méthode abstraite dans une classe, alors cette classe ne peut être qu'une classe abstraite.
(9) Les méthodes abstraites doivent être implémentées, elles ne peuvent donc pas être statiques ou privées.
(10) Les interfaces peuvent hériter d'interfaces et peuvent hériter de plusieurs interfaces, mais les classes ne peuvent hériter que d'une seule racine.
(11) Les classes abstraites et les interfaces sont utilisées pour abstraire des objets spécifiques, mais les interfaces ont le niveau d'abstraction le plus élevé.
(12) Les classes abstraites peuvent avoir des méthodes et des attributs spécifiques, tandis que les interfaces ne peuvent avoir que des méthodes abstraites et des constantes immuables.
(13) Les classes abstraites sont principalement utilisées pour abstraire des catégories, et les interfaces sont principalement utilisées pour abstraire des fonctions.
(14) Dans les classes abstraites, si les méthodes ne contiennent aucune implémentation, les classes dérivées doivent les remplacer. Toutes les méthodes de l'interface ne doivent pas être implémentées.
3. Pourquoi Mybatis est-il considéré comme un outil de cartographie ORM semi-automatique ? Quelle est la différence entre celui-ci et le système entièrement automatique ?
Hibernate est un outil de mappage ORM entièrement automatique. Lorsque vous utilisez Hibernate pour interroger des objets associés ou des objets de collection associés, vous pouvez les obtenir directement en fonction du modèle de relation d'objet, c'est donc entièrement automatique. Lorsque Mybatis interroge des objets associés ou des objets de collection associés, il doit être écrit manuellement en SQL, c'est pourquoi on l'appelle un outil de mappage ORM semi-automatique.
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!