logo

C ++ tilida #delfine bilan ishlash

Yuklangan vaqt:

12.08.2023

Ko'chirishlar soni:

0

Hajmi:

552.65625 KB
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 #   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 ;    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__ 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 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 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. 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. 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 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. 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. 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 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 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 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 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 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. 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: 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 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> #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++) kh.inst_ele(a[i]);
cout << "The hash table is created is as follows: " << "\n"<< endl;
kh.disp();
return 0;}
        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

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