Ich habe eine Methode welche HTTP Requests versendet und den authcookie dazu immer aus einer Textdatei ausliest bzw parst da er keinen Key besitzt. Nun habe ich aber den eindruck das dieses lesen aus einer Datei + parsen den Prozess ziemlich verlangsamt, vor allem wenn die Methode mehrere hundert mal hintereinander aufgerufen wird und dementsprechend viele Requests versendet.
Daher brächte ich so etwas wie eine globale variable die bei Programmstart den Cookie ausliest und ihn dazu noch dauerhaft zur verfügung stellt ohne das er bei jedem Aufruf der Request Methode neu aus der Datei gelesen werden muss.
Hat da jemand eine Idee ? Denn Globale Variablen wie in C+ gibt es in der Form bei Java ja nicht wenn ich diverse Fachbeiträge richtig verstanden habe ?.
Lege in deiner Klasse, in welcher gearbeitet wird ein private static Attribut von sich selbst an welches du am ende des Konstruktors auf this setzt.
Immer wenn du diese Klasse dann brauchst kannst du sie einfach mittels einer get() Methode aufrufen, oder auch einfach das static Attribut auf public setzen.
Also so richtig globale Variablen gibt es nicht, aber static-Attribut sind in etwa das selbe.. grob dahergesagt.. Attribute die bei allen Objekten einer Klasse gleich sind und auch ohne Objekt der Klasse zu erreichen sind!
Danke für die Antworten, nach ein bischen rumprobieren habe ich es nun ähnlich gemacht und präsentiere hier auch meine Lösung in abgespeckter Form für weitere suchende.
Zuerst habe ich eine neue Klasse mit dem Namen "config" erstellt und folgendes eingefügt->
Java:
package blabla;publicclass config
{publicstaticString cookie ="0";publicstaticvoidsetConfig(){
cookie ="Das ist der Cookie";// hier würde natürlich eine weitere Methode zum einsatz kommen den Cookie aus einer Datei returnt.}}
Dann habe ich in die main meiner Hauptklasse folgendes geschrieben->
Java:
config.setConfig();
Dementsprechend wird der Cookie bei Programmstart in den öffentlichen statischen string geladen und ist dann von überall erreichbar->
z.B
Java:
System.out.println(config.cookie);
Würde aber gern noch wissen was die Experten hier von dieser Lösung halten ?
Ja die IDE beschwert sich auch das der String cookie über den geschützen Bereich hinausreicht, dennoch funktioniert es. Was für Probleme kann so eine überschreitung denn mit sich bringen,bzw hat es einen nachteil ?
Mit dem Cookie selbst verhält es sich ja folgendermassen, die Datei mit dem Cookie ist auf meiner Platte und bisher war es so das der Cookie vor jedem absenden des Requestst aus der Datei gelesen wurde. Mit dieser Lösung wird er nurnoch einmal aus der Datei gelesen und im string cookie gehalten. Denke schon das ich damit einen kleinen Schub erreichen kann, aber das werde ich gleich feststellen.
Mit dem Cookie selbst verhält es sich ja folgendermassen, die Datei mit dem Cookie ist auf meiner Platte und bisher war es so das der Cookie vor jedem absenden des Requestst aus der Datei gelesen wurde. Mit dieser Lösung wird er nurnoch einmal aus der Datei gelesen und im string cookie gehalten. Denke schon das ich damit einen kleinen Schub erreichen kann, aber das werde ich gleich feststellen.
Klar, aber es geht in ja darum nur 1x etwas von der Platte zu lesen anstatt jedesmal wenn die Methode ausgeführt wird. Hier kann man natürlich ein paar ms herausholen.
Aber wie du schon sagst, gegenüber den HTTP-Requests wird sich die Performance nur minimal verbessern.
Ich kapiere immer noch nicht warum man dafür eine globale variable braucht.
Ich habe eine Klasse welche sich um die Request kümmert. NUR diese Klasse braucht das Cookie. Also lese ich das Cooki beim initialisieren dieser Klasse einmal ein. Fertig!
Ich kapiere immer noch nicht warum man dafür eine globale variable braucht.
Ich habe eine Klasse welche sich um die Request kümmert. NUR diese Klasse braucht das Cookie. Also lese ich das Cooki beim initialisieren dieser Klasse einmal ein. Fertig!
Ich habe mehrere Methoden die sich zum teil auch untereinander aufrufen und unterschiedliche Requestst versenden.Wegen der übersicht möchte ich deshalb diese Globale Variable auf die dann alle Funktionen/Methoden zugreifen können um sich den cookie zu holen.
Ich habe mehrere Methoden die sich zum teil auch untereinander aufrufen und unterschiedliche Requestst versenden.Wegen der übersicht möchte ich deshalb diese Globale Variable auf die dann alle Funktionen/Methoden zugreifen können um sich den cookie zu holen.
Dann räum doch lieber deinen Code auf anstatt ihn noch undurchsichtiger zu machen als er anscheinend eh schon ist. Setzt Dich hin und mach ein ordentliches Konzept wie Du einen Controller erstellst, der deine Request verarbeitet. Der kann ja durchaus mehrere Threads benutzen wenn er denn muss aber so wie es jetzt ist, packst du auf ein mieses Design noch einen ganz mieses oben drauf.
Dann räum doch lieber deinen Code auf anstatt ihn noch undurchsichtiger zu machen als er anscheinend eh schon ist. Setzt Dich hin und mach ein ordentliches Konzept wie Du einen Controller erstellst, der deine Request verarbeitet. Der kann ja durchaus mehrere Threads benutzen wenn er denn muss aber so wie es jetzt ist, packst du auf ein mieses Design noch einen ganz mieses oben drauf.
Natürlich könnte ich auch eine dynamische Methode schreiben die in der Lage ist alle notwendigen Parameter entgegenzunehmen um sämtliche Requestst zu versenden welche bei mir momentan von 3 Methoden übernommen werden,aber angesichts der tatsache das es eben nur 3 sind habe ich es erstmal bei diesem modularen Stil auf kosten von minimal mehr Arbeitsspeicher oder wie du es nennst "mieses Design" belassen um das ganze umzuschreiben sobald ich etwas mehr Zeit dazu habe. Da ich hauptberuflich nicht annähernd etwas mit Programmierung zu tun habe und mich nicht immer 100% auf mein Projekt einlassen kann, erleichtet mir diese vorübergehende umständliche vorgehensweise langfristig die Übersicht.
Mit dem Cookie selbst verhält es sich ja folgendermassen, die Datei mit dem Cookie ist auf meiner Platte und bisher war es so das der Cookie vor jedem absenden des Requestst aus der Datei gelesen wurde. Mit dieser Lösung wird er nurnoch einmal aus der Datei gelesen und im string cookie gehalten.