1. Servlet Ausführungsprozess
Der Client stellt eine HTTP -Anforderung aus, und der Webserver leitet die Anforderung an den Servlet -Container weiter. Der Servlet -Container analysiert die URL und findet das entsprechende Servlet basierend auf dem web.xml und übergibt die Anforderungs- und Antwortobjekte an den gefundenen Servlet. Das Servlet kann wissen, wer die Anfrage, Anforderungsinformationen und andere Informationen basierend auf der Anfrage ausgestellt hat. Nachdem das Servlet die Geschäftslogik bearbeitet hat, wird die Informationen in die Antwort eingerichtet und auf den Kunden reagiert.
2. Der Ausführungsprozess von SpringMVC
SpringMVC ist ein hierarchisches Steuerrahmen mit DispatchServlet als Kern. Zunächst stellt der Client eine Anfrage an den Webserver aus, um die Anforderungs -URL zu analysieren und die Zuordnungs -URL des DispatchServlets abzuschließen. Wenn es übereinstimmt, geben Sie diese Anfrage in den Senderservlet ein. Der Versandservet sucht nach dem entsprechenden Handle entsprechend der Mapping -Mapping -Konfiguration und übergeben dann die Verarbeitungsrechte an den gefundenen Griff. Der Handle fasst den Code für die Verarbeitung der Geschäftslogik zusammen. Nachdem der Handle verarbeitet wurde, wird ein logisches Ansichtsmodellansicht an den Versandservet zurückgegeben. Zu diesem Zeitpunkt ist das ModelView eine logische Ansicht, keine formale Ansicht, sodass das Versandservlet die ModelView über die ViewResource -View -Ressource analysiert und dann die Parsen -Parameter in die Ansicht einfügt und zum Client zurückkehren und anzeigen.
3. Bei einer TXT -Datei wird die Anzahl der angezeigten Zeichenfolge angezeigt
Datei Datei = neue Datei ("e: //test.txt"); inputStream ist = new FileInputStream (Datei); Byte b [] = new Byte [1024]; int a = is.read (b); String str [] = new String (b, 0, a) .Split ("); int count = 0; 0; i <Str.Length; i ++) {if ("a" .equals (str [i]) count ++;} System.out.println (count); 4. Java-Designmodellidee (Einspaltmodus, Werksmodus, Strategiemodus, insgesamt 23 Designmodi)
A) Singleton -Modus: Der Kern des Singleton -Modus erfordert nur einen neuen One -Instance -Objektmodus, z. Wenn sich jemand anmeldet, fügt es hinzu und legt es immer wieder zurück. Wenn sich jemand abmeldet, nehmen Sie es heraus und subtrahieren es und setzen Sie es immer wieder zurück. Wenn sich jedoch zwei Personen gleichzeitig anmelden, nehmen sie gleichzeitig den Schalter heraus, fügen eine gleichzeitig hinzu und setzen sie gleichzeitig zurück. Auf diese Weise sind die Daten falsch. Daher ist ein Objekt der globalen Variablen erforderlich, damit alle Menschen nur ein Instanzobjekt benötigen. Dies ist die Anwendung des Singleton -Modus, und der Singleton -Modus speichert Ressourcen, da er die Anzahl der Instanzobjekte steuert und dem GC -Recycling förderlich ist.
b) Richtlinienmuster: Es wird die gemeinsamen Methoden in mehreren Klassen in eine neue Klasse extrahiert, damit es einfacher erweitert werden kann, die Portabilität des Codes und die Wartbarkeit sicherstellen kann. Zum Beispiel besteht die Voraussetzung, Entenobjekte zu schreiben, die aufgerufen, fliegen und aussehen. Wenn jede Entenklasse diese drei Methoden schreibt, ist der Code überflüssig. Zu diesem Zeitpunkt können wir die drei Methoden, die genannt, fliegen und in der Entenklasse genannt werden, extrahieren und in die Enten -Parent -Klasse einbringen, so dass jede Ente die Entenklasse erbt und diese drei Methoden umschreibt. Auf diese Weise ist der eingekapselte Code sehr tragbar. Wenn der Benutzer neue Anforderungen wie die Ente schwimmen kann, ist dies für uns OO -Programmierer sehr einfach. Wir müssen der Enten -Parent -Klasse nur eine Schwimmmethode hinzufügen und die Schwimmende der Schwimmmethode umschreiben lassen.
c) Fabrikmodus: Der einfache Werksmodus bietet hauptsächlich Referenzen auf Instanzobjekte auf einheitliche Weise und erhält Referenzen auf Instanzobjekte über die Factory -Modus -Schnittstelle. Zum Beispiel verfügt das Backend für eine Anmeldungsfunktion über drei Klassen: Controller -Klasse, Schnittstellenklasse und Implementierungsklasse der Implementierungsschnittstelle. Wenn der Client eine Anfrage ausgibt, erhält der Controller, wenn die Anforderung an die Controller -Klasse übergeben wird, das Referenzobjekt der Schnittstelle, und die Implementierungsklasse implementiert, dass die Schnittstelle den Logikcode für Anmeldegeschäftslogik verkauft. Wenn Sie eine Registrierungsanforderung hinzufügen müssen, müssen Sie der Schnittstellenklasse nur eine Registrierungsmethode hinzufügen, die Methode in der Implementierungsklasse implementieren, und der Controller kann das Referenzobjekt der Schnittstelle ohne Ändern des ursprünglichen Codes erhalten. Dieser Ansatz ist sehr skalierbar.
5. Blasensortierung, binäre Suche
a) Blase
public static void mp (int a []) {int SWAP = 0; für (int i = 0; i <A.Length; i ++) {für (int j = i; j <A.Length; j ++) {if (a [j]> a [i]) {swap = a [i]; a [i] = a [j]; a [j]; SWAP;}}} System.out.println (arrays.toString (a));};b) Binäre Suche
public static int ef(int a[], int tag) {int first = 0;int end = a.length;for (int i = 0; i < a.length; i++) {int middle = (first + end) / 2;if (tag == a[middle]) {return middle;}if (tag > a[middle]) {first = middle + 1;}if (tag < a[middle]) {end = middle - 1;}}return 0;} 6-8. Verständnis von Ajax
A) AJAX ist eine asynchrone Anfrage, dh eine lokale Aktualisierungstechnologie. In herkömmlichen Seiten müssen Benutzer auf Schaltflächen oder Ereignisse klicken, um Anforderungen zum Aktualisieren von Seiten auszulösen. Asynchrone Technology löst Ereignisse ohne Klicken aus, wodurch Sie die Benutzererfahrung wie das asynchrone Laden von Einkaufswagen im Einkaufszentrum verbessern. Wenn Sie auf ein Produkt klicken, müssen Sie den Hintergrund nicht anfordern und die Parameter direkt dynamisch ändern.
9. Die Reihenfolge des Anrufs zwischen übergeordneter Klasse und untergeordneter Klasse (Druckergebnis)
a) statische Codeblock der Elternklasse
b) Statische Code -Block unter Klassen
c) Konstruktor der Elternklasse
d) Konstruktionsmethode der Unterklasse
e) Unterklasse gewöhnliche Methode
f) Schreiben Sie die Methode der übergeordneten Klasse neu und drucken Sie die Umschreibmethode aus
10. Anrufe von inneren und äußeren Klassen
A) Die innere Klasse kann die Mitgliedsvariablen der externen Klasse direkt aufrufen, einschließlich privat und verwenden dies. Schlüsselwort, auf das die externe Klasse verwiesen wird, um es aufzurufen
b) Wenn eine externe Klasse eine interne Klasse aufruft, muss sie ein internes Klassenobjekt erstellen
11. Multi-Threading
a) Ein Prozess ist eine unabhängige laufende Umgebung, die als Programm angesehen werden kann, während ein Thread als Aufgabe eines Prozesses angesehen werden kann. Zum Beispiel ist QQ ein Prozess und ein QQ -Fenster ist ein Thread.
b) In einem Multi-Thread-Programm kann die Parallelität mit mehreren Threads die Effizienz des Programms verbessern. CPU wird keinen Leerlaufstatus betreten, da ein bestimmter Thread auf Ressourcen wartet. Es gibt Ressourcen für andere Themen.
c) Benutzer -Thread ist der Thread, den wir das Programm entwickeln, und der Daemon -Thread ist der System -Thread, z. B. GC in JVM Virtual
D) Thread -Priorität: Jeder Thread hat eine Prioritätsniveau. Diejenigen mit hohem endlicher Ebene können zuerst CPU -Ressourcen erhalten, um den Thread von Ready State in den laufenden Status zu ändern. Sie können auch die begrenzte Ebene der Threads anpassen
e) Deadlock: Mindestens zwei oder mehr Fäden streben nach mehr als zwei CPU -Ressourcen. Vermeiden Sie es, verschachtelte Schlösser zu verwenden, wenn sie Deadlocks vermeiden. Sie müssen nur Schlösser hinzufügen, wo sie synchronisieren und unendlich warten müssen.
12. Das Konzept von AOP und IOC (d. H. Der Kern des Frühlings)
A) IOC: Spring ist ein Open -Source -Framework. Die Verwendung von Frameworks kann unsere Arbeitsbelastung verringern und unsere Arbeitseffizienz verbessern. Es ist eine hierarchische Struktur, dh die entsprechenden Ebenen verarbeiten die entsprechende Geschäftslogik und reduzieren den Kopplungsgrad des Code. Der Kern der Frühling ist IOC-Kontrollinversion und AOP-orientierte tangentiale Programmierung. Die IOC -Kontrollinversion betont hauptsächlich, dass die Beziehung zwischen Programmen von Containern gesteuert wird, die Objekte kontrolliert und den Erwerb externer Ressourcen kontrolliert. Inversion bedeutet, dass wir in der traditionellen Programmierung Objekte erstellen, um Abhängigkeiten zu erhalten, während der Container uns hilft, Objekte zu erstellen und abhängige Objekte zu injizieren. Es ist der Behälter hilft uns, Objekte zu finden und zu injizieren. Das Objekt wird erhalten, daher wird es als Inversion bezeichnet.
b) AOP: Orientierte Programmierung verwaltet das Geschäft hauptsächlich auf Systemebene, z. B. Protokolle, Berechtigungen, Dinge usw. AOP besteht darin, die eingekapselten Objekte zu öffnen, das gemeinsame Verhalten zu ermitteln, das mehrere Objekte betrifft, und sie in ein wiederverwendbares Modul einkapitulieren. Dieses Modul wird als Aspekt bezeichnet. Der Abschnitt extrahiert und verkauft die Logik, die nicht mit der Geschäftslogik zusammenhängt, sondern gemeinsam von Geschäftsmodulen aufgerufen wird, wodurch der doppelte Code im System reduziert, die Kopplung zwischen Modulen verringert und die Wartbarkeit des Systems verbessert wird.
13. Die Kernidee von Hibernate
A) Die Kernidee von Hibernate ist der ROM -Objektbeziehungskartierungsmechanismus. Es handelt sich um eine Zuordnung zwischen Tabellen in Operationen zwischen Objekten. Das heißt, die aus der Datenbank extrahierten Informationen werden nach den von Ihnen festgelegten Zuordnungsanforderungen automatisch in bestimmte Objekte eingekapselt. Hibernate soll daher das Objekt ändern, das der Datenzeile entspricht, indem die Datentabellen -Entitätsklasse abgebildet wird.
14. Der Unterschied zwischen Struts1 und Struts2
15. optimale Löschung eines Zeichens in einer Zeichenfolge
16-17. Der Unterschied zwischen ArrayList und LinkedList
a) sind alle Listen, die die Listenschnittstelle implementieren. ArrayList ist eine Array-basierte Datenstruktur, und LinkedList ist eine verknüpfte Listendatenstruktur. Bei der Erlangung bestimmter Elemente ist ArrayList relativ schnell. Es kann über Array -Indexs erhalten werden, während die LinkedList den Zeiger verschieben muss. Beim Speichern von Elementen und Löschen von Elementen ist die LinkedList effizienter. Sie müssen den Zeiger nur in eine angegebene Position verschieben, um ihn hinzuzufügen oder zu löschen, während ArrayList Verschiebener Daten erfordert.
18. Datenbankoptimierung
a) Wählen Sie das entsprechende Feld aus, z. B. das Postfachfeld, Sie können es auf char (6) festlegen und versuchen, das Feld auf Notnull festzulegen, damit die Datenbank beim Abfragen den Nullwert nicht vergleichen muss
b) Verwenden Sie eine linke Verbindung auf Abfrage anstelle von Unterabfrage
c) Verwenden Sie die gemeinsame Abfrage der Union, um temporäre Tabellen manuell zu erstellen
d) Dingen einschalten. Wenn in der Datenbank mehrere Anweisungen ausgeführt werden, werden die Dinge zurückgeführt, wodurch die Integrität der Datenbank beibehalten werden kann.
e) Mithilfe von Fremdschlüssel können Dinge die Integrität von Daten aufrechterhalten, kann jedoch die Korrelation von Daten nicht garantieren. Die Verwendung von Fremdschlüssel kann die Korrelation von Daten sicherstellen
f) Verwenden von Indizes ist die Indexierung eine gemeinsame Methode zur Verbesserung der Datenbankleistung. Der Datenbankserver kann bestimmte Zeilen viel schneller abrufen
g) Optimierte Abfrageanweisungen. In den meisten Fällen kann die Verwendung von Indizes die Abfragegeschwindigkeit verbessern. Wenn jedoch die SQL -Anweisung unangemessen verwendet wird, kann der Index seine Eigenschaften nicht abspielen.
19. Tomcat Server -Optimierung (Speicher, Anzahl der gleichzeitigen Verbindungen, Cache)
A) Speicheroptimierung: Es optimiert hauptsächlich die Tomcat -Startparameter. Wir können seinen maximalen Speicher im Tomcat -Startskript usw. ändern.
b) Optimierung der Threadzahl: Die gleichzeitigen Verbindungsparameter von Tomcat sind hauptsächlich in server.xml in der Tomcat -Konfigurationsdatei konfiguriert, z.
c) Cache optimieren: Schalten Sie die Komprimierungsfunktion ein und ändern Sie die Parameter. Beispielsweise beträgt die Größe des komprimierten Ausgangsgehalts standardmäßig 2 KB und kann angemessen geändert werden.
20. HTTP -Protokoll
a) Zu den häufig verwendeten Anforderungsmethoden gehören Get and Post
b) Der Unterschied zwischen GET und Post: Datenübertragung, erhalten Parameter und Zugriffsadresse, und Benutzer können sie sehen. Dies wird unsicher sein und zu Informationen zu Informationen führen. Post fasst Felder und entsprechende Werte in einer Entität zusammen, die für den Benutzer unsichtbar ist. Es gibt Beschränkungen für die Passieren von Parametern, während es keine Einschränkungen auf dem Posten gibt.
21. TCP/UDP -Protokoll
22. Was sind die grundlegenden Schnittstellen des Java -Sammlungsklassen -Frameworks
a) Collection Interface, List und Set Implementierung der Collection Collection Interface, ArrayList und LinkedList, Vektor -Implementierlistenschnittstelle, Stapel -Inherit -Vektor, MAP -Schnittstelle, Hashtable und HashMap Implementierungskartenschnittstelle
23. Klassenbeladungsprozess
A) Wenn Sie auf eine neue Klasse stoßen, gehen Sie zuerst in den Methodenbereich, um die Klassendatei zu finden. Wenn es nicht gefunden wird, gehen Sie auf die Festplatte, um die Klassendatei zu finden. Nachdem Sie es gefunden haben, werden Sie sie zurückgeben und die Klassendatei in den Methodenbereich laden. Wenn die Klasse geladen ist, wird die statische Mitgliedsvariable dem statischen Bereich des Methodenbereichs zugewiesen. Die nicht statische Mitgliedsvariable wird dem nicht statischen Bereich zugeordnet. Anschließend beginnen Sie mit der Initialisierung der statischen Mitgliedsvariable und zuweisen den Standardwert. Nachdem der Standardwert zugewiesen wurde, wird der Anzeigewert gemäß dem von der statischen Mitgliedsvariablen verfassten Speicherort zugewiesen, und dann wird der statische Code ausgeführt. Das Laden der Klassen wird nur abgeschlossen, wenn der gesamte statische Code ausgeführt wird.
24. Objekterstellung
a) Wenn eine neue Klasse auftritt, wird die Klasse geladen und die Klassendatei wird gefunden
b) Initialisieren Sie alle statischen Mitgliedsvariablen, statische Codeblöcke werden ebenfalls ausgeführt und sie werden nur einmal ausgeführt, wenn die Klasse geladen wird.
c) Wenn ein neues Objekt ist, wird JVM einen ausreichend ausreichend ausreichend ausreichend Speicherplatz im Haufen zugute
d) Löschen Sie den Speicherplatz, weisen Sie allen Variablen Standardwerte zu und weisen Sie NULL alle Objektreferenzen zu
e) Geben Sie dem Feld einige Initialisierungsvorgänge gemäß der Schreibposition
f) Aufrufen der Konstruktormethode (keine Vererbung)
25. JVM -Optimierung
A) Setzen Sie die Parameter und setzen Sie die maximale Anzahl von Speicher von JVM
b) Auswahl des Müllsammlers
26. hohe Parallelitätsverarbeitung
a) Verstehen Sie einige Probleme mit hoher Parallelität, z. B. wie Sie sicherstellen können, dass jeder das Ticket sehen kann, ohne es zu kaufen. Offensichtlich kann der Synchronisationsmechanismus nicht verwendet werden, da die Synchronisierung gesperrt ist und die Synchronisation jeweils nur von einer Person durchgeführt werden kann. Zu diesem Zeitpunkt kann der Sperrmechanismus verwendet werden und die Verwendung optimistischer Verriegelung kann dieses Problem lösen. Die einfache Bedeutung einer optimistischen Verriegelung besteht darin, die Geschäftskontrolle zu verwenden, um das Problem der Parallelität zu lösen, ohne die Tabelle zu sperren, die die Lesbarkeit der Daten und die Exklusivität der gespeicherten Daten gewährleistet und die Leistung bei der Lösung des durch Parallelität verursachten Datenproblems für schmutzige Lesen sicherstellt.
27. Verständnis der Dinge
A) Dinge sind atomar, konsequent, anhaltend und isoliert
B) Atomizität: Bezieht sich auf das Zurückrollen in einer Sache, die entweder alle Ausführung erfolgreich ist oder alle scheitern.
c) Konsistenz: Die Dinge sind vor und nach der Ausführung in Konsistenz in Konsistenz
d) Persistenz: Der Betrieb mehrerer Daten in Dingen ist dauerhaft
e) Isolation: Wenn eine Sache mit Daten arbeitet, kann eine andere Sache nicht mit Daten arbeiten, dh mehrere gleichzeitige Dinge werden voneinander isoliert.
28. Streben Workflow
a) Der Kunde stellt eine Anfrage an den Servlet -Container aus
b) Die Anforderung wird vom FilterDispatcher nach einer Spaltenfilterung aufgerufen und die FilterDispatch durchsucht die entsprechende Aktion über den ActionMapper.
c) ActionMapper findet die entsprechende Aktion und gibt sie in FilterDispatch zurück, und der Versand gibt die Verarbeitungsrechte an ActionProxy an
d) ActionProxy findet die entsprechende Aktionsklasse über die Konfigurationsdatei
e) ActionProxy schafft eine Instanz von ActionIinVocation, um die Geschäftslogik zu bewältigen
f) Sobald die Aktion verarbeitet wurde, ist ActionInvocation für das Ermittlungsgebiet des entsprechenden Rückgabeergebnisses gemäß der Konfiguration von Stuts.xml verantwortlich. Das Ergebnis ist normalerweise eine JSP -Seite.