Golang
Тартиби ҷамъоварӣ ва танзими хидмати gRPC барои озмоишҳои дастӣ ё таҳияро тавсиф диҳед
Чӣ гуна механизмҳои маҳдуд кардани сатҳҳои ҷудошавии транзаксияҳо дар сатҳи системаи идоракунии маълумотҳо татбиқ мешаванд?
Чӣ гуна метавонад натиҷаи манфӣ дар табдили қисмати байт ба сатр бошад?
Агар маълумотҳо, ки тавассути канал интиқол дода мешаванд, хонда нашаванд, чӣ оқибатҳо ба вуҷуд меоянд?
Кадом формати корӣ ба назар мерасонад — дур, гибрид ё дар офис?
Чӣ гуна роҳҳо метавонанд барои таъмин кардани коркарди Kafka то 100 ҳазор паём дар як соат истифода шаванд?
Чӣ гуна марказии протсессор тақсимоти вазифаҳоро байни навбатҳои вазифаҳои дохилӣ ва глобалӣ идора мекунад؟
Оё метавонед принсипи корират ва истифодаи объекти sync.Pool дар Go-ро шарҳ диҳед?
Ҳангоми кор бо slices дар Go кадом амалҳо мавҷуданд?
Равандози элементҳоро аз як Map ба дигар чӣ ном дорад?
/* Нам нужно передать данные из некоторого источника некоторому потребителю. При этом источник отдает данные небольшими пачками (~ десятки записей), а потребитель оптимальнее работает с крупными батчами (~тысячи записей). Реальный пример - поставка данных из очередей типа Kafka в базу Clickhouse. Источник: - Условно бесконечный. - Источник никогда не возвращает более MaxItems записей за один вызов Next. - В рамках одной "сессии" (одного вызова функции Pipe) источник каждый раз возвращает новые данные на каждый вызов Next. - Однако, после перезапуска источник начнет с прошлой "подтвержденной" позиции, задаваемой cookie. Поэтому *каждое* значение cookie, которое вернул вызов Next, после сохранения данных в приемнике, должно быть фиксировано вызовом Commit, причем строго в той же последовательности, в которой их вернул Next Приемник: - Не может обработать более MaxItems за один раз. Базовый уровень: Требуется реализовать функцию func Pipe(p Producer, c Consumer) error которая читает данные из источника, группирует их в буфер размером не более MaxItems и сохраняет в приёмник, после чего фиксирует прогресс в источнике. Усложнение: Методы Next, Process и Commit связаны с сетевыми вызовами и могут работать довольно долго. Для ускорения процесса передачи нужно распараллелить процессы чтения, записи и подтверждения прогресса. Так, чтобы при вызове Process или Commit продолжалось чтение из источника и формирование нового буфера. */ const MaxItems = 9999 type Producer interface { // Next returns: // - batch of items to be processed // - cookie to be commited when processing is done // - error Next() (items []any, cookie int, err error) // Commit is used to mark data batch as processed Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }
Чӣ гуна амалиёти select дар забони Go иҷро мешавад ва чӣ гуна бо каналҳо кор мекунад?
Оё имкон дорад иҷрои goroutine-ро ба таври ки дар як сими системӣ блоқ шавад, боздошт?
Забони Go дастгирии дохилии массивҳоро дорад?
Кадом механизмии абстраксия дар забони Go барои намоиш додани рамзҳо ё токенҳо пешбинӣ шудааст?
Чӣ усулҳо метавонанд барои тақсим кардани базаи додаҳо бо шардинг истифода шаванд?
Кадом намудҳои додаҳо барои истифода ҳамчун калид дар структураи маълумоти Map мувофиқанд?
Оё шумо метавонед механизмии фаъолияти нақшаи вазифа дар системаи оператсионӣ-ро шарҳ диҳед?
Мо метавонед сохтори дохилии ва фаъолияти ҷадвали ҳешро шарҳ диҳед?
Оё таҷрибаи ҳалли масъалаҳои мураккаб, вобаста ба истифодаи Go Modules дар лоиҳаҳои худ доред?