Sobes.tech

Golang

peamine pakett func main() { c := make(chan int, 1) for range 3 { select { vaikimisi: println(1) juhtum <-c: println(2) juhtum c <- 1: println(3) } } }

301

```go func fail() { panic("Ebaõnn!") } func main() { fmt.Println("Algus!") var wg sync.WaitGroup wg.Add(1) go func() { defer func() { if e := recover(); e != nil { fmt.Println(e) } }() fail() wg.Done() }() wg.Wait() fmt.Println("Lõpp!") } ```

225

Miks valisite Elasticsearch? Kā bija citas iespējas? Vai izvēlējāties kaut ko vai ELK jau bija pieejams?

211

Sa ütlesid, et Elasticsearchi abil loodud kiirete tehingute otsingu tööriist. Mis see on, kui palju tehinguid seal on ja milline on selle kasu?

184

func fetch(ctx context.Context, u User) (string, error) { // jotain teemme verkossa time.Sleep(time.Millisecond * 10) // viiveen simulointi return u.Name, nil //return "", errors.New("jokin virhe") } func Do(ctx context.Context, users []User) (map[string]int64, error) { var mu sync.Mutex var wg sync.WaitGroup ch := make(chan error, len(users)) names := make(map[string]int64, 0) ctxWithCancel, cancel := context.WithCancel(ctx) wg.Add(len(users)) for _, u := range users { go func() { defer wg.Done() select { case name, err := fetch(ctx, u): if err != nil { ch <- err return } mu.Lock() names[name] = names[name] + 1 mu.Unlock() case <-ctxWithCancel.Err: } }() }

182

Mis on se seotud teenustega, kui räägime tõrke taluvusest ja oleme selle vähendanud replikatsioonidele?

179

Pärast Elasticsearch'i kasutuselevõttu kas oli kasutajatelt või tehnilise toe teenuselt tagasisidet?

171

peamine pakett import ( "fmt" ) func main() { c := make(chan string, 1) go fmt.Println(<-c) c <- "Hello World!" fmt.Println("Exit!") } fatali viga: kõik gorutined magavad - deadlock! goroutine 1 [kanali vastuvõtt]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Programmid lõpetasid töö: olek 2.

160

peamine pakett func main() { c := make(chan int) 3 tsüklit { valik { vaikimisi: println(1) juhtum <-c: println(2) juhtum c <- 1: println(3) } } }

157

peamine pakett import ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Hello World!" fmt.Println("Välju!") }

156

var defaultTxOptions = &sql.TxOptions{} const defaultCurrency = "RUB" func CreateUserWithDefaultCurrency(ctx context.Context, db *sql.DB, email, passwordHash string) error { tx, err := db.BeginTx(ctx, defaultTxOptions) if err != nil { return err } defer func() { if err != nil{ tx.Rollback() } }() _, err = tx.Exec("INSERT INTO users (email, password) VALUES (?, ?)", email, passwordHash) if err != nil { return err } rows, err := tx.Query("SELECT id FROM users WHERE email = ?", email) if err != nil { return err } defer rows.Close() id := 0 for rows.Next() { err = rows.Scan(&id) if err != nil { return err } } _, err = tx.Exec("INSERT INTO balances (user_id, currency, current_balance) VALUES (?, ?, 0)", id, defaultCurrency) if err != nil { return err } return tx.Commit() }

147

peamine pakett import ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Tere, maailm!" fmt.Println("Väljund!") } fatali viga: kõik gorutinid magavad - deadlock! goroutine 1 [kanali vastuvõtt]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Programm lõpetas: olek 2.

147

func Do(ctx context.Context, users []User) (map[string]int64, error) { var mu sync.Mutex var wg sync.WaitGroup ch := make(chan error, len(users)) names := make(map[string]int64, 0) ctxWithCancel, cancel := context.WithCancel(ctx) wg.Add(len(users)) for _, u := range users { go func() { defer wg.Done() select { case name, err := fetch(ctx, u): if err != nil { ch <- err return } mu.Lock() names[name] = names[name] + 1 mu.Unlock() case <-ctxWithCancel.Err: } }() } return names, nil }

139
/2