click below
click below
Normal Size Small Size show me how
veebirakendused test
kui vigane let me know
| Term | Definition |
|---|---|
| Internet layer (IPv4, IPv6) | Tegeleb routinguga ehk andmete suunamisega võrkude vahel. IP header sisaldab source ja destination IP-aadressi. |
| TCP (Transport layer) | Usaldusväärne, kuid aeglasem. Kasutatakse siis, kui andmed peavad kindlasti õigesti kohale jõudma (veebilehed, failid). |
| UDP (Transport layer) | Kiire, kuid ebausaldusväärne. Kasutatakse siis, kui kiirus on tähtsam kui täiuslikkus (mängud, voogedastus). |
| Portide vahemikud | 0–1023: well-known/privileged ports (vajavad admin-õigusi), 1024–49151: registered ports, 49152–65535: dynamic/ephemeral ports |
| HTTP vs HTTPS | HTTP - reeglite kogum kliendi ja serveri suhtluseks. HTTPS - krüpteeritud HTTP (kasutades TLS/SSL). Vaikeportid: HTTP 80, HTTPS 443. |
| HTTP protokolli omadus | Stateless protokoll (iga päring on eraldi). Suhtleb päringu-vastuse mustri kaudu: Klient saadab päringu → Server saadab vastuse. |
| Spring Boot | Raamistik, mis lihtsustab Java Spring rakenduste loomist ja käivitamist, pakkudes automaatseid seadistusi ja valmis vaikekonfiguratsioone. |
| Auto-configuration | Spring Boot seadistab vajalikud komponendid automaatselt vastavalt sellele, millised sõltuvused projektis olemas on. |
| Starter dependencies | Eelkokkupandud sõltuvuste paketid, mis tagavad omavahel sobivad versioonid ja võimaldavad kiiresti alustada. |
| JAR (Java Archive) | Tavaline Java rakenduse pakendamisviis. Sisaldab kõiki klassifaile ja ressursse. Saab otse käivitada käsuga java -jar. |
| WAR (Web Application Resource) | Veebirakenduse pakett, mida kasutatakse rakenduse paigaldamiseks välisesse serverisse (nt Tomcat). |
| Maven | Build automation tool, mis kasutab XML-faili (pom.xml). Haldab automaatselt projekti sõltuvusi. |
| Gradle | Build automation tool, mis kasutab skriptifaili (build.gradle). Paindlikum ja kiirem kui Maven. |
| REST | Arhitektuuri printsiipide kogum, mis ütleb, kuidas veebirakendused peaksid omavahel suhtlema. Idee on hoida API lihtne, ühtne ja skaleeruv. |
| REST põhiprintsiibid | Client/Server, Stateless, Cache, Uniform Interface, Layered System, Code on Demand |
| REST Resource | Suvaline andmeüksus, millele saad nime anda (näited: User, Book, Order). Resource'id on nimisõnad, mitte tegevused. Igal resource'il peab olema unikaalne URL. |
| REST URL reegel - nimisõnad | Kasuta alati mitmuse kujul nimisõnu. /users → kasutajate kogu, /users/123 → üks konkreetne kasutaja |
| REST URL reegel - verbid | URL-is ei tohi olla verbe. Vale: /getUsers, /createUser. Õige: GET /users, POST /users, DELETE /users/123 |
| HTTP meetodid | GET (Read, No body), POST (Create, Yes body), PUT (Update/Replace, Yes body), PATCH (Update/Modify, Yes body), DELETE (Delete, No body) |
| HTTP Response Codes 2xx | 200 OK (Success), 201 Created (New resource created - POST), 204 No content (Often used with DELETE) |
| HTTP Response Codes 4xx | 400 Bad Request (Client sent invalid data), 401 Unauthorized (Not logged in), 403 Forbidden (No rights to access), 404 Not Found (No resource on that url) |
| HTTP Response Codes 5xx | 500 Internal Server Error (Bug in backend code) |
| URL komponendid | Protocol (http/https), Host (domeeninimi), Port (80 HTTP, 443 HTTPS), Path (tee serveri sees), Query (algab ?, key=value paarid) |
| Path vs Query | Path määrab mis resource tahetakse. Query määrab kuidas või milliselt sa seda küsid (tingimused/filtrid). |
| @RequestParam | Abil saab lugeda query parameetrite URL-i lõpuosast (need, mis tulevad pärast ?). Query parameetrid ei ole osa path'ist. |
| JSON (JavaScript Object Notation) | Formaati kasutatakse andmete saatmiseks programmide vahel. Objektid { }, massiivid [ ], key:value paarid. Lubatud tüübid: string, number, object, array, true, false, null |
| DTO (Data Transfer Object) | Klass, mida kasutatakse andmete edastamiseks kliendi ja serveri vahel. Sisaldab ainult välju ja gettereid/settereid. DTO ei tohi sisaldada äriloogikat. |
| DTO kasutamise põhjused | Kaitse (ei tagasta tervet entity objekti), Selge API struktuur, Hõlpsam valida millised väljad on nähtavad |
| @RequestBody | Ütleb Springile, et loeks HTTP päringu body JSON-ist ja teisendaks selle automaatselt Java objektiks. Sisendiks kasutatakse tavaliselt DTO-d. |
| Docker | Tööriist, mis paneb rakenduse koos kogu vajaliku keskkonnaga ühte isoleeritud konteinerisse, et see töötaks igal pool ühtemoodi. |
| Docker Image | Mall, mille põhjal konteiner luuakse. Sisaldab rakenduse koodi, teeke ja keskkonna seadistusi. |
| Docker Container | Image'i põhjal käivitatud töötav instants. On isoleeritud teistest konteineritest ja host-süsteemist. |
| Database | Struktureeritud koht andmete salvestamiseks ja haldamiseks, kus rakendused saavad andmeid lugeda, lisada, muuta ja kustutada tõhusalt. |
| SQL vs ORM | SQL - arendaja kirjutab ise päringuid (SELECT, INSERT, UPDATE, DELETE). ORM - arendaja töötab objektidega ja ORM genereerib SQL-i automaatselt. |
| Table | Andmete hoidmise viis andmebaasis, mis näeb välja nagu Exceli tabel. Rida = üks kirje, Veerg = üks omadus, Primaarvõti identifitseerib iga rea unikaalselt. |
| JPA (Java Persistence API) | "Reeglite raamat", mis määrab, kuidas Java objektid andmebaasi salvestatakse. See on liidesed ja reeglid, mitte päris kood. |
| Hibernate | Populaarne ORM raamistik, mis kasutab JPA reegleid. Genereerib SQL-päringud, salvestab ja loeb Java objekte andmebaasist. |
| 3-kihiline arhitektuur | Controller → Service → Repository → andmebaas. Igal kihil on oma vastutus. |
| Controller kiht | Võtab vastu HTTP päringud, loeb sisendi, teeb lihtsa valideerimise ja kutsub edasi Service'i. Ei sisalda äriloogikat. |
| Service kiht | Asub rakenduse äriloogika. Siin otsustatakse, kuidas süsteem tegelikult käitub. Võib kasutada mitut repository't, kuid ei suhtle otse kliendiga. |
| Repository kiht | Tegeleb ainult andmebaasiga suhtlemisega. Salvestab, loeb, muudab ja kustutab andmeid. Ei tea midagi HTTP-st ega äriloogikast. |
| Entity | Klass, mis vastab andmebaasi tabelile. Iga entity väli vastab ühele tabeli veerule. Entity ei ole mõeldud otse API-sse saatmiseks. |
| Mapper | Abikiht, mis teisendab andmeid erinevate klasside vahel (entity → DTO, DTO → entity). Parandab turvalisust ja hoiab arhitektuuri puhtana. |
| Lombok | Java teek, mis genereerib automaatselt korduvat koodi nagu getterid, setterid, konstruktorid, equals, hashCode, toString. |
| @Data annotatsioon | Genereerib korraga getterid, setterid, toString, equals, hashCode ning konstruktori vajalike väljadega. |
| Lomboki konstruktorid | @NoArgsConstructor (ilma parameetriteta), @AllArgsConstructor (kõigi väljadega), @RequiredArgsConstructor (ainult final või @NonNull väljadele) |
| Liquibase | Tööriist andmebaasi muudatuste haldamiseks. Jälgib tehtud muudatusi, rakendab neid automaatselt, hoiab kõik keskkonnad samas seisus. |
| Changeset | Üks konkreetne andmebaasi muudatus Liquibase'is. Sisaldab id'd, autorit ja muudatusi. |
| Frontend | Rakenduse osa, mida kasutaja näeb ja millega ta brauseris suhtleb. Hõlmab kasutajaliidest, stiile, animatsioone ja loogikat. |
| JavaScript | Veebi peamine programmeerimiskeel, mida kasutatakse veebilehtede käitumise ja loogika lisamiseks. |
| HTML | HyperText Markup Language - märgistuskeel veebilehe sisu struktureerimiseks. |
| CSS | Cascading Style Sheets - stiilikeel HTML elementide välimuse määramiseks (värvid, fondid, paigutus, vahed, animatsioonid). |
| CORS | Cross-Origin Resource Sharing - brauseri turvamehhanism, mis lubab või keelab kas üks veebileht tohib teise serveriga suhelda. |
| Proxy | Vahepealne server või mehhanism, mis toimib vahendajana frontendi ja backendi vahel. Kasutatakse CORS-i probleemide vältimiseks. |
| Component | Taaskasutatav kasutajaliidese osa, mis sisaldab HTML-i, CSS-i ja loogikat koos. Kasutatakse Angularis, Reactis ja Vue's. |
| Router | Juhib navigeerimist veebirakenduses. Vahetab lehti või komponente vastavalt URL-ile. |
| Logger | Tööriist rakenduse töö ajal sõnumite salvestamiseks. Aitab näha mis rakenduse sees toimub ja millal vead tekivad. |
| Logimise tasemed | TRACE (väga detailne), DEBUG (vigade leidmine), INFO (normaalne töövoog), WARN (ootamatu, aga töötab), ERROR (tõsine probleem), FATAL (väga raske viga) |
| Exception | Esindab probleeme, mis võivad tekkida programmi tavapärase töö käigus. Võib olla kontrollitav või mittekontrollitav. |
| RuntimeException | Exception'i alamtüüp, mis tekib käivitamise ajal ja ei vaja kohustuslikku käsitlemist. Põhjustatud programmeerimisvigadest. |
| Error | Väga tõsised probleemid, millest rakendus ei saa taastuda (OutOfMemoryError, StackOverflowError). Neid ei ole mõeldud püüdmiseks. |
| Checked vs Unchecked Exceptions | Checked - peavad olema try/catch või throws (IOException, SQLException). Unchecked - ei pea deklareerima, RuntimeException alamklassid (NullPointerException). |
| try/catch/finally | try - koodiblokk kus võib tekkida erand. catch - käsitleb erandi. finally - käivitatakse alati, kasutatakse ressursside sulgemiseks. |
| Custom Application Exception | Arendaja loodud erandiklass, mis laiendab Exception või RuntimeException'i. Kasutatakse domeenispetsiifiliste vigade jaoks. |
| Global Exception Handler | Mehhanism, mis püüab kinni KÕIK vead kogu rakenduses ühest kohast. |
| JPA EAGER vs LAZY | EAGER - seotud andmed tuuakse kohe (ettearvamatu ja kallis). LAZY - seotud andmed tuuakse alles kasutamisel (parem kontroll). |
| JPA vaikimisi seaded | @OneToOne EAGER, @ManyToOne EAGER, @OneToMany LAZY, @ManyToMany LAZY |
| N+1 päringu probleem | Tekib kui laaditakse objektide nimekiri (1 päring) ja seejärel tehakse iga objekti seotud andmete jaoks eraldi päring (N päringut). Kokku 1+N päringut. |
| ACID | Atomicity (kõik või mitte midagi), Consistency (kehtiv olek), Isolation (tehingud ei sega üksteist), Durability (andmed säilivad) |
| @Transactional | Märgib meetodi nii, et kõik andmebaasi operatsioonid toimuvad ühe tehingu sees. Õnnestub → commit, Ebaõnnestub → rollback |
| Commit vs Rollback | Commit - salvestab muudatused püsivalt. Rollback - tühistab tehingu jooksul tehtud muudatused. |
| Tehingu levik (Propagation) | REQUIRED (vaikimisi - liitub või loob uue), REQUIRES_NEW (loob alati uue), NESTED (alatehingud), NOT_SUPPORTED (ilma tehinguta) |
| JPA entity olekud | New/Transient (pole andmebaasis, JPA ei jälgi), Managed/Persistent (JPA jälgib, automaatne salvestamine), Detached (oli managed, aga ei ole enam), Removed (märgitud kustutamiseks) |
| Dirty Checking | Hibernate tuvastab managed olekus entiteetide muudatused automaatselt ja salvestab need commit'i ajal. Pole vaja käsitsi save() kutsuda. |
| JPA Cascade tüübid | ALL (kõik tegevused), PERSIST (lapsed salvestatakse), MERGE (lapsed uuendatakse), REMOVE (lapsed kustutatakse), REFRESH, DETACH |
| Transactional self-invocation | Probleem tekib kui sama klassi meetod kutsub teist sama klassi meetodit. Ei minda proxy kaudu ja tehing ei käivitu. |
| Spring Scheduling | Võimaldab käivitada meetodeid automaatselt kindla ajakava alusel. @EnableScheduling ja @Scheduled annotatsioonid. |
| Magic Method Names | Spring Data oskab meetodi nime järgi ise andmebaasipäringu teha. findByTitle, findByAuthorAndPrice jne. |
| Specifications | Viis ehitada andmebaasipäringuid tükkidest, mida saab kombineerida. Kasutatakse dünaamiliste filtrite jaoks. (root, query, cb) lambda. |
| Bean validation | Kontrollida andmeid enne töötlemist. Kasutatakse DTO-de puhul. @NotBlank, @NotNull, @Size, @Pattern, @Email, @Min, @Max |
| OpenAPI | Standard REST API-de kirjeldamiseks ja dokumenteerimiseks. Dokumentatsioon tekib automaatselt, API-d saab testida Swagger UI kaudu. |
| Spring Profiles | Võimaldavad kasutada erinevaid seadistusi eri keskkondades (dev, test, prod). Hoiab saladused Gitist eemal. |
| Unit Test | Testib ühte klassi eraldi, ei kasuta andmebaasi, väga kiire. Kontrollib äriloogika korrektsust. |
| Integration Test | Kontrollib kuidas erinevad rakenduse osad koos töötavad. Käivitab kogu süsteemi, kasutab päris andmebaasi, aeglasem. |
| Mockito | Testimisraamistik võltsobjektide loomiseks. @Mock, @Spy annotatsioonid. Given/When/Then struktuur. |
| Paroolide hashimine | Parooli ei salvestata algsel kujul. Tehakse hash - ühesuunaline teisendus. Algset parooli ei saa hash'ist tagasi arvutada. |
| Password salting | Paroolile lisatakse enne räsimist juhuslik väärtus Salt. Tagab et sama parooli puhul on hash'id erinevad. |
| Password pepper | Lisasaladus Pepper, mida ei salvestata andmebaasi. Talletatud rakenduse konfiguratsioonis. Kui andmebaas lekib, ei saa ründaja paroole kontrollida. |
| BCrypt | Paroolide räsialgoritm, teadlikult aeglane, sisaldab automaatselt salt'i. Teeb brute-force rünnakud väga aeglaseks. |
| Spring Security | Springi raamistik autentimise ja autoriseerimisega. Kaitseb API endpoint'e, kontrollib kasutaja õigusi. |
| JWT (JSON Web Token) | Olekuta, lühiajaline token juurdepääsu tõendamiseks. Koosneb: Header (algoritm), Payload (andmed), Signature (kontrollib terviklikkust). |
| Kaitstud endpoint'id | API aadressid, kuhu pääsemiseks peab kasutaja olema autentitud ja omama kindlat rolli. Token saadetakse Authorization: Bearer päises. |
| Local Storage | Brauseri salvestusruum JWT tokeni jaoks. JavaScript pääseb sellele ligi, seega XSS rünnaku korral ohtlik. |
| SonarQube | Tööriist koodi automaatseks analüüsimiseks. Otsib vigu, turvaauke ja koodikvaliteedi probleeme. |
| SSH võtmed | Krüptograafiline võtmepaar serveritesse turvaliseks sisselogimiseks ilma paroolita. Public key serveris, Private key arvutis. |
| Dockerfile vs docker-compose | Dockerfile - kuidas ehitada üks image (retsept). docker-compose.yml - kuidas mitu konteinerit koos käivitada (orkestreerimine). |
| Docker Hub | Veebipõhine koht Docker image'de hoidmiseks ja jagamiseks. Töötab sarnaselt GitHubile. |
| CI/CD | Continuous Integration ja Continuous Deployment. Automatiseerib koodi ehitamise, testimise ja juurutamise. |
| CI (Continuous Integration) | Iga kord kui arendaja lisab koodi, kontrollib süsteem selle automaatselt üle. Build, testid, kontroll. |
| CD (Continuous Deployment) | Kui kood on CI kontrollid läbinud, pannakse automaatselt serverisse tööle. Kiire ja kindel väljastamine. |
| CI/CD etapid | Build (kompileerimine), Test (testid), Package/Dockerize (JAR/image loomine), Deploy (paigaldamine), Verify (kiirtestid) |
| NGINX | Serveriprogramm, mis võtab vastu HTTP päringuid ja otsustab kuhu need edasi saata. Reverse proxy. |
| Proxy vs Reverse Proxy | Proxy kaitseb ja esindab klienti. Reverse proxy kaitseb ja esindab serverit. |
| Polling | Klient küsib serverilt infot regulaarsete ajavahemike järel. Ebaefektiivne, palju tühje vastuseid. |
| Long polling | Klient saadab päringu ja server hoiab ühendust avatuna kuni uued andmed tekivad. Parem kui tavaline polling. |
| WebSocket | Loob kliendi ja serveri vahele püsiva kahesuunalise ühenduse. Mõlemad saavad igal ajal sõnumeid saata. Sobib reaalajas rakendustele. |
| Server-Sent Events (SSE) | Klient hoiab serveriga ühenduse avatuna ja ainult server saadab sündmusi kliendile. Ühesuunaline suhtlus. |
| Filtreerimine URL-is | Piirab tulemusi kindlate tingimustega. ?status=active&role=admin |
| Sortimine URL-is | Määrab mis järjekorras tulemused tagastatakse. ?sort=-created_at |
| Otsing URL-is | Vabateksti otsing. ?q=term |
| Bean Scopes | Singleton (üks instants), Prototype (uus instants iga päringu korral), Request (üks HTTP päringu kohta), Session (üks sessiooni kohta) |
| Inversion of Control (IoC) | Arendaja ei loo objekte ise, vaid raamistik teeb seda ja süstib sõltuvused automaatselt. |
| Dependency Injection | Klass ei loo ise oma sõltuvusi, vaid need antakse talle väljastpoolt. Konstruktorisüstimine (parim), väljasüstimine, @Bean meetodid. |
| Preflight (OPTIONS) | Brauseri tehtav OPTIONS-päring, kus küsitakse serverilt kas soovitud päring on lubatud. Vajalik POST/PUT/DELETE JSON-iga. |
| SQL Injection | Pahatahtlik SQL lisatakse kasutaja sisendi kaudu päringusse. Lahendus: prepared statements või ORM. |
| XSS (Cross-Site Scripting) | Pahatahtlik JavaScript süstitakse ja käivitatakse teiste kasutajate brauseris. Lahendus: väljundi escapemine, sisendi puhastamine, CSP päised. |
| IDOR | Insecure Direct Object Reference - ründaja muudab URL-is ID-sid ja pääseb ligi andmetele mis talle ei kuulu. Lahendus: kontrolli kasutaja õigusi. |
| Mass Assignment | Klient saab JSON-i kaudu muuta välju mida ta ei tohiks (rollid, saldo). Lahendus: kasuta DTO-sid ja mappimist. |
| Access Token | Lühiajaline token (JWT), server ei salvesta, kasutatakse igal päringul, ei saa tagasi kutsuda (v.a blacklist). |
| Refresh Token | Pikaajaline token, salvestatakse andmebaasi, kasutatakse uue access token'i saamiseks, saab tagasi kutsuda. |
| Session ID | Serveripoolse sessiooni identifikaator. Salvestatud mällu/Redis'esse/andmebaasi. Server kontrollib seda igal päringul. |
| Cookies | Väikesed andmetükid, saadetakse automaatselt iga päringuga. HttpOnly (kaitseb XSS-i eest), Secure (ainult HTTPS). |
| LocalStorage vs Cookies | LocalStorage - brauseripoolne key-value ruum, JavaScript pääseb ligi, XSS ohtlik. Cookies - saadetakse automaatselt, HttpOnly flag turvalisem. |
| Bean'i loomine viisid | 1) XML konfiguratsioon (vana), 2) Java konfiguratsioon (@Bean), 3) Spring annotatsioonid (@Component, @Service, @Repository, @Controller) |