☕️ Java BACKEND developers </>☕️
185 subscribers
89 photos
148 videos
34 files
212 links
Download Telegram
Forwarded from IT suhbat
#lock

Concurrency'da lock tushunchasining o'rni katta. Bugun shu haqida gaplashamiz.

Lock o'zbekchada qulf bo'ladi. Har bir obyekt lock'ga ega. Agar biz bir nechta oqimlar bilan ishlayotgan bo'lsak, murojaatlarni shu lock orqali cheklashimiz mumkin. Tasavvur qiling, obyekt — bir xona. Unga bitta eshikdan kiriladi va bu eshikning qulfi bor. Multithreading'da obyektni lock qilish deyilganda, ana shu xonaga bitta thread kirganidan keyin eshikni qulflash tushuniladi. Thread o'ziga tegishli ishni tugatib bo'lganidan keyin eshikning qulfini ochib(unlock), xonadan chiqib ketadi, navbatdagi thread'ga o'z o'rnini bo'shatadi.

Javada lock qilishning ikki xil yo'li bor.
Birinchisi — avtomat, synchronized kalit so'zi yordamida.

Ikkinchisi — qo'lda. Buning uchun bizga Lock interfeysi va uning merosxo'rlari yordamga keladi.
ReentrantLock yordamida biz kodning istalgan joyida obyektni lock qilamiz, try yordamida asosiy ishni bajaramiz va finally'da unlock qilib chiqib ketamiz.
Undan tashqari o'qish va yozish uchun ReentrantReadWriteLock'dan foydalanish mumkin. Bu o'z o'rnida 2 xil lock imkoniyatini beradi.

Read lock — bir paytning o'zida o'qish uchun xohlagancha oqim murojaat qilishi mumkin, faqatgina yozish imkoniyatini cheklaydi.
Write lock — yozish amaliyoti bo'layotgan vaqtda qolgan oqimlarga na yozish, na o'qish imkonini beradi.

In shaa Alloh, keyingi maqolada Atomic va Lock'ning bir-biridan farqi haqida gaplashamiz, tezliklarini solishtiramiz.

@it_suhbat
Forwarded from IT suhbat
#webclient #mutate

Aytaylik siz biror servisga so'rov yuborish uchun uning oldindan yozilgan tayyor kutubxonasidan foydalanayapsiz. Ko'pincha ichki loyihalarni o'zaro integratsiyalarida shunday tayyor kutubxonalar yoziladi, client sifatida. Shu joyda WebClient ishlatilgan bo'lsa, uning bean'i oldindan build qilib, e'lon qilingan bo'ladi.

Tasavvur qilaylik, sizga shu client kutubxona orqali yuborilgan so'rovlar yoki qabul qilib olingan javoblar logga chiqarilishi kerak bo'lib qoldi. Bean'ni qaytadan hosil qilmaysiz, bu ortiqcha ish. Mana shu joyda WebClient'ning mutate metodi yordamga keladi.

Bu metod orqali hosil qilingan bean'ni qaytadan o'zgartirsa bo'ladi. Tayyor WebClient'ga o'zingizning servisingizdan turib o'zgarishlar kiritsangiz bo'ladi. Mana shunday holatlarda bu metod o'zining hosil qilinishidan maqsadini ko'rsatadi :)

@it_suhbat
👍1
JIT (Just-In-Time) kompilatori
Java Virtual Machine (JVM) tomonidan ishlatiladigan texnikadir. JIT kompilyatori Java dasturlarining ish vaqtida ishlashi samaradorligini oshirish uchun mas'uldir.

Oddiy qilib aytganda, Java kodini avval bayt kodga (Java dasturi yozilganidan so'ng kompilyator tomonidan yaratiladigan vositaviy kod) kompilyatsiya qiladi. Bayt kod dastlab JVM tomonidan interpretatsiya qilinadi, ya'ni buyruq bajarilganda qadam-baqadam amalga oshiriladi. JIT kompilyatori esa, interpretatsiya jarayonini optimallashtiradi va ishlash vaqtida ko'p martalab ishlatiladigan bayt kod qismlarini mashina kodiga (native code) aylantiradi. Bu mashina kodi to'g'ridan-to'g'ri protsessor tomonidan bajarilishi mumkin, bu esa tezlikni sezilarli darajada oshiradi.

JIT kompilyatori quyidagi afzalliklarni beradi:

Yuqori tezlik: Bayt kodni native code ga o'girib , dasturlarni ko'proq samarali bajaradi.

Ish vaqtida optimallashtirish: JIT kodni kompilyatsiya qilishda uni ishlash vaqtida qo'shimcha tahlil qilib, optimallashtirilgan kod yaratadi.
👍1
#Savol : Javada casting nima?

#Javob : Javada casting bitta ma'lumot turini boshqasiga o'zgartirish jarayonidir. Kengaytiruvchi (widening) va toraytiruvchi (narrowing) casting mavjud. Kengaytiruvchi casting avtomatik ravishda amalga oshiriladi, toraytiruvchi casting esa qo'lda bajariladi.

Kichik turdan kattaroq turga avtomatik casting:

byte → short → int → long → float → double

Katta turdan kichik turga casting quyidagi ko'rinishda bo'ladi:

double → float → long → int → short → byte
☄️“15 mln kuzatuvchisi bor YouTube kanali egasining telefonini buzib, kanal ma’murligini qo‘lga kiritishdi – shartli ravishda, albatta”
Yuqoridagi ma’lumotlar Dr. Algorithm Telegram kanalida e’lon qilingach turli muhokamalarga sabab bo‘ldi.
Asosiy ofisi Londonda joylashgan Moneff kompaniyasi IT-menejeri Saidolim Jo‘rayev yozyapti:
“Apple asoschilari avval telefon tizimini buzishgani (hack) qilishganini bilarmidingiz?
• Rim Papasiga tekinga telefon qilib, ertalab uyg‘otishganinichi?
• Dubay shayxining qizi Shayx Latifani telefon orqali ummon markazidan topishgani, GPS‘siz;
• SMS orqali keladigan bir martalik kalit so‘z – OTP (One Time Password)larni ham bilish mumkinligi;
• OTP orqali Telegram‘ga kirishga 15 soniya yetarli ekani;
• Python‘da yozilgan kod orqali sizga kelayotgan qo‘ng‘iroqlarni boshqa “qabul qilishi” mumkinligi;
• GPS‘siz qachon va qayerga borganingizni bilish qiyin emamligi;
Xullas, 15 million obunachisi bor YouTube kanalini buzib kirishdi – xavfsizlik tobora katta ahamiyat kasb etib bormoqda ...


🌐 Davomini o‘qish👉 https://us.uz/uz/news/post-199
📱 Suhbatni tomosha qilish👉 https://youtu.be/F5lt7riGD3c
☕️ Java BACKEND developers </>☕️
1695993267428.png
𝗪𝗵𝗲𝗻 𝘁𝗼 𝘀𝗲𝗹𝗲𝗰𝘁 𝗗𝗲𝘀𝗶𝗴𝗻 𝗣𝗮𝘁𝘁𝗲𝗿𝗻𝐬?

Choosing the correct design pattern in software engineering is critical to practical problem-solving.
This post will try to simplify the process, helping you decide between patterns based on specific needs.
To select a pattern, we must first go through the problem identification. If the problem is related to:
🔸 Object Creation? → Creational Patterns
🔸 Object Assembly? → Structural Patterns
🔸 Object Interactions? → Behavioral Patterns
1. Singleton: Ensures only one instance exists.
2. Factory Method: Delegates object instantiation to subclasses.
3. Abstract Factory: Creates related object families without specifying their concrete classes.
4. Prototype: Clones objects for a prototypical instance.
5. Builder: Constructs complex objects step by step.
6. Adapter: Bridges incompatible interfaces.
7. Bridge: Separates abstraction from implementation.
8. Composite: Treats single and composite objects uniformly.
9. Decorator: Adds behaviors to objects dynamically.
10. Facade: Simplifies complex system interfaces.
11. Flyweight: Shares objects to reduce memory.
12. Proxy: Controls object access.
13. Observer: Notifies changes to multiple objects.
14. Strategy: Encapsulates interchangeable algorithms.
15. Command: Encapsulates a request as an object.
16. State: Changes object behavior with internal state.
17. Visitor: Adds operations to object structures without modifying them.
18. Memento: Captures and restores object states externally.
19. Iterator: Sequentially accesses elements of a collection.
20. Mediator: Centralizes complex communications.
21. Chain of Responsibility: Passes requests along a chain of handlers.
22. Template Method: Defines the skeleton of an algorithm.
Forwarded from IT suhbat
#Collections

Yuqoridagi rasmda Javadagi deyarli har bir ma'lumot tuzilmasini qaysi vaziyatda tanlashlik uchun diagramma ishlab chiqilgan va juda tushunarli.

Manba: Linkedin.com dan olindi.

@it_suhbat
👍1
☝️Odatga aylangan post, yangi yil boshida foydalanuvchilarimiz qilishi kerak bo'lgan ishlarga to`xtalamiz

├ Wifi , ijtimoiy tarmoqlar , xizmat saytlari , aqilli qurilmalar , telefon parollarini yangilang

├ Pochta va Adminlik huquqingiz bor resurslarga yangi parol o'rnating va 2FA dan foydalaning

├ O'rnatilgan AT ni yangisiga almashtiring (Update emas) qaytadan o'rnating va Hardening (keraksiz servis va sozlamalarni cheklash) sozlovlarini o'rnating

├ Crack yoki Patch dasturlardan foydalanmang , ochiq kodli va bepul turli analog dasturlardan foydalaning

├ Torrent , Online game , Online dasturlardan imkon qadar cheklaning

├ Brovzeringiz uchun quyidagi qo'shimcha plaginlarni o'rnating :
Adblock , Yutub adblock , DTG , PopupB , HTTPS , UserA , PB , SF

├ Telefon qurilmangizni (Android) quyidagi post bo'yicha tekshiring

├ Tizimdagi (Windows) AV (antivirus) lar bazasini doimiy yangilang (Defender AV yetarli)🔥 Yangi yil boshida foydalanuvchilarimiz qilishi kerak bo'lgan ishlar !

├ Wifi , ijtimoiy tarmoqlar , xizmat saytlari , aqilli qurilmalar , telefon parollarini yangilang

├ Pochta va Adminlik huquqingiz bor resurslarga yangi parol o'rnating va 2FA dan foydalaning

├ O'rnatilgan AT ni yangisiga almashtiring (Update emas) qaytadan o'rnating va Hardening (keraksiz servis va sozlamalarni cheklash) sozlovlarini o'rnating

├ Crack yoki Patch dasturlardan foydalanmang , ochiq kodli va bepul turli analog dasturlardan foydalaning

├ Torrent , Online game , Online dasturlardan imkon qadar cheklaning

├ Brovzeringiz uchun quyidagi qo'shimcha plaginlarni o'rnating :
Adblock , Yutub adblock , DTG , PopupB , HTTPS , UserA , PB , SF

├ Telefon qurilmangizni (Android) quyidagi post bo'yicha tekshiring

├ Tizimdagi (Windows) AV (antivirus) lar bazasini doimiy yangilang (Defender AV yetarli)
👍1
Forwarded from Botir Ziyatov
DigitalOcean’dan 10 ta bepul VPS olish – 60 kunga

DigitalOcean — AQShda joylashgan, arzon va qulay bulutli server xizmatlarini taklif qiladigan kompaniya.
Agar siz ushbu havola orqali ro‘yxatdan o‘tsangiz, 200 dollar bepul balans olasiz.

Bu balansni VPS serverlar va boshqa xizmatlar sotib olishga ishlatishingiz mumkin.
Bepul balans 60 kun davomida amal qiladi.

E’tibor berishingiz kerak bo‘lgan narsa:
- Karta bog‘lash: Kartani bog‘laganingizda, hisobingizdan 1 dollar vaqtinchalik olinadi, keyin esa qaytariladi.

@botirziyatov
Forwarded from Dr. Algorithm
Juniorlarda ko‘p uchraydigan xatolar

[1-qism]

Kecha yangi kitob o‘qishni boshlagan edim, muallifi podcast yuritar ekan. Eshitib ko‘rish uchun kirdim. Birinchi eshitib ko‘rgan mavzuyim Juniorlar haqida edi.

Juniorlarda ko‘p uchraydigan xatolar

Bilamiz-ki, ko‘p savollar Juniorlar orasida chiqadi. Middle va seniorlar savollari ancha kam va kam takrorlanadi. Bu yerda junior dasturchilarda uchraydigan xatolarning ba’zilarini keltirib o‘taman.

1. Bir vaqtda ko‘p narsa o‘rganish.

Bir vaqtda bir necha katta texnologiyani o‘rganishni boshlashadi. Python, JavaScript yoki MongoDB kabi texnologiyalarni kimdir ularga kerak degani uchun o‘rganishni boshlashadi. Bu esa salbiy natijalarga olib keladi. Biror tilni yaxshi tushunmaslik, kerak bo‘lmasa ham o‘rganishga vaqt sarflash yoki imkoniyatlarni aralashtirib tushunish va ertaga kerak bo‘lganida qo‘llay olmaslik kabi. Eng yomoni biror loyihani faqat shu aytilgan texnologiyada qilish mumkin deb o‘ylash.

Tavsiya: Bir vaqtda faqat bitta til yoki texnologiyani mukammal o‘rganishga harakat qiling.


Vaqti kelib keyin boshqasiga o‘tib olaverasiz.


2. Version contol’ni tushunmaslik.

Version contol juda ajoyib narsa. U bilan tarixga qaytish mumkin, dasturning turli variantlarini sinab ko‘rish mumkin, bir biriga xalal bermay ishlash mumkin. Gitdan yaxshisi bo‘lmasa kerak, lekin man SVNni yaxshi ko‘rar edim. Agar kimdir hali ham file va zip bilan versiya saqlab yurgan bo‘lsa, uzr siz hali junior darajasiga yaqin ham kelmabsiz.

Bu mavzuda nafaqat juniorlar, balki katta dasturchilar ham xato qilib turishadi. Vaziyatlar ham turlicha. Ba’zilarini keltirib o‘taman.

* Commit qilishni unutish
* Keraksiz filelarni repoga yuklash. Masalan, IDE ishlatadigan sozlama (config)lar, muhit (env) fayllari, vaqtincha va ishga tushuvchi fayllar (build, .class, .so va boshqalar)
* Begona shoxga (branch) kodni yuklash.
* Force-push buyrug‘ini ishlatish 🤯
* Keng tarqalgani, Commit qilib, Push qilmaslik. (Yuklashga tayyorlab, yubormaslik)

Bularni qilmaslik uchun juda ko‘p usullar va qoliplar mavjud. (GitFlow masalan).

Tavsiya: Gitdan foydalanish qoidalari va korxonalar ishlatadigan usullar bilan tanishib qo‘ying. Agar siz ishlayotgan joyda joriy qilinmagan bo‘lsa, kiritishga harakat qiling.



3. Ma’lumotlar shakllarini bilmaslik

Ma’lumotlar bilan ishlaganda ko‘pchilik yosh dasturchilar ma’lumotning xotiradagi shaklini biladi. Integer, String va Array kabi. Hayotda esa ko‘proq CSV, JSon va XML lar bilan ishlashi kerak bo‘ladi.

Ko‘rinishidan juda sodda, ammo bilmaganlar uchun vaqt oladigan narsalar. Bu shakllar mohiyatini yaxshi bilmagan dasturchi ishi tushganida parser (o‘qigich) yasashga harakat qiladi. Vaholanki buning har biri uchun minglab parserlar allaqachon internetda bor.

Bu boradagi ba’zi maslahatlar:

CSV
* Barcha matn qiymatlarni qo‘shtirnoqqa oling.
* UTF-8 kodlashdan foydalaning.

JSON
* JSON va JavaScriptni farqini bilib oling.
* JSON to‘g‘ri bo‘lish tablarini o‘rganing.
* JSON ma’lumotingizni json schema yordamida tekshirishni biling.

XML
* Atributlar va elementlarni tushib oling.
* HTML bilan farqini biling.
* XQuery va XPath yordamida so‘rov yozishni o‘rganing.
* Case sensitive (bosh va kichik harflar bir xil hisoblanishi)ni hisobga oling.
* CData nima ekanini va mohiyatini tushunib oling.

Tavsiya: Fayllar bilan ishlaganda avval u fayl kengaytmasiga mos dasturlar bor ekanini qarab chiqing. Tayyor kutubxonalarni o‘rganib, ishlatib ko‘ring.


davomi bor...

Bitta xabarga sizmadi. Davomini keyingi postda.

16.01.2025 London
@DrAlgorithm