Heim Backend-Entwicklung Golang So richten Sie die Autorisierung in einem Buchhandlungsverwaltungssystem mit Go, HTMX und Permit.io ein

So richten Sie die Autorisierung in einem Buchhandlungsverwaltungssystem mit Go, HTMX und Permit.io ein

Dec 01, 2024 am 02:08 AM

Autorisierung ist beim Erstellen von Anwendungen wichtig, da sie bestimmt, auf welche Aktionen und Ressourcen ein Benutzer zugreifen darf, nachdem er sich authentifiziert hat.

In diesem Artikel werfen wir einen Blick darauf, wie Sie die Autorisierung mithilfe von Permit.io implementieren. Um es zu demonstrieren, erstellen wir eine einfache Buchladen-App mit Golang und HTMX (ich bin ein großer Fan).

Voraussetzungen

Um dieses Tutorial durcharbeiten zu können, sollten die folgenden Voraussetzungen erfüllt sein:

  • Golang wurde zusammen mit einem grundlegenden Verständnis davon installiert.
  • Ein Permit.io-Konto.
  • Docker installiert.
  • Grundlegendes Verständnis von HTML-, HTTP- und REST-APIs.
  • PostgreSQL (Datenbank).
  • Vertrautheit mit SQL.

Projektumfang

  • Bei dieser Demonstration halten wir es einfach. Wir werden zwei Benutzertypen haben, einen Administrator und einen Standardbenutzer. Beide werden auf Permit.io registriert. Bei der Anmeldung konsultiert die Datenbank Permit.io, um die Rolle des Benutzers zu bestimmen und seine Aktionen zu autorisieren.

Alle Benutzer (einschließlich Administratoren) können Bücher lesen. Administratoren können außerdem Bücher hinzufügen, löschen und aktualisieren. Standardbenutzer können nur Bücher lesen.

Dieses Tutorial führt Sie durch die Einrichtung einer Buchladenanwendung mit Basisautorisierung. Wir werden Folgendes umsetzen:

  • Autorisierungslogik: Definieren Sie Rollen (Administrator und Standardbenutzer) mithilfe von Permit.io, um den Zugriff auf verschiedene Ressourcen einzuschränken oder zu gewähren.

  • Datenbank: Richten Sie eine PostgreSQL-Datenbank ein, um Buch- und Benutzerdaten zu speichern.

  • Handler: Implementieren Sie Routen zum Anzeigen, Hinzufügen, Aktualisieren und Löschen von Büchern mit Zugriffskontrollprüfungen.

  • Frontend: Verwenden Sie HTMX, um Buchdaten dynamisch zu laden.

Projekt-Setup

Beim Einrichten des Projekts beginnen wir mit der Einrichtung von erlauben.io. Navigieren Sie zu Ihrem Dashboard-Arbeitsbereich und erstellen Sie ein neues Projekt. Ich gebe meiner den Namen Buchhandlung.

How to Set Up Authorization in a Bookstore Management System with Go, HTMX, and Permit.io

Dadurch werden zwei Umgebungen erstellt: eine Entwicklungsumgebung und eine Produktionsumgebung.

How to Set Up Authorization in a Bookstore Management System with Go, HTMX, and Permit.io

Da wir lokal arbeiten, nutzen wir die Entwicklungsumgebung. Klicken Sie in der Entwicklungsumgebung auf Dashboard öffnen und dann auf Richtlinie erstellen. Sie werden zunächst aufgefordert, eine neue Ressource zu erstellen. Klicken Sie auf Ressource erstellen. Geben Sie ihm einen Namen und geben Sie die Aktionen an. Für dieses Projekt werde ich meine Bücher benennen und die Aktion wird Erstellen, Aktualisieren, Löschen und Anzeigen sein.

How to Set Up Authorization in a Bookstore Management System with Go, HTMX, and Permit.io

