Sobes.tech

Golang

əsas paket func main() { c := make(chan int, 1) 3 dəfə dövr { seçin { default: println(1) case <-c: println(2) case c <- 1: println(3) } } }

269

```go func fail() { panic("Uğursuzluq!") } func main() { fmt.Println("Başlanğıc!") 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("Bitdi!") } ```

225

Niyə Elasticsearch seçdiniz? Ümumiyyətlə hansı variantlar var idi? Bir şey seçdinizmi yoxsa ELK artıq mövcud idi?

211

Elasticsearch ilə sürətli əməliyyat axtarışı üçün bir şey yaratdığını söyləyirsən. Bu nədir, neçə əməliyyat var və bunun faydası nədir?

184

func fetch(ctx context.Context, u User) (string, error) { // bir şəbəkədə nəsə edirik time.Sleep(time.Millisecond * 10) // gecikməni təqlid edir return u.Name, nil //return "", errors.New("bəzi xəta") } 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

Xidmətlərin nə əlaqəsi var, əgər biz uğursuzluğa davamlılıq və onu replikalara endirmə haqqında danışırıqsa?

179

Elasticsearch tətbiqindən sonra istifadəçilərdən və ya texniki dəstək xidmətindən hər hansı bir məhsul geribildirimi oldu mu?

171

əsas paket import ( "fmt" ) func main() { c := make(chan string, 1) go fmt.Println(<-c) c <- "Salam Dünya!" fmt.Println("Çıxış!") } ölüm xətası: bütün goroutinlar yuxuda - deadlock! goroutine 1 [kanal qəbul]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Proqram çıxışı: vəziyyət 2.

160

əsas paket func main() { c := make(chan int) 3 dövrü üçün { seçin { default: println(1) case <-c: println(2) case c <- 1: println(3) } } }

157

package main import ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Hello World!" fmt.Println("Exit!") }

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

əsas paket import ( "fmt" ) fun main() { c := make(chan string) go fmt.Println(<-c) c <- "Salam Dünya!" fmt.Println("Çıxış!") } fatal xəta: bütün goroutinlar yuxuya getdi - deadlock! goroutine 1 [kanal qəbul]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Proqram çıxış etdi: vəziyyət 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