问题 |
答案 |
Rodzaje błędów i wyjątków 开始学习
|
|
syntax, logic, runtime, linkowania, semantyczne
|
|
|
paradygmat projektowania obiektowego 开始学习
|
|
polimorfizm, abstrakcja, hermetyzacja, dziedziczenie
|
|
|
|
开始学习
|
|
kreacyjne, strukturalne(łączenie), behawiorystyczne(komunikacja)
|
|
|
Metoda Wytwórcza (Factory Method) 开始学习
|
|
Definiuje interfejs do tworzenia obiektu, ale pozwala klasom pochodnym zdecydować, jakiej klasy instancję utworzyć
|
|
|
|
开始学习
|
|
Gwarantuje, że klasa ma tylko jedną instancję i zapewnia globalny punkt dostępu do niej. Zastosowanie: Logger
|
|
|
|
开始学习
|
|
Pozwala na współpracę klasom o niekompatybilnych interfejsach. Działa jak "przejściówka" elektryczna
|
|
|
|
开始学习
|
|
Pozwala dynamicznie (w trakcie działania programu) dodawać nowe obowiązki/funkcje do obiektu. Jest alternatywą dla dziedziczenia
|
|
|
|
开始学习
|
|
Definiuje zależność "jeden do wielu", tak że zmiana stanu jednego obiektu powoduje automatyczne powiadomienie i odświeżenie innych obiektów.
|
|
|
|
开始学习
|
|
Single Responsibility Principle, Klasa powinna mieć tylko jedno zadanie i być odpowiedzialna za jedną część logiki biznesowej.
|
|
|
|
开始学习
|
|
Open/clsd - Kod powinien być otwarty na rozszerzenia, co oznacza, że można dodawać nowe funkcjonalności bez modyfikacji istniejących klas
|
|
|
|
开始学习
|
|
Liskov Substitution Principle, Klasa pochodna powinna w pełni zastępować klasę bazową bez zmieniania jej zachowania.
|
|
|
|
开始学习
|
|
Interface Segregation Principle, Interfejsy powinny być małe i wyspecjalizowane, aby klasy implementowały tylko metody, których rzeczywiście potrzebują.
|
|
|
|
开始学习
|
|
Dependency Inversion Principle
|
|
|
Rodzaje i przykłady optymalizacji 开始学习
|
|
Optymalizacja przez kompilator, Optymalizacja w kodzie, Optymalizacja sprzętowa, Loop Unrolling (Rozwijanie pętli
|
|
|
Główne techniki optymalizacji 开始学习
|
|
Inlining (Wstawianie funkcji w miejscu wywołania), Dead Code Elimination, RVO (Return Value Optimization):
|
|
|
|
开始学习
|
|
Rezerwuje blok pamięci o podanym rozmiarze w bajtach, Zwraca: void* (wskaźnik beztypowy). Trzeba go rzutować (castować) na właściwy typ,śmieci, Błąd: Jeśli brakuje RAMu, zwraca NULL//free usuwa dane z pamięci
|
|
|
|
开始学习
|
|
Alokuje pamięć na stercie (jak malloc), Wywołuje konstruktor obiektu, Zwraca wskaźnik właściwego typu, Wywołuje destruktor, Zwalnia pamięć operacyjną.
|
|
|
Rodzaje argumentów w python 开始学习
|
|
Pozycyjne (Positional): Standardowe, liczy się kolejność, Nazwane (Keyword): klucz=wartość. Kolejność nie ma znaczenia, Domyślne (Default): def func(a=10). Jeśli nie podasz, użyje 10
|
|
|
|
开始学习
|
|
(funkcja, kolekcja): Wykonuje funkcję na każdym elemencie. Uwaga: W Pythonie 3 zwraca iterator (leniwy), a nie listę. Aby zobaczyć wynik, trzeba rzutować: list(map(...)).
|
|
|
|
开始学习
|
|
Zwraca tylko te elementy, dla których funkcja zwróciła True
|
|
|
reduce(funkcja, kolekcja) 开始学习
|
|
"Zwija" listę do jednej wartości (np. suma, iloczyn). W Pythonie 3 przeniesione do modułu functools.
|
|
|
|
开始学习
|
|
cpp: klasy abstakcyjne, brak dużego interfejsu, polimorfizm. Python: DuckTyping, ISP dla czytelności, dekoratory
|
|
|
Metody specjalne w python 开始学习
|
|
umożliwiają obiektom integrację z wbdwn mechanizmami języka. Dzięki nim programi może zdefić, jak własne klasy mają reagować na stnrd operacje, takie jak inicjal, konwersja na tekst czy użycie operatorów matemt, co jest mechaniz realiz przecią operatorów
|
|
|
|
开始学习
|
|
To najczęściej używana metoda. Odpowiada za ustawienie początkowego stanu obiektu., po wywołaniu obiekt już istnieje i jest wypełniany danymi
|
|
|
|
开始学习
|
|
zmienia obiekt na napis ma być czytelna dla użytkownika
|
|
|
|
开始学习
|
|
zmeinia obiekt na napis jest wywoływany w debuggerze i ma być jednoznaczny dla programisty np(klient(id=5, imie='Jan'))
|
|
|
Operatory arytmetyczne (__add__, __sub__ 开始学习
|
|
Definiują w jaki sposób obiekty danej klasy są dodawane, odejmowane
|
|
|
|
开始学习
|
|
obiekt może działać jak lista
|
|
|
|
开始学习
|
|
Do operacji na liczbach rzeczywistych (float), math. pi, math. e, math. inf, sin, cos, sqrt
|
|
|
|
开始学习
|
|
wydajnego przetwarzania kolekcji. product() – Iloczyn kartezjański. Zastępuje zagnieżdżone pętle for, permutations() – Wszystkie możliwe ustawienia elementów, cycle()
|
|
|
|
开始学习
|
|
programowanie funkcyjne, reduce() "Zwijanie" listy do jednej wartości, partial() "Zamrażanie" argumentów. Tworzysz funkcję, ma już wypełnione niektóre parametry starej funkcji, lru_cache() Dekorator, który automatycznie dodaje pamięć podręczną do funkcji
|
|
|
|
开始学习
|
|
collections to moduł Pythona z zaawansowanymi kontenerami danych. Najważniejsze: namedtuple (krotki z nazwanymi polami), deque (szybka kolejka dwustronna), Counter (zliczanie elementów) oraz defaultdict (słownik z domyślną wartością klucza).
|
|
|
|
开始学习
|
|
Jest to klasa (zdefiniowana w nagłówku <thread>), będąca obiektowym wrapperem na identyfikator wątku systemowego
|
|
|
|
开始学习
|
|
stan nieokreślony występujący, gdy co najmniej dwa wątki uzyskują dostęp do tego samego obszaru pamięci jednocześnie, przy czym: Przynajmniej jeden z nich wykonuje operację zapisu. Dostęp nie jest synchronizowany brak operacji atomowych lub blokad
|
|
|
|
开始学习
|
|
fragment kodu, w którym następuje dostęp do zasobu współdzielonego. Wymaga ona serializacji dostępu – w danej chwili instrukcje z tego bloku mogą być wykonywane tylko przez jeden wątek
|
|
|
|
开始学习
|
|
to mechanizm synchronizacji wątków w C++. Działa jak blokada: tylko jeden wątek może naraz uzyskać dostęp do sekcji krytycznej. Zapobiega to wyścigom (race conditions). Najbezpieczniej używać go z std: lock_guard
|
|
|