Algorytmy analizy numerycznych Flashcards

(9 cards)

1
Q

Arytmetyka zmiennopozycyjna, rodzaje błędów i ich oszacowania. Reguła Kahana.
Uwarunkowanie zadania. Algorytmy numerycznie poprawne, algorytmy stabilne.

A

> Arytmetyka zmiennopozycyjna jest metodą obliczania matematycznego, która pozwala na przechowywanie i przetwarzanie liczb zmiennoprzecinkowych z uwzględnieniem błędów reprezentacji. Pozwala to na oszacowanie błędu obliczeń, co jest szczególnie ważne w naukach ścisłych i inżynierii.Istnieją dwa rodzaje błędów w arytmetyce zmiennopozycyjnej: błąd związany z reprezentacją liczby (np. błąd zaokrąglenia) i błąd związany z obliczeniami (np. błąd przyrostowy).Oszacowanie błędów może być wykonane na kilka sposobów. Jednym z najprostszych jest przyjęcie, że błąd jest równy maksymalnemu błędowi reprezentacji liczby. Innym podejściem jest wykorzystanie analizy numerycznej, która pozwala na oszacowanie błędu przyrostowego.Istnieją również różne metody oszacowania błędów, takie jak analiza złożoności obliczeniowej, analiza błędów numerycznych, czy też analiza wariancji.Reguła Kahana to metoda numeryczna pozwalająca na obliczanie pochodnych różnych stopni. Jest to jedna z metod pochodzenia numerycznego. Reguła Kahana polega na wykorzystaniu różnych różnic centralnych dla różnych wartości punktu centralnego. Dzięki temu, pochodna jest obliczana z większą dokładnością niż w przypadku metod pochodzenia numerycznego, takich jak na przykład reguła centralna czy też reguła prostokątna.Uwarunkowanie zadania to pojęcie związane z analizą numeryczną. Oznacza ono, jak bardzo małe zmiany w danych wejściowych wpływają na zmiany w wyniku obliczeń. Im mniejsze uwarunkowanie, tym lepiej, ponieważ oznacza to, że małe zmiany w danych wejściowych nie powodują dużych zmian w wyniku. Algorytmy o małym uwarunkowaniu są bardziej stabilne numerycznie i dają bardziej dokładne wyniki niż te o dużym uwarunkowaniu.Algorytmy numerycznie poprawne to algorytmy, które dają poprawne wyniki dla danych wejściowych, niezależnie od ich skali i precyzji reprezentacji liczb zmiennoprzecinkowych. Są one zaprojektowane tak, aby minimalizować błędy numeryczne, takie jak błąd przyrostowy czy też błąd reprezentacji liczby.Algorytmy stabilne to algorytmy, które dają dobre wyniki dla danych wejściowych, niezależnie od ich skali. Są one zaprojektowane tak, aby minimalizować błędy numeryczne, takie jak błąd przyrostowy czy też błąd reprezentacji liczby. Algorytmy stabilne są często używane w naukach ścisłych i inżynierii, gdzie precyzja obliczeń jest niezbędna.Algorytmy numerycznie poprawne i stabilne są często używane razem, aby zapewnić jak największą dokładność i stabilność obliczeń.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Schemat Hornera. Interpolacja wielomianowa. Wzór iteracyjny Neville’a.

A

> Schemat Hornera to metoda rozwiązywania wielomianów, polegająca na zapisaniu wielomianu w postaci iloczynu (x - r) i nieznanego wielomianu niższego stopnia, gdzie r to jeden z pierwiastków wielomianu. Metoda ta pozwala na znaczne skrócenie obliczeń, gdy rozwiązujemy wielomian za pomocą metody różniczkowe

