Friday, 22 December 2017

Nodejs - writefile ثنائي - خيارات


عقدة شبيبة والبيانات الثنائية التحديث: لا شيء من هذا يجب أن يكون ضروريا، كما فيلريدستريم في أحدث عقدة يستخدم مخازن بشكل افتراضي. ومع ذلك، يبدو أن I39m تفعل شيئا خاطئا أو المستندات قديمة، كما أنها لا تعمل على هذا النحو على عقدة الرأس. منطقتين حيث Ncl. js39s إكسليند تفتقر للأسف هو التعامل مع البيانات الثنائية وسلاسل كبيرة. في هذا المنصب I39d ترغب في الذهاب على بعض التقنيات للتعامل مع البيانات الثنائية في العقدة، ومعظمها يدور حول التعامل مع جامع القمامة V839s، وحقيقة أن السلاسل في عقدة ليست مصنوعة للبيانات الثنائية، أنها 39re مصنوعة ل أوتف-8 و أوتف-16. هناك ثلاثة تفاصيل رئيسية غوري التي تجعل العمل مع البيانات في Node. js الألم: سلاسل كبيرة (غ 64K) ليست صديقك. يتم تخزين البيانات الثنائية (و أسي) في سلسلة عقدة كأول بايتة من سلسلة أوتف-16. البيانات الثنائية يمكن تخزين أكثر كفاءة في Node. js كما المخزن المؤقت يتيح نظرة على البند الأول، سلاسل كبيرة aren39t صديقك. Node. js الخالق ري نفسه تناول هذه المسألة نفسه في مقارنة الأداء الذي أدلى به مع نجينكس. إذا عرضت قوات الدفاع الشعبي، (أو ننظر إلى الرسم البياني المستخرج أدناه) you39ll نرى أن عقدة لا وظيفة لائق مواكبة نجينكس حتى يضرب علامة بايت 64، ثم الأداء فقط ينهار. السبب، في ry39s الكلمات: V8 لديه جامع القمامة الأجيال الذي يتحرك الكائنات في جميع أنحاء عشوائيا. عقدة لا يمكن الحصول على مؤشر لبيانات سلسلة الخام للكتابة إلى مأخذ. يمكنك أن ترى هذا في الرسم البياني ذات الصلة في الشرائح ryan39s. التي I39ve استخراج مريح ونشر أدناه (آمل أن don39t العقل ريان). ما كان واضحا 39t على الفور لي بعد قراءة هذا ما كان هذا يعني في الحالات التي كان واحد يستخدم عقدة لتمرير حول بت كبيرة من البيانات الثنائية التي تأتي في سلاسل. إذا كنت تستخدم عقدة ليقول، وقراءة من نظام الملفات تحصل مرة أخرى سلسلة ثنائية، وليس المخزن المؤقت. كان سؤالي: كوتيف لدي بيانات ثنائية عالقة بالفعل في سلسلة أوتف-16 رديء، ولكن بعد ذلك التمسك بها في المخزن المؤقت قبل إرساله بها، سوف تساعد مع speed. quot الجواب زيادة في الإنتاجية من 100 ميبسيك إلى 160 ميبسيك. تحقق من الرسم البياني أدناه من بلدي اختبارات الأداء، حيث لعبت مع أحجام ريدشونك مختلفة (كم البيانات فيليريدستريم يقرأ في وقت واحد والأحجام المخزن المؤقت (كم البيانات التي تخزينها في المخزن المؤقت قبل التنظيف إلى مأخذ): كما ترون (بوف) يتفوق على السراويل التي يكتبها باستخدام السلاسل (ستر)، ويمكن رؤية الفرق بين الشفرتين أدناه، لم أكن أعتقد في البداية أن القيام بهذا التحويل من شأنه أن يساعد على الإطلاق، وأنا أحسب مرة واحدة كان بالفعل في (مثل البيانات من فليريدستريم هو)، يمكن للمرء أيضا مسح ذلك إلى المقبس والاستمرار في هذا يجعلني أتساءل عما إذا كانت التطبيقات الأخرى أيضا أن يكون أفضل قبالة تراكم انتاجها (ربما حتى أوتف-8 الناتج) في العازلة حيثما كان ذلك ممكنا، ثم أخيرا بيغ المخزن المؤقت، بدلا من إجراء المكالمات المتكررة إلى res. write يحتاج شخص لاختبار هذا بالإضافة إلى ذلك، وهذا يجعلني أتساءل عما إذا كان يمكن تحسين تحسينات إضافية لحالة الاختبار الخاصة بي إذا تم تعديل الكائن فليريدستريم عقدة إلى إرجاع مخزن مؤقت بدلا من سلسلة. أديتيونالي، قد تكون تسأل عن استخدام بوفسيزي أكبر من حجم ريدشونك، الذي فعلت فعلا اختبار، ولكن وجدت أنه لم يكن هناك الكثير من الفرق عند استخدام المخزن المؤقت أكبر، وبالتالي فإن الاستراتيجية المثلى حقا لا يبدو أن يقرأ 64KiB قطعة إلى 64KiB العازلة. يمكنك الاطلاع على هذه البيانات أسفل المشاركة. في البيانات أنا الرسوم البيانية أعلاه، وأنا قدمت عددا من أشواط مع أب - c 100 - n 1000 ضد 1 ملف ميب تغيير تشونزيزي و ريادزيزي. يمكن رؤية شفرة العينة ذات الصلة أدناه. سيكون رمز العينة الكامل هو مفترق العقدة-ورقةbboy. Storing البيانات مع Node. js تيارات للكتابة هذا البرنامج التعليمي سوف يشرح كيفية تخزين البيانات مع تيارات للكتابة Node. js وكيفية إنشاء تيار قابل للكتابة للكتابة الخاصة بك. فيرسيون إنفورماتيون المؤلف: جيف بارسزوسكي نشر: أوغست 18th، 2013 العلامات: نوديجس، ستريمز المستوى: متوسط ​​المتطلبات: بوفرز، إيفنتس، إنستال نمم مودولز Node. js v0.10 (آخر مستقر هو v0.10.16 حتى كتابة هذه السطور) كانت عموما جزءا من Node. js من أيامها الأولى Streams2 يمكن استخدام فئة مجردة للكتابة مع الإصدارات القديمة (قبل v0.10) من العقدة باستخدام نبم وحدة مقروءة للقراءة (اختبار مع v1.0.15) تخزين البيانات مع للكتابة تيارات ملف نصي الكتابة أبسط مثال هو فقط في كتابة النص utf8، لأن الترميز الافتراضي إذا كنت أكتب سلاسل هو utf8. إذا كنت ترغب في كتابة سلاسل مع ترميز مختلفة ثم يمكنك ببساطة تغيير خط كريتوريستريم أو إضافة ترميز لكل الكتابة. كتابة ملف ثنائي كتابة ملف ثنائي هو مجرد مسألة استخدام المخازن المؤقتة بدلا من سلاسل للكتابة. في المثال أعلاه، استخدم crypto. createRandomBytes () لإنشاء مخزن مؤقت للبيانات، ولكن يمكنك استخدام البيانات الثنائية التي تقوم بإنشائها أو قراءتها من مصدر آخر بنفس السهولة. معرفة متى تم كتابة الملف المدخلات والمخرجات هي عمليات غير متزامنة في Node. js لذلك ماذا لو أردنا أن نعرف متى تم كتابة ملف بالكامل الجواب هو إعداد المستمعين إلى الأحداث التي ينبعث منها تيار. الحدث النهاية (المضافة في Node. js v0.10) يشير إلى أن جميع البيانات تم مسحها إلى النظام الأساسي. في Node. js قبل v0.10، هل يمكن إضافة سب إلى. end () للحصول على مؤشر على متى تم مسحها، ولكن الانتهاء يأخذ في الاعتبار أي تحولات أخرى المصب وما شابه ذلك. إنشاء تراكب قابلة للكتابة Node. js عندما تحتاج إلى إنشاء دفق قابل للكتابة للكتابة الخاص بك لتخزين البيانات في قاعدة بيانات أو منشأة تخزين أخرى، فمن السهل إذا كنت تستخدم فئة Streams2 للكتابة المجردة الجديدة المتوفرة أصلا في Node. js 0.10 أو عبر نبم وحدة بوليفيل للقراءة-تيار. لإنشاء تيار قابل للكتابة الذي ينفذ كل من السلوك Node. js تيار العادية لديك فقط إلى الفئة الفرعية للكتابة وتنفيذ الكتابة (قطعة، ترميز، سب). إنشاء تيار ذاكرة قابل للكتابة هنا مثال على الكتابة إلى مخزن بيانات بسيط في الذاكرة. نحن نستخدم اسم معين في إنشاء تيار كمفتاح، ونحن إلحاق البيانات إلى قيمة حتى الانتهاء. تيارات للكتابة هي أنيقة وسهلة الاستخدام كتابة النص أو البيانات الثنائية لتيارات Node. js هو جهد، وحتى خلق تيارات قابلة للكتابة مخصصة وظيفية بالكامل هو المشي في الحديقة مع وظائف streams2 جديدة أدخلت في Node. js v0.10 (أو وذلك باستخدام وحدة تيار قابل للقراءة بوليفيل). لقراءة إضافية شير ذيس بادج أنت تجعل الأمور أصعب بكثير مما يجب أن تكون. يأخذ الكائن المخزن المؤقت لعقدة base64 كمدخل ويقوم بكل ذلك فك التشفير بالنسبة لك. يمكنك فقط تجريد البيانات: صورة. جزء من سلسلة base64 وتمرير تلك البيانات إلى وريتيفيلاسيستانت. يحتاج وريتيفيلاسيستانت فقط لاتخاذ سلسلة base64 وتمرير ذلك كوسيطة إلى منشئ المخزن مؤقت. أيضا، وجود على مكالمة أوبينسينك كسر الأشياء أيضا. المخزن المؤقت يأخذ سلسلة وترميز، ثم يستخدم قيمة الترميز لمعالجة السلسلة في سلسلة من وحدات البايت، لذلك عندما تخبره أن السلسلة هي base64، فإنه سيتم فك base64 لك وإنشاء مجموعة فك الشفرة المناسبة من وحدات البايت الكتابة إلى الملف. أجابيد سيب 8 11 في 11:30

No comments:

Post a Comment