Navigieren Sie als Nächstes zum Abschnitt „Richtlinieneditor“. Standardmäßig sollte eine bereits erstellte Administratorrolle angezeigt werden. Sie müssen nur die von uns hinzugefügte Ansichtsaktion ankreuzen, da sie standardmäßig nicht erkannt wird. Du brauchst eine andere Rolle. Dies gilt nur für Benutzer mit Leseberechtigung.

Klicken Sie auf „Erstellen“ und dann auf „Rolle“ und geben Sie den Namen des Benutzers ein. Sobald Sie es erstellt haben, sollten Sie es im Richtlinieneditor und in der soeben erstellten Benutzerrolle wie folgt sehen:

How to Set Up Authorization in a Bookstore Management System with Go, HTMX, and Permit.io

Als nächstes müssen Sie die Benutzer registrieren, die von Permit.io autorisiert werden sollen. Navigieren Sie über das Seitenleistenmenü zurück zu Ihrem Home-Menü. Sie sollten immer noch Folgendes sehen:

How to Set Up Authorization in a Bookstore Management System with Go, HTMX, and Permit.io

Klicken Sie auf „Benutzer hinzufügen“ und dann auf „Hinzufügen“ und dann auf „Benutzer hinzufügen“. Geben Sie die Details ein, die Ihren Benutzern in der Datenbank entsprechen.

Sobald dies erledigt ist, navigieren Sie zurück zu Ihrem Projekt. Klicken Sie in der Entwicklungsumgebung für das Buchladenprojekt auf das Symbol mit den drei Punkten. Sie sehen eine Option zum Kopieren des API-Schlüssels. Kopieren Sie es und speichern Sie es irgendwo, da Sie es für das Projekt benötigen.

Richten Sie die Datenbank ein

Erstellen Sie eine PostgreSQL-Datenbank namens Bookstore. Sie müssen zwei Tabellen einrichten:

  • Benutzertabelle: Speichert Benutzeranmeldeinformationen und -rollen:
CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  password_hash VARCHAR(255) NOT NULL,
  role VARCHAR(50) NOT NULL
);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Fahren Sie fort und füllen Sie dies aus, aber geben Sie jedem Benutzer die Rolle „Administrator“ bzw. „Benutzer“ und stellen Sie sicher, dass sie mit den auf Permit.io hinzugefügten Benutzern übereinstimmen.

  • Büchertabelle: Speichert Buchdetails:
CREATE TABLE books (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  title VARCHAR(255) NOT NULL,
  author VARCHAR(255) NOT NULL,
  published_at DATE,
  created_at TIMESTAMPTZ DEFAULT now()
);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Sie müssen dies nicht ausfüllen, wir machen das im Code.

Abhängigkeiten installieren

Sie müssen die folgenden Abhängigkeiten installieren:

  • github.com/permitio/permit-golang: Bietet Tools für die Handhabung der rollenbasierten Zugriffskontrolle (RBAC) und Berechtigungsverwaltung mit Permit.io in Go-Anwendungen.

  • github.com/google/uuid: Dies bietet Funktionen zum Generieren und Arbeiten mit Universally Unique Identifiers (UUIDs).

  • github.com/gorilla/mux: Hilft bei der Implementierung eines HTTP-Anforderungsrouters und -Dispatchers für die Verarbeitung von Routen in einer Webanwendung.

  • github.com/joho/godotenv: Dies lädt Umgebungsvariablen aus einer .env. Datei in die Anwendung, was die Verwaltung der Konfigurationseinstellungen erleichtert.

  • github.com/lib/pq: Dies ist der Postgres-Treiber von Go für die Kommunikation mit PostgreSQL-Datenbanken.

  • golang.org/x/crypto: Implementiert zusätzliche kryptografische Algorithmen und Bibliotheken, die nicht in der Standardbibliothek von Go enthalten sind.

Um diese Abhängigkeiten zu installieren, müssen Sie ein neues Go-Modul initialisieren. Dies ist der Ausgangspunkt für das Abhängigkeitsmanagement in Go.

Führen Sie diesen Befehl aus:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  password_hash VARCHAR(255) NOT NULL,
  role VARCHAR(50) NOT NULL
);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Führen Sie als Nächstes diesen Befehl aus:

