Дар бораи лоиҳаи Авито бештар нақл кунед — оё ин ягона лоиҳа дар тӯли се сол буд?
Golang
func (c *Client) Send(ctx context.Context, messages []Message, maxWorkers int) error { sem := make(chan struct{}, maxWorkers) var wg sync.WaitGroup var resultErr error var once sync.Once for _, msg := range messages { wg.Add(1) go func(msg Message) { defer wg.Done() sem <- struct{}{} defer func() { <-sem }() body, err := json.Marshal(msg) if err != nil { once.Do(func() { resultErr = err; cancel() }) return } req, _ := http.NewRequestWithContext( ctx, http.MethodPost, c.url, bytes.NewReader(body), ) req.Header.Set("Content-Type", "application/json") resp, err := c.httpClient.Do(req) if err != nil { once.Do(func() { resultErr = err; cancel()}) return } defer resp.Body.Close() if resp.StatusCode >= 500 { once.Do(func() { resultErr = fmt.Errorf("server error") cancel()}) return } c.sentCount.Add(1) time.Sleep(time.Second) }(msg) } wg.Wait() }
Навъи паёми дар гурутин ва чаро бояд онро ҳамчун аргумент гузошт?
/* Тавсиягар ба вазифа дода шуд, ки хидмати фиристодани огоҳиномаҳоро нависад. Талабот: - Методи Send бояд паёмоҳоро параллел нависад. - Ҳамзамон на бештар аз maxworkers дархостҳои HTTP иҷро шаванд. - Агар ҳадди ақал як фиристодан бо хато анҷом ёбад, дигарон бояд боздошта шаванд ва хато баргардонида шавад. - Методи бояд дуруст коркарди бекор кардани контекстро дошта бошад. - Ҳамаи захираҳо бояд дуруст озод карда шаванд. - Методи метавонад дар як вақт аз гуруҳҳои гуногун даъват карда шавад. - Клиент бояд шумораи паёмҳои муваффақона фиристодашударо нигоҳ дорад. Кодро баррасӣ кунед, мушкилотро ёбед ва кодро ислоҳ кунед.
Дар кадом ҷой бояд defer resp.Body.Close() кард?
Оё бо дигар таъминкунандагони корӣ созишномаҳо доред ё ҳоло дар марҳилаи мусоҳиба ҳастед?
Чаро resultErr мустақим аз goroutine баргардонда намебардад?
Туроҷии умумии шумо дар рушд бо Go чист?
Дар бораи ҲамаиАсбобҳо нақл кун — чаро омадӣ ва чаро рафтӣ?
Оё кор кардан бо ҳуҷҷатҳои техникӣ дар забони англисӣ бароҳат хоҳад буд?
Турки SQL чӣ гуна таҷриба дорӣ? Оё метавонӣ пурсишҳоро навиштан ва оптимизатсия карданӣ бошӣ?
Контекстҳо дар куҷо дар ин код ба охир мерасанд?
Оёбҳои зуд чӣ мебошанд?
sentCount бе ҳамоҳангсозӣ интиқол дода мешавад — чӣ гуна бояд инро ислоҳ кард?
Агар дархости ба базаи маълумот нағз нарасонед, чӣ мешавад?
Дар бораи лоиҳаи нав чӣ меҷӯӣ? Технологияҳо кадомҳоянд? Дар ҷойи нави корӣ чӣ намехоҳӣ дидан?
Кай вақт индекс кӯмак намекунад ё ҳатто зарар дорад?
Кадом қадамҳо (stages) одатан дар пайплайни CI/CD барои хидмати Go мавҷуданд?