Inbox və Outbox şablonlarından istifadə etdinizmi?
Golang
Tapşırıq: «Timeout ilə ping-pong» pingPong adlı funksiyanı yazın: - İki goroutine başlatın: biri "ping" mesajları yaradır, digəri — "pong". - Goroutine'lər mesajları yalnızca ardıcıl olaraq ümumi kanaldan mübadilə etməlidir. - Mübadilə 3 saniyə davam edir, sonra proqram düzgün şəkildə bağlanmalıdır (güclü bağlanma). - Timeout ilə ləğv etmək üçün kontekstdən istifadə edin. - Hər bir mesajı ekranda, başlanğıcdan bəri millisekundlarda vaxt ilə birlikdə göstərin. Gözlənilən çıxış nümunəsi: 0ms: ping
Sadə canlı kodlaşdırma tapşırığı (əsasən rəqabət) Şərt: Hər URL üçün eyni zamanda HTTP GET sorğusu edən və URL-ni açar, cavabın bədənini (sətir) dəyər kimi tutan xəritəni qaytaran fetchAll(urls []string) map[string]string funksiyasını yazın. Əgər sorğu uğursuz olarsa (səhv, 200 deyil), dəyər boş sətir olacaq. Məhdudiyyətlər: - Xarici kitabxanalardan istifadə etmək olmaz (yalnız standartlar). - İmza dəyişdirilə bilməz. - Proqram http.Get-də panik olarsa, çökməməlidir. Giriş nümunəsi: ["[link]" "[link]" "[link]"]
package main import ( "fmt" ) func a(p *string) { s2 := "string2" *p = s2 } func main() { str1 := "string1" p := &str1 fmt.Println(*p) a(&p) fmt.Println(*p) }
Loglar harada saxlanılıb?
İşə götürənə nə demək olar (əgər soruşsalar) "Müəyyən sayda işçi ilə işçi hovuzu istifadə edərdim, tapşırıqlar üçün kanal və sync.WaitGroup. İşçilər sorğuları yerinə yetirəcək və vaxt aşımı və ləğv etmə kontekst vasitəsilə idarə olunacaq. Nəticələri mutex ilə qorunan tamponda toplayacağam (və ya ayrıca kanal vasitəsilə)." İndi sənin növbəndir Bu söhbətdə kodu yaz. Mən yoxlayıb geribildirim verəcəyəm. Haradan başlamağı bilmirsinizsə, ipucu istəyin. Uğurlar!
İdempotentliyi necə təmin etdilər?
// slice-ın bütün elementləri unikal olmalıdır + ümumi 1000 element olmalıdır // proqram time.sleep səbəbindən artıq vaxt sərf etməməlidir func main() { checkIncrement := map[int]int32{} var data []int for i := 0; i < 1000; i++ { go func() { data = append(data, i) if _, found := checkIncrement[i]; found { fmt.Println(i) panic("təkrarlanan artım") } checkIncrement[i] = 1 }() } time.Sleep(2 * time.Second) fmt.Println(len(data)) }
Pointer nədir və funksiyanın arqumenti pointerdirsə, nə baş verər?
Mutex olmadan slice elementləri ilə doldurun ki, içində bütün 1000 element olsun.
Postgres-də kilidlər haqqında danış.
DELETE və TRUNCATE arasındakı fərq nədir?
Paylanmış izləmə haqqında eşitmisiniz?
Redis-dən necə istifadə etdiniz?
Son layihən haqqında danış.