Pozwala na:
>
> - dzielenie wielomianów przez dwumian x-a
> - sprawdzenie czy dana liczba jest pierwiastkiem wielomianu
> - obliczanie wartości wielomianu dla pewnego argumentu
>
> Interpolacja wielomianowa to metoda pozwalająca na znalezienie wielomianu o danym stopniu, który przechodzi przez dane punkty. Jest to ważna metoda w interpolasji, która pozwala na przybliżenie jakiejś funkcji, na podstawie kilku jej wartości. Wielomian interpolacyjny jest takim wielomianem, który jest dopasowany do danych punktów, co oznacza, że przechodzi przez każdy z nich. W metodzie tej używa się różnych algorytmów, takich jak metoda najmniejszych kwadratów, metoda Lagrange’a czy też metoda Newtona.
>
> Wzór iteracyjny Neville’a, zwany również schematem Neville’a, to metoda pozwalająca na obliczenie wartości wielomianu interpolacyjnego w danym punkcie. Jest to iteracyjna metoda, która polega na stopniowym zwiększaniu stopnia wielomianu interpolacyjnego poprzez dodawanie kolejnych punktów. Wzór ten jest szczególnie przydatny do obliczania wartości wielomianu interpolacyjnego w punkcie, w którym nie znajduje się żaden z punktów interpolacji. Wzór Neville’a jest zwykle używany jako alternatywa dla metody Lagrange’a, ponieważ jest bardziej efektywny obliczeniowo w przypadku dużej liczby punktów interpolacji.
>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Funkcje sklejane. Wielomiany ortogonalne.

A

> Funkcje sklejane lub inaczej splajny są jedną z metod interpolacyjnych. Definiujemy je jako wielomiany osobno dla każdego odcinka pomiędzy sąsiednimi wezłami interpolacyjnymi. Każdy lokalny wielomian jest tak dobrany, aby – oprócz warunków interpolacji – spełniać warunki sklejenia w taki sposób, aby cały splajn był funkcją o odpowiedniej regularności.Wielomiany ortogonalne to wielomiany, które spełniają warunek ortogonalności w danej przestrzeni funkcyjnej. W szczególności, wielomiany te spełniają warunek:
∫abw(x) dx = 0
gdzie a i b są wielomianami ortogonalnymi, w(x) jest wagą, a przedział całkowania jest określony.Wielomiany ortogonalne są ważne w teorii aproksymacji, ponieważ pozwalają na reprezentowanie funkcji w przestrzeni wielomianów przy zachowaniu minimalnej ilości składowych. Wiele metod aproksymacji opartych jest na wielomianach ortogonalnych, takich jak metoda Galerkina czy też metoda collocation. Wiele też jest rodzajów wielomianów ortogonalnych, takich jak wielomiany Legendre’a, wielomiany Chebysheva czy wielomiany Hermite’a.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Aproksymacja średniokwadratowa, aproksymacja jednostajna, metoda najmniejszych
kwadratów. Układy Czebyszewa.

A

Aproksymacja średniokwadratowa jest metodą polegającą na znajdowaniu takiej funkcji, która minimalizuje sumę kwadratów odległości między punktami danych a funkcją aproksymującą. Jest to jedna z najważniejszych metod aproksymacji.

Aproksymacja jednostajna polega na znajdowaniu takiej funkcji, która minimalizuje maksymalną odległość między punktami danych a funkcją aproksymującą.

Metoda najmniejszych kwadratów jest metodą aproksymacji, która polega na znajdowaniu takiej funkcji, która minimalizuje sumę kwadratów błędów między punktami danych a funkcją aproksymującą. Jest to najważniejsza metoda aproksymacji dla układów liniowych.

Układy Czebyszewa to rodzaj układów równań, których rozwiązania służą do aproksymacji danych. Układy te zawierają wiele równań, które trzeba rozwiązać jednocześnie. Rozwiązanie tych układów jest trudniejsze niż rozwiązanie układów liniowych, ale daje lepsze wyniki aproksymacji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Całkowanie numeryczne. Kwadratury interpolacyjne. Kwadratury Newtona-Cotesa.
Kwadratury Gaussa.

A

Całkowanie numeryczne to metoda pozwalająca na obliczenie wartości całki z funkcji, która nie jest analitycznie podająca. Jest to ważne zwłaszcza w przypadku funkcji, których całki nie da się obliczyć analitycznie lub obliczanie ich jest trudne.

Kwadratury interpolacyjne to metoda całkowania numerycznego polegająca na interpolacji funkcji przy pomocy wielomianu wybranego typu, a następnie obliczenie całki z tego wielomianu.

Kwadratury Newtona-Cotesa to metoda całkowania numerycznego polegająca na podzieleniu przedziału całkowania na kilka małych odcinków, a następnie obliczenie wartości całki dla każdego z tych odcinków przy pomocy wybranego wzoru (np. trapezów, prostokątów).

