Golang
Koje će posledice biti ako podaci preneti putem kanala ostanu nepročitani?
Koje je prednosti gorutina u poređenju sa nitima u pogledu efikasnosti i jednostavnosti korišćenja?
Šta određuje oblast pristupa promenljivoj deklarisanoj sa modifikatorom privat?
Koje parametre je moguće podesiti za rad planera zadataka?
Koje načine možete koristiti da obezbedite obradu Kafka do 100 hiljada poruka u sekundi?
Kako percipirate situaciju kada u kodu nije jasno naznačeno korišćenje interfejsa?
Ispričaj mi o trenutnom projektu na kojem radiš ili na kojem si nedavno radio
Koje operacije postoje nad slice-ovima u Go?
Kako se naziva proces premještanja elemenata iz jedne Map u drugu?
/* Moramo preneti podatke iz izvora do potrošača. Izvor pruža podatke u malim paketima (~deset zapisa), dok potrošač efikasnije radi sa većim paketima (~hiljadu zapisa). Pravi primer je prenos podataka iz Kafka tipa redova u bazu podataka Clickhouse. Izvor: - Praktično beskonačan. - Izvor nikada ne vraća više od MaxItems zapisa u jednom Next pozivu. - U okviru jedne "sesije" (jedan poziv funkcije Pipe), izvor u svakom Next pozivu vraća nove podatke. - Međutim, nakon restartovanja, izvor počinje od prethodne "potvrđene" pozicije, označene cookie-jem. Zato, svaka vrednost cookie-a koju Next vrati, nakon što se podaci sačuvaju u primaocu, mora biti potvrđena pozivom na Commit, u istom redosledu u kojem su vraćeni od strane Next. Primaoc: - Ne može obraditi više od MaxItems odjednom. Osnovni nivo: Potrebno je implementirati funkciju func Pipe(p Producer, c Consumer) error koja čita podatke iz izvora, grupiše ih u bafer veličine ne većoj od MaxItems i čuva u primaocu, nakon čega potvrđuje napredak u izvoru. Dodatna složenost: Metode Next, Process i Commit povezane su sa mrežnim pozivima i mogu trajati dosta dugo. Za ubrzanje procesa, potrebno je paralelizovati procese čitanja, zapisivanja i potvrđivanja napretka. Tako da, tokom Process ili Commit, čitanje iz izvora i formiranje novog bafera nastave. */ const MaxItems = 9999 type Producer interface { // Next vraća: // - paket stavki za obradu // - cookie za potvrdu kada je obrada završena // - grešku Next() (items []any, cookie int, err error) // Commit se koristi za označavanje paketa podataka kao obrađenih Commit(cookie int) error } type Consumer interface { Process(items []any) error } func Pipe(p Producer, c Consumer) error { // TODO }
Kako je implementovana operacija select u jeziku Go i kako radi sa kanalima?
Da li je moguće zaustaviti izvršenje goroutine-a tako da se blokira na određenom sistemskom thread-u?
Da li je jezik Go ugrađena podrška za nizove?
Koji mehanizam apstrakcije u jeziku Go je namenjen za predstavljanje simbola ili tokena?
Šta znači nula vrednost za isečak u programskom jeziku?
Kako je implementirano paralelno i sekvencijalno obavljanje zadataka u jeziku Go?
Koji mehanizmi i metode se koriste za zaštitu podataka prilikom uspostavljanja HTTPS veza?
Koji tipovi podataka su pogodni za korišćenje kao ključ u strukturi podataka Map?
Можете ли објаснити механизам функционисања планерa задатака у оперативном систему?
Можете ли објаснити унутрашњу структуру и рад хеш табеле?