5-modul · 3-dars: Base64
Daraja: O'rta
Base64. Java kutubxonalari va Stream bo‘yicha nazariya, amaliy namuna va mustaqil mashq.
Tushuntirish
## Dars maqsadi Base64 tushunchalarini farqlash, nima uchun kerakligini izohlash va kichik misolda qo‘llash.
## Nazariya Binary (ikkilik) ma'lumotni 64 ta xavfsiz ASCII belgi orqali matn ko'rinishida ifodalovchi kodlash sxemasi.
Binary ma'lumotni (rasm, fayl) faqat matn qo'llaydigan joylarda (email, JSON, URL) xavfsiz uzatish/saqlash uchun.
## Intervyuga tayyorgarlik ### Base64 nima? Binary (ikkilik) ma'lumotni 64 ta xavfsiz ASCII belgi orqali matn ko'rinishida ifodalovchi kodlash sxemasi.
### Base64 encoding/decoding nima uchun kerak? Binary ma'lumotni (rasm, fayl) faqat matn qo'llaydigan joylarda (email, JSON, URL) xavfsiz uzatish/saqlash uchun.
### Base64 encoding/decoding jarayoni qanday amalga oshiriladi? Ma'lumot 3 baytlik (24 bit) bo'laklarga bo'linib, har biri 4 ta 6-bitlik guruhga ajratiladi; har guruh 64 belgili jadvaldan biriga moslanadi (kam bo'lsa `=` bilan to'ldiriladi).
### Base64 har bir belgi uchun necha bayt joy egallaydi? Har Base64 belgisi 6 bit ma'lumot tashiydi, lekin 1 bayt (8 bit) sifatida saqlanadi — natijada umumiy hajm ~33% ga oshadi.
### URL Base64 nima? URL/fayl nomlarida xavfsiz variant: `+` va `/` o'rniga `-` va `_` ishlatiladi (`Base64.getUrlEncoder()`).
### MIME Base64 nima? MIME (email) standarti uchun variant: har 76 belgidan keyin yangi qatorga o'tadi (`Base64.getMimeEncoder()`).
## Versiya va aniqlik Java misollari Java 17 bazasiga mo‘ljallangan. JDK/JRE paketlash usuli distributivga bog‘liq; JVM bayt-kodni interpretatsiya va JIT orqali bajarishi mumkin. GC uchun aniq bajarilish vaqtiga kafolat yo‘q; finalization resurs yopish usuli emas. Thread stop/suspend/resume kabi eski metodlar amaliy yechim emas. Koddagi import, klass yoki tashqi kutubxona kontekstini tekshiring.
Manbadagi 17 dars oldingi o‘quv arxividagi 10 guruhga birlashtirilgan: Lombok/Faker va Stream/Collectors hamda HttpClient/Gson/Reflection/Annotations birgalikda o‘rganiladi.
## Manbalar [Moduldagi savollar yo‘nalishi](https://github.com/jlkesh/pdp_online_java_lessons/blob/main/interviewquestions/5-module.md) [Rasmiy qo‘llanma](https://dev.java/learn/) [Sizning avvalgi savol-javob arxivingiz](https://lightyer.uz/java/interview.html)
Kod quyida o‘quv namunasi sifatida berilgan. To‘liq ilova uchun import, dependency va konfiguratsiya kerak bo‘lishi mumkin. SQLni faqat ajratilgan test bazasida bajaring.
Kod misoli
var encoded = java.util.Base64.getEncoder().encodeToString(
"Salom".getBytes(java.nio.charset.StandardCharsets.UTF_8));
var decoded = new String(java.util.Base64.getDecoder().decode(encoded),
java.nio.charset.StandardCharsets.UTF_8);
System.out.println(decoded); // Salom
Keng tarqalgan xatolar
- Base64 ni shifrlash deb o'ylash - u ochiq kodlash, hech qanday maxfiylik bermaydi.
- URL ichida oddiy Base64 ishlatish - `+` va `/` belgilari muammo qiladi, URL variant kerak.
Mashqlar
- Matnni Base64 ga o'girib, hajmi qanchaga oshganini hisoblang.
- Oddiy va URL-safe Base64 natijalarini solishtiring.
Teglar: nazariya, pdp, modul-05