Kwadratury Gaussa to metoda całkowania numerycznego polegająca na podzieleniu przedziału całkowania na kilka małych odcinków, a następnie obliczenie wartości całki dla każdego z tych odcinków przy pomocy punktów Gaussa. Są to specjalne punkty, które zapewniają dokładność całkowania w wysokim stopniu, ale trudniejsze w implementacji niż wzory Newtona-Cotesa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Metody rozwiązywania układów równań liniowych. Metoda ortogonalizacji
Householdera

A

Istnieje wiele metod rozwiązywania układów równań liniowych, w tym:

  1. Metoda eliminacji Gaussa: polega na eliminowaniu zmiennych z jednego równania do kolejnego, aż do uzyskania układu równań trójkątnego, który jest łatwy do rozwiązania.
  2. Metoda eliminacji Gaussa-Jordan: jest to rozszerzenie metody eliminacji Gaussa, która pozwala na wyznaczenie macierzy odwrotnej.
  3. Metoda LU: polega na rozkładzie macierzy na iloczyn macierzy trójkątnej L i macierzy trójkątnej U, co ułatwia rozwiązanie układu równań.
  4. Metoda QR: polega na rozkładzie macierzy na iloczyn macierzy ortogonalnej Q i macierzy trójkątnej R.
  5. Metoda ortogonalizacji Gram-Schmidt: polega na tworzeniu ortogonalnej bazy wektora w przestrzeni wektorów, co pozwala na rozwiązanie układu równań.
  6. Metoda ortogonalizacji Householdera: polega na zamianie macierzy na trójkątną za pomocą operacji ortogonalnych i jest często używana do obliczania wartości własnych macierzy.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Metody rozwiązywania równań nieliniowych i ich układów. Wielowymiarowa metoda
Newtona. Zbieżność metod iteracyjnych.

A

> Istnieje wiele metod rozwiązywania równań nieliniowych i ich układów.

  • Wielowymiarowa metoda Newtona polega na znalezieniu przybliżenia rozwiązania za pomocą pochodnych funkcji i iteracyjnego poprawiania przybliżenia.
  • Metody iteracyjne, takie jak metoda Jacobiego i Gaussa-Seidla, polegają na ciągłym rozwiązywaniu układów równań dla coraz lepszych przybliżeń rozwiązania. Zbieżność tych metod zależy od wyboru początkowego przybliżenia oraz własności macierzy układu równań.
  • Inne metody rozwiązywania równań nieliniowych i ich układów to m.in. metoda stycznych, metoda secant, metoda regula falsi, metoda Newton-Raphsona.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Numeryczne rozwiązywanie równań różniczkowych zwyczajnych. Metoda Eulera.
Metoda Runge’go-Kutty.

A

Numeryczne rozwiązywanie równań różniczkowych zwyczajnych (ODEs) polega na znalezieniu przybliżonej wartości rozwiązania dla danego problemu ODE. Dwie popularne metody tego typu to metoda Eulera i metoda Runge-Kutty.

Metoda Eulera jest prostą metodą numeryczną, która polega na podziale przedziału czasowego na kroki i przybliżeniu rozwiązania w każdym kroku.

Metoda Runge-Kutty jest bardziej zaawansowana i polega na wykorzystaniu kilku przybliżeń rozwiązania w każdym kroku, co zwiększa dokładność metody.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Wartości własne i wektory własne macierze.

A

> Wartości własne (eigenvalues) i wektory własne (eigenvectors) to pojęcia związane z macierzami. Wartości własne to skalary, które spełniają równanie: Ax = λx, gdzie A jest macierzą, x jest wektorem własnym, a λ jest wartością własną. Wektory własne są to wektory, które po mnożeniu przez macierz A dają wektor tylko zwiększony lub zmniejszony o określoną wartość skalarną (wartość własna)