CREATE TABLE books (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  title VARCHAR(255) NOT NULL,
  author VARCHAR(255) NOT NULL,
  published_at DATE,
  created_at TIMESTAMPTZ DEFAULT now()
);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dadurch werden alle oben aufgeführten Abhängigkeiten installiert.

Richten Sie Ihren PDP-Container (Policy Decision Point) ein

Um das PDP einzurichten, müssen Sie Docker starten. Öffnen Sie anschließend Ihr Terminal und führen Sie diesen Befehl aus:

go mod init bookstore
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Danach müssen Sie den Container mit diesem Befehl ausführen:

go get github.com/google/uuid \
       github.com/gorilla/mux \
       github.com/joho/godotenv \
       github.com/lib/pq \
       github.com/permitio/permit-golang \
       golang.org/x/crypto
Nach dem Login kopieren
Nach dem Login kopieren

Ersetzen Sie den Teil mit der Aufschrift mit Ihrem tatsächlichen API-Schlüssel. Jetzt fangen wir mit dem Bauen an.

Erstellen Sie die Anwendung

Um die Anwendung zu erstellen, sieht unsere Projektstruktur wie folgt aus:

docker pull permitio/pdp-v2:latest
Nach dem Login kopieren

Fügen wir zunächst unseren API-Schlüssel in eine .env-Datei ein. Erstellen Sie einen und dann Ihren Genehmigungs-API-Schlüssel wie folgt:

 docker run -it -p 7766:7000 --env PDP_DEBUG=True --env PDP_API_KEY=<YOUR_API_KEY> permitio/pdp-v2:latest
Nach dem Login kopieren

Datenbankverbindung konfigurieren

Erstellen Sie einen Ordner namens config. Erstellen Sie darin eine Datei mit dem Namen config.go. Fügen Sie den folgenden Code hinzu:

Bookstore                
├── config               
│   └── config.go        
│
├── handlers             
│   └── handlers.go      
│
├── middleware           
│   └── middleware.go    
│
├── models               
│   └── models.go        
│
├── templates            
│   ├── add.html         
│   ├── books.html       
│   ├── index.html       
│   ├── layout.html      
│   ├── login.html       
│   └── update.html      
│
├── main.go              
└── .env
Nach dem Login kopieren

Hier richten wir lediglich eine Konfiguration ein, um eine Verbindung zu einer PostgreSQL-Datenbank herzustellen.

Erstellen Sie die Handler

Als nächstes erstellen Sie einen Ordner namens handlers und darin eine Datei namens handlers.go. Fügen Sie darin den folgenden Code hinzu:

export PERMIT_API_KEY=”your_api_key”
Nach dem Login kopieren

Abgesehen vom Importieren der Pakete versuchen wir hier, eine Struktur zu erstellen, die die Datenbankverbindung und „permit.io“ enthält. Wir stellen auch eine Initialisierungsfunktion bereit, die Permit.io mit lokalem PDP einrichtet.

Direkt nach den NewHandlers fügen Sie Folgendes hinzu:

package config

import (
  "database/sql"
  "fmt"

  _ "github.com/lib/pq"
)

type Config struct {
  DB       *sql.DB
  Port     string
  DBConfig PostgresConfig
}

type PostgresConfig struct {
  Host     string
  Port     string
  User     string
  Password string
  DBName   string
}

func NewConfig() *Config {
  return &Config{
    Port: "8080",
    DBConfig: PostgresConfig{
      Host:     "localhost",
      Port:     "5432",
      User:     "bookstore_user",
      Password: "your_password",
      DBName:   "bookstore_db",
    },
  }
}

func (c *Config) ConnectDB() error {
  connStr := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=disable",
    c.DBConfig.Host,
    c.DBConfig.Port,
    c.DBConfig.User,
    c.DBConfig.Password,
    c.DBConfig.DBName,
  )

  db, err := sql.Open("postgres", connStr)
  if err != nil {
    return fmt.Errorf("error opening database: %v", err)
  }

  if err := db.Ping(); err != nil {
    return fmt.Errorf("error connecting to database: %v", err)
  }

  c.DB = db
  return nil
}
Nach dem Login kopieren

