Šakutės-prisijunkite prie Plėtros Java™ SE

2015-11-11 09:41:30 / author: sharkov views 821Total views: 821 / 1Views for 7 days: 1
Thanks to Best cliparts
source article: http://www.coopsoft.com/ar/ForkJoinArticle.html

Šakutės-Prisijunk kasdien, multi-core Java™ programas

Šakojimasis arba skaidant darbo krūvį į keletą užduočių, lygiagrečiai perdirbti ir įstojimo į rezultatus, kartu yra technika naudojama daugybė mokslo, skaičių crunching programas. Daugelis kitų programų, gali pasinaudoti šakutės-prisijungti prie duomenų tvarkymo, bet naudojant mokslinį metodą, negali būti jų interesus.

Šiame straipsnyje pateikiama "embarrassingly lygiagrečių" šakutė-prisijungti prie požiūrio, kad gerai dirba kasdien, multi-core programos, "Java™" SE, MAN taip pat "Android".™ (3000 žodžių)

Edvardas Harned (eh at coopsoft dot com)

Vyresnysis Kūrėjas, Bendradarbiavimo Programinės Įrangos Sistemų, Inc.

Vasario, 2010 [atnaujinta birželio, 2013 m.]

Kas yra Šakutės-Prisijungti?

Manau, kad šakės kelio, kur kiekvienas kelias galiausiai ateina atgal kartu — prisijungia.

Šakutės-Prisijungti prie pertraukos paraišką į keletą dalių, lygiagrečiai perdirbti ir prisijungia rezultatų pabaigoje.

1 Pav.: Šakutė-Prisijungti Prie Struktūra

Šakutės-prisijunkite prie Plėtros Java™ SE

Tarkime, kad mes turime masyvo vieno tūkstančio numerius. Mes turime padaryti tvarką dėl kiekvienos iš šių numerių ir pridėti iš viso.

Data 1: Array Tvarkymo


for (int i = 0; i < 1000; i++) {
total += doProcedure(array[i]);
}

Jei procedūra trunka vieną sekundę (wall-clock laiko) užbaigti, tada ji ketina imtis tūkstantis sekundžių (per 16½ minučių) užbaigti šią savo užduotį.

Šakutės-Prisijungti galėtų

  • atskiras (fork) didelis masyvas į dešimt matricos šimtą elementai, kiekvieno,
  • procesai, kiekvieno masyvo atskirą CPU, ir
  • prisijungti prie rezultatų, kai baigsite.

Kad būtų šimtą sekundžių (tik per 1½ min.), vieną dešimtąją originalaus laiko. Daugiau CPU yra, greitesnis rezultatas.

Tai yra tai, kas mokslo kompiuterija yra apie — vienu metu perdirbti humongous duomenų kiekis daug CPU yra taip pat prieinama. Tai abstrakcijos labai panaši į standartinę mokslo modelis, Skaldyk ir Valdyk.

Skaldyk ir Valdyk yra fizinis paradigma lygiagrečių algoritmų. Po skiriamųjų problema į du ar daugiau sub-problemos, metodas išsprendžia sub-problemas kartu. Paprastai, sub-problemos yra sprendžiamos, rekursyviai ir taip kitą padalinti žingsnis duoda net daugiau sub-problemas spręsti kartu.

2 pav.: Skaldyk ir Valdyk Šakutės-prisijunkite prie Plėtros Java™ SE

Problemų naudojant Šakutės-Prisijungti prie mokslo modelio kasdieniniam programos

Kuriant užduotis nėra problema; jie tik daiktai. Problema yra daug temas tvarkymo užduotis, kai tuos darbus reikia:

Jungtys

Prieiga prie nuotolinio paslaugos (DBVS, pranešimų, ir daug kt.), reikia, prisijungti prie nuotolinio aptarnavimo. Paprastai, nuotolinio paslaugų naudojimo siūlai elgtis ryšį ir, kad reikia atminties, konteksto perjungimas, sinchronizavimo ir koordinavimo. Daugiau ryšių paslaugos, daugiau išteklių, paslaugų poreikius, ir mažiau jungtys kitais užduotis JVM. Kad paveikia kiekvieną vartotoją.

Spynos

Spynos yra žudikas aukštos kokybės. Mirę/live spynos, pirmenybė inversija, bado, convoying ir viršutinius (kad auga eksponentiškai su ilgio sąrašą laukia užduotys) yra kai kurių problemų, naudojant spynos.

