DataBuffer

genel arayüz DataBuffer
Bilinen Dolaylı Alt Sınıflar

Belirli bir türdeki verileri içeren bir kapsayıcı.

DataBuffer örnekleri, yerel veya yığın bellek bölümlerini aşağıdakileri destekleyen doğrusal bir görünüme eşler:

  • 64 bit indeksleme, 2 31 bayttan daha büyük arabellekle çalışmaya olanak tanır
  • Yalnızca ilkellerin değil, her türden nesnenin depolanması
  • Genel türler, standart JDK arabelleklerinde olduğu gibi açık arabellek türleri gerektirmeyen kutulu türlerle de doğrudan çalışmaya olanak tanır.
DataBuffer tarafından yönetilen belleğin, özellikle ilkel olmayan türlerle veya büyük arabelleklerle çalışırken doğrusal olduğunun garantisinin bulunmadığına dikkat etmek önemlidir.

Genel Yöntemler

özet <R> R
kabul et ( DataStorageVisitor <R> ziyaretçisi)
Bu arabelleğin yedekleme deposunu ziyaret eder.
özet DataBuffer <T>
copyTo ( DataBuffer <T> dst, uzun boyut)
Kaynak dizideki nesnelerin referanslarını bu ara belleğe yazın.
soyut boole
eşittir (Nesne nesnesi)
Veri arabellekleri arasındaki eşitliği kontrol eder.
soyut T
getObject (uzun dizin)
Verilen indeksteki değeri okur.
soyut boole
Salt Okunur ()
Bu arabelleğin erişilebilir bir dizi tarafından desteklenip desteklenmediğini belirtir.
özet DataBuffer <T>
dar (uzun boy)
İçeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan ve boyutu verilen değere ayarlanmış yeni bir arabellek oluşturur.
özet DataBuffer <T>
ofset (uzun indeks)
Verilen dizinden başlayarak, içeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan yeni bir arabellek oluşturur.
özet DataBuffer <T>
oku (T[] dst)
Bu arabellekteki nesnelerin referanslarını hedef diziye okuyun.
özet DataBuffer <T>
okuma (T[] dst, int ofset, int uzunluk)
Bu arabellekteki nesnelerin referanslarını hedef diziye okuyun.
özet DataBuffer <T>
setObject (T değeri, uzun dizin)
Verilen değeri, verilen dizindeki bu arabelleğe yazar.
soyut uzun
boyut ()
Öğeler cinsinden arabelleğin boyutu.
özet DataBuffer <T>
dilim (uzun dizin, uzun boyut)
Verilen dizinden ve verilen boyuttan başlayarak, içeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan yeni bir arabellek oluşturur.
özet DataBufferWindow <? DataBuffer'ı genişletir <T>>
pencere (uzun boy)
Bu arabelleğin kısmi görünümünü sağlayan bir DataBufferWindow oluşturur.
özet DataBuffer <T>
yaz (T[] kaynak)
Kaynak dizideki nesnelerin referanslarını bu ara belleğe yazın.
özet DataBuffer <T>
yaz (T[] kaynak, int ofset, int uzunluk)
İnt dizilerini kullanan toplu koyma yöntemi.

Genel Yöntemler

genel özet R kabul et ( DataStorageVisitor <R> ziyaretçisi)

Bu arabelleğin yedekleme deposunu ziyaret eder.

Tampon uygulaması, sağlanan ziyaretçiye gerçek veri depolamaya ilişkin bir referansı geri iletmekten sorumludur. Ziyaretçinin olası tüm veri depolama türlerini yönetmesi gerekmez ve yalnızca gerçekten ilgilendiği depolama yöntemlerini geçersiz kılabilir. Diğer herhangi bir depolama türü için bu çağrı, fallback() işlevine geri dönecektir, böylece ziyaretçi aşağıdaki durumlarda bazı genel rutinleri yürütebilir: ihtiyaç vardı.

Parametreler
ziyaretçi bu arabelleğin veri deposunu ziyaret eder
İade
  • ziyaretçinin döndürdüğü değerin aynısı

genel özet DataBuffer <T> copyTo ( DataBuffer <T> dst, uzun boyut)

Kaynak dizideki nesnelerin referanslarını bu ara belleğe yazın.

Kopyalanacak hedef arabellek boyutundan daha fazla değer varsa, yani size > dst.size() , o zaman hiçbir değer aktarılmaz ve bir BufferOverflowException oluşturulur. Öte yandan, kaynak arabellek boyutundan daha fazla kopyalanacak değer varsa, örneğin > src.size() , bu durumda bir BufferUnderfloatException oluşturulur.

Aksi takdirde, bu yöntem n = size değerlerini bu arabellekten hedef arabelleğe kopyalar.

Parametreler
dst değerlerin kopyalandığı hedef arabellek; bu arabellek olmamalı
boyut hedef ara belleğe kopyalanacak değer sayısı
İade
  • bu tampon
Atar
YasadışıTartışmaİstisna hedef arabellek bu arabellekse
ReadOnlyBufferException hedef arabellek salt okunursa
BufferOverflowException hedef arabelleğinde yeterli alan yoksa
TamponUnderflowException kaynak arabelleğinde yeterli değer yoksa

genel soyut boole eşittir (Object obj)

Veri arabellekleri arasındaki eşitliği kontrol eder.

Bir veri arabelleği, bu nesne aynı boyutta, türde başka bir DataBuffer ise ve öğeler eşit ve aynı sıradaysa, başka bir nesneye eşittir. Örneğin:

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
 

İki arabellek arasındaki eşitliği doğrulamak için gereken hesaplamanın bazı durumlarda pahalı olabileceğini ve bu nedenle performansın önemli olduğu kritik bir yolda bu yöntemin kullanılmaması önerildiğini unutmayın.

Parametreler
obj bu tamponun karşılaştırılacağı nesne
İade
  • true bu arabellek sağlanan nesneye eşitse

genel özet T getObject (uzun dizin)

Verilen indeksteki değeri okur. Önemli: Bu yöntemin kullanımı, ilkel olmayan türlerdeki arabelleklerle veya veri türünün arayan tarafından belirleyici olarak bilinmediği durumlarda sınırlı olmalıdır. Diğer durumlarda, performansı önemli ölçüde artıracak ilkel varyantının kullanımını tercih edin (örn. IntDataBuffer.getInt(idx)

Parametreler
indeks kayan noktanın okunacağı dizin
İade
  • verilen endeksteki değer
Atar
IndexOutOfBoundsException indeks negatifse veya arabellek boyutundan küçük değilse

genel soyut boolean isReadOnly ()

Bu arabelleğin erişilebilir bir dizi tarafından desteklenip desteklenmediğini belirtir.

İade
  • ancak ve ancak bu arabellek salt okunursa doğrudur

genel özet DataBuffer <T> dar (uzun boyutlu)

İçeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan ve boyutu verilen değere ayarlanmış yeni bir arabellek oluşturur.

Yeni boyut bu arabellek boyutundan büyük olmamalıdır. Bu arabelleğin içeriğinde yapılan değişiklikler yeni arabellekte görünür olacaktır ve bunun tersi de geçerlidir. Yeni arabellek, yalnızca ve yalnızca bu arabellek salt okunursa salt okunur olacaktır.

Bu çağrı slice(0, size) eşdeğerdir

Parametreler
boyut bu yeni arabelleğin boyutu
İade
  • yeni tampon
Atar
YasadışıTartışmaİstisna indeks ve/veya boyut değerleri doğrulama kontrollerini geçemezse

genel özet DataBuffer <T> ofseti (uzun dizin)

Verilen dizinden başlayarak, içeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan yeni bir arabellek oluşturur.

Dizin bu arabellek boyutundan büyük olmamalıdır. Bu arabelleğin içeriğinde yapılan değişiklikler yeni arabellekte görünür olacaktır ve bunun tersi de geçerlidir. Yeni arabellek, yalnızca ve yalnızca bu arabellek salt okunursa salt okunur olacaktır.

Bu çağrı slice(index, size() - index) ile eşdeğerdir.

Parametreler
indeks oluşturulan yeni arabelleğin ilk değerinin dizini, size() değerinden büyük olmamalıdır
İade
  • yeni tampon
Atar
YasadışıTartışmaİstisna dizin doğrulama kontrollerini geçemezse

genel özet DataBuffer <T> okuma (T[] dst)

Bu arabellekteki nesnelerin referanslarını hedef diziye okuyun.

Bu yöntem, değerleri bu arabellekten verilen hedef diziye aktarır. Arabellekte isteği karşılamak için gerekenden daha az değer varsa, yani dst.length > size() ise hiçbir değer aktarılmaz ve bir BufferUnderflowException oluşturulur.

Aksi takdirde, bu yöntem n = dst.length değerlerini bu arabellekten verilen diziye kopyalar.

Parametreler
dst değerlerin yazılacağı dizi
İade
  • bu tampon
Atar
TamponUnderflowException bu arabellekten kopyalanacak yeterli değer yoksa

genel özet DataBuffer <T> okuma (T[] dst, int ofset, int uzunluk)

Bu arabellekteki nesnelerin referanslarını hedef diziye okuyun.

Bu yöntem, değerleri bu arabellekten verilen hedef diziye aktarır. Arabellekte isteği karşılamak için gerekenden daha az değer varsa, yani length > size() ise hiçbir değer aktarılmaz ve bir BufferUnderflowException oluşturulur.

Aksi takdirde, bu yöntem n = length değerlerini bu arabellekten, verilen uzaklıktan başlayarak verilen diziye kopyalar.

Parametreler
dst değerlerin yazılacağı dizi
telafi etmek yazılacak ilk değerin dizisi içindeki uzaklık; negatif olmamalı ve dst.length büyük olmamalıdır
uzunluk verilen diziye yazılacak maksimum değer sayısı; negatif olmamalı ve dst.length - offset değerinden büyük olmamalıdır
İade
  • bu tampon
Atar
TamponUnderflowException bu arabellekte uzunluk değerlerinden daha az değer kaldıysa
IndexOutOfBoundsException ofset ve uzunluk parametrelerindeki ön koşullar karşılanmıyorsa

genel özet DataBuffer <T> setObject (T değeri, uzun dizin)

Verilen değeri, verilen dizindeki bu arabelleğe yazar. Önemli: Bu yöntemin kullanımı, ilkel olmayan türlerdeki arabelleklerle veya veri türünün arayan tarafından belirleyici olarak bilinmediği durumlarda sınırlı olmalıdır. Diğer durumlarda, performansı önemli ölçüde artıracak ilkel varyantının kullanımını tercih edin (örn. IntDataBuffer.setInt(idx)

Parametreler
değer yazılacak değer
indeks değerin yazılacağı dizin
İade
  • bu tampon
Atar
IndexOutOfBoundsException indeks negatifse veya arabellek boyutundan küçük değilse
ReadOnlyBufferException bu arabellek salt okunursa

genel özet uzun boy ()

Öğeler cinsinden arabelleğin boyutu.

Örneğin, bir bayt arabelleği durumunda, bu değer, bu arabelleğin tutabileceği bayt sayısına eşittir. Bir tamsayı arabelleği için, tam sayıların sayısına eşittir, dolayısıyla bu arabelleğin bayt cinsinden boyutu size() * Integer.BYTES olur.

İade
  • arabellek boyutu

genel özet DataBuffer <T> dilimi (uzun dizin, uzun boyut)

Verilen dizinden ve verilen boyuttan başlayarak, içeriği bu arabellek içeriğinin paylaşılan bir alt dizisi olan yeni bir arabellek oluşturur.

Dizin artı yeni boyut bu arabellek boyutundan büyük olmamalıdır. Bu arabelleğin içeriğinde yapılan değişiklikler yeni arabellekte görünür olacaktır ve bunun tersi de geçerlidir. Yeni arabellek, yalnızca ve yalnızca bu arabellek salt okunursa salt okunur olacaktır.

Parametreler
indeks oluşturulan yeni arabelleğin ilk değerinin dizini
boyut bu yeni arabelleğin boyutu size() büyük olmamalıdır
İade
  • yeni tampon
Atar
YasadışıTartışmaİstisna boyut değeri doğrulama kontrollerini geçemezse

genel özet DataBufferWindow <? DataBuffer <T>> penceresini genişletir (uzun boyutlu)

Bu arabelleğin kısmi görünümünü sağlayan bir DataBufferWindow oluşturur.

Oluşturulan pencerenin sabit bir boyutu vardır ve offset(long) yaptığı gibi, yeni bir arabellek örneği tahsis etmeden verilerin farklı görünümlerini sağlamak için bu arabellek boyunca "slide" . Bu işlem sık sık tekrarlandığında genel performansı artırır. Örneğin:

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;
     
 }
 }

