💻 Node.js: Buffer (বাফার)
Buffer হলো Node.js-এর একটি বিল্ট-ইন ক্লাস যা বাইনারি ডেটা পরিচালনার জন্য ব্যবহৃত হয়। JavaScript সাধারণত স্ট্রিং এবং অবজেক্ট নিয়ে কাজ করে, কিন্তু ফাইল, নেটওয়ার্ক ডেটা বা অন্যান্য বাইনারি ডেটা প্রক্রিয়াকরণের জন্য Buffer ব্যবহার করা হয়। Buffer হলো একটি ফিক্সড-সাইজের মেমরি ব্লক যা বাইনারি ডেটা স্টোর করে।
Buffer-এর মূল বৈশিষ্ট্য:
বাইনারি ডেটা সরাসরি ম্যানিপুলেট করার জন্য ব্যবহৃত হয়।
এটি ArrayBuffer-এর মতো কিন্তু আরও ফ্লেক্সিবল এবং Node.js-এর জন্য অপটিমাইজড।
কোনো এনকোডিং ছাড়াই কাঁচা (raw) ডেটা স্টোর করতে পারে।
const buf = Buffer.from('Hello', 'utf8');
console.log(buf);
// আউটপুট:
console.log(buf.toString());
// আউটপুট: Hello
💻 Node.js: Stream (স্ট্রীম)
Stream হলো Node.js-এর একটি শক্তিশালী ফিচার যা ডেটাকে ছোট ছোট অংশে (chunks) প্রক্রিয়া করতে দেয়। এটি বড় ফাইল বা নেটওয়ার্ক ডেটা পরিচালনার জন্য উপযোগী, কারণ পুরো ডেটা একসাথে মেমরিতে লোড করার প্রয়োজন হয় না।
Stream-এর প্রকারভেদ:
- Readable Stream: ডেটা পড়ার জন্য (যেমন: ফাইল থেকে পড়া, HTTP রিকোয়েস্ট থেকে ডেটা পড়া)।
- Writable Stream: ডেটা লেখার জন্য (যেমন: ফাইলে লেখা, HTTP রেসপন্সে লেখা)।
- Duplex Stream: পড়া এবং লেখা উভয়ই সম্ভব (যেমন: TCP সকেট)।
- Transform Stream: ডেটা পড়া এবং লেখার সময় মডিফাই করা যায় (যেমন: কম্প্রেশন)।
Stream-এর সুবিধা:
- মেমরি দক্ষতা: বড় ফাইল বা ডেটা প্রক্রিয়াকরণে কম মেমরি ব্যবহার করে।
- দ্রুততা: ডেটা চাঙ্কে প্রক্রিয়া হওয়ায় অপেক্ষার সময় কমে।
- পাইপলাইন: এক স্ট্রিম থেকে আরেক স্ট্রিমে ডেটা পাঠানো সহজ।