Semaphores

Daugiau siūlų, kurie nori gyventi kartu, daugiau siūlų, kurie turi palaukti, kol leidžia galimybės. Tai atneša mums atgal į visas problemas, naudojant spynos.

Cache derėjimą

Kai kelis procesorius prieigos/atnaujinti tą patį kintamąjį viduje cache line, (blokas duomenys kopijuojami iš pagrindinės atminties, kurių sudėtyje yra daug sričių), atminties vienetą, gali netekti cache linija. Kad ne tik lėtina paraišką, jis gali turėti įtakos kitos programos, taip pat.

Platus atmintis

Daugiau objektų arba kuo daugiau daiktų, tuo daugiau atminties. Aktyviau temas tvarkymo užduotis, tada daugiau atminties. Žinoma, tai reiškia, kad didelę atmintį užduotis reikia pristabdyta.

Reikia žaisti gražus

Jūs paraiška gali būti ne vienintelė programa veikia kompiuteryje. Kai vieną paraišką šernai išteklių, visi jaučia skausmą. Žaisti gražus su kitais nueina į tai, ką mes visi išmokome dar vaikystėje. Tą patį galima pasakyti ir kuriant programinę įrangą, kuri veikia ne taip, kaip atskira programa.

Temos multi-core plėtra yra išlaikyti teigia, užduotis, konkuruoja dėl tų pačių išteklių, iki minimumo.

Jei dinaminio irimo paradigma Skaldyk ir Valdyk tinka jūsų poreikius, tada skaityti šį straipsnį apie aukštos klasės DSE versija Tymeac. Kitaip Funkcinis Šakojimasis Sistemą, gali geriau patenkinti savo poreikius.

Funkcinės Šakojimasis Sistema

"Java™" SE / ME multi-core programoms, taip pat "Android™" programos, kurios naudoti negalima, Skaldyk ir Valdyk modelis, nėra apdoroti didelius masyvus numerius, arba neturi apskaičiuoti intensyviai struktūrą reikia funkcinės šakojimasis sistema parallelizing programas. Tiksliau, jie turi šakutės darbo į funkcinių sudedamųjų dalių, o ne išskaidyti masyvas į identiški antrines.

3 Pav.: Funkcinės Šakojimasis Sistema

Šakutės-prisijunkite prie Plėtros Java™ SE

Funkcinis šakojimasis sistema, turi du esminius požymius. Jis turi:

  • Riba teiginį.
  • Būti paprasta naudoti, ar embarrassingly lygiagrečiai.

Riba Tvirtinimas

Išlaikyti aktyvių, konkuruojančių temas iki absoliutaus minimumo itin svarbu. Lengviausias būdas apriboti sriegis teiginys yra naudoti ribos kiekvienas siūlas baseinas aptarnavimo eilę užduočių. Žr. šio straipsnio Aukštos kokybės Prioritetinių Eilių, Java SE pavyzdys, kaip naudojant Palaukti Sąrašus, galite išsaugoti threading išteklių.

Pakartotinai išteklių, o ne įgyti naujų kopijas ištekliai yra nugalėtojas visi aplink. Mes turime atsižvelgti ne tik į užduotis kodą, bet išteklių valdymo kodekso, taip pat.

Paimkime, pavyzdžiui, užduotis, kurioms reikia naudotis duomenų baze, kad reikia ["java".sql.]pareiškimą. Naudojant eilę prašymų užduotis kodas gali dalintis ta pačia pažyma daug pasiekia, o tada įsigyti naują pareiškimą dėl kiekvieno įėjimo. Dalintis pareiškimas yra didžiulis taupyti išlaidas ir ribas teiginys, pagal valdymo kodekso.

Ką żenująco lygiagrečiai?

Embarrassingly lygiagretūs algoritmai yra tie, kurie gali išspręsti daug panašių, tačiau nepriklausomų užduočių vienu metu, su šiek tiek ne reikia koordinuoti užduotis. Tokias problemas turi tokius lengva parallelization, kad viena yra beveik "įsiskolinęs" kalbėti apie tai, kaip paprasta yra gauti daug procesoriai dirba efektyviai.

Yra embarrassingly lygiagrečiai sprendimas gali lengvai šakutės į visiškai nepriklausomų komponentų, kurių kiekvienas vykdant atskirą procesorių.