Der LoginHandler führt Folgendes aus:

  • Verarbeitet sowohl GET (Anmeldeformular anzeigen) als auch POST (Anmeldung verarbeiten).
  • Authentifiziert Benutzer gegenüber der Datenbank.
  • Setzt Sitzungscookies für authentifizierte Benutzer.
  • Synchronisiert Benutzerdaten mit Permit.io zur Autorisierung.
  • Rendert geeignete Vorlagen basierend auf dem Erfolg/Misserfolg der Anmeldung.

Der nächste Schritt besteht darin, einen Buchhandler hinzuzufügen, um auf die Bücher zuzugreifen. Außerdem wird „permit.io“ verwendet, um die Rolle des Benutzers zu überprüfen. Fügen Sie den folgenden Code direkt nach dem LoginHandler hinzu:

package handlers

import (
  "bookstore/middleware"
  "bookstore/models" 
  "context"
  "database/sql"
  "fmt"
  "html/template"
  "net/http"
  "strings"
  "time"

  "github.com/google/uuid"
  "github.com/permitio/permit-golang/pkg/config"
  "github.com/permitio/permit-golang/pkg/enforcement"
  permitModels "github.com/permitio/permit-golang/pkg/models"
  "github.com/permitio/permit-golang/pkg/permit"
)

var tmpl = template.Must(template.ParseGlob("templates/*.html"))

func StringPtr(s string) *string {
  return &s
}

type Handlers struct {
  db           *sql.DB
  permitClient *permit.Client
}

func NewHandlers(db *sql.DB, apiKey string) *Handlers {
  permitConfig := config.NewConfigBuilder(apiKey).
    WithPdpUrl("http://localhost:7766").
    Build()
  permitClient := permit.NewPermit(permitConfig)
  if permitClient == nil {
    panic("Failed to initialize Permit.io client")
  }

  return &Handlers{
    db:           db,
    permitClient: permitClient,
  }
}
Nach dem Login kopieren

Der BookHandler führt Folgendes aus:

  • Überprüft die Benutzerauthentifizierung über Cookies.
  • Überprüft Benutzerrolle und Berechtigungen mithilfe von Permit.io.
  • Ruft Bücher aus der Datenbank ab, sofern autorisiert.
  • Rendert die Buchvorlage mit den abgerufenen Daten.
  • Behandelt Autorisierungsfehler angemessen.

Als nächstes benötigen Sie einen Handler zum Hinzufügen von Büchern. Außerdem wird die Rolle des Benutzers über Permit.io überprüft, um sicherzustellen, dass nur autorisierte Benutzer Bücher hinzufügen können:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  password_hash VARCHAR(255) NOT NULL,
  role VARCHAR(50) NOT NULL
);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der AddBookHandler führt Folgendes aus:

  • Überprüft Benutzerberechtigungen für die Bucherstellung.
  • Verarbeitet sowohl GET (Formular anzeigen) als auch POST (Buch hinzufügen).
  • Validiert Eingabedaten.
  • Generiert UUID für neue Bücher.
  • Verwaltet die Datumsanalyse für Veröffentlichungsdaten.
  • Weiterleitung zur Bücherliste nach erfolgreicher Hinzufügung.

Sie benötigen zwei weitere Handler, einen zum Löschen und einen zum Aktualisieren. Fügen Sie diesen Code direkt nach der AddBookHandler-Funktion hinzu:

CREATE TABLE books (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  title VARCHAR(255) NOT NULL,
  author VARCHAR(255) NOT NULL,
  published_at DATE,
  created_at TIMESTAMPTZ DEFAULT now()
);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der DeleteBookHandler führt Folgendes aus:

  • Überprüft Benutzerberechtigungen zum Löschen.
  • Überprüft die Buch-ID.
  • Führt das Löschen der Datenbank durch.
  • Behandelt Fehler und Weiterleitungen angemessen.

Fügen Sie direkt nach der Funktion „DeleteBookHandler“ Folgendes hinzu:

go mod init bookstore
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Der UpdateHandler führt Folgendes aus:

  • Überprüft Update-Berechtigungen.
  • Verarbeitet sowohl GET (Bearbeitungsformular anzeigen) als auch POST (Buch aktualisieren).
  • Ruft vorhandene Buchdaten zur Bearbeitung ab.
  • Überprüft und verarbeitet Aktualisierungen.
  • Verwaltet Datumsformatierung und Datenbankaktualisierungen.

Im gesamten Code werden Sie feststellen, dass das Autorisierungssystem auf dem rollenbasierten Zugriffskontroll-Framework von Permit.io basiert, das eine ausgefeilte Berechtigungsverwaltung bietet.

Dieses System ermöglicht außerdem eine differenzierte Kontrolle über Benutzeraktionen und ermöglicht verschiedene Zugriffsebenen zum Anzeigen, Erstellen, Aktualisieren und Löschen von Ressourcen. Jeder Vorgang in der Anwendung wird einer detaillierten Berechtigungsprüfung unterzogen und stellt sicher, dass Benutzer nur Aktionen ausführen können, für die sie autorisiert sind.

Erstellen Sie eine Autorisierungs-Middleware

Jetzt sind wir mit den Handlern fertig. Erstellen Sie einen Ordner mit dem Namen „middleware“ und darin eine Datei mit dem Namen „middleware.go“. Fügen Sie den folgenden Code hinzu:

go get github.com/google/uuid \
       github.com/gorilla/mux \
       github.com/joho/godotenv \
       github.com/lib/pq \
       github.com/permitio/permit-golang \
       golang.org/x/crypto
Nach dem Login kopieren
Nach dem Login kopieren

Dieses Middleware-Paket hilft bei der Bereitstellung eines sicheren Passwort-Hashings und der Authentifizierung sowie bei CRUD-Vorgängen zum Verwalten von Büchern in einer Buchladenanwendung. Es verwendet bcrypt zum Hashen von Passwörtern zur sicheren Speicherung und überprüft Passwort-Hashes während der Anmeldung. Es verhindert auch die Offenlegung sensibler Daten.

Die LoginUser-Funktion authentifiziert Benutzer, indem sie ihre Eingaben mit gespeicherten Passwort-Hashes vergleicht und bei erfolgreicher Anmeldung das vollständige Benutzerprofil abruft, mit Ausnahme des Passwort-Hashs für zusätzliche Sicherheit.

Außerdem ermöglichen Ihnen CRUD-Vorgänge das Erstellen, Aktualisieren, Abrufen und Löschen von Buchdatensätzen in der Datenbank, mit Zugriffskontrolle, um sicherzustellen, dass nur autorisierte Benutzer von ihnen erstellte Einträge ändern oder löschen können. Das Paket enthält außerdem eine GetUserRole-Funktion zum Abrufen von Benutzerrollen und erleichtert so die rollenbasierte Zugriffskontrolle.

Erstellen Sie die Modelle

Erstellen Sie einen weiteren Ordner mit dem Namen „models“ und erstellen Sie darin eine Datei mit dem Namen „models.go“. Und fügen Sie Folgendes hinzu:

CREATE TABLE users (
  id SERIAL PRIMARY KEY,
  username VARCHAR(255) NOT NULL,
  password_hash VARCHAR(255) NOT NULL,
  role VARCHAR(50) NOT NULL
);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieses Paket definiert mehrere Datenmodelle für eine Buchladenanwendung, einschließlich User-, Book- und LoginRequest-Strukturen, zusammen mit einem benutzerdefinierten NullUUID-Typ für die Verarbeitung von nullbaren UUIDs in der Datenbank.

Fast fertig. Als nächstes müssen Sie die Vorlagen für Ihr Projekt erstellen. Sie müssen Vorlagen für die Anmeldung und den Index erstellen, um Bücher hinzuzufügen, Bücher anzuzeigen, Bücher zu löschen und Bücher zu aktualisieren.

Erstellen Sie die HTML-Vorlagen

