IT suhbat
876 subscribers
418 photos
105 videos
8 files
281 links
Faqat Java.

Hayot(im)dagi qiziq narsalar: @abdulvahid_ahmad
Download Telegram
Kelgan g'oyani oxirigacha va 100% optimallik bilan bajarguncha shuncha urinish ketdi.

Bugungi masala qiziq ekan, Bir qarashda oson, lekin nozik joyi bor ekan))

@it_suhbat
🔥7
O'ylab qarasam, birinchi marta junior va senior tushunchalarini qurilishda ishlagan paytim uchratgan ekanman.

15-16 yoshimda yozgi ta'tilda qurilishga ishga chiqqanman. Kuniga 20 mingdan berardi bizga. Katta usta bor edi, u 80 ming olardi)) Sababi uyning qurilishi, mustaxkamligi, bizlarni ishlatish va hokazo mas'uliyatli ishlar uning bo'ynida edi.

Mas'uliyatni bo'yningizga olganingiz sari ko'tarilasiz. Har tomonlama.

@it_suhbat
👍172🔥2
Bugungi masala va yana bitta medium masala juda qiziq ekan.
Ishlab ko'rishni tavsiya beraman.
🔥7👍2
HRlar, iltimos, raqamlarda va valyutalarda adashmanglar))

Bunaqada hamma system analyst bo'lib ketadiku))

@it_suhbat
😁26🗿3
#mock vs #spy

Mock — sinf yoki interfeysning skletini yasab beradi va unga so'rov bo'lganda o'zini qanday tutishini sozlashimizga, test davomida bu sinf metodlariga qanday so'rovlar bo'lganligini qayd qilib, tekshirishimizga yordam beradi.

Spy — sinfning haqiqiy obyektini hosil qiladi va xuddi mock'dagi kabi ta'sirlarni tekshirish imkoniyatini beradi.

Savol:
Qachon mock ishlatish kerak va qachon spy ishlatish kerak?

Javob:
Misol uchun, unit test jarayonida qandaydir adapter(tashqi servis bilan bog'lovchi, misol uchun REST) service bor va undan qaytgan natija ObjectMapper yordamida mapping qilinadi. Bu yerda adapter servis mock sifatida ishlatilishi mumkin. Ya'ni u o'zini haqiqiy servisdek tutmaydi, tashqi servisga so'rov yubormaydi. Biz oldindan tayyorlab qo'ygan javobni qaytarib bersa bo'ldi.
ObjectMapper esa spy bo'ladi. Sababi u qaytarilgan natijani haqiqatan mapping qilishi kerak. O'zining metodlarini to'laqonli bajarishi kerak. Shu bilan birga biz uning metodlariga murojaat bo'lgan yoki yo'qligini ham bemalol aniqlashimiz mumkin bo'ladi.

@it_suhbat
👍8
Tandirchi do'stlarimiz zo'r ketishyapti))

Va nihoyat kecha Javadan savollar qo'shildi. Endi bemalol kirib o'zbek tilida(!) bir-birimiz bilan bellashishimiz mumkin.

Ha aytgancha, siz platformada bo'lishini xohlagan noodatiy va qiziq savollarni bizdan.tandir.app manzili orqali qo'shishingiz ham mumkin.

Birgalikda ilm o'rganamiz, ulashamiz, tajriba oshiramiz.

📱 Android: Google Playdan yuklash
🍏 iOS: App Storedan yuklash

@it_suhbat
👍8🔥5
Leetcode'da SQL bo'yicha ham masalalar ishlab turishni tavsiya qilaman.

Misol uchun: investments-in-2016

@it_suhbat
🔥2
#stack

Har bir Thread runtime ma'lumotlar saqlash uchun o'z Stack xotirasiga ega bo'ladi. Stack xotiraning ma'lum hajmi bo'ladi. Agar Thread Stack xotirasiga sig'maydigan darajada ko'p elementlar bilan ishlashga harakat qilsa, StackOverflow xatoligini keltirib chiqaradi.

Java oqimlari turli operatsion tizimlarda turlicha belgilangan hajmlarga ega Stacklar bilan ishlaydi. Misol uchun:
Windows IA32 — 64 KB
Windows IA64 — 320 KB
Windows x64 — 128 KB
Linux IA32 — 128 KB
Linux IA64 — 1024 KB
Linux x64 — 256 KB
Solaris/SPARC — 512 KB