4 Pav Embarrassingly Lygiagrečiai

Šakutės-prisijunkite prie Plėtros Java™ SE

Pvz.:

Verslo gali tekti automatizuota kaina citata sistema. Kurti citata, sistemos poreikius elemento bazinė kaina (kainos, duomenų bazės), kliento nuolaida elementus ir pristatymas (klientų duomenų bazę), bei pagrindinius laivybos išlaidos (siuntėjo duomenų bazėje.)

Tradiciškai, programos, pasiekia, kad kiekviena duomenų bazė paeiliui, laukia kiekvieną susipažinti su išsamia prieš pereinant prie kito prieigos.

Lygiagrečiai sistema, programos Šakutės() prašymą į tris eiles, kiekvienas aptarnauja gija, baseinas, laukia iki paskutinės prieigos apdailos ir Prisijungia() rezultatus.

5 Pav.: Kaina Citata

Šakutės-prisijunkite prie Plėtros Java™ SE

Pirmiau kaina citata, pvz., sinchroninio prašymu, kai skambinantysis laukia pabaigos. Tai yra tik mažas žingsnis į priekį, kad įtraukti paramą už asinchroninis arba autonominis prašymu, kai skambinantysis neturi laukti pabaigos.

Yra daug situacijų, kai šakojimasis darbo į sudėtines dalis, pageidautina:

  • Imtis žaidimas programą, kurioje mes galime šakutės įvykio į atskirus komponentus. Privalumas čia yra jaudulys; daugiau renginio segmentus vyksta kartu, įdomesnis žaidimas.
  • Imtis prašymą su keliais animacija, kai mes gali šakutės kiekviena animacija paleisti savo procesorius.
  • Fotografavimas tvarkymo operacijos, kai kiekvieną pikselį į atvaizdą turi būti jo spalva nesikeis. Tokia sistema gali lengvai paskirstyti vaizdo duomenis į keletą užduočių, kad gali veikti nepriklausomai viena nuo kitos.
  • Imtis finansų įstaiga, jeigu pakartotinio vertinimo portfelis apima komponentus, kad bendrauti su įvairių rinkų visame pasaulyje.
  • Imtis sveikatos priežiūros programą, kurioje įvairūs bandymai yra komponentų diagnostika.

Jis stengiasi pamatyti tai, ką paraiška negali naudoti parallelization su funkciniu šakojimasis sistemą.

Kaip ši sistema atrodo "Java™" programa?

Sistema šakojimasis prašymą į funkcinių sudedamųjų dalių reikia:

Žinau komponentai (Eilių) už kiekvieną prašymą operacija (Funkcija.) Paprasta Klasės, turintys String Funkcija vardas, pavardė ir sąrašo, susijusių Eilės yra pagrindinis "Java™" programas.

Sąrašas 2: Funkcija Klasė


public class Function {

private String name; // Function name
private Queue[] que; // Queues for this Function
}

Vieta prašymu (su įėjimo objektus) į kiekvieną iš eilės sugrįžtantys objektą masyvo skambintoją arba ignoruojant grįžo objektus.

Sąrašas 3: Įdėti Eilėje


public Object[] fork(Queue[] que, Object request) {

Object[] return_obj = new Object[] {null, null, null};

for (int i = 0; i < que.length; i++) {
putInQueue(que[i], return_obj [i], request);
}

return return_obj;
}

Palaukite, kol užbaigimas/trukmė arba nereikia laukti.

Sąrašas 4: Palaukite/noWait


public boolean join(Object[] obj) {

/* when all elements are non-null, return true
* wait for a while
* after an interval, return false
*/

}

Grįžti rezultatai skambinančiajam arba ignoruoti objektai

Figure 6: Return to Caller

Šakutės-prisijunkite prie Plėtros Java™ SE

To build this framework we would:

  1. Reikia išlaikyti faktinis užduoties kodą, kuris dirba
  2. Reikia išlaikyti sąrašą Eilės ir Funkcijos
  3. Reikia išlaikyti "start up" klasę, kuri įkelia Eilės ir Funkcijas, į atmintį

(1) kodą, kad nėra darbo turėtų atrodyti taip:

Sąrašas 5: Darbo Kodekso


public static Object main(Object obj) {}

