Sobes.tech

Golang

Yardımçı strukturadan istifadə edərək O(N) vaxtda ən yaxşı 5 xidməti əldə edin

Middle+
X5 groupX5 group
76

Sənədlərin yeniləmələri xidmətə daxil olur message Document { string Url = 1; // Sənədin URL-i, onun unikal identifikatoru uint64 PubDate = 2; // sənədin elan olunan nəşr vaxtı uint64 FetchTime = 3; // bu sənəd yeniləməsinin alınma vaxtı, versiya identifikatoru kimi qəbul edilə bilər. Cüt (Url, FetchTime) unikaldır. string Text = 4; // sənədin mətni uint64 FirstFetchTime = 5; // ilkin olaraq mövcud deyil, doldurulmalıdır } Sənədlər istənilən ardıcıllıqla gəlir (yeniləmələrin edildiyi ardıcıllıqla deyil), və dəfələrlə mesajlar ola bilər. Çıxışda, eyni mesajlar formalaşdırmaq lazımdır, lakin aşağıdakı qaydalara uyğun olaraq düzəldilmiş sahələrlə (aşağıda qeyd olunanlar, Url sahəsi ilə eyni olan sənədlər qrupuna aiddir): Text və FetchTime sahələri, indiyə qədər alınmış ən böyük FetchTime ilə eyni olmalıdır. PubDate sahəsi, ən kiçik FetchTime ilə eyni olmalıdır. FirstFetchTime sahəsi, ən kiçik FetchTime dəyərinə bərabər olmalıdır. Başqa sözlə, hər zaman FetchTime-ə görə sıralanmış ilk versiyadan PubDate və FirstFetchTime, və son versiyadan Text götürürük. Kodda bu interfeys aşağıdakı kimi həyata keçirilə bilər: type Processor interface { Process(doc *Document) (*Document, error) } Bu kod, Kafka və ya oxşar növbədən mesajlar oxuyan və nəticəni də növbəyə yazan xidmətdə işləyəcək. Əgər Process Null qaytarırsa, heç nə növbəyə yazılmır.

Senior
VKVK
76

gRPC və GraphQL ilə təcrübəniz varmı? Onlar haqqında danışın.

Senior
X5 techX5 tech
76

Hansı maaş gözləntilərinə əsaslanırsınız?

Senior
X5
76

Loop məhsulunu tanıyırsan?

Middle
wilix
76

Növbələrə münasibətin necədir? Belə bir təcrübən olubmu?

Senior
ozon_tech
76

Kafka-dan mesajın alınmasından verilənlər bazasında yeniləməyə qədər optimist kilidləmə yolu necə görünürdü?

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

Tapşırıqları necə alırsan, kimdən gəlir?

Middle+
SelectelSelectel
76

Əlaqəli verilənlər bazalarında sorğuların optimallaşdırılması təcrübəniz varmı?

Middle
VKVK
76

Brokerlər kimi Kafka və RabbitMQ-dən necə istifadə etdiniz? Niyə ikisi?

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

İşçi hovuzundan istifadə edərək logların emalını necə paralelləşdirmək olar? Goroutine-lərdən necə nəticələr əldə etmək olar?

Middle+
X5 groupX5 group
76

Go-da massivlər və slices nədir, onlar necə fərqlənir? append necə işləyir və capacity genişləndirilməsi necə olur?

Senior
ClearWay
76

Replikasiya etmənin üstünlükləri nədir? Hansı xərcləri var?

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

// Məhsullar haqqında məlumat almaq üçün metodumuz var, bu metod çox tez-tez çağrılır // Bu kodda problemlər var mı və onları necə düzəltmək olar? postgress məlumat bazası 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

Kanal tamponunun ölçüsü işçi hovuzunda nəsə üzərində təsir edir?

Senior
WildberriesWildberries
76

Gecikmiş funksiyaların arqumentləri nə vaxt hesablanır — təyin etmə zamanı və ya funksiyanı çağırma zamanı?

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

Xarici konturda yerləşən ticarətçilərlə necə əlaqə qurmaq olar?

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

Go-da çox iş parçacığı ilə işləmədə hansı sinxronizasiya vasitələri mövcuddur?

Senior
I-teco
76

Redis-də hansı məlumatlar saxlanılırdı və elanların isti olduğunu necə başa düşürdülər?

Senior
Cloud.ru
76

İnterfeyslərdən niyə istifadə etmək lazımdır?

Middle+
Napoleon IT
76
/412