C ++ tilida #delfine bilan ishlash
![C ++ tilida #delfine bilan ishlash
REJA:
1. #difine diriktivasi
2. Interfeysda ishlash uchun dasturlar (figma va h.k)
3. Fayl tizimlari(NTFS, FAT32 va h.k.)
4. Tarmoq protokollari
5. MD5, MD6, CRC, SHA1, SHA2 heshlash usullari
6. Hesh funksiya yaratish .
Foydalanilgan adabiyotlar](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_1.png)
![C++ #define
Preprotsessor buyruqlari DIRECTIVES deb ataladi va xesh belgisi (#) bilan
boshlanadi. # belgisidan oldin bo'sh bo'sh joy qolmasligi kerak, oxirida esa nuqtali
nuqta qo'yish kerak emas.
Oldindan ishlov berish bosqichida bajarilishi mumkin bo'lgan ko'p narsalar
quyidagilardan iborat:
#include direktivasi orqali boshqa fayllarni kiritish
#define direktivasi orqali ramziy konstantalar va makroslarni aniqlash
Ba'zi preprotsessor direktivalari orqali siz ba'zi preprotsessor direktivalarini shartli
ravishda kompilyatsiya qilishingiz yoki bajarishingiz mumkin.
Eslatma - C++ dasturining dastlabki ishlov berish bosqichi dastur kompilyatsiya
qilinishidan oldin sodir bo'ladi. C++ protsessori - bu manba kodini kompilyatsiya
qilishdan oldin bajariladigan dastur.
Siz allaqachon #include preprocessor direktivasi bilan ishlashni o'rgandingiz, bu sizga
kerakli sarlavha fayllarini dasturingizga kiritish imkonini beradi. Ushbu munozara yoki
bizniki #define preprocessor direktivasiga bag'ishlangan.
#define preprocessor bizga ramziy nomlar va konstantalarni aniqlash imkonini beradi.
#define dasturni kompilyatsiya qilishdan oldin matnni almashtirishga imkon beradi.
Preprotsessorlar ko'rsatmalar bo'lib, ular kompilyatorga haqiqiy kompilyatsiya
boshlanishidan oldin ma'lumotni qayta ishlash bo'yicha ko'rsatmalar beradi.
Barcha preprotsessor direktivalari # bilan boshlanadi va satrda protsessor direktivasi
oldida faqat oq bo'shliq belgilari paydo bo'lishi mumkin. Preprotsessor direktivalari C+
+ iboralari emas, shuning uchun ular nuqta-vergul (;) bilan tugamaydi.
Siz allaqachon barcha misollarda #include direktivasini ko'rgansiz . Ushbu
makros sarlavha faylini manba faylga kiritish uchun ishlatiladi.
C++ tilida #include, #define, #if, #else, #line va boshqalar qo'llab-
quvvatlanadigan bir qator preprotsessor direktivalari mavjud. Keling, muhim
direktivalarni ko'rib chiqaylik
#define preprocessor direktivasi ramziy konstantalarni yaratadi. Simvolik konstanta
makro deb ataladi va direktivaning umumiy shakli -
#define macro-name replacement-text](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_2.png)
![Ushbu qator faylda paydo bo'lganda, dastur kompilyatsiya qilinishidan oldin
ushbu fayldagi makrosning barcha keyingi holatlari almashtirish matni bilan
almashtiriladi. Masalan -
#include <iostream>
using namespace std ;
#define PI 3.14159
int main () {
cout << "Value of PI :" << PI << endl ;
return 0 ;
}
Keling, bizda manba kodi fayli borligini faraz qilgan holda natijani ko'rish
uchun ushbu kodni oldindan qayta ishlaymiz. Keling, uni -E varianti bilan
kompilyatsiya qilamiz va natijani test.p ga yo'naltiramiz. Endi, agar siz test.p ni
tekshirsangiz, unda juda ko'p ma'lumotlar bo'ladi va pastki qismida siz quyidagi tarzda
o'zgartirilgan qiymatni topasiz -
$gcc -E test.cpp > test.p...
int main () {
cout << "Value of PI :" << 3.14159 << endl;
return 0;
}
Funktsiyaga o'xshash makrolar
Argumentni quyidagi tarzda qabul qiladigan makrosni aniqlash uchun #define dan
foydalanishingiz mumkin Jonli demo
#include <iostream>
using namespace std ;
#define MIN ( a , b ) ((( a )<( b )) ? a : b )
int main () {](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_3.png)
![int i , j ;
i = 100 ;
j = 30 ;
cout << "The minimum is " << MIN ( i , j ) << endl ;
return 0 ;
}
Agar biz yuqoridagi kodni kompilyatsiya qilsak va ishga tushirsak, bu quyidagi
natijani beradi -
Shartli kompilyatsiya
Dasturingiz manba kodining tanlangan qismlarini kompilyatsiya qilish uchun
ishlatilishi mumkin bo'lgan bir nechta direktivalar mavjud. Bu jarayon shartli
kompilyatsiya deb ataladi.
Shartli preprotsessor konstruktsiyasi "agar" tanlash strukturasiga juda
o'xshaydi. Quyidagi protsessor kodini ko'rib chiqing -
#ifndef NULL
#define NULL 0
#endif
Nosozliklarni tuzatish uchun dasturni kompilyatsiya qilishingiz mumkin. Shuningdek,
bitta makros yordamida disk raskadrovkani quyidagi tarzda yoqishingiz yoki
o'chirishingiz mumkin
#ifdef DEBUG
cerr <<"Variable x = " << x << endl;
#endif
Bu, agar #ifdef DEBUG direktivasidan oldin DEBUG ramziy doimiysi aniqlangan
bo'lsa, cerr bayonoti dasturda kompilyatsiya qilinishiga olib keladi. Dasturning bir
qismini quyidagicha izohlash uchun #if 0 iborasidan foydalanishingiz mumkin -
#if 0](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_4.png)
![code prevented from compiling
#endif
Keling, quyidagi misolni sinab ko'raylik - Jnli demo
#include <iostream>
using namespace std ;
#define DEBUG
#define MIN ( a , b ) ((( a )<( b )) ? a : b )
int main () {
int i , j ;
i = 100 ;
j = 30 ;
#ifdef DEBUG
cerr << "Trace: Inside main function" << endl ;
#endif
#if 0
/* This is commented part */
cout << MKSTR ( HELLO C ++) << endl ;
#endif
cout << "The minimum is " << MIN ( i , j ) << endl ;
#ifdef DEBUG
cerr << "Trace: Coming out of main function" << endl ;
#endif
return 0 ;
}
Agar biz yuqoridagi kodni kompilyatsiya qilsak va ishga tushirsak, bu quyidagi
natijani beradi -
# va ## operatorlari](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_5.png)
![# va ## preprotsessor operatorlari C++ va ANSI/ISO C tillarida mavjud. # operatori
almashtirish matnli tokenni qo'shtirnoqlar bilan o'ralgan qatorga aylantirishga olib
keladi.
#include <iostream>
using namespace std ;
#define MKSTR ( x ) #x
int main () {
cout << MKSTR ( HELLO C ++) << endl ;
return 0 ;
}
Agar biz yuqoridagi kodni kompilyatsiya qilsak va ishga tushirsak, bu quyidagi
natijani beradi -
Keling, bu qanday ishlaganini ko'rib chiqaylik. C++ protsessorining − chizig'ini
aylantirishini tushunish oson
cout << MKSTR(HELLO C++) << endl;
Yuqoridagi chiziq keyingi qatorga aylantiriladi -
cout << "HELLO C++" << endl;
## operatori ikkita tokenni birlashtirish uchun ishlatiladi. Mana bir misol -
#define CONCAT( x, y ) x ## y
Dasturda CONCAT paydo bo'lganda, uning argumentlari birlashtiriladi va makrosni
almashtirish uchun ishlatiladi. Masalan, CONCAT(HELLO, C++) quyidagi tarzda
dasturda “HELLO C++” bilan almashtiriladi. Jonli demo
#include <iostream>
using namespace std ;
#define concat ( a , b ) a ## b
int main () {
int xy = 100 ;](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_6.png)
![cout << concat ( x , y );
return 0 ;
}
Agar biz yuqoridagi kodni kompilyatsiya qilsak va ishga tushirsak, bu quyidagi
natijani beradi -
Keling, bu qanday ishlaganini ko'rib chiqaylik. C++ preprotsessorining − ni
o'zgartirishini tushunish oson
cout << concat(x, y);
Yuqoridagi qator quyidagi qatorga o'zgartiriladi -
cout << xy;
Oldindan belgilangan C++ makroslari
C++ quyida keltirilgan bir qancha oldindan belgilangan makroslarni taqdim etadi -
Sr.N
o Makro va tavsif
1
__LINE__
Bu dastur tuzilayotganda joriy satr raqamini o'z ichiga oladi.
2
__FILE__
U kompilyatsiya qilinayotganda dasturning joriy fayl nomini o'z ichiga
oladi.
3
__DATE__
Bu oy/kun/yil shaklining qatorini o'z ichiga oladi, bu manba faylning
ob'ekt kodiga tarjima qilingan sanasi.
4
__TIME__](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_7.png)
![Bu soat: daqiqa: soniya shaklining qatorini o'z ichiga oladi, bu dastur
tuzilgan vaqt.
Keling, yuqoridagi barcha makrolar uchun misolni ko'rib chiqaylik -
#include <iostream>
using namespace std ;
int main () {
cout << "Value of __LINE__ : " << __LINE__ << endl ;
cout << "Value of __FILE__ : " << __FILE__ << endl ;
cout << "Value of __DATE__ : " << __DATE__ << endl ;
cout << "Value of __TIME__ : " << __TIME__ << endl ;
return 0 ;
}
Figma alternativalari va raqobatchilari
InVision - dunyodagi eng aqlli kompaniyalarni quvvatlaydigan vizual hamkorlik
platformasi. Biz har qanday ishni yanada hamkorlikka asoslangan, qamrab oluvchi va
ta'sirli qilish uchun mavjudmiz. Platformamiz, amaliyotlarimiz va hamjamiyatimiz
o'rtasida biz o'n minglab tashkilotlarga o'zlarining eng qimmatli aktivlaridan, ya'ni
odamlaridan maksimal darajada foydalanishlari uchun o'z jarayonlari va ish
jarayonlarini yaxshilashga imkon beramiz. Invisionapp.com saytida bepul sinov uchun
ro'yxatdan o'ting va raqamli mahsulot ish jarayonini soddalashtirishni boshlang.
Moqups - bu doska, diagramma va dizayn xususiyatlarini yagona onlayn ilovada
birlashtirgan vizual hamkorlik vositasi. Har qanday loyiha uchun keng ko'lamli vizual
materiallarni yaratish uchun real vaqtda o'ylang, rejalashtiring va muloqot qiling: simli
ramkalar, maketlar, diagrammalar, aqliy xaritalar, asboblar paneli va prototiplar.
Moqups 2 milliondan ortiq mahsulot menejerlari, biznes-tahlilchilar, UX](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_8.png)
![mutaxassislari, rahbarlar va murakkab loyihalar bo'yicha poydevor ishlarini
bajaradigan o'zaro faoliyat guruhlar tomonidan qo'llaniladi.
UXPin interaktiv prototiplash, dizayn tizimlari va hujjatlar uchun ideal dizayn
vositasidir. Bizning eng so nggi funksiyalarimizdan ba zilari quyidagilardan iborat:ʻ ʼ
O zgaruvchilar, shartli o zaro ta sirlar, ifodalar, interaktiv holatlar, ma lumotlar
ʻ ʻ ʼ ʼ
generatori (UXPin da bepul suratlarni olish uchun Unsplash bilan birlashtirilgan!). Va
ʼ
yana ko'p narsalar! UXPin-da dizaynni boshlash uchun keng qamrovli trening talab
qilinmaydi. Bizning zamonaviy va intuitiv muharririmiz sizga ilovadan chiqmasdan
boshidan oxirigacha mukammal foydalanuvchi tajribasini tezda yaratishga imkon
beradi. Boshqa tasvirga asoslangan dizayn vositalaridan farqli o'laroq, UXPin-da
yaratgan har qanday narsa html, CSS va JS kodlariga asoslanadi. Ishlab chiquvchilar
xuddi shu texnologiya bilan ishlaydilar, ularning kodi har doim sizning dizayningizga
mukammal mos keladi. Nima uchun kodga asoslangan dizayn? 2010 yildan boshlab,
UXPin dizayn va injiniringni yaxshiroq va tezroq mahsulotlarni ishlab chiqish
dunyosiga birlashtirib, eng yaxshi foydalanuvchi tajribasini taqdim etish vazifasini
bajargan. UXPinni bepul sinov muddati bilan o zingizni sinab ko ring:
ʻ ʻ
https://goo.gl/zfM6yL
Mockflow umumiy ko'rinishi
Boshqa an'anaviy vositalar kabi UI dizayni bilan to'xtamang. Keyingi katta ishingiz
uchun jamoalar, aktivlar va vositalarni birlashtirish uchun to'liq mahsulot dizayni
tajribasi uchun MockFlow-dan foydalaning.
Lucidchart - bu aqlli diagrammalash ilovasi bo'lib, jamoalarga murakkablikni aniqlash,
o'z tushunchalarini moslashtirish va kelajakni tezroq qurish imkonini beradi. Lucid
Software Visual Collaboration Suite ning bir qismi bo lgan ushbu intuitiv, bulutga
ʻ
asoslangan yechim jamoalarga real vaqt rejimida oqim sxemalari, maketlar, UML
diagrammalari, mijozlar sayohati xaritalarini va boshqalarni yaratishda hamkorlik
qilish imkonini beradi. Top bizneslar butun dunyo bo ylab Lucid Software
ʻ
mahsulotlaridan, jumladan Google, GE va NBC Universal kabi mijozlardan
foydalanadilar. Kompaniya tashkil etilganidan beri u o'z mahsulotlari, biznesi va ish
joyidagi madaniyati uchun ko'plab mukofotlarga sazovor bo'ldi.
Balsamiq Wireframes - bu qog'oz eskizlarining qulayligi va soddaligini raqamli
asbobning kuchi bilan birlashtirgan tezkor simli ramka yaratish dasturi, shuning uchun](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_9.png)
![ishingizni almashish, o'zgartirish va halol fikr-mulohazalarni olish osonroq. Maketlar
eskizlarga o'xshaydi, shuning uchun manfaatdor tomonlar kichik tafsilotlar bilan
chalg'imaydi va o'rniga asosiy narsaga e'tibor qaratishlari mumkin. Balsamiq haqiqatan
ham yangi interfeysni loyihalashning dastlabki bosqichlarida porlaydi. Bizning kichik
vositamiz zenware bo'lib, u sizga "zonaga" kirishga va u erda qolishingizga yordam
beradi. Bizning maqsadimiz siz bizning dasturiy ta'minotimiz mavjudligini
unutishingizdir. Balsamiq raqamli vositaning afzalligi bilan qalam bilan eskiz chizish
bilan bir xil tezlik va qo'pol tuyg'uni taqdim etadi: elementlarning o'lchamini
o'zgartirish va tartibni o'zgartirish uchun sudrab va tashlab qo'ying, boshidan
boshlamasdan o'zgartirishlar kiriting va ishingiz etarlicha ravshan bo'ladi. ularni
keyinroq tushunaman. Iltimos, biz G2Crowd bilan bog‘lanish so‘rovlariga javob
bermaymiz. Bizni qanday va qayerdan topishingiz mumkin:
https://balsamiq.com/company/#contact
Adobe XD zamonaviy UX/UI dizaynerlarining ehtiyojlarini qondirish uchun yaratilgan
bo'lib, intuitiv vositalar bilan yuqori aniqlik va unumdorlikni ta'minlaydi va kundalik
vazifalarni osonlashtiradi.
Marvel nima?
Dizayn va prototiplash hamma uchun. Kodlash shart emas. Ro'yxatdan o'tish bepul!
Fluid UI - bu ish stoli va mobil qurilmalar uchun dunyodagi №1 onlayn prototiplash va
simli ramka yaratish vositasi.
Fayl tizimlari
Fayllarni boshqarish uchun fayllarni boshqarish tizimi tuziladi. Faylli tizim , bu uning
dasturiy ta’minotiga mos keluvchi maxsus instruksiyalar majmui bo’lib, u fayllarni
tuzish, yo’qotish, tashkil etish, o’kish, yozish, faylli axborotlarni modifikasiya qilish
va siljitish, shuningdek fayllarga kirishni boshqarish va resurslarni boshqarishga javob
beradi.
Faylli tizim - bu operatsion tizimning qismi bo’lib, uning vazifasi foydalanuvchiga
diskda saqlanayotgan berilganlar bilan ishlash uchun qulay interfeysni yaratish, va
faylllardan bir nechta foydalanuvchilar va jarayonlarda birgalikda foydalanishini
ta’minlashdan iborat.
FAT (File Allocation Table – fayllarni joylashtirish jadvali) fayl tizimi.](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_10.png)
![Bu fayl tizimining turli OT larda ishlaydigan, turli v е rsiyalari mavjuddir: FAT, FAT
12, FAT 16, super FAT va x.k.lar. FAT fayl tizimni (ko’pincha FAT 16 faraz qilinadi),
katta qo’shimcha sarf xarajatlar bo’lgani uchun, 511 Mbaytdan o’lchamlari katta
bo’lgan tomlar (disklar) uchun ishlatish tavsiya etilmaydi. FAT o’zida Oddiy fayl
tizimni ifodalab katta bo’lmagan disklar va oddiy kataloglar tuzilishi uchun ishlab
chiqilgan.
FAT32 fayllar tizimi.
Kirish chiqish operasiyalarni barchasini tezligi va unumdorligini oshirib, u qattiq
disklarga optimal kirishini ta’minlaydi. Hajmi 2 Gbayt dan oshiq bo’lgan tomlarni
ishlatish uchun mo’ljallangan fayl tizimning takomillashgan versiyasini FAT32
namoyon qiladi.
FAT32 fayl tizimning mikoniyatlari FAT 16 fayl tizimning imkoniyatlaridan ancha
oshiq.
FAT fayl tizimni avvalgi ish bajarishlariga qaraganda FAT32 fayl tizimi quyidagi
ustunliklarni ta’minlaydi:
O’lchami 2 terabaytgacha bo’lgan disklarni quvvatlashini ta’minlaydi;
Disk maydoni unumliroq ishlatiladi. FAT32 maydaroq klasterlarni (o’lchamlari
8 Gbayt bo’lgan disklar uchun 4 Kbayt o’lchamli klasterlar ishlatiladi) ishlatish
hisobiga FAT ga nisbatan diskli maydonni 10-15% ga ishlatish unumdorligini
oshirishga imkon yaratadi, shuningdek, kompyuterni ishlatish uchun kerak
bo’lgan resurslarga talabni pasaytiradi
Yuqori ishonchlik darajasini ta’minlaydi. FAT32 ildizli katalogni bir joydan
ikkinchi joyga siljitish va o’z- o’zidan standart nusxasi o’rniga FAT ni
zahiradagi nusxasini ishlatishga imkon yaratadi.
Dasturlarni ancha tez yuklanishi. FAT32 klasterlarining o’lchamlari kichik
bo’lgani uchun, ilovalar va ularni yuklash uchun fayllar diskda optimal ravishda
joylanishi mumkin.
NTFS fayl tizimi
NTFS (New Technology File System –yangi t е xnologiya fayl tizimi) fayl tizimi
nomida yangi so’zi mavjuddir. haqiqatda, NTFS fayl tizimi, taniqli FAT 16 (vahatto
FAT 32)ga nisbatan s е zilarli mukammalliklar va o’zgarishlarni o’z ichiga olgan.](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_11.png)
![NTFS ni loyihalashda alohida diqqatni ishonchlilikka, katalog va fayllarga murojaatni
ch е garalash m е xanizmiga, k е ngaytirilgan funktsionallikka , katta xajmdagi disklarni
qo’llashga va x.k.larga qaratildi. Bu tizim OS/2 V.3 doirasida ishlab chiqila boshladi,
shuning uchun ham u HPFS fayl tizimi ko’pgina qiziqarli xususiyatlarini olgan.
NTFS fayl tizimi asosiy imkoniyatlari.
Ishonchlilik. Yuqori unumdorlikka ega bo’lgan va birgalikda foydalanish tizimlari,
yuqori ishonchlilikka ega bo’lishi k е rak. Bu esa NTFS tizimining eng muhim
el е m е ntidan iboratdir. NTFS tizimi, o’z-o’zini tiklashning ma'lum vositalariga ega.
Fayl va kataloglarga murojaat ch е garalari . NTFS fayl tizimi Windows NT OTi
xavfsizlik ob' е kt mod е lini qo’llaydi va hamma tom, katalog va fayllarga mustaqil
ob' е kt sifatida haraydi. NTFS tizimi xavfsizlikni fayl va kataloglar darajasida
ta'minlaydi.
K е ngaytirilgan funktsionallik . NTFS tizimi mumkin bo’lgan k е ngaytirish hisobga
olinib loyihalashtirilgan. Unda ko’pgina qo’shimcha imkoniyatlar aks ettirilganyuqori
darajada buzilishlarga hat'iylik, boshqa fayl tizimlari emulyatsiyasi, kuchli xavfsizlik
mod е li, ma'lumotlar ohimiga parall е l ishlov b е rish va fayl atributlarini yaratish
(foydalanuvchi b е lgilaydigan).
Faqat NTFS fayl tizim tomonidan bugungi kunda ta’minlanadigan ba’zi bir
imkoniyalar:
FAT ga qaraganda, NTFS keng diapazon yechimlarni ta’minlaydi, bu esa
muayyan fayllar va kataloglar uchun yechimlarni alohida o’rnatishga imkon
beradi. Bu qaysi foydalanuvchi va guruhlar faylga yoki papkaga kirishiga ega va
kirish turini ko’rsatishga imkon yaratadi.
Ma’lumotlarni tiklash uchun o’rnatilgan vositalar; shuning uchun, NTFS tomida
foydalanuvchi diskni tiklash dasturini qachon yurgizish kerakligi juda kamdan
kam uchraydigan holat.
ReiserFS Linux dunyosidan yana bir yosh va istiqbolli fayl tizimi ReiserFS... Hans
Reiser amerikalik ishlab chiqish guruhining sa'y -harakatlari bilan, u ext3 qo'llab -
quvvatlashi qo'shilishidan oldin, 2001 yilda 2.4.1 Linux yadrosiga qo'shilgan birinchi
jurnal fayl tizimiga aylandi.
Aslida, keyingi ext3 singari, ReiserFS Linuxda to'liq yoki qisman jurnalni
ishlatishga imkon berdi. Biroq, ext3 -dan farqli o'laroq, u ruxsat etilgan kattaroq fayl](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_12.png)
![hajmiga ega edi (2 ta versiya 8 TiBgacha) va fayl nomining maksimal uzunligi bayt
emas, balki 255 belgidan iborat (4032 bayt).
Bundan tashqari, foydalanuvchilar sevib qolgan ReiserFS xususiyatlaridan biri bu
bo'limni ajratmasdan o'lchamini o'zgartirish edi. Ext2 o'xshash xususiyatga ega emas
edi, lekin keyinchalik u ext3 da paydo bo'ldi, garchi ReiserFS bu borada ham birinchi
bo'ldi.
O'z davrining muqobil fayl tizimlaridan bir qator afzalliklarga qaramay, ReiserFS
ham kamchiliklardan xoli emas edi. Ulardan eng muhimi, metadata tuzilishi va
defragmentatsiyaning samarasiz algoritmi buzilgan taqdirda, xatolarga nisbatan
bardoshliligi. Shuning uchun, 2004 yilda fayl tizimini takomillashtirish ishlari
boshlandi, u ma'lum bo'ldi Reiser4.
To'g'ri, bir qator yangiliklar, yaxshilanishlar va tuzatishlarga qaramay, yangi fayl
tizimi bir nechta ixlosmandlarga yoqdi. Gap shundaki, 2006 yilda Xans Rayser o'z
xotinini o'ldirgan va hibsga olingan, keyinroq qamalgan. Shunga ko'ra, uning Reiser4
ni ishlab chiqqan Namesys kompaniyasi tarqatib yuborildi. O'shandan beri fayl
tizimini qo'llab -quvvatlash va takomillashtirish rus ishlab chiqaruvchisi Eduard
Shishkin nazorati ostida ishlab chiquvchilar guruhi tomonidan amalga oshirildi.
Oxir -oqibat, Reiser4 -ni qo'llab -quvvatlash Linux yadrosiga hali qo'shilmagan,
lekin ReiserFS. Shuning uchun, ko'p odamlar uni turli xil yig'ilishlarda standart fayl
tizimi sifatida ishlatishda davom etadilar.
HFS Turli xil operatsion tizimlar uchun xos bo'lgan fayl tizimlari haqida
gapirganda, MacOS -ni ham eslab bo'lmaydi HFS(inglizcha qisqartirilgan. "Ierarxik
fayl tizimi" - "ierarxik fayl tizimi"). Bu tizimning birinchi versiyalari 1985 yilda
Macintosh System 1.0 operatsion tizimi bilan birga paydo bo'lgan:
Zamonaviy standartlarga ko'ra, bu fayl tizimi juda samarasiz edi, shuning uchun
1998 yilda MacOS 8.1 bilan bir qatorda uning takomillashtirilgan versiyasi paydo
bo'ldi. HFS + yoki Mac OS kengaytirilgan bugungi kungacha saqlanib qolgan.
Oldingi kabi, HFS + diskni 512 KB bloklarga ajratadi (sukut bo'yicha), ular ma'lum
fayllarni saqlash uchun mas'ul bo'lgan klasterlarga birlashtirilgan. Biroq, yangi FS 32-
bitli manzilga ega (16-bit o'rniga). Bu yozib olingan fayl hajmi bo'yicha cheklovlarni
oldini oladi va maksimal 8 ta EIB (va oxirgi tahrirlarda 16 EiBgacha) hajmining
maksimal hajmini qo'llab -quvvatlaydi.](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_13.png)
![HFS + ning boshqa afzalliklari orasida jurnal yozish (HFSJ deb nomlangan
maxfiy hajm ajratilgan), shuningdek, ko'p ishlov berish kiradi. Bundan tashqari, agar
NTFSda muqobil oqimlar saqlanadigan ma'lumotlarning turlari bo'yicha aniq tartibga
ega bo'lmasa, HFS + da ikkita oqim aniq ajratilgan: ma'lumotlar oqimi (asosiy fayl
ma'lumotlarini saqlaydi) va manba oqimi (fayl metadatalarini saqlaydi). .
HFS + an'anaviy HDD -lar uchun deyarli ideal, biroq, yuqorida muhokama
qilingan ReiserFS kabi, u ma'lumotlarni parchalanishiga qarshi kurashda eng samarali
algoritmlarga ega emas. Shu sababli, SSD-drayverlarning ko'payishi va ularni Apple
uskunasiga kiritilishi bilan 2016 yilda ishlab chiqilgan fayl tizimi tobora ko'proq uning
o'rnini bosmoqda. APFS(inglizcha qisqartirilgan. "Apple Fayl tizimi" - "Apple fayl
tizimi"), u ish stoli macOS High Sierra (10.13) va mobil iOS 10.3 da paydo bo'lgan.
Ko'p jihatdan, APFS o'qish / yozish jarayonlarini optimallashtirish nuqtai
nazaridan exFAT -ga o'xshaydi, ammo undan farqli o'laroq, u jurnalga ega,
ma'lumotlarga kirish huquqlarini taqsimlashni qo'llab -quvvatlaydi, ma'lumotlarni
shifrlash va siqish algoritmlarini yaxshilaydi, shuningdek, ovoz balandligi bilan ham
ishlashi mumkin. 64 bitli manzillar tufayli 9 YiBgacha (kulmang - "yobibayt")!
APFSning yagona kamchiligi shundaki, u faqat zamonaviy Apple texnologiyasi
tomonidan qo'llab -quvvatlanadi va boshqa platformalarda hali mavjud emas.
Tarmoq protokollari
Tarmoq protokoli tarmoq qurilmalari orasidagi aloqa uchun qoidalar va
qoidalarni belgilaydi. Tarmoq protokollari qurilmalar bir-birlari bilan aloqa o'rnatish
va ularni bog'lash uchun mexanizmlarni, shuningdek ma'lumotlarni yuborilgan va
qabul qilingan xabarlarga qanday paketlanganligini ko'rsatuvchi formatlash qoidalarini
o'z ichiga oladi. Ba'zi protokollar ishonchli va / yoki yuqori ishlaydigan tarmoq aloqasi
uchun mo'ljallangan xabarlarni tasdiqlash va ma'lumotlarni siqishni qo'llab-
quvvatlaydi.
Kompyuter tarmog'i uchun zamonaviy protokollar, odatda, paketlar shaklida
xabarlarni jo'natish va qabul qilish uchun paketli kommutatsiya texnikasidan
foydalanadi - to'plangan va qayta o'rnatiladigan qismlarga bo'lingan xabarlarga
bo'linadigan xabarlar. Har biri alohida kompyuter uchun mo'ljallangan har bir yuzlab
kompyuter protokoli ishlab chiqilgan. maqsadlar va muhitlar.](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_14.png)
![Internet protokoli turkumlari Internet protokoli (IP) ning o'zi bilan
birga, TCP , UDP , HTTP va FTP kabi yuqori darajadagi protokollarning qo'shimcha
imkoniyatlarini ta'minlash uchun IP bilan birlashtirilgan (va eng ko'p ishlatiladigan
tarmoq protokollaridan iborat) majmuini o'z ichiga oladi. ARP va ICMP kabi past
darajadagi Internet protokollari ham IP bilan birgalikda mavjud.Umuman , IP-oiladagi
yuqori darajadagi protokollar veb-brauzerlar kabi ilovalar bilan yanada yaqinroq
hamkorlik qiladi, past darajadagi protokollar tarmoq adapterlari va boshqa kompyuter
uskunalari bilan o'zaro ta'sir qiladi.
Simsiz tarmoq protokollari Wi-Fi , Bluetooth va LTE tufayli simsiz tarmoqlar
odatiy holga aylandi. Simsiz tarmoqlarda foydalanish uchun mo'ljallangan tarmoq
protokollari roumingda mobil qurilmalarni qo'llab-quvvatlashi va o'zgaruvchan
ma'lumotlar tezligi va tarmoq xavfsizligi kabi masalalar bilan shug'ullanishi kerak.
Batafsil: Simsiz tarmoq protokollariga ko'rsatma .
Tarmoqni yo'naltirish protokollari . Yonaltiruvchi protokollar -
Internetdagi tarmoq routerlari uchun mo'ljallangan maxsus mo'ljallangan
protokollardir. Yonaltiruvchi protokol boshqa ruterlarni identifikatsiya qilishi, tarmoqli
xabarlar manbalari va tarmoq xabarlari yo'nalishlari o'rtasidagi yo'llarni
( marshrutlar ) boshqarishi va dinamik marshrutlash bo'yicha qarorlarni qabul qilishi
mumkin. Umumiy marshrutlash protokollariga EIGRP, OSPF va BGP kiradi.
Tarmoq protokollari qanday amalga oshiriladi . Zamonaviy operatsion tizimlar
ba'zi bir tarmoq protokollarini qo'llab-quvvatlaydigan o'rnatilgan dasturiy ta'minot
xizmatlarini o'z ichiga oladi. Veb-brauzerlar kabi ilovalar ushbu dasturning ishlashi
uchun zarur bo'lgan yuqori darajali protokollarni qo'llab-quvvatlaydigan dasturiy
kutubxonalarini o'z ichiga oladi. Ba'zi bir past darajadagi TCP / IP va marshrutlash
protokollari uchun qo'llab-quvvatlanadigan ish faoliyatini yaxshilanishi uchun bevosita
apparat (silikon chipsetlar) orqali amalga oshiriladi.
Tarmoq orqali uzatilgan va qabul qilingan har bir paket ikkitomonlama
ma'lumotlarni (har bir xabarning mazmunini kodlaydiganlar va nol) o'z ichiga oladi.
Aksariyat protokollar, xabarning jo'natuvchisi va uning maqsadiga mo'ljallangan
ma'lumotni saqlash uchun har bir paketning boshida kichik sarlavhani qo'shib qo'yadi.
Ba'zi protokollar oxirida taglik qo'shishadi. Har bir tarmoq protokoli o'z turidagi](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_15.png)
![xabarlarni aniqlab olish va qurilmalar o'rtasida harakatlanuvchi ma'lumotlarning bir
qismi sifatida sarlavh va satrlarni ishlov berishga qodir.
Yuqori va quyi darajalarda birga ishlaydigan tarmoq protokollari guruhi
odatda protokol oilasi deb ataladi. Tarmoqdagi talabalar an'anaviy tarzda OSI
modeli haqida ma'lumot olishadi, bu tarmoq protokoli oilalarini ta'lim maqsadlari
uchun muayyan qatlamlarga kontseptual tarzda tashkil etadi.
Bir kompyuter tarmog'ining jismoniy qismlarini o'z-o'zidan yig'ish vazifasini
bajarish uchun etarli emas. Ushbu aloqa tillari tarmoq protokollari deb ataladi.
Tarmoq protokollarining maqsadi . Protokollarsiz qurilmalar tarmoq aloqasi orqali
bir-birlariga yuboradigan elektron signallarni tushunishga qodir emas. Tarmoq
protokollari quyidagi asosiy funktsiyalarga xizmat qiladi:
manzil ma'lumotlarini to'g'ri qabul qiluvchiga (larga)
kerak bo'lganda xavfsizlikni muhofaza qilish bilan jismoniy manbalardan
manbaga ma'lumot uzatish
xabarlarni qabul qilish va javoblarni to'g'ri yuborish
Tarmoq protokollari bilan pochta xizmatining jismoniy qog'ozni qanday ishlashini
taqqoslashni ko'rib chiqing. Pochta aloqasi ko'pgina manbalar va yo'nalishlardagi
xatlarni boshqaradi, shuning uchun tarmoq protokollari ma'lumotlar uzluksiz ko'p
yo'llar bo'ylab oqishini ta'minlaydi. Tarmoq protokollaridan farqli o'laroq, tarmoq
protokollaridan birida ( oqim deb ataladigan) doimiy xabarlar oqimini etkazish va
avtomatik ravishda xabar nusxalarini yaratish va bir vaqtning o'zida bir nechta
yo'nalishlarga ( efir deb ataladigan) etkazib berish kabi ba'zi bir rivojlangan
qobiliyatlar ham mavjud.
Umumiy tarmoq protokollarining turlari .Hech bir protokol mavjud emas, barcha
xususiyatlarni qo'llab-quvvatlaydigan har qanday kompyuter tarmog'i kerak. Bir necha
tarmoq protokollarining turli xil turlari yillar mobaynida ixtiro qilindi, ularning har biri
tarmoqning ma'lum turlarini qo'llab-quvvatlashga urinib ko'rdi. Bir turdagi protokolni
boshqasidan ajratib turadigan uchta asosiy xususiyat:
1. Oddiy va boshqalar. Dupleks . Simplex aloqasi faqat bitta qurilmaga tarmoq orqali
uzatishni ta'minlaydi. Aksincha, dupleks tarmoq ulanishlari qurilmalar bir xil jismoniy
havola orqali ma'lumotlarni uzatish va qabul qilish imkonini beradi.
2. Ulanishga yo'naltirilgan yoki ulanmagan . Ulanishga yo'naltirilgan tarmoq](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_16.png)
![protokoli almashinuvi (o'zaro bog'lanish deb ataladigan jarayonlar) ikkita qurilmaning
o'zaro suhbatlarida ( sessiya deb ataladi) bir-birlari bilan muloqotda bo'lishga imkon
beruvchi axborotni manzilga aylantiradi. Aksincha, aloqa o'rnatilmaydigan protokollar
avvaldan yoki keyin yuborilgan (va xabarlar hatto muvaffaqiyatli olinganligini
bilmasdan) shunga o'xshash xabarlarni hisobga olmasdan, shaxsiy xabarlarni bir
nuqtadan ikkinchisiga yetkazib beradi.
3. Qatlam . Tarmoq protokollari odatda guruhlar bilan birgalikda ishlaydi
(ular diapazonlar odatda protokollarni bir-birlarining ustki qismiga to'plangan qutilar
sifatida tasvirlanadi, chunki bu stacks deb ataladi). Ba'zi protokollar pastki qatlamlarda
jismoniy ishlaydigan simsiz yoki tarmoq kabellarining turli xil turlariga juda yaqin
bog'liq. Boshqalari yuqori qatlamlarda tarmoq ilovalari qanday ishlashiga bog'liq va
ba'zilari o'rtasida oraliq qatlamlarda ishlaydi.
Umumiy foydalanishdagi eng keng tarqalgan tarmoq protokoli Internet protokoli
(IP) oilasiga tegishli. IP - Internetdagi uy va boshqa mahalliy tarmoqlarni bir-biri bilan
muloqot qilish imkonini beruvchi asosiy protokollardir .
IP bitta tarmoqdan boshqasiga shaxsiy xabarlarni ko'chirish uchun yaxshi
ishlaydi, biroq suhbat konsepsiyasini qo'llab-quvvatlamaydi (xabarlar oqimi bir yoki
har ikkala yo'nalishda harakat qilishi mumkin bo'lgan ulanish).
Etkazish Boshqarish Protokoli (TCP) IPni ushbu yuqori qatlamli qobiliyat bilan
uzaytiradi va Internetdagi nuqtadan nuqtaga ulanishlar juda muhimdir, chunki bu
ikkala protokol deyarli doim birga TCP / IP sifatida tanilgan.
Ham TCP, ham IP tarmoq protokoli stackining o'rta qatlamlarida ishlaydi.
Internetda ommabop ilovalar ba'zan TCP / IP-ning ustki qismida o'z protokollarini
amalga oshirdi. HyperText uzatish protokoli (HTTP) butun dunyo bo'ylab veb-
brauzerlar va serverlar tomonidan ishlatiladi. TCP / IP, o'z navbatida, Ethernet kabi
past darajadagi tarmoq texnologiyalarining yuqori qismida ishlaydi. IP-oilada boshqa
mashhur tarmoq protokollaridan ARP , ICMP va FTP mavjud .
Tarmoq protokollari paketlarni qanday ishlatish .Internet va boshqa ma'lumotlar
tarmoqlari ma'lumotlarni paketlar deb nomlangan kichik qismlarga ajratish orqali
ishlaydi . Aloqa ishlashi va ishonchliligini yaxshilash uchun ikkita tarmoq qurilmalari
o'rtasida yuborilgan har bir katta xabar, ko'pincha asosiy apparat va dasturiy ta'minot
orqali kichikroq paketlarga bo'linadi. Ushbu paket almashtirish tarmoqlari tarmoqlarni](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_17.png)
![qo'llab-quvvatlaydigan protokollarga asosan paketlarni muayyan usulda tashkil qilishni
talab qiladi. Ushbu yondashuv zamonaviy tarmoqlar texnologiyasi bilan yaxshi
ishlaydi, chunki bu ma'lumotlar bitlar va baytlar (raqamli '1' va '0s') shaklida ma'lumot
beradi.
Har bir tarmoq protokoli ma'lumotlar paketlarini tashkil qilish (formatlash)
uchun qoidalarni belgilaydi. Internet protokoli kabi protokollar ko'pincha qatlamlarda
birgalikda ishlaydiganligi sababli, bitta protokol uchun formatlangan paket ichida
joylashgan ba'zi ma'lumotlar boshqa tegishli protokol formatida bo'lishi mumkin
( inkapsulatsiya deb ataladigan usul).
Protokollar odatda har bir paketni uch qismga bo'linadi
- header , payload va footer . (Ba'zi protokollar, IP kabi, pastki qismlardan
foydalanmaydi). Paket ustunlari va altbilgileri, payvandlar uzatiladigan haqiqiy
ma'lumotlarni o'z ichiga olgan holda, tarmoqni qo'llab-quvvatlash uchun zarur bo'lgan
kontekstual ma'lumotni, jumladan, jo'natuvchi va qabul qiluvchi qurilmalarning
manzillarini o'z ichiga oladi. Üstbilgiler yoki altbilgiler, tez-tez, tarmoq ilovalar
ishonchliligi va ish faoliyatini yaxshilashga yordam berish uchun maxsus
ma'lumotlarni o'z ichiga oladi, masalan, xabarlar jo'natish tartibini kuzatib boruvchi
hisoblagichlar va tarmoq ilovalari ma'lumotlarining buzilish yoki tuzatishni aniqlashga
yordam beradi.
Tarmoq qurilmalari protokollarni qanday ishlatadi .Tarmoq qurilmalarining
operatsion tizimlari ba'zi past darajadagi tarmoq protokollariga o'rnatilgan yordamni
o'z ichiga oladi. Barcha zamonaviy stol kompyuter operatsion tizimlari, masalan,
Ethernet va TCP / IP ni qo'llab-quvvatlaydi, biroq ko'plab smartfonlar Bluetooth va
Wi-Fi-dan olingan protokollarni qo'llab-quvvatlaydi. Ushbu protokollar oxirida
qurilmaning jismoniy tarmoq interfeyslariga, masalan, Ethernet portlari va Wi-Fi yoki
Bluetooth radioslariga ulanadi.
Tarmoq ilovalari, o'z navbatida, operatsion tizim bilan gaplashadigan yuqori
darajadagi protokollarni qo'llab-quvvatlaydi. Misol uchun, veb-brauzer HTTP
paketlariga http: // / kabi manzillarni tarjima qilishga qodir, chunki u veb-server qabul
qilishi mumkin bo'lgan ma'lumotlarni o'z ichiga oladi va o'z navbatida to'g'ri veb-
sahifani qaytarib yuboradi. Qabul qiluvchi qurilma shaxsiy paketlarni asl xabarga](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_18.png)
![qayta yig'ish, ustunlar va altbilgilarni o'chirish va paketlarni bir-biriga bog'lash uchun
javob beradi.
MD4,MD5, SHIA1, CRC32
Xesh funksiyalar asosan, Elektron raqamli imzo (ERI)da, Torrent, DC Hub,
Operatsion sistemalarda va fayllarning butunliligini yoki o’zgartirilganligini nazorat
qilish uchun foydalaniladi. Axborot butunligini nazorat qilishning ko’proq maqbul
bo’lgan metodlaridan biri xesh-funksiyadan foydalanish hisoblanadi. Xesh-
funksiyaning qiymatini uning kalitini bilmasdan turib qalbakilashtirib bo’lmaydi, shu
sababli xeshlash kalitini shifrlangan ko’rinishda yoki jinoyatchining «qo’li
yetmaydigan» joydagi xotirada saqlash kerak.
1-jadval. Xesh funksiyalar tahlili
CRC32 (Cyclic redundancy check – Davriy kamchilikni tekshiruvchi kod)
kompyuter qurilmalarida, ya’ni tarmoq qurilmalari va doimiy xotiradagi
ma’lumotlarni xavfsizligini ta’minlashda ya’ni o’zgartirilmaganligini doimiy
ravishda tekshirib boradigan oddiy xesh funksiya hisoblanadi. CRC32 xalqaro
standarti CRC32-IEEE 802. Bu algoritm juda tez ishlagani bilan, kriptoxavfsizlikni
to’liq ta’minlay olmaydi. Shunga qaramasdan keng qo’llaniladi chunki, ishlatilishi
juda oddiy va tez. 32-bit xesh-kod odatda 8 ta simvoldan iborat 16 lik sanoq
sistemasida ifodalanadi. Bu algoritm kriptografik hisoblanmaydi.
MD4 xeshlash algoritmi RSA Data Security, Inc. Ronald L. Rivest](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_19.png)
![tomonidan ishlab chiqilgan. MD4 aralashgan algoritm hisoblanadi, Endi ishonchsiz
hisoblanadi. Bu algoritm (32-bit protsessorlari uchun) tez va peer-to-peer tarmog'i
edonkey 2000 Qo'shma Algoritm hash kodi 32 ta simvoldan iborat bo'lgan belgilar
bilan o'n oltilik soni RFC 1320. tasvirlangan hisoblash ishlatiladi.
MD5 xesh funksiyasi algoritmi Massachusets texnologiya instituti professori
Ronald Rivest tomonidan 1992 yilda ishlab chiqilgan. Bu algoritmda kiruvchi
ma’lumot uzunligi ixtiyoriy bo‘lib, xesh qiymat uzunligi 128 bit bo‘ladi. MD 5
xesh funksiyasi algoritmida kiruvchi ma’lumot 512 bitlik bloklarga ajratilib, ular
16 ta 32 bitlik qism bloklarga ajratiladi va bular ustida amallar bajariladi.
Faraz qilaylik, bizga uzunligi b bit bo‘lgan, bu yerda b – ixtiyoriy
nomanfiy butun son, ma’lumot berilgan bo‘lsin va bu ma’lumotning bitlari
quyidagicha: m0m1…m(b-1)
SHA-1 xesh funksiyasi algoritmi. Kafolatlangan bardoshlilikka ega
bo‘lgan xeshlash algoritmi SHA (Secure Hash Algorithm) AQShning
standartlar va texnologiyalar Milliy instituti (NIST) tomonidan ishlab
chiqilgan bo‘lib, 1992 yilda axborotni qayta ishlash federal standarti (RUB
FIPS 180) ko‘rinishida nashr qilindi. 1995 yilda bu standart qaytadan ko‘rib
chiqildi va SHA-1 deb nomlandi (RUB FIPS 180-1). SHA algoritmi MD4
algoritmiga asoslanadi va uning tuzilishi MD4 algoritmining tuzilishiga
juda yaqin. Bu algoritm DSS standarti asosidagi elektron raqamli imzo
algoritmlarida ishlatish uchun mo‘ljallangan. Bu algoritmda kiruvchi
ma’lumotning uzunligi 264 bitdan kichik bo‘lib, xesh qiymat uzunligi 160 bit
bo‘ladi. Kiritilayotgan ma’lumot 512 bitlik bloklarga ajratilib qayta ishlanadi.
Xesh qiymatni hisoblash jarayoni quyidagi bosqichlardan iborat:
1- bosqich. To‘ldirish bitlarini qo‘shish.
Berilgan ma’lumot uzunligi 512 modul bo‘yicha 448 bilan taqqoslanadigan
(ma’lumot uzunligi 448 mod 512) qilib to‘ldiriladi. To‘ldirish hamma vaqt,
hattoki ma’lumot uzunligi 512 modul bo‘yicha 448 bilan taqqoslanadigan bo‘lsa
ham bajariladi. To‘ldirish quyidagi tartibda amalga oshiriladi: ma’lumotga 1 ga
teng bo‘lgan bitta bit qo‘shiladi, qolgan bitlar esa 0 lar bilan to‘ldiriladi. Shuning
uchun qo‘shilgan bitlar soni 1 dan 512 tagacha bo‘ladi.](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_20.png)
![2- bosqich. Ma’lumotning uzunligini qo‘shish.
1-bosqichning natijasiga berilgan ma’lumot uzunligining 64 bitlik qiymati
qo‘shiladi.
3- bosqich. Xesh qiymat uchun bufer initsializatsiya qilish.
Xesh funksiyaning oraliq va oxirgi natijalarini saqlash uchun 160 bitlik
buferdan foydalaniladi. Bu buferni beshta 32 bitlik A, B, C, D, E registrlar
ko‘rinishida tasvirlash mumkin. Bu registrlarga 16 lik sanoq sistemasida quyidagi
boshlang‘ich qiymatlar beriladi:](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_21.png)
![A=0x67452301,
B=0xEFCDAB89,
C=0x98BADCFE,
D=0x10325476,
E=0xC3D2E1F0.
Keyinchalik bu o‘zgaruvchilar mos ravishda yangi a , b , c , d va e
o‘zgaruvchilarga yozib olinadi.
4- bosqich. Ma’lumotni 512 bitlik bloklarga ajratib qayta ishlash.
Bu xesh funksiyaning asosiy sikli quyidagicha bo‘ladi:
for ( t = 0; t < 80; t ++){
temp = ( a <<< 5) + ft ( b , c , d ) + e + W t + K t ;
e = d ; d = c ; c = b <<< 30; b = a ; a = temp ;
},
Bu yerda <<< - chapga siklik surish amali. K t lar 16 lik sanoq sistemasida
yozilgan quyidagi sonlardan iborat:
ft(x, y, z) funksiyalar esa quyidagi ifodalar bilan aniqlanadi:
Wt lar kengaytirilgan ma’lumotning 512 bitlik blokining 32 bitlik qism
bloklaridan quyidagi qoida bo‘yicha hosil qilinadi:
Asosiy sikl tugagandan keyin a , b , c , d va e larning qiymatlari mos ravishda
A, B, C, D va E registrlardagi qiymatlarga qo‘shiladi hamda shu registrlarga yozib](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_22.png)
![qo‘yiladi va kengaytirilgan ma’lumotning keyingi 512 bitlik blokini
qayta ishlashga o‘tiladi.
5- bosqich . Natija.
Ma’lumotning xesh qiymati A, B, C, D va E registrlardagi
qiymatlarni birlashtirish natijasida hosil qilinadi.
Xesh funksiyala
#include <iostream>
#include <string>
using namespace std;
void strhashing()
{
string h1 = "Educba";
cout <<"The string given to get the hash value is "<< h1 <<"\n"<<endl;
hash<string> hash_obj;
cout << "The hash value of the given string is : " << hash_obj(h1)<< endl;
}
int main()
{
cout<<"Program to demonstrate the string hash values that are returned using hash
class and its objects."<<"\n"<<endl;
strhashing();
}
Misol:
#include <iostream>](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_23.png)
![#include <list>
using namespace std;
class hash_table{
private:
list<int> *tbl;
int all_ele;
int fetch_hash(int k){
return k % all_ele;
}
public:
hash_table(int a){
all_ele = a;
tbl = new list<int>[all_ele];
}
void inst_ele(int k){
tbl[fetch_hash(k)].push_back(k);
}
void disp(){
for(int i = 0; i < all_ele; i++){
cout << "The Index of item is " << i << "\n " <<endl;
for(int j : tbl[i])
cout <<"The value for the index "<<i << " is " << j << endl;
cout << endl;
}
}
};
int main() {
hash_table kh(3);
int a[] = {2, 4, 6};
for(int i = 0; i < 3; i++)](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_24.png)
![kh.inst_ele(a[i]);
cout << "The hash table is created is as follows: " << "\n"<< endl;
kh.disp();
return 0;}](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_25.png)
![Foydalanilgan adabiyotlar
1. https://uz.wikipedia.org/wiki/Figma_(dasturi)
2. https://uzbekdevs.uz/maqolalar/fayl-tizimi-fayl-tizimi-turlari
3. https://www.educba.com/c-plus-plus-hash/
4. https://learn.microsoft.com/en-us/cpp/preprocessor/hash-define-directive-c-
cpp?view=msvc-170](/data/documents/359c7a0d-cdb9-43dd-8de3-8d4077957b29/page_26.png)
C ++ tilida #delfine bilan ishlash REJA: 1. #difine diriktivasi 2. Interfeysda ishlash uchun dasturlar (figma va h.k) 3. Fayl tizimlari(NTFS, FAT32 va h.k.) 4. Tarmoq protokollari 5. MD5, MD6, CRC, SHA1, SHA2 heshlash usullari 6. Hesh funksiya yaratish . Foydalanilgan adabiyotlar
C++ #define Preprotsessor buyruqlari DIRECTIVES deb ataladi va xesh belgisi (#) bilan boshlanadi. # belgisidan oldin bo'sh bo'sh joy qolmasligi kerak, oxirida esa nuqtali nuqta qo'yish kerak emas. Oldindan ishlov berish bosqichida bajarilishi mumkin bo'lgan ko'p narsalar quyidagilardan iborat: #include direktivasi orqali boshqa fayllarni kiritish #define direktivasi orqali ramziy konstantalar va makroslarni aniqlash Ba'zi preprotsessor direktivalari orqali siz ba'zi preprotsessor direktivalarini shartli ravishda kompilyatsiya qilishingiz yoki bajarishingiz mumkin. Eslatma - C++ dasturining dastlabki ishlov berish bosqichi dastur kompilyatsiya qilinishidan oldin sodir bo'ladi. C++ protsessori - bu manba kodini kompilyatsiya qilishdan oldin bajariladigan dastur. Siz allaqachon #include preprocessor direktivasi bilan ishlashni o'rgandingiz, bu sizga kerakli sarlavha fayllarini dasturingizga kiritish imkonini beradi. Ushbu munozara yoki bizniki #define preprocessor direktivasiga bag'ishlangan. #define preprocessor bizga ramziy nomlar va konstantalarni aniqlash imkonini beradi. #define dasturni kompilyatsiya qilishdan oldin matnni almashtirishga imkon beradi. Preprotsessorlar ko'rsatmalar bo'lib, ular kompilyatorga haqiqiy kompilyatsiya boshlanishidan oldin ma'lumotni qayta ishlash bo'yicha ko'rsatmalar beradi. Barcha preprotsessor direktivalari # bilan boshlanadi va satrda protsessor direktivasi oldida faqat oq bo'shliq belgilari paydo bo'lishi mumkin. Preprotsessor direktivalari C+ + iboralari emas, shuning uchun ular nuqta-vergul (;) bilan tugamaydi. Siz allaqachon barcha misollarda #include direktivasini ko'rgansiz . Ushbu makros sarlavha faylini manba faylga kiritish uchun ishlatiladi. C++ tilida #include, #define, #if, #else, #line va boshqalar qo'llab- quvvatlanadigan bir qator preprotsessor direktivalari mavjud. Keling, muhim direktivalarni ko'rib chiqaylik #define preprocessor direktivasi ramziy konstantalarni yaratadi. Simvolik konstanta makro deb ataladi va direktivaning umumiy shakli - #define macro-name replacement-text
Ushbu qator faylda paydo bo'lganda, dastur kompilyatsiya qilinishidan oldin ushbu fayldagi makrosning barcha keyingi holatlari almashtirish matni bilan almashtiriladi. Masalan - #include <iostream> using namespace std ; #define PI 3.14159 int main () { cout << "Value of PI :" << PI << endl ; return 0 ; } Keling, bizda manba kodi fayli borligini faraz qilgan holda natijani ko'rish uchun ushbu kodni oldindan qayta ishlaymiz. Keling, uni -E varianti bilan kompilyatsiya qilamiz va natijani test.p ga yo'naltiramiz. Endi, agar siz test.p ni tekshirsangiz, unda juda ko'p ma'lumotlar bo'ladi va pastki qismida siz quyidagi tarzda o'zgartirilgan qiymatni topasiz - $gcc -E test.cpp > test.p... int main () { cout << "Value of PI :" << 3.14159 << endl; return 0; } Funktsiyaga o'xshash makrolar Argumentni quyidagi tarzda qabul qiladigan makrosni aniqlash uchun #define dan foydalanishingiz mumkin Jonli demo #include <iostream> using namespace std ; #define MIN ( a , b ) ((( a )<( b )) ? a : b ) int main () {
int i , j ; i = 100 ; j = 30 ; cout << "The minimum is " << MIN ( i , j ) << endl ; return 0 ; } Agar biz yuqoridagi kodni kompilyatsiya qilsak va ishga tushirsak, bu quyidagi natijani beradi - Shartli kompilyatsiya Dasturingiz manba kodining tanlangan qismlarini kompilyatsiya qilish uchun ishlatilishi mumkin bo'lgan bir nechta direktivalar mavjud. Bu jarayon shartli kompilyatsiya deb ataladi. Shartli preprotsessor konstruktsiyasi "agar" tanlash strukturasiga juda o'xshaydi. Quyidagi protsessor kodini ko'rib chiqing - #ifndef NULL #define NULL 0 #endif Nosozliklarni tuzatish uchun dasturni kompilyatsiya qilishingiz mumkin. Shuningdek, bitta makros yordamida disk raskadrovkani quyidagi tarzda yoqishingiz yoki o'chirishingiz mumkin #ifdef DEBUG cerr <<"Variable x = " << x << endl; #endif Bu, agar #ifdef DEBUG direktivasidan oldin DEBUG ramziy doimiysi aniqlangan bo'lsa, cerr bayonoti dasturda kompilyatsiya qilinishiga olib keladi. Dasturning bir qismini quyidagicha izohlash uchun #if 0 iborasidan foydalanishingiz mumkin - #if 0
code prevented from compiling #endif Keling, quyidagi misolni sinab ko'raylik - Jnli demo #include <iostream> using namespace std ; #define DEBUG #define MIN ( a , b ) ((( a )<( b )) ? a : b ) int main () { int i , j ; i = 100 ; j = 30 ; #ifdef DEBUG cerr << "Trace: Inside main function" << endl ; #endif #if 0 /* This is commented part */ cout << MKSTR ( HELLO C ++) << endl ; #endif cout << "The minimum is " << MIN ( i , j ) << endl ; #ifdef DEBUG cerr << "Trace: Coming out of main function" << endl ; #endif return 0 ; } Agar biz yuqoridagi kodni kompilyatsiya qilsak va ishga tushirsak, bu quyidagi natijani beradi - # va ## operatorlari