Globale Variable ?

Traxter

Mitglied
Hallo zusammen,


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 ?.


Vielen dank im vorraus :)
 
Zuletzt bearbeitet:

Times

Bekanntes Mitglied
Ich behelfe mir dabei immer wie folgt:

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.

Beispiel: (mit get()-Methode)
Java:
public class Veranschaulichung
   {
        private static Veranschaulichung sThis;
        
        public Veranschaulichung()
        {
            // Initialisierung.. 
            Veranschaulichung.sThis= this;
        }
        
        public static Veranschaulichung get()
        {
            return Veranschaulichung.sThis;
        }
    }


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!
 
Zuletzt bearbeitet:

Traxter

Mitglied
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;

public class config 

{
    public static String cookie = "0";
    
    public static void setConfig() 
{
    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 ?
 
Zuletzt bearbeitet:

ceving

Aktives Mitglied
Würde aber gern noch wissen was die Experten hier von dieser Lösung halten ?

Die Lösung ist nicht Thread-safe. Du musst dich also auf einen Thread beschränken. Dann kann man es so machen.

Es würde mich aber wundern, wenn es was bringen würde, denn Platten-IO ist fast immer deutlich schneller als Netzwerk-IO.

Vor dem Optimieren kommt das Profiling. Man kann ziemlich viel Zeit damit verbrennen, Dinge zu optimieren, die gar nicht der Flaschenhals sind.

Meine erste Prüfung bei dem Problem würde darin bestehen zu gucken, ob Keep-Alive bei den HTTP-Requests genutzt wird.

Ein gutes Werkzeug zum analysieren von Netzwerk-Latenzen ist JMeter.
 

Traxter

Mitglied
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.
 
Zuletzt bearbeitet:

Joose

Top Contributor
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.

Da ich davon ausgehe das sich zwischen Requests das Cookie nicht ändert, bringt dir das einmalige auslesen einen Gewissen Performance Schub.

Alles was du sehr oft brauchst und nicht viel Platz im Speicher braucht am Besten immer einlesen wenn man es braucht und im Speicher behalten.

Es würde mich aber wundern, wenn es was bringen würde, denn Platten-IO ist fast immer deutlich schneller als Netzwerk-IO.

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.
 

Thallius

Top Contributor
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!

Gruß

Claus
 

Traxter

Mitglied
Da ich davon ausgehe das sich zwischen Requests das Cookie nicht ändert, bringt dir das einmalige auslesen einen Gewissen Performance Schub.

Richtig, der Cookie bleibt immer gleich.


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.
 
Zuletzt bearbeitet:

Thallius

Top Contributor
Richtig, der Cookie bleibt immer gleich.




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.

Gruß

Claus
 

Traxter

Mitglied
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.

Gruß

Claus



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.
 
Zuletzt bearbeitet:

ceving

Aktives Mitglied
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.

Dann mach den String doch final. Dann ist es auch wieder Thread-safe.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Globale Variable mehrmals verwenden Java Basics - Anfänger-Themen 7
Jackii Globale Variable aus anderer Klasse ändern... Java Basics - Anfänger-Themen 4
M Variablen Globale Variable? Java Basics - Anfänger-Themen 4
C lokale Variable verwenden statt globale Java Basics - Anfänger-Themen 7
S globale Variable deklarieren Java Basics - Anfänger-Themen 10
E Globale int Variable? Java Basics - Anfänger-Themen 6
K Datentypen Globale Variable direkt initialisieren oder im Konstruktor? Java Basics - Anfänger-Themen 13
T Globale Variable wird nicht gefunden Java Basics - Anfänger-Themen 6
T Globale Variable (Font) Java Basics - Anfänger-Themen 21
A Globale Variable änderbar Java Basics - Anfänger-Themen 3
M Superglobale globale Variable? Java Basics - Anfänger-Themen 10
P Globale Variable Java Basics - Anfänger-Themen 3
J "globale" variable definieren? Java Basics - Anfänger-Themen 7
S Globale Variable / Methode Java Basics - Anfänger-Themen 5
P Globale Objekte Java Basics - Anfänger-Themen 2
S Vererbung/Globale Variablen Java Basics - Anfänger-Themen 8
Luk10 Globale (semi-finale) Varibalen Java Basics - Anfänger-Themen 9
U Globale Proxy Einstellungen ändern Java Basics - Anfänger-Themen 3
B Globale vector? Java Basics - Anfänger-Themen 7
B Methoden Globale Methoden "Toolbox" Java Basics - Anfänger-Themen 3
D globale Variablen zur Laufzeit erzeugen Java Basics - Anfänger-Themen 5
G Globale Variablen Java Basics - Anfänger-Themen 9
G Globale Variablen Java Basics - Anfänger-Themen 3
O globale variablen Java Basics - Anfänger-Themen 21
M Globale Variablen werden durch KeyListener nicht aktualisier Java Basics - Anfänger-Themen 10
G Müssen globale Funktionen immer "static" sein? Java Basics - Anfänger-Themen 13
A Globale Methode ohne imports und übergeben? Java Basics - Anfänger-Themen 2
P textfarbe,textgröße, textart als globale einstellung Java Basics - Anfänger-Themen 7
F Globale Variablen wie in C++? Java Basics - Anfänger-Themen 5
J "Globale Variablen" Java Basics - Anfänger-Themen 26
S globale Variablen Java Basics - Anfänger-Themen 9
D Globale Klassenvariablen. Java Basics - Anfänger-Themen 12
P Globale und ständige Überwachung eines Textfeldes auf text? Java Basics - Anfänger-Themen 40
J Globale Variablen Java Basics - Anfänger-Themen 3
D Globale Variablen Java Basics - Anfänger-Themen 31
C Globale Variablen und Array mit verschiedenen Typen Java Basics - Anfänger-Themen 3
S globale Variablen Java Basics - Anfänger-Themen 7
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
R Liste in Variable speichern Java Basics - Anfänger-Themen 6
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
E Variable von 1. Fenster an 2. Fenster übergeben. Java Basics - Anfänger-Themen 7
T Variable in Schleife deklarieren, Speicherplatz, Garbage Collector Java Basics - Anfänger-Themen 10
T Datum als Variable wert Java Basics - Anfänger-Themen 4
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
R Compiler-Fehler Variable wird nicht gefunden bzw. erkannt? Java Basics - Anfänger-Themen 2
Say super.methode / super.variable und super(variable) Java Basics - Anfänger-Themen 2
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
U Wie mache ich die Variable xyz eindeutig/unique? Java Basics - Anfänger-Themen 20
JordenJost char variable funktioniert irgendwie nicht a+b ergibt nicht à Java Basics - Anfänger-Themen 4
M Variable Felderanzahl Java Java Basics - Anfänger-Themen 10
T Variable durch Action Listener ändern Java Basics - Anfänger-Themen 2
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
P Zähler Variable für mehrere Objekte Java Basics - Anfänger-Themen 6
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
I Methoden Wieso wird mein Array "a" verändert und meine Variable "a" nicht? Java Basics - Anfänger-Themen 4
M Variable in einer Schleife initialisieren Java Basics - Anfänger-Themen 46
W Schleife und einmal variable++ zu viel Java Basics - Anfänger-Themen 20
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
M Methoden Wert einer Variable geht verloren? Java Basics - Anfänger-Themen 6
G variable kopieren bzw. woanders benutzen Java Basics - Anfänger-Themen 6
Ameise04 Variablen Inhalt einer Variable im Code verwenden? Java Basics - Anfänger-Themen 9
J Double Variable und Addition Java Basics - Anfänger-Themen 2
I Variable innerhalb Methode: Local variable test defined in an enclosing scope must be final or effectively final Java Basics - Anfänger-Themen 3
KogoroMori21 Variable im Parameter und Ohne Java Basics - Anfänger-Themen 5
Vivien Auf eine Variable von einer anderen Klasse aus zugreifen Java Basics - Anfänger-Themen 3
H Datentypen Wertebereich von <Klassenname> <Variable> Java Basics - Anfänger-Themen 12
M Private Variable Java Basics - Anfänger-Themen 2
idontknow707 Matrix nach z.B. Variable durchsuchen Java Basics - Anfänger-Themen 4
T Variable in for Schleife ansprechen ohne Array ? Java Basics - Anfänger-Themen 25
s.marcii Modulo in der Variable einsetzen - ist das möglich? Java Basics - Anfänger-Themen 2
N Variable aus anderen Variablen in statischer Klasse berechnen/abspeichern? Java Basics - Anfänger-Themen 4
Y Wie kann ich die Variable in der Try Catch returnen? Java Basics - Anfänger-Themen 3
K Übergabe des Wertes einer Variable aus main() in eine Klassenmethode Java Basics - Anfänger-Themen 8
B Inkrement von Variable Java Basics - Anfänger-Themen 8
V Variablen statische Variable einer Objektvariable zuordnen Java Basics - Anfänger-Themen 3
L Variable von einer Methode zu einer anderen Methode inkl. einer "Zwischenmethode" Java Basics - Anfänger-Themen 1
J JTextField Bezeichnung als Variable Java Basics - Anfänger-Themen 3
N Wie kann ich eine meine Variable Final machen? Java Basics - Anfänger-Themen 1
NeoLexx Variable für Array wird nicht korrekt übergeben Java Basics - Anfänger-Themen 45
M Enum-Variable HashMap zuweisen Java Basics - Anfänger-Themen 5
H Variable um 1 erhört ausgeben Java Basics - Anfänger-Themen 4
V Erste Schritte Eine Array-Variable mit Benutzereingaben befüllen Java Basics - Anfänger-Themen 3
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
P non-static variable cannot be referenced from a static context Java Basics - Anfänger-Themen 6
A Wie zwei zahlen in einer Variable speichern? Java Basics - Anfänger-Themen 7
W Problem mit dem Wert von boolean-Variable Java Basics - Anfänger-Themen 3
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
A Kann man eine Methode als Variable speichern und danach noch verändern? Java Basics - Anfänger-Themen 6
L cannot find symbol variable Kon Java Basics - Anfänger-Themen 8
C Statischer Typ aber Variable nicht statisch? Java Basics - Anfänger-Themen 5
H Variable.methode aufstellen, verstehen Java Basics - Anfänger-Themen 2
R Warnung, wenn eine Variable eingegeben wird Java Basics - Anfänger-Themen 6
S Variable einscannen Java Basics - Anfänger-Themen 30
N Best Practice Rückgabe eines Terminal Befehls in eine Variable speichern Java Basics - Anfänger-Themen 27
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
J Input-Variable nicht sichtbar Java Basics - Anfänger-Themen 2
L Warum ist Variable null? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben