asosiy paket func main() { c := make(chan int, 1) 3 marta sikl { select { default: println(1) case <-c: println(2) case c <- 1: println(3) } } }
Golang
```go func fail() { panic("Xatolik!") } func main() { fmt.Println("Boshlash!") 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("Tugash!") } ```
Nima uchun Elasticsearch ni tanladingiz? Qanday variantlar bor edi? Biror narsa tanladilarmi yoki ELK allaqachon mavjud edi?
Loyihalar yoki ish shartlari haqida savollaringiz bormi?
Xizmatlar nima bilan bog'liq, agar biz nosozliklarga chidamlilik va uni replikalarga qisqartirish haqida gapirayotgan bo'lsak?
Nihoyat, qaysi yechimlarni tanladingiz? ClickHouse, ELK va yana nima?
Siz Elasticsearch yordamida tezkor tranzaktsiyalarni qidirish uchun narsa yaratdingiz, bu nima, nechta tranzaktsiya bor va bu qanday foyda keltiradi?
asosiy paket import ( "fmt" ) func main() { c := make(chan string, 1) go fmt.Println(<-c) c <- "Salom Dunyo!" fmt.Println("Chiqish!") } fatal xato: barcha goroutinlar uxlashda - deadlock! goroutine 1 [kanal qabul qilish]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Dastur tugadi: holat 2.
func fetch(ctx context.Context, u User) (string, error) { // tarmoqda nimadir qilamiz time.Sleep(time.Millisecond * 10) // kechikishni taqlid qilish return u.Name, nil //return "", errors.New("biron xato") } 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: } }() }
Elasticsearchni joriy etgandan keyin foydalanuvchilar yoki texnik yordam xizmati tomonidan qandaydir mahsulot fikrlari bo'ldimi?
Hozirda qayerda ishlayapsiz?
Qanday qilib yuqori yuklangan tizim bo'ladi? O'z tajribangizga asoslanib.
Hozir qaerda yashayapsiz?
Harbiy guvohnomangiz bormi?
Qaysi summadan taklifni ko'rib chiqmoqchisiz?
asosiy paket func main() { c := make(chan int) 3 marta uchun { tanlash { default: println(1) case <-c: println(2) case c <- 1: println(3) } } }
package main import ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Hello World!" fmt.Println("Exit!") }
Loyihalarda qanday texnologiyalar ishlatiladi?
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 }
asosiy paket import ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Salom Dunyo!" fmt.Println("Chiqish!") } fatal xato: barcha goroutinlar uxlab qolgan - deadlock! goroutine 1 [kanal qabul qilish]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Dastur tugadi: holat 2.