Golang
V čom sa líši použitie a vlastnosti programovacieho jazyka Go v porovnaní s Pythonom?
Je možné v jazyku Go deklarovať metódy s privátnou oblasťou viditeľnosti?
Ako je v jazyku Go realizovaný mechanizmus dedičnosti a aká je jeho implementácia?
Akými metódami je možné preniesť zdrojový kód do Docker kontajnera?
Čo vracia funkcia Make v kontexte vytvárania rôznych typov údajov?
Ako zabrániť vzniku konkurenčných podmienok pri paralelnom spracovaní údajov?
Popíšte proces zberu a nastavenia služby gRPC pre manuálne testy alebo vývoj
Ako sú na úrovni systému správy databáz implementované mechanizmy obmedzenia úrovní izolácie transakcií?
Čo môže byť negatívne pri prevode segmentu bajtov na reťazec?
Aké dôsledky nastanú, ak údaje prenášané cez kanál zostanú neprečítané?
Aký formát práce zvažujete — vzdialený, hybridný alebo kancelársky?
Akými spôsobmi je možné zabezpečiť spracovanie Kafka až do 100 tisíc správ za sekundu?
Ako riadi centrálna procesor rozdeľovanie úloh medzi interné a globálne fronty úloh?
Môžete vysvetliť princíp fungovania a použitie objektu sync.Pool v Go?
Aké operácie existujú nad slices v Go?
Ako sa nazýva proces presunu prvkov z jednej Mapy do druhej?
/* Musíme preniesť údaje zo zdroja k spotrebiteľovi. Zdroj poskytuje údaje v malých dávkach (~desať záznamov), zatiaľ čo spotrebiteľ efektívnejšie pracuje s väčšími dávkami (~tisíc záznamov). Reálny príklad je prenos údajov z front typu Kafka do databázy Clickhouse. Zdroj: - Takmer nekonečný. - Zdroj nikdy nevráti viac ako MaxItems záznamov v jednom volaní Next. - V rámci jednej "relácie" (jedno volanie funkcie Pipe) zdroj pri každom Next vracia nové údaje. - Po reštarte však zdroj začína od predchádzajúcej "potvrdenej" pozície, označenej cookie. Preto, každá hodnota cookie, vrátená od Next, po uložené údajoch do príjemcu, musí byť potvrdená volaním na Commit, v rovnakom poradí, v akom boli vrátené od Next. Prijímateľ: - Nedokáže spracovať viac ako MaxItems naraz. Základná úroveň: Je potrebné implementovať funkciu func Pipe(p Producer, c Consumer) error, ktorá číta údaje zo zdroja, ich zoskupuje do bufferu veľkosti nie väčšej ako MaxItems a ich ukladá do príjemcu, po čom potvrdzuje pokrok v zdroji. Zložitosť: Metódy Next, Process a Commit sú spojené s sieťovými volaniami a môžu trvať dosť dlho. Na zrýchlenie procesu je potrebné paralelizovať procesy čítania, zápisu a potvrdenia pokroku. Tak, aby počas Process alebo Commit pokračovalo čítanie zo zdroja a tvorba nového bufferu. */ const MaxItems = 9999 type Producer interface { // Next vráti: // - dávku položiek na spracovanie // - cookie na potvrdenie, keď je spracovanie dokončené // - chybu Next() (items []any, cookie int, err error) // Commit sa používa na označenie dávky dát ako spracovaných Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }
Ako je implementovan operácia select v jazyku Go a ako funguje s kanálmi?
Je možné pozastaviť vykonávanie gorutiny tak, aby sa zablokovala na konkrétnom systémovom vlákne?
Má jazyk Go zabudovanú podporu pre polia?