Global unikal identifikator

Vikipediya, azad ensiklopediya
Naviqasiyaya keç Axtarışa keç
Çap versiyası artıq dəstəklənmir və render xətaları ola bilər. Zəhmət olmasa brauzerinizi yeniləyin və əvəzinə standart brauzer çap funksiyasından istifadə edin.

GUID (Global unikal identifikator) (ing. Globally Unique Identifier) — 128-bitlik unikal identifikator. Onun başlıca özəlliyi, üst-üstə düşmə səbəbindən yaranan toqquşmalar təhlükəsindən çəkinmədən genişlənən servislər və tətbiqi proqramlar yaratmağa imkan verən bənzərsizlikdir. Hər bir ayrıca GUID üçün unikallığa zəmanət verilməsə də, bənzərsiz açarların ümumi sayı o qədər böyükdür ki, (2128 və ya 3.4028×1038) dünyada bir-birindən asılı olmadan üst-üstə düşən iki açarın generasiya olunması ehtimalı son dərəcə azdır. Bununla belə, üst-üstə düşmə halı olmuşdur: Windows 95 əməliyyat sistemində DOS-proqramların (.pif) və ZipMagic 2000 proqramının başlatma simgəsinin GUID-ləri üstə-üstə düşmüşdür.

Mətndə GUID defislərlə qruplara bölünmüş və fiqurlu mötərizəyə alınmış 32 ədəd onaltılıq rəqəmdən ibarət sətir şəklində yazılır. Məsələn:

{6F9619FF-8B86-D011-B42D-00CF4FC964FF}

Java proqramlaşdırma dilinin ehtimalını hesablamaq üçün proqram:

public void probabilityCoincidenceGUID()
{ 
    MathContext mc = new MathContext(1000, RoundingMode.HALF_UP);
    BigDecimal N = BigDecimal.valueOf(2).pow(128, mc);
    BigDecimal n = BigDecimal.valueOf(2).pow(50, mc);
    BigDecimal result_ = calcProbabilityCoincidenceGUID(N, n, mc);
    double result = result_.doubleValue();
} 
    
private BigDecimal calcProbabilityCoincidenceGUID(BigDecimal N, BigDecimal n, MathContext mc)
{ 
    BigDecimal N_1 = N.subtract(BigDecimal.valueOf(1), mc);
    BigDecimal N_n = N.subtract(n, mc);
    BigDecimal ln_N = BigDecimalUtils.ln(N, 400);
    BigDecimal ln_N_1 = BigDecimalUtils.ln(N_1, 400);
    BigDecimal ln_N_n = BigDecimalUtils.ln(N_n, 400);
    BigDecimal v1 = N.multiply(ln_N_1.subtract(ln_N_n, mc), mc);
    BigDecimal v2 = n.multiply(ln_N_n.subtract(ln_N, mc).subtract(BigDecimal.valueOf(1), mc), mc);
    BigDecimal v3 = ln_N_1.subtract(ln_N, mc).subtract(BigDecimal.valueOf(1), mc);
    BigDecimal exp = v1.add(v2, mc).subtract(v3, mc);
    BigDecimal result = BigDecimal.valueOf(1).subtract(BigDecimalUtils.exp(exp, 400));
    return result;
}

Ədəbiyyat