{"id":2308,"date":"2026-05-29T21:47:53","date_gmt":"2026-05-29T21:47:53","guid":{"rendered":"https:\/\/vkrastev1blog.com\/?p=2308"},"modified":"2026-05-29T21:48:41","modified_gmt":"2026-05-29T21:48:41","slug":"questions-and-informations-prepairing-for-java-developer-job-interview","status":"publish","type":"post","link":"https:\/\/vkrastev1blog.com\/2026\/05\/29\/questions-and-informations-prepairing-for-java-developer-job-interview\/","title":{"rendered":"Jaut\u0101jumi un inform\u0101cija, gatavojoties Java Developer darba intervijai"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Kas ir SOLID principi?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir vienotas atbild\u012bbas princips (SRP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klasei j\u0101b\u016bt tikai vienai atbild\u012bbai.<br>Tam vajadz\u0113tu b\u016bt tikai vienam iemeslam main\u012bties.<br>Ieguvumi ietver viegl\u0101ku test\u0113\u0161anu, zem\u0101ku savienojumu un lab\u0101ku organiz\u0101ciju.<br>Piem\u0113rs:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska klase gr\u0101mata {<br>priv\u0101ts String nosaukums;<br>priv\u0101ts St\u012bgu autors;<br>priv\u0101ts String teksts;<br>\/\/ konstruktori, ieguv\u0113ji un iestat\u012bt\u0101ji<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir atv\u0113rtais-sl\u0113gtais princips (OCP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Programmat\u016bras ent\u012btij\u0101m (klas\u0113m, modu\u013ciem, funkcij\u0101m) j\u0101b\u016bt atv\u0113rt\u0101m papla\u0161in\u0101\u0161anai, bet aizv\u0113rt\u0101m modific\u0113\u0161anai.<br>Sasniedziet to, izmantojot saskarnes, abstraktas klases un mantojumu.<br>Piem\u0113rs:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">saskarnes forma {<br>dubult\u0101 zona ();<br>}<br>klase Aplis realiz\u0113 Shape { \/* ievie\u0161anu <em>\/ } klase Taisnst\u016bris realiz\u0113 Shape { \/<\/em> ievie\u0161ana *\/ }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir Liskova aizst\u0101\u0161anas princips (LSP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Apak\u0161tipiem ir j\u0101b\u016bt aizst\u0101jamiem ar to b\u0101zes tipiem, nemainot programmas pareiz\u012bbu.<br>Seko &#8220;is-a&#8221; attiec\u012bb\u0101m.<br>Piem\u0113rs:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klase Putnu { \/* izplat\u012bta putnu uzved\u012bba <em>\/ } klase Zvirbulis pagarina Putnu { \/<\/em> \u012bpa\u0161a zvirbu\u013ca uzved\u012bba *\/ }<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir saskarnes segreg\u0101cijas princips (ISP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klientus nevajadz\u0113tu piespiest b\u016bt atkar\u012bgiem no saskarn\u0113m, kuras vi\u0146i neizmanto.<br>Sadaliet lielas saskarnes maz\u0101k\u0101s, konkr\u0113t\u0101k\u0101s.<br>Piem\u0113rs:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">interfeisa darbinieks {<br>tuk\u0161s darbs ();<br>}<br>interfeiss Eater {<br>void eat();<br>}<br>klase Robots ievie\u0161 Worker { \/* implement\u0101ciju *\/}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir atkar\u012bbas inversijas princips (DIP):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Augsta l\u012bme\u0146a modu\u013ciem nevajadz\u0113tu b\u016bt atkar\u012bgiem no zema l\u012bme\u0146a modu\u013ciem; abiem j\u0101b\u016bt atkar\u012bgiem no abstrakcij\u0101m.<br>Abstrakcijas nedr\u012bkst b\u016bt atkar\u012bgas no deta\u013c\u0101m; deta\u013c\u0101m j\u0101b\u016bt atkar\u012bg\u0101m no abstrakcij\u0101m.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Abstrakcija<br>interfeiss MessageSender {<br>void sendMessage(String message);<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Augsta l\u012bme\u0146a modulis<br>class NotificationService {<br>priv\u0101ts MessageSender messageSender;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">public NotificationService(MessageSender messageSender) {<\/div><div class=\"cm-line\">    this.messageSender = messageSender;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void send(String message) {<\/div><div class=\"cm-line\">    messageSender.sendMessage(message);<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Zema l\u012bme\u0146a modulis<br>class EmailSender ievie\u0161 MessageSender {<br>@Override<br>public void sendMessage(String message) {<br>System.out.println(&#8220;E-pasta s\u016bt\u012b\u0161ana: &#8221; + zi\u0146ojums);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ V\u0113l viens zema l\u012bme\u0146a modulis<br>class SmsSender ievie\u0161 MessageSender {<br>@Override<br>public void sendMessage(String message) {<br>System.out.println(&#8220;S\u016bta SMS: &#8221; + zi\u0146ojums);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Galven\u0101 klase<br>publiska klase Galven\u0101 {<br>public static void main(String[] args) {<br>\/\/ Izmantojiet EmailSender<br>MessageSender emailSender = new EmailSender();<br>NotificationService notificationService1 = jauns pazi\u0146ojumu pakalpojums(e-pasta s\u016bt\u012bt\u0101js);<br>NotificationService1.send(&#8220;Sveiki pa e-pastu!&#8221;);<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    \/\/ Use SmsSender\n    MessageSender smsSender = new SmsSender();\n    NotificationService notificationService2 = new NotificationService(smsSender);\n    notificationService2.send(&#034;Hello via SMS!&#034;);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MessageSender interfeiss kalpo k\u0101 abstrakcija.<br>Augsta l\u012bme\u0146a modulis NotificationService ir atkar\u012bgs no \u0161\u012bs abstrakcijas, nevis no konkr\u0113t\u0101m implement\u0101cij\u0101m.<br>Zema l\u012bme\u0146a modu\u013ci, piem\u0113ram, EmailSender un SmsSender, ar\u012b ir atkar\u012bgi no abstrakcijas, ievie\u0161ot MessageSender saskarni.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir SQL normaliz\u0101cija<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir Normaliz\u0101cija?<br>Normaliz\u0101cija ietver datu struktur\u0113\u0161anu rel\u0101ciju datu b\u0101z\u0113, lai nov\u0113rstu anom\u0101lijas, piem\u0113ram, dubl\u0113\u0161anu.<br>Tas sadala lielas, sare\u017e\u0123\u012btas tabulas maz\u0101k\u0101s, vienlaikus saglab\u0101jot datu attiec\u012bbas.<br>K\u0101p\u0113c normaliz\u0101cija ir svar\u012bga?<br>Samazina dubl\u0113\u0161anos: sadalot datus maz\u0101k\u0101s tabul\u0101s, m\u0113s izvair\u0101mies no vienas un t\u0101s pa\u0161as inform\u0101cijas glab\u0101\u0161anas vair\u0101kas reizes.<br>Uzlabo vaic\u0101juma veiktsp\u0113ju: maz\u0101kas normaliz\u0113tas tabulas nodro\u0161ina \u0101tr\u0101ku vaic\u0101jumu izpildi.<br>Samazina atjaunin\u0101\u0161anas anom\u0101lijas: atjaunin\u0101jumus var veikt, neietekm\u0113jot citus ierakstus.<br>Uzlabo datu integrit\u0101ti: nodro\u0161ina konsekventus un prec\u012bzus datus.<br>Normaliz\u0101cijas scen\u0101riji:<br>Datu integrit\u0101te: nov\u0113rsiet neatbilst\u012bbas, atjauninot datus (piem\u0113ram, klienta vecuma izmai\u0146as).<br>Efekt\u012bva vaic\u0101\u0161ana: vienk\u0101r\u0161ojiet sare\u017e\u0123\u012btus vaic\u0101jumus, sadalot datus.<br>Kr\u0101tuves optimiz\u0101cija: nov\u0113rsiet nevajadz\u012bgu dubl\u0113\u0161anu, lai ietaup\u012btu vietu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir mikropakalpojumu monol\u012bts?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir monol\u012bts?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Monol\u012bta lietojumprogramma ir veidota k\u0101 viena, vienota vien\u012bba. Tas cie\u0161i savieno visus komponentus (piem\u0113ram, klienta puses lietot\u0101ja saskarni, datu b\u0101zi un servera puses lietojumprogrammu) vien\u0101 koda b\u0101z\u0113.<br>Priek\u0161roc\u012bbas:<br>Vienk\u0101r\u0161a izvieto\u0161ana: t\u0101 k\u0101 tas ir viens izpild\u0101ms fails vai direktorijs, izvieto\u0161ana ir vienk\u0101r\u0161a.<br>Att\u012bst\u012bbas \u0101trums: projekta dz\u012bves s\u0101kum\u0101 monol\u012bti \u013cauj \u0101tri att\u012bst\u012bties to vienk\u0101r\u0161\u012bbas d\u0113\u013c.<br>Veiktsp\u0113ja: centraliz\u0113ts kods var apstr\u0101d\u0101t da\u017e\u0101das funkcijas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir mikropakalpojumi?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mikropakalpojumi sadala lietojumprogrammu maz\u0101kos, neatkar\u012bgi izvietojamos pakalpojumos. Katrs pakalpojums ir v\u0113rsts uz noteiktu uz\u0146\u0113m\u0113jdarb\u012bbas jomu.<br>Priek\u0161roc\u012bbas:<br>M\u0113rogojam\u012bba: mikropakalpojumi \u013cauj m\u0113rogot atsevi\u0161\u0137us komponentus neatkar\u012bgi.<br>Elast\u012bgums: izstr\u0101d\u0101t\u0101ji katram pakalpojumam var izv\u0113l\u0113ties da\u017e\u0101das tehnolo\u0123ijas.<br>Izol\u0101cija: k\u013c\u016bmes vien\u0101 pakalpojum\u0101 neietekm\u0113 citus.<br>Izaicin\u0101jumi:<br>Sare\u017e\u0123\u012bt\u012bba: vair\u0101ku pakalpojumu p\u0101rvald\u012bbai ir nepiecie\u0161ama sp\u0113c\u012bga or\u0137estr\u0113\u0161ana.<br>Network Overhead: sazi\u0146a starp pakalpojumiem ievie\u0161 latentumu.<br>Izvieto\u0161anas sare\u017e\u0123\u012bt\u012bba: atjaunin\u0101jumu koordin\u0113\u0161ana pakalpojumos var b\u016bt sare\u017e\u0123\u012bta.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir polimorfisms?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Metodes ignor\u0113\u0161ana:<br>Kad apak\u0161klase nodro\u0161ina \u012bpa\u0161u ievie\u0161anu metodei, kas jau ir defin\u0113ta t\u0101s virsklas\u0113.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Metodes p\u0101rslodze:<br>Ja klasei ir vair\u0101kas metodes ar t\u0101du pa\u0161u nosaukumu, bet at\u0161\u0137ir\u012bgiem parametriem (at\u0161\u0137ir\u012bgs argumentu skaits vai veidi).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ko izmanto priv\u0101tie konstruktori?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211; Priv\u0101tie konstruktori tiek izmantoti lietder\u012bbas klas\u0113s vai past\u0101v\u012bgaj\u0101s klas\u0113s.<br>\u0160\u012bs klases satur tikai statiskas metodes vai dal\u012bbniekus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Izvair\u012b\u0161an\u0101s no apak\u0161klases<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Konstruktora deleg\u0101cija:<br>Priv\u0101tie konstruktori pie\u013cauj konstruktoru dele\u0123\u0113\u0161anu, kur konkr\u0113ti konstruktori izsauc kop\u012bgu priv\u0101to konstruktoru.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Singleton Pattern<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par JVM<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Kompil\u0101cija:<br>Kad kompil\u0113jat .java failu, Java kompilators \u0123ener\u0113 .class failus, kas satur baitkodu (starpposma att\u0113lojums).<br>Bytecode ir no platformas neatkar\u012bgs un var darboties jebkur\u0101 sist\u0113m\u0101 ar sader\u012bgu JVM.<br>&#8211;Klases iekr\u0101v\u0113ju apak\u0161sist\u0113ma:<br>Atbild\u012bgs par nodarb\u012bbu iel\u0101di atmi\u0146\u0101.<br>Lasa .class failus, \u0123ener\u0113 bin\u0101ros datus un saglab\u0101 tos metodes apgabal\u0101.<br>Izveido klases objektu, kas att\u0113lo iel\u0101d\u0113to klasi kaudzes atmi\u0146\u0101.<br>Piem\u0113rs: Students s1 = new Student(); Klase c1 = s1.getClass();<br>&#8212; Saist\u012b\u0161ana:<br>Sast\u0101v no trim so\u013ciem:<br>Verifik\u0101cija: nodro\u0161ina .class faila pareiz\u012bbu.<br>Sagatavo\u0161ana: pie\u0161\u0137ir atmi\u0146u klases main\u012bgajiem lielumiem un inicializ\u0113 tos.<br>Iz\u0161\u0137irtsp\u0113ja (neoblig\u0101ti): atrisina simboliskas atsauces uz cit\u0101m klas\u0113m vai metod\u0113m.<br>&#8211;Inicializ\u0101cija:<br>Izpilda statiskos inicializatorus (piem., statiskos blokus) un inicializ\u0113 statiskos main\u012bgos.<br>Gad\u012bjumu main\u012bgie tiek inicializ\u0113ti, kad tiek izveidots objekts.<br>&#8211;Izpildes dzin\u0113js:<br>P\u0101rv\u0113r\u0161 baitkodu ma\u0161\u012bnkod\u0101.<br>Ietver Just-In-Time (JIT) kompil\u0101ciju veiktsp\u0113jas optimiz\u0113\u0161anai.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211; Rezum\u0113jot, JVM \u013cauj Java programm\u0101m darboties jebkur\u0101 viet\u0101, interpret\u0113jot baitu kodu un p\u0101rvaldot atmi\u0146u<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir Privat abstrakt\u0101 metode?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Izmantojiet priv\u0101to meto\u017eu izmanto\u0161anas gad\u012bjumus abstrakt\u0101s nodarb\u012bb\u0101s:<br>Lai gan abstrakt\u0101s metodes nevar b\u016bt priv\u0101tas, varat izmantot priv\u0101t\u0101s metodes abstrakt\u0101 klas\u0113 da\u017e\u0101diem m\u0113r\u0137iem:<br>&#8212; Pal\u012bdz\u012bbas metodes: ieviesiet kop\u012bgu funkcionalit\u0101ti, ko izmanto citas metodes.<br>&#8212; Iekapsul\u0113\u0161ana: pasl\u0113piet ievie\u0161anas inform\u0101ciju no apak\u0161klas\u0113m.<br>&#8212;\u00a0Strukt\u016brai l\u012bdz\u012bgas klases: izveidojiet nelielas klases ar priv\u0101t\u0101m metod\u0113m, kas kalpo k\u0101 datu konteineri<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir atkritumu sav\u0101c\u0113js?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Kaudzes atmi\u0146a:<br>Java objekti tiek izveidoti kaudz\u0113, speci\u0101l\u0101 atmi\u0146as apgabal\u0101.<br>Da\u017ei objekti k\u013c\u016bst nesasniedzami (programma vairs neatsaucas uz tiem).<br>&#8211;Atkritumu sav\u0101c\u0113js (GC):<br>GC identific\u0113 un dz\u0113\u0161 neizmantotos objektus, lai atbr\u012bvotu atmi\u0146u.<br>Tas darbojas autom\u0101tiski fon\u0101.<br>Divi veidi:<br>Neliela GC: no\u0146em neaizsniedzamus objektus jaunaj\u0101 paaudz\u0113.<br>Galven\u0101 GC (Full GC): not\u012bra vec\u0101s paaudzes objektus.<br>&#8212; Ieguvumi:<br>Izstr\u0101d\u0101t\u0101jiem objekti nav skaidri j\u0101dz\u0113\u0161.<br>GC nodro\u0161ina atmi\u0146as pieejam\u012bbu un nov\u0113r\u0161 OutOfMemoryErrors<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir OOP?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u010cetri OOP principi:<br>&#8212; Iekapsul\u0113\u0161ana: datu (atrib\u016btu) un meto\u017eu (funkciju) apvieno\u0161ana klas\u0113, lai pasl\u0113ptu ievie\u0161anas inform\u0101ciju un nodro\u0161in\u0101tu t\u012bru saskarni.<br>&#8211; Mantojums: jaunu kla\u0161u izveide, pamatojoties uz eso\u0161aj\u0101m klas\u0113m, to atrib\u016btu un uzved\u012bbas p\u0101rmanto\u0161ana. Tas veicina koda atk\u0101rtotu izmanto\u0161anu.<br>&#8212; Polimorfisms: \u013cauj vien\u0101di apstr\u0101d\u0101t da\u017e\u0101du kla\u0161u objektus, izmantojot kop\u012bgu saskarni. Tas nodro\u0161ina elast\u012bbu un papla\u0161in\u0101m\u012bbu.<br>&#8212; Abstrakcija: koncentr\u0113\u0161an\u0101s uz b\u016btisk\u0101m iez\u012bm\u0113m, vienlaikus sl\u0113pjot nevajadz\u012bgas sare\u017e\u0123\u012bt\u012bbas. Abstrakcija vienk\u0101r\u0161o dizainu un padara to viegl\u0101k p\u0101rvald\u0101mu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir ACID \u012bpa\u0161\u012bbas, ir iz\u0161\u0137iro\u0161a noz\u012bme dar\u012bjumu uzticam\u012bbas un konsekvences nodro\u0161in\u0101\u0161an\u0101.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Atomiskums:<br>Dar\u012bjumi tiek izpild\u012bti piln\u012bb\u0101 vai netiek izpild\u012bti visp\u0101r.<br>Nav da\u013c\u0113jas izpildes: ja dar\u012bjums neizdodas pusce\u013c\u0101, visas datu b\u0101z\u0113 veikt\u0101s izmai\u0146as tiek atceltas.<br>Piem\u0113rs. Apsveriet iesp\u0113ju p\u0101rskait\u012bt 100\u00a0ASV\u00a0dol\u0101rus no konta\u00a0X uz kontu\u00a0Y. Ja dar\u012bjums neizdodas p\u0113c atskait\u012b\u0161anas no\u00a0X, bet pirms pievieno\u0161anas Y, datu b\u0101ze paliek nemain\u012bga.<br>&#8212; Konsekvence:<br>Datub\u0101zei ir j\u0101saglab\u0101 integrit\u0101tes ierobe\u017eojumi pirms un p\u0113c dar\u012bjuma.<br>Piem\u0113rs: ja kop\u0113j\u0101 summa pirms dar\u012bjuma ir 700\u00a0ASV\u00a0dol\u0101ri (X: 500\u00a0ASV\u00a0dol\u0101ri, Y: 200\u00a0ASV\u00a0dol\u0101ri), tai ir j\u0101paliek nemain\u012bgai p\u0113c dar\u012bjuma (X: 400\u00a0ASV\u00a0dol\u0101ri, Y: 300\u00a0ASV\u00a0dol\u0101ri).<br>&#8211;Izol\u0101cija:<br>Vienlaic\u012bgi var notikt vair\u0101ki dar\u012bjumi, viens otru neietekm\u0113jot.<br>Viena dar\u012bjuma veikt\u0101s izmai\u0146as nav redzamas citiem, kam\u0113r t\u0101s nav veiktas.<br>Nodro\u0161ina l\u012bdzv\u0113rt\u012bgus rezult\u0101tus t\u0101, it k\u0101 dar\u012bjumi tiktu veikti s\u0113rijveid\u0101.<br>Piem\u0113rs: transakciju izol\u0113\u0161ana nov\u0113r\u0161 nekonsekvenci, ko izraisa savstarp\u0113ji saist\u012btas darb\u012bbas.<br>&#8212; Iztur\u012bba:<br>Kad dar\u012bjums ir nosl\u0113gts, t\u0101 izmai\u0146as ir past\u0101v\u012bgas.<br>Izdz\u012bvo sist\u0113mas k\u013c\u016bmes vai av\u0101rijas.<br>Nodro\u0161ina datu notur\u012bbu.<br>Piem\u0113rs. Pat p\u0113c sist\u0113mas restart\u0113\u0161anas veikt\u0101s izmai\u0146as paliek neskartas.<br>Atcerieties, ka ACID \u012bpa\u0161\u012bbas nodro\u0161ina pamatu uzticam\u0101m un konsekvent\u0101m datu b\u0101zes darb\u012bb\u0101m! \ud83c\udf1f<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir strat\u0113\u0123ijas modelis?<br>Apraksts: defin\u0113 algoritmu saimi, iekapsul\u0113 katru no tiem un padara tos savstarp\u0113ji aizst\u0101jamus. Tas \u013cauj algoritmam at\u0161\u0137irties neatkar\u012bgi no klientiem, kas tos izmanto.<br>Piem\u0113rs:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Interfeiss \u0113\u0161anas uzved\u012bbai<br>interfeiss EatBehavior {<br>void eat();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Konkr\u0113ti \u0113\u0161anas uzved\u012bbas varianti<br>klase NormalDiet ievie\u0161 EatBehavior {<br>@Override<br>public void eat() {<br>\/\/ Norm\u0101ls \u0113diens<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klase LosingWeightDiet ievie\u0161 EatBehavior {<br>@Override<br>public void eat() {<br>\/\/ Vesel\u012bgs \u0113diens<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Ka\u0137u klase ar \u0113\u0161anas uzved\u012bbu<br>abstrakt\u0101 klase ka\u0137is {<br>EatBehavior eatBehavior;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">public void eat() {<\/div><div class=\"cm-line\">    eatBehavior.eat();<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void setEatBehavior(EatBehavior eatBehavior) {<\/div><div class=\"cm-line\"> this.eatBehavior = eatBehavior;<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Lieto\u0161ana<br>Ka\u0137is ka\u0137is = jauns Ka\u0137is();<br>cat.setEatBehavior(new LosingWeightDiet());<br>ka\u0137is.\u0113st(); \/\/ Ka\u0137is \u0113d ar vesel\u012bg\u0101ku uzturu<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rad\u012b\u0161anas mode\u013ci:<br>\u0160ie mode\u013ci koncentr\u0113jas uz klases instanti\u0101ciju.<br>Iek\u013cauti piem\u0113ri<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; r\u016bpn\u012bcas metode,<br>Probl\u0113mas pazi\u0146ojums: pie\u0146emsim, ka m\u0113s v\u0113lamies izveidot da\u017e\u0101da veida produktus (piem., automa\u0161\u012bnas, velosip\u0113dus, velosip\u0113dus), cie\u0161i nesaistot m\u016bsu kodu ar konkr\u0113t\u0101m implement\u0101cij\u0101m.<br>Galven\u0101s sast\u0101vda\u013cas:<br>Produkts: abstrakta klase vai interfeiss, kas nosaka kop\u012bgas darb\u012bbas objektiem, kurus r\u016bpn\u012bca izveidos.<br>Betona izstr\u0101d\u0101jumi: faktisk\u0101s klases, kas ievie\u0161 produkta saskarni un p\u0101rst\u0101v noteiktus objektu veidus.<br>Rad\u012bt\u0101js: abstrakta klase vai saskarne, kas deklar\u0113 r\u016bpn\u012bcas metodi. Tas ir atbild\u012bgs par produktu objektu izveidi, bet dele\u0123\u0113 faktisko izveidi apak\u0161klas\u0113m.<br>Konkr\u0113ti veidot\u0101ji: Rad\u012bt\u0101ja apak\u0161klases, kas ievie\u0161 r\u016bpn\u012bcas metodi. Vi\u0146i izlemj, kuru konkr\u0113tu betona izstr\u0101d\u0101jumu izveidot, pamatojoties uz ievades parametriem vai konfigur\u0101ciju.<br>R\u016bpn\u012bcas metode: Metode, kas defin\u0113ta klas\u0113 Creator, kas veido produktu objektus. Tas parasti tiek pasludin\u0101ts k\u0101 abstrakts sada\u013c\u0101 Rad\u012bt\u0101js un ieviests konkr\u0113taj\u0101 veidol\u0101.<br>Piem\u0113rs Java valod\u0101: pie\u0146emsim, ka mums ir r\u016bpn\u012bca, kas ra\u017eo da\u017e\u0101da veida transportl\u012bdzek\u013cus. \u0160eit ir vienk\u0101r\u0161ots piem\u0113rs:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ AbstractProduct<br>saskarne Produkts {<br>void display();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Betona izstr\u0101d\u0101jumi<br>klases Auto agreg\u0101ti Produkts {<br>public void display() {<br>System.out.println(&#8220;Automa\u0161\u012bna izveidota&#8221;);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">klase Velosip\u0113du piederumi Produkts {<br>public void display() {<br>System.out.println(&#8220;Velosip\u0113ds izveidots&#8221;);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Rad\u012bt\u0101js (r\u016bpn\u012bca)<br>interfeiss r\u016bpn\u012bcas {<br>Produkta r\u016bpn\u012bcaMetode();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Betona veidot\u0101ji<br>class ConcreteFactoryA ievie\u0161 Factory {<br>public Produktu r\u016bpn\u012bcaMethod() {<br>atgriezt jaunu Auto();<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">class ConcreteFactoryB ievie\u0161 Factory {<br>public Produktu r\u016bpn\u012bcaMethod() {<br>atgriezt jaunu Velosip\u0113du();<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class FactoryMethodExample {<br>public static void main(String[] args) {<br>R\u016bpn\u012bcas r\u016bpn\u012bcaA = jauns ConcreteFactoryA();<br>Produkta produktsA = r\u016bpn\u012bcaA.r\u016bpn\u012bcas metode();<br>produktsA.displejs();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    Factory factoryB = new ConcreteFactoryB();\n    Product productB = factoryB.factoryMethod();\n    productB.display();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Celtnieks<br>Builder Pattern ir rado\u0161s dizaina modelis, kas \u013cauj soli pa solim konstru\u0113t sare\u017e\u0123\u012btus objektus,<br>atdalot to konstrukciju no to att\u0113lojuma. \u0160eit ir vienk\u0101r\u0161s Java piem\u0113rs:<br>\/\/ Defin\u0113jiet klasi, kuru v\u0113laties izveidot<br>klases zi\u0146a {<br>priv\u0101ts gala String nosaukums;<br>priv\u0101ts gala String teksts;<br>priv\u0101t\u0101 gala St\u012bgu kategorija;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">Post(Builder builder) {<\/div><div class=\"cm-line\">    this.title = builder.title;<\/div><div class=\"cm-line\">    this.text = builder.text;<\/div><div class=\"cm-line\">    this.category = builder.category;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">\/\/ Getters for properties<\/div><div class=\"cm-line\">public String getTitle() {<\/div><div class=\"cm-line\">    return title;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public String getText() {<\/div><div class=\"cm-line\">    return text;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public String getCategory() {<\/div><div class=\"cm-line\">    return category;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">\/\/ Builder class<\/div><div class=\"cm-line\">public static class Builder {<\/div><div class=\"cm-line\">    private String title;<\/div><div class=\"cm-line\">    private String text;<\/div><div class=\"cm-line\">    private String category;<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public Builder title(String title) {<\/div><div class=\"cm-line\">        this.title = title;<\/div><div class=\"cm-line\">        return this;<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public Builder text(String text) {<\/div><div class=\"cm-line\">        this.text = text;<\/div><div class=\"cm-line\">        return this;<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public Builder category(String category) {<\/div><div class=\"cm-line\">        this.category = category;<\/div><div class=\"cm-line\">        return this;<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public Post build() {<\/div><div class=\"cm-line\">        return new Post(this);<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Lieto\u0161ana<br>publiska klase Galven\u0101 {<br>public static void main(String[] args) {<br>Izlikt zi\u0146u = jauns Post.Builder()<br>.title(&#8220;Java Builder Pattern&#8221;)<br>.text(&#8220;Paskaidrojums, k\u0101 ieviest Builder Pattern Java&#8221;)<br>.category(&#8220;Dizaina mode\u013ci&#8221;)<br>.build();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    System.out.println(&#034;Title: &#034; + post.getTitle());\n    System.out.println(&#034;Text: &#034; + post.getText());\n    System.out.println(&#034;Category: &#034; + post.getCategory());\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211;Prototips<br>Prototipa modelis ir rado\u0161s dizaina modelis, kas \u013cauj izveidot jaunus objektus, kop\u0113jot eso\u0161u objektu.<br>T\u0101 viet\u0101, lai izveidotu jaunus gad\u012bjumus no jauna, j\u016bs klon\u0113jat eso\u0161u prototipu, kas var b\u016bt efekt\u012bv\u0101ks un elast\u012bg\u0101ks. Iedzi\u013cin\u0101simies Java piem\u0113r\u0101:<br>Defin\u0113jiet prototipa saskarni: Pirmk\u0101rt, m\u0113s izveidojam abstraktu klasi vai interfeisu ar nosaukumu Tree ar abstraktu metodi copy ():<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska abstrakta klase koks {<br>public abstract Tree copy();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Betona prototipi: T\u0101l\u0101k m\u0113s ievie\u0161am divas betona klases, kas papla\u0161ina koku: PlasticTree un PineTree. \u0160\u012bs klases p\u0101rst\u0101v noteiktus koku veidus un nodro\u0161ina savu copy() metodes ievie\u0161anu:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class PlasticTree papla\u0161ina koku {<br>@Override<br>publiska koka kopija() {<br>PlasticTree plasticTreeClone = new PlasticTree(this.getMass(), this.getHeight());<br>plasticTreeClone.setPosition(this.getPosition());<br>atgriezt plastmasuTreeClone;<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska klase PineTree papla\u0161ina koku {<br>@Override<br>publiska koka kopija() {<br>PineTree pineTreeClone = new PineTree(this.getMass(), this.getHeight());<br>pineTreeClone.setPosition(this.getPosition());<br>atgriezt pineTreeClone;<br>}<br>}<br>\u0160aj\u0101s nodarb\u012bb\u0101s m\u0113s piel\u0101gojam klon\u0113\u0161anas procesu, pamatojoties uz konkr\u0113to koka tipu. Piem\u0113ram, m\u0113s nokop\u0113jam s\u0101kotn\u0113j\u0101 koka masu, augstumu un poz\u012bciju.<br>Lieto\u0161ana: tagad izveidosim m\u016bsu konkr\u0113to prototipu gad\u012bjumus:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska klase Galven\u0101 {<br>public static void main(String[] args) {<br>Koka ori\u0123in\u0101lsPlasticTree = new PlasticTree(10, 5);<br>Koks klon\u0113tsPlasticTree = ori\u0123in\u0101lsPlasticTree.copy();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    Tree originalPineTree = new PineTree(15, 8);\n    Tree clonedPineTree = originalPineTree.copy();\n\n    \/\/ Use the cloned trees as needed\n    \/\/ ...\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir struktur\u0101lie mode\u013ci?<br>\u0160ie mode\u013ci attiecas uz klases strukt\u016bru un sast\u0101vu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211; Adaptera modelis<br>Adaptera modelis ir strukt\u016bras dizaina modelis, kas \u013cauj nodro\u0161in\u0101t divu nesader\u012bgu saskar\u0146u darb\u012bbu.<br>Tas darbojas k\u0101 tilts starp \u0161\u012bm saskarn\u0113m, nodro\u0161inot sadarb\u012bbu, nemainot to pirmkodu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Objekta adapteris:<br>\u0160aj\u0101 pieej\u0101 m\u0113s izmantojam kompoz\u012bciju, lai dele\u0123\u0113tu lo\u0123iku adapterim.<br>Adapteris satur Adaptee un dele\u0123\u0113 metodi request() pie adapt\u0113t\u0101ja specificRequest() metodei.<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Piel\u0101gotais (eso\u0161\u0101 klase)<br>klases adapt\u0113tais {<br>void specificedRequest() {<br>System.out.println(&#8220;Adaptata \u012bpa\u0161ais piepras\u012bjums&#8221;);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ M\u0113r\u0137a saskarne<br>saskarnes m\u0113r\u0137is {<br>neder\u012bgs piepras\u012bjums ();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Adapteris (izmantojot kompoz\u012bciju)<br>klase Adapteris ievie\u0161 Target {<br>priv\u0101ts gala Adapte adapte;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">Adapter(Adaptee adaptee) {<\/div><div class=\"cm-line\">    this.adaptee = adaptee;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">@Override<\/div><div class=\"cm-line\">public void request() {<\/div><div class=\"cm-line\">    adaptee.specificRequest();<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Klases adapteris:<br>Nepiecie\u0161ama vair\u0101kk\u0101rt\u0113ja manto\u0161ana (Java nav tie\u0161i iesp\u0113jama).<br>M\u0113s to varam sasniegt, izmantojot saskarnes ar noklus\u0113juma metod\u0113m.<br>Adapteris papla\u0161ina gan Target, gan Adaptee klases.<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ M\u0113r\u0137a saskarne<br>saskarnes m\u0113r\u0137is {<br>neder\u012bgs piepras\u012bjums ();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Piel\u0101gotais (eso\u0161\u0101 klase)<br>klases adapt\u0113tais {<br>void specificedRequest() {<br>System.out.println(&#8220;Adaptata \u012bpa\u0161ais piepras\u012bjums&#8221;);<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/\/ Adapteris (izmantojot klases mantojumu)<br>class Adapter extends Adaptee implements Target {<br>@Override<br>publisks sp\u0113k\u0101 neeso\u0161s piepras\u012bjums() {<br>nor\u0101d\u012btsPiepras\u012bjums();<br>}<br>}<br>Ieguvumi un kompromisi:<br>Klases adapteris labi darbojas viens pret vienu metodes kart\u0113\u0161anai.<br>Objekta adapteris nodro\u0161ina liel\u0101ku elast\u012bbu un nov\u0113r\u0161 koda modifik\u0101cijas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8211; Dekoratora raksts<br>Dekoratora raksts ir rado\u0161s dizaina modelis, kas \u013cauj dinamiski pievienot objektam funkcionalit\u0101ti un uzved\u012bbu bez t\u0101<br>kas ietekm\u0113 citu taj\u0101 pa\u0161\u0101 klas\u0113 eso\u0161o objektu uzved\u012bbu. Tas ir \u012bpa\u0161i noder\u012bgi, ja v\u0113laties papla\u0161in\u0101t objektu<br>sp\u0113jas, nemainot t\u0101 strukt\u016bru.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">P\u0101rskats:<br>Dekoratora raksts nodro\u0161ina uzlabotu saskarni ori\u0123in\u0101lajam objektam, iesai\u0146ojot to ar papildu funkcionalit\u0101ti.<br>M\u0113s dodam priek\u0161roku sast\u0101vam, nevis mantojumam, lai samazin\u0101tu apak\u0161klases pieskait\u0101m\u0101s izmaksas.<br>Dekoratorus var pievienot izpildes laik\u0101, nodro\u0161inot elast\u012bbu.<br>Scen\u0101rija piem\u0113rs. Pie\u0146emsim, ka mums ir Ziemassv\u0113tku egl\u012btes objekts, un m\u0113s v\u0113lamies to izrot\u0101t ar da\u017e\u0101diem priek\u0161metiem, piem\u0113ram, v\u012btnes, vizulis un burbu\u013cu gaism\u0101m. M\u0113s iev\u0113rosim s\u0101kotn\u0113j\u0101s \u010cetru bandas dizaina konvencijas:<br>\u012asteno\u0161ana:<br>Vispirms izveidojiet Ziemassv\u0113tku egl\u012btes saskarni:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska saskarne Ziemassv\u0113tku egl\u012bte {<br>St\u012bgu rot\u0101();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ieviesiet saskarni ar pamata koku:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class ChristmasTreeImpl ievie\u0161 ChristmasTree {<br>@Override<br>publiska Virkne dekor\u0113t() {<br>atgriezt &#8220;Ziemassv\u0113tku egl\u012bte&#8221;;<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">P\u0113c tam izveidojiet abstraktu TreeDecorator klasi, kas ievie\u0161 Ziemassv\u0113tku egl\u012bti un satur izrot\u0101to koku:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska abstrakta klase TreeDecorator ievie\u0161 Ziemassv\u0113tku egl\u012bti {<br>priv\u0101t\u0101 gala Ziemassv\u0113tku egl\u012bte;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">public TreeDecorator(ChristmasTree tree) {<\/div><div class=\"cm-line\">    this.tree = tree;<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">@Override<\/div><div class=\"cm-line\">public String decorate() {<\/div><div class=\"cm-line\">    return tree.decorate();<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tagad izveidojiet \u012bpa\u0161us dekoratorus. Piem\u0113ram, BubbleLights:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publisk\u0101 klase BubbleLights papla\u0161ina TreeDecorator {<br>publiskais BubbleLights (Ziemassv\u0113tku egl\u012bte) {<br>super(koks);<br>}<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">@Override<\/div><div class=\"cm-line\">public String decorate() {<\/div><div class=\"cm-line\">    return super.decorate() + &quot; with Bubble Lights&quot;;<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska klase Garlenda pagarina TreeDecorator {<br>publisk\u0101 v\u012btne (Ziemassv\u0113tku egl\u012bte) {<br>super(koks);<br>}<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">@Override<\/div><div class=\"cm-line\">public String decorate() {<\/div><div class=\"cm-line\">    return super.decorate() + &quot; with Garland&quot;;<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<br>Lieto\u0161ana:<br>Izveidojiet dekor\u0113tus kokus:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska klase DecoratorPatternDemo {<br>public static void main(String[] args) {<br>Ziemassv\u0113tku egl\u012bte1 = new Garland(new ChristmasTreeImpl());<br>System.out.println(tree1.decorate()); \/\/ Rezult\u0101ts: &#8220;Ziemassv\u0113tku egl\u012bte ar v\u012btni&#8221;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    ChristmasTree tree2 = new BubbleLights(new Garland(new Garland(new ChristmasTreeImpl())));\n    System.out.println(tree2.decorate()); \/\/ Output: &#034;Christmas tree with Garland with Garland with Bubble Lights&#034;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<br>\u0160is raksts \u013cauj pievienot dekoratorus izpildes laik\u0101, nodro\u0161inot elast\u012bbu p\u0113c nepiecie\u0161am\u012bbas.<br>Atcerieties, ka dekoratora modelis tiek pla\u0161i izmantots gad\u012bjumos, kad v\u0113laties uzlabot objekta uzved\u012bbu, nemainot t\u0101 pamatstrukt\u016bru.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Fas\u0101des raksts<br>Fas\u0101des raksts ir strukt\u016bras dizaina modelis, kas vienk\u0101r\u0161o mijiedarb\u012bbu ar sare\u017e\u0123\u012btu apak\u0161sist\u0113mu, nodro\u0161inot vienotu saskarni.<br>Tas darbojas k\u0101 &#8220;ieejas durvis&#8221;, lai pasl\u0113ptu pamat\u0101 eso\u0161o sare\u017e\u0123\u012bt\u012bbu un atvieglotu klientiem sist\u0113mas lieto\u0161anu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&#8212; Salikts<br>Composite Pattern ir struktur\u0101las konstrukcijas modelis, kas \u013cauj salikt objektus koka strukt\u016br\u0101s, lai att\u0113lotu da\u013c\u0113ju veselu hierarhiju.<br>Salikt\u0101 mode\u013ca galven\u0101 ideja ir izveidot objektu koka strukt\u016bru, kur\u0101 atsevi\u0161\u0137iem objektiem un saliktiem objektiem ir kop\u012bgs interfeiss.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pamatkomponents (noda\u013ca): m\u0113s defin\u0113sim vienk\u0101r\u0161u noda\u013cas saskarni k\u0101 m\u016bsu b\u0101zes komponentu:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publisk\u0101s saskarnes noda\u013ca {<br>void printDepartmentName();<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Lapu komponenti (finan\u0161u noda\u013ca un p\u0101rdo\u0161anas noda\u013ca): izveidosim klases finan\u0161u un p\u0101rdo\u0161anas noda\u013c\u0101m, ab\u0101s ievie\u0161ot noda\u013cas saskarni:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class Finan\u0161u departaments ievie\u0161 departamentu {<br>\/\/ Ievie\u0161anas inform\u0101cija (piem., ID, nosaukums)<br>public void printDepartmentName() {<br>System.out.println(getClass().getSimpleName());<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class P\u0101rdo\u0161anas noda\u013ca ievie\u0161 noda\u013cu {<br>\/\/ Ievie\u0161anas inform\u0101cija (piem., ID, nosaukums)<br>public void printDepartmentName() {<br>System.out.println(getClass().getSimpleName());<br>}<br>}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0160\u012bs lapu klases \u012bsteno metodi printDepartmentName() un nesatur atsauces uz citiem departamenta objektiem.<br>Salikts elements (HeadDepartment): k\u0101 saliktu klasi izveidosim HeadDepartment, kur\u0101 ir noda\u013cas komponentu kolekcija:<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">import\u0113t java.util.ArrayList;<br>import\u0113t java.util.List;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class HeadDepartment ievie\u0161 noda\u013cu {<br>priv\u0101ts vesela skait\u013ca id;<br>priv\u0101ts String nosaukums;<br>priv\u0101ts Saraksts b\u0113rnuDepartamenti;<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">public HeadDepartment(Integer id, String name) {<\/div><div class=\"cm-line\">    this.id = id;<\/div><div class=\"cm-line\">    this.name = name;<\/div><div class=\"cm-line\">    this.childDepartments = new ArrayList&lt;&gt;();<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void printDepartmentName() {<\/div><div class=\"cm-line\">    childDepartments.forEach(Department::printDepartmentName);<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void addDepartment(Department department) {<\/div><div class=\"cm-line\">    childDepartments.add(department);<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public void removeDepartment(Department department) {<\/div><div class=\"cm-line\">    childDepartments.remove(department);<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HeadDepartment klase ievie\u0161 metodi printDepartmentName() un nodro\u0161ina pak\u0101rtoto noda\u013cu pievieno\u0161anas un no\u0146em\u0161anas metodes.<br>Lieto\u0161ana: varat izveidot lapu noda\u013cu (piem., Finan\u0161u noda\u013ca, P\u0101rdo\u0161anas noda\u013ca) un saliktas noda\u013cas (piem., HeadDepartment) gad\u012bjumus. Pievienojiet lapu noda\u013cas kompoz\u012btam un izdruk\u0101jiet to nosaukumus.<br>Java<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">publiska klase Galven\u0101 {<br>public static void main(String[] args) {<br>Finan\u0161u noda\u013ca = new FinancialDepartment();<br>Noda\u013ca p\u0101rdo\u0161ana = new SalesDepartment();<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>    HeadDepartment headDepartment = new HeadDepartment(1, &#034;Company Departments&#034;);\n    headDepartment.addDepartment(finance);\n    headDepartment.addDepartment(sales);\n\n    headDepartment.printDepartmentName();\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Izvade:<br>Finan\u0161u departaments<br>P\u0101rdo\u0161anas noda\u013ca<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Composite Pattern \u013cauj izveidot elast\u012bgas koku strukt\u016bras, kur<br>atsevi\u0161\u0137us objektus un kompoz\u012bcijas (kompoz\u012btus) var apstr\u0101d\u0101t vien\u0101di.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Kas ir HASH funkcija!!!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Jauc\u0113jfunkcija ir matem\u0101tiska funkcija, kas sa\u0146em ievadi (vai &#8220;zi\u0146ojumu&#8221;) un atgrie\u017e fiks\u0113ta izm\u0113ra rakstz\u012bmju virkni,<br>kas parasti ir ciparu un burtu sec\u012bba. \u0160o izvadi sauc par &#8220;jauc\u0113jv\u0113rt\u012bbu&#8221; vai vienk\u0101r\u0161i &#8220;jauc\u0113ju&#8221;.<br>Jauc\u0113jfunkcijas parasti izmanto datorzin\u0101tn\u0113s un kriptogr\u0101fij\u0101, un t\u0101m ir da\u017eas svar\u012bgas \u012bpa\u0161\u012bbas:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">=== K\u0101 j\u016bs izmantotu jauc\u0113jfunkciju un k\u0101 t\u0101 darbojas?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Deterministisks: viena un t\u0101 pati ievade vienm\u0113r rad\u012bs vienu un to pa\u0161u jauc\u0113jfunkciju.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u0100tri: funkcija var \u0101tri apr\u0113\u0137in\u0101t jauc\u0113jv\u0113rt\u012bbu jebkurai ievadei.<br>Unik\u0101ls (gandr\u012bz): div\u0101m da\u017e\u0101d\u0101m ievad\u0113m ir j\u0101rada at\u0161\u0137ir\u012bgas jauc\u0113jz\u012bmes (to sauc par &#8220;sadursmju&#8221; samazin\u0101\u0161anu).<br>Neatgriezenisks: \u0146emot v\u0113r\u0101 jauc\u0113jkodu, s\u0101kotn\u0113jo ievadi noteikt nav iesp\u0113jams skait\u013co\u0161anas zi\u0146\u0101.<br>Vienots: jauc\u0113jv\u0113rt\u012bbas ir vienm\u0113r\u012bgi sadal\u012btas pa izvades vietu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hash funkcijas tiek pla\u0161i izmantotas da\u017e\u0101d\u0101s lietojumprogramm\u0101s, piem\u0113ram:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Datu integrit\u0101te: lai nodro\u0161in\u0101tu, ka dati nav main\u012bti vai viltoti, sal\u012bdzinot jauc\u0113jv\u0113rt\u012bbas.<br>Paroles glab\u0101\u0161ana: dro\u0161i glab\u0101jiet sajauktas paroles faktisko paro\u013cu viet\u0101.<br>Kriptogr\u0101fija: izmanto digit\u0101lajos parakstos un citos kriptogr\u0101fijas algoritmos.<br>Hash tabulas: efekt\u012bvai datu izguvei programm\u0113\u0161anas laik\u0101.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">=== Sniedziet man hash kartes piem\u0113ru, k\u0101 j\u016bs to izmantotu?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SHA (dro\u0161s jauk\u0161anas algoritms):<br>Ietver t\u0101dus variantus k\u0101 SHA-1, SHA-256, SHA-384 un SHA-512.<br>SHA-256 un SHA-512 tiek pla\u0161i izmantoti kriptogr\u0101fij\u0101 un blok\u0137\u0113des tehnolo\u0123ij\u0101 (piem\u0113ram, Bitcoin).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">import\u0113t java.security.MessageDigest;<br>import\u0113t java.security.NoSuchAlgorithmException;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">public class HashExample {<br>public static void main(String[] args) {<br>m\u0113\u0123in\u0101t {<br>\/\/ Ievades virkne, kas j\u0101jauc<br>String input = &#8220;Sveika, pasaule!&#8221;;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>        \/\/ Create a MessageDigest instance for SHA-256\n        MessageDigest digest = MessageDigest.getInstance(&#034;SHA-256&#034;);\n\n        \/\/ Compute the hash\n        byte&#091;] hash = digest.digest(input.getBytes());\n\n        \/\/ Convert the hash bytes to a hexadecimal string\n        StringBuilder hexString = new StringBuilder();\n        for (byte b : hash) {\n            String hex = String.format(&#034;%02x&#034;, b);\n            hexString.append(hex);\n        }\n\n        \/\/ Print the resulting hash\n        System.out.println(&#034;SHA-256 Hash: &#034; + hexString.toString());\n    } catch (NoSuchAlgorithmException e) {\n        System.err.println(&#034;Error: &#034; + e.getMessage());\n    }\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">}<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ievaddati: ievades main\u012bgais satur datus, kurus v\u0113laties jaukt.<br>MessageDigest inicializ\u0101cija: MessageDigest instance tiek izveidota, izmantojot getInstance (&#8220;SHA-256&#8221;), kas nor\u0101da SHA-256 jauk\u0161anas algoritmu.<br>Jauk\u0161ana: \u012bssavilkuma metode apr\u0113\u0137ina ievades datu jauk\u0161anu.<br>Heksadecim\u0101l\u0101 konvert\u0113\u0161ana: t\u0101 k\u0101 jauc\u0113jkods ir bin\u0101r\u0101 form\u0101t\u0101, m\u0113s izmantojam cilpu, lai to p\u0101rveidotu par las\u0101m\u0101ku heksadecim\u0101lo virkni.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Put un Patch? Kad to lietot?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gan PUT, gan PATCH ir HTTP metodes, ko izmanto servera resursu atjaunin\u0101\u0161anai, ta\u010du t\u0101s at\u0161\u0137iras ar to, k\u0101 t\u0101s apstr\u0101d\u0101 atjaunin\u0101jumus:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PUT:<br>Pilns atjaunin\u0101jums:<br>PUT tiek izmantots, lai piln\u012bb\u0101 aizst\u0101tu eso\u0161o resursu.<br>Piepras\u012bjum\u0101 ir j\u0101nos\u016bta viss resurss, pat ja tiek main\u012bta tikai da\u013ca no t\u0101.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ja resurss neeksist\u0113, PUT bie\u017ei to izveido (lai gan \u0161\u012b darb\u012bba var at\u0161\u0137irties).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Idempotents:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Atk\u0101rtoti PUT piepras\u012bjumi ar vieniem un tiem pa\u0161iem datiem vienm\u0113r rad\u012bs vienu un to pa\u0161u resursa st\u0101vokli.<br>Piem\u0113rs: lietot\u0101ja profila atjaunin\u0101\u0161ana:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">json<br>Ievietojiet \/lietot\u0101ji\/123<br>{<br>&#8220;v\u0101rds&#8221;: &#8220;Velislavs&#8221;,<br>&#8220;e-pasts&#8221;: &#8220;velislav@example.com&#8221;,<br>&#8220;vecums&#8221;: 30<br>}<br>Ja main\u0101s tikai v\u0101rds, bet e-pasts un vecums paliek nemain\u012bgi, tie joproj\u0101m ir j\u0101iek\u013cauj piepras\u012bjum\u0101.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PL\u0100KSERI:<br>Da\u013c\u0113js atjaunin\u0101jums:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">PATCH tiek izmantots, lai veiktu da\u013c\u0113ju eso\u0161\u0101 resursa atjaunin\u0101jumu.<br>Piepras\u012bjum\u0101 j\u0101nos\u016bta tikai main\u0101mie lauki.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Idempotents (p\u0101rsvar\u0101):<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">T\u0101pat k\u0101 PUT, atk\u0101rtoti PATCH piepras\u012bjumi ar tiem pa\u0161iem datiem parasti rada t\u0101du pa\u0161u resursa st\u0101vokli.<br>Tom\u0113r uzved\u012bba var b\u016bt atkar\u012bga no servera ievie\u0161anas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Piem\u0113rs: tikai lietot\u0101ja v\u0101rda atjaunin\u0101\u0161ana:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">json<br>PL\u0100KSTS \/lietot\u0101ji\/123<br>{<br>&#8220;v\u0101rds&#8221;: &#8220;Velislavs&#8221;<br>}<br>\u0160eit tiek atjaunin\u0101ts tikai nosaukuma lauks, p\u0101r\u0113jos laukus atst\u0101jot nemain\u012bgus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Galven\u0101 at\u0161\u0137ir\u012bba:<br>PUT aizst\u0101j visu resursu, savuk\u0101rt PATCH maina tikai nor\u0101d\u012btos resursa laukus.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>HTTP metodes ar \u012bsu aprakstu.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">GET: izmanto, lai izg\u016btu datus no servera, tos nemodific\u0113jot. Parasti izmanto resursu vai inform\u0101cijas ieg\u016b\u0161anai.<br>POST: izmanto, lai nos\u016bt\u012btu datus uz serveri, parasti, lai izveidotu jaunu resursu. Piem\u0113ram, veidlapas iesnieg\u0161ana vai faila aug\u0161upiel\u0101de.<br>PUT: izmanto, lai atjaunin\u0101tu vai piln\u012bb\u0101 aizst\u0101tu eso\u0161u resursu server\u012b. Ja resurss neeksist\u0113, to var izveidot.<br>PATCH: tiek izmantots eso\u0161a resursa da\u013c\u0113jai atjaunin\u0101\u0161anai, mainot tikai nor\u0101d\u012btos laukus.<br>DZ\u0112ST: izmanto, lai dz\u0113stu resursu no servera.<br>HEAD: l\u012bdz\u012bgi k\u0101 GET, ko izmanto, lai izg\u016btu galvenes bez resursa pamatteksta.<br>OPTIONS: tas nor\u0101da, kuras HTTP metodes ir at\u013cautas.<br>TRACE: izmanto galvenok\u0101rt diagnostikas nol\u016bkos, atk\u0101rtojot piepras\u012bjumu klientam<br>CONNECT: izveido tuneli uz serveri, ko bie\u017ei izmanto SSL\/TLS savienojumiem.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">========== Funkcion\u0101lais interfeiss =====================================<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcion\u0101ls Java interfeiss ir saskarne, kas satur tie\u0161i vienu abstraktu metodi. \u0160\u012bs saskarnes galvenok\u0101rt tiek izmantotas lambda izteiksm\u0113s un meto\u017eu atsauc\u0113s, nodro\u0161inot kodol\u012bg\u0101ku un las\u0101m\u0101ku funkcion\u0101lo programm\u0113\u0161anu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Galven\u0101s funkcijas:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Viena abstrakt\u0101 metode<\/strong>: funkcion\u0101lajam interfeisam ir tikai viena abstrakta metode. T\u0101 ir t\u0101 funkcionalit\u0101tes b\u016bt\u012bba.<\/li>\n\n\n\n<li><strong>Noklus\u0113juma un statisk\u0101s metodes<\/strong>: funkcion\u0101l\u0101s saskarnes var ietvert noklus\u0113juma un statiskas metodes, ta\u010du t\u0101s netiek uzskat\u012btas par vienu abstraktu metodi.<\/li>\n\n\n\n<li><strong>@FunctionalInterface anot\u0101cija<\/strong>: lai gan \u0161\u012b anot\u0101cija nav oblig\u0101ta, t\u0101 pal\u012bdz, nor\u0101dot, ka interfeiss ir paredz\u0113ts k\u0101 funkcion\u0101ls. Ja interfeisam tiek pievienotas papildu abstraktas metodes, kompilators rada k\u013c\u016bdu.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Piem\u0113rs:<\/h3>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">@FunctionalInterface<\/div><div class=\"cm-line\">interface Calculator {<\/div><div class=\"cm-line\">    int calculate(int a, int b);<\/div><div class=\"cm-line\">}<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">\/\/ Using lambda expression<\/div><div class=\"cm-line\">public class Main {<\/div><div class=\"cm-line\">    public static void main(String[] args) {<\/div><div class=\"cm-line\">        \/\/ Implementing the calculate method using a lambda<\/div><div class=\"cm-line\">        Calculator addition = (a, b) -&gt; a + b;<\/div><div class=\"cm-line\">        Calculator multiplication = (a, b) -&gt; a * b;<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">        System.out.println(&quot;Addition: &quot; + addition.calculate(5, 3));  \/\/ Output: 8<\/div><div class=\"cm-line\">        System.out.println(&quot;Multiplication: &quot; + multiplication.calculate(5, 3));  \/\/ Output: 15<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Lieto\u0161anas gad\u012bjums:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>Calculator<\/code> interfeisam piem\u0113r\u0101 ir viena abstrakta metode <code>calculate<\/code>, padarot to par funkcion\u0101lu saskarni.<br>Tas \u013cauj mums izmantot lambda izteiksmes \u012bsumam un elegancei ievie\u0161an\u0101.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Izplat\u012bt\u0101k\u0101s Java funkcion\u0101l\u0101s saskarnes:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Java nodro\u0161ina vair\u0101kas ieb\u016bv\u0113tas funkcion\u0101l\u0101s saskarnes <code>java.util.function<\/code> iepakojumi, piem\u0113ram:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Predik\u0101ts<\/strong>: \u0146em ievadi un atgrie\u017e B\u016bla v\u0113rt\u012bbu.<\/li>\n\n\n\n<li><strong>Funkcija<\/strong>: \u0146em ievadi un atgrie\u017e R tipa izvadi.<\/li>\n\n\n\n<li><strong>Pieg\u0101d\u0101t\u0101js<\/strong>: nodro\u0161ina v\u0113rt\u012bbu bez ievades.<\/li>\n\n\n\n<li><strong>Pat\u0113r\u0113t\u0101js<\/strong>: pie\u0146em v\u0113rt\u012bbu un veic darb\u012bbu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Funkcion\u0101l\u0101s saskarnes racionaliz\u0113 darb\u012bbas, \u012bpa\u0161i t\u0101dos gad\u012bjumos k\u0101 darbs ar kolekcij\u0101m, straum\u0113m vai asinhroniem uzdevumiem.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Tie dod iesp\u0113ju Javai pie\u0146emt funkcion\u0101las programm\u0113\u0161anas paradigmas, vienlaikus saglab\u0101jot t\u0101s objektorient\u0113to raksturu.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">================ Augst\u0101kas k\u0101rtas funkcija ir ==============================<br>Augst\u0101kas k\u0101rtas funkcija ir funkcija, kas vai nu izmanto citas funkcijas k\u0101 argumentus, vai atgrie\u017e funkciju k\u0101 rezult\u0101tu. Citiem v\u0101rdiem sakot, t\u0101 darbojas uz funkcij\u0101m, uzskatot t\u0101s par &#8220;pirm\u0101s \u0161\u0137iras pilso\u0146iem&#8221;. \u0160\u012b ir jaud\u012bga funkcija funkcion\u0101l\u0101s programm\u0113\u0161anas paradigm\u0101s, kas nodro\u0161ina abstrakciju, koda atk\u0101rtotu izmanto\u0161anu un kompoz\u012bciju.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Java augst\u0101k\u0101s k\u0101rtas funkcijas piem\u0113rs:<\/h3>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">import java.util.function.Function;<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">public class Main {<\/div><div class=\"cm-line\">    public static void main(String[] args) {<\/div><div class=\"cm-line\">        \/\/ Higher-order function: applies a function to a value<\/div><div class=\"cm-line\">        Function&lt;Integer, Integer&gt; squareFunction = x -&gt; x * x;<\/div><div class=\"cm-line\">        int result = applyFunction(5, squareFunction);<\/div><div class=\"cm-line\">        System.out.println(&quot;Square of 5: &quot; + result);  \/\/ Output: 25<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\"><\/div><div class=\"cm-line\">    public static int applyFunction(int value, Function&lt;Integer, Integer&gt; function) {<\/div><div class=\"cm-line\">        return function.apply(value);<\/div><div class=\"cm-line\">    }<\/div><div class=\"cm-line\">}<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Iepriek\u0161 min\u0113taj\u0101 piem\u0113r\u0101:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The <code>applyFunction<\/code> metode ir augst\u0101kas k\u0101rtas funkcija, jo t\u0101 pie\u0146em citu funkciju (<code>Function&lt;Integer, Integer&gt;<\/code>) k\u0101 parametru.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Funkcijas:<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Pie\u0146em funkcijas k\u0101 argumentus<\/strong>: augst\u0101kas pak\u0101pes funkcijas var izmantot citas funkcijas k\u0101 ievadi konkr\u0113tu darb\u012bbu veik\u0161anai.<\/li>\n\n\n\n<li><strong>Atgrie\u017e funkcijas<\/strong>: tie var dinamiski \u0123ener\u0113t un atgriezt jaunas funkcijas.<\/li>\n\n\n\n<li><strong>Veicina koda atk\u0101rtotu izmanto\u0161anu<\/strong>: veicina modul\u0101ru un atk\u0101rtoti lietojamu kodu, jo funkcijas var nodot apk\u0101rt un veidot kop\u0101.<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Lieto\u0161anas gad\u012bjums:<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Programm\u0101 Java augst\u0101kas k\u0101rtas funkcijas parasti izmanto funkcion\u0101laj\u0101 programm\u0113\u0161an\u0101 ar straum\u0113m, lambdas un meto\u017eu atsauc\u0113m. Piem\u0113ram:<\/p>\n\n\n<div class=\"wp-block-code\">\n\t<div class=\"cm-editor\">\n\t\t<div class=\"cm-scroller\">\n\t\t\t\n<pre>\n<code><div class=\"cm-line\">List&lt;String&gt; names = Arrays.asList(&quot;John&quot;, &quot;Jane&quot;, &quot;Jake&quot;);<\/div><div class=\"cm-line\">names.stream()<\/div><div class=\"cm-line\">     .filter(name -&gt; name.startsWith(&quot;J&quot;))  \/\/ Takes a lambda function as argument<\/div><div class=\"cm-line\">     .forEach(System.out::println);         \/\/ Takes a method reference as argument<\/div><\/code><\/pre>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Augst\u0101kas k\u0101rtas funkcijas nodro\u0161ina Java programmu elast\u012bbu un jaudu, \u013caujot izstr\u0101d\u0101t\u0101jiem rakst\u012bt t\u012bru, kodol\u012bgu un izteiksm\u012bgu kodu!<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u0160eit ir da\u017ei re\u0101l\u0101s pasaules interviju atbil\u017eu komplekti.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Izprot t\u0101dus pamatus k\u0101 polimorfisms, statisk\u0101s metodes un st\u012bgu baseins<\/li>\n\n\n\n<li>p\u0101rzina kolekcijas (piem\u0113ram, HashSet, TreeSet) un to lieto\u0161anas gad\u012bjumus.<\/li>\n\n\n\n<li>Pareizi identific\u0113 pupi\u0146u tv\u0113rumus (singleton, prototips)<\/li>\n\n\n\n<li>Apzin\u0101s atkar\u012bbas injekciju un t\u0101s m\u0113r\u0137i.<\/li>\n\n\n\n<li>zina, k\u0101 ieviest attiec\u012bbas daudzi pret daudziem, izmantojot savienojuma tabulas.<\/li>\n\n\n\n<li>Izprot indeksu m\u0113r\u0137i (lai gan virspus\u0113ji)<\/li>\n\n\n\n<li>var at\u0161\u0137irt monol\u012btu un mikropakalpojumu arhitekt\u016bru<\/li>\n\n\n\n<li>izprot pamata kompromisus (m\u0113rogojam\u012bba, uztur\u0113\u0161ana)<\/li>\n\n\n\n<li>p\u0101rprot Liskova aizst\u0101\u0161anas principu un atkar\u012bbas inversiju<\/li>\n\n\n\n<li>Cen\u0161as sniegt konkr\u0113tus atv\u0113rt\u0101\/sl\u0113gt\u0101 principa piem\u0113rus.<\/li>\n\n\n\n<li>Tr\u016bkst dzi\u013cuma pupi\u0146u dz\u012bves cikla p\u0101rvald\u012bb\u0101<\/li>\n\n\n\n<li>Nav skaidrs par papildu atkar\u012bbas injekciju<\/li>\n\n\n\n<li>virspus\u0113ja izpratne par indeksiem (saliktie indeksi, vaic\u0101jumu optimiz\u0101cija)<\/li>\n\n\n\n<li>Nepaz\u012bstat izol\u0101cijas l\u012bme\u0146us un optimistisku\/pesimistisku blo\u0137\u0113\u0161anu<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Plusi:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Str\u0101d\u0101ja ar mantoto kodu milz\u012bg\u0101 un sare\u017e\u0123\u012bt\u0101 sist\u0113m\u0101<\/li>\n\n\n\n<li>Zina SOLID<\/li>\n\n\n\n<li>Zin\u0101\u0161anas par straum\u0113m<\/li>\n\n\n\n<li>Izskaidroti indeksi un ACID<\/li>\n\n\n\n<li>Labs ang\u013cu valodas l\u012bmenis<br>M\u012bnusi:<\/li>\n\n\n\n<li>Nav atbild\u012bbas par izv\u0113r\u0161anu vai infrastrukt\u016bru, l\u012bdzdal\u012bbu arhitekt\u016bras projekt\u0113\u0161an\u0101<\/li>\n\n\n\n<li>Vi\u0146am ir zin\u0101mas zin\u0101\u0161anas par OOP principiem, ta\u010du vi\u0146am bija gr\u016bti tos izskaidrot un da\u017ei j\u0113dzieni bija nepareizi<\/li>\n\n\n\n<li>Visp\u0101r\u0113jas zin\u0101\u0161anas par kolekcij\u0101m, ta\u010du ir nepiln\u012bbas un \u013coti neskaidras<\/li>\n\n\n\n<li>Nesaprot at\u0161\u0137ir\u012bbu starp vienlaic\u012bbu un paral\u0113lismu, ne p\u0101r\u0101k sp\u0113c\u012bgas zin\u0101\u0161anas par vienlaic\u012bbu<\/li>\n\n\n\n<li>Nav daudz p\u0113t\u012bjis mikropakalpojumu arhitekt\u016bru<\/li>\n\n\n\n<li>Neskaidrs par da\u017eiem datu b\u0101zes j\u0113dzieniem (indeksu diskusija bija virsmas l\u012bmen\u012b)<\/li>\n\n\n\n<li>Nevar\u0113ja izskaidrot Livelock<\/li>\n\n\n\n<li>Nepiln\u012bbas beidzot blo\u0137\u0113 izpratni<\/li>\n\n\n\n<li>Ierobe\u017eotas zin\u0101\u0161anas par iz\u0146\u0113mumu apstr\u0101des specifiku<\/li>\n\n\n\n<li>Apjukums par piek\u013cuves modifikatoriem (aizsarg\u0101ts pret priv\u0101to pakotni)<br>Vienpr\u0101t\u012bgais viedoklis \u2026 ir<br>nav piem\u0113rots Mid-Java izstr\u0101d\u0101t\u0101ja amatam vi\u0146a tehnisko zin\u0101\u0161anu tr\u016bkumu d\u0113\u013c.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pros<br>SOLID labi paskaidroja<br>Labi izskaidroja OOP<br>Izskaidrots sast\u0101vs (bet s\u0101kum\u0101 nedaudz c\u012bn\u012bj\u0101s)<br>Lieliska izpratne par kolekcij\u0101m<br>At\u0161\u0137ir\u012bba starp sarakstiem un komplektiem<br>Hashsets<br>Ha\u0161maps<br>Vienlaic\u012bga hashmap<br>Laba izpratne par datu strukt\u016br\u0101m \u2013 skurste\u0146iem, rind\u0101m, kokiem<br>Labas zin\u0101\u0161anas par jvm arhitekt\u016bru<br>Izskaidroja vienlaic\u012bbu pret paral\u0113lismu, demonstr\u0113ja labas zin\u0101\u0161anas par daudzpavedienu lietojumprogramm\u0101m<br>Laba izpratne par REST<br>Labi izskaidroja db indeksus<br>Izskaidroja da\u017e\u0101dus savienojumu veidus<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kas ir SOLID principi? Kas ir vienotas atbild\u012bbas principi (SRP): Klasei kube tikai vienai atbild\u012bbai. [&hellip;]<\/p>\n","protected":false},"author":65283547,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_wpcom_ai_launchpad_first_post":false,"_jetpack_hide_featured_image":false,"_jetpack_featured_image_duplicate_dismissed":0,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1017],"tags":[11788,789678139,2549795,196,789678143],"class_list":["post-2308","post","type-post","status-publish","format-standard","hentry","category-java","tag-intervija","tag-intervija-java-izstradataju","tag-java","tag-programmesana","tag-jautajumi-java-izstradatajam"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p4CoHV-Be","jetpack-related-posts":[{"id":2537,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d1%82%d1%80%d0%b5%d1%82%d0%b8%d1%8f%d1%82-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d1%81%d0%ba%d0%b8-%d1%81%d1%8a%d0%b1%d0%be%d1%80-%d0%b2-%d0%b5%d1%84%d0%b5%d1%81-431-%d0%b3-%d1%85%d1%80%d0%b8%d1%81\/","url_meta":{"origin":2308,"position":0},"title":"Tre\u0161ais Efesas ekum\u0113niskais koncils (431): Kristolo\u0123iskais str\u012bds starp Aleksandrijas Kirilu un Nestoriju un Dieva M\u0101tes doktr\u012bnas apstiprin\u0101jums","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440 \u0432 \u0415\u0444\u0435\u0441 (431 \u0433.): \u0445\u0440\u0438\u0441\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0438\u044f\u0442 \u0441\u043f\u043e\u0440 \u043c\u0435\u0436\u0434\u0443 \u041a\u0438\u0440\u0438\u043b \u0410\u043b\u0435\u043a\u0441\u0430\u043d\u0434\u0440\u0438\u0439\u0441\u043a\u0438 \u0438 \u041d\u0435\u0441\u0442\u043e\u0440\u0438\u0439 \u0438 \u0443\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0443\u0447\u0435\u043d\u0438\u0435\u0442\u043e \u0437\u0430 \u0411\u043e\u0433\u043e\u0440\u043e\u0434\u0438\u0446\u0430 \u041d\u0430\u0443\u0447\u043d\u043e-\u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u043e \u0438 \u0431\u043e\u0433\u043e\u0441\u043b\u043e\u0432\u0441\u043a\u043e \u0438\u0437\u0441\u043b\u0435\u0434\u0432\u0430\u043d\u0435 \u0410\u0432\u0442\u043e\u0440: \u0412\u0435\u043b\u0438\u0441\u043b\u0430\u0432 \u041a\u0440\u044a\u0441\u0442\u0435\u0432\u0422\u0435\u043c\u0430: \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u0440\u0430\u043d\u043d\u0430\u0442\u0430 \u0426\u044a\u0440\u043a\u0432\u0430 \u0438 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u043d\u0430 \u0445\u0440\u0438\u0441\u0442\u043e\u043b\u043e\u0433\u0438\u0447\u043d\u0430\u0442\u0430 \u0434\u043e\u0433\u043c\u0430\u0442\u0438\u043a\u0430\u041f\u0435\u0440\u0438\u043e\u0434: 428\u2013451 \u0433.\u041e\u0441\u043d\u043e\u0432\u043d\u043e \u0441\u044a\u0431\u0438\u0442\u0438\u0435: \u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u0415\u0444\u0435\u0441, 431 \u0433. \u0420\u0435\u0437\u044e\u043c\u0435 \u0422\u0440\u0435\u0442\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d\u2026","rel":"","context":"In &quot;Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu&quot;","block_context":{"text":"Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/chatgpt-image-oct-2-2026-08_12_12-pm.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":901,"url":"https:\/\/vkrastev1blog.com\/2024\/11\/17\/%d0%ba%d0%be%d0%bb%d0%ba%d0%be-%d0%bf%d1%80%d0%be%d1%82%d0%b5%d0%b8%d0%bd%d0%b8-%d0%b4%d0%b0-%d0%bf%d1%80%d0%b8%d0%b5%d0%bc%d0%b0%d0%bc%d0%b5-%d0%bd%d0%b0-%d0%b4%d0%b5%d0%bd\/","url_meta":{"origin":2308,"position":1},"title":"Cik daudz olbaltumvielu \u0113st dien\u0101 un olbaltumvielu bada sekas","author":"vkrastev2014","date":"17.11.2024","format":false,"excerpt":"\u041a\u043e\u043b\u043a\u043e \u043f\u0440\u043e\u0442\u0435\u0438\u043d\u0438 \u0434\u0430 \u043f\u0440\u0438\u0435\u043c\u0430\u043c\u0435 \u043d\u0430 \u0434\u0435\u043d \u0438 \u043f\u043e\u0441\u043b\u0435\u0434\u0438\u0446\u0438\u0442\u0435 \u043e\u0442 \u043f\u0440\u043e\u0442\u0435\u0438\u043d\u043e\u0432 \u0433\u043b\u0430\u0434 \u041f\u0440\u0438\u0435\u043c\u044a\u0442 \u043d\u0430 \u0434\u043e\u0441\u0442\u0430\u0442\u044a\u0447\u043d\u043e \u043f\u0440\u043e\u0442\u0435\u0438\u043d\u0438 \u043d\u0430 \u0434\u0435\u043d \u0435 \u043e\u0442 \u0441\u044a\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0437\u0430 \u043e\u0440\u0433\u0430\u043d\u0438\u0437\u043c\u0430 \u043f\u043e\u0440\u0430\u0434\u0438 \u043d\u044f\u043a\u043e\u043b\u043a\u043e \u043f\u0440\u0438\u0447\u0438\u043d\u0438: \u0418\u0437\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0438 \u0432\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u044a\u043a\u0430\u043d\u0438: \u041f\u0440\u043e\u0442\u0435\u0438\u043d\u0438\u0442\u0435 \u0441\u0430 \u043e\u0441\u043d\u043e\u0432\u043d\u0438\u0442\u0435 \u0433\u0440\u0430\u0434\u0438\u0432\u043d\u0438 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438 \u043d\u0430 \u043c\u0443\u0441\u043a\u0443\u043b\u0438\u0442\u0435, \u043a\u043e\u0436\u0430\u0442\u0430, \u043a\u043e\u0441\u0430\u0442\u0430 \u0438 \u043d\u043e\u043a\u0442\u0438\u0442\u0435. \u0422\u0435 \u0441\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0438 \u0437\u0430 \u0432\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u044a\u043a\u0430\u043d\u0438\u0442\u0435 \u0441\u043b\u0435\u0434\u2026","rel":"","context":"In &quot;Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu&quot;","block_context":{"text":"Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/11\/image-17.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/11\/image-17.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/11\/image-17.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/11\/image-17.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":2586,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d0%b2%d0%b5%d0%bb%d0%b8%d0%ba%d0%b0%d1%82%d0%b0-%d1%81%d1%85%d0%b8%d0%b7%d0%bc%d0%b0-%d0%be%d1%82-1054-%d0%b3-%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d1%87%d0%b5%d1%81%d0%ba%d0%b8%d1%82%d0%b5\/","url_meta":{"origin":2308,"position":2},"title":"Liel\u0101 1054.\u00a0gada \u0161\u0137el\u0161an\u0101s - v\u0113sturiskie iemesli \u0161\u0137el\u0161anai starp pareiztic\u012bgo un Romas kato\u013cu bazn\u012bcu","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0412\u0435\u043b\u0438\u043a\u0430\u0442\u0430 \u0441\u0445\u0438\u0437\u043c\u0430 \u043e\u0442 1054 \u0433. \u2014 \u0438\u0441\u0442\u043e\u0440\u0438\u0447\u0435\u0441\u043a\u0438\u0442\u0435 \u043f\u0440\u0438\u0447\u0438\u043d\u0438 \u0437\u0430 \u0440\u0430\u0437\u0434\u0435\u043b\u0435\u043d\u0438\u0435\u0442\u043e \u043c\u0435\u0436\u0434\u0443 \u041f\u0440\u0430\u0432\u043e\u0441\u043b\u0430\u0432\u043d\u0430\u0442\u0430 \u0438 \u0420\u0438\u043c\u043e\u043a\u0430\u0442\u043e\u043b\u0438\u0447\u0435\u0441\u043a\u0430\u0442\u0430 \u0446\u044a\u0440\u043a\u0432\u0430 \u0420\u0435\u0437\u044e\u043c\u0435 \u0412\u0435\u043b\u0438\u043a\u0430\u0442\u0430 \u0441\u0445\u0438\u0437\u043c\u0430 \u043e\u0442 1054 \u0433. \u0435 \u0435\u0434\u043d\u043e \u043e\u0442 \u043d\u0430\u0439-\u0437\u043d\u0430\u0447\u0438\u043c\u0438\u0442\u0435 \u0441\u044a\u0431\u0438\u0442\u0438\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u043d\u0430 \u0445\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u0442\u0432\u043e\u0442\u043e. \u0422\u044f \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0441\u0435 \u0441\u0432\u044a\u0440\u0437\u0432\u0430 \u0441 \u043f\u0440\u0435\u043a\u044a\u0441\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0446\u044a\u0440\u043a\u043e\u0432\u043d\u043e\u0442\u043e \u043e\u0431\u0449\u0435\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0420\u0438\u043c\u0441\u043a\u0430\u0442\u0430 \u0446\u044a\u0440\u043a\u0432\u0430 \u043d\u0430 \u0417\u0430\u043f\u0430\u0434 \u0438 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b\u0441\u043a\u0430\u0442\u0430 \u0446\u044a\u0440\u043a\u0432\u0430 \u043d\u0430 \u0418\u0437\u0442\u043e\u043a. \u0421\u044a\u0431\u0438\u0442\u0438\u044f\u0442\u0430\u2026","rel":"","context":"In &quot;Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu&quot;","block_context":{"text":"Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/qw2qge1gpm-imcejrbliuv09vw-lm2pdjcnyrstfpg4msbjvq5ayy300dumb4g0dqgb04qse4r49kf4hgozsmknaycx-6ls4n1_6et7huoj0n4ovamyps8jiqzamtvq9qa1jdrc-ci-cw5e8oylvd1jxmveqgxdxbfu8ds4uwz8.jpg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":2663,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/10\/%d1%81%d1%8a%d0%b1%d1%80%d0%b0%d0%bd%d0%b8-%d0%bb%d0%b8%d0%bd%d0%ba%d0%be%d0%b2%d0%b5-%d0%ba%d1%8a%d0%bc-%d0%b4%d0%be%d0%b1%d1%80%d0%b8-%d1%85%d1%80%d0%b8%d1%81%d1%82%d0%b8%d1%8f%d0%bd%d1%81%d0%ba\/","url_meta":{"origin":2308,"position":3},"title":"Apkopotas saites uz lab\u0101m kristie\u0161u film\u0101m no interneta","author":"vkrastev2014","date":"10.10.2026","format":false,"excerpt":"\u0421\u044a\u0431\u0440\u0430\u043d\u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0435 \u043a\u044a\u043c \u0434\u043e\u0431\u0440\u0438 \u0425\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u043a\u0438 \u0424\u0438\u043b\u043c\u0438 \u043e\u0442 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0422\u0443\u043a \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043c \u0441\u043f\u0438\u0441\u044a\u043a \u0441 \u0434\u043e\u0431\u0440\u0438 \u0425\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u043a\u0438 \u0424\u0438\u043b\u043c\u0438 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0438 \u0432 \u0438\u043d\u0442\u0435\u0440\u043d\u0435\u0442. \u0421\u0442\u0430\u0442\u0438\u044f\u0442\u0430 \u0449\u0435 \u0441\u0435 \u0430\u043a\u0442\u0443\u0430\u043b\u0438\u0437\u0438\u0440\u0430 \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441 \u043d\u043e\u0432\u0438 \u043b\u0438\u043d\u043a\u043e\u0432\u0435, \u043d\u0435 \u0435 \u0441\u0442\u0430\u0442\u0438\u0447\u043d\u0430 \u0441\u0442\u0430\u0442\u0438\u044f. \u0418\u043c\u0430 \u0438 \u0444\u0438\u043b\u043c\u0438 \u0441 \u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u043f\u0440\u0435\u0432\u043e\u0434 \u0438 \u0441 \u0431\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438 \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u0438 \u043d\u043e \u043d\u044f\u043a\u043e\u0438 \u0441\u0430 \u0441\u0430\u043c\u043e \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u0438 \u0435\u0437\u0438\u043a. \u041f\u043e \u043f\u0440\u0438\u043d\u0446\u0438\u043f \u0442\u0435\u0437\u0438\u2026","rel":"","context":"In &quot;Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu&quot;","block_context":{"text":"Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/films-about-bible-and-jesus.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":2532,"url":"https:\/\/vkrastev1blog.com\/2026\/10\/02\/%d0%b2%d1%82%d0%be%d1%80%d0%b8%d1%8f%d1%82-%d0%b2%d1%81%d0%b5%d0%bb%d0%b5%d0%bd%d1%81%d0%ba%d0%b8-%d1%81%d1%8a%d0%b1%d0%be%d1%80-%d0%b2-%d0%ba%d0%be%d0%bd%d1%81%d1%82%d0%b0%d0%bd%d1%82%d0%b8%d0%bd\/","url_meta":{"origin":2308,"position":4},"title":"Otrais ekum\u0113niskais koncils Konstantinopol\u0113 (381) - Sv\u0113t\u0101 Gara doktr\u012bnas apstiprin\u0101\u0161ana","author":"vkrastev2014","date":"02.10.2026","format":false,"excerpt":"\u0412\u0442\u043e\u0440\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440 \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b (381 \u0433.) \u2013 \u0443\u0442\u0432\u044a\u0440\u0436\u0434\u0430\u0432\u0430\u043d\u0435\u0442\u043e \u043d\u0430 \u0443\u0447\u0435\u043d\u0438\u0435\u0442\u043e \u0437\u0430 \u0421\u0432\u0435\u0442\u0438\u044f \u0414\u0443\u0445 \u0418\u0441\u0442\u043e\u0440\u0438\u044f \u043d\u0430 \u0445\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u0442\u0432\u043e\u0442\u043e \u2022 \u0412\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440\u0438 \u2022 IV \u0432\u0435\u043a \u0412\u0442\u043e\u0440\u0438\u044f\u0442 \u0432\u0441\u0435\u043b\u0435\u043d\u0441\u043a\u0438 \u0441\u044a\u0431\u043e\u0440, \u043f\u0440\u043e\u0432\u0435\u0434\u0435\u043d \u043f\u0440\u0435\u0437 381 \u0433. \u0432 \u041a\u043e\u043d\u0441\u0442\u0430\u043d\u0442\u0438\u043d\u043e\u043f\u043e\u043b, \u0435 \u0435\u0434\u043d\u043e \u043e\u0442 \u043d\u0430\u0439-\u0432\u0430\u0436\u043d\u0438\u0442\u0435 \u0441\u044a\u0431\u0438\u0442\u0438\u044f \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044f\u0442\u0430 \u043d\u0430 \u0440\u0430\u043d\u043d\u043e\u0442\u043e \u0445\u0440\u0438\u0441\u0442\u0438\u044f\u043d\u0441\u0442\u0432\u043e. \u041d\u0430 \u043d\u0435\u0433\u043e \u0435 \u043f\u043e\u0442\u0432\u044a\u0440\u0434\u0435\u043d\u0430 \u041d\u0438\u043a\u0435\u0439\u0441\u043a\u0430\u0442\u0430 \u0432\u044f\u0440\u0430 \u043e\u0442 325\u2026","rel":"","context":"In &quot;Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu&quot;","block_context":{"text":"Raksti, kas velt\u012bti B\u012bbelei un par garu un miesu","link":"https:\/\/vkrastev1blog.com\/category\/%d1%81%d1%82%d0%b0%d1%82%d0%b8%d0%b8-%d0%bf%d0%be%d1%81%d0%b2%d0%b5%d1%82%d0%b5%d0%bd%d0%b8-%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b1%d0%bb%d0%b8%d1%8f%d1%82%d0%b0-%d0%b8-%d0%b7%d0%b0-%d0%b4%d1%83%d1%85%d0%b0\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2026\/10\/ebtppy-v5hhqxqbousaxhde8pmrm8ky9vg5zhq_i42gf-itvech_wr25ui-u_ruov2gkqenknbbx2y7ekwwxzt8559wmlq424iif_pbcon6riek_ttdbxwp75aulyh3_naxhvg_pukcmdvjs88b30esv3xgtigs1gsziujd02gs.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":297,"url":"https:\/\/vkrastev1blog.com\/2024\/05\/15\/artifitial-eye\/","url_meta":{"origin":2308,"position":5},"title":"M\u0101ksl\u012bg\u0101 acs \u2013 cik t\u0101lu zin\u0101tne ir sasniegusi 2026. gad\u0101","author":"vkrastev2014","date":"15.05.2024","format":false,"excerpt":"\u0418\u0437\u043a\u0443\u0441\u0442\u0432\u0435\u043d\u043e\u0442\u043e \u043e\u043a\u043e \u2013 \u0434\u043e\u043a\u044a\u0434\u0435 \u0435 \u0434\u043e\u0441\u0442\u0438\u0433\u043d\u0430\u043b\u0430 \u043d\u0430\u0443\u043a\u0430\u0442\u0430 \u043f\u0440\u0435\u0437 2026 \u0433\u043e\u0434\u0438\u043d\u0430 \u041e\u0442 \u0440\u0435\u0442\u0438\u043d\u0430\u043b\u043d\u0438 \u0438\u043c\u043f\u043b\u0430\u043d\u0442\u0438 \u0434\u043e \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u0435\u043d\u0430 \u0440\u0435\u0442\u0438\u043d\u0430 \u0438 \u0442\u0440\u0430\u043d\u0441\u043f\u043b\u0430\u043d\u0442\u0430\u0446\u0438\u044f \u043d\u0430 \u0446\u044f\u043b\u043e \u043e\u043a\u043e \u0418\u0434\u0435\u044f\u0442\u0430 \u0437\u0430 \u0441\u044a\u0437\u0434\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043a\u0443\u0441\u0442\u0432\u0435\u043d\u043e \u043e\u043a\u043e, \u043a\u043e\u0435\u0442\u043e \u0434\u0430 \u0437\u0430\u043c\u0435\u043d\u0438 \u043d\u0430\u043f\u044a\u043b\u043d\u043e \u0447\u043e\u0432\u0435\u0448\u043a\u043e\u0442\u043e \u043e\u043a\u043e \u0438 \u0434\u0430 \u0432\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u0438 \u0437\u0440\u0435\u043d\u0438\u0435\u0442\u043e \u043d\u0430 \u0441\u043b\u0435\u043f\u0438 \u0445\u043e\u0440\u0430, \u0434\u044a\u043b\u0433\u043e \u0432\u0440\u0435\u043c\u0435 \u043f\u0440\u0438\u043d\u0430\u0434\u043b\u0435\u0436\u0435\u0448\u0435 \u043f\u0440\u0435\u0434\u0438\u043c\u043d\u043e \u043d\u0430 \u043d\u0430\u0443\u0447\u043d\u0430\u0442\u0430 \u0444\u0430\u043d\u0442\u0430\u0441\u0442\u0438\u043a\u0430. \u041f\u0440\u0435\u0437 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u0442\u0435 \u0434\u0435\u0441\u0435\u0442\u0438\u043b\u0435\u0442\u0438\u044f\u2026","rel":"","context":"In &quot;M\u0101ksl\u012bgie org\u0101ni \u2014 cik t\u0101lu zin\u0101tne ir tikusi 2026. gad\u0101&quot;","block_context":{"text":"M\u0101ksl\u012bgie org\u0101ni \u2014 cik t\u0101lu zin\u0101tne ir tikusi 2026. gad\u0101","link":"https:\/\/vkrastev1blog.com\/category\/maksligie-organi-cik-talu-zinatne-ir-tikusi-2026-gada\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/05\/d0bed0bad0be.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/05\/d0bed0bad0be.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/05\/d0bed0bad0be.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/vkrastev1blog.com\/wp-content\/uploads\/2024\/05\/d0bed0bad0be.jpg?resize=700%2C400&ssl=1 2x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/2308","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/users\/65283547"}],"replies":[{"embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/comments?post=2308"}],"version-history":[{"count":6,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/2308\/revisions"}],"predecessor-version":[{"id":2314,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/posts\/2308\/revisions\/2314"}],"wp:attachment":[{"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/media?parent=2308"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/categories?post=2308"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vkrastev1blog.com\/wp-json\/wp\/v2\/tags?post=2308"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}