Jakie inne struktury są używane do indeksów w bazach danych oprócz drzewa B?
Golang
Czym jest wskaźnik i ile waży?
Aktualizacje dokumentów trafiają do usługi message Document { string Url = 1; // URL dokumentu, jego unikalny identyfikator uint64 PubDate = 2; // deklarowany czas publikacji dokumentu uint64 FetchTime = 3; // czas otrzymania tej aktualizacji dokumentu, może być traktowany jako identyfikator wersji. Para (Url, FetchTime) jest unikalna. string Text = 4; // tekst dokumentu uint64 FirstFetchTime = 5; // początkowo nieobecne, musi zostać uzupełnione } Dokumenty mogą docierać w dowolnej kolejności (nie w kolejności, w jakiej były aktualizowane), mogą też występować duplikaty wiadomości. Wynikiem na wyjściu jest konieczność utworzenia takich samych wiadomości, ale z poprawionymi polami zgodnie z następującymi zasadami (wszystko poniżej dotyczy grupy dokumentów z tym samym polem Url): Pole Text i FetchTime powinny być takie, jak w dokumencie z największym FetchTime, otrzymanym do tej pory. Pole PubDate powinno być takie, jak w wiadomości z najmniejszym FetchTime. Pole FirstFetchTime powinno być równe minimalnej wartości FetchTime. Inaczej mówiąc, w każdym momencie bierzemy PubDate i FirstFetchTime z pierwszej wersji otrzymanej do tej pory (jeśli posortujemy je według FetchTime), a Text z ostatniej. Interfejs w kodzie można zaimplementować tak: type Processor interface { Process(doc *Document) (*Document, error) } Ten kod będzie działał w serwisie, który odczytuje wiadomości z kolejki (Kafka lub podobnej), i zapisuje wynik również do kolejki. Jeśli Process zwraca Null, nic nie jest zapisywane do kolejki.
Czy można używać kontekstu do przekazywania danych między komponentami lub funkcjami?
Czym jest race condition i jakie są sposoby ochrony przed nią?
Jak działa wyszukiwanie binarne na posortowanej liście?
Jak używać select do pracy z wieloma kanałami jednocześnie?
Jaka jest różnica między gorutyną a wątkiem systemu operacyjnego?
Co jeszcze, oprócz mutexa, można użyć do ochrony przed warunkami wyścigu?
Czym są sondy (probes) w Kubernetes, jak je skonfigurować i jakie są ich rodzaje?
Czym jest pamięć wirtualna (swap), kiedy jest potrzebna i kiedy należy ją wyłączyć?
/* Dany ciąg zawierający znaki (){}. Należy określić, czy wejściowy ciąg jest zrównoważony pod względem nawiasów. */ func isBalanced(s string) bool { // TODO: zaimplementuj to return false } fmt.Println(isBalanced("()")) // -> true fmt.Println(isBalanced("({()})")) // -> true fmt.Println(isBalanced("(()")) // -> false fmt.Println(isBalanced("(()))")) // -> false fmt.Println(isBalanced("({})")) // -> false
Jak interfejsy w Go pozwalają na implementację polimorfizmu bez jawnego wskazywania dziedziczenia?
Opowiedz więcej o projektach na Go
Jak rośnie pojemność slice'a podczas rozszerzania?
Jakie projekty prowadzisz, jakie są Twoje zadania na wysokim poziomie?
Czym jest kanał w Go i jakie są jego główne obszary zastosowania?
Co powinna zwracać funkcja isBalanced dla pustego ciągu?
Jak działa dwufazowe zatwierdzanie (2PC)?
Czym jest wskaźnik i ile zajmuje pamięci?