Golang
Кадари аз имконоти зерин эҳтимолан ба вуқӯъ мепайвандад вақте ки кӯшиш мекунед, ки шумораи хеле зиёди goroutines (масалан, даҳҳо ҳазор) бе назорати иловагӣ оғоз кунед? - Аслӣ мушкилот аз баста шудани mutex глобалӣ дар runtime пайдо мешавад, ки ба қатъ шудани пурраи иҷрои барнома оварда мерасонад - Плангардони Go goroutines-ро дар гурӯҳҳои хурд ба таври пайдарпай иҷро мекунад, бинобар ин афзоиши шумораи онҳо қариб таъсир ба истифодаи хотира надорад - Таҳкими оммавии goroutines метавонад ба истифодаи назаррас аз хотира ва хароҷоти иловагии плангардон оварда расонад; дар чунин ҳолатҳо, истифодаи пули коргарон мувофиқ аст - Агар шумораи goroutines аз шумораи процессорҳои логикӣ зиёд шавад, Go автоматӣ оғоз мекунад, ки оғозҳои навро бо паника рад кунад
// Максимал сандарды табамыз package main import "fmt" func main() { var max int for i := 1000; i > 0; i-- { go func() { if i%2 == 0 && i > max { max = i } }() } fmt.Printf("Максимум %d", max) } func maxEvent(n, workers int) int { var wg sync.WaitGroup results := make(chan int, workers) jobs := make(chan int, workers) for w := 0; w < workers; w++ { wg.Add(1) go func() { defer wg.Done() localMax := -1 for num := range jobs { if num%2 == 0 && num > localMax { localMax = num } } result <- localMax }() } go func() { for i := 1; i <= n; i++ { jobs <- i } close(jobs) }() go func() { wg.Wait() close(results) }() globalMax := -1 for localMax := range results { if localMax > globalMax { globalMax = localMax } } return globalMax }
// шумолҳои аз 1 то 10 func main() { done := make(chan struct{}, 10) for i:=1; i<=10; i++{ go func(){ defer func() {done<-struct{}{}}() printNumber(n) }() } for i:=1; i<=10; i++{ <-done } } func printNumber(n int) { time.Sleep(time.Second) fmt.Println(n) }
مزایای و معایب pgx چیست؟
Гурӯҳи истеъмолкунанда дар Kafka барои чӣ аст?
Дар бораи оптимизатсияи дархостҳо ба базаи додаҳо нақл кунед: чӣ гуна дархостҳои мушкилро ёфтед ва чӣ кардед?
Чӣ тавр бо Postgres кор мекардед — пурсишҳо, индексҳо?
Агар даъвати системӣ (syscall) боздошта шавад, чӣ мешавад?
Оё роҳи идора кардан ва танзим кардани ҷамъкунандаи партовҳои stop-the-world дар Go вуҷуд дорад?
// таблица товаров: // ID | cnt_view // ----------- // 1 | 100 // два пользователя одновременно начали просматривать товар с id = 1 // и в нашей базе данных запущены 2 параллельные транзакции // какой будет результат? postgresql func IncrementView(ctx context.Context, db *sql.DB, id int64) error { tx, err := db.BeginTx(ctx, nil) if err != nil { return err } defer tx.Rollback() var cnt int err = tx.QueryRowContext(ctx, "SELECT cnt_view FROM goods WHERE id = $1", id, ).Scan(&cnt) if err != nil { return err } cnt++ _, err = tx.ExecContext(ctx, "UPDATE goods SET cnt_view = $1 WHERE id = $2", cnt, id, ) if err != nil { return err } return tx.Commit() }
Чӣ туро ҳавасманд мекунад, чаро дӯст медорӣ ҳамчун барномасоз кор кардан?
Кадом линтерҳоро дар Go истифода мебарӣ ва дар куҷо онҳоро иҷро мекунӣ?
Аз ази суоли/вазифаи мусоҳиба аз ин тасвири экранӣ бароред. Забонро дар асл нигоҳ доред.
Чаро дар дарозии сатр дар UTF-8 нозанинҳо пайдо мешаванд?
Таърихи кори бо брокерҳои паёмҳо (Kafka, NATS)-ро нақл кунед.
Дана сатр S, лозим аст ҳисоб кунед, ки чӣ қадар зерсатрҳо дар ин сатр мавҷуданд, ки ҳадди ақал як маротиба ҳамаи аломатҳоро дар ин сатр дар бар мегиранд. Масалан: "abca" -> 3 // abc, bca, abca "aa" -> 3 // aa, a, a, "ffg" -> 2 // ffg, fg
Оё омодаед ба кӯчидан ба Елабуга?
Оё медонӣ, ки транзаксия чист ва хусусиятҳои он (ACID) кадомҳоянд?
Афзалиятҳои goroutines дар муқоиса бо сӯрохиҳои OS чист?
Оё таҷрибаи профилировкаи хизматҳоро доред?