Sobes.tech

package main func main() { c := make(chan int, 1) for range 3 { select { default: println(1) case <-c: println(2) case c <- 1: println(3) } } }

263

```go func fail() { panic("Қате!") } func main() { fmt.Println("Бастау!") 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("Аяқталды!") } ```

221

Неліктен Elasticsearch-ті таңдадыңыз? Басқа қандай нұсқалар болды? Бір нәрсені таңдадыңыз ба, әлде ELK бұрыннан бар ма еді?

209

Жобалар немесе жұмыс шарттары туралы сұрақтарыңыз бар ма?

206

Сен Elasticsearch көмегімен транзакцияларды тез іздеу үшін жүйе жасадың деп айтасың. Бұл не, ол қанша транзакцияны өңдейді және оның қандай пайдасы бар?

184

func fetch(ctx context.Context, u User) (string, error) { // бір нәрсе желі арқылы жасаймыз time.Sleep(time.Millisecond * 10) // кідірісті имитациялау return u.Name, nil //return "", errors.New("кейбір қате") } 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

Ақырында, қай шешімдерді таңдадыңыз? ClickHouse, ELK және тағы қандай үшіншісі?

180

Қазіргі уақытта қайда жұмыс істеп жатырсыз?

172

Elasticsearch-ті енгізгеннен кейін пайдаланушылардан немесе техникалық қолдау қызметінен қандай да бір өнімдік кері байланыс болды ма?

171

Жүйені жоғары жүктемелі ететін не? Өз біліміңізге сүйене отырып.

168

Қандай сомадан бастап ұсынысты қарастырасыз?

158

package main import ( "fmt" ) func main() { c := make(chan string, 1) go fmt.Println(<-c) c <- "Hello World!" fmt.Println("Exit!") } фаталь қате: барлық горутиндер ұйықтап қалды - өлім тырнағы! goroutine 1 [chan receive]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Бағдарлама шықты: күйі 2.

158

package main func main() { c := make(chan int) for range 3 { select { 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

Қызметтермен не қатысы бар, егер біз сенімділіктің жоғары болуын айтып отырсақ және оны репликаларға дейін қысқартсақ?

149

Берілген Go кодын қарап шығыңыз және қандай да бір мәселелер немесе жақсартуларды анықтаңыз.

147

package main import ( "fmt" ) func main() { c := make(chan string) go fmt.Println(<-c) c <- "Hello World!" fmt.Println("Exit!") } қате: барлық горутиндер ұйқыда - өліlock! goroutine 1 [каналдан қабылдау]: main.main() /tmp/sandbox[phone]/prog.go:10 +0x3a Бағдарлама шықты: күйі 2.

146

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 }

135
/2