الفئات الفرعية غير المباشرة المعروفة |
حاوية بيانات من نوع معين.
تقوم مثيلات DataBuffer
بتعيين مقاطع الذاكرة الأصلية أو الكومة إلى عرض خطي يدعم:
- فهرسة 64 بت، مما يسمح بالعمل مع مخزن مؤقت أكبر من 231 بايت
- تخزين الكائنات بجميع أنواعها وليس البدائيات فقط
- تسمح الأنواع العامة بالعمل مباشرة مع الأنواع المعبأة أيضًا، والتي لا تتطلب أنواعًا صريحة من المخازن المؤقتة كما هو الحال مع مخازن JDK المؤقتة القياسية.
DataBuffer
خطية، خاصة عند التعامل مع الأنواع غير البدائية أو المخازن المؤقتة الكبيرة. الأساليب العامة
مجردة <R> R | |
مجردة DataBuffer <T> | CopyTo ( DataBuffer <T> dst، حجم طويل) اكتب مراجع الكائنات الموجودة في المصفوفة المصدر في هذا المخزن المؤقت. |
منطقية مجردة | يساوي (كائن كائن) التحقق من المساواة بين مخازن البيانات المؤقتة. |
مجردة T | getObject (فهرس طويل) يقرأ القيمة في الفهرس المحدد. |
منطقية مجردة | للقراءة فقط () يوضح ما إذا كان هذا المخزن المؤقت مدعومًا بمصفوفة يمكن الوصول إليها أم لا. |
مجردة DataBuffer <T> | ضيق (حجم طويل) إنشاء مخزن مؤقت جديد يكون محتواه عبارة عن تسلسل مشترك لمحتوى هذا المخزن المؤقت، ويتم تعيين حجمه على القيمة المحددة. |
مجردة DataBuffer <T> | إزاحة (مؤشر طويل) إنشاء مخزن مؤقت جديد يكون محتواه عبارة عن تسلسل مشترك لمحتوى هذا المخزن المؤقت، بدءًا من الفهرس المحدد. |
مجردة DataBuffer <T> | قراءة (T[] التوقيت الصيفي) اقرأ مراجع الكائنات الموجودة في هذا المخزن المؤقت في المصفوفة الوجهة. |
مجردة DataBuffer <T> | قراءة (T[] dst، إزاحة int، طول int) اقرأ مراجع الكائنات الموجودة في هذا المخزن المؤقت في المصفوفة الوجهة. |
مجردة DataBuffer <T> | setObject (قيمة T، مؤشر طويل) يكتب القيمة المحددة في هذا المخزن المؤقت في الفهرس المحدد. |
مجردة طويلة | مقاس () حجم المخزن المؤقت، في العناصر. |
مجردة DataBuffer <T> | شريحة (مؤشر طويل، حجم طويل) إنشاء مخزن مؤقت جديد يكون محتواه عبارة عن تسلسل مشترك لمحتوى هذا المخزن المؤقت، بدءًا من الفهرس المحدد وبالحجم المحدد. |
مجردة DataBufferWindow <؟ يمتد DataBuffer <T>> | نافذة (حجم طويل) يقوم بإنشاء DataBufferWindow الذي يوفر عرضًا جزئيًا لهذا المخزن المؤقت. |
مجردة DataBuffer <T> | اكتب (T[] src) اكتب مراجع الكائنات الموجودة في المصفوفة المصدر في هذا المخزن المؤقت. |
مجردة DataBuffer <T> | الكتابة (T[] src، إزاحة int، طول int) طريقة الوضع المجمعة، باستخدام صفائف int. |
الأساليب العامة
قبول الملخص العام R (زائر DataStorageVisitor <R>)
يزور تخزين الدعم لهذا المخزن المؤقت.
يعد تنفيذ المخزن المؤقت مسؤولاً عن إعادة مرجع إلى تخزين البيانات الفعلي إلى الزائر المقدم. لا يتعين على الزائر التعامل مع جميع أنواع تخزين البيانات الممكنة ويمكنه فقط تجاوز طرق التخزين التي يهتم بها بالفعل. بالنسبة لأي نوع آخر من التخزين، سيرجع هذا الاستدعاء إلى fallback()
حتى يتمكن الزائر من تنفيذ بعض الإجراءات العامة إذا ضروري.
حدود
زائر | يزور تخزين البيانات من هذا المخزن المؤقت |
---|
المرتجعات
- نفس القيمة التي يعودها الزائر
الملخص العام DataBuffer <T> CopyTo ( DataBuffer <T> dst، حجم طويل)
اكتب مراجع الكائنات الموجودة في المصفوفة المصدر في هذا المخزن المؤقت.
إذا كان هناك قيم أكثر لنسخها من حجم المخزن المؤقت الوجهة، أي size > dst.size()
، فلن يتم نقل أي قيم وسيتم طرح BufferOverflowException. من ناحية أخرى، إذا كان هناك المزيد من القيم لنسخ حجم المخزن المؤقت المصدر، على سبيل المثال > src.size()
، فسيتم طرح BufferUnderfloatException.
بخلاف ذلك، تقوم هذه الطريقة بنسخ قيم n = size
من هذا المخزن المؤقت إلى المخزن المؤقت الوجهة.
حدود
التوقيت الصيفي | المخزن المؤقت للوجهة الذي يتم نسخ القيم إليه؛ لا يجب أن يكون هذا المخزن المؤقت |
---|---|
مقاس | عدد القيم المراد نسخها إلى المخزن المؤقت للوجهة |
المرتجعات
- هذا المخزن المؤقت
رميات
IllegalArgumentException | إذا كان المخزن المؤقت للوجهة هو هذا المخزن المؤقت |
---|---|
ReadOnlyBufferException | إذا كان المخزن المؤقت الوجهة للقراءة فقط |
BufferOverflowException | إذا لم تكن هناك مساحة كافية في المخزن المؤقت للوجهة |
BufferUnderflowException | إذا لم تكن هناك قيم كافية في المخزن المؤقت المصدر |
القيمة المنطقية المجردة العامة تساوي (Object obj)
التحقق من المساواة بين مخازن البيانات المؤقتة.
يكون المخزن المؤقت للبيانات مساويًا لكائن آخر إذا كان هذا الكائن عبارة عن DataBuffer
آخر بنفس الحجم والنوع والعناصر متساوية وبنفس الترتيب. على سبيل المثال:
IntDataBuffer buffer = DataBuffers.of(1, 2, 3);
assertEquals(buffer, DataBuffers.of(1, 2, 3)); // true
assertEquals(buffer, DataBuffers.ofObjects(1, 2, 3)); // true, as Integers are equal to ints
assertNotEquals(buffer, DataBuffers.of(1, 2, 3, 0)); // false, different sizes
assertNotEquals(buffer, DataBuffers.of(1, 3, 2)); // false, different order
assertNotEquals(buffer, DataBuffers.of(1L, 2L, 3L)); // false, different types
لاحظ أن الحساب المطلوب للتحقق من المساواة بين مخزنين مؤقتين يمكن أن يكون مكلفًا في بعض الحالات، وبالتالي، يوصى بعدم استخدام هذه الطريقة في مسار حرج حيث يكون الأداء مهمًا.
حدود
obj | كائن لمقارنة هذا المخزن المؤقت مع |
---|
المرتجعات
- صحيح إذا كان هذا المخزن المؤقت يساوي الكائن المقدم
الملخص العام T getObject (فهرس طويل)
يقرأ القيمة في الفهرس المحدد. هام: يجب أن يقتصر استخدام هذه الطريقة على المخازن المؤقتة للأنواع غير البدائية أو عندما لا يكون نوع البيانات معروفًا بشكل قاطع بواسطة المتصل. في أي حالة أخرى، يفضل استخدام متغيره البدائي الذي سيؤدي إلى تحسين الأداء بشكل ملحوظ (على سبيل المثال IntDataBuffer.getInt(idx)
حدود
فِهرِس | الفهرس الذي سيتم قراءة التعويم منه |
---|
المرتجعات
- القيمة في الفهرس المحدد
رميات
IndexOutOfBoundsException | إذا كان الفهرس سالبًا أو ليس أصغر من حجم المخزن المؤقت |
---|
الملخص المنطقي العام هو للقراءة فقط ()
يوضح ما إذا كان هذا المخزن المؤقت مدعومًا بمصفوفة يمكن الوصول إليها أم لا.
المرتجعات
- صحيح إذا، وفقط إذا، كان هذا المخزن المؤقت للقراءة فقط
ملخص عام DataBuffer <T> ضيق (حجم طويل)
إنشاء مخزن مؤقت جديد يكون محتواه عبارة عن تسلسل مشترك لمحتوى هذا المخزن المؤقت، ويتم تعيين حجمه على القيمة المحددة.
يجب ألا يكون الحجم الجديد أكبر من حجم المخزن المؤقت هذا. ستكون التغييرات التي يتم إجراؤها على محتوى هذا المخزن المؤقت مرئية في المخزن المؤقت الجديد والعكس صحيح. سيكون المخزن المؤقت الجديد للقراءة فقط إذا كان هذا المخزن المؤقت للقراءة فقط.
هذه المكالمة تعادل slice(0, size)
حدود
مقاس | حجم هذا المخزن المؤقت الجديد |
---|
المرتجعات
- المخزن المؤقت الجديد
رميات
IllegalArgumentException | إذا لم تنجح قيم الفهرس و/أو الحجم في اجتياز اختبارات التحقق من الصحة |
---|
إزاحة DataBuffer <T> العامة (فهرس طويل)
إنشاء مخزن مؤقت جديد يكون محتواه عبارة عن تسلسل مشترك لمحتوى هذا المخزن المؤقت، بدءًا من الفهرس المحدد.
يجب ألا يكون الفهرس أكبر من حجم المخزن المؤقت هذا. ستكون التغييرات التي يتم إجراؤها على محتوى هذا المخزن المؤقت مرئية في المخزن المؤقت الجديد والعكس صحيح. سيكون المخزن المؤقت الجديد للقراءة فقط إذا كان هذا المخزن المؤقت للقراءة فقط.
هذه المكالمة تعادل slice(index, size() - index)
حدود
فِهرِس | يجب ألا يكون فهرس القيمة الأولى للمخزن المؤقت الجديد الذي تم إنشاؤه أكبر من size() |
---|
المرتجعات
- المخزن المؤقت الجديد
رميات
IllegalArgumentException | إذا لم يجتاز الفهرس عمليات التحقق من الصحة |
---|
قراءة DataBuffer العامة <T> (T[] dst)
اقرأ مراجع الكائنات الموجودة في هذا المخزن المؤقت في المصفوفة الوجهة.
تقوم هذه الطريقة بنقل القيم من هذا المخزن المؤقت إلى مصفوفة الوجهة المحددة. إذا كان هناك قيم أقل في المخزن المؤقت مما هو مطلوب لتلبية الطلب، أي إذا كان dst.length > size()
، فلن يتم نقل أي قيم وسيتم طرح BufferUnderflowException.
بخلاف ذلك، تقوم هذه الطريقة بنسخ قيم n = dst.length
من هذا المخزن المؤقت إلى المصفوفة المحددة.
حدود
التوقيت الصيفي | المصفوفة التي سيتم كتابة القيم فيها |
---|
المرتجعات
- هذا المخزن المؤقت
رميات
BufferUnderflowException | إذا لم تكن هناك قيم كافية للنسخ من هذا المخزن المؤقت |
---|
قراءة DataBuffer العامة <T> (T[] dst، int offset، int length)
اقرأ مراجع الكائنات الموجودة في هذا المخزن المؤقت في المصفوفة الوجهة.
تقوم هذه الطريقة بنقل القيم من هذا المخزن المؤقت إلى مصفوفة الوجهة المحددة. إذا كان هناك قيم أقل في المخزن المؤقت مما هو مطلوب لتلبية الطلب، أي إذا كان length > size()
، فلن يتم نقل أي قيم ويتم طرح BufferUnderflowException.
بخلاف ذلك، تقوم هذه الطريقة بنسخ قيم n = length
من هذا المخزن المؤقت إلى المصفوفة المحددة بدءًا من الإزاحة المحددة.
حدود
التوقيت الصيفي | المصفوفة التي سيتم كتابة القيم فيها |
---|---|
إزاحة | الإزاحة ضمن مصفوفة القيمة الأولى المراد كتابتها؛ يجب أن يكون غير سالب وألا يزيد حجمه عن dst.length |
طول | الحد الأقصى لعدد القيم المراد كتابتها في المصفوفة المحددة؛ يجب أن تكون غير سالبة ولا يزيد حجمها عن dst.length - offset |
المرتجعات
- هذا المخزن المؤقت
رميات
BufferUnderflowException | إذا كان هناك أقل من قيم الطول المتبقية في هذا المخزن المؤقت |
---|---|
IndexOutOfBoundsException | إذا لم يتم الالتزام بالشروط المسبقة الخاصة بمعلمات الإزاحة والطول |
الملخص العام DataBuffer <T> setObject (قيمة T، مؤشر طويل)
يكتب القيمة المحددة في هذا المخزن المؤقت في الفهرس المحدد. هام: يجب أن يقتصر استخدام هذه الطريقة على المخازن المؤقتة للأنواع غير البدائية أو عندما لا يكون نوع البيانات معروفًا بشكل قاطع بواسطة المتصل. في أي حالة أخرى، يفضل استخدام متغيره البدائي الذي سيؤدي إلى تحسين الأداء بشكل ملحوظ (على سبيل المثال IntDataBuffer.setInt(idx)
حدود
قيمة | القيمة المراد كتابتها |
---|---|
فِهرِس | الفهرس الذي سيتم كتابة القيمة عليه |
المرتجعات
- هذا المخزن المؤقت
رميات
IndexOutOfBoundsException | إذا كان الفهرس سالبًا أو ليس أصغر من حجم المخزن المؤقت |
---|---|
ReadOnlyBufferException | إذا كان هذا المخزن المؤقت للقراءة فقط |
الملخص العام طويل الحجم ()
حجم المخزن المؤقت، في العناصر.
على سبيل المثال، في حالة وجود مخزن مؤقت للبايت، فإن هذه القيمة تساوي عدد البايتات التي يمكن أن يحتفظ بها هذا المخزن المؤقت. بالنسبة للمخزن المؤقت للأعداد الصحيحة، فهو يساوي عدد الأعداد الصحيحة، وبالتالي فإن الحجم بالبايت لهذا المخزن المؤقت هو size() * Integer.BYTES
.
المرتجعات
- حجم المخزن المؤقت
شريحة DataBuffer <T> مجردة عامة (فهرس طويل، حجم طويل)
إنشاء مخزن مؤقت جديد يكون محتواه عبارة عن تسلسل مشترك لمحتوى هذا المخزن المؤقت، بدءًا من الفهرس المحدد وبالحجم المحدد.
يجب ألا يكون الفهرس بالإضافة إلى الحجم الجديد أكبر من حجم المخزن المؤقت هذا. ستكون التغييرات التي يتم إجراؤها على محتوى هذا المخزن المؤقت مرئية في المخزن المؤقت الجديد والعكس صحيح. سيكون المخزن المؤقت الجديد للقراءة فقط إذا كان هذا المخزن المؤقت للقراءة فقط.
حدود
فِهرِس | فهرس القيمة الأولى للمخزن المؤقت الجديد الذي تم إنشاؤه |
---|---|
مقاس | يجب ألا يكون حجم هذا المخزن المؤقت الجديد أكبر من size() |
المرتجعات
- المخزن المؤقت الجديد
رميات
IllegalArgumentException | إذا لم تنجح قيمة الحجم في اجتياز عمليات التحقق من الصحة |
---|
ملخص عام DataBufferWindow <؟ يمتد نافذة DataBuffer <T>> (حجم طويل)
يقوم بإنشاء DataBufferWindow
الذي يوفر عرضًا جزئيًا لهذا المخزن المؤقت.
النافذة التي تم إنشاؤها لها حجم ثابت ويمكنها "slide"
على طول هذا المخزن المؤقت لتوفير طرق عرض مختلفة للبيانات دون تخصيص مثيل مخزن مؤقت جديد، كما يفعل offset(long)
. يؤدي هذا إلى تحسين الأداء العام عند تكرار هذه العملية بشكل متكرر. على سبيل المثال:
IntDataBuffer bufferA = DataBuffers.ofInts(1024);
// ... init buffer data
IntDataBuffer bufferB = DataBuffers.ofInts(1, 2, 3, 4);
// Return the index of the first occurrence of bufferB in bufferA using a sliding window
DataBufferWindow<IntDataBuffer> windowA = bufferA.window(4);
for (int i = 0; i < bufferA.size() - bufferB.size(); ++i) {
if (windowA.slideTo(i).buffer().equals(bufferB)) {
return i;
}
}
الكائن الذي تم إرجاعه ذو حالة وليس آمنًا لمؤشر الترابط.
حدود
مقاس | حجم النافذة |
---|
المرتجعات
- نافذة جديدة تبدأ عند الفهرس 0 لهذا المخزن المؤقت
رميات
UnsupportedOperationException | إذا كان هذا النوع من المخزن المؤقت لا يدعم نوافذ المخزن المؤقت |
---|
كتابة DataBuffer <T> العامة (T[] src)
اكتب مراجع الكائنات الموجودة في المصفوفة المصدر في هذا المخزن المؤقت.
تقوم هذه الطريقة بنقل القيم الموجودة في مصفوفة المصدر المحددة إلى هذا المخزن المؤقت. إذا كانت هناك قيم في المصفوفة المصدر أكثر من تلك الموجودة في هذا المخزن المؤقت، أي إذا كان src.length > size()
، فلن يتم نقل أي قيم وسيتم طرح BufferOverflowException.
بخلاف ذلك، تقوم هذه الطريقة بنسخ قيم n = src.length
من المصفوفة المحددة.
حدود
src | المصفوفة المصدرية التي سيتم قراءة القيم منها |
---|
المرتجعات
- هذا المخزن المؤقت
رميات
BufferOverflowException | إذا لم يكن هناك مساحة كافية في هذا المخزن المؤقت للقيم الموجودة في الصفيف المصدر |
---|---|
ReadOnlyBufferException | إذا كان هذا المخزن المؤقت للقراءة فقط |
كتابة DataBuffer الملخص العام <T> (T[] src، int offset، int length)
طريقة الوضع المجمعة، باستخدام صفائف int.
تقوم هذه الطريقة بنقل القيم الموجودة في مصفوفة المصدر المحددة إلى هذا المخزن المؤقت. إذا كانت هناك قيم في المصفوفة المصدر أكثر من تلك الموجودة في هذا المخزن المؤقت، أي إذا كان length > size()
، فلن يتم نقل أي قيم وسيتم طرح BufferOverflowException.
بخلاف ذلك، تقوم هذه الطريقة بنسخ قيم n = length
من المصفوفة المحددة إلى هذا المخزن المؤقت، بدءًا من الإزاحة المحددة.
حدود
src | المصفوفة المصدرية التي سيتم قراءة القيم منها |
---|---|
إزاحة | الإزاحة ضمن مصفوفة القيمة الأولى المراد قراءتها؛ يجب أن تكون غير سالبة ولا يزيد حجمها عن src.length |
طول | عدد القيم التي سيتم قراءتها من المصفوفة المحددة؛ يجب أن تكون غير سالبة ولا يزيد حجمها عن src.length - offset |
المرتجعات
- هذا المخزن المؤقت
رميات
BufferOverflowException | إذا لم يكن هناك مساحة كافية في هذا المخزن المؤقت للقيم الموجودة في الصفيف المصدر |
---|---|
IndexOutOfBoundsException | إذا لم يتم الالتزام بالشروط المسبقة الخاصة بمعلمات الإزاحة والطول |
ReadOnlyBufferException | إذا كان هذا المخزن المؤقت للقراءة فقط |