Erstellen Sie einen Ordner mit dem Namen „Vorlagen“. Hier befinden sich Ihre HTML-Vorlagen.
Erstellen Sie für die Anmeldung eine Datei mit dem Namen login.html und fügen Sie darin Folgendes ein:

CREATE TABLE books (
  id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  title VARCHAR(255) NOT NULL,
  author VARCHAR(255) NOT NULL,
  published_at DATE,
  created_at TIMESTAMPTZ DEFAULT now()
);
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieses Hauptpaket dient als Einstiegspunkt für eine Buchladenanwendung. Es richtet Datenbankkonnektivität, Umgebungskonfiguration und HTTP-Routen für die Benutzeranmeldung und Buchverwaltung ein.

In der Hauptfunktion werden Routen mithilfe des Gorilla Mux-Routers registriert. Die Funktion handlers.NewHandlers initialisiert Handler mit der Datenbank und dem Permit.io-API-Schlüssel. Es ermöglicht Funktionen wie Benutzerauthentifizierung (/login) und Buchverwaltung (/books, /add, /delete, /update). Jede Route ist bestimmten HTTP-Methoden zugeordnet und organisiert die Endpunkte für verschiedene Aktionen.

Schließlich startet der Server auf Port 8080, lauscht auf eingehende Anfragen und protokolliert auftretende Fehler. Dieses Setup gewährleistet eine strukturierte API-Endpunktkonfiguration und einen sicheren Umgang mit Umgebungsvariablen.

Testen Sie die Anwendung

Das ist nun alles! Starten wir unsere App, um es zu sehen. das Ergebnis. Um den Server zu starten, führen Sie diesen Befehl aus:

go mod init bookstore
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Besuchen Sie http://localhost:8080/login in Ihrem Browser.

Beginnen wir damit, nur die Berechtigungen des Standardbenutzers zu testen:

How to Set Up Authorization in a Bookstore Management System with Go, HTMX, and Permit.io

Sie werden sehen, dass der Standardbenutzer nur Bücher anzeigen darf und kein Buch hinzufügen, löschen oder aktualisieren kann.

Lassen Sie uns jetzt mit dem Benutzer admin_user anmelden, um zu sehen, was passiert:

How to Set Up Authorization in a Bookstore Management System with Go, HTMX, and Permit.io

Sie werden sehen, dass der Administrator zu fast allem berechtigt ist! So solide und einfach zu bedienen ist Permit!

Sie können sich diese Ressourcen ansehen, um mehr über die Autorisierung von Permit zu erfahren:

  • Authentifizierung und Autorisierung in Anwendungen.
  • Best Practices für effektive Benutzerberechtigungen und Zugriffsdelegierung.
  • Was ist eine feinkörnige Autorisierung?

Abschluss

In diesem Tutorial haben wir eine einfache App zur Buchhandlungsverwaltung erstellt, um eine rollenbasierte Zugriffskontrolle mit Go, HTMX und Permit.io zu implementieren. Die Autorisierung ist ein grundlegender Aspekt der Anwendungssicherheit, da sie sicherstellt, dass Benutzer nur auf das zugreifen können, was ihnen gestattet ist.

Die Implementierung eines effektiven Zugriffskontrollmodells wie RBAC oder ABAC in Ihre Anwendung würde nicht nur Ihre Anwendung sichern, sondern auch ihre Skalierbarkeit und Compliance verbessern.

Das obige ist der detaillierte Inhalt vonSo richten Sie die Autorisierung in einem Buchhandlungsverwaltungssystem mit Go, HTMX und Permit.io ein. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1670
14
PHP-Tutorial
1273
29
C#-Tutorial
1256
24
Golang gegen Python: Leistung und Skalierbarkeit Golang gegen Python: Leistung und Skalierbarkeit Apr 19, 2025 am 12:18 AM

Golang ist in Bezug auf Leistung und Skalierbarkeit besser als Python. 1) Golangs Kompilierungseigenschaften und effizientes Parallelitätsmodell machen es in hohen Parallelitätsszenarien gut ab. 2) Python wird als interpretierte Sprache langsam ausgeführt, kann aber die Leistung durch Tools wie Cython optimieren.