Pagrindinis() metodą, kuris priima objektą (įėjimas iš skambinantysis) ir grąžina objektą (darbo rezultatą.)

(2) galėtume išlaikyti Eiles ir Funkcijas objektų per paprastą Sąrašą Klasės.

(3) Pradėti galima tiesiog įkelti į Sąrašą Klases, į atmintį, su nauja (Sąrašas Klasė) ir pradėti temas, kiekvienoje Eilėje.

Kaip paprasta skambinti galėtų atrodyti:

Sąrašas 6: Paprasta Skambinti


Framework
fw = new Framework();

// For each call:
Function
func = fw.getFunction(name);
Object[] back =
func.fork(request};

Ši sistema yra paprasta naudoti, embarrassingly paprasta.

Santrauka

Iki šiol mes matėme, kaip šakojimasis prašymą į savo funkciniai komponentai gali dirbti kaip įterptųjų vienos paraiškos (per tą patį JVM.) Būti praktiški, mums taip pat reikia, kad sistema pasiekiama iš kitų JVM. Tiesiog, ji turi palaikyti daug vartotojo skambučius tuo pačiu metu, kaip serveris.

Todėl Serveryje

Kokių pokyčių reikia, kad mes kalti tai paprasta sistema į serveri?

  1. Turime atskirti skambinančiųjų iš darbo.
  2. Turime suteikti klaidų atkūrimo.
  3. Turime remti sistema nuotolinis daiktas.
  4. Mes turime užtikrinti saugumą.
  5. Turime teikti administracinių funkcijų, norint kontroliuoti serverio.

Atskyrimo

Pirmasis pokytis yra atskirti prašyti tarpininkavimo (tai virš fork() metodas) iš faktinių duomenų tvarkymo. Turime atskirti, bet sekti, kiekvieną prašymą unikalus objekto.

Sąrašas 7: Prašymo Objektas


private long unique_id; // unique identification of this request
private Object input; // input reference, if any
private boolean type; // type of request true=sync false=async
private Object[] output // the output objects from the tasks
private AtomicInteger next_output; // subscript to add an element to above
private Queue[] que_names; // list of all the queues in this function
private Queue agent; // future queue, if used
private AtomicInteger nbr_remaining; // queues remaining to be processed
private int wait_time; // max wait time for sync request

Kas yra laukas "agentas?"

Agentas

A sinchroninis prašymą grąžina Objektą masyvas nuo perdirbimo į skambinančiųjų. Ką turėtų pagrindų daryti su Objektų masyvas grįžo iš asinchroninis prašymą? Sistema gali pasirinktinai įdėti Objektą array (kaip žaliava) į naują Eilę tvarkymo agento užduotis. Tokiu būdu agento užduotis gali imtis veiksmų pagal užbaigimas statusą išankstinio apdorojimo.

Pvz.:

Funkcija yra generuoti kainų pasiūlymą ir išsiųsti jį elektroniniu paštu vartotojas, kaip asinchroninis prašymą.

  1. Skambinančiojo naudoja asinchroninis fork() metodą.
  2. Pagrindų šakių prašymą į atitinkamą jo Eiles.
  3. Kai paskutinis Eilėje, apdailos, sistema pereina grįžo objektų masyvo agento užduotis pateikiant prašymą į Eilę nurodyti kaip "agentas."
  4. Agentas užduotis siunčia el. pašto grąžinimo nieko.

Klaida atkūrimo

Antrasis pokytis yra įrašyta klaida atkūrimo, ženklas profesionalumo.

Kas gali eiti negerai čia? "Nieko, kad gali suklysti, bus negerai." Murphy ' s Law.

Atgal

Galėtume turėti šakojimasis klaida. A maksimos Eilę, gali būti visiškai arba į Eilę, gali būti išjungta (daugiau apie tai žemiau.) Klaida atkūrimo turėtų grįžti iš visų Eilių, kad išsišakojęs sėkmingai ir informuoti skambinančiųjų problemos. Pvz.:

  • Mes turime tris Eiles (A, B, C) Funkcija.
  • Eiles A ir B sėkmingai gauna prašymą.
  • Eilę C nepavyksta gauti prašymo, nes Eilėje yra pilnas.
  • Dabar mes einame atgal, bando traukti prašymą iš visų Eilių, kad išsišakojęs sėkmingai, todėl mes galime išsaugoti apdorojimo laikas už netinkamą prašymus.

Išimtis/Klaidos

Mes gali išimtis/klaida faktinis užduoties kodą, kad nėra darbo. Jei tai nepavyko vieną kartą, jis, ko gero, nepavyks vėl. Todėl, patartina išjungti Eilėje, kol kūrėjas problema išsprendžiama. Kai užduotis kodas yra gera, mes nenorime imtis žemyn serverio. Norime pranešti, kad serverio, kad mes turime naują kopiją užduotis kodą, kuris yra švarus ir norime Eilėje įjungtas.

Kiosko

Mes galime turi pirmiau įvykti asinchroninis prašymą, vadinamas kiosko (sinchroninis prašymus laiko ir gali išvalyti iš sistemos.) Kadangi Funkcijų negali atlikti, kol visos Eilės apdaila, turime vietoje sustojo prašymus į Sustojo Sąrašą. Kai Eilėje vėl naudoti, mes galime vėl pradėti tvarkyti nuo Sustojo Sąrašą.

Sriegio keblią padėtį

Galėtume turėti siūlai blokuoti visam laikui dėl išorinių išteklių arba eiti į nesibaigiančių linijos. Bet kokiu atveju, laikas įvykių, gyvenimo gija, sistema gali atpažinti šią situaciją ir gali expunge siūlai jį pakeisti nauja gija.

Expunging yra tema pas save ir reikia siūlus izoliavimas. Šiame straipsnyje pristatomas tema:Valdymo Temas Java SE

Atšaukus

Mes gali skambinančiųjų nori atšaukti anksčiau pateiktą prašymą. Atšaukti yra panašus į skirtojo laiko klaida, bet ji taikoma tiek sinchroninio ir asinchroninio prašymus. Nors atšaukus prašymas yra labiausiai pageidautina, logika, tvarkymo panaikinimo daugiakomponentį prašymas yra ne už silpnumą širdies.

Stebėti

Laikas yra nenaudingas, nebent demonas sriegis stebi laiko įvykių ieško faktinės ar galimos problemos.

Pranešimas

Ne sistema gali dirbti kiekvieną situaciją; kartais žmogaus įsikišimas yra būtinas. Mes turėtų pranešti administratoriams siunčiant pranešimą per bet kokias priemones organizacijos naudoja (tiesioginių Pranešimų, elektroninio pašto, arba jokių atpažinimo būdą.)

Nuotolinio objektas

Trečias pakeitimas remia sistema nuotolinis objektą su papildomu įjungimo/išjungimo taupyti lėšas.

Nuotolinio valdymo Metodo Pritaikymo būna įvairių skonių:

Pagrindinis

Custom Lizdas Fabrikas

IIOP

Nešiojamų Objektas Adapteris

Jini

Inter Komunikacijos Procesas

Saugumas

Ketvirtasis kaitą, didina saugumą.

"Java™" apsaugos technologija yra dalis SE/ME platformų, ji reikalauja, priekiniai-baigiasi serverio saugumo klasės lankstumą.

Administratoriaus funkcijos

Penktą kaita yra įrašyta administratoriaus funkcijas.

Medienos ruoša-nuobodus ir yra iš esmės nenaudingas, kol kažkas negerai.

Statistikos pagrindas-veiklos analizė ir paieška.

Turime suteikti sąsajos su vidaus struktūros, todėl vartotojai gali kontroliuoti ir kontrolės funkcijas. Tai nėra labai gera, jei niekas nežino, ką ji daro. Kai žmonės žino, ką jis daro, ir jie tikriausiai norės pakeisti jį.

Rašyti Šakutė-Prisijungti prie sistemos, kad yra paprastas naudoti ir efektyvus vietiniai skambučiai yra sunku. Tą patį daro ir prieigos prie tinklo yra didelė įmonė.

Jūsų aplinkoje gali sudaryti debesis su atskira perdirbėjai daug skirtingų vietų. Priėmimo sistema lanksti, daro puikus jausmas.

Kiek laiko truktų sukurti tokį Serverį?

Apie 5-6 sekundžių. Tik pakankamai ilgai, kad išpakuokite vieną failą.

Laimingai, yra bendrosios paskirties, šakutės-prisijungti prie sistemos remti savybes minėta, kasdien, multi-core programos, "Java™" SE, ME ir " Android™", prieinamų šiandien. Ir kadangi sistema gali veikti kaip RMI Serverio (standartinis/activatable, IIOP ir POA), ji yra prieinama "Java™" EE programų.

Tymeac™ Java™ SE / ME / "Android™" platformos yra Atviro kodo Programinės įrangos projektų išlaikyta SourceForge.net ir jūs galite parsisiųsti naujausių leidinių ten.

Išvada

Naudojant Šakutę-Prisijungti prie sistemos kuriamos apskaičiuoti-intensyvus bendrijų negali gerai dirbti kasdien programas.

Didžioji dalis "Java™" multi-core programos turi šakutės darbo į funkcinių sudedamųjų dalių, kurių profesinės klasės sistema, kuri yra paprasta naudoti, veiksmingas, ir atviro kodo.

Nuorodos

Parsisiųsti:

Atsisiųskite naujausią SE leidimas Tymeac čia. Su visais dokumentais, scenarijų, užsiėmimus ir šaltinis.

Atsisiųskite naujausią MAN leidimas Tymeac čia. Su visais dokumentais, ir šaltinis.

Atsisiųskite naujausią IR leidimas Tymeac čia. Su visais dokumentais, ir pilna eclipse projektus.

Atsisiųskite naujausią DSE leidimas Tymeac čia. Takoskyra-ir-Užkariauti versija.

Straipsniai:

Aukštos kokybės Skaldyk ir Valdyk versija Tymeac — "Java" Šakutė-Prisijungti prie Užkariautojas

Didelio našumo "Android™" versija Tymeac — Valdymo Temas Android

Naudojant Palaukti Sąrašus Efektyvumo Aukštos klasės Prioritetinių Eilių, Java SE

"Java" ™ SE Sriegis Konteineris — Valdymo Temas Java SE

Kitos:

Šakutės-įstoti į eilę wiki — http://en.wikipedia.org/wiki/Fork-join_queue

Murphy ' s Law — http://en.wikipedia.org/wiki/Murphy%27s_law

CPU cache wiki — http://en.wikipedia.org/wiki/CPU_cache

Cache suderinamumas wiki — http://en.wikipedia.org/wiki/Cache_coherence

Embarrassingly lygiagrečiai wiki — http://en.wikipedia.org/wiki/Embarrassingly_parallel

Apie Autorius

%a href="/eh%20at%20coopsoft%20dot%20com" rel="nofollow"%Edvardas Harned%/a% yra programinės įrangos kūrėjas, su daugiau nei trisdešimt metų pramonės patirtį. Jis pirmą kartą vadovavo projektams, pavyzdžiui, darbuotojas, didelių pramonės ir tada dirbo kaip nepriklausomas konsultantas. Šiandien, Ed yra vyresnysis kūrėjas sekasi Software Systems, Inc.", jeigu pastaruosius dvylika metų, jis naudoja "Java™" programas pareikšti šakutės-prisijungti prie sprendimų įvairiausias užduotis.

paper4pc
Add a comment:
Sign in

See also

Код сайта корму

Код сайта корму

2015-11-02 16:37:20

Рэзюмэ Сайты наогул не ствараць RSS-каналы аўтаматычна. Існуюць розныя спосабы стварэння RSS-каналаў. Адзін з спосабаў-код RSS-канал ўручную. Стварыць RSS-канал файла. Код кіраўнікі аператары...

introduction to optimization

Увядзенне Аптымізацыя, чацвертае выданне

2015-11-02 15:07:26

Эдвін К. П Чон і Станіслав Жак Х. Вайли-міждысцыплінарнага серыі ў дыскрэтнай матэматыкі і аптымізацыі Джон Вайли І Сыны, Інк....

Great Computer Scientists

УТ іх розумы: аб жыцці і адкрыццях вялікіх навукоўцаў 15 кампутар

2015-11-02 16:35:12

Інфарматыка з'яўляецца адной з найбольш важных сіл, якія фарміруюць сучасным грамадстве і будучыні, але ен з'яўляецца адным з найменш панятых....

DES Encryption

Шыфравання des

2015-11-02 12:42:27

Гэта JavaScript-рэалізацыя ў DES (Data Encryption Standard - Стандарт шыфравання дадзеных), алгарытм шыфравання, які працуе на біты. Ен падтрымлівае электроннай...

Art for designers dkcoin8.com (DesignerKit)