Advanced Programming Techniques - Cheatsheet.pdf

Advanced Programming Techniques - Cheatsheet
Advanced Programming Techniques - Cheatsheet Singleton, Factory und Observer Design Patterns Definition: Singleton, Factory und Observer Design Patterns - schnelle Übersicht für Fortgeschrittene Details: Singleton: Stellen sicher, dass eine Klasse nur eine Instanz hat und bieten einen globalen Zugriffspunkt. Factory: Erstellen Objekte, ohne ihre konkrete Implementierung offenzulegen, oft durch ein...

© StudySmarter 2024, all rights reserved.

Advanced Programming Techniques - Cheatsheet

Singleton, Factory und Observer Design Patterns

Definition:

Singleton, Factory und Observer Design Patterns - schnelle Übersicht für Fortgeschrittene

Details:

  • Singleton: Stellen sicher, dass eine Klasse nur eine Instanz hat und bieten einen globalen Zugriffspunkt.
  • Factory: Erstellen Objekte, ohne ihre konkrete Implementierung offenzulegen, oft durch eine Factory-Methode.
  • Observer: Ermöglichen ein Abhängigkeitsverhältnis zwischen Objekten, sodass bei einer Zustandsänderung eines Objektes alle abhängigen Objekte benachrichtigt und aktualisiert werden.

Threads und Thread-Synchronisation

Definition:

Threads: Ausführungsstränge innerhalb eines Prozesses. Thread-Synchronisation: Koordination der Ausführung von Threads, um Konkurrenzprobleme zu vermeiden.

Details:

  • Thread: leichtergewichtig, teilt Speicher mit anderen Threads desselben Prozesses
  • Vorteile: Parallelität, bessere CPU-Auslastung
  • Probleme: Race Conditions, Deadlocks
  • Synchronisation: Mutex, Semaphore, Monitore
  • Mutex: wechselseitiger Ausschluss
  • Semaphore: Signalisierung und Zähler
  • Monitor: höhere Abstraktion, eingebauter Lock und Signalisierung

Lambda-Ausdrücke und Closures in funktionalen Programmiersprachen

Definition:

Kurze, anonyme Funktionen mittels derer Funktionen als Argumente oder Rückgabewerte genutzt werden können. Closures kapseln Variablen aus ihrem definitorischen Kontext.

Details:

  • Syntax für Lambda: \(\text{\texttt{\textbackslash x -> x * 2}}\)
  • Ermöglicht höhere Ordnung der Programmierung
  • Closures schließen über Umgebung: Funktion + gebundene Variablen
  • Beispiele: Haskell, Python, JavaScript

Garbage Collection Algorithmen (z.B. Mark-and-Sweep, Generational GC)

Definition:

Garbage Collection-Algorithmen werden verwendet, um nicht mehr benötigte Speicherbereiche in einer Programmiersprache automatisch zu verwalten und freizugeben.

Details:

  • Mark-and-Sweep: Zwei Phasen, Markieren & Bereinigen. Unreachable Objekte entfernt.
  • Generational GC: Heaps in Generationen unterteilt. Junge Objekte häufiger bereinigt, da Kurzlebigkeiten vermehrt auftreten.
  • Beibehaltung Performance & Effizienz durch Minimierung von Pausenzeiten & Optimierung Speicherverwaltung.

Graph-Algorithmen: DFS, BFS und Dijkstra

Definition:

Untersuche und navigiere in Graphenobjekten, um Pfade und Verbindungen zu finden.

Details:

  • Tiefensuche (DFS): Erkundet so tief wie möglich, bevor es zurückklettert.
  • Breitensuche (BFS): Erkundet alle Nachbarn, bevor es in die Tiefe geht.
  • Dijkstra: Finde den kürzesten Pfad von einem Startknoten zu allen anderen Knoten in einem Graphen mit nicht-negativen Gewichtungen.
  • DFS Algorithmus: Rekursiver oder stack-basierter Ansatz, zeitliche Komplexität: \(\text{O}(V + E)\).
  • BFS Algorithmus: Warteschlangen-basiert, zeitliche Komplexität: \(\text{O}(V + E)\).
  • Dijkstra Algorithmus: Heaps/ Priority-Queue-basiert, zeitliche Komplexität: \(\text{O}(V^2)\) oder \(\text{O}(V + E \,\log \,V)\) mit Priority-Queue.
  • DFS/BFS Anwendung: Netzwerkdurchsuchung, Pfadfindung, Verbundkomponenten.
  • Dijkstra Anwendung: Verkehrsnetze, Routensuche, Navigationssysteme.

Refactoring und Clean Code Techniken

Definition:

Refactoring ist das Umstrukturieren von Code, ohne dessen externes Verhalten zu ändern. Clean Code Techniken helfen, lesbaren und wartbaren Code zu schreiben.

Details:

  • Kleine, verständliche Methoden: Methoden sollten eine Aufgabe haben und nicht mehr als 20 Zeilen lang sein.
  • Sprechende Namen: Variablen- und Methodennamen sollten selbsterklärend sein.
  • KISS-Prinzip: Keep It Simple, Stupid - Einfachheit vor Komplexität.
  • DRY-Prinzip: Don't Repeat Yourself - Vermeidung von Redundanzen.
  • SOLID-Prinzipien: Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion.
  • Regelmäßiges Refactoring: Häufiges Refactoring zur kontinuierlichen Verbesserung der Codequalität.
  • Automatisierte Tests: Tests zur Sicherstellung der Funktionsfähigkeit nach Refactorings.

Locks, Semaphoren und Deadlocks

Definition:

Mechanismen zur Kontrolle des Zugriffs auf geteilte Ressourcen in parallelen/konkurrierenden Systemen und zur Vermeidung von Deadlocks.

Details:

  • Locks: Synchronisationsmechanismen, die Ressourcen exklusiv bereitstellen
    • Mutex (Mutual Exclusion): Vermeidung doppelter Ressourcennutzung
    • Spinlock: aktives Warten auf Ressourcenzugriff
  • Semaphoren: Zählerbasierte Synchronisationswerkzeuge
    • Binäre Semaphoren: ähnlich wie Mutex, aber reentrancy möglich
    • Zählsmaphore (Counting Semaphore): ermöglicht Zugriff auf mehrere Instanzen einer Ressource
  • Deadlocks: Situation, in der zwei oder mehr Prozesse auf Ressourcen warten, die von einander blockiert werden; keine Prozesse können fortfahren
  • Hinweis: Deadlock-Bedingungen (Kaffman-Bedingungen)
    • Mutual Exclusion
    • Hold and Wait
    • No Preemption
    • Circular Wait

Speicherlecks und deren Vermeidung

Definition:

Speicherlecks treten auf, wenn ein Programm Speicher alloziert, aber nicht freigibt, sodass es zu einem Ressourcenverlust kommt.

Details:

  • Hauptursache: Vergessen,
Sign Up

Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

Kostenloses Konto erstellen

Du hast bereits ein Konto? Anmelden