Wartości własne i wektory własne macierzy są często używane w różnych dziedzinach matematyki i nauk przyrodniczych, takich jak fizyka, chemia czy inżynieria. Przykładowo, w fizyce wartości własne macierzy są używane do opisu stanów własnych systemów fizycznych, natomiast wektory własne są używane do opisu eigenvectors.
>
- Programowanie obiektowe w Java
1. Wprowadzenie do języka Java: cechy języka, środowiska programistyczne, rodzaje
programów i struktura programu, porównanie z innymi językami, modularyzacja,
zarządzanie zależnościami, kontrola wersji.

    > **Java** jest obiektowym, wieloplatformowym językiem programowania, który został opracowany przez firmę Sun Microsystems (obecnie Oracle). Jego główne cechy to: niezależność od systemu operacyjnego, automatyczne zarządzanie pamięcią, silne typowanie danych, duża biblioteka standardowa.
    
    Środowiskiem programistycznym dla Javy jest Eclipse, NetBeans, IntelliJ IDEA.
    
    Java jest używana do tworzenia różnego rodzaju programów, w tym aplikacji klienckich, aplikacji serwerowych, aplikacji mobilnych, aplikacji webowych i gier.
    
    Struktura programu w Javie składa się z klas i metod. Klasa zawiera zmienne i metody, a metody zawierają kod, który jest wykonywany.
    
    Java jest porównywalna do innych języków obiektowych, takich jak C++, C# i Python.
    
    Modularyzacja w Javie jest realizowana przez użycie pakietów i interfejsów. Zarządzanie zależnościami jest realizowane przez narzędzia takie jak Maven lub Gradle.
    
    Kontrola wersji w Javie jest realizowana przez narzędzia takie jak Git, SVN i Mercurial.
    > 
2. **Podstawy programowania: składnia języka, instrukcje, typy danych, operatory,
tablice, funkcje matematyczne, praca z łańcuchami znaków.**
    
    > Składnia języka Java jest podobna do innych języków programowania, zawiera instrukcje, zmienne, operatory, funkcje i klasy.
    
    Instrukcje w Javie są zakończone średnikiem i mogą obejmować polecenia warunkowe (if, switch) oraz pętle (for, while, do-while).
    
    Java posiada różne typy danych, w tym typy podstawowe (int, double, boolean) oraz typy obiektowe (String, ArrayList).
    
    Operatory w Javie obejmują operatory arytmetyczne (+, -, *, /), operatory porównania (==, !=, >, <) i operatory logiczne (&&, ||).
    
    Tablice w Javie są typami danych pozwalającymi na przechowywanie wielu elementów o tej samej wartości.
    
    Funkcje matematyczne w Javie są dostępne w klasie Math i obejmują podstawowe funkcje, takie jak pierwiastek kwadratowy, potęga i trigonometryczne.
    
    Praca z łańcuchami znaków w Javie obejmuje różne metody, takie jak konkatenacja, podział i wyszukiwanie podłańcucha. Klasa String posiada wiele metod ułatwiających pracę z łańcuchami znaków.
    > 
3. **Programowanie obiektowe: klasy i tworzenie obiektów, konstruktory, przeciążanie i
przesłanianie metod, specyfikatory dostępu, kompozycja i dziedziczenie, składowe
statyczne, klasy abstrakcyjne i wewnętrzne, interfejsy, finalizacja.**
    
    > **Programowanie obiektowe w Javie** polega na tworzeniu klas, które opisują obiekty i ich zachowanie. Klasa jest szablonem, z którego tworzone są obiekty, zawierająca zmienne i metody.
    > 
    > 
    > **Konstruktory** są specjalnymi metodami, które służą do tworzenia nowych obiektów.
    > 
    > **Przeciążanie metod** polega na tworzeniu metod o tej samej nazwie, ale z różnym zestawem argumentów. Przesłanianie metod polega na nadpisaniu metody klasy pochodnej.
    > 
    > **Specyfikatory dostępu** (public, private, protected) pozwalają na kontrolowanie dostępu do zmiennych i metod klasy.
    > 
    > **Kompozycja** polega na tworzeniu obiektów z innych obiektów, natomiast dziedziczenie pozwala na tworzenie nowych klas na podstawie już istniejących.
    > 
    > **Składowe statyczne** są częścią klasy, a nie jej obiektu i służą do przechowywania informacji, które są wspólne dla wszystkich obiektów danej klasy.
    > 
    > **Klasy abstrakcyjne** są klasami, które nie mogą być bezpośrednio tworzone jako obiekty. 
    > 
    > **Wewnętrzne klasy** to klasy, które znajdują się wewnątrz innych klas.
    > 
    > **Interfejsy** to specyfikacje, które określają jakie metody powinna posiadać klasa.
    > 
    > **Finalizacja** jest procesem, który polega na sprzątaniu obiektu po jego zakończeniu.
    > 
    > [data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e](data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e)
    > 
