Proxy pattern Bir obyekti temsil eden bashqa bir obyekt nezerde tutulur bu patternde. Her hansi bir tehlukesizliyin qarshisi alinmir, sadece Proxy uzerinden lazim olan obyekte chatiriq ve bu cache sistemi ile gedir. Tutaq ki, DB ya qoshulmaq uchun uzun bir vaxt teleb eden configrationlardan ibaret olan class var: HeavyConnector. Normalda bu classdan obyekt yaradan kimi bu DB ile elaqe hal hazirda lazim oldu ve ya olmadi yaranir. Bu da proyektin gec ishlemesine sebeb ola biler. Buna gore Proxy anlayishindan istifade olunur. Artiq Connector interface den istifade edib, polimorfizme gore ProxyConnector classinin obyektini yaradib Connector obyektine set ede bilerik. Connector connector = new ProxyConnector(); bu setirde yalniz ProxyConnector obyekti yaranacaq. heavyConnect metodu hele cagrilmayib. Yalniz connector.connect(); dedikden sonra HeavyConnector classinin obyekti yaranacaq ve constructor vasitesile bu metod cagrilacaq.
Mikroservisleri tercih etmek uchun 4 esas sebeb var : Scalability Bu ozellik monolit application da da mumkundur. Horizontal ve Vertical Scalability: - Horizontal, Serverimiz tutaq ki , 4gb ram da ishleyir. Hal hazir ki veziyyete gore uygun olsada musteri sayi artandan sonra serverin ramini artira bilerik. Lakin bunun bir limiti vardir. (diger paratmetrlerde daxilidr, cpu, harddrive). Yeni horizontal - sistemi guclendirmek basha dushulur. Burada limit oldugundan , sonradan yeni sistem alinmalidir, lakin server yalniz bir komputer olmalidir. - Vertical, burada yaradilan servisin kopyasini yaratmaq basha dushulur. Esasen mikroservis arxitekturasinda istifade olunur. Meselen Account Service 1000 sorgu emal ede bilirse, bu servisin kopyasi da 1000 sorgu emal edecek. Bu mikroservis oluduguna gore ishletdiyi ram daha az olacaqdir (ve ya diger parametrler) Burada servislerin kopyasini avtomatik yaradilmasini temin eden sistemler var ki, bunlara misal olaraq Kubernetes, Rancher ve ya cust...
Threadlarla ishlemek uchun evvelce Thread classini extend etmeliyik. Daha sonra run() metodu Override olunmalidir. Oz classimizin obyektini yaratdiqdan sonra, MyThread m = new MyThread(); m.start(); deyib threadi ishe salmaq olur. strart metodu arxada dolayi yolla run metodunu ishe salir. extends Thread ve implements Runnable Extends zamani artiq extends qabiliyyetini itiririk. class Runnable da implements etdikden sonra start() metodu bu interface ichinde olmadigina gore error olacaq. Buna gore asagidaki shekilde kod yazilmalidir. Thread mt = new Thread(new MyThread()); constructora oz obyektimizi gonderirik. Race Condition Eger butun threadlar eyni menbeye muraciet edirse bu zaman RaceCondition yaranir. Bu problemin qarshisini almaq uchun synchronized istifade etmek lazimdir. Volatile Thread lar yaranan zaman proyektin cari hali kopyalanir. Yeni Threadlar her biri ayri yaddash sahesine muraciet edir. synchronized ne qeder b...