Golang
Linux sistemi üçün skript yazarak həll edə bildiyiniz çətin vəzifədən danışın
Keşdə saxlanan məlumatların həcmini necə tənzimləmək olar?
Komanda daxilində tək Backend mütəxəssisi kimi çıxış etməyə hazır olmaq
Go-da sync.Map tipindən istifadə etməyin əsas səbəbi nədir?
Vahid testlərində yaxşı təcrübələr və antipatternlər hansılardır? Testlərin yaxşı olduğunu necə başa düşmək olar?
func Exclude(a, b []int) []int { set := make(map[int]struct{}) for _, v := range b { set[v] = struct{}{} } result := make([]int, 0) for _, v := range a { if _, ok := set[v]; !ok { result = append(result, v) } } return result } Kompilatsiya xatosi # command-line-arguments ./main.go:39:32: sintaksis xatosi: kutilmagan yangi satr, if shartidan keyin { kutilgan
Əməliyyat: transaction_id uuid identotency_id uuid from_account_id uuid to_account_id uuid amoun decimal status enum transaction_start timestamp transaction_end timestamp payments_create: user_id uuid payment_account_id uuid balance decimal currency varchar(16) status ENUM created_time timestamp update_time timestamp
Fərqli xidmətlər arasında qarşılıqlı əlaqələri həyata keçirərkən çətinliklərlə üzləşdinizmi?
Proqramlaşdırma dilində funksiyaya dilim (slice) necə ötürülür?
Saga nümunəsi nədir?
Niyə Testcontainers istifadə etmədilər?
/* Biz manbadan ma'lumotlarni iste'molchiga uzatishimiz kerak. Manba kichik partiyalar (~o'n yozuv) bilan ma'lumotlarni taqdim etadi, iste'molch esa katta partiyalar bilan samaraliroq ishlaydi. Haqiqiy misol - Kafka turidagi navbatlardan Clickhouse bazasiga ma'lumot uzatish. Manba: - deyarli cheksiz. - Manba har doim Next chaqiruvida MaxItems dan ko'p yozuvlarni qaytarmaydi. - Bir "sessiya" (bir Pipe funksiyasi chaqiruvi) davomida, manba har Next chaqiruvida yangi ma'lumotlarni qaytaradi. - Biroq, qayta ishga tushirilgandan so'ng, manba avvalgi "tasdiqlangan" pozitsiyadan, cookie bilan belgilangan joydan boshlanadi. Shuning uchun, har bir cookie qiymati, Next qaytarib bergandan so'ng, ma'lumotlar qabul qiluvchiga saqlangandan keyin, Commit chaqiruvi bilan tasdiqlanishi kerak, va ular Next tomonidan qaytarilgan tartibda bo'lishi shart. Qabul qiluvchi: - Bir vaqtning o'zida MaxItems'tan ko'p ishlov berolmaydi. Asosiy daraja: Kerak bo'lsa, func Pipe(p Producer, c Consumer) error funksiyasini amalga oshiring, bu funktsiya manbadan ma'lumotlarni o'qiydi, ularni MaxItems o'lchamdagi bufferga guruhlaydi va qabul qiluvchiga saqlaydi, so'ngra manbada progressni tasdiqlaydi. */ const MaxItems = 9999 type Producer interface { // Next,: // - ishlov beriladigan elementlar paketlari qaytaradi // - tasdiqlash uchun cookie // - xato Next() (items []any, cookie int, err error) // Commit, ma'lumotlar partiyasini ishlov berilgan deb belgilash uchun ishlatiladi Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { var buf []any var cookies []int for { items, cookie, err := p.Next() if err != nil { return err } buf = append(buf, items...) cookies = append(cookies, cookie) if len(buf) >= MaxItems { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } buf = buf[:0] cookies = nil } } if len(buf) > 0 { if err := c.Process(buf); err != nil { return err } for _, c := range cookies { if err := p.Commit(c); err != nil { return err } } } return nil }
(id PRIMARY KEY, data JSON) ilə cədvəl, PostgreSQL indeksi açar üzrə axtarış üçün kifayət qədər yaxşıdırmı?
Mövcud funksiyanın içində başqa bir kod bloku mötərizə ilə əlavə etmək mümkündürmü?
Əvvəlki vəzifənizdə tapşırıqları necə müəyyənləşdirdiniz və formalaşdırdınız?
Son layihənizdə son kod istehsal mühitinə necə yerləşdirildi?
Proqramlaşdırma dilində yeni element əlavə etmə əməliyyatı necə işləyir?
Nil dilimi, açıq şəkildə başlatılmamış dilimə bərabərdirmi?
İşletim sistemlərində kontekst dəyişdirmə anlayışını izah edin.
Go dilində dilim strukturunun hansı komponentləri daxildir?