4. **Podstawy programowania funkcyjnego, parametryzacja typów, kolekcje obiektów,
przetwarzanie strumieniowe i wzorce projektowe.**
    
    > **Programowanie funkcyjne w Javie** polega na korzystaniu z funkcji jako wartości, czyli przekazywaniu ich jako argumentów do innych funkcji, a także zwracaniu funkcji jako wyniku innych funkcji.
    
    **Parametryzacja** **typów** polega na określeniu typów danych, które mogą być przekazywane do klasy lub metody.
    
    Java posiada różne **kolekcje obiektów**, takie jak ArrayList, LinkedList, HashSet, które pozwalają na przechowywanie i manipulowanie danymi.
    
    **Przetwarzanie strumieniowe** polega na operowaniu na strumieniach danych, takich jak pliki lub kolekcje, za pomocą operacji takich jak filtrowanie, mapowanie i grupowanie.
    
    **Wzorce projektowe** to gotowe rozwiązania problemów programistycznych, które pomagają w projektowaniu i implementacji aplikacji. Popularne wzorce projektowe w Javie to Singleton, Factory, Adapter, Observer.
    > 
5. **Graficzny interfejs użytkownika: tworzenie kontenerów i komponentów, zarządzanie
układem komponentów, obsługa zdarzeń.**
    
    > **Tworzenie graficznego interfejsu użytkownika** (GUI) w Javie polega na korzystaniu z biblioteki standardowej AWT lub biblioteki Swing.
    
    **Kontenery** to komponenty, które pozwalają na umieszczanie innych komponentów, takie jak Frame, Panel, Dialog.
    
    **Komponenty** to elementy interfejsu użytkownika, takie jak przyciski, pola tekstowe, listy.
    
    **Zarządzanie układem komponentów** polega na umieszczaniu komponentów w kontenerach i określaniu ich położenia i rozmiaru.
    
    **Obsługa zdarzeń** polega na reagowaniu na akcje użytkownika, takie jak kliknięcie przycisku, zmiana zawartości pola tekstowego. W tym celu należy zastosować mechanizm zdarzeń i listenerów.
    > 
6. **Obsługa wyjątków i logowanie pracy aplikacji.**
    
    > **Obsługa wyjątków w Javie** polega na przechwytywaniu i obsłudze błędów, które mogą wystąpić podczas działania aplikacji. Java posiada wbudowany system wyjątków, w którym wyjątki są reprezentowane przez klasy dziedziczące po klasie Exception.
    
    Programista może również tworzyć własne klasy wyjątków, by móc obsłużyć specyficzne dla aplikacji sytuacje.
    
    Obsługa wyjątków polega na umieszczeniu kodu, który może generować wyjątek, w bloku try, a następnie opisaniu w jakiej sytuacji powinien zostać rzucony w bloku catch.
    
    **Logowanie pracy** aplikacji polega na rejestrowaniu informacji o działaniu aplikacji, takich jak błędy, ostrzeżenia, informacje diagnostyczne. Logowanie może być realizowane przy użyciu różnych bibliotek, takich jak log4j, java.util.logging.
    > 
7. **Obsługa systemu wejścia/wyjścia, praca ze strumieniami, zbiorami danych i plikami.**
    
    > **Obsługa systemu wejścia/wyjścia** w Javie polega na korzystaniu z klas z biblioteki standardowej java.io, które pozwalają na odczyt i zapis danych z różnych źródeł, takich jak pliki, strumienie wejściowe/wyjściowe, sieci.
    
    **Praca ze strumieniami** polega na odczytywaniu lub zapisywaniu danych za pośrednictwem strumieni, takich jak InputStream i OutputStream.
    
    **Zbiory danych** to kolekcje danych, które pozwalają na przechowywanie i manipulowanie danymi, takie jak ArrayList, LinkedList, HashSet.
    
    **Praca z plikami** polega na tworzeniu, odczytywaniu i zapisywaniu plików na dysku twardym, korzystając z klas File, FileReader i FileWriter.
    > 