Döndürülen nesne durum bilgilidir ve iş parçacığı açısından güvenli değildir.

Parametreler
boyut pencerenin boyutu
İade
  • bu arabelleğin 0 dizininde başlayan yeni bir pencere
Atar
DesteklenmeyenOperationException bu tür arabellek arabellek pencerelerini desteklemiyorsa

genel özet DataBuffer <T> yazma (T[] src)

Kaynak dizideki nesnelerin referanslarını bu ara belleğe yazın.

Bu yöntem, verilen kaynak dizideki değerleri bu ara belleğe aktarır. Kaynak dizide bu arabellektekinden daha fazla değer varsa, yani src.length > size() ise hiçbir değer aktarılmaz ve bir BufferOverflowException oluşturulur.

Aksi takdirde, bu yöntem verilen diziden n = src.length değerlerini kopyalar.

Parametreler
kaynak değerlerin okunacağı kaynak dizisi
İade
  • bu tampon
Atar
BufferOverflowException kaynak dizideki değerler için bu arabellekte yeterli alan yoksa
ReadOnlyBufferException bu arabellek salt okunursa

genel özet DataBuffer <T> yazma (T[] kaynak, int ofset, int uzunluk)

İnt dizilerini kullanan toplu koyma yöntemi.

Bu yöntem, verilen kaynak dizideki değerleri bu ara belleğe aktarır. Kaynak dizide bu arabellektekinden daha fazla değer varsa, yani length > size() ise hiçbir değer aktarılmaz ve bir BufferOverflowException oluşturulur.

Aksi takdirde, bu yöntem, verilen diziden n = length değerlerini, verilen konumdan başlayarak bu ara belleğe kopyalar.

Parametreler
kaynak değerlerin okunacağı kaynak dizisi
telafi etmek okunacak ilk değerin dizisi içindeki uzaklık; negatif olmamalı ve src.length büyük olmamalıdır
uzunluk verilen diziden okunacak değerlerin sayısı; negatif olmamalı ve src.length - offset değerinden büyük olmamalıdır
İade
  • bu tampon
Atar
BufferOverflowException kaynak dizideki değerler için bu arabellekte yeterli alan yoksa
IndexOutOfBoundsException ofset ve uzunluk parametrelerindeki ön koşullar karşılanmıyorsa
ReadOnlyBufferException bu arabellek salt okunursa