Golang
Программалоо системасында каналдар аркылуу сигнал алмашуу кандай жүргүзүлөт?
Go тилинде паника абалы менен кырдаалдардан келип чыккан каталардын иштелип чыгышы кандай?
Табылгандан кийин дублдер менен эмне кылышты? Алар кайда тазаланды?
Жүйөлөрдөгү жүктөө көйгөйлөрүнүн себептерин талдоо жана аныктоо үчүн кандай ыкмалар жана каражаттарды колдондуңуз?
Linux иштөө системасында адатта кайсы буйруктарды колдонуп жатасың?
Көп жиптүүлүү чөйрөдө slices менен иштөөдө жиптердин коопсуздугун камсыздоо үчүн кайсы ыкмалар колдонулушу мүмкүн?
Программалоо тилинде nil слайс менен иштөөдө кайсы операциялар уруксат берилген?
Linux системасы үчүн скрипт жазуу аркылуу чечкен кыйын тапшырмаңыз жөнүндө айтып бериңиз
Кэште сакталган маалыматтардын көлөмүн кантип жөнгө салса болот?
Тимде жалгыз Backend адисти катары иштөө даярдыгы
Goда sync.Map түрүн колдонуунун негизги себеби эмне?
Бірдик тесттеринде жакшы практикалар жана анти-паттерндер кандай? Тесттер жакшы экенин кантип түшүнсө болот?
Жүйөлөрдө кэшти колдонуунун артыкчылыктары жана кемчиликтери кандай?
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 } Սինտաքսի սխալ # command-line-arguments ./main.go:39:32: անսպասելի նոր տող, սպասվում էր { after if clause
Ар кандай кызматтардын өз ара аракеттенүүсүн ишке ашырууда кыйынчылыктарга дуруст келдиңизби?
Программалоо тилинде кесим (slice) кандайча функцияга өткөрүлөт?
Saga үлгүсү эмне?
Неге Testcontainersти алышкан жок?
/* Бізге деректерді белгілі бір көзден белгілі бір тұтынушыға беру керек. Бұл кезде көз шағын топтамалармен береді (~ он шақты жазбалар), ал тұтынушы үлкен батчтармен тиімді жұмыс істейді. Шынайы мысал - Kafka тәрізді кезектерден деректерді Clickhouse базасына жеткізу. Көз: - Шартты түрде шексіз. - Көз бір шақыруда MaxItems-ден көп жазбаны қайтармайды. - Бір "сессия" (бір Pipe функциясының шақыруы) ішінде көз әр шақыруда жаңа деректер қайтарады. - Алайда, қайта іске қосқаннан кейін көз алдыңғы "расталған" позициядан бастайды, ол cookie арқылы анықталады. Сондықтан, әрбір cookie мәні, Next шақыруы қайтарғаннан кейін, қабылдауда сақталғаннан кейін, Commit арқылы бекітілуі керек, және ол дәл сол тәртіпте орындалуы керек, қайсысы бірінші қайтарылса. Қабылдаушы: - Бір ретте MaxItems-ден көп өңдей алмайды. Негізгі деңгей: func Pipe(p Producer, c Consumer) error функциясын жүзеге асыру керек, ол деректерді көзден оқиды, оларды MaxItems-ден аспайтын буферге топтастырады және қабылдағышқа сақтайды, содан кейін прогресті көзде бекітеді. */ const MaxItems = 9999 type Producer interface { // Next қайтаруы керек: // - өңделетін элементтер тобы // - растайтын cookie // - қате Next() (items []any, cookie int, err error) // Commit - өңделген деректер тобын белгілеу үшін 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 }
PostgreSQL үчүн ачкыч боюнча издөө үчүн (id PRIMARY KEY, data JSON) менен таблица жакшы көрсөткүчбү?