Golang und C: Parallelität gegen Rohgeschwindigkeit Golang und C: Parallelität gegen Rohgeschwindigkeit Apr 21, 2025 am 12:16 AM

Golang ist in Gleichzeitigkeit besser als C, während C bei Rohgeschwindigkeit besser als Golang ist. 1) Golang erreicht durch Goroutine und Kanal eine effiziente Parallelität, die zum Umgang mit einer großen Anzahl von gleichzeitigen Aufgaben geeignet ist. 2) C über Compiler -Optimierung und Standardbibliothek bietet es eine hohe Leistung in der Nähe der Hardware, die für Anwendungen geeignet ist, die eine extreme Optimierung erfordern.

Erste Schritte mit Go: Ein Anfängerführer Erste Schritte mit Go: Ein Anfängerführer Apr 26, 2025 am 12:21 AM

GoisidealforBeginersandSuitableforCloudandNetWorkServicesDuetoitsSimplicity, Effizienz und Konsumfeaturen.1) InstallgoFromTheofficialwebSiteAnDverifyWith'goversion'.2) CreateAneDrunyourFirstProgramwith'gorunhello.go.go.go.

Golang gegen C: Leistung und Geschwindigkeitsvergleich Golang gegen C: Leistung und Geschwindigkeitsvergleich Apr 21, 2025 am 12:13 AM

Golang ist für schnelle Entwicklung und gleichzeitige Szenarien geeignet, und C ist für Szenarien geeignet, in denen extreme Leistung und Kontrolle auf niedriger Ebene erforderlich sind. 1) Golang verbessert die Leistung durch Müllsammlung und Parallelitätsmechanismen und eignet sich für die Entwicklung von Webdiensten mit hoher Konsequenz. 2) C erreicht die endgültige Leistung durch das manuelle Speicherverwaltung und die Compiler -Optimierung und eignet sich für eingebettete Systementwicklung.

Golangs Auswirkungen: Geschwindigkeit, Effizienz und Einfachheit Golangs Auswirkungen: Geschwindigkeit, Effizienz und Einfachheit Apr 14, 2025 am 12:11 AM

GoimpactsDevelopmentPositivyThroughSpeed, Effizienz und DiasMlitication.1) Geschwindigkeit: Gocompilesquickandrunseffiction, idealforlargeProjects

Golang gegen Python: Schlüsselunterschiede und Ähnlichkeiten Golang gegen Python: Schlüsselunterschiede und Ähnlichkeiten Apr 17, 2025 am 12:15 AM

Golang und Python haben jeweils ihre eigenen Vorteile: Golang ist für hohe Leistung und gleichzeitige Programmierung geeignet, während Python für Datenwissenschaft und Webentwicklung geeignet ist. Golang ist bekannt für sein Parallelitätsmodell und seine effiziente Leistung, während Python für sein Ökosystem für die kurze Syntax und sein reiches Bibliothek bekannt ist.

Golang und C: Die Kompromisse bei der Leistung Golang und C: Die Kompromisse bei der Leistung Apr 17, 2025 am 12:18 AM

Die Leistungsunterschiede zwischen Golang und C spiegeln sich hauptsächlich in der Speicherverwaltung, der Kompilierungsoptimierung und der Laufzeiteffizienz wider. 1) Golangs Müllsammlung Mechanismus ist praktisch, kann jedoch die Leistung beeinflussen.

Das Performance -Rennen: Golang gegen C. Das Performance -Rennen: Golang gegen C. Apr 16, 2025 am 12:07 AM

Golang und C haben jeweils ihre eigenen Vorteile bei Leistungswettbewerben: 1) Golang ist für eine hohe Parallelität und schnelle Entwicklung geeignet, und 2) C bietet eine höhere Leistung und eine feinkörnige Kontrolle. Die Auswahl sollte auf Projektanforderungen und Teamtechnologie -Stack basieren.

See all articles