Sobes.tech

როგორ მიუდექით gRPC კონტრაქტების ვერსიების მართვას?

Senior
РамблерРамблер
76

შეასრულეთ საუკეთესო 5 სერვისის მიღება O(N) დროს დამატებითი სტრუქტურის გამოყენებით

Middle+
X5 groupX5 group
76

Փաստաթղթերի նորացումները գալիս են ծառայությանը message Document { string Url = 1; // Փաստաթղթի URL- ը, նրա եզակի նույնականացուցիչ uint64 PubDate = 2; // հայտարարած հրապարակման ժամանակը uint64 FetchTime = 3; // այս փաստաթղթի նորացման ստացման ժամանակը, կարող է դիտվել որպես տարբերակի նույնականացուցիչ։ Զույգ (Url, FetchTime) եզակի է։ string Text = 4; // փաստաթղթի տեքստը uint64 FirstFetchTime = 5; // սկզբում բացակայում է, պետք է լրացվի } Փաստաթղթերը կարող են գալ ցանկացած կարգով (ոչ այն կարգով, որով դրանք թարմացվել են), և հնարավոր է կրկնօրինակ հաղորդագրություններ: Ելքում անհրաժեշտ է ձևավորել նույն հաղորդագրությունները, բայց ուղղված հետևյալ կանոններին (այստեղ ամեն ինչ վերաբերում է նույն Url դաշտով խմբավորված փաստաթղթերին): Text և FetchTime դաշտերը, ինչպիսին եղել է մինչ այժմ ստացված ամենամեծ FetchTime-ով փաստաթղթում: PubDate դաշտը, ինչպիսին եղել է ամենափոքր FetchTime-ով հաղորդագրությունում: FirstFetchTime դաշտը, հավասար է ամենափոքր FetchTime-ով արժեքին: Յուրաքանչյուր պահի մենք վերցնում ենք PubDate և FirstFetchTime- ը առաջին տարբերակից, որը մինչ այժմ ստացվել է (եթե դրանք դասավորենք FetchTime-ով), և Text- ը վերջինից: Կոդում այս ինտերֆեյսը կարող է իրականացվել այսպես: type Processor interface { Process(doc *Document) (*Document, error) } Այս կոդը կաշխատի ծառայությունում, որը կարդում է հաղորդագրություններ հերթից (Kafka կամ նման), և նաև գրում է արդյունքը հերթին: Եթե Process վերադարձնում է Null, ոչինչ չի գրանցվում հերթում.

Senior
VKVK
76

გაქვს გამოცდილება gRPC და GraphQL-თან? გვითხარით მათ შესახებ.

Senior
X5 techX5 tech
76

სადაგრძელებთ რა ანაზღაურების მოლოდინებს?

Senior
X5
76

იცნობ თუ არა პროდუქტი Loop?

Middle
wilix
76

როგორ უყურებ დეჟურტებს? გქონია ასეთი გამოცდილება?

Senior
ozon_tech
76

როგორ იყო ზუსტად ოპტიმისტური ბლოკირების გზა Kafka-დან შეტყობინების მიღებიდან მონაცემთა ბაზაში განახლებამდე?

Senior
КасперскийКасперский
76

როგორ იღებ დავალებებს, ვინ მოდის?

Middle+
SelectelSelectel
76

გქონდათ თუ არა გამოცდილება რელაციური მონაცემთა ბაზებში სვეტების ოპტიმიზაციაში?

Middle
VKVK
76

როგორ გამოიყენეთ Kafka და RabbitMQ ბროკერებად? რატომ ორი?

Senior
Ozon ФинтехOzon Финтех
76

როგორ დავპარალელიზოთ ლოგების დამუშავება worker pool-ის გამოყენებით? როგორ მივიღოთ შედეგები goroutine-ებიდან?

Middle+
X5 groupX5 group
76

რა არის მასივები და slices in Go, რა განსხვავებაა მათ შორის? როგორ მუშაობს append და გაფართოება capacity?

Senior
ClearWay
76

რეპლიკაციის უპირატესობა რა არის? რა ხარჯები მოაქვს მას?

Senior
ВайлдберрисВайлдберрис
76

// ჩვენი მეთოდი პროდუქტების შესახებ ინფორმაციის მისაღებად, ეს მეთოდი ძალიან ხშირად იძახება // არის თუ არა პრობლემები ამ კოდში და როგორ შეიძლება მათ გამოსწორება? postgress მონაცემთა ბაზა func (r *ProductRepository) GetProductDetails(ctx context.Context, productIDs []int) []Product { products := make([]Product, 0, len(productIDs)) for _, id := range productIDs { go func(id int) { var p Product query := "SELECT name, price, description FROM products WHERE id = $1" err := r.db.QueryRowContext(ctx, query, id).Scan(&p.Name, &p.Price, &p.Desc) if err != nil { r.logger.Error("error get product", "err", err) return } products = append(products, p) }(id) } return products }

Middle+
Lenta Tech
76

კანალის ბუფერის ზომა რაიმეზე გავლენას ახდენს worker pool-ში?

Senior
WildberriesWildberries
76

როდის იწერება გადადებული ფუნქციების არგუმენტები — განსაზღვრის დროს თუ ფუნქციის გამოძახების დროს?

Senior
КасперскийКасперский
76

როგორ ურთიერთქმედება გარეგან კონტურის სავაჭრო წარმომადგენლებთან?

Senior
Финтехробот
76

რა საშუალებები არსებობს გოში მრავალმხრივობის დროს სინქრონიზაციისთვის?

Senior
I-teco
76

რა მონაცემებს ინახავდნენ Redis-ში და როგორ ხვდებოდნენ, რომ განცხადებები ცხელი იყო?

Senior
Cloud.ru
76
/412