8. **Przetwarzanie rozproszone: programowanie sieciowe, usługi sieciowe.**
    
    > **Przetwarzanie rozproszone w Javie** polega na tworzeniu aplikacji, które działają na wielu komputerach równocześnie.
    
    **Programowanie sieciowe** polega na tworzeniu aplikacji, które wykorzystują połączenia sieciowe do komunikacji między różnymi komputerami. Klasy w bibliotece standardowej Java.net pozwalają na tworzenie socketów, protokołów komunikacji, a także klient-serwer.
    
    **Usługi sieciowe** polegają na udostępnianiu różnych funkcjonalności za pośrednictwem sieci. Usługi sieciowe w Javie mogą być oparte na protokole HTTP (np. REST, SOAP) i mogą być implementowane za pomocą różnych bibliotek, takich jak Spring, Apache CXF.
    > 
9. **Wielowątkowość języka Java: tworzenie, zarządzanie i synchronizacja wątków.**
    
    > **Wielowątkowość** w Javie polega na tworzeniu i działaniu wielu wątków jednocześnie.
    
    **Tworzenie wątków** w Javie może być realizowane przez dziedziczenie po klasie Thread lub poprzez implementację interfejsu Runnable.
    
    **Zarządzanie wątkami** polega na uruchamianiu, kończeniu i przerywaniu wątków oraz na ustawianiu priorytetów wątków.
    
    **Synchronizacja wątków** polega na zabezpieczaniu dostępu do zasobów współdzielonych przez różne wątki, tak aby uniknąć problemów związanych z nieprawidłowym dostępem do tych zasobów. Java posiada mechanizmy synchronizacji, takie jak synchronized, wait() i notify() oraz klasy Lock i Atomic, które pozwalają na synchronizację wątków.
    > 
10. **Trwałe przechowywanie danych, bazy danych i ORM.**
    
    > **Trwałe przechowywanie danych** polega na zapisywaniu danych poza pamięcią operacyjną, tak aby pozostawały one dostępne po zamknięciu aplikacji. W Javie, dane mogą być zapisywane na dysku twardym za pomocą klas z biblioteki java.io, takich jak FileReader i FileWriter, lub w bazach danych.
    
    **Bazy danych** to systemy przechowywania danych, które pozwalają na składowanie, przechowywanie i udostępnianie danych. W Javie, popularne systemy baz danych to MySQL, PostgreSQL, Oracle.
    
    **ORM** (Object-Relational Mapping) to technologia pozwalająca na mapowanie obiektów na relacyjne tabele baz danych oraz na odwrotne mapowanie tabel na obiekty. W Javie, popularne biblioteki ORM to Hibernate, EclipseLink, JPA (Java Persistence API).
    > 
11. **Podstawy bezpieczeństwa w aplikacjach Java.**
    
    > **Podstawy bezpieczeństwa w aplikacjach** Java polegają na zabezpieczaniu aplikacji przed różnego rodzaju atakami, takimi jak:
    > 
    > - **Iniekcja SQL**: zabezpieczanie przed wstrzyknięciem kodu SQL do aplikacji poprzez filtrowanie danych wejściowych lub użycie mechanizmów takich jak PreparedStatements
    > - **Iniekcja kodu**: zabezpieczanie przed wstrzyknięciem kodu do aplikacji poprzez filtrowanie danych wejściowych oraz użycie mechanizmów takich jak SecurityManager
    > - **Ataki typu XSS** (Cross-Site Scripting): zabezpieczanie przed atakami polegającymi na wstrzyknięciu skryptów do stron internetowych poprzez filtrowanie danych wejściowych
    > - **Ataki typu CSRF** (Cross-Site Request Forgery): zabezpieczanie przed atakami polegającymi na wykorzystaniu ciasteczek uwierzytelniających poprzez użycie tokenów lub odpowiedniego ustawienia flagi Secure w ciasteczku
    > - **Ataki na pliki:** zabezpieczanie przed atakami polegającymi na dostępie do plików poprzez
How well did you know this?
1
Not at all
2
3
4
5
Perfectly