Мазмунга өтүү

Сабактын башталышы

Агымдар тереӊдетип

Бүт көлөмдү эстутумга жүктөбөстөн, маалыматты бөлүк-бөлүк иштетиӊиз

Негизги идея: Агым (stream) -- бул бир бүткөн блок катары эмес, убакыт ичинде кичине бөлүктөр менен келе турган (же кете турган) маалымат үчүн абстракция. Агымдар Node процессине гигабайттаган маалыматты болгону бир нече килобайт оперативдик эстутум аркылуу өткөрүүгө мүмкүндүк берет; алар файлдар, HTTP суроо-талаптары жана жооптору, сокеттер, кысуу жана дагы башка көп нерселердин негизинде жатат.
Сабактын аягында сиз төмөнкүлөрдү жасай аласыз:
  • агымдын төрт түрүн айырмалоо -- Readable, Writable, Duplex, Transform;
  • Readable'ди flowing режиминде, paused режиминде жана for await аркылуу окуу;
  • агымдарды pipe() жана pipeline() менен туташтыруу;
  • кайра басым (backpressure) деген эмне жана эмне үчүн ал эстутумду коргоорун түшүндүрүү;
  • маалыматты агып жатканда өзгөртүү үчүн өз Transform'уӊузду жазуу.

1. Агымдар эмне үчүн керек

4 ГБ көлөмүндөгү видеофайлды көчүрүү керек деп элестетиӊиз. Жөнөкөй ыкма бүт файлды өзгөрмөгө окуп, анан ошол өзгөрмөнү жазат:

const data = fs.readFileSync('movie.mp4'); // 4 GB now lives in RAM
fs.writeFileSync('copy.mp4', data);

Кичине файлдар үчүн бул иштейт, бирок чоӊдор үчүн бул кырсык: процесске буферди сактоо үчүн гана 4 ГБ эстутум керек, жана окуу толук бүткөнчө эч нерсе болбойт. Агымдар маалыматты бөлүктөр (chunks) менен (адатта бир жолу 64 КБ) жылдырып, эки маселени тең чечет. Эстутум кичинекей жана туруктуу бойдон калат, ал эми иш дароо биринчи бөлүктөн башталат.

Салыштыруу. Агымсыз ыкма -- бул бассейнди жаӊы жерге бүт бойдон көтөрүп ташуу менен бошотууга окшош. Агым -- бул шланг: суу үзгүлтүксүз агат, ар бир учурда шлангга батканынан ашык нерсени кармабайсыз, ал эми алыскы учу дароо толо баштайт.

Агым интерфейс болгондуктан (макулдашылган методдор жана окуялар топтому), файлды окуган ошол эле код тармак сокетинен же декомпрессордон окуй алат. Дал ушул айкалышуучулук алардын чыныгы күчү.

Бул сабакты YourAIZone платформасында улантыңыз

Толук сабакта — толук түшүндүрмө, чыгарылган мисалдар, көп кездешкен каталар, заматта текшерилүүчү тесттер жана ЖИ-репетитор. Конок катары дароо баштаңыз же прогрессти сактоо үчүн аккаунт түзүңүз.

Толук сабакта

  • Толук түшүндүрмө
  • Чыгарылган мисалдар
  • Көп кездешкен каталар жана алардан кантип качуу керек
  • Тест суроолору: 15
  • Тема боюнча суроолорго жооп берген ЖИ-репетитор
  • Окуучу, ата-эне жана мугалим үчүн прогрессти көзөмөлдөө