Undan tashqari JVM ning ichki oqimlari bor. Misol uchun garbage collector, code generation oqimlari. Bular uchun hamma platformalarda hajm 256 KB qilib belgilangan.

Stack hajmini o'zgartirish uchun -Xss tanlovidan foydalanish mumkin. Misol uchun:
java -Xss:512k MyApplication


Bu buyruq hamma Stack xotiralarni, jumladan, JVM ichki oqimlaridagi Stack xotira hajmini ham o'zgartiradi.

@it_suhbat
👍18🔥1
Tandir qiziyaptiyu, kiringlar :)
🔥8😁2🫡2
Dilxiralikka sabab boʻlarkan.
👍8👎2🔥2
#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
👍17🔥2🆒1
Bizda haqiqiy maʼnoda stand-up😅

Oldin kunlik stand-up ertalab soat 10:45 da oʻtkazilar edi. Lekin buning bir qancha minus taraflari bor. Ulardan biri, misol uchun, kunning birinchi qismida fokus bilan uzoq ishlash qiyin. Sababi daily'ga kirish kerak degan hayol 10:45 gacha ishlashga qoʻymaydi, undan keyin tushlikkacha kam vaqt qoladi.

Keyin stand-up'ni kunning oxiriga, 17:45 ga koʻchirishni taklif qildim. Bu sprint shunday ishlaymiz va retroda hamma oʻz fikrini bildiradi.

Siz nima deb oʻylaysiz, stand-up'ni kunning birinchi yarmida qilgan yaxshimi yoki kun yakunida?

@it_suhbat
👍12🔥3
Forwarded from Tandir (Future Dreams)
👉Savollar Tanlovining 5-roundiga start berildi!
Bu tanlovda bizga bellashuv savollarini yuborib pul mukofotiga ega bo’lishingiz mumkin

Bu safargi tillar
☕️Java - 3 million so’m
🐍 Python - 1 million so’m
⚙️ JavaScript - 1 million so’m

Yakunlanish vaqti: 13-sentabr, 23:59

📍Savollarni bu yerda bizga jo’nating: bizdan.tandir.app

#tanlov #java #python #javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11
#mock #test

Unit test yozishda biror sinfning private modifikatorli maydoniga o'zimizga kerakli qiymat berish uchun org.springframework.test modulining ReflectionTestUtils sinfidan foydalanishimiz mumkin.

Aytaylik, biz RateService sinf metodlarini test qilmoqchimiz. U yerda private modifikatorli rateUrl nomli maydon bor va uni @Value annotatsiyasi orqali qiymat o'zlashtiradigan qilib yozganmiz. Bu holda aynan shu maydonga MockWebServer manzilini o'zlashtirish uchun quyidagicha yondoshsak bo'ladi:

ReflectionTestUtils.setField(rateService, "rateUrl", String.format("http://%s:%d", mockBackEnd.getHostName(), mockBackEnd.getPort()));


Agar bu sinf sizda topilmayotgan bo'lsa, spring-boot-starter-test (spring boot loyihalari uchun) yoki spring-test(spring framework loyihalari uchun) dependency'larini qo'shishingiz kerak bo'ladi.

@it_suhbat
👍51
#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
👍8🔥5
Bugun leetcode'ning top 150 interview masalalar to'plamini ishlashni boshlagan edim.
Birinchi masala merge sorted array ekan. Birinchi marta 2021-yil ishlagan ekanman. Hozir hayolimga kelgan birinchi yo'l bilan ishladim va oldingi algoritmim qanaqa bo'lganligiga qiziqdim. Sal turib oldin qanaqa yechim qilgan ekanligimni tashlayman.
👍3
IT suhbat
Bu 2021-yil qilgan yechimim😅😂
Bu esa hozir birinchi hayolimga kelgan yechim, hech qanday qayta o'zgartirishlarsiz.

Ha, balki bu eng yaxshi yechim emasdir, har holda algoritm mutaxassisi emasman, lekin, o'ylashimcha oldingisidan ancha yaxshiroq.
🔥8