Go тілінде метрикаларды жазу үшін қандай кітапханалар пайдаланылады?
Golang
Бұл код не үшін жазылған? Ол қандай бизнес-техникалық мәселені шешеді?
Бұл метрикалар қандай? Біз бұл метрикаларды жазу үшін қандай құралдарды қолданамыз?
// Мәселе 4 // «Типтік» CRUD қызметінде кейбір әдістер баяу жұмыс істей бастады және қызмет уақытша тоқтап қалды. // Қызмет келесі бөлімдерден тұрады: // * Application Load Balancer (L7) - кіріс сұрауларды қабылдау және tls-ді терминдеу // * Backend (rest, java/kotlin немесе golang) - кіріс сұрауларды өңдеу және бизнес логикасы // * Database (postgres) - sql сұрауларын сақтау және өңдеу // Мәселені дұрыс анықтау және жағдайды жақсарту үшін шешімдер әзірлеу үшін қалай әрекет ету керек?
// Тапсырма 3 // Бұл код қандай мәселені шешетінін сипаттаңыз // Бұл шешімнің қандай кемшіліктері бар? // Бұл кодты қалай қайта жазар едіңіз?
Өндірістік серверде pprof профайлеріне қалай кіруге болады?
Жұмыста не істедіңіз?
// Задача 3 // Описать какую задачу решает данный код // Какие проблемы есть в этом решении? // Как бы вы переписали этот код? var c int type Trace struct { // Some fields here } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { c++ if c == 100 { sender.Send(tr) c = 0 } }
Жұмыста қандай көрсеткіштерді қолдандыңыз? Практикада не қолдандыңыз? Wildberries-те?
Сіздің командаңызда күн сайын басымдықтар өзгеріп, жаңа шұғыл тапсырмалар пайда болады. Бұл туралы не істейсіз?
Өнімділік мәселелері болған кезде дерекқор мен жүктеме теңгерушісін не істеу керек?
PostgreSQL-те бөлуді қалай жүзеге асыратынын ішкі механизмін сипаттаңыз.
PostgreSQL-де қандай индекстерді қолданасыз?
Жалпы санағышы бар кодта қандай мәселелер бар? Оны қалай түзетуге болады?
pprof қолданғанда қай графикте мәселе көрдіңіз?
Increaser-ді қалай әмбебап етуге болады — 100 санына тәуелсіз?
// Мәселе 3 // Бұл код қандай тапсырманы шешетінін сипаттаңыз // Бұл шешімде қандай мәселелер бар? // Осы кодты қалай қайта жазар едіңіз? var c int var mu sync.RWMutex type Trace struct { // Мұнда кейбір өрістер } type Sender interface { Send(Trace) } func Do(sender Sender, tr Trace) { mu.Lock() defer mu.Unlock() c++ if c == 100 { go func() { sender.Send(tr) }() c = 0 } }
func normalize2(str []rune) []rune { result := str[:0] for val := range str { if val != ' ' { result = append(re) } } l, r := 0, 0 isSpace := false for i := 0, i < len(str); i++ { val := string(str[i]) if val == " " { if isSpace { continue } else { str[r] = val r++ isSpace = true } } else { str[r] = val r++ isSpace = false } } return str[:r] }
Increaser Sender-дің жүзеге асырылуы бола ала ма? Increaser логикалық тұрғыдан Sender-дан қалай ерекшеленеді?
Ішкі және сыртқы платформа қызметтері үшін REST және gRPC API-лерін қалай жобалап, жүзеге асырғаныңызды сипаттай аласыз ба?