Go · Experte
Standardkonvertierungen kopieren Speicher. Die Verwendung des unsafe-Pakets ermöglicht die Neuinterpretation des zugrunde liegenden Speicher-Headers, um Allokationen zu vermeiden, erfordert jedoch…
performancebestpracticesdatatypes
Snippet öffnen →Go · Experte
Go richtet Strukturfelder basierend auf ihrer Größe aus. Große Felder sollten zuerst kommen, um Padding-Bytes zu minimieren, die der Compiler hinzufügt, um die Ausrichtung der Speicheradressen zu g…
datatypesperformance
Snippet öffnen →Go · Experte
sync.Pool ermöglicht die Wiederverwendung von Objekten, was die Häufigkeit von Garbage-Collection-Zyklen in Anwendungen mit hohem Durchsatz durch Recycling von zugewiesenem Speicher erheblich reduz…
performancepatternsasync
Snippet öffnen →Go · Experte
Type-Sets in Interfaces ermöglichen es Generics, Typen auf eine bestimmte Vereinigung zu beschränken. Der Tilde-Operator (~) schließt Typen ein, die denselben zugrunde liegenden primitiven Typ teilen.
syntaxdatatypesfunctions
Snippet öffnen →Go · Experte
Das singleflight-Paket bietet einen Mechanismus zur Unterdrückung doppelter Funktionsaufrufe. Es stellt sicher, dass für einen bestimmten Schlüssel jeweils nur eine Ausführung einer Funktion aktiv…
performancepatterns
Snippet öffnen →Go · Experte
Gewichtete Semaphoren ermöglichen die Steuerung des Zugriffs auf einen gemeinsamen Ressourcenpool, bei dem verschiedene Aufgaben unterschiedliche Mengen dieser Ressource verbrauchen können. Im Gege…
asyncpatterns
Snippet öffnen →Go · Experte
Standard-CPU-Profiling in Go zeigt, wo Zeit in Funktionen verbracht wird, unterscheidet aber oft nicht zwischen verschiedenen Kontexten (z. B. welcher Benutzer die Last verursacht hat). pprof.Do er…
performancetesting
Snippet öffnen →Go · Experte
Lock-Striping ist ein Entwurfsmuster zur Reduzierung von Ressourcenkonflikten, indem eine geteilte Ressource in mehrere unabhängige 'Shards' mit jeweils eigenem Lock aufgeteilt wird. In Umgebungen…
performancepatterns
Snippet öffnen →Go · Experte
Erfahrene Go-Fehlerbehandlung schichtet Kontext um die eigentliche Ursache: fmt.Errorf mit %w sowie eigene Typen mit Unwrap()-Methode. errors.As durchläuft die Kette und kopiert den ersten passende…
errorhandlingpatterns
Snippet öffnen →Go · Experte
Go kennt kein mehrstufiges break — ein einfaches break verlässt nur die innerste Schleife oder das innerste switch. Ein Label vor der äußeren for-Schleife macht diese ansprechbar: break Outer überg…
controlflow
Snippet öffnen →Go · Experte
Ein zweistelliger Slice s[low:high] erbt die volle Kapazität des Backing-Arrays bis ans Ende — ein späteres append in die Rückgabe kann unbemerkt Speicher überschreiben, auf den der Aufrufer noch z…
arraysdatatypes
Snippet öffnen →Go · Experte
Ein naiver Vergleich wie bytes.Equal oder == auf zwei Strings bricht beim ersten Unterschied ab. Angreifer im Netz können diesen frühen Abbruch messen und einen MAC byteweise erraten — der passende…
security
Snippet öffnen →Go · Experte
math/rand ist ein deterministischer PRNG mit globaler Seed-Quelle; aus wenigen Ausgaben kann ein Angreifer den Seed rekonstruieren und alle künftigen Tokens vorhersagen. crypto/rand zieht aus dem C…
securitybestpractices
